@eightshift/ui-components 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/{Dialog-DSquJZb-.js → Dialog-BdtBguys.js} +1 -1
  2. package/dist/Heading-DGnF6JDc.js +17 -0
  3. package/dist/List-Bx2anbX-.js +583 -0
  4. package/dist/{RSPContexts-DQtGvvpM.js → RSPContexts-2lR5GG9p.js} +2 -2
  5. package/dist/{Select-49a62830.esm-D8voKavK.js → Select-c7902d94.esm-DtzFQzf-.js} +6 -4
  6. package/dist/assets/style.css +1 -1
  7. package/dist/components/animated-visibility/animated-visibility.js +139 -118
  8. package/dist/components/checkbox/checkbox.js +1 -1
  9. package/dist/components/color-pickers/color-picker.js +18 -11
  10. package/dist/components/color-pickers/solid-color-picker.js +1 -1
  11. package/dist/components/component-toggle/component-toggle.js +44 -4
  12. package/dist/components/draggable/draggable-handle.js +45 -0
  13. package/dist/components/draggable/draggable.js +5138 -96
  14. package/dist/components/draggable-list/draggable-list-item.js +16 -25
  15. package/dist/components/draggable-list/draggable-list.js +54 -86
  16. package/dist/components/expandable/expandable.js +63 -40
  17. package/dist/components/index.js +6 -4
  18. package/dist/components/link-input/link-input.js +2 -2
  19. package/dist/components/menu/menu.js +2 -2
  20. package/dist/components/modal/modal.js +4 -15
  21. package/dist/components/options-panel/options-panel.js +55 -1
  22. package/dist/components/popover/popover.js +1 -1
  23. package/dist/components/repeater/repeater-item.js +76 -27
  24. package/dist/components/repeater/repeater.js +72 -5110
  25. package/dist/components/select/async-multi-select.js +1 -1
  26. package/dist/components/select/async-single-select.js +1 -1
  27. package/dist/components/select/multi-select.js +1 -1
  28. package/dist/components/select/single-select.js +1 -1
  29. package/dist/components/select/styles.js +1 -1
  30. package/dist/icons/jsx-svg.js +1 -1
  31. package/dist/index.js +6 -4
  32. package/dist/{react-jsx-parser.min-CAGfntg1.js → react-jsx-parser.min-sPC96O_U.js} +124 -85
  33. package/dist/{react-select-async.esm-DY-cP0QK.js → react-select-async.esm-CxA8wpeT.js} +1 -1
  34. package/dist/{react-select.esm-DNlXj0hV.js → react-select.esm-CeE7o5M9.js} +1 -1
  35. package/dist/{useMenuTrigger-BbwpSVmh.js → useMenuTrigger-CT2-BFLo.js} +1 -1
  36. package/package.json +14 -14
  37. package/dist/components/draggable/draggable-item.js +0 -66
  38. package/dist/swapy-qb4t7itb.js +0 -3059
@@ -1,5 +1,6 @@
1
- import { jsx, Fragment, jsxs } from "react/jsx-runtime";
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
2
  import { Button } from "../button/button.js";
3
+ import { Menu, MenuSeparator, MenuItem } from "../menu/menu.js";
3
4
  import { icons } from "../../icons/icons.js";
4
5
  import { c as clsx } from "../../lite-DVmmD_-j.js";
5
6
  import { useContext } from "react";
@@ -17,6 +18,8 @@ import { RepeaterContext } from "./repeater-context.js";
17
18
  * @param {JSX.Element|JSX.Element[]} [props.actions] - Actions to display to the right of the label.
18
19
  * @param {string} [props.textValue] - The text value of the item.
19
20
  * @param {string} [props.className] - Classes to pass to the item.
21
+ * @param {JSX.Element|JSX.Element[]} [props.menuOptions] - Additional menu options to display next to the expand button.
22
+ * @param {bool} [props.noMenuButton] - If `true`, the menu button next to the expand button is not displayed.
20
23
  * @param {bool} [props.expandDisabled] - If `true`, the item cannot be expanded.
21
24
  *
22
25
  * @returns {JSX.Element} The RepeaterItem component.
@@ -26,37 +29,83 @@ import { RepeaterContext } from "./repeater-context.js";
26
29
  * @preserve
27
30
  */
28
31
  const RepeaterItem = (props) => {
29
- const { children, icon, label, subtitle, "aria-label": ariaLabel, className, actions, textValue, expandDisabled, ...rest } = props;
30
- const { canDelete, handleOpenChange, deleteItem, isDragSource } = useContext(RepeaterContext);
31
- return /* @__PURE__ */ jsx(Fragment, { children: /* @__PURE__ */ jsx(
32
+ const { children, icon, label, subtitle, "aria-label": ariaLabel, className, actions, textValue, expandDisabled, menuOptions, noMenuButton, ...rest } = props;
33
+ const { deleteItem, duplicateItem, isDragged, isOutOfBounds, isSelected, canDelete, canAdd } = useContext(RepeaterContext);
34
+ return /* @__PURE__ */ jsx(
32
35
  Expandable,
33
36
  {
34
- disabled: canDelete,
35
- icon,
36
- label,
37
- subtitle,
38
- className: clsx(isDragSource && "es-uic-border es-uic-border-gray-100 es-uic-bg-white/50 es-uic-shadow-md es-uic-backdrop-blur-lg"),
39
- labelClassName: className,
40
- onOpenChange: (isOpen) => handleOpenChange(isOpen),
41
- actions: /* @__PURE__ */ jsxs(Fragment, { children: [
42
- actions,
43
- /* @__PURE__ */ jsx(
44
- Button,
45
- {
46
- hidden: !canDelete,
47
- ariaLabel: __("Remove item", "eightshift-ui-components"),
48
- size: "small",
49
- type: "ghost",
50
- icon: icons.trash,
51
- onPress: () => deleteItem(),
52
- className: "es-uic-translate-x-px"
53
- }
54
- )
55
- ] }),
37
+ icon: isOutOfBounds ? icons.trash : icon,
38
+ label: isOutOfBounds ? __("Release to delete", "eightshift-ui-components") : label,
39
+ subtitle: isOutOfBounds ? null : subtitle,
40
+ className: clsx(
41
+ "es-uic-transition",
42
+ isDragged && "es-uic-border es-uic-border-gray-100 es-uic-bg-white/50 es-uic-shadow-md es-uic-backdrop-blur-lg",
43
+ isOutOfBounds && "es-uic-border !es-uic-border-red-200 es-uic-bg-red-50 es-uic-shadow-red-500/20 [&_button]:es-uic-invisible [&_svg_path]:es-uic-stroke-red-500"
44
+ ),
45
+ labelClassName: clsx(className, isDragged ? "es-uic-cursor-grabbing" : "es-uic-cursor-grab"),
46
+ headerClassName: clsx(
47
+ "es-uic-transition es-uic-rounded-md",
48
+ isSelected && "es-uic-bg-teal-50 es-uic-border-teal-100",
49
+ "group-focus:es-uic-outline-none group-focus-visible:es-uic-ring group-focus-visible:es-uic-ring-teal-500 group-focus-visible:es-uic-ring-opacity-50"
50
+ ),
51
+ customOpenButton: ({ open, toggleOpen, tooltip, disabled }) => {
52
+ return /* @__PURE__ */ jsxs("div", { className: "es-uic-flex es-uic-items-center es-uic-gap-px", children: [
53
+ /* @__PURE__ */ jsxs(
54
+ Menu,
55
+ {
56
+ hidden: noMenuButton,
57
+ triggerIcon: icons.moreH,
58
+ triggerProps: {
59
+ className: "[&>svg]:es-uic-size-5 [&>svg]:es-uic-shrink-0",
60
+ size: "small",
61
+ type: "ghost"
62
+ },
63
+ tooltip: __("More options", "eightshift-ui-components"),
64
+ children: [
65
+ menuOptions,
66
+ menuOptions && /* @__PURE__ */ jsx(MenuSeparator, {}),
67
+ /* @__PURE__ */ jsx(
68
+ MenuItem,
69
+ {
70
+ disabled: !canAdd,
71
+ icon: icons.copy,
72
+ onPress: () => duplicateItem(),
73
+ children: __("Duplicate", "eightshift-ui-components")
74
+ }
75
+ ),
76
+ /* @__PURE__ */ jsx(
77
+ MenuItem,
78
+ {
79
+ disabled: !canDelete,
80
+ icon: icons.trash,
81
+ onPress: () => deleteItem(),
82
+ children: __("Remove", "eightshift-ui-components")
83
+ }
84
+ )
85
+ ]
86
+ }
87
+ ),
88
+ /* @__PURE__ */ jsx(
89
+ Button,
90
+ {
91
+ type: "ghost",
92
+ icon: open ? icons.caretDownFill : icons.caretDown,
93
+ onPress: toggleOpen,
94
+ tooltip,
95
+ disabled,
96
+ className: clsx("[&>svg]:es-uic-size-5 [&>svg]:es-uic-transition-transform", open && "[&>svg]:-es-uic-scale-y-100"),
97
+ size: "small"
98
+ }
99
+ )
100
+ ] });
101
+ },
102
+ actions,
103
+ headerProps: { "data-movable-handle": true },
56
104
  noFocusHandling: true,
105
+ ...rest,
57
106
  children
58
107
  }
59
- ) });
108
+ );
60
109
  };
61
110
  export {
62
111
  RepeaterItem