@1771technologies/lytenyte-pro
Version:
Blazingly fast headless React data grid with 100s of features.
23 lines (22 loc) • 1.03 kB
JavaScript
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import { useMemo } from "react";
import { useEvent } from "@1771technologies/lytenyte-core/internal";
import { Checkbox } from "../checkbox/checkbox.js";
export function SelectAll({ api, render, }) {
const s = api.useSelectionState();
const selected = useMemo(() => {
const selected = s.selected && s.children.size === 0;
return selected;
}, [s]);
const indeterminate = useMemo(() => {
return Boolean(s.children.size);
}, [s]);
const toggle = useEvent((b) => {
if (b != null)
return api.rowSelect({ selected: "all", deselect: !b });
api.rowSelect({ selected: "all", deselect: selected });
});
if (render)
return render({ indeterminate, selected, toggle });
return (_jsxs("div", { "data-ln-tree-view-cell": "leaf", style: { "--ln-row-depth": 0 }, children: [_jsx(Checkbox, { checked: selected, indeterminate: indeterminate, onClick: () => toggle() }), "Select All"] }));
}