UNPKG

@uva-glass/component-library

Version:

React components UvA

97 lines (96 loc) 3.73 kB
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