@appbuckets/react-ui
Version:
Just Another React UI Framework
49 lines (46 loc) • 1.33 kB
JavaScript
import * as React from 'react';
import Checkbox from '../../Checkbox/Checkbox.js';
import { useRxTable } from '../RxTable.context.js';
/* --------
* Component Definition
* -------- */
var AllRowsSelector = function () {
// ----
// Get data from Context
// ----
var _a = useRxTable().selection,
areAllRowsSelected = _a.areAllRowsSelected,
selectedCount = _a.selectedCount,
selectAllRows = _a.selectAllRows,
deselectAllRows = _a.deselectAllRows;
// ----
// Handle Select All Change
// ----
var handleSelectCheckboxChange = React.useCallback(
function () {
/** If all rows are selected, deselect */
if (areAllRowsSelected) {
deselectAllRows();
} else {
/** Else, select all rows */
selectAllRows();
}
},
[areAllRowsSelected, deselectAllRows, selectAllRows]
);
// ----
// Return the Checkbox as Memoized Component
// ----
return React.useMemo(
function () {
return React.createElement(Checkbox, {
checked: areAllRowsSelected,
indeterminate: !areAllRowsSelected && selectedCount > 0,
onClick: handleSelectCheckboxChange,
});
},
[areAllRowsSelected, selectedCount, handleSelectCheckboxChange]
);
};
AllRowsSelector.displayName = 'AllRowsSelector';
export { AllRowsSelector as default };