@trellixio/roaster-coffee
Version:
Beans' product component library
64 lines (60 loc) • 2.05 kB
JavaScript
;
var React = require('react');
var types = require('./types.js');
var context = require('./context.js');
function useTableSelectionChange() {
const onSelectionChange = React.useContext(context.TableSelectionChangeContext);
if (!onSelectionChange) {
throw new Error(`Missing TableProvider context`);
}
return onSelectionChange;
}
function useTableRow() {
const tableRow = React.useContext(context.TableRowContext);
if (!tableRow) {
throw new Error(`Missing TableProvider context`);
}
return tableRow;
}
function useTableValue() {
const table = React.useContext(context.TableContext);
if (!table) {
throw new Error(`Missing TableProvider context`);
}
return table;
}
function useBulkSelectionData({ selectedItemsCount, itemCount }) {
const selectable = Boolean(selectedItemsCount);
const selectMode = selectedItemsCount === "All" || selectedItemsCount > 0;
let bulkSelectState = "indeterminate";
if (!selectedItemsCount || selectedItemsCount === 0) {
bulkSelectState = void 0;
} else if (selectedItemsCount === types.SELECT_ALL_ITEMS || selectedItemsCount === itemCount) {
bulkSelectState = true;
}
return {
selectMode,
bulkSelectState,
selectable
};
}
function useHandleBulkSelection({ onSelectionChange = () => {
} }) {
const handleSelectionChange = React.useCallback(
(selectionType, selection) => {
if (selectionType === types.SelectionType.Single) {
onSelectionChange(types.SelectionType.Single, selection);
} else if (selectionType === types.SelectionType.Page || selectionType === types.SelectionType.All) {
onSelectionChange(selectionType, types.SELECT_ALL_ITEMS);
}
},
[onSelectionChange]
);
return handleSelectionChange;
}
exports.useBulkSelectionData = useBulkSelectionData;
exports.useHandleBulkSelection = useHandleBulkSelection;
exports.useTableRow = useTableRow;
exports.useTableSelectionChange = useTableSelectionChange;
exports.useTableValue = useTableValue;
//# sourceMappingURL=hooks.js.map