UNPKG

burdy

Version:

Open Source Headless Platform

79 lines (78 loc) 2.84 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useSelection = void 0; const react_1 = require("@fluentui/react"); const react_2 = require("react"); class ExtendedSelection extends react_1.Selection { constructor() { super(...arguments); this.defaultSelectedItems = null; } select(itemsOrKeys, clearRest = false) { if (clearRest) this.deselectAll(); itemsOrKeys.forEach((item) => { const key = this.convertToKey(item); this.setKeySelected(key, true, false); }); } deselect(itemsOrKeys) { itemsOrKeys.forEach((item) => { const key = this.convertToKey(item); this.setKeySelected(key, false, false); }); } deselectAll() { this.deselect(this.getSelection()); } selectAll() { this.select(this.getItems()); } setDefaultSelectedItems(itemsOrKeys) { this.defaultSelectedItems = itemsOrKeys; } clearDefaultSelectedItems() { this.defaultSelectedItems = null; } setItems(items, shouldClear) { var _a; super.setItems(items, shouldClear); // For some reason method gets called with null items sometimes const notEmpty = (_a = items.some) === null || _a === void 0 ? void 0 : _a.call(items, (item) => item !== undefined); if (this.defaultSelectedItems && (items === null || items === void 0 ? void 0 : items.length) > 0 && notEmpty) { this.select(this.defaultSelectedItems); this.defaultSelectedItems = null; } } convertToKey(itemOrKey) { if (typeof itemOrKey === 'string') { return itemOrKey; } if (typeof itemOrKey === 'number') { return itemOrKey.toString(); } return this.getKey(itemOrKey); } } const useSelection = (constructor, deps = []) => (0, react_2.useMemo)(() => { const { defaultSelectedItems } = constructor, original = __rest(constructor, ["defaultSelectedItems"]); // @ts-ignore const selection = new ExtendedSelection(original); if (defaultSelectedItems) { selection.setDefaultSelectedItems(defaultSelectedItems); } return selection; }, deps); exports.useSelection = useSelection; exports.default = ExtendedSelection;