@hitachivantara/uikit-react-core
Version:
UI Kit Core React components.
27 lines (26 loc) • 1.02 kB
JavaScript
//#region src/List/utils.ts
var isItemSelected = (item, newItem) => {
const selectionKey = item?.id ? "id" : "label";
const selectionElement = item?.[selectionKey];
return newItem[selectionKey] === selectionElement;
};
var parseList = (item, props, selectAll, list = []) => {
const { multiSelect, selectable, singleSelectionToggle } = props || {};
let anySelected = false;
return list.map((elem) => {
const newItem = { ...elem };
if (!multiSelect) newItem.selected = false;
if ((item ? isItemSelected(item, newItem) : elem?.selected) && selectable) {
let selectionState;
if (multiSelect) selectionState = item ? !elem?.selected : true;
else selectionState = !anySelected && (item && singleSelectionToggle ? !elem?.selected : true);
newItem.selected = selectionState;
anySelected = true;
}
if (typeof selectAll === "boolean" && !elem?.disabled) newItem.selected = selectAll;
if (!newItem?.selected) newItem.selected = false;
return newItem;
});
};
//#endregion
export { parseList };