UNPKG

@1771technologies/lytenyte-pro

Version:

Blazingly fast headless React data grid with 100s of features.

23 lines (22 loc) 1.03 kB
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"] })); }