@uva-glass/component-library
Version:
React components UvA
97 lines (96 loc) • 3.73 kB
JavaScript
import { jsxs as u, jsx as s } from "react/jsx-runtime";
import { c as k } from "../../clsx-OuTLNxxd.js";
import { useRef as v, useState as M, useEffect as N } from "react";
import "../Accordion/Accordion.js";
import "../Buttons/Button.js";
import "../Buttons/LinkButton.js";
import "@react-aria/button";
import "../Checkbox/Checkbox.js";
import { CheckboxButtonBar as B } from "../CheckboxButtonBar/CheckboxButtonBar.js";
import "@react-aria/dialog";
import "@react-aria/focus";
import "@react-aria/overlays";
import "../OverlayCloseButton/OverlayCloseButton.js";
import { FeedbackBox as D } from "../FeedbackBox/FeedbackBox.js";
import "../GridRow/GridRow.js";
import "../IconButton/IconButton.js";
import "../Input/Input.js";
import "../InputField/InputField.js";
import { Label as I } from "../Label/Label.js";
import "react-router";
import "../../TablePlugin-BLbsvcuu.js";
import "../RteEditor/Providers/LanguageProvider.js";
import "../RteEditor/Plugins/LinkPlugin/LinkContextMenu/LinkContextMenu.js";
import "../RteEditor/hooks/components/Flyout.js";
import "react-dom";
import "../../index-yEhaxKq-.js";
import "../SearchField/SearchField.js";
import "../SelectListbox/SelectListbox.js";
import "../SelectListbox/SelectProvider.js";
import "../Sortable/components/SortableItem.js";
import "../../SortableProvider-BbwlEPIr.js";
import "../WeekSelector/components/WeekSelectorOptionContainer.js";
import '../../assets/PeriodSelector.css';const l = {
"period-selector__container": "_period-selector__container_1txwd_1",
"period-selector__container--label-left": "_period-selector__container--label-left_1txwd_6",
"period-selector__container--label-top": "_period-selector__container--label-top_1txwd_12",
"period-selector__selector-container": "_period-selector__selector-container_1txwd_18",
"period-selector__selector-row": "_period-selector__selector-row_1txwd_24"
}, f = 0, h = 1, S = 2, E = 3, j = 7, A = (c) => {
const n = [];
for (let t = 0; t < c.length; t += E)
n.push(c.slice(t, t + E));
return n;
}, ar = ({
maxPeriods: c = j,
defaultValues: n,
label: t,
labelPosition: b = "top",
required: _ = !1,
notValidatedText: p = "",
onChange: x
}) => {
const g = Array.from({ length: c }, (r, e) => e + 1), m = A(g), w = m.map((r, e) => r.map((o) => ({
label: o.toString(),
value: o.toString()
}))), i = v(
m.map(
(r) => r.reduce((e, o) => (n?.includes(o) && e.push(o), e), [])
)
), [R, a] = M([]), d = (r) => r[f].length !== 0 || r[h].length !== 0 ? [S] : r[S].length !== 0 ? [f, h] : [], P = (r, e) => {
i.current[e] = r.map((o) => Number(o)), a(d(i.current)), x([...i.current.flat()].sort());
};
return N(() => {
a(d(i.current));
}, []), /* @__PURE__ */ u(
"div",
{
className: k(
l["period-selector__container"],
l[`period-selector__container--label-${b}`]
),
children: [
t && /* @__PURE__ */ s(I, { htmlFor: "", required: _, children: t }),
/* @__PURE__ */ u("div", { className: l["period-selector__selector-container"], children: [
/* @__PURE__ */ s("div", { className: l["period-selector__selector-row"], children: w.map((r, e) => /* @__PURE__ */ s(
B,
{
checkboxes: r,
defaultValues: i.current[e].map((o) => o.toString()),
disableGroup: R.includes(e),
required: _,
onSetValues: (o) => P(o, e),
notValid: p !== ""
},
`group_${e}`
)) }),
p !== "" && /* @__PURE__ */ s(D, { level: "error", feedback: p })
] })
]
}
);
};
export {
ar as PeriodSelector
};
//# sourceMappingURL=PeriodSelector.js.map