UNPKG

@focuson/form_components

Version:

Components that can be used by @focuson/forms

44 lines (43 loc) 3.01 kB
"use strict"; var __rest = (this && this.__rest) || function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]]; } return t; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.AccordionCollapseAll = exports.AccordionExpandAll = exports.AccordionWithInfo = exports.Accordion = void 0; const jsx_runtime_1 = require("react/jsx-runtime"); const state_1 = require("@focuson/state"); function Accordion(props) { const { buttonText } = props, restProps = __rest(props, ["buttonText"]); const { id, state } = restProps; const buttonTextL = buttonText.split('|'); const accordionsOpen = state.optJsonOr([]); const text = accordionsOpen.includes(id) ? buttonTextL[0] : buttonTextL[1]; return ((0, jsx_runtime_1.jsx)("button", Object.assign({}, restProps, { onClick: () => state.setJson(accordionsOpen.includes(id) ? accordionsOpen.filter(item => item != id) : [...accordionsOpen, id], (0, state_1.reasonFor)('Accordion', 'onClick', id)) }, { children: text }))); } exports.Accordion = Accordion; function AccordionWithInfo({ id, state, buttonText, list, count }) { return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Accordion, { id: id, buttonText: buttonText, state: state, list: list }), (0, jsx_runtime_1.jsxs)("span", Object.assign({ className: "json-key" }, { children: [(0, jsx_runtime_1.jsxs)("span", { children: ['"', id, '":'] }), (0, jsx_runtime_1.jsxs)("span", Object.assign({ className: "extra-info" }, { children: [count, " items"] }))] }))] })); } exports.AccordionWithInfo = AccordionWithInfo; function AccordionExpandAll(props) { const { buttonText } = props, restProps = __rest(props, ["buttonText"]); const { id, state, list } = restProps; const accordionsOpen = state.optJsonOr([]); return ((0, jsx_runtime_1.jsx)("button", Object.assign({}, restProps, { onClick: () => (accordionsOpen.length !== list.length) ? state.setJson(list, (0, state_1.reasonFor)('Accordion', 'onClick', id)) : undefined }, { children: buttonText }))); } exports.AccordionExpandAll = AccordionExpandAll; function AccordionCollapseAll(props) { const { buttonText } = props, restProps = __rest(props, ["buttonText"]); const { id, state, list } = restProps; const accordionsOpen = state.optJsonOr([]); return ((0, jsx_runtime_1.jsx)("button", Object.assign({}, restProps, { onClick: () => (accordionsOpen.length > 0 && accordionsOpen.length <= list.length) ? state.setJson([], (0, state_1.reasonFor)('Accordion', 'onClick', id)) : undefined }, { children: buttonText }))); } exports.AccordionCollapseAll = AccordionCollapseAll;