@progress/kendo-react-scheduler
Version:
React Scheduler brings the functionality of Outlook's Calendar to a single UI component. KendoReact Scheduler package
57 lines (56 loc) • 1.91 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import * as m from "react";
import { findNextItem as l } from "../utils/index.mjs";
var _ = /* @__PURE__ */ ((E) => (E.select = "ITEMS_SELECT_SELECT", E.selectNext = "ITEMS_SELECT_SELECT_NEXT", E.selectPrev = "ITEMS_SELECT_SELECT_PREV", E.reset = "ITEMS_SELECT_RESET", E.add = "ITEMS_SELECT_ADD", E.remove = "ITEMS_SELECT_REMOVE", E))(_ || {});
const f = (E) => {
const [S, t] = m.useState([]), T = m.useCallback(
(e, s) => {
switch (e.type) {
case "ITEMS_SELECT_SELECT":
if (!e.item)
return;
t([e.item]);
break;
case "ITEMS_SELECT_SELECT_NEXT": {
if (!e.item || !e.item.current || !E)
return;
const r = l(e.item, E, e.ignoreIsAllDay, !1);
r && (s.preventDefault(), t([r]));
break;
}
case "ITEMS_SELECT_SELECT_PREV": {
if (!e.item || !e.item.current || !E)
return;
const r = l(e.item, E, e.ignoreIsAllDay, !0);
r && (s.preventDefault(), t([r]));
break;
}
case "ITEMS_SELECT_RESET":
t([]);
break;
case "ITEMS_SELECT_ADD":
if (!e.item)
return;
S.some((r) => r === e.item) || t([...S, e.item]);
break;
case "ITEMS_SELECT_REMOVE":
if (!e.item)
return;
t([...S.filter((r) => r !== e.item)]);
break;
}
},
[E, S]
);
return [S, T];
};
export {
_ as ITEMS_SELECT_ACTION,
f as useItemsSelection
};