@frontify/fondue 12.0.0-beta.13 → 12.0.0-beta.16

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 (55) hide show
  1. package/dist/components/DatePicker/DatePickerTrigger.es.js +17 -16
  2. package/dist/components/DatePicker/DatePickerTrigger.es.js.map +1 -1
  3. package/dist/components/Dropdown/Dropdown.es.js +41 -40
  4. package/dist/components/Dropdown/Dropdown.es.js.map +1 -1
  5. package/dist/components/LoadingBar/LoadingBar.d.ts +24 -0
  6. package/dist/components/LoadingBar/LoadingBar.es.js +50 -0
  7. package/dist/components/LoadingBar/LoadingBar.es.js.map +1 -0
  8. package/dist/components/LoadingBar/index.d.ts +1 -0
  9. package/dist/components/OverflowMenu/OverflowMenu.d.ts +6 -0
  10. package/dist/components/OverflowMenu/OverflowMenu.es.js +1721 -0
  11. package/dist/components/OverflowMenu/OverflowMenu.es.js.map +1 -0
  12. package/dist/components/OverflowMenu/OverflowMenuItem.d.ts +11 -0
  13. package/dist/components/OverflowMenu/OverflowMenuItem.es.js +1763 -0
  14. package/dist/components/OverflowMenu/OverflowMenuItem.es.js.map +1 -0
  15. package/dist/components/OverflowMenu/index.d.ts +1 -0
  16. package/dist/components/OverflowMenu/useOverflowMenuKeyboardNavigation.d.ts +1 -0
  17. package/dist/components/OverflowMenu/useOverflowMenuKeyboardNavigation.es.js +29 -0
  18. package/dist/components/OverflowMenu/useOverflowMenuKeyboardNavigation.es.js.map +1 -0
  19. package/dist/components/RichTextEditor/Plugins/GeneratePlugins.d.ts +3 -3
  20. package/dist/components/RichTextEditor/Plugins/GeneratePlugins.es.js +12 -16
  21. package/dist/components/RichTextEditor/Plugins/GeneratePlugins.es.js.map +1 -1
  22. package/dist/components/RichTextEditor/Plugins/LinkPlugin/LinkMarkupElement/LinkMarkupElementNode.es.js.map +1 -1
  23. package/dist/components/RichTextEditor/RichTextEditor.es.js +19 -19
  24. package/dist/components/RichTextEditor/RichTextEditor.es.js.map +1 -1
  25. package/dist/components/RichTextEditor/Toolbar/index.d.ts +1 -1
  26. package/dist/components/RichTextEditor/Toolbar/index.es.js +19 -18
  27. package/dist/components/RichTextEditor/Toolbar/index.es.js.map +1 -1
  28. package/dist/components/RichTextEditor/Toolbar/types.d.ts +0 -2
  29. package/dist/components/RichTextEditor/context/RichTextEditorContext.d.ts +1 -1
  30. package/dist/components/RichTextEditor/context/RichTextEditorContext.es.js +16 -17
  31. package/dist/components/RichTextEditor/context/RichTextEditorContext.es.js.map +1 -1
  32. package/dist/components/RichTextEditor/serializer/utils/serializeLeafToHtml.d.ts +1 -2
  33. package/dist/components/RichTextEditor/serializer/utils/serializeLeafToHtml.es.js.map +1 -1
  34. package/dist/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.d.ts +1 -2
  35. package/dist/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.es.js +23 -19
  36. package/dist/components/RichTextEditor/serializer/utils/serializeNodeToHtmlRecursive.es.js.map +1 -1
  37. package/dist/components/Tooltip/Tooltip.d.ts +2 -1
  38. package/dist/components/Tooltip/Tooltip.es.js +97 -92
  39. package/dist/components/Tooltip/Tooltip.es.js.map +1 -1
  40. package/dist/components/Tree/Node.d.ts +4 -2
  41. package/dist/components/Tree/Node.es.js +105 -99
  42. package/dist/components/Tree/Node.es.js.map +1 -1
  43. package/dist/components/Tree/Tree.d.ts +2 -0
  44. package/dist/components/Tree/Tree.es.js +39 -35
  45. package/dist/components/Tree/Tree.es.js.map +1 -1
  46. package/dist/components/index.d.ts +2 -0
  47. package/dist/index.cjs.js +4 -4
  48. package/dist/index.cjs.js.map +1 -1
  49. package/dist/index.es.js +3608 -3600
  50. package/dist/index.es.js.map +1 -1
  51. package/dist/index.umd.js +4 -4
  52. package/dist/index.umd.js.map +1 -1
  53. package/dist/styles.css +1 -1
  54. package/dist/utilities/dnd/DndWrapper.es.js.map +1 -1
  55. package/package.json +1 -1
@@ -1,10 +1,10 @@
1
- import t, { useState as y, useRef as M, useLayoutEffect as Z } from "react";
2
- import { merge as c } from "../../utilities/merge.es.js";
3
- import { useDrag as q } from "react-dnd";
4
- import { DropZone as k } from "../DropZone/DropZone.es.js";
1
+ import t, { useState as h, useRef as J, useLayoutEffect as K } from "react";
2
+ import { merge as d } from "../../utilities/merge.es.js";
3
+ import { useDrag as Q } from "react-dnd";
4
+ import { DropZone as A } from "../DropZone/DropZone.es.js";
5
5
  import "../../utilities/dnd/DndWrapper.es.js";
6
- import { DropZonePosition as A } from "../../utilities/dnd/types.es.js";
7
- import { EditableText as G } from "../EditableText/EditableText.es.js";
6
+ import { DropZonePosition as B } from "../../utilities/dnd/types.es.js";
7
+ import { EditableText as U } from "../EditableText/EditableText.es.js";
8
8
  import "../../foundation/Icon/Generated/IconAdobeCreativeCloud.es.js";
9
9
  import "../../foundation/Icon/Generated/IconAdobeCreativeCloud12.es.js";
10
10
  import "../../foundation/Icon/Generated/IconAdobeCreativeCloud16.es.js";
@@ -1666,191 +1666,197 @@ import "../../foundation/Icon/Generated/IconWorkflowShapes20.es.js";
1666
1666
  import "../../foundation/Icon/Generated/IconWorkflowShapes24.es.js";
1667
1667
  import "../../foundation/Icon/Generated/IconWorkflowShapes32.es.js";
1668
1668
  import "../../foundation/Icon/IconsMap.es.js";
1669
- import { Tooltip as J, TooltipPosition as K } from "../Tooltip/Tooltip.es.js";
1670
- const Q = ({
1669
+ import { Tooltip as X, TooltipPosition as Y } from "../Tooltip/Tooltip.es.js";
1670
+ const _ = ({
1671
1671
  nodes: r,
1672
- activeIds: d,
1672
+ activeIds: f,
1673
1673
  treeId: o,
1674
1674
  onClick: m,
1675
1675
  onDrop: i,
1676
- onEditableSave: s,
1677
- parentIds: e
1678
- }) => r.map((l, p) => /* @__PURE__ */ t.createElement(X, {
1679
- key: l.id,
1680
- node: l,
1681
- nodeIndex: p,
1682
- activeIds: d,
1676
+ onEditableSave: l,
1677
+ onNodeExpand: s,
1678
+ forceCaret: u,
1679
+ parentIds: a
1680
+ }) => r.map((p, e) => /* @__PURE__ */ t.createElement(I, {
1681
+ key: p.id,
1682
+ node: p,
1683
+ nodeIndex: e,
1684
+ activeIds: f,
1683
1685
  onClick: m,
1684
- isFirst: p === 0,
1686
+ isFirst: e === 0,
1685
1687
  onDrop: i,
1686
- onEditableSave: s,
1687
- parentIds: e,
1688
+ onEditableSave: l,
1689
+ onNodeExpand: s,
1690
+ forceCaret: u,
1691
+ parentIds: a,
1688
1692
  treeId: o
1689
- })), U = (r, d) => {
1693
+ })), $ = (r, f) => {
1690
1694
  const o = (m, i) => {
1691
1695
  if (m.nodes && i) {
1692
- for (const s of m.nodes)
1693
- if (i.includes(s.id) || o(s, i))
1696
+ for (const l of m.nodes)
1697
+ if (i.includes(l.id) || o(l, i))
1694
1698
  return !0;
1695
1699
  }
1696
1700
  return !1;
1697
1701
  };
1698
- return o(r, d);
1699
- }, X = ({
1702
+ return o(r, f);
1703
+ }, I = ({
1700
1704
  node: r,
1701
- strong: d = !1,
1705
+ strong: f = !1,
1702
1706
  activeIds: o,
1703
1707
  onClick: m,
1704
1708
  parentIds: i = [],
1705
- isFirst: s,
1706
- onDrop: e,
1707
- onEditableSave: l,
1709
+ isFirst: l,
1710
+ onDrop: s,
1711
+ onEditableSave: u,
1712
+ onNodeExpand: a,
1708
1713
  treeId: p
1709
1714
  }) => {
1710
- const { id: x, value: v, name: f, label: O, icon: h, nodes: g, actions: E, editable: T, badge: a, tooltipContent: j } = r, [{ opacity: P }, R] = q({
1711
- item: { id: x, value: v, name: f, label: O, icon: h, nodes: g, actions: E, editable: T, badge: a },
1715
+ const { id: e, value: E, name: x, label: C, icon: N, nodes: b, actions: y, editable: H, badge: w, tooltipContent: O, forceCaret: P } = r, [{ opacity: R }, V] = Q({
1716
+ item: { id: e, value: E, name: x, label: C, icon: N, nodes: b, actions: y, editable: H, badge: w },
1712
1717
  collect: (n) => ({
1713
1718
  opacity: n.isDragging() ? 0.4 : 1
1714
1719
  }),
1715
1720
  type: p,
1716
- canDrag: e !== void 0
1717
- }), [b, C] = y(U(r, o)), [V, H] = y(!1), w = o && o.length > 0 && o.includes(x), z = () => H(!0), B = () => H(!1), F = () => {
1718
- if (!v) {
1719
- C(!b);
1721
+ canDrag: s !== void 0
1722
+ }), [v, T] = h($(r, o)), [z, j] = h(!1), c = o && o.length > 0 && o.includes(e), F = () => j(!0), S = () => j(!1), W = () => {
1723
+ if (!E) {
1724
+ T(!v);
1720
1725
  return;
1721
1726
  }
1722
- m && m(x);
1723
- }, S = (n) => {
1724
- n.stopPropagation(), C(!b);
1725
- }, W = () => /* @__PURE__ */ t.createElement(J, {
1726
- disabled: !j,
1727
- content: j,
1728
- position: K.Right,
1727
+ m && m(e);
1728
+ }, [D, M] = h(!1), Z = (n) => {
1729
+ D || a == null || a(e), M(!0), n.stopPropagation(), T(!v);
1730
+ }, q = () => /* @__PURE__ */ t.createElement(X, {
1731
+ disabled: !O,
1732
+ content: O,
1733
+ position: Y.Right,
1729
1734
  withArrow: !0,
1730
1735
  triggerElement: /* @__PURE__ */ t.createElement("div", {
1731
1736
  "data-test-id": "node-badge",
1732
- className: c([
1737
+ className: d([
1733
1738
  "tw-flex tw-justify-center tw-items-center tw-ml-2 tw-text-text-weak",
1734
- (a == null ? void 0 : a.props.size) && "tw-w-8 tw-h-5 tw-bg-box-neutral tw-rounded-full"
1739
+ (w == null ? void 0 : w.props.size) && "tw-w-8 tw-h-5 tw-bg-box-neutral tw-rounded-full"
1735
1740
  ])
1736
- }, a)
1737
- }), u = M(null), [L, D] = y(!1);
1738
- Z(() => (N(), window.addEventListener("resize", N), () => {
1739
- window.removeEventListener("resize", N);
1741
+ }, w)
1742
+ }), g = J(null), [L, G] = h(!1);
1743
+ K(() => (k(), window.addEventListener("resize", k), () => {
1744
+ window.removeEventListener("resize", k);
1740
1745
  }), []);
1741
- const N = () => {
1742
- if (u.current) {
1743
- const n = u.current.scrollWidth > u.current.clientWidth;
1744
- D(n);
1746
+ const k = () => {
1747
+ if (g.current) {
1748
+ const n = g.current.scrollWidth > g.current.clientWidth;
1749
+ G(n);
1745
1750
  }
1746
1751
  };
1747
1752
  return /* @__PURE__ */ t.createElement("li", {
1748
1753
  "data-test-id": "node",
1749
- ref: R,
1750
- style: { opacity: P }
1751
- }, s && /* @__PURE__ */ t.createElement(k, {
1754
+ ref: V,
1755
+ style: { opacity: R }
1756
+ }, l && /* @__PURE__ */ t.createElement(A, {
1752
1757
  data: {
1753
1758
  targetItem: r,
1754
- position: A.Before
1759
+ position: B.Before
1755
1760
  },
1756
- onDrop: e,
1761
+ onDrop: s,
1757
1762
  treeId: p
1758
- }), /* @__PURE__ */ t.createElement(k, {
1763
+ }), /* @__PURE__ */ t.createElement(A, {
1759
1764
  data: {
1760
1765
  targetItem: r,
1761
- position: A.Within
1766
+ position: B.Within
1762
1767
  },
1763
- onDrop: e,
1768
+ onDrop: s,
1764
1769
  treeId: p
1765
1770
  }, /* @__PURE__ */ t.createElement("div", {
1766
- className: c([
1771
+ className: d([
1767
1772
  "tw-flex tw-py-2 tw-px-2.5 tw-no-underline tw-leading-5 tw-h-10",
1768
- d && "tw-font-bold",
1769
- v && !w && "tw-text-text hover:tw-bg-box-neutral-hover hover:tw-text-box-neutral-inverse-hover",
1770
- w && "tw-font-medium tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover hover:tw-text-box-selected-strong-inverse-hover"
1773
+ f && "tw-font-bold",
1774
+ E && !c && "tw-text-text hover:tw-bg-box-neutral-hover hover:tw-text-box-neutral-inverse-hover",
1775
+ c && "tw-font-medium tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover hover:tw-text-box-selected-strong-inverse-hover"
1771
1776
  ]),
1772
- onMouseEnter: z,
1773
- onMouseLeave: B
1777
+ onMouseEnter: F,
1778
+ onMouseLeave: S
1774
1779
  }, /* @__PURE__ */ t.createElement("a", {
1775
1780
  "data-test-id": "node-link",
1776
- className: c([
1781
+ className: d([
1777
1782
  "tw-flex tw-items-center tw-flex-grow tw-justify-between tw-cursor-pointer tw-h-6",
1778
1783
  i.length === 1 && "tw-pl-4",
1779
1784
  i.length > 1 && "tw-pl-8"
1780
1785
  ]),
1781
- "aria-selected": w,
1782
- onClick: F
1786
+ "aria-selected": c,
1787
+ onClick: W
1783
1788
  }, /* @__PURE__ */ t.createElement("div", {
1784
1789
  className: "tw-flex tw-flex-1 tw-space-x-1 tw-items-center tw-h-full"
1785
1790
  }, /* @__PURE__ */ t.createElement("span", {
1786
1791
  "data-test-id": "toggle",
1787
1792
  className: "tw-w-2 tw-h-3 tw-flex tw-items-center tw-justify-center",
1788
- onClick: S
1789
- }, g && /* @__PURE__ */ t.createElement("div", {
1790
- className: c([
1793
+ onClick: Z
1794
+ }, (b || P) && /* @__PURE__ */ t.createElement("div", {
1795
+ className: d([
1791
1796
  "tw-transition-transform tw-w-0 tw-h-0 tw-text-black-100 tw-text-opacity-40 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-x-strong",
1792
- b ? "tw-rotate-90" : "",
1793
- w && "tw-text-box-selected-strong-inverse"
1797
+ v ? "tw-rotate-90" : "",
1798
+ c && "tw-text-box-selected-strong-inverse"
1794
1799
  ])
1795
- })), h && /* @__PURE__ */ t.createElement("span", {
1800
+ })), N && /* @__PURE__ */ t.createElement("span", {
1796
1801
  className: "tw-flex tw-justify-center tw-items-center tw-w-5"
1797
- }, h), T && l ? /* @__PURE__ */ t.createElement("div", {
1798
- ref: u,
1802
+ }, N), H && u ? /* @__PURE__ */ t.createElement("div", {
1803
+ ref: g,
1799
1804
  className: "tw-relative tw-top-[0.2rem] tw-w-full tw-flex-1 tw-h-full"
1800
- }, /* @__PURE__ */ t.createElement(G, {
1805
+ }, /* @__PURE__ */ t.createElement(U, {
1801
1806
  options: {
1802
1807
  additionalValues: r.id,
1803
1808
  enableDoubleClick: !0,
1804
1809
  isSlimInputField: !0,
1805
1810
  removeBoxPadding: !0
1806
1811
  },
1807
- onAdditionalValueSave: l,
1812
+ onAdditionalValueSave: u,
1808
1813
  isOverflowing: !0
1809
1814
  }, /* @__PURE__ */ t.createElement("span", {
1810
- title: L ? f : "",
1815
+ title: L ? x : "",
1811
1816
  className: "tw-max-w-full tw-absolute tw-top-[-0.08rem] tw-truncate"
1812
- }, f))) : /* @__PURE__ */ t.createElement("span", {
1817
+ }, x))) : /* @__PURE__ */ t.createElement("span", {
1813
1818
  className: "tw-flex tw-items-center tw-flex-1 tw-relative tw-h-10",
1814
- title: L ? f : "",
1819
+ title: L ? x : "",
1815
1820
  "data-test-id": "node-link-name"
1816
1821
  }, /* @__PURE__ */ t.createElement("span", {
1817
- ref: u,
1822
+ ref: g,
1818
1823
  className: "tw-truncate tw-max-w-full tw-absolute"
1819
- }, f)), /* @__PURE__ */ t.createElement("span", null, a && W())), /* @__PURE__ */ t.createElement("div", {
1824
+ }, x)), /* @__PURE__ */ t.createElement("span", null, w && q())), /* @__PURE__ */ t.createElement("div", {
1820
1825
  className: "tw-px-1.5"
1821
1826
  }, /* @__PURE__ */ t.createElement("span", {
1822
1827
  "data-test-id": "node-label",
1823
- className: c([
1828
+ className: d([
1824
1829
  "tw-text-black-100 tw-text-opacity-40 tw-text-xs tw-font-normal",
1825
- w && "tw-text-box-selected-strong-inverse"
1830
+ c && "tw-text-box-selected-strong-inverse"
1826
1831
  ])
1827
- }, O))), E && /* @__PURE__ */ t.createElement("div", {
1828
- className: c([
1832
+ }, C))), y && /* @__PURE__ */ t.createElement("div", {
1833
+ className: d([
1829
1834
  "tw-flex tw-items-center",
1830
- V || w ? "tw-visible tw-space-x-1.5" : "tw-invisible tw-w-0"
1835
+ z || c ? "tw-visible tw-space-x-1.5" : "tw-invisible tw-w-0"
1831
1836
  ])
1832
- }, E.map((n) => n)))), g && b && /* @__PURE__ */ t.createElement("ul", {
1837
+ }, y.map((n) => n)))), b && v && /* @__PURE__ */ t.createElement("ul", {
1833
1838
  className: "tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left",
1834
1839
  "data-test-id": "sub-tree"
1835
- }, Q({
1836
- nodes: g,
1840
+ }, _({
1841
+ nodes: b,
1837
1842
  treeId: p,
1838
1843
  activeIds: o,
1839
1844
  onClick: m,
1840
- onDrop: e,
1841
- onEditableSave: l,
1842
- parentIds: [...i, x]
1843
- })), /* @__PURE__ */ t.createElement(k, {
1845
+ onDrop: s,
1846
+ onEditableSave: u,
1847
+ onNodeExpand: a,
1848
+ parentIds: [...i, e]
1849
+ })), /* @__PURE__ */ t.createElement(A, {
1844
1850
  data: {
1845
1851
  targetItem: r,
1846
- position: A.After
1852
+ position: B.After
1847
1853
  },
1848
- onDrop: e,
1854
+ onDrop: s,
1849
1855
  treeId: p
1850
1856
  }));
1851
1857
  };
1852
1858
  export {
1853
- X as Node,
1854
- Q as renderNodeArray
1859
+ I as Node,
1860
+ _ as renderNodeArray
1855
1861
  };
1856
1862
  //# sourceMappingURL=Node.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Node.es.js","sources":["../../../src/components/Tree/Node.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { ReactElement, useLayoutEffect, useRef, useState } from 'react';\nimport { merge } from '@utilities/merge';\nimport { useDrag } from 'react-dnd';\nimport { DropZone, OnDropCallback } from '@components/DropZone';\nimport { TreeFlatListItem } from '@components/Tree';\nimport { DraggableItem, DropZonePosition } from '@utilities/dnd';\nimport { EditableText } from '../EditableText';\nimport { Tooltip, TooltipPosition } from '../Tooltip';\n\nexport type RenderNodeArrayData = Omit<NodeProps, 'isFirst' | 'strong' | 'node'> & {\n nodes: DraggableItem<TreeNodeItem>[];\n};\n\nexport const renderNodeArray = ({\n nodes,\n activeIds,\n treeId,\n onClick,\n onDrop,\n onEditableSave,\n parentIds,\n}: RenderNodeArrayData) =>\n nodes.map((node, i) => (\n <Node\n key={node.id}\n node={node}\n nodeIndex={i}\n activeIds={activeIds}\n onClick={onClick}\n isFirst={i === 0}\n onDrop={onDrop}\n onEditableSave={onEditableSave}\n parentIds={parentIds}\n treeId={treeId}\n />\n ));\n\nexport interface TreeNodeItem extends TreeFlatListItem {\n nodes?: DraggableItem<TreeNodeItem>[];\n}\n\ntype NodeProps = {\n node: DraggableItem<TreeNodeItem>;\n strong?: boolean;\n nodeIndex?: number;\n activeIds?: NullableString[];\n parentIds?: string[];\n onClick: (id: NullableString) => void;\n isFirst: boolean;\n treeId: string;\n onDrop?: OnDropCallback<TreeNodeItem>;\n onEditableSave?: (targetItemId: string, value: string) => void;\n};\n\nconst getInitialShowNodesValue = (\n currentNode: DraggableItem<TreeNodeItem>,\n activeNodeIds?: NullableString[],\n): boolean => {\n const hasActiveChildNodes = (node: DraggableItem<TreeNodeItem>, activeIds?: NullableString[]): boolean => {\n if (node.nodes && activeIds) {\n for (const childNode of node.nodes) {\n if (activeIds.includes(childNode.id) || hasActiveChildNodes(childNode, activeIds)) {\n return true;\n }\n }\n }\n return false;\n };\n\n return hasActiveChildNodes(currentNode, activeNodeIds);\n};\n\nexport const Node = ({\n node,\n strong = false,\n activeIds,\n onClick,\n parentIds = [],\n isFirst,\n onDrop,\n onEditableSave,\n treeId,\n}: NodeProps): ReactElement<NodeProps> => {\n const { id, value, name, label, icon, nodes, actions, editable, badge, tooltipContent } = node;\n const [{ opacity }, drag] = useDrag({\n item: { id, value, name, label, icon, nodes, actions, editable, badge },\n collect: (monitor) => ({\n opacity: monitor.isDragging() ? 0.4 : 1,\n }),\n type: treeId,\n canDrag: onDrop !== undefined,\n });\n const [showNodes, setShowNodes] = useState(getInitialShowNodesValue(node, activeIds));\n const [isHovered, setIsHovered] = useState(false);\n const selected = activeIds && activeIds.length > 0 && activeIds.includes(id);\n\n const setHoveredTrue = () => setIsHovered(true);\n const setHoveredFalse = () => setIsHovered(false);\n const onNodeClick = () => {\n if (!value) {\n setShowNodes(!showNodes);\n return;\n }\n\n if (onClick) {\n onClick(id);\n }\n };\n const toggleNodesVisibility = (event: React.MouseEvent) => {\n event.stopPropagation();\n setShowNodes(!showNodes);\n };\n\n const insertBadge = () => {\n return (\n <Tooltip\n disabled={!tooltipContent}\n content={tooltipContent}\n position={TooltipPosition.Right}\n withArrow\n triggerElement={\n <div\n data-test-id=\"node-badge\"\n className={merge([\n 'tw-flex tw-justify-center tw-items-center tw-ml-2 tw-text-text-weak',\n badge?.props.size && 'tw-w-8 tw-h-5 tw-bg-box-neutral tw-rounded-full',\n ])}\n >\n {badge}\n </div>\n }\n />\n );\n };\n\n const nameRef = useRef<HTMLDivElement | null>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useLayoutEffect(() => {\n checkIfOverflowing();\n\n window.addEventListener('resize', checkIfOverflowing);\n return () => {\n window.removeEventListener('resize', checkIfOverflowing);\n };\n }, []);\n\n const checkIfOverflowing = () => {\n if (nameRef.current) {\n const isTextOverflowing = nameRef.current.scrollWidth > nameRef.current.clientWidth;\n setIsOverflowing(isTextOverflowing);\n }\n };\n\n /* eslint-disable jsx-a11y/anchor-is-valid,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */\n return (\n <li data-test-id=\"node\" ref={drag} style={{ opacity }}>\n {isFirst && (\n <DropZone\n data={{\n targetItem: node,\n position: DropZonePosition.Before,\n }}\n onDrop={onDrop}\n treeId={treeId}\n />\n )}\n <DropZone\n data={{\n targetItem: node,\n position: DropZonePosition.Within,\n }}\n onDrop={onDrop}\n treeId={treeId}\n >\n <div\n className={merge([\n 'tw-flex tw-py-2 tw-px-2.5 tw-no-underline tw-leading-5 tw-h-10',\n strong && 'tw-font-bold',\n value &&\n !selected &&\n 'tw-text-text hover:tw-bg-box-neutral-hover hover:tw-text-box-neutral-inverse-hover',\n selected &&\n 'tw-font-medium tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover hover:tw-text-box-selected-strong-inverse-hover',\n ])}\n onMouseEnter={setHoveredTrue}\n onMouseLeave={setHoveredFalse}\n >\n <a\n data-test-id=\"node-link\"\n className={merge([\n 'tw-flex tw-items-center tw-flex-grow tw-justify-between tw-cursor-pointer tw-h-6',\n parentIds.length === 1 && 'tw-pl-4',\n parentIds.length > 1 && 'tw-pl-8',\n ])}\n aria-selected={selected}\n onClick={onNodeClick}\n >\n <div className=\"tw-flex tw-flex-1 tw-space-x-1 tw-items-center tw-h-full\">\n <span\n data-test-id=\"toggle\"\n className=\"tw-w-2 tw-h-3 tw-flex tw-items-center tw-justify-center\"\n onClick={toggleNodesVisibility}\n >\n {nodes && (\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-text-black-100 tw-text-opacity-40 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-x-strong',\n showNodes ? 'tw-rotate-90' : '',\n selected && 'tw-text-box-selected-strong-inverse',\n ])}\n ></div>\n )}\n </span>\n {icon && <span className=\"tw-flex tw-justify-center tw-items-center tw-w-5\">{icon}</span>}\n {editable && onEditableSave ? (\n <div\n ref={nameRef}\n className=\"tw-relative tw-top-[0.2rem] tw-w-full tw-flex-1 tw-h-full\"\n >\n <EditableText\n options={{\n additionalValues: node.id,\n enableDoubleClick: true,\n isSlimInputField: true,\n removeBoxPadding: true,\n }}\n onAdditionalValueSave={onEditableSave}\n isOverflowing={true}\n >\n <span\n title={isOverflowing ? name : ''}\n className=\"tw-max-w-full tw-absolute tw-top-[-0.08rem] tw-truncate\"\n >\n {name}\n </span>\n </EditableText>\n </div>\n ) : (\n <span\n className=\"tw-flex tw-items-center tw-flex-1 tw-relative tw-h-10\"\n title={isOverflowing ? name : ''}\n data-test-id=\"node-link-name\"\n >\n <span ref={nameRef} className=\"tw-truncate tw-max-w-full tw-absolute\">\n {name}\n </span>\n </span>\n )}\n <span>{badge && insertBadge()}</span>\n </div>\n <div className=\"tw-px-1.5\">\n <span\n data-test-id=\"node-label\"\n className={merge([\n 'tw-text-black-100 tw-text-opacity-40 tw-text-xs tw-font-normal',\n selected && 'tw-text-box-selected-strong-inverse',\n ])}\n >\n {label}\n </span>\n </div>\n </a>\n\n {actions && (\n <div\n className={merge([\n 'tw-flex tw-items-center',\n isHovered || selected ? 'tw-visible tw-space-x-1.5' : 'tw-invisible tw-w-0',\n ])}\n >\n {actions.map((action) => action)}\n </div>\n )}\n </div>\n </DropZone>\n\n {nodes && showNodes && (\n <ul\n className=\"tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left\"\n data-test-id=\"sub-tree\"\n >\n {renderNodeArray({\n nodes,\n treeId,\n activeIds,\n onClick,\n onDrop,\n onEditableSave,\n parentIds: [...parentIds, id],\n })}\n </ul>\n )}\n <DropZone\n data={{\n targetItem: node,\n position: DropZonePosition.After,\n }}\n onDrop={onDrop}\n treeId={treeId}\n />\n </li>\n );\n /* eslint-enable jsx-a11y/anchor-is-valid,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"Node.es.js","sources":["../../../src/components/Tree/Node.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { ReactElement, useLayoutEffect, useRef, useState } from 'react';\nimport { merge } from '@utilities/merge';\nimport { useDrag } from 'react-dnd';\nimport { DropZone, OnDropCallback } from '@components/DropZone';\nimport { TreeFlatListItem } from '@components/Tree';\nimport { DraggableItem, DropZonePosition } from '@utilities/dnd';\nimport { EditableText } from '../EditableText';\nimport { Tooltip, TooltipPosition } from '../Tooltip';\n\nexport type RenderNodeArrayData = Omit<NodeProps, 'isFirst' | 'strong' | 'node'> & {\n nodes: DraggableItem<TreeNodeItem>[];\n};\n\nexport const renderNodeArray = ({\n nodes,\n activeIds,\n treeId,\n onClick,\n onDrop,\n onEditableSave,\n onNodeExpand,\n forceCaret,\n parentIds,\n}: RenderNodeArrayData) =>\n nodes.map((node, i) => (\n <Node\n key={node.id}\n node={node}\n nodeIndex={i}\n activeIds={activeIds}\n onClick={onClick}\n isFirst={i === 0}\n onDrop={onDrop}\n onEditableSave={onEditableSave}\n onNodeExpand={onNodeExpand}\n forceCaret={forceCaret}\n parentIds={parentIds}\n treeId={treeId}\n />\n ));\n\nexport interface TreeNodeItem extends TreeFlatListItem {\n nodes?: DraggableItem<TreeNodeItem>[];\n}\n\ntype NodeProps = {\n node: DraggableItem<TreeNodeItem>;\n strong?: boolean;\n nodeIndex?: number;\n activeIds?: NullableString[];\n parentIds?: string[];\n onClick: (id: NullableString) => void;\n isFirst: boolean;\n treeId: string;\n onDrop?: OnDropCallback<TreeNodeItem>;\n onEditableSave?: (targetItemId: string, value: string) => void;\n forceCaret?: boolean;\n onNodeExpand?: (itemId: string) => void;\n};\n\nconst getInitialShowNodesValue = (\n currentNode: DraggableItem<TreeNodeItem>,\n activeNodeIds?: NullableString[],\n): boolean => {\n const hasActiveChildNodes = (node: DraggableItem<TreeNodeItem>, activeIds?: NullableString[]): boolean => {\n if (node.nodes && activeIds) {\n for (const childNode of node.nodes) {\n if (activeIds.includes(childNode.id) || hasActiveChildNodes(childNode, activeIds)) {\n return true;\n }\n }\n }\n return false;\n };\n\n return hasActiveChildNodes(currentNode, activeNodeIds);\n};\n\nexport const Node = ({\n node,\n strong = false,\n activeIds,\n onClick,\n parentIds = [],\n isFirst,\n onDrop,\n onEditableSave,\n onNodeExpand,\n treeId,\n}: NodeProps): ReactElement<NodeProps> => {\n const { id, value, name, label, icon, nodes, actions, editable, badge, tooltipContent, forceCaret } = node;\n const [{ opacity }, drag] = useDrag({\n item: { id, value, name, label, icon, nodes, actions, editable, badge },\n collect: (monitor) => ({\n opacity: monitor.isDragging() ? 0.4 : 1,\n }),\n type: treeId,\n canDrag: onDrop !== undefined,\n });\n const [showNodes, setShowNodes] = useState(getInitialShowNodesValue(node, activeIds));\n const [isHovered, setIsHovered] = useState(false);\n const selected = activeIds && activeIds.length > 0 && activeIds.includes(id);\n\n const setHoveredTrue = () => setIsHovered(true);\n const setHoveredFalse = () => setIsHovered(false);\n const onNodeClick = () => {\n if (!value) {\n setShowNodes(!showNodes);\n return;\n }\n\n if (onClick) {\n onClick(id);\n }\n };\n\n const [hasBeenExpanded, setHasBeenExpanded] = useState<boolean>(false);\n const toggleNodesVisibility = (event: React.MouseEvent) => {\n if (!hasBeenExpanded) {\n onNodeExpand?.(id);\n }\n setHasBeenExpanded(true);\n\n event.stopPropagation();\n setShowNodes(!showNodes);\n };\n\n const insertBadge = () => {\n return (\n <Tooltip\n disabled={!tooltipContent}\n content={tooltipContent}\n position={TooltipPosition.Right}\n withArrow\n triggerElement={\n <div\n data-test-id=\"node-badge\"\n className={merge([\n 'tw-flex tw-justify-center tw-items-center tw-ml-2 tw-text-text-weak',\n badge?.props.size && 'tw-w-8 tw-h-5 tw-bg-box-neutral tw-rounded-full',\n ])}\n >\n {badge}\n </div>\n }\n />\n );\n };\n\n const nameRef = useRef<HTMLDivElement | null>(null);\n const [isOverflowing, setIsOverflowing] = useState(false);\n\n useLayoutEffect(() => {\n checkIfOverflowing();\n\n window.addEventListener('resize', checkIfOverflowing);\n return () => {\n window.removeEventListener('resize', checkIfOverflowing);\n };\n }, []);\n\n const checkIfOverflowing = () => {\n if (nameRef.current) {\n const isTextOverflowing = nameRef.current.scrollWidth > nameRef.current.clientWidth;\n setIsOverflowing(isTextOverflowing);\n }\n };\n\n /* eslint-disable jsx-a11y/anchor-is-valid,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */\n return (\n <li data-test-id=\"node\" ref={drag} style={{ opacity }}>\n {isFirst && (\n <DropZone\n data={{\n targetItem: node,\n position: DropZonePosition.Before,\n }}\n onDrop={onDrop}\n treeId={treeId}\n />\n )}\n <DropZone\n data={{\n targetItem: node,\n position: DropZonePosition.Within,\n }}\n onDrop={onDrop}\n treeId={treeId}\n >\n <div\n className={merge([\n 'tw-flex tw-py-2 tw-px-2.5 tw-no-underline tw-leading-5 tw-h-10',\n strong && 'tw-font-bold',\n value &&\n !selected &&\n 'tw-text-text hover:tw-bg-box-neutral-hover hover:tw-text-box-neutral-inverse-hover',\n selected &&\n 'tw-font-medium tw-bg-box-selected-strong tw-text-box-selected-strong-inverse hover:tw-bg-box-selected-strong-hover hover:tw-text-box-selected-strong-inverse-hover',\n ])}\n onMouseEnter={setHoveredTrue}\n onMouseLeave={setHoveredFalse}\n >\n <a\n data-test-id=\"node-link\"\n className={merge([\n 'tw-flex tw-items-center tw-flex-grow tw-justify-between tw-cursor-pointer tw-h-6',\n parentIds.length === 1 && 'tw-pl-4',\n parentIds.length > 1 && 'tw-pl-8',\n ])}\n aria-selected={selected}\n onClick={onNodeClick}\n >\n <div className=\"tw-flex tw-flex-1 tw-space-x-1 tw-items-center tw-h-full\">\n <span\n data-test-id=\"toggle\"\n className=\"tw-w-2 tw-h-3 tw-flex tw-items-center tw-justify-center\"\n onClick={toggleNodesVisibility}\n >\n {(nodes || forceCaret) && (\n <div\n className={merge([\n 'tw-transition-transform tw-w-0 tw-h-0 tw-text-black-100 tw-text-opacity-40 tw-font-normal tw-border-t-4 tw-border-t-transparent tw-border-b-4 tw-border-b-transparent tw-border-l-4 tw-border-l-x-strong',\n showNodes ? 'tw-rotate-90' : '',\n selected && 'tw-text-box-selected-strong-inverse',\n ])}\n />\n )}\n </span>\n {icon && <span className=\"tw-flex tw-justify-center tw-items-center tw-w-5\">{icon}</span>}\n {editable && onEditableSave ? (\n <div\n ref={nameRef}\n className=\"tw-relative tw-top-[0.2rem] tw-w-full tw-flex-1 tw-h-full\"\n >\n <EditableText\n options={{\n additionalValues: node.id,\n enableDoubleClick: true,\n isSlimInputField: true,\n removeBoxPadding: true,\n }}\n onAdditionalValueSave={onEditableSave}\n isOverflowing={true}\n >\n <span\n title={isOverflowing ? name : ''}\n className=\"tw-max-w-full tw-absolute tw-top-[-0.08rem] tw-truncate\"\n >\n {name}\n </span>\n </EditableText>\n </div>\n ) : (\n <span\n className=\"tw-flex tw-items-center tw-flex-1 tw-relative tw-h-10\"\n title={isOverflowing ? name : ''}\n data-test-id=\"node-link-name\"\n >\n <span ref={nameRef} className=\"tw-truncate tw-max-w-full tw-absolute\">\n {name}\n </span>\n </span>\n )}\n <span>{badge && insertBadge()}</span>\n </div>\n <div className=\"tw-px-1.5\">\n <span\n data-test-id=\"node-label\"\n className={merge([\n 'tw-text-black-100 tw-text-opacity-40 tw-text-xs tw-font-normal',\n selected && 'tw-text-box-selected-strong-inverse',\n ])}\n >\n {label}\n </span>\n </div>\n </a>\n\n {actions && (\n <div\n className={merge([\n 'tw-flex tw-items-center',\n isHovered || selected ? 'tw-visible tw-space-x-1.5' : 'tw-invisible tw-w-0',\n ])}\n >\n {actions.map((action) => action)}\n </div>\n )}\n </div>\n </DropZone>\n\n {nodes && showNodes && (\n <ul\n className=\"tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left\"\n data-test-id=\"sub-tree\"\n >\n {renderNodeArray({\n nodes,\n treeId,\n activeIds,\n onClick,\n onDrop,\n onEditableSave,\n onNodeExpand,\n parentIds: [...parentIds, id],\n })}\n </ul>\n )}\n <DropZone\n data={{\n targetItem: node,\n position: DropZonePosition.After,\n }}\n onDrop={onDrop}\n treeId={treeId}\n />\n </li>\n );\n /* eslint-enable jsx-a11y/anchor-is-valid,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions,jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions */\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -12,6 +12,7 @@ export interface TreeFlatListItem {
12
12
  tooltipContent?: ReactNode;
13
13
  parentId: NullableString;
14
14
  editable?: boolean;
15
+ forceCaret?: boolean;
15
16
  }
16
17
  export declare type TreeProps = {
17
18
  nodes: DraggableItem<TreeFlatListItem>[];
@@ -19,5 +20,6 @@ export declare type TreeProps = {
19
20
  activeNodeIds: NullableString[];
20
21
  onDragAndDrop?: (itemId: string, parentId: NullableString, positionBeforeId: NullableString) => void;
21
22
  onEditableSave?: (targetItemId: string, value: string) => void;
23
+ onNodeExpand?: (itemId: string) => void;
22
24
  };
23
25
  export declare const Tree: FC<TreeProps>;
@@ -1,8 +1,8 @@
1
- import y, { useState as l, useEffect as k } from "react";
2
- import { renderNodeArray as C } from "./Node.es.js";
3
- import { useId as W } from "@react-aria/utils";
4
- import { DndWrapper as b } from "../../utilities/dnd/DndWrapper.es.js";
5
- import { draggableItemCompareFn as A } from "../../utilities/dnd/draggableItemCompareFn.es.js";
1
+ import E, { useState as l, useEffect as N } from "react";
2
+ import { renderNodeArray as b } from "./Node.es.js";
3
+ import { useId as A } from "@react-aria/utils";
4
+ import { DndWrapper as D } from "../../utilities/dnd/DndWrapper.es.js";
5
+ import { draggableItemCompareFn as H } from "../../utilities/dnd/draggableItemCompareFn.es.js";
6
6
  import { DropZonePosition as p } from "../../utilities/dnd/types.es.js";
7
7
  import "@react-aria/aria-modal-polyfill";
8
8
  import "@react-aria/button";
@@ -1682,65 +1682,69 @@ import "@react-aria/menu";
1682
1682
  import "@react-stately/collections";
1683
1683
  import "@react-stately/tree";
1684
1684
  import "./utils/mocks.es.js";
1685
- import { listToTree as D } from "./utils/listToTree.es.js";
1686
- const VB = ({
1685
+ import { listToTree as P } from "./utils/listToTree.es.js";
1686
+ const YB = ({
1687
1687
  nodes: e,
1688
1688
  onSelect: c,
1689
- activeNodeIds: E,
1689
+ activeNodeIds: k,
1690
1690
  onDragAndDrop: a,
1691
- onEditableSave: f
1691
+ onEditableSave: f,
1692
+ onNodeExpand: w
1692
1693
  }) => {
1693
- const [N, n] = l(!1), [r, w] = l(E), [h, T] = l([]), s = W();
1694
- k(() => {
1695
- const t = D(e);
1694
+ const [h, n] = l(!1), [r, u] = l(k), [x, T] = l([]), s = A();
1695
+ N(() => {
1696
+ const t = P(e);
1696
1697
  T(t);
1697
1698
  }, [e]);
1698
- const x = (t) => {
1699
- if (N) {
1699
+ const L = (t) => {
1700
+ if (h) {
1700
1701
  const o = r.includes(t) ? [...r].filter((i) => i !== t) : [...r, t];
1701
- w(o), c(o);
1702
+ u(o), c(o);
1702
1703
  } else
1703
- w([t]), c([t]);
1704
- }, L = a ? (t, o, i) => {
1705
- const K = () => {
1704
+ u([t]), c([t]);
1705
+ }, M = a ? (t, o, i) => {
1706
+ const B = () => {
1706
1707
  switch (i) {
1707
1708
  case p.After:
1708
1709
  const m = e.filter((d) => d.parentId === t.parentId);
1709
- m.sort(A);
1710
- const v = m.findIndex((d) => d.id === t.id);
1711
- return v === m.length - 1 ? null : m[v + 1].id;
1710
+ m.sort(H);
1711
+ const y = m.findIndex((d) => d.id === t.id);
1712
+ return y === m.length - 1 ? null : m[y + 1].id;
1712
1713
  case p.Before:
1713
1714
  return t.id;
1714
1715
  case p.Within:
1715
1716
  return null;
1716
1717
  }
1717
- }, S = i === p.Within ? t.id : t.parentId, B = K();
1718
- a(o.id, S, B);
1719
- } : void 0, M = f ? (t, o) => {
1718
+ }, C = i === p.Within ? t.id : t.parentId, W = B();
1719
+ a(o.id, C, W);
1720
+ } : void 0, K = f ? (t, o) => {
1720
1721
  f(t, o);
1721
- } : void 0, u = (t) => {
1722
+ } : void 0, S = w ? (t) => {
1723
+ w(t);
1724
+ } : void 0, v = (t) => {
1722
1725
  t.key === "Meta" || t.ctrlKey ? n(!0) : n(!1);
1723
1726
  }, I = (t) => {
1724
1727
  (t.key === "Meta" || t.ctrlKey) && n(!1);
1725
1728
  };
1726
- return k(() => (window.addEventListener("keydown", u), window.addEventListener("keyup", I), () => {
1727
- window.removeEventListener("keydown", u), window.removeEventListener("keyup", I);
1728
- }), []), /* @__PURE__ */ y.createElement("ul", {
1729
+ return N(() => (window.addEventListener("keydown", v), window.addEventListener("keyup", I), () => {
1730
+ window.removeEventListener("keydown", v), window.removeEventListener("keyup", I);
1731
+ }), []), /* @__PURE__ */ E.createElement("ul", {
1729
1732
  id: s,
1730
1733
  "data-test-id": "tree",
1731
1734
  className: "tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left tw-text-sm tw-select-none"
1732
- }, /* @__PURE__ */ y.createElement(b, {
1735
+ }, /* @__PURE__ */ E.createElement(D, {
1733
1736
  id: s
1734
- }, C({
1735
- nodes: h,
1737
+ }, b({
1738
+ nodes: x,
1736
1739
  treeId: s,
1737
1740
  activeIds: r,
1738
- onClick: x,
1739
- onDrop: L,
1740
- onEditableSave: M
1741
+ onClick: L,
1742
+ onDrop: M,
1743
+ onEditableSave: K,
1744
+ onNodeExpand: S
1741
1745
  })));
1742
1746
  };
1743
1747
  export {
1744
- VB as Tree
1748
+ YB as Tree
1745
1749
  };
1746
1750
  //# sourceMappingURL=Tree.es.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.es.js","sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { FC, ReactElement, ReactNode, useEffect, useState } from 'react';\nimport { renderNodeArray } from './Node';\nimport { useId } from '@react-aria/utils';\nimport { DndWrapper, DraggableItem, DropZonePosition, draggableItemCompareFn } from '@utilities/dnd';\nimport { listToTree } from '@components/Tree/utils';\nimport { IconProps } from '@foundation/Icon';\nimport { BadgeProps } from '..';\n\nexport interface TreeFlatListItem {\n name: string;\n icon?: ReactElement<IconProps>;\n label?: string;\n value?: string;\n actions?: React.ReactNode[];\n badge?: ReactElement<IconProps> | ReactElement<BadgeProps>;\n tooltipContent?: ReactNode;\n parentId: NullableString;\n editable?: boolean;\n}\n\nexport type TreeProps = {\n nodes: DraggableItem<TreeFlatListItem>[];\n onSelect: (ids: NullableString[]) => void;\n activeNodeIds: NullableString[];\n onDragAndDrop?: (itemId: string, parentId: NullableString, positionBeforeId: NullableString) => void;\n onEditableSave?: (targetItemId: string, value: string) => void;\n};\n\nexport const Tree: FC<TreeProps> = ({\n nodes,\n onSelect,\n activeNodeIds: initialActiveNodeIds,\n onDragAndDrop,\n onEditableSave,\n}) => {\n const [multiSelectMode, setMultiSelectMode] = useState<boolean>(false);\n const [activeIds, setActiveIds] = useState<NullableString[]>(initialActiveNodeIds);\n const [treeNodes, setTreeNodes] = useState<DraggableItem<TreeFlatListItem>[]>([]);\n const treeId = useId();\n\n useEffect(() => {\n const listToTreeNodes = listToTree(nodes);\n setTreeNodes(listToTreeNodes);\n }, [nodes]);\n\n const onNodeClick = (id: NullableString) => {\n if (multiSelectMode) {\n const modifiedSelectedIds: NullableString[] = activeIds.includes(id)\n ? [...activeIds].filter((i) => i !== id)\n : [...activeIds, id];\n\n setActiveIds(modifiedSelectedIds);\n onSelect(modifiedSelectedIds);\n } else {\n setActiveIds([id]);\n onSelect([id]);\n }\n };\n\n const handleDrop = onDragAndDrop\n ? (\n targetItem: DraggableItem<TreeFlatListItem>,\n sourceItem: DraggableItem<TreeFlatListItem>,\n position: DropZonePosition,\n ) => {\n const getPositionBeforeId = () => {\n switch (position) {\n case DropZonePosition.After:\n const sameLevelNodes = nodes.filter((node) => node.parentId === targetItem.parentId);\n sameLevelNodes.sort(draggableItemCompareFn);\n const targetItemIndex = sameLevelNodes.findIndex((item) => item.id === targetItem.id);\n if (targetItemIndex === sameLevelNodes.length - 1) {\n return null;\n } else {\n return sameLevelNodes[targetItemIndex + 1].id;\n }\n case DropZonePosition.Before:\n return targetItem.id;\n case DropZonePosition.Within:\n return null;\n }\n };\n\n const parentId = position === DropZonePosition.Within ? targetItem.id : targetItem.parentId;\n const positionBeforeId = getPositionBeforeId();\n onDragAndDrop(sourceItem.id, parentId, positionBeforeId);\n }\n : undefined;\n\n const handleEditableSave = onEditableSave\n ? (targetItemId: string, value: string) => {\n onEditableSave(targetItemId, value);\n }\n : undefined;\n\n const downKeyHandler = (event: KeyboardEvent) => {\n if (event.key === 'Meta' || event.ctrlKey) {\n setMultiSelectMode(true);\n } else {\n setMultiSelectMode(false);\n }\n };\n\n const upKeyHandler = (event: KeyboardEvent) => {\n if (event.key === 'Meta' || event.ctrlKey) {\n setMultiSelectMode(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', downKeyHandler);\n window.addEventListener('keyup', upKeyHandler);\n\n return () => {\n window.removeEventListener('keydown', downKeyHandler);\n window.removeEventListener('keyup', upKeyHandler);\n };\n }, []);\n\n return (\n <ul\n id={treeId}\n data-test-id=\"tree\"\n className=\"tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left tw-text-sm tw-select-none\"\n >\n <DndWrapper id={treeId}>\n {renderNodeArray({\n nodes: treeNodes,\n treeId,\n activeIds,\n onClick: onNodeClick,\n onDrop: handleDrop,\n onEditableSave: handleEditableSave,\n })}\n </DndWrapper>\n </ul>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"Tree.es.js","sources":["../../../src/components/Tree/Tree.tsx"],"sourcesContent":["/* (c) Copyright Frontify Ltd., all rights reserved. */\n\nimport React, { FC, ReactElement, ReactNode, useEffect, useState } from 'react';\nimport { renderNodeArray } from './Node';\nimport { useId } from '@react-aria/utils';\nimport { DndWrapper, DraggableItem, DropZonePosition, draggableItemCompareFn } from '@utilities/dnd';\nimport { listToTree } from '@components/Tree/utils';\nimport { IconProps } from '@foundation/Icon';\nimport { BadgeProps } from '..';\n\nexport interface TreeFlatListItem {\n name: string;\n icon?: ReactElement<IconProps>;\n label?: string;\n value?: string;\n actions?: React.ReactNode[];\n badge?: ReactElement<IconProps> | ReactElement<BadgeProps>;\n tooltipContent?: ReactNode;\n parentId: NullableString;\n editable?: boolean;\n forceCaret?: boolean;\n}\n\nexport type TreeProps = {\n nodes: DraggableItem<TreeFlatListItem>[];\n onSelect: (ids: NullableString[]) => void;\n activeNodeIds: NullableString[];\n onDragAndDrop?: (itemId: string, parentId: NullableString, positionBeforeId: NullableString) => void;\n onEditableSave?: (targetItemId: string, value: string) => void;\n onNodeExpand?: (itemId: string) => void;\n};\n\nexport const Tree: FC<TreeProps> = ({\n nodes,\n onSelect,\n activeNodeIds: initialActiveNodeIds,\n onDragAndDrop,\n onEditableSave,\n onNodeExpand,\n}) => {\n const [multiSelectMode, setMultiSelectMode] = useState<boolean>(false);\n const [activeIds, setActiveIds] = useState<NullableString[]>(initialActiveNodeIds);\n const [treeNodes, setTreeNodes] = useState<DraggableItem<TreeFlatListItem>[]>([]);\n const treeId = useId();\n\n useEffect(() => {\n const listToTreeNodes = listToTree(nodes);\n setTreeNodes(listToTreeNodes);\n }, [nodes]);\n\n const onNodeClick = (id: NullableString) => {\n if (multiSelectMode) {\n const modifiedSelectedIds: NullableString[] = activeIds.includes(id)\n ? [...activeIds].filter((i) => i !== id)\n : [...activeIds, id];\n\n setActiveIds(modifiedSelectedIds);\n onSelect(modifiedSelectedIds);\n } else {\n setActiveIds([id]);\n onSelect([id]);\n }\n };\n\n const handleDrop = onDragAndDrop\n ? (\n targetItem: DraggableItem<TreeFlatListItem>,\n sourceItem: DraggableItem<TreeFlatListItem>,\n position: DropZonePosition,\n ) => {\n const getPositionBeforeId = () => {\n switch (position) {\n case DropZonePosition.After:\n const sameLevelNodes = nodes.filter((node) => node.parentId === targetItem.parentId);\n sameLevelNodes.sort(draggableItemCompareFn);\n const targetItemIndex = sameLevelNodes.findIndex((item) => item.id === targetItem.id);\n if (targetItemIndex === sameLevelNodes.length - 1) {\n return null;\n } else {\n return sameLevelNodes[targetItemIndex + 1].id;\n }\n case DropZonePosition.Before:\n return targetItem.id;\n case DropZonePosition.Within:\n return null;\n }\n };\n\n const parentId = position === DropZonePosition.Within ? targetItem.id : targetItem.parentId;\n const positionBeforeId = getPositionBeforeId();\n onDragAndDrop(sourceItem.id, parentId, positionBeforeId);\n }\n : undefined;\n\n const handleEditableSave = onEditableSave\n ? (targetItemId: string, value: string) => {\n onEditableSave(targetItemId, value);\n }\n : undefined;\n\n const handleNodeExpand = onNodeExpand\n ? (itemId: string) => {\n onNodeExpand(itemId);\n }\n : undefined;\n\n const downKeyHandler = (event: KeyboardEvent) => {\n if (event.key === 'Meta' || event.ctrlKey) {\n setMultiSelectMode(true);\n } else {\n setMultiSelectMode(false);\n }\n };\n\n const upKeyHandler = (event: KeyboardEvent) => {\n if (event.key === 'Meta' || event.ctrlKey) {\n setMultiSelectMode(false);\n }\n };\n\n useEffect(() => {\n window.addEventListener('keydown', downKeyHandler);\n window.addEventListener('keyup', upKeyHandler);\n\n return () => {\n window.removeEventListener('keydown', downKeyHandler);\n window.removeEventListener('keyup', upKeyHandler);\n };\n }, []);\n\n return (\n <ul\n id={treeId}\n data-test-id=\"tree\"\n className=\"tw-p-0 tw-m-0 tw-font-sans tw-font-normal tw-list-none tw-text-left tw-text-sm tw-select-none\"\n >\n <DndWrapper id={treeId}>\n {renderNodeArray({\n nodes: treeNodes,\n treeId,\n activeIds,\n onClick: onNodeClick,\n onDrop: handleDrop,\n onEditableSave: handleEditableSave,\n onNodeExpand: handleNodeExpand,\n })}\n </DndWrapper>\n </ul>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -21,6 +21,7 @@ export * from './FormControl';
21
21
  export * from './FrontifyPattern';
22
22
  export * from './InputLabel';
23
23
  export * from './LinkChooser';
24
+ export * from './LoadingBar';
24
25
  export * from './LoadingCircle';
25
26
  export * from './MenuItem';
26
27
  export * from './Modal';
@@ -42,3 +43,4 @@ export * from './TooltipIcon';
42
43
  export * from './Tree';
43
44
  export * from './Trigger';
44
45
  export * from './EditableText';
46
+ export * from './OverflowMenu';