@carbon/ibm-products 2.96.0 → 2.97.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 (106) hide show
  1. package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +6383 -0
  2. package/css/index-full-carbon.css +72 -20
  3. package/css/index-full-carbon.css.map +1 -1
  4. package/css/index-full-carbon.min.css +1 -1
  5. package/css/index-full-carbon.min.css.map +1 -1
  6. package/css/index-without-carbon-released-only.css +5 -1
  7. package/css/index-without-carbon-released-only.css.map +1 -1
  8. package/css/index-without-carbon-released-only.min.css +1 -1
  9. package/css/index-without-carbon-released-only.min.css.map +1 -1
  10. package/css/index-without-carbon.css +72 -20
  11. package/css/index-without-carbon.css.map +1 -1
  12. package/css/index-without-carbon.min.css +1 -1
  13. package/css/index-without-carbon.min.css.map +1 -1
  14. package/css/index.css +72 -20
  15. package/css/index.css.map +1 -1
  16. package/css/index.min.css +1 -1
  17. package/css/index.min.css.map +1 -1
  18. package/es/components/AddSelect/next/AddSelectBody.d.ts +3 -1
  19. package/es/components/AddSelect/next/AddSelectBody.d.ts.map +1 -1
  20. package/es/components/AddSelect/next/AddSelectBody.js +14 -10
  21. package/es/components/AddSelect/next/AddSelectColumn.d.ts +3 -2
  22. package/es/components/AddSelect/next/AddSelectColumn.d.ts.map +1 -1
  23. package/es/components/AddSelect/next/AddSelectColumn.js +10 -5
  24. package/es/components/AddSelect/next/AddSelectItemPanel.d.ts +7 -0
  25. package/es/components/AddSelect/next/AddSelectItemPanel.d.ts.map +1 -1
  26. package/es/components/AddSelect/next/AddSelectItemPanel.js +7 -7
  27. package/es/components/AddSelect/next/AddSelectRow.d.ts +6 -0
  28. package/es/components/AddSelect/next/AddSelectRow.d.ts.map +1 -1
  29. package/es/components/AddSelect/next/AddSelectRow.js +4 -2
  30. package/es/components/AddSelect/next/AddSelectSelectionSummary.d.ts +34 -45
  31. package/es/components/AddSelect/next/AddSelectSelectionSummary.d.ts.map +1 -1
  32. package/es/components/AddSelect/next/AddSelectSelectionSummary.js +33 -45
  33. package/es/components/AddSelect/next/AddSelectSelectionSummaryItem.d.ts.map +1 -1
  34. package/es/components/AddSelect/next/AddSelectSelectionSummaryItem.js +5 -7
  35. package/es/components/AddSelect/next/context.d.ts +10 -2
  36. package/es/components/AddSelect/next/context.d.ts.map +1 -1
  37. package/es/components/AddSelect/next/context.js +1 -4
  38. package/es/components/Card/next/Card.stories.internal.d.ts +114 -0
  39. package/es/components/Card/next/Card.stories.internal.d.ts.map +1 -0
  40. package/es/components/CreateModal/CreateModal.d.ts +3 -0
  41. package/es/components/CreateModal/CreateModal.d.ts.map +1 -1
  42. package/es/components/CreateModal/CreateModal.js +8 -0
  43. package/es/components/CreateSidePanel/CreateSidePanel.d.ts +1 -0
  44. package/es/components/CreateSidePanel/CreateSidePanel.d.ts.map +1 -1
  45. package/es/components/CreateSidePanel/CreateSidePanel.js +6 -0
  46. package/es/components/ExpressiveCard/ExpressiveCard.d.ts +1 -2
  47. package/es/components/ExpressiveCard/ExpressiveCard.d.ts.map +1 -1
  48. package/es/components/ExpressiveCard/ExpressiveCard.js +1 -2
  49. package/es/components/PageHeader/next/PageHeaderContent.d.ts +4 -0
  50. package/es/components/PageHeader/next/PageHeaderContent.d.ts.map +1 -1
  51. package/es/components/PageHeader/next/PageHeaderContent.js +19 -20
  52. package/es/components/RemoveModal/RemoveModal.d.ts +3 -0
  53. package/es/components/RemoveModal/RemoveModal.d.ts.map +1 -1
  54. package/es/components/RemoveModal/RemoveModal.js +8 -0
  55. package/es/components/UserAvatar/UserAvatar.d.ts +2 -3
  56. package/es/components/UserAvatar/UserAvatar.d.ts.map +1 -1
  57. package/es/components/UserAvatar/UserAvatar.js +13 -2
  58. package/es/components/index.d.ts +1 -1
  59. package/es/components/index.d.ts.map +1 -1
  60. package/lib/components/AddSelect/next/AddSelectBody.d.ts +3 -1
  61. package/lib/components/AddSelect/next/AddSelectBody.d.ts.map +1 -1
  62. package/lib/components/AddSelect/next/AddSelectBody.js +12 -8
  63. package/lib/components/AddSelect/next/AddSelectColumn.d.ts +3 -2
  64. package/lib/components/AddSelect/next/AddSelectColumn.d.ts.map +1 -1
  65. package/lib/components/AddSelect/next/AddSelectColumn.js +10 -5
  66. package/lib/components/AddSelect/next/AddSelectItemPanel.d.ts +7 -0
  67. package/lib/components/AddSelect/next/AddSelectItemPanel.d.ts.map +1 -1
  68. package/lib/components/AddSelect/next/AddSelectItemPanel.js +7 -7
  69. package/lib/components/AddSelect/next/AddSelectRow.d.ts +6 -0
  70. package/lib/components/AddSelect/next/AddSelectRow.d.ts.map +1 -1
  71. package/lib/components/AddSelect/next/AddSelectRow.js +6 -2
  72. package/lib/components/AddSelect/next/AddSelectSelectionSummary.d.ts +34 -45
  73. package/lib/components/AddSelect/next/AddSelectSelectionSummary.d.ts.map +1 -1
  74. package/lib/components/AddSelect/next/AddSelectSelectionSummary.js +33 -45
  75. package/lib/components/AddSelect/next/AddSelectSelectionSummaryItem.d.ts.map +1 -1
  76. package/lib/components/AddSelect/next/AddSelectSelectionSummaryItem.js +5 -7
  77. package/lib/components/AddSelect/next/context.d.ts +10 -2
  78. package/lib/components/AddSelect/next/context.d.ts.map +1 -1
  79. package/lib/components/AddSelect/next/context.js +1 -4
  80. package/lib/components/Card/next/Card.stories.internal.d.ts +114 -0
  81. package/lib/components/Card/next/Card.stories.internal.d.ts.map +1 -0
  82. package/lib/components/CreateModal/CreateModal.d.ts +3 -0
  83. package/lib/components/CreateModal/CreateModal.d.ts.map +1 -1
  84. package/lib/components/CreateModal/CreateModal.js +8 -0
  85. package/lib/components/CreateSidePanel/CreateSidePanel.d.ts +1 -0
  86. package/lib/components/CreateSidePanel/CreateSidePanel.d.ts.map +1 -1
  87. package/lib/components/CreateSidePanel/CreateSidePanel.js +6 -0
  88. package/lib/components/ExpressiveCard/ExpressiveCard.d.ts +1 -2
  89. package/lib/components/ExpressiveCard/ExpressiveCard.d.ts.map +1 -1
  90. package/lib/components/ExpressiveCard/ExpressiveCard.js +1 -2
  91. package/lib/components/PageHeader/next/PageHeaderContent.d.ts +4 -0
  92. package/lib/components/PageHeader/next/PageHeaderContent.d.ts.map +1 -1
  93. package/lib/components/PageHeader/next/PageHeaderContent.js +17 -18
  94. package/lib/components/RemoveModal/RemoveModal.d.ts +3 -0
  95. package/lib/components/RemoveModal/RemoveModal.d.ts.map +1 -1
  96. package/lib/components/RemoveModal/RemoveModal.js +8 -0
  97. package/lib/components/UserAvatar/UserAvatar.d.ts +2 -3
  98. package/lib/components/UserAvatar/UserAvatar.d.ts.map +1 -1
  99. package/lib/components/UserAvatar/UserAvatar.js +13 -2
  100. package/lib/components/index.d.ts +1 -1
  101. package/lib/components/index.d.ts.map +1 -1
  102. package/package.json +6 -6
  103. package/scss/components/AddSelect/_add-select_next.scss +81 -18
  104. package/scss/components/PageHeader/_page-header.scss +2 -1
  105. package/scss/components/Tearsheet/_tearsheet.scss +3 -0
  106. package/telemetry.yml +16 -3
@@ -49,7 +49,9 @@ export interface AddSelectBodyProps {
49
49
  title: string;
50
50
  }>;
51
51
  /**
52
- * Callback when search term changes
52
+ * Called when the global search input value changes.
53
+ * Intended to filter across ALL columns/rows in the Body.
54
+ * Independent of any per-column search in AddSelectColumn.
53
55
  */
54
56
  onSearch?: (searchTerm: string) => void;
55
57
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"AddSelectBody.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectBody.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAOV,MAAM,OAAO,CAAC;AAGf,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAGvB;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAChB,WAAW,EACX,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAC5D,CAAC;IACF;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IAC/D;;OAEG;IACH,eAAe,CAAC,EAAE,IAAI,CACpB,eAAe,EACf,iBAAiB,GAAG,WAAW,GAAG,UAAU,CAC7C,CAAC;IACF;;OAEG;IACH,mBAAmB,CAAC,EAAE,IAAI,CACxB,mBAAmB,EACnB,KAAK,GAAG,eAAe,GAAG,UAAU,CACrC,CAAC;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;CACnE;AAED,QAAA,MAAM,aAAa,2FA2QlB,CAAC;AAyCF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"AddSelectBody.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectBody.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAMV,MAAM,OAAO,CAAC;AAGf,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,eAAe,CAAC;AAGvB;;;;GAIG;AAEH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACnC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC;;OAEG;IACH,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAChB,WAAW,EACX,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAC5D,CAAC;IACF;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IAC/D;;OAEG;IACH,eAAe,CAAC,EAAE,IAAI,CACpB,eAAe,EACf,iBAAiB,GAAG,WAAW,GAAG,UAAU,CAC7C,CAAC;IACF;;OAEG;IACH,mBAAmB,CAAC,EAAE,IAAI,CACxB,mBAAmB,EACnB,KAAK,GAAG,eAAe,GAAG,UAAU,CACrC,CAAC;IACF;;OAEG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC,CAAC;CACnE;AAED,QAAA,MAAM,aAAa,2FAgRlB,CAAC;AAyCF,eAAe,aAAa,CAAC"}
@@ -7,8 +7,8 @@
7
7
 
8
8
  import { __toESM } from "../../../_virtual/_rolldown/runtime.js";
9
9
  import { require_classnames } from "../../../node_modules/classnames/index.js";
10
- import { AddSelectContext, blockClass } from "./context.js";
11
- import React, { forwardRef, useContext, useEffect, useRef, useState } from "react";
10
+ import { blockClass } from "./context.js";
11
+ import React, { forwardRef, useEffect, useRef, useState } from "react";
12
12
  import PropTypes from "prop-types";
13
13
  import { Breadcrumb, BreadcrumbItem, Link, Search, Tag } from "@carbon/react";
14
14
  //#region src/components/AddSelect/next/AddSelectBody.tsx
@@ -20,13 +20,14 @@ import { Breadcrumb, BreadcrumbItem, Link, Search, Tag } from "@carbon/react";
20
20
  */
21
21
  var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
22
22
  const AddSelectBody = forwardRef(({ children, className, layout = "vertical", itemsLabel = "", globalSearchLabel = "Search", globalSearchPlaceholder = "Search", searchResultsTitle = "Search results", itemCount, path = [], onSearch, onBreadcrumbClick, headerContent, actionsSlot, subHeaderActions, hideSearch = false, searchProps, tagProps, breadcrumbProps, breadcrumbItemProps, linkProps, ...rest }, ref) => {
23
- const { multi } = useContext(AddSelectContext);
24
- const [searchTerm, setSearchTerm] = useState("");
23
+ const [globalSearchTerm, setGlobalSearchTerm] = useState("");
25
24
  const listRef = useRef(null);
26
25
  const focusedIndexRef = useRef(0);
26
+ const rowsCacheRef = useRef(null);
27
27
  const getItems = () => {
28
28
  if (!listRef.current) return [];
29
- return Array.from(listRef.current.querySelectorAll("[role=\"row\"]"));
29
+ if (rowsCacheRef.current === null) rowsCacheRef.current = Array.from(listRef.current.querySelectorAll("[role=\"row\"]"));
30
+ return rowsCacheRef.current;
30
31
  };
31
32
  const updateItemFocus = (focusIndex, shouldFocus = true) => {
32
33
  const items = getItems();
@@ -86,11 +87,12 @@ const AddSelectBody = forwardRef(({ children, className, layout = "vertical", it
86
87
  if (handled) event.stopPropagation();
87
88
  };
88
89
  useEffect(() => {
90
+ rowsCacheRef.current = null;
89
91
  updateItemFocus(0, false);
90
92
  }, [children]);
91
93
  const handleSearch = (event) => {
92
94
  const value = event.target.value;
93
- setSearchTerm(value);
95
+ setGlobalSearchTerm(value);
94
96
  onSearch?.(value);
95
97
  };
96
98
  const bodyClasses = (0, import_classnames.default)(`${blockClass}__body`, className);
@@ -103,9 +105,9 @@ const AddSelectBody = forwardRef(({ children, className, layout = "vertical", it
103
105
  placeholder: globalSearchPlaceholder,
104
106
  size: "lg",
105
107
  onChange: handleSearch,
106
- value: searchTerm,
108
+ value: globalSearchTerm,
107
109
  ...searchProps
108
- })), actionsSlot && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__global-actions` }, actionsSlot)), /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__sub-header` }, /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__tags` }, searchTerm ? /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__tags-label` }, searchResultsTitle) : path && path.length > 0 ? /* @__PURE__ */ React.createElement(Breadcrumb, {
110
+ })), actionsSlot && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__global-actions` }, actionsSlot)), /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__sub-header` }, /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__tags` }, globalSearchTerm ? /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__tags-label` }, searchResultsTitle) : path && path.length > 0 ? /* @__PURE__ */ React.createElement(Breadcrumb, {
109
111
  noTrailingSlash: true,
110
112
  className: `${blockClass}__breadcrumbs`,
111
113
  ...breadcrumbProps
@@ -131,10 +133,12 @@ const AddSelectBody = forwardRef(({ children, className, layout = "vertical", it
131
133
  className: `${blockClass}__content`,
132
134
  ref: listRef,
133
135
  role: "grid",
134
- "aria-multiselectable": multi,
135
136
  tabIndex: 0,
136
137
  onKeyDown: handleKeyDown
137
- }, /* @__PURE__ */ React.createElement("div", { className: (0, import_classnames.default)(`${blockClass}-list-body`, { [`${blockClass}-list-body--horizontal`]: layout === "horizontal" }) }, children)));
138
+ }, /* @__PURE__ */ React.createElement("div", {
139
+ className: (0, import_classnames.default)(`${blockClass}-list-body`, { [`${blockClass}-list-body--horizontal`]: layout === "horizontal" }),
140
+ role: "rowgroup"
141
+ }, children)));
138
142
  });
139
143
  AddSelectBody.propTypes = {
140
144
  actionsSlot: PropTypes.node,
@@ -32,9 +32,10 @@ export interface AddSelectColumnProps {
32
32
  */
33
33
  searchPlaceholder?: string;
34
34
  /**
35
- * Callback when search value changes
35
+ * Called when this column's local search input changes.
36
+ * Scoped to this column only — independent of AddSelectBody's global search.
36
37
  */
37
- onSearch?: (value: string) => void;
38
+ onSearch?: (columnSearchTerm: string) => void;
38
39
  /**
39
40
  * Actions slot - adds custom actions (filter/sort) next to search
40
41
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AddSelectColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectColumn.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAGV,MAAM,OAAO,CAAC;AAGf,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAGvB;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAChB,WAAW,EACX,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAC5D,CAAC;IACF;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IAC/D;;OAEG;IACH,sBAAsB,CAAC,EAAE,IAAI,CAC3B,aAAa,EACb,IAAI,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAC1D,CAAC;CACH;AAED,QAAA,MAAM,eAAe,6FA+HpB,CAAC;AA+BF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"AddSelectColumn.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectColumn.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAGV,MAAM,OAAO,CAAC;AAGf,OAAO,EAIL,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EACnB,MAAM,eAAe,CAAC;AAIvB;;;;;;;GAOG;AAEH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,gBAAgB,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C;;OAEG;IACH,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,IAAI,CAChB,WAAW,EACX,WAAW,GAAG,aAAa,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAC5D,CAAC;IACF;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IAC/D;;OAEG;IACH,sBAAsB,CAAC,EAAE,IAAI,CAC3B,aAAa,EACb,IAAI,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAC1D,CAAC;CACH;AAED,QAAA,MAAM,eAAe,6FAkIpB,CAAC;AA+BF,eAAe,eAAe,CAAC"}
@@ -7,6 +7,7 @@
7
7
 
8
8
  import { __toESM } from "../../../_virtual/_rolldown/runtime.js";
9
9
  import { require_classnames } from "../../../node_modules/classnames/index.js";
10
+ import { useId } from "../../../global/js/utils/useId.js";
10
11
  import { AddSelectContext, blockClass } from "./context.js";
11
12
  import React, { forwardRef, useState } from "react";
12
13
  import PropTypes from "prop-types";
@@ -21,10 +22,11 @@ import { Checkbox, Search, Tag } from "@carbon/react";
21
22
  var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
22
23
  const AddSelectColumn = forwardRef(({ children, title = "", searchLabel = "Search", searchPlaceholder = "Search", onSearch, actionsSlot, hideSearch = false, multi = false, showSelectAll = false, itemCount = 0, allSelected = false, allIndeterminate = false, onSelectAll, onNavigate, className, searchProps, tagProps, selectAllCheckboxProps, ...rest }, ref) => {
23
24
  const parentContext = React.useContext(AddSelectContext);
24
- const [searchTerm, setSearchTerm] = useState("");
25
+ const uid = useId();
26
+ const [columnSearchTerm, setColumnSearchTerm] = useState("");
25
27
  const handleSearch = (e) => {
26
28
  const value = e.target.value;
27
- setSearchTerm(value);
29
+ setColumnSearchTerm(value);
28
30
  onSearch?.(value);
29
31
  };
30
32
  const handleSelectAll = (_event, { checked }) => {
@@ -45,10 +47,10 @@ const AddSelectColumn = forwardRef(({ children, title = "", searchLabel = "Searc
45
47
  placeholder: searchPlaceholder,
46
48
  size: "md",
47
49
  onChange: handleSearch,
48
- value: searchTerm,
50
+ value: columnSearchTerm,
49
51
  ...searchProps
50
52
  })), actionsSlot && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}-column__actions` }, actionsSlot)), (showSelectAll || title) && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}-column__header` }, showSelectAll && multi ? /* @__PURE__ */ React.createElement(Checkbox, {
51
- id: `select-all-${title}`,
53
+ id: `${blockClass}-select-all-${uid}`,
52
54
  className: `${blockClass}-column__select-all`,
53
55
  checked: allSelected,
54
56
  indeterminate: allIndeterminate,
@@ -63,7 +65,10 @@ const AddSelectColumn = forwardRef(({ children, title = "", searchLabel = "Searc
63
65
  type: "gray",
64
66
  size: "sm",
65
67
  ...tagProps
66
- }, itemCount))), /* @__PURE__ */ React.createElement("div", { className: `${blockClass}-column__rows` }, children)));
68
+ }, itemCount))), /* @__PURE__ */ React.createElement("div", {
69
+ className: `${blockClass}-column__rows`,
70
+ role: "rowgroup"
71
+ }, children)));
67
72
  });
68
73
  AddSelectColumn.propTypes = {
69
74
  actionsSlot: PropTypes.node,
@@ -42,6 +42,13 @@ export interface AddSelectItemPanelProps {
42
42
  * Optional class name
43
43
  */
44
44
  className?: string;
45
+ /**
46
+ * Controls visibility of the panel by toggling the
47
+ * `${blockClass}__item-summary-panel--open` CSS modifier class.
48
+ * Use this instead of conditional rendering when you need CSS-driven
49
+ * slide-in/out transitions.
50
+ */
51
+ open?: boolean;
45
52
  /**
46
53
  * Additional props to pass to the close IconButton
47
54
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AddSelectItemPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectItemPanel.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAEV,MAAM,OAAO,CAAC;AAGf,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;;GAIG;AAEH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IAChD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,oBAAoB,CAAC,EAAE,IAAI,CACzB,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACjE,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,kBAAkB,gGA6FvB,CAAC;AAmBF,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"AddSelectItemPanel.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectItemPanel.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAEV,MAAM,OAAO,CAAC;AAGf,OAAO,EAAc,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;;GAIG;AAEH,MAAM,WAAW,uBAAuB;IACtC;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;OAEG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IAChD;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;OAEG;IACH,oBAAoB,CAAC,EAAE,IAAI,CACzB,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACjE,CAAC;CACH;AAED;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,kBAAkB,gGAqGvB,CAAC;AAoBF,eAAe,kBAAkB,CAAC"}
@@ -32,17 +32,16 @@ var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
32
32
  * />
33
33
  * ```
34
34
  */
35
- const AddSelectItemPanel = forwardRef(({ title = "Item details", item, onClose, closeIconDescription = "Close", children, renderItem, className, closeIconButtonProps, ...rest }, ref) => {
36
- const panelClasses = (0, import_classnames.default)(`${blockClass}__item-summary-panel`, className);
35
+ const AddSelectItemPanel = forwardRef(({ title = "Item details", item, onClose, closeIconDescription = "Close", children, renderItem, className, open, closeIconButtonProps, ...rest }, ref) => {
36
+ const panelClasses = (0, import_classnames.default)(`${blockClass}__item-summary-panel`, className, { [`${blockClass}__item-summary-panel--open`]: open });
37
37
  const defaultContent = () => {
38
38
  if (!item) return null;
39
39
  const { itemDetails } = item;
40
- if (!itemDetails || Object.keys(itemDetails).length === 0) return null;
41
- const entries = Object.entries(itemDetails);
42
- return /* @__PURE__ */ React.createElement(React.Fragment, null, entries.map(([key, val]) => /* @__PURE__ */ React.createElement("div", {
43
- key,
40
+ if (!itemDetails || !Array.isArray(itemDetails) || itemDetails.length === 0) return null;
41
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, itemDetails.map(({ label, value: val }) => /* @__PURE__ */ React.createElement("div", {
42
+ key: label,
44
43
  className: `${blockClass}__item-summary-panel-entry`
45
- }, /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__item-summary-panel-entry-title` }, key), /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__item-summary-panel-entry-body` }, String(val)))));
44
+ }, /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__item-summary-panel-entry-title` }, label), /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__item-summary-panel-entry-body` }, String(val)))));
46
45
  };
47
46
  const renderItemContent = () => {
48
47
  if (children) return children;
@@ -73,6 +72,7 @@ AddSelectItemPanel.propTypes = {
73
72
  item: PropTypes.object,
74
73
  /**@ts-ignore */
75
74
  onClose: PropTypes.func,
75
+ open: PropTypes.bool,
76
76
  /**@ts-ignore */
77
77
  renderItem: PropTypes.func,
78
78
  title: PropTypes.string
@@ -97,6 +97,12 @@ export interface AddSelectRowProps {
97
97
  * Additional props to pass to the RadioButton component (when multi=false)
98
98
  */
99
99
  radioButtonProps?: Omit<RadioButtonProps, 'id' | 'className' | 'checked' | 'disabled' | 'labelText' | 'hideLabel' | 'value' | 'onChange'>;
100
+ /**
101
+ * Accessible label for the navigation indicator button.
102
+ * Defaults to `Navigate into <title>` when not provided.
103
+ * Override this prop to localize the label.
104
+ */
105
+ navIndicatorLabel?: string;
100
106
  /**
101
107
  * Additional props to pass to the IconButton component (info panel)
102
108
  */
@@ -1 +1 @@
1
- {"version":3,"file":"AddSelectRow.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectRow.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAGV,MAAM,OAAO,CAAC;AAGf,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAIvB;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,IAAI,CAClB,aAAa,EACX,IAAI,GACJ,WAAW,GACX,SAAS,GACT,UAAU,GACV,WAAW,GACX,WAAW,GACX,UAAU,CACb,CAAC;IACF;;OAEG;IACH,gBAAgB,CAAC,EAAE,IAAI,CACrB,gBAAgB,EACd,IAAI,GACJ,WAAW,GACX,SAAS,GACT,UAAU,GACV,WAAW,GACX,WAAW,GACX,OAAO,GACP,UAAU,CACb,CAAC;IACF;;OAEG;IACH,wBAAwB,CAAC,EAAE,IAAI,CAC7B,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACjE,CAAC;CACH;AAED,QAAA,MAAM,YAAY,0FA0LjB,CAAC;AAgCF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"AddSelectRow.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectRow.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAGZ,SAAS,EAGV,MAAM,OAAO,CAAC;AAGf,OAAO,EAML,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAIvB;;;;GAIG;AAEH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C;;OAEG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,IAAI,CAClB,aAAa,EACX,IAAI,GACJ,WAAW,GACX,SAAS,GACT,UAAU,GACV,WAAW,GACX,WAAW,GACX,UAAU,CACb,CAAC;IACF;;OAEG;IACH,gBAAgB,CAAC,EAAE,IAAI,CACrB,gBAAgB,EACd,IAAI,GACJ,WAAW,GACX,SAAS,GACT,UAAU,GACV,WAAW,GACX,WAAW,GACX,OAAO,GACP,UAAU,CACb,CAAC;IACF;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,wBAAwB,CAAC,EAAE,IAAI,CAC7B,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACjE,CAAC;CACH;AAED,QAAA,MAAM,YAAY,0FAqMjB,CAAC;AAiCF,eAAe,YAAY,CAAC"}
@@ -20,9 +20,10 @@ import { ChevronRight, View } from "@carbon/react/icons";
20
20
  * LICENSE file in the root directory of this source tree.
21
21
  */
22
22
  var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
23
- const AddSelectRow = forwardRef(({ itemId, title, subtitle, value, selected = false, indeterminate = false, disabled = false, hasChildren = false, parentId = "", icon, children, rowContent, hasItemPanel = false, onItemPanelClick, itemPanelIconDescription = "View details", itemPanelOpen = false, skeleton = false, className, checkboxProps, radioButtonProps, itemPanelIconButtonProps, ...rest }, ref) => {
23
+ const AddSelectRow = forwardRef(({ itemId, title, subtitle, value, selected = false, indeterminate = false, disabled = false, hasChildren = false, parentId = "", icon, children, rowContent, hasItemPanel = false, onItemPanelClick, itemPanelIconDescription = "View details", itemPanelOpen = false, skeleton = false, className, checkboxProps, radioButtonProps, navIndicatorLabel, itemPanelIconButtonProps, ...rest }, ref) => {
24
24
  const { multi, onItemSelect, onNavigate, selectedItems } = useContext(AddSelectContext);
25
25
  const isSelected = selectedItems?.has(itemId) ?? selected;
26
+ if (selectedItems !== void 0 && selected !== false) console.warn(`[AddSelectRow] Both the \`selected\` prop and \`selectedItems\` context are set on row "${itemId}". The context value takes precedence. Remove the \`selected\` prop when using controlled mode via AddSelect.`);
26
27
  const handleSelect = () => {
27
28
  if (disabled) return;
28
29
  onItemSelect?.(itemId, !isSelected, value);
@@ -98,7 +99,7 @@ const AddSelectRow = forwardRef(({ itemId, title, subtitle, value, selected = fa
98
99
  },
99
100
  role: "button",
100
101
  tabIndex: -1,
101
- "aria-label": "Navigate to children"
102
+ "aria-label": navIndicatorLabel ?? `Navigate into ${title}`
102
103
  }, /* @__PURE__ */ React.createElement(ChevronRight, { size: 16 })))));
103
104
  });
104
105
  AddSelectRow.propTypes = {
@@ -117,6 +118,7 @@ AddSelectRow.propTypes = {
117
118
  itemPanelIconButtonProps: PropTypes.object,
118
119
  itemPanelIconDescription: PropTypes.string,
119
120
  itemPanelOpen: PropTypes.bool,
121
+ navIndicatorLabel: PropTypes.string,
120
122
  /**@ts-ignore */
121
123
  onItemPanelClick: PropTypes.func,
122
124
  parentId: PropTypes.string,
@@ -6,7 +6,6 @@
6
6
  */
7
7
  import React, { ReactNode } from 'react';
8
8
  import { type TagProps, type IconButtonProps } from '@carbon/react';
9
- import type { AddSelectItem } from '@carbon/ibm-products';
10
9
  /**
11
10
  * ----------------
12
11
  * AddSelectSelectionSummary
@@ -18,21 +17,19 @@ export interface AddSelectSelectionSummaryProps {
18
17
  */
19
18
  title?: string;
20
19
  /**
21
- * Array of selected items
20
+ * Number of selected items — shown as a badge next to the title when
21
+ * provided. The badge is hidden when `selectedItemCount` is omitted.
22
22
  */
23
- selectedItems?: AddSelectItem[];
23
+ selectedItemCount?: number;
24
24
  /**
25
- * Custom content or SelectionSummaryPanelItem components
25
+ * Custom content or SelectionSummaryItem components
26
26
  */
27
27
  children?: ReactNode;
28
28
  /**
29
- * Custom empty state component (user provides)
29
+ * Custom empty state component — shown when `selectedItemCount` is `0` or
30
+ * not provided.
30
31
  */
31
32
  emptyState?: ReactNode;
32
- /**
33
- * Show count badge
34
- */
35
- showCount?: boolean;
36
33
  /**
37
34
  * Show edit icon next to count
38
35
  */
@@ -49,10 +46,6 @@ export interface AddSelectSelectionSummaryProps {
49
46
  * Optional class name
50
47
  */
51
48
  className?: string;
52
- /**
53
- * Custom item renderer
54
- */
55
- renderItem?: (item: AddSelectItem) => ReactNode;
56
49
  /**
57
50
  * Custom header content (slot) - replaces entire header section
58
51
  */
@@ -71,49 +64,45 @@ export interface AddSelectSelectionSummaryProps {
71
64
  editIconButtonProps?: Omit<IconButtonProps, 'label' | 'onClick' | 'kind' | 'size' | 'className' | 'children'>;
72
65
  }
73
66
  /**
74
- * AddSelectSelectionSummary - Displays list of selected items
67
+ * AddSelectSelectionSummary - Displays list of selected items.
68
+ *
69
+ * - Pass `selectedItemCount` to show a numeric badge next to the title; omit it to hide the badge.
70
+ * - Pass `emptyState` to show a placeholder when `selectedItemCount` is `0` or not provided.
75
71
  * @example
76
- * Basic usage:
72
+ * With count badge:
77
73
  * ```jsx
78
- * <AddSelect.SelectionSummaryPanel
74
+ * <AddSelect.SelectionSummary
79
75
  * title="Selected items"
80
- * selectedItems={items}
81
- * showCount
76
+ * selectedItemCount={selectedItemsArray.length}
82
77
  * showEditIcon
83
78
  * onEdit={handleEdit}
84
- * />
79
+ * >
80
+ * {selectedItemsArray.map((item) => (
81
+ * <AddSelect.SelectionSummaryItem key={item.id} item={item} onRemove={handleRemove} />
82
+ * ))}
83
+ * </AddSelect.SelectionSummary>
85
84
  * ```
86
85
  *
87
- * With custom header actions:
86
+ * Without badge (omit `selectedItemCount`):
88
87
  * ```jsx
89
- * <AddSelect.SelectionSummaryPanel
90
- * title="Selected items"
91
- * selectedItems={items}
92
- * showCount
93
- * headerActions={
94
- * <>
95
- * <IconButton label="Filter" kind="ghost" size="sm">
96
- * <Filter />
97
- * </IconButton>
98
- * <IconButton label="Sort" kind="ghost" size="sm">
99
- * <Sort />
100
- * </IconButton>
101
- * </>
102
- * }
103
- * />
88
+ * <AddSelect.SelectionSummary title="Selected items">
89
+ * {selectedItemsArray.map((item) => (
90
+ * <AddSelect.SelectionSummaryItem key={item.id} item={item} onRemove={handleRemove} />
91
+ * ))}
92
+ * </AddSelect.SelectionSummary>
104
93
  * ```
105
94
  *
106
- * With fully custom header:
95
+ * With empty state (shown when `selectedItemCount` is `0` or not provided):
107
96
  * ```jsx
108
- * <AddSelect.SelectionSummaryPanel
109
- * selectedItems={items}
110
- * headerContent={
111
- * <div className="custom-header">
112
- * <h3>My Custom Header</h3>
113
- * <Button>Custom Action</Button>
114
- * </div>
115
- * }
116
- * />
97
+ * <AddSelect.SelectionSummary
98
+ * title="Selected items"
99
+ * selectedItemCount={selectedItemsArray.length}
100
+ * emptyState={<NoDataEmptyState />}
101
+ * >
102
+ * {selectedItemsArray.map((item) => (
103
+ * <AddSelect.SelectionSummaryItem key={item.id} item={item} onRemove={handleRemove} />
104
+ * ))}
105
+ * </AddSelect.SelectionSummary>
117
106
  * ```
118
107
  */
119
108
  declare const AddSelectSelectionSummary: React.ForwardRefExoticComponent<AddSelectSelectionSummaryProps & React.RefAttributes<HTMLDivElement>>;
@@ -1 +1 @@
1
- {"version":3,"file":"AddSelectSelectionSummary.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectSelectionSummary.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAA4B,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnE,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;;GAIG;AAEH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,EAAE,CAAC;IAChC;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IAChD;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IAC/D;;OAEG;IACH,mBAAmB,CAAC,EAAE,IAAI,CACxB,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACjE,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,QAAA,MAAM,yBAAyB,uGA0G9B,CAAC;AA0BF,eAAe,yBAAyB,CAAC"}
1
+ {"version":3,"file":"AddSelectSelectionSummary.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectSelectionSummary.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAA4B,SAAS,EAAE,MAAM,OAAO,CAAC;AAGnE,OAAO,EAGL,KAAK,QAAQ,EACb,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAIvB;;;;GAIG;AAEH,MAAM,WAAW,8BAA8B;IAC7C;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC,CAAC;IAC/D;;OAEG;IACH,mBAAmB,CAAC,EAAE,IAAI,CACxB,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACjE,CAAC;CACH;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,QAAA,MAAM,yBAAyB,uGAqE9B,CAAC;AAsBF,eAAe,yBAAyB,CAAC"}
@@ -21,63 +21,58 @@ import { Edit } from "@carbon/react/icons";
21
21
  */
22
22
  var import_classnames = /* @__PURE__ */ __toESM(require_classnames());
23
23
  /**
24
- * AddSelectSelectionSummary - Displays list of selected items
24
+ * AddSelectSelectionSummary - Displays list of selected items.
25
+ *
26
+ * - Pass `selectedItemCount` to show a numeric badge next to the title; omit it to hide the badge.
27
+ * - Pass `emptyState` to show a placeholder when `selectedItemCount` is `0` or not provided.
25
28
  * @example
26
- * Basic usage:
29
+ * With count badge:
27
30
  * ```jsx
28
- * <AddSelect.SelectionSummaryPanel
31
+ * <AddSelect.SelectionSummary
29
32
  * title="Selected items"
30
- * selectedItems={items}
31
- * showCount
33
+ * selectedItemCount={selectedItemsArray.length}
32
34
  * showEditIcon
33
35
  * onEdit={handleEdit}
34
- * />
36
+ * >
37
+ * {selectedItemsArray.map((item) => (
38
+ * <AddSelect.SelectionSummaryItem key={item.id} item={item} onRemove={handleRemove} />
39
+ * ))}
40
+ * </AddSelect.SelectionSummary>
35
41
  * ```
36
42
  *
37
- * With custom header actions:
43
+ * Without badge (omit `selectedItemCount`):
38
44
  * ```jsx
39
- * <AddSelect.SelectionSummaryPanel
40
- * title="Selected items"
41
- * selectedItems={items}
42
- * showCount
43
- * headerActions={
44
- * <>
45
- * <IconButton label="Filter" kind="ghost" size="sm">
46
- * <Filter />
47
- * </IconButton>
48
- * <IconButton label="Sort" kind="ghost" size="sm">
49
- * <Sort />
50
- * </IconButton>
51
- * </>
52
- * }
53
- * />
45
+ * <AddSelect.SelectionSummary title="Selected items">
46
+ * {selectedItemsArray.map((item) => (
47
+ * <AddSelect.SelectionSummaryItem key={item.id} item={item} onRemove={handleRemove} />
48
+ * ))}
49
+ * </AddSelect.SelectionSummary>
54
50
  * ```
55
51
  *
56
- * With fully custom header:
52
+ * With empty state (shown when `selectedItemCount` is `0` or not provided):
57
53
  * ```jsx
58
- * <AddSelect.SelectionSummaryPanel
59
- * selectedItems={items}
60
- * headerContent={
61
- * <div className="custom-header">
62
- * <h3>My Custom Header</h3>
63
- * <Button>Custom Action</Button>
64
- * </div>
65
- * }
66
- * />
54
+ * <AddSelect.SelectionSummary
55
+ * title="Selected items"
56
+ * selectedItemCount={selectedItemsArray.length}
57
+ * emptyState={<NoDataEmptyState />}
58
+ * >
59
+ * {selectedItemsArray.map((item) => (
60
+ * <AddSelect.SelectionSummaryItem key={item.id} item={item} onRemove={handleRemove} />
61
+ * ))}
62
+ * </AddSelect.SelectionSummary>
67
63
  * ```
68
64
  */
69
- const AddSelectSelectionSummary = forwardRef(({ title = "Selected items", selectedItems = [], children, emptyState, showCount = true, showEditIcon = false, onEdit, editIconDescription = "Edit selections", className, renderItem, headerContent, headerActions, tagProps, editIconButtonProps, ...rest }, ref) => {
65
+ const AddSelectSelectionSummary = forwardRef(({ title = "Selected items", selectedItemCount, children, emptyState, showEditIcon = false, onEdit, editIconDescription = "Edit selections", className, headerContent, headerActions, tagProps, editIconButtonProps, ...rest }, ref) => {
70
66
  const panelClasses = (0, import_classnames.default)(`${blockClass}__selection-summary`, className);
71
- const hasSelections = selectedItems.length > 0;
72
67
  return /* @__PURE__ */ React.createElement("div", {
73
68
  className: panelClasses,
74
69
  ref,
75
70
  ...rest
76
- }, /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-header` }, headerContent || /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-title` }, title), showCount && /* @__PURE__ */ React.createElement(Tag, {
71
+ }, /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-header` }, headerContent || /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-title` }, title), selectedItemCount !== void 0 && /* @__PURE__ */ React.createElement(Tag, {
77
72
  type: "gray",
78
73
  size: "sm",
79
74
  ...tagProps
80
- }, selectedItems.length), (showEditIcon || headerActions) && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-header-actions` }, headerActions, showEditIcon && /* @__PURE__ */ React.createElement(IconButton, {
75
+ }, selectedItemCount), (showEditIcon || headerActions) && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-header-actions` }, headerActions, showEditIcon && /* @__PURE__ */ React.createElement(IconButton, {
81
76
  label: editIconDescription,
82
77
  onClick: onEdit,
83
78
  kind: "ghost",
@@ -85,10 +80,7 @@ const AddSelectSelectionSummary = forwardRef(({ title = "Selected items", select
85
80
  autoAlign: true,
86
81
  className: `${blockClass}__selection-summary-edit-button`,
87
82
  ...editIconButtonProps
88
- }, /* @__PURE__ */ React.createElement(Edit, { size: 16 }))))), /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-body` }, hasSelections ? children ? children : renderItem ? selectedItems.map((item) => /* @__PURE__ */ React.createElement("div", { key: item.id }, renderItem(item))) : /* @__PURE__ */ React.createElement("div", null, selectedItems.map((item) => /* @__PURE__ */ React.createElement("div", {
89
- key: item.id,
90
- className: `${blockClass}__selection-summary-item-default`
91
- }, /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-item-default-title` }, item.title), item.subtitle && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-item-default-subtitle` }, item.subtitle)))) : emptyState));
83
+ }, /* @__PURE__ */ React.createElement(Edit, { size: 16 }))))), /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-body` }, !selectedItemCount ? emptyState : children));
92
84
  });
93
85
  AddSelectSelectionSummary.propTypes = {
94
86
  children: PropTypes.node,
@@ -101,11 +93,7 @@ AddSelectSelectionSummary.propTypes = {
101
93
  headerContent: PropTypes.node,
102
94
  /**@ts-ignore */
103
95
  onEdit: PropTypes.func,
104
- /**@ts-ignore */
105
- renderItem: PropTypes.func,
106
- /**@ts-ignore */
107
- selectedItems: PropTypes.arrayOf(PropTypes.object),
108
- showCount: PropTypes.bool,
96
+ selectedItemCount: PropTypes.number,
109
97
  showEditIcon: PropTypes.bool,
110
98
  /**@ts-ignore */
111
99
  tagProps: PropTypes.object,
@@ -1 +1 @@
1
- {"version":3,"file":"AddSelectSelectionSummaryItem.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectSelectionSummaryItem.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAsC,SAAS,EAAE,MAAM,OAAO,CAAC;AAG7E,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;;GAIG;AAEH,MAAM,WAAW,kCAAkC;IACjD;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IAC1D;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,aAAa,EACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,KAC5B,SAAS,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IAC5D;;OAEG;IACH,kBAAkB,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IACpE;;OAEG;IACH,qBAAqB,CAAC,EAAE,IAAI,CAC1B,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACxD,CAAC;CACH;AAED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,6BAA6B,2GAiMlC,CAAC;AA4BF,eAAe,6BAA6B,CAAC"}
1
+ {"version":3,"file":"AddSelectSelectionSummaryItem.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/AddSelectSelectionSummaryItem.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAAsC,SAAS,EAAE,MAAM,OAAO,CAAC;AAG7E,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAG1D;;;;GAIG;AAEH,MAAM,WAAW,kCAAkC;IACjD;;OAEG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB;;OAEG;IACH,oBAAoB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IAC1D;;OAEG;IACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,SAAS,CAAC;IACzD;;;OAGG;IACH,UAAU,CAAC,EAAE,CACX,IAAI,EAAE,aAAa,EACnB,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,KAC5B,SAAS,CAAC;IACf;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,cAAc,CAAC,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IAC5D;;OAEG;IACH,kBAAkB,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,OAAO,GAAG,UAAU,CAAC,CAAC;IACpE;;OAEG;IACH,qBAAqB,CAAC,EAAE,IAAI,CAC1B,eAAe,EACf,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,WAAW,GAAG,UAAU,CACxD,CAAC;CACH;AAED;;;;;;;;;;GAUG;AACH,QAAA,MAAM,6BAA6B,2GAgLlC,CAAC;AA4BF,eAAe,6BAA6B,CAAC"}
@@ -52,14 +52,12 @@ const AddSelectSelectionSummaryItem = forwardRef(({ item, renderAccordionTitle,
52
52
  const defaultTitle = /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-item-selected-item` }, /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-item-title` }, item.title), item.subtitle && /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-item-subtitle` }, item.subtitle));
53
53
  const defaultTitleRow = /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-item-title-wrapper` }, defaultTitle, onRemove && /* @__PURE__ */ React.createElement("div", { className: `${blockClass}__selection-summary-item-remove-button-container` }, RemoveButton));
54
54
  const defaultContent = () => {
55
- const itemProps = Object.entries(item).filter(([key]) => key !== "title" && key !== "subtitle" && key !== "icon" && key !== "id" && key !== "children" && key !== "selected" && key !== "status" && key !== "disabled" && key !== "itemDetails");
56
- const itemDetailsProps = item.itemDetails ? Object.entries(item.itemDetails) : [];
57
- const allEntries = [...itemProps, ...itemDetailsProps];
58
- if (allEntries.length === 0) return null;
59
- return /* @__PURE__ */ React.createElement(React.Fragment, null, allEntries.map(([key, val]) => /* @__PURE__ */ React.createElement("div", {
60
- key,
55
+ if (!item?.itemDetails || !Array.isArray(item.itemDetails)) return null;
56
+ if (item.itemDetails.length === 0) return null;
57
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, item.itemDetails.map(({ label, value: val }) => /* @__PURE__ */ React.createElement("div", {
58
+ key: label,
61
59
  className: `${blockClass}__selection-summary-item-entry`
62
- }, /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-item-header` }, key), /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-item-body` }, String(val)))));
60
+ }, /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-item-header` }, label), /* @__PURE__ */ React.createElement("p", { className: `${blockClass}__selection-summary-item-body` }, String(val)))));
63
61
  };
64
62
  if (Children.count(children) > 0) return /* @__PURE__ */ React.createElement("div", {
65
63
  className: itemClasses,
@@ -6,10 +6,18 @@
6
6
  */
7
7
  export declare const blockClass: string;
8
8
  export interface AddSelectContextType {
9
- multi?: boolean;
10
9
  onItemSelect?: (itemId: string, selected: boolean, value: string) => void;
11
- onNavigate?: (itemId: string, title: string, parentId: string) => void;
12
10
  selectedItems?: Set<string>;
11
+ /**
12
+ * Column-scoped: injected by AddSelectColumn, not by the root AddSelect.
13
+ * Determines whether rows use checkboxes (true) or radio buttons (false).
14
+ */
15
+ multi?: boolean;
16
+ /**
17
+ * Column-scoped: injected by AddSelectColumn, not by the root AddSelect.
18
+ * Called when a row's navigation indicator is clicked.
19
+ */
20
+ onNavigate?: (itemId: string, title: string, parentId: string) => void;
13
21
  }
14
22
  export declare const AddSelectContext: import("react").Context<AddSelectContextType>;
15
23
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,UAAU,QAAoC,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACvE,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,+CAG3B,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/components/AddSelect/next/context.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,eAAO,MAAM,UAAU,QAAoC,CAAC;AAE5D,MAAM,WAAW,oBAAoB;IACnC,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1E,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;CACxE;AAED,eAAO,MAAM,gBAAgB,+CAE3B,CAAC"}
@@ -15,9 +15,6 @@ import { createContext } from "react";
15
15
  * LICENSE file in the root directory of this source tree.
16
16
  */
17
17
  const blockClass = `${pkg.prefix}--add-select__next`;
18
- const AddSelectContext = createContext({
19
- multi: false,
20
- selectedItems: void 0
21
- });
18
+ const AddSelectContext = createContext({ selectedItems: void 0 });
22
19
  //#endregion
23
20
  export { AddSelectContext, blockClass };