@hortiview/shared-components 0.0.7951 → 0.0.8286

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.
Files changed (38) hide show
  1. package/README.md +11 -0
  2. package/dist/assets/chipCard.css +1 -0
  3. package/dist/assets/listArea.css +1 -1
  4. package/dist/assets/overflowTooltip.css +1 -1
  5. package/dist/chipCard.module-BjpKuf1b.js +7 -0
  6. package/dist/components/AlertBanner/AlertBanner.js +1 -1
  7. package/dist/components/AlertBanner/AlertBanner.test.js +1 -1
  8. package/dist/components/BaseView/BaseView.js +1 -1
  9. package/dist/components/BaseView/BaseView.test.js +1 -1
  10. package/dist/components/BasicHeading/BasicHeading.js +1 -1
  11. package/dist/components/ChipCard/ChipCard.d.ts +24 -0
  12. package/dist/components/ChipCard/ChipCard.js +28 -0
  13. package/dist/components/ChipCard/ChipCard.test.d.ts +1 -0
  14. package/dist/components/ChipCard/ChipCard.test.js +25 -0
  15. package/dist/components/DeleteModal/DeleteModal.js +1 -1
  16. package/dist/components/Filter/Filter.js +6 -5
  17. package/dist/components/Filter/Filter.test.js +1 -1
  18. package/dist/components/GenericTable/GenericTable.js +12 -11
  19. package/dist/components/GenericTable/GenericTable.test.js +1 -1
  20. package/dist/components/HashTabView/HashTabView.js +1 -1
  21. package/dist/components/InfoGroup/InfoGroup.js +1 -1
  22. package/dist/components/ListArea/ListArea.js +1 -1
  23. package/dist/components/ListArea/ListAreaService.js +1 -1
  24. package/dist/components/OverflowTooltip/OverflowTooltip.d.ts +1 -1
  25. package/dist/components/OverflowTooltip/OverflowTooltip.js +18 -17
  26. package/dist/components/OverflowTooltip/OverflowTooltipService.d.ts +1 -0
  27. package/dist/components/OverflowTooltip/OverflowTooltipService.js +11 -0
  28. package/dist/hooks/useBreakpoints.d.ts +20 -1
  29. package/dist/hooks/useBreakpoints.js +3 -2
  30. package/dist/hooks/useBreakpoints.test.js +1 -1
  31. package/dist/listArea.module-BhO_OJ1S.js +20 -0
  32. package/dist/main.d.ts +1 -0
  33. package/dist/main.js +53 -51
  34. package/dist/{overflowTooltip.module-BN3bp9Cj.js → overflowTooltip.module-YyRN2MGc.js} +1 -1
  35. package/dist/useBreakpoints-MzTZ0tCT.js +45 -0
  36. package/package.json +1 -1
  37. package/dist/listArea.module-CGpHPOji.js +0 -20
  38. package/dist/useBreakpoints-BNeVhjjZ.js +0 -33
package/README.md CHANGED
@@ -27,6 +27,7 @@ Additionally the library provides form components using [react-hook-form](https:
27
27
  1. [BaseView](#baseview)
28
28
  1. [BasicHeading](#basicheading)
29
29
  1. [BlockView](#blockview)
30
+ 1. [ChipCard](#chipcard)
30
31
  1. [ContextMenu](#contextmenu)
31
32
  1. [DeleteModal](#deletemodal)
32
33
  1. [Disclaimer](#disclaimer)
@@ -138,6 +139,16 @@ const blocks: BlockDto = [
138
139
  <BlockView blocks={blocks} columns={1} rows={1} />;
139
140
  ```
140
141
 
142
+ ### ChipCard
143
+
144
+ A card with a chip inside, used for displaying entities. The chip displays an icon and a label. Furthermore, it is wrapped by [OverflowTooltip](#overflowtooltip) to truncate long labels. The card takes per default the width of the parent container. You can also provide custom CSS via the `className` property.
145
+
146
+ ```jsx
147
+ import { ChipCard } form '@hortiview/shared-components'
148
+
149
+ <ChipCard icon='domain' label='Example Label' className='custom' />
150
+ ```
151
+
141
152
  ### ContextMenu
142
153
 
143
154
  This is a component to render a menu button, that opens several action-points in a context-menu
@@ -0,0 +1 @@
1
+ ._entityContainer_1g0x2_1{justify-content:center;align-items:center;padding:.25rem;border-radius:.5rem}
@@ -1 +1 @@
1
- ._fullWidth_1norc_1{width:100%}._mainElevation_1norc_5{background:var(--lmnt-theme-background);border-radius:.5rem;width:100%}._searchbar_1norc_11 div{border:none}._searchbar_1norc_11 button{margin-right:.5rem}._roundedBottom_1norc_19{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}._primaryText_1norc_24 [class*=mdc-list-item__primary-text]{display:none!important}._list_1norc_28{padding-top:0;padding-bottom:0;overflow-y:auto}._list_1norc_28 [class*=mdc-list-item__overline-text]{margin-bottom:-2.25rem}._list_1norc_28::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 .25rem rgba(0,0,0,.2);border-radius:.5rem;margin-right:.25rem;background-color:var(--lmnt-theme-background)}._list_1norc_28::-webkit-scrollbar{width:.5rem;background-color:var(--lmnt-theme-background)}._list_1norc_28::-webkit-scrollbar-thumb{border-radius:.5rem;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:var(--lmnt-theme-primary-on-surface)}._listItem_1norc_56{border-bottom:.0775rem solid var(--lmnt-utility-gray-surface)}._listItem_1norc_56 i:not(._trailingIcon_1norc_60){color:var(--lmnt-theme-on-surface-inactive)}._listItem_1norc_56 i._trailingIcon_1norc_60{color:var(--lmnt-theme-on-surface-disabled)}._listItem_1norc_56 [class^=mdc-list-item__start]{margin:0 1rem!important;align-self:center!important}._groupedListItem_1norc_72{height:4.5rem!important}._iconColor_1norc_76{color:var(--lmnt-theme-on-surface-disabled)!important}._overlineTitle_1norc_80 [class*=mdc-list-item__overline-text]{color:var(--lmnt-theme-on-surface-inactive)!important;line-height:1rem!important}._noOverlineTitle_1norc_85 [class*=mdc-list-item__secondary-text] [class*=lmnt-group]{margin-top:-.875rem}._truncate_1norc_89{display:-webkit-box!important;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;max-width:100%}._truncateOverlineText_1norc_99{margin-bottom:-1rem!important;margin-top:-1rem!important}
1
+ ._fullWidth_zewqs_1{width:100%}._mainElevation_zewqs_5{background:var(--lmnt-theme-background);border-radius:.5rem;width:100%}._searchbar_zewqs_11 div{border:none}._searchbar_zewqs_11 button{margin-right:.5rem}._roundedBottom_zewqs_19{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}._primaryText_zewqs_24 [class*=mdc-list-item__primary-text]{display:none!important}._list_zewqs_28{padding-top:0;padding-bottom:0;overflow-y:auto}._list_zewqs_28 [class*=mdc-list-item__overline-text]{margin-bottom:-2.25rem}._list_zewqs_28::-webkit-scrollbar-track{-webkit-box-shadow:inset 0 0 .25rem rgba(0,0,0,.2);border-radius:.5rem;margin-right:.25rem;background-color:var(--lmnt-theme-background)}._list_zewqs_28::-webkit-scrollbar{width:.5rem;background-color:var(--lmnt-theme-background)}._list_zewqs_28::-webkit-scrollbar-thumb{border-radius:.5rem;-webkit-box-shadow:inset 0 0 6px rgba(0,0,0,.3);background-color:var(--lmnt-theme-primary-on-surface)}._listItem_zewqs_56{border-bottom:.0775rem solid var(--lmnt-utility-gray-surface)}._listItem_zewqs_56 i:not(._trailingIcon_zewqs_60){color:var(--lmnt-theme-on-surface-inactive)}._listItem_zewqs_56 i._trailingIcon_zewqs_60{color:var(--lmnt-theme-on-surface-disabled)}._listItem_zewqs_56 [class^=mdc-list-item__start]{margin:0 1rem!important;align-self:center!important}._groupedListItem_zewqs_72{height:4.5rem!important}._iconColor_zewqs_76{color:var(--lmnt-theme-on-surface-disabled)!important}._overlineTitle_zewqs_80 [class*=mdc-list-item__overline-text]{color:var(--lmnt-theme-on-surface-inactive)!important;line-height:1rem!important}._noOverlineTitle_zewqs_85 [class*=mdc-list-item__secondary-text] [class*=lmnt-group]{margin-top:-.875rem}._truncate_zewqs_89{display:-webkit-box!important;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;max-width:100%;word-break:break-all}._truncateOverlineText_zewqs_100{margin-bottom:-1rem!important;margin-top:-1rem!important}
@@ -1 +1 @@
1
- ._truncate_m48xn_1{display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis}
1
+ ._truncate_wgwcv_1{display:-webkit-box;line-clamp:2;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;max-width:100%;word-break:break-all}._truncate_wgwcv_1 *:not([class*=lmnt-icon]){overflow:hidden;text-overflow:ellipsis;word-break:break-all}
@@ -0,0 +1,7 @@
1
+ import "./assets/chipCard.css";
2
+ const t = "_entityContainer_1g0x2_1", e = {
3
+ entityContainer: t
4
+ };
5
+ export {
6
+ e as s
7
+ };
@@ -1,6 +1,6 @@
1
1
  import { jsx as r, Fragment as l, jsxs as c } from "react/jsx-runtime";
2
2
  import { Group as m, TypoBody as p } from "@element/react-components";
3
- import { u as d } from "../../useBreakpoints-BNeVhjjZ.js";
3
+ import { u as d } from "../../useBreakpoints-MzTZ0tCT.js";
4
4
  import { s as o } from "../../alertBanner.module-BPiKN0gh.js";
5
5
  const h = ({
6
6
  text: e,
@@ -1,6 +1,6 @@
1
1
  import { jsx as e, Fragment as m } from "react/jsx-runtime";
2
2
  import { a as t, s } from "../../react.esm-Dy4VzU4L.js";
3
- import { a as l } from "../../useBreakpoints-BNeVhjjZ.js";
3
+ import { a as l } from "../../useBreakpoints-MzTZ0tCT.js";
4
4
  import { AlertBanner as n } from "./AlertBanner.js";
5
5
  import { d as c, b as p, t as r, g as o, v as a } from "../../vi.JYQecGiw-BbUbJcT8.js";
6
6
  c("AlertBanner Test", () => {
@@ -5,7 +5,7 @@ import { BasicHeading as u } from "../BasicHeading/BasicHeading.js";
5
5
  import { EmptyView as L } from "../EmptyView/EmptyView.js";
6
6
  import { ListArea as W } from "../ListArea/ListArea.js";
7
7
  import { VerticalDivider as A } from "../VerticalDivider/VerticalDivider.js";
8
- import { u as V } from "../../useBreakpoints-BNeVhjjZ.js";
8
+ import { u as V } from "../../useBreakpoints-MzTZ0tCT.js";
9
9
  import { s as r } from "../../baseView.module-uWbm_a5f.js";
10
10
  const C = ({
11
11
  action: c,
@@ -1,6 +1,6 @@
1
1
  import { jsx as a, Fragment as s } from "react/jsx-runtime";
2
2
  import { a as r, s as e, f as p } from "../../react.esm-Dy4VzU4L.js";
3
- import { a as l } from "../../useBreakpoints-BNeVhjjZ.js";
3
+ import { a as l } from "../../useBreakpoints-MzTZ0tCT.js";
4
4
  import { BaseView as i } from "./BaseView.js";
5
5
  import { d as u, b as m, t as n, g as t, v as c } from "../../vi.JYQecGiw-BbUbJcT8.js";
6
6
  u("BaseView Test", () => {
@@ -2,7 +2,7 @@ import { jsxs as s, jsx as t } from "react/jsx-runtime";
2
2
  import { TypoDisplay as g, TypoBody as N, Icon as I } from "@element/react-components";
3
3
  import { I as x } from "../../Iconify-CY9lZjFd.js";
4
4
  import { AvailableCustomIcons as B } from "../../enums/AvailableCustomIcons.js";
5
- import { u as C } from "../../useBreakpoints-BNeVhjjZ.js";
5
+ import { u as C } from "../../useBreakpoints-MzTZ0tCT.js";
6
6
  import { OverflowTooltip as T } from "../OverflowTooltip/OverflowTooltip.js";
7
7
  import { s as e } from "../../basicHeading.module-BYb8xvuk.js";
8
8
  const $ = ({ icon: i }) => i ? typeof i != "string" ? /* @__PURE__ */ t("div", { className: e.iconContainer, children: i }) : i in B ? /* @__PURE__ */ t(
@@ -0,0 +1,24 @@
1
+ type ChipCardProps = {
2
+ /**
3
+ * The label of the chip.
4
+ */
5
+ label: string;
6
+ /**
7
+ * The leading icon. The available icons are all material icons.
8
+ */
9
+ icon: string;
10
+ /**
11
+ * The class name to apply to the component.
12
+ */
13
+ className?: string;
14
+ };
15
+ /**
16
+ * A card with a chip inside, used for displaying entities.
17
+ * The chip displays an icon and a label. Furthermore, it is wrapped by {@link OverflowTooltip} to truncate long labels.
18
+ * The card takes per default the width of the parent container.
19
+ * @param label the label of the chip
20
+ * @param icon the leading icon. The available icons are all material icons.
21
+ * @param className the class name to apply to the component
22
+ */
23
+ export declare const ChipCard: ({ label, icon, className }: ChipCardProps) => import("react/jsx-runtime").JSX.Element;
24
+ export {};
@@ -0,0 +1,28 @@
1
+ import { jsx as t } from "react/jsx-runtime";
2
+ import { Card as e, Chips as n } from "@element/react-components";
3
+ import { OverflowTooltip as a } from "../OverflowTooltip/OverflowTooltip.js";
4
+ import { s as m } from "../../chipCard.module-BjpKuf1b.js";
5
+ const h = ({ label: r, icon: i, className: o = "" }) => /* @__PURE__ */ t(
6
+ e,
7
+ {
8
+ variant: "flat",
9
+ bodyAlignment: "centered",
10
+ themeColor: "primary-50",
11
+ className: `${m.entityContainer} ${o}`,
12
+ children: /* @__PURE__ */ t(a, { id: `chip_card_${r}`, text: r, children: /* @__PURE__ */ t(
13
+ n,
14
+ {
15
+ chips: [
16
+ {
17
+ label: r,
18
+ leadingIcon: i
19
+ }
20
+ ],
21
+ variant: "outlined"
22
+ }
23
+ ) })
24
+ }
25
+ );
26
+ export {
27
+ h as ChipCard
28
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,25 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ import { a, s as i } from "../../react.esm-Dy4VzU4L.js";
3
+ import { ChipCard as n } from "./ChipCard.js";
4
+ import { d as s, t as c, g as t } from "../../vi.JYQecGiw-BbUbJcT8.js";
5
+ s("ChipCard Component", () => {
6
+ const r = "Test Label", o = "domain";
7
+ c("renders the correct label and icon", () => {
8
+ a(/* @__PURE__ */ e(n, { label: r, icon: o })), t(i.getByText(r)).toBeInTheDocument(), t(i.getByText(o)).toBeInTheDocument();
9
+ }), c("applies OverflowTooltip correctly", () => {
10
+ const l = "Very looooooooooooooooooooooooooooooooooooong example label";
11
+ a(
12
+ /* @__PURE__ */ e(
13
+ "div",
14
+ {
15
+ style: {
16
+ width: "2rem"
17
+ },
18
+ children: /* @__PURE__ */ e(n, { label: l, icon: o })
19
+ }
20
+ )
21
+ );
22
+ const d = document.querySelector("div[data-tooltip-id]");
23
+ t(d).toHaveAttribute("data-tooltip-id", `chip_card_${l}`);
24
+ });
25
+ });
@@ -2,7 +2,7 @@ import { jsx as r, jsxs as p, Fragment as s } from "react/jsx-runtime";
2
2
  import { Button as u, Group as c, Icon as D, TypoBody as t } from "@element/react-components";
3
3
  import { uniqueId as N } from "lodash";
4
4
  import { AvailableCustomIcons as S } from "../../enums/AvailableCustomIcons.js";
5
- import { u as x } from "../../useBreakpoints-BNeVhjjZ.js";
5
+ import { u as x } from "../../useBreakpoints-MzTZ0tCT.js";
6
6
  import { I as M } from "../../Iconify-CY9lZjFd.js";
7
7
  import { Modal as j } from "../Modal/Modal.js";
8
8
  import { s as n } from "../../deleteModal.module-Ds3MDzdl.js";
@@ -2,21 +2,22 @@ import { jsx as t, jsxs as B, Fragment as I } from "react/jsx-runtime";
2
2
  import { Group as y, Button as h, Select as T, Switch as W, IconButton as j, NotificationBadge as b } from "@element/react-components";
3
3
  import { useState as v } from "react";
4
4
  import { s as c } from "../../genericTable.module-Dk3yy2S3.js";
5
- import { u as A } from "../../useBreakpoints-BNeVhjjZ.js";
5
+ import { u as A } from "../../useBreakpoints-MzTZ0tCT.js";
6
6
  import "../../alertBanner.module-BPiKN0gh.js";
7
7
  import { I as z } from "../../Iconify-CY9lZjFd.js";
8
8
  import "../../react-tooltip.min-BzHiZW8k.js";
9
- import "../../overflowTooltip.module-BN3bp9Cj.js";
9
+ import "../../overflowTooltip.module-YyRN2MGc.js";
10
10
  import "../../basicHeading.module-BYb8xvuk.js";
11
11
  import "../../isArray-Ca4KR8TK.js";
12
12
  import "../../_baseToString-BNXOi2Mf.js";
13
13
  import "../../_equalByTag-DJhSpgVG.js";
14
14
  import "../../iconify.module-C89oaw5b.js";
15
15
  import { SearchBar as H } from "../SearchBar/SearchBar.js";
16
- import "../../listArea.module-CGpHPOji.js";
16
+ import "../../listArea.module-BhO_OJ1S.js";
17
17
  import "../../verticalDivider.module-C3_GL-fH.js";
18
18
  import "../../baseView.module-uWbm_a5f.js";
19
19
  import "../../BlockView.module-BPlNT5uh.js";
20
+ import "../../chipCard.module-BjpKuf1b.js";
20
21
  import "lodash";
21
22
  import "../../contextMenu.module-DNQ8d9Aj.js";
22
23
  import { Modal as K } from "../Modal/Modal.js";
@@ -33,7 +34,7 @@ import "react-hook-form";
33
34
  import "../../formDatePicker.module-BV3ma_7y.js";
34
35
  import "../../formSelect.module-C18N-SsT.js";
35
36
  import "../../formText.module-C0by6_DK.js";
36
- const xt = ({
37
+ const St = ({
37
38
  clearFilterText: m,
38
39
  closeCallback: a,
39
40
  currentFilter: i,
@@ -175,5 +176,5 @@ const xt = ({
175
176
  );
176
177
  };
177
178
  export {
178
- xt as Filter
179
+ St as Filter
179
180
  };
@@ -1,6 +1,6 @@
1
1
  import { jsx as r } from "react/jsx-runtime";
2
2
  import { a, s as t, f as c, t as u, w as d } from "../../react.esm-Dy4VzU4L.js";
3
- import { a as s } from "../../useBreakpoints-BNeVhjjZ.js";
3
+ import { a as s } from "../../useBreakpoints-MzTZ0tCT.js";
4
4
  import { Filter as T } from "./Filter.js";
5
5
  import { v as x, b as f, d as y, t as B, g as e } from "../../vi.JYQecGiw-BbUbJcT8.js";
6
6
  const o = x.fn();
@@ -2,20 +2,21 @@ import { jsx as r, jsxs as B } from "react/jsx-runtime";
2
2
  import { Elevation as D, Table as G, TableTopBar as u, Group as m, Padding as W, TypoDisplay as k, TypoSubtitle as C } from "@element/react-components";
3
3
  import { Fragment as j } from "react";
4
4
  import { a as t } from "../../genericTable.module-Dk3yy2S3.js";
5
- import { u as x } from "../../useBreakpoints-BNeVhjjZ.js";
5
+ import { u as x } from "../../useBreakpoints-MzTZ0tCT.js";
6
6
  import "../../alertBanner.module-BPiKN0gh.js";
7
7
  import "../../iconify.module-C89oaw5b.js";
8
8
  import "../../isArray-Ca4KR8TK.js";
9
9
  import "../../react-tooltip.min-BzHiZW8k.js";
10
- import "../../overflowTooltip.module-BN3bp9Cj.js";
10
+ import "../../overflowTooltip.module-YyRN2MGc.js";
11
11
  import "../../basicHeading.module-BYb8xvuk.js";
12
12
  import "../../_baseToString-BNXOi2Mf.js";
13
13
  import "../../_equalByTag-DJhSpgVG.js";
14
14
  import "../../searchBar.module-9gKyrZRT.js";
15
- import "../../listArea.module-CGpHPOji.js";
15
+ import "../../listArea.module-BhO_OJ1S.js";
16
16
  import "../../verticalDivider.module-C3_GL-fH.js";
17
17
  import "../../baseView.module-uWbm_a5f.js";
18
18
  import "../../BlockView.module-BPlNT5uh.js";
19
+ import "../../chipCard.module-BjpKuf1b.js";
19
20
  import "lodash";
20
21
  import "../../contextMenu.module-DNQ8d9Aj.js";
21
22
  import "../../modal.module-BlDp1Wiq.js";
@@ -33,9 +34,9 @@ import "../../formSelect.module-C18N-SsT.js";
33
34
  import "../../formText.module-C0by6_DK.js";
34
35
  import { useGenerateColumns as _, useGenerateTableData as $ } from "./GenericTableService.js";
35
36
  import { GenericCardList as A } from "./Mobile/GenericCardList.js";
36
- const fr = ({
37
- data: l = [],
38
- hiddenColumns: p = [],
37
+ const hr = ({
38
+ data: p = [],
39
+ hiddenColumns: l = [],
39
40
  order: f = [],
40
41
  cellTemplates: h = void 0,
41
42
  tableActions: i = [],
@@ -49,7 +50,7 @@ const fr = ({
49
50
  cardSubTitleColumn: T
50
51
  }) => {
51
52
  const { isDesktop: o } = x(), a = _({
52
- data: l,
53
+ data: p,
53
54
  order: f,
54
55
  cellTemplates: h,
55
56
  headerTranslation: g,
@@ -58,7 +59,7 @@ const fr = ({
58
59
  cardTitleColumn: v,
59
60
  cardSubTitleColumn: T
60
61
  }), c = $({
61
- data: l,
62
+ data: p,
62
63
  getRowActions: s
63
64
  });
64
65
  return o ? /* @__PURE__ */ r(D, { elevation: 1, className: t.elevation, children: /* @__PURE__ */ r(
@@ -68,7 +69,7 @@ const fr = ({
68
69
  fullWidth: !0,
69
70
  alwaysUseDivTags: !0,
70
71
  layout: "standard",
71
- hiddenColumns: p,
72
+ hiddenColumns: l,
72
73
  data: c,
73
74
  columns: a,
74
75
  leadingContent: e && i?.length === 0 ? /* @__PURE__ */ r(u, { title: e }) : i?.length > 0 && /* @__PURE__ */ r(
@@ -109,11 +110,11 @@ const fr = ({
109
110
  {
110
111
  data: c,
111
112
  columns: a,
112
- hiddenColumns: p,
113
+ hiddenColumns: l,
113
114
  noContentText: n
114
115
  }
115
116
  );
116
117
  };
117
118
  export {
118
- fr as GenericTable
119
+ hr as GenericTable
119
120
  };
@@ -1,6 +1,6 @@
1
1
  import { jsx as a, jsxs as B } from "react/jsx-runtime";
2
2
  import { a as o, s as e } from "../../react.esm-Dy4VzU4L.js";
3
- import { a as m } from "../../useBreakpoints-BNeVhjjZ.js";
3
+ import { a as m } from "../../useBreakpoints-MzTZ0tCT.js";
4
4
  import { GenericTable as s } from "./GenericTable.js";
5
5
  import { d as h, v as r, t as i, g as t } from "../../vi.JYQecGiw-BbUbJcT8.js";
6
6
  h("GenericTable Test", () => {
@@ -1,7 +1,7 @@
1
1
  import { jsx as r, jsxs as d, Fragment as I } from "react/jsx-runtime";
2
2
  import { Elevation as N, Group as c, TabBar as b, Tab as k, Padding as x } from "@element/react-components";
3
3
  import { useState as y, useEffect as $ } from "react";
4
- import { u as w } from "../../useBreakpoints-BNeVhjjZ.js";
4
+ import { u as w } from "../../useBreakpoints-MzTZ0tCT.js";
5
5
  import { s as a } from "../../HashTabView.module-DUekkiTC.js";
6
6
  const h = (n, t) => !t || !n ? 0 : n.findIndex((i) => i.hash === t.replace("#", "")) ?? 0, D = ({
7
7
  tabs: n,
@@ -1,7 +1,7 @@
1
1
  import { jsxs as d, Fragment as p, jsx as t } from "react/jsx-runtime";
2
2
  import { Divider as h, Group as s, TypoCaption as g, TypoSubtitle as v } from "@element/react-components";
3
3
  import { useMemo as y, Fragment as A } from "react";
4
- import { u } from "../../useBreakpoints-BNeVhjjZ.js";
4
+ import { u } from "../../useBreakpoints-MzTZ0tCT.js";
5
5
  import { s as l } from "../../infoGroup.module-Cxw88dfC.js";
6
6
  const w = ({ fields: r, bold: i }) => {
7
7
  const { isDesktop: a } = u(), e = !!r.length && Array.isArray(r.at(0)), n = y(() => e && a ? r.map((o, c) => /* @__PURE__ */ d(p, { children: [
@@ -10,7 +10,7 @@ import { _ as br, i as M } from "../../Iconify-CY9lZjFd.js";
10
10
  import { useState as dr, useMemo as F } from "react";
11
11
  import { SearchBar as hr } from "../SearchBar/SearchBar.js";
12
12
  import { getGroupedItems as mr, getListedItems as Or } from "./ListAreaService.js";
13
- import { s as A } from "../../listArea.module-CGpHPOji.js";
13
+ import { s as A } from "../../listArea.module-BhO_OJ1S.js";
14
14
  function Pr(r, n) {
15
15
  for (var a = -1, e = n.length, i = r.length; ++a < e; )
16
16
  r[i + a] = n[a];
@@ -2,7 +2,7 @@ import { jsx as r, jsxs as B } from "react/jsx-runtime";
2
2
  import { TypoButton as C, Group as b, TypoSubtitle as j, TypoBody as O, Icon as G } from "@element/react-components";
3
3
  import { I as L } from "../../Iconify-CY9lZjFd.js";
4
4
  import { AvailableCustomIcons as S } from "../../enums/AvailableCustomIcons.js";
5
- import { s as n } from "../../listArea.module-CGpHPOji.js";
5
+ import { s as n } from "../../listArea.module-BhO_OJ1S.js";
6
6
  const D = (t, a, c, l) => {
7
7
  const o = t.reduce((i, s) => {
8
8
  const { groupName: e, ...m } = s;
@@ -15,7 +15,7 @@ type OverflowTooltipProps = {
15
15
  };
16
16
  /**
17
17
  * A component that displays a tooltip when the text is overflowing.
18
- * It can be wrapped around Element's Typography components (e.g. TypoDisplay).
18
+ * It can be wrapped around Element's Typography components (e.g. TypoDisplay) or single chips (see {@link ChipCard}).
19
19
  * It clones the child element and adds the tooltip functionality.
20
20
  *
21
21
  * Hint: It was not written as a component that directly takes the Typography string as child,
@@ -1,40 +1,41 @@
1
1
  import { jsxs as p, Fragment as a, jsx as s } from "react/jsx-runtime";
2
- import { TypoBody as c } from "@element/react-components";
3
- import { useState as d, useMemo as h, cloneElement as f } from "react";
4
- import { H as w } from "../../react-tooltip.min-BzHiZW8k.js";
5
- import { s as u } from "../../overflowTooltip.module-BN3bp9Cj.js";
6
- const k = ({ id: e, text: l, children: t }) => {
7
- const [r, i] = d(!1), m = h(
8
- () => f(t, {
9
- "data-tooltip-id": e,
2
+ import { TypoBody as h } from "@element/react-components";
3
+ import { useState as c, useMemo as d, cloneElement as f } from "react";
4
+ import { H as W } from "../../react-tooltip.min-BzHiZW8k.js";
5
+ import { s as w } from "../../overflowTooltip.module-YyRN2MGc.js";
6
+ import { hasChildWithGreaterWidth as x } from "./OverflowTooltipService.js";
7
+ const H = ({ id: t, text: i, children: e }) => {
8
+ const [l, r] = c(!1), m = d(
9
+ () => f(e, {
10
+ "data-tooltip-id": t,
10
11
  onMouseEnter: ({ currentTarget: o }) => {
11
- const n = o.clientWidth < o.scrollWidth || o.clientHeight < o.scrollHeight;
12
- i(n);
12
+ const n = o.clientWidth < o.scrollWidth || o.clientHeight < o.scrollHeight || x(o, o.parentElement?.clientWidth);
13
+ r(n);
13
14
  },
14
- className: `${u.truncate} ${t.props.className}`
15
+ className: `${w.truncate} ${e.props.className}`
15
16
  }),
16
- [t, e]
17
+ [e, t]
17
18
  );
18
19
  return /* @__PURE__ */ p(a, { children: [
19
20
  m,
20
21
  /* @__PURE__ */ s(
21
- w,
22
+ W,
22
23
  {
23
- id: e,
24
+ id: t,
24
25
  noArrow: !0,
25
26
  place: "bottom",
26
27
  clickable: !0,
27
- hidden: !r,
28
+ hidden: !l,
28
29
  style: {
29
30
  whiteSpace: "normal",
30
31
  maxWidth: "90%",
31
32
  wordBreak: "break-word"
32
33
  },
33
- children: /* @__PURE__ */ s(c, { level: 2, children: l })
34
+ children: /* @__PURE__ */ s(h, { level: 2, children: i })
34
35
  }
35
36
  )
36
37
  ] });
37
38
  };
38
39
  export {
39
- k as OverflowTooltip
40
+ H as OverflowTooltip
40
41
  };
@@ -0,0 +1 @@
1
+ export declare const hasChildWithGreaterWidth: (element: HTMLElement, parentWidth: number | undefined) => boolean;
@@ -0,0 +1,11 @@
1
+ const f = (t, e) => {
2
+ if (!e)
3
+ return !0;
4
+ for (const r of t.children)
5
+ if (r instanceof HTMLElement && (r.offsetWidth > e || f(r, e)))
6
+ return !0;
7
+ return !1;
8
+ };
9
+ export {
10
+ f as hasChildWithGreaterWidth
11
+ };
@@ -19,9 +19,28 @@
19
19
  * - isDesktopNavbar: lg-nav, xl-nav, xxl-nav
20
20
  * @returns {Object} An object with the current breakpoint
21
21
  */
22
- export declare const useBreakpoints: (navBarWidth?: number) => {
22
+ export declare const useBreakpoints: () => {
23
23
  isMobile: boolean;
24
24
  isTablet: boolean;
25
25
  isDesktop: boolean;
26
26
  isDesktopNavbar: boolean;
27
27
  };
28
+ /**
29
+ * a hook that returns all breakpoints that are in the range of the desktop size (greater than 840px)
30
+ * - lg: 840-1023px
31
+ * - xl: 1024-1439px
32
+ * - xxl: 1440px and up
33
+ * - lg-nav: (840 + 256) - (1023 + 256)px
34
+ * - xl-nav: (1024 + 256) - (1439 + 256)px
35
+ * - xxl-nav: (1440 + 256)px and up
36
+ * @param navBarWidth
37
+ * @returns
38
+ */
39
+ export declare const useDesktopBreakpoints: (navBarWidth?: number) => {
40
+ isLgNavbar: boolean;
41
+ isXlNavbar: boolean;
42
+ isXxlNavbar: boolean;
43
+ isLg: boolean;
44
+ isXl: boolean;
45
+ isXxl: boolean;
46
+ };
@@ -1,5 +1,6 @@
1
1
  import "react";
2
- import { u as p } from "../useBreakpoints-BNeVhjjZ.js";
2
+ import { u as p, b as r } from "../useBreakpoints-MzTZ0tCT.js";
3
3
  export {
4
- p as useBreakpoints
4
+ p as useBreakpoints,
5
+ r as useDesktopBreakpoints
5
6
  };
@@ -1,5 +1,5 @@
1
1
  import { r as t, w as s } from "../react.esm-Dy4VzU4L.js";
2
- import { u as o } from "../useBreakpoints-BNeVhjjZ.js";
2
+ import { u as o } from "../useBreakpoints-MzTZ0tCT.js";
3
3
  import { d as a, t as i, g as r } from "../vi.JYQecGiw-BbUbJcT8.js";
4
4
  a("useBreakpoint Test", () => {
5
5
  i("returns object", () => {
@@ -0,0 +1,20 @@
1
+ import "./assets/listArea.css";
2
+ const t = "_fullWidth_zewqs_1", e = "_mainElevation_zewqs_5", n = "_searchbar_zewqs_11", o = "_roundedBottom_zewqs_19", i = "_primaryText_zewqs_24", s = "_list_zewqs_28", _ = "_listItem_zewqs_56", r = "_trailingIcon_zewqs_60", l = "_groupedListItem_zewqs_72", c = "_iconColor_zewqs_76", a = "_overlineTitle_zewqs_80", m = "_noOverlineTitle_zewqs_85", u = "_truncate_zewqs_89", q = "_truncateOverlineText_zewqs_100", z = {
3
+ fullWidth: t,
4
+ mainElevation: e,
5
+ searchbar: n,
6
+ roundedBottom: o,
7
+ primaryText: i,
8
+ list: s,
9
+ listItem: _,
10
+ trailingIcon: r,
11
+ groupedListItem: l,
12
+ iconColor: c,
13
+ overlineTitle: a,
14
+ noOverlineTitle: m,
15
+ truncate: u,
16
+ truncateOverlineText: q
17
+ };
18
+ export {
19
+ z as s
20
+ };
package/dist/main.d.ts CHANGED
@@ -2,6 +2,7 @@ export { AlertBanner } from './components/AlertBanner/AlertBanner';
2
2
  export { BaseView } from './components/BaseView/BaseView';
3
3
  export { BasicHeading } from './components/BasicHeading/BasicHeading';
4
4
  export { BlockView } from './components/BlockView/BlockView';
5
+ export { ChipCard } from './components/ChipCard/ChipCard';
5
6
  export { ContextMenu } from './components/ContextMenu/ContextMenu';
6
7
  export { DeleteModal } from './components/DeleteModal/DeleteModal';
7
8
  export { Disclaimer } from './components/Disclaimer/Disclaimer';
package/dist/main.js CHANGED
@@ -3,64 +3,66 @@ 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
5
  import { BlockView as a } from "./components/BlockView/BlockView.js";
6
- import { ContextMenu as c } from "./components/ContextMenu/ContextMenu.js";
7
- import { DeleteModal as s } from "./components/DeleteModal/DeleteModal.js";
8
- import { Disclaimer as d } from "./components/Disclaimer/Disclaimer.js";
9
- import { EmptyView as S } from "./components/EmptyView/EmptyView.js";
6
+ import { ChipCard as c } from "./components/ChipCard/ChipCard.js";
7
+ import { ContextMenu as s } from "./components/ContextMenu/ContextMenu.js";
8
+ import { DeleteModal as F } from "./components/DeleteModal/DeleteModal.js";
9
+ import { Disclaimer as C } from "./components/Disclaimer/Disclaimer.js";
10
+ import { EmptyView as b } from "./components/EmptyView/EmptyView.js";
10
11
  import { Filter as u } from "./components/Filter/Filter.js";
11
12
  import { GenericTable as T } from "./components/GenericTable/GenericTable.js";
12
- import { HashTabView as h } from "./components/HashTabView/HashTabView.js";
13
- import { HeaderFilter as C } from "./components/HeaderFilter/HeaderFilter.js";
14
- import { I } from "./Iconify-CY9lZjFd.js";
15
- import { InfoGroup as A } from "./components/InfoGroup/InfoGroup.js";
16
- import { ListArea as L } from "./components/ListArea/ListArea.js";
17
- import { LoadingSpinner as g } from "./components/LoadingSpinner/Default/LoadingSpinner.js";
18
- import { Modal as G } from "./components/Modal/Modal.js";
19
- import { OverflowTooltip as E } from "./components/OverflowTooltip/OverflowTooltip.js";
20
- import { ScrollbarX as P, ScrollbarY as R } from "./components/Scrollbar/Scrollbar.js";
21
- import { SearchBar as Y } from "./components/SearchBar/SearchBar.js";
22
- import { VerticalDivider as q } from "./components/VerticalDivider/VerticalDivider.js";
23
- import { FormCheckBox as K } from "./components/FormComponents/FormCheckBox/FormCheckBox.js";
24
- import { FormDatePicker as Q } from "./components/FormComponents/FormDatePicker/FormDatePicker.js";
25
- import { FormRadio as W } from "./components/FormComponents/FormRadio/FormRadio.js";
26
- import { FormSelect as _ } from "./components/FormComponents/FormSelect/FormSelect.js";
27
- import { FormSlider as rr } from "./components/FormComponents/FormSlider/FormSlider.js";
28
- import { FormText as er } from "./components/FormComponents/FormText/FormText.js";
29
- import { AvailableCustomIcons as mr } from "./enums/AvailableCustomIcons.js";
30
- import { ThemeColor as fr } from "./enums/ThemeColor.js";
31
- import { u as ir } from "./useBreakpoints-BNeVhjjZ.js";
32
- import { capitalizeFirstLetters as lr } from "./services/UtilService.js";
13
+ import { HashTabView as k } from "./components/HashTabView/HashTabView.js";
14
+ import { HeaderFilter as I } from "./components/HeaderFilter/HeaderFilter.js";
15
+ import { I as A } from "./Iconify-CY9lZjFd.js";
16
+ import { InfoGroup as L } from "./components/InfoGroup/InfoGroup.js";
17
+ import { ListArea as g } from "./components/ListArea/ListArea.js";
18
+ import { LoadingSpinner as G } from "./components/LoadingSpinner/Default/LoadingSpinner.js";
19
+ import { Modal as E } from "./components/Modal/Modal.js";
20
+ import { OverflowTooltip as P } from "./components/OverflowTooltip/OverflowTooltip.js";
21
+ import { ScrollbarX as X, ScrollbarY as Y } from "./components/Scrollbar/Scrollbar.js";
22
+ import { SearchBar as q } from "./components/SearchBar/SearchBar.js";
23
+ import { VerticalDivider as K } from "./components/VerticalDivider/VerticalDivider.js";
24
+ import { FormCheckBox as Q } from "./components/FormComponents/FormCheckBox/FormCheckBox.js";
25
+ import { FormDatePicker as W } from "./components/FormComponents/FormDatePicker/FormDatePicker.js";
26
+ import { FormRadio as _ } from "./components/FormComponents/FormRadio/FormRadio.js";
27
+ import { FormSelect as rr } from "./components/FormComponents/FormSelect/FormSelect.js";
28
+ import { FormSlider as er } from "./components/FormComponents/FormSlider/FormSlider.js";
29
+ import { FormText as mr } from "./components/FormComponents/FormText/FormText.js";
30
+ import { AvailableCustomIcons as fr } from "./enums/AvailableCustomIcons.js";
31
+ import { ThemeColor as ir } from "./enums/ThemeColor.js";
32
+ import { u as lr } from "./useBreakpoints-MzTZ0tCT.js";
33
+ import { capitalizeFirstLetters as nr } from "./services/UtilService.js";
33
34
  export {
34
35
  t as AlertBanner,
35
- mr as AvailableCustomIcons,
36
+ fr as AvailableCustomIcons,
36
37
  p as BaseView,
37
38
  x as BasicHeading,
38
39
  a as BlockView,
39
- c as ContextMenu,
40
- s as DeleteModal,
41
- d as Disclaimer,
42
- S as EmptyView,
40
+ c as ChipCard,
41
+ s as ContextMenu,
42
+ F as DeleteModal,
43
+ C as Disclaimer,
44
+ b as EmptyView,
43
45
  u as Filter,
44
- K as FormCheckBox,
45
- Q as FormDatePicker,
46
- W as FormRadio,
47
- _ as FormSelect,
48
- rr as FormSlider,
49
- er as FormText,
46
+ Q as FormCheckBox,
47
+ W as FormDatePicker,
48
+ _ as FormRadio,
49
+ rr as FormSelect,
50
+ er as FormSlider,
51
+ mr as FormText,
50
52
  T as GenericTable,
51
- h as HashTabView,
52
- C as HeaderFilter,
53
- I as Iconify,
54
- A as InfoGroup,
55
- L as ListArea,
56
- g as LoadingSpinner,
57
- G as Modal,
58
- E as OverflowTooltip,
59
- P as ScrollbarX,
60
- R as ScrollbarY,
61
- Y as SearchBar,
62
- fr as ThemeColor,
63
- q as VerticalDivider,
64
- lr as capitalizeFirstLetters,
65
- ir as useBreakpoints
53
+ k as HashTabView,
54
+ I as HeaderFilter,
55
+ A as Iconify,
56
+ L as InfoGroup,
57
+ g as ListArea,
58
+ G as LoadingSpinner,
59
+ E as Modal,
60
+ P as OverflowTooltip,
61
+ X as ScrollbarX,
62
+ Y as ScrollbarY,
63
+ q as SearchBar,
64
+ ir as ThemeColor,
65
+ K as VerticalDivider,
66
+ nr as capitalizeFirstLetters,
67
+ lr as useBreakpoints
66
68
  };
@@ -1,5 +1,5 @@
1
1
  import "./assets/overflowTooltip.css";
2
- const t = "_truncate_m48xn_1", s = {
2
+ const t = "_truncate_wgwcv_1", s = {
3
3
  truncate: t
4
4
  };
5
5
  export {
@@ -0,0 +1,45 @@
1
+ import { useState as p, useEffect as m } from "react";
2
+ const t = (s) => {
3
+ const [n, i] = p(!1);
4
+ return m(
5
+ () => {
6
+ const e = window.matchMedia(s);
7
+ i(e.matches);
8
+ const a = (o) => i(o.matches);
9
+ return e.addEventListener("change", a), () => e.removeEventListener("change", a);
10
+ },
11
+ []
12
+ // Empty array ensures effect is only run on mount and unmount
13
+ ), n;
14
+ }, h = () => {
15
+ const { isLgNavbar: s, isXlNavbar: n, isXxlNavbar: i, isLg: e, isXl: a, isXxl: o } = c(), r = t("(max-width: 599px)"), d = t("(min-width: 600px) and (max-width: 719px)"), x = t("(min-width: 720px) and (max-width: 839px)");
16
+ return {
17
+ isMobile: r,
18
+ isTablet: d || x,
19
+ isDesktop: e || a || o,
20
+ isDesktopNavbar: s || n || i
21
+ };
22
+ }, c = (s = 256) => {
23
+ const n = t(
24
+ `(min-width: ${840 + s}px) and (max-width: ${1023 + s}px)`
25
+ ), i = t(
26
+ `(min-width: ${1024 + s}px) and (max-width: ${1439 + s}px)`
27
+ ), e = t(`(min-width: ${1440 + s}px)`), a = t("(min-width: 840px) and (max-width: 1023px)"), o = t("(min-width: 1024px) and (max-width: 1439px)"), r = t("(min-width: 1440px)");
28
+ return {
29
+ isLgNavbar: n,
30
+ isXlNavbar: i,
31
+ isXxlNavbar: e,
32
+ isLg: a,
33
+ isXl: o,
34
+ isXxl: r
35
+ };
36
+ }, w = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
37
+ __proto__: null,
38
+ useBreakpoints: h,
39
+ useDesktopBreakpoints: c
40
+ }, Symbol.toStringTag, { value: "Module" }));
41
+ export {
42
+ w as a,
43
+ c as b,
44
+ h as u
45
+ };
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": "0.0.7951",
4
+ "version": "0.0.8286",
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>",
@@ -1,20 +0,0 @@
1
- import "./assets/listArea.css";
2
- const t = "_fullWidth_1norc_1", n = "_mainElevation_1norc_5", o = "_searchbar_1norc_11", e = "_roundedBottom_1norc_19", r = "_primaryText_1norc_24", i = "_list_1norc_28", c = "_listItem_1norc_56", _ = "_trailingIcon_1norc_60", l = "_groupedListItem_1norc_72", s = "_iconColor_1norc_76", a = "_overlineTitle_1norc_80", m = "_noOverlineTitle_1norc_85", u = "_truncate_1norc_89", d = "_truncateOverlineText_1norc_99", T = {
3
- fullWidth: t,
4
- mainElevation: n,
5
- searchbar: o,
6
- roundedBottom: e,
7
- primaryText: r,
8
- list: i,
9
- listItem: c,
10
- trailingIcon: _,
11
- groupedListItem: l,
12
- iconColor: s,
13
- overlineTitle: a,
14
- noOverlineTitle: m,
15
- truncate: u,
16
- truncateOverlineText: d
17
- };
18
- export {
19
- T as s
20
- };
@@ -1,33 +0,0 @@
1
- import { useState as p, useEffect as r } from "react";
2
- const t = (s) => {
3
- const [a, i] = p(!1);
4
- return r(
5
- () => {
6
- const e = window.matchMedia(s);
7
- i(e.matches);
8
- const n = (o) => i(o.matches);
9
- return e.addEventListener("change", n), () => e.removeEventListener("change", n);
10
- },
11
- []
12
- // Empty array ensures effect is only run on mount and unmount
13
- ), a;
14
- }, h = (s = 256) => {
15
- const a = t("(max-width: 599px)"), i = t("(min-width: 600px) and (max-width: 719px)"), e = t("(min-width: 720px) and (max-width: 839px)"), n = t("(min-width: 840px) and (max-width: 1023px)"), o = t("(min-width: 1024px) and (max-width: 1439px)"), d = t("(min-width: 1440px)"), c = t(
16
- `(min-width: ${840 + s}px) and (max-width: ${1023 + s}px)`
17
- ), x = t(
18
- `(min-width: ${1024 + s}px) and (max-width: ${1439 + s}px)`
19
- ), m = t(`(min-width: ${1440 + s}px)`);
20
- return {
21
- isMobile: a,
22
- isTablet: i || e,
23
- isDesktop: n || o || d,
24
- isDesktopNavbar: c || x || m
25
- };
26
- }, u = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
27
- __proto__: null,
28
- useBreakpoints: h
29
- }, Symbol.toStringTag, { value: "Module" }));
30
- export {
31
- u as a,
32
- h as u
33
- };