UNPKG

@uiw-admin/components

Version:
86 lines (84 loc) 2.69 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"]; Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = useSelections; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); /* eslint-disable no-unused-vars */ function useSelections(items) { var defaultSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; var isSingle = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false; var _useState = (0, _react.useState)(defaultSelected), _useState2 = (0, _slicedToArray2["default"])(_useState, 2), selected = _useState2[0], setSelected = _useState2[1]; var selectedSet = (0, _react.useMemo)(function () { return new Set(selected); }, [selected]); var isSelected = function isSelected(item) { return selectedSet.has(item); }; var unSelectAll = function unSelectAll() { items.forEach(function (o) { selectedSet["delete"](o); }); setSelected(Array.from(selectedSet)); }; var select = function select(item) { if (isSingle) { unSelectAll(); } selectedSet.add(item); return setSelected(Array.from(selectedSet)); }; var unSelect = function unSelect(item) { selectedSet["delete"](item); return setSelected(Array.from(selectedSet)); }; var toggle = function toggle(item) { if (isSelected(item)) { unSelect(item); } else { select(item); } }; var selectAll = function selectAll() { items.forEach(function (o) { selectedSet.add(o); }); setSelected(Array.from(selectedSet)); }; var noneSelected = (0, _react.useMemo)(function () { return items.every(function (o) { return !selectedSet.has(o); }); }, [items, selectedSet]); var allSelected = (0, _react.useMemo)(function () { return items.every(function (o) { return selectedSet.has(o); }) && !noneSelected; }, [items, selectedSet, noneSelected]); var partiallySelected = (0, _react.useMemo)(function () { return !noneSelected && !allSelected; }, [noneSelected, allSelected]); var toggleAll = function toggleAll() { return allSelected ? unSelectAll() : selectAll(); }; return { selected: selected, noneSelected: noneSelected, allSelected: allSelected, partiallySelected: partiallySelected, setSelected: setSelected, isSelected: isSelected, select: select, unSelect: unSelect, toggle: toggle, selectAll: selectAll, unSelectAll: unSelectAll, toggleAll: toggleAll }; } module.exports = exports.default;