@focuson/form_components
Version:
Components that can be used by @focuson/forms
44 lines (43 loc) • 3.01 kB
JavaScript
;
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;