UNPKG

@uva-glass/component-library

Version:

React components UvA

92 lines (91 loc) 3.58 kB
import { jsxs as h, jsx as s } from "react/jsx-runtime"; import { c as v } from "../../clsx-OuTLNxxd.js"; import { useRef as M, useState as $, useEffect as N } from "react"; import "../Buttons/Button.js"; import "../Buttons/LinkButton.js"; import "@react-aria/button"; import "../Checkbox/Checkbox.js"; import { CheckboxButtonBar as w } from "../CheckboxButtonBar/CheckboxButtonBar.js"; import "@react-aria/dialog"; import "@react-aria/focus"; import "@react-aria/overlays"; import "../OverlayCloseButton/OverlayCloseButton.js"; import { FeedbackBox as B } from "../FeedbackBox/FeedbackBox.js"; import "../GridRow/GridRow.js"; import "../IconButton/IconButton.js"; import "../Input/Input.js"; import "../InputField/InputField.js"; import { Label as D } from "../Label/Label.js"; import "react-router"; import "../../TablePlugin-MjKuocl4.js"; import "../RteEditor/Providers/LanguageProvider.js"; import "../RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js"; import "../RteEditor/hooks/components/Flyout.js"; import "../../index-B3c5pcHk.js"; import "../SelectListbox/SelectListbox.js"; import "../SelectListbox/SelectProvider.js"; import "../Sortable/components/SortableItem.js"; import "../../SortableProvider-Ck_XnBVq.js"; import '../../assets/PeriodSelector.css';const l = { "period-selector__container": "_period-selector__container_10t7p_1", "period-selector__container--label-left": "_period-selector__container--label-left_10t7p_6", "period-selector__container--label-top": "_period-selector__container--label-top_10t7p_12", "period-selector__selector-container": "_period-selector__selector-container_10t7p_19", "period-selector__selector-row": "_period-selector__selector-row_10t7p_25" }, S = 0, f = 1, E = 2, p = 3, I = 7, T = (n) => { const c = []; for (let t = 0; t < n.length; t += p) c.push(n.slice(t, t + p)); return c; }, lr = ({ maxPeriods: n = I, defaultValues: c, label: t, labelPosition: b = "top", required: _ = !1, notValidatedText: m = "", onChange: g }) => { const R = Array.from({ length: n }, (r, e) => e + 1), a = T(R), x = a.map((r, e) => r.map((o) => ({ label: `${e + 1}${r.length === 1 ? "" : `.${(o - 1) % p + 1}`}`, value: o.toString() }))), i = M( a.map( (r) => r.reduce((e, o) => (c != null && c.includes(o) && e.push(o), e), []) ) ), [P, u] = $([]), d = (r) => r[S].length !== 0 || r[f].length !== 0 ? [E] : r[E].length !== 0 ? [S, f] : [], k = (r, e) => { i.current[e] = r.map((o) => Number(o)), u(d(i.current)), g([...i.current.flat()].sort()); }; return N(() => { u(d(i.current)); }, []), /* @__PURE__ */ h( "div", { className: v( l["period-selector__container"], l[`period-selector__container--label-${b}`] ), children: [ t && /* @__PURE__ */ s(D, { htmlFor: "", required: _, children: t }), /* @__PURE__ */ h("div", { className: l["period-selector__selector-container"], children: [ /* @__PURE__ */ s("div", { className: l["period-selector__selector-row"], children: x.map((r, e) => /* @__PURE__ */ s( w, { checkboxes: r, defaultValues: i.current[e].map((o) => o.toString()), disableGroup: P.includes(e), required: _, onSetValues: (o) => k(o, e) }, `group_${e}` )) }), m !== "" && /* @__PURE__ */ s(B, { level: "error", feedback: m }) ] }) ] } ); }; export { lr as PeriodSelector }; //# sourceMappingURL=PeriodSelector.js.map