@uva-glass/component-library
Version:
React components UvA
92 lines (91 loc) • 3.58 kB
JavaScript
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