@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.
- package/.playwright/INTERNAL_AVT_REPORT_DO_NOT_USE.json +6383 -0
- package/css/index-full-carbon.css +72 -20
- package/css/index-full-carbon.css.map +1 -1
- package/css/index-full-carbon.min.css +1 -1
- package/css/index-full-carbon.min.css.map +1 -1
- package/css/index-without-carbon-released-only.css +5 -1
- package/css/index-without-carbon-released-only.css.map +1 -1
- package/css/index-without-carbon-released-only.min.css +1 -1
- package/css/index-without-carbon-released-only.min.css.map +1 -1
- package/css/index-without-carbon.css +72 -20
- package/css/index-without-carbon.css.map +1 -1
- package/css/index-without-carbon.min.css +1 -1
- package/css/index-without-carbon.min.css.map +1 -1
- package/css/index.css +72 -20
- package/css/index.css.map +1 -1
- package/css/index.min.css +1 -1
- package/css/index.min.css.map +1 -1
- package/es/components/AddSelect/next/AddSelectBody.d.ts +3 -1
- package/es/components/AddSelect/next/AddSelectBody.d.ts.map +1 -1
- package/es/components/AddSelect/next/AddSelectBody.js +14 -10
- package/es/components/AddSelect/next/AddSelectColumn.d.ts +3 -2
- package/es/components/AddSelect/next/AddSelectColumn.d.ts.map +1 -1
- package/es/components/AddSelect/next/AddSelectColumn.js +10 -5
- package/es/components/AddSelect/next/AddSelectItemPanel.d.ts +7 -0
- package/es/components/AddSelect/next/AddSelectItemPanel.d.ts.map +1 -1
- package/es/components/AddSelect/next/AddSelectItemPanel.js +7 -7
- package/es/components/AddSelect/next/AddSelectRow.d.ts +6 -0
- package/es/components/AddSelect/next/AddSelectRow.d.ts.map +1 -1
- package/es/components/AddSelect/next/AddSelectRow.js +4 -2
- package/es/components/AddSelect/next/AddSelectSelectionSummary.d.ts +34 -45
- package/es/components/AddSelect/next/AddSelectSelectionSummary.d.ts.map +1 -1
- package/es/components/AddSelect/next/AddSelectSelectionSummary.js +33 -45
- package/es/components/AddSelect/next/AddSelectSelectionSummaryItem.d.ts.map +1 -1
- package/es/components/AddSelect/next/AddSelectSelectionSummaryItem.js +5 -7
- package/es/components/AddSelect/next/context.d.ts +10 -2
- package/es/components/AddSelect/next/context.d.ts.map +1 -1
- package/es/components/AddSelect/next/context.js +1 -4
- package/es/components/Card/next/Card.stories.internal.d.ts +114 -0
- package/es/components/Card/next/Card.stories.internal.d.ts.map +1 -0
- package/es/components/CreateModal/CreateModal.d.ts +3 -0
- package/es/components/CreateModal/CreateModal.d.ts.map +1 -1
- package/es/components/CreateModal/CreateModal.js +8 -0
- package/es/components/CreateSidePanel/CreateSidePanel.d.ts +1 -0
- package/es/components/CreateSidePanel/CreateSidePanel.d.ts.map +1 -1
- package/es/components/CreateSidePanel/CreateSidePanel.js +6 -0
- package/es/components/ExpressiveCard/ExpressiveCard.d.ts +1 -2
- package/es/components/ExpressiveCard/ExpressiveCard.d.ts.map +1 -1
- package/es/components/ExpressiveCard/ExpressiveCard.js +1 -2
- package/es/components/PageHeader/next/PageHeaderContent.d.ts +4 -0
- package/es/components/PageHeader/next/PageHeaderContent.d.ts.map +1 -1
- package/es/components/PageHeader/next/PageHeaderContent.js +19 -20
- package/es/components/RemoveModal/RemoveModal.d.ts +3 -0
- package/es/components/RemoveModal/RemoveModal.d.ts.map +1 -1
- package/es/components/RemoveModal/RemoveModal.js +8 -0
- package/es/components/UserAvatar/UserAvatar.d.ts +2 -3
- package/es/components/UserAvatar/UserAvatar.d.ts.map +1 -1
- package/es/components/UserAvatar/UserAvatar.js +13 -2
- package/es/components/index.d.ts +1 -1
- package/es/components/index.d.ts.map +1 -1
- package/lib/components/AddSelect/next/AddSelectBody.d.ts +3 -1
- package/lib/components/AddSelect/next/AddSelectBody.d.ts.map +1 -1
- package/lib/components/AddSelect/next/AddSelectBody.js +12 -8
- package/lib/components/AddSelect/next/AddSelectColumn.d.ts +3 -2
- package/lib/components/AddSelect/next/AddSelectColumn.d.ts.map +1 -1
- package/lib/components/AddSelect/next/AddSelectColumn.js +10 -5
- package/lib/components/AddSelect/next/AddSelectItemPanel.d.ts +7 -0
- package/lib/components/AddSelect/next/AddSelectItemPanel.d.ts.map +1 -1
- package/lib/components/AddSelect/next/AddSelectItemPanel.js +7 -7
- package/lib/components/AddSelect/next/AddSelectRow.d.ts +6 -0
- package/lib/components/AddSelect/next/AddSelectRow.d.ts.map +1 -1
- package/lib/components/AddSelect/next/AddSelectRow.js +6 -2
- package/lib/components/AddSelect/next/AddSelectSelectionSummary.d.ts +34 -45
- package/lib/components/AddSelect/next/AddSelectSelectionSummary.d.ts.map +1 -1
- package/lib/components/AddSelect/next/AddSelectSelectionSummary.js +33 -45
- package/lib/components/AddSelect/next/AddSelectSelectionSummaryItem.d.ts.map +1 -1
- package/lib/components/AddSelect/next/AddSelectSelectionSummaryItem.js +5 -7
- package/lib/components/AddSelect/next/context.d.ts +10 -2
- package/lib/components/AddSelect/next/context.d.ts.map +1 -1
- package/lib/components/AddSelect/next/context.js +1 -4
- package/lib/components/Card/next/Card.stories.internal.d.ts +114 -0
- package/lib/components/Card/next/Card.stories.internal.d.ts.map +1 -0
- package/lib/components/CreateModal/CreateModal.d.ts +3 -0
- package/lib/components/CreateModal/CreateModal.d.ts.map +1 -1
- package/lib/components/CreateModal/CreateModal.js +8 -0
- package/lib/components/CreateSidePanel/CreateSidePanel.d.ts +1 -0
- package/lib/components/CreateSidePanel/CreateSidePanel.d.ts.map +1 -1
- package/lib/components/CreateSidePanel/CreateSidePanel.js +6 -0
- package/lib/components/ExpressiveCard/ExpressiveCard.d.ts +1 -2
- package/lib/components/ExpressiveCard/ExpressiveCard.d.ts.map +1 -1
- package/lib/components/ExpressiveCard/ExpressiveCard.js +1 -2
- package/lib/components/PageHeader/next/PageHeaderContent.d.ts +4 -0
- package/lib/components/PageHeader/next/PageHeaderContent.d.ts.map +1 -1
- package/lib/components/PageHeader/next/PageHeaderContent.js +17 -18
- package/lib/components/RemoveModal/RemoveModal.d.ts +3 -0
- package/lib/components/RemoveModal/RemoveModal.d.ts.map +1 -1
- package/lib/components/RemoveModal/RemoveModal.js +8 -0
- package/lib/components/UserAvatar/UserAvatar.d.ts +2 -3
- package/lib/components/UserAvatar/UserAvatar.d.ts.map +1 -1
- package/lib/components/UserAvatar/UserAvatar.js +13 -2
- package/lib/components/index.d.ts +1 -1
- package/lib/components/index.d.ts.map +1 -1
- package/package.json +6 -6
- package/scss/components/AddSelect/_add-select_next.scss +81 -18
- package/scss/components/PageHeader/_page-header.scss +2 -1
- package/scss/components/Tearsheet/_tearsheet.scss +3 -0
- package/telemetry.yml +16 -3
|
@@ -49,7 +49,9 @@ export interface AddSelectBodyProps {
|
|
|
49
49
|
title: string;
|
|
50
50
|
}>;
|
|
51
51
|
/**
|
|
52
|
-
*
|
|
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,
|
|
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 {
|
|
11
|
-
import React, { forwardRef,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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` },
|
|
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", {
|
|
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
|
-
*
|
|
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?: (
|
|
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;
|
|
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
|
|
25
|
+
const uid = useId();
|
|
26
|
+
const [columnSearchTerm, setColumnSearchTerm] = useState("");
|
|
25
27
|
const handleSearch = (e) => {
|
|
26
28
|
const value = e.target.value;
|
|
27
|
-
|
|
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:
|
|
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:
|
|
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", {
|
|
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,
|
|
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 ||
|
|
41
|
-
|
|
42
|
-
|
|
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` },
|
|
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,
|
|
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":
|
|
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
|
-
*
|
|
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
|
-
|
|
23
|
+
selectedItemCount?: number;
|
|
24
24
|
/**
|
|
25
|
-
* Custom content or
|
|
25
|
+
* Custom content or SelectionSummaryItem components
|
|
26
26
|
*/
|
|
27
27
|
children?: ReactNode;
|
|
28
28
|
/**
|
|
29
|
-
* Custom empty state component
|
|
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
|
-
*
|
|
72
|
+
* With count badge:
|
|
77
73
|
* ```jsx
|
|
78
|
-
* <AddSelect.
|
|
74
|
+
* <AddSelect.SelectionSummary
|
|
79
75
|
* title="Selected items"
|
|
80
|
-
*
|
|
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
|
-
*
|
|
86
|
+
* Without badge (omit `selectedItemCount`):
|
|
88
87
|
* ```jsx
|
|
89
|
-
* <AddSelect.
|
|
90
|
-
*
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
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
|
|
95
|
+
* With empty state (shown when `selectedItemCount` is `0` or not provided):
|
|
107
96
|
* ```jsx
|
|
108
|
-
* <AddSelect.
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
*
|
|
113
|
-
*
|
|
114
|
-
*
|
|
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;
|
|
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
|
-
*
|
|
29
|
+
* With count badge:
|
|
27
30
|
* ```jsx
|
|
28
|
-
* <AddSelect.
|
|
31
|
+
* <AddSelect.SelectionSummary
|
|
29
32
|
* title="Selected items"
|
|
30
|
-
*
|
|
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
|
-
*
|
|
43
|
+
* Without badge (omit `selectedItemCount`):
|
|
38
44
|
* ```jsx
|
|
39
|
-
* <AddSelect.
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
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
|
|
52
|
+
* With empty state (shown when `selectedItemCount` is `0` or not provided):
|
|
57
53
|
* ```jsx
|
|
58
|
-
* <AddSelect.
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
*
|
|
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",
|
|
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),
|
|
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
|
-
},
|
|
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` },
|
|
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
|
-
|
|
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,
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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` },
|
|
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,
|
|
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 };
|