@tolokoban/ui
Version:
React components with theme
36 lines • 4.85 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { useChangeableValue } from "./../../hooks/changeable-value.js";
import { useModal } from "./../../modal/index.js";
import { styleCommon } from "./../../theme/index.js";
import { ViewDialog } from "../Dialog/index.js";
import { ViewLabel } from "../Label/index.js";
import ComboItemView from "./combo-item/combo-item-view.js";
import { useItems } from "./hooks.js";
import Styles from "./Combo.module.css";
import { ViewPanel } from "../Panel/index.js";
export function ViewCombo(props) {
const items = useItems(props.children);
const [value, setValue] = useChangeableValue(props);
const handleClick = useClickHandler(value, setValue, props, items);
return (_jsx(ViewLabel, { value: props.label, children: _jsx("div", { className: getClassNames(props), style: styleCommon(props), children: _jsx(ComboItemView, { showButton: true, onClick: handleClick, children: items[value] }) }) }));
}
function getClassNames(props) {
const classNames = [Styles.main];
if (typeof props.className === "string") {
classNames.push(props.className);
}
return classNames.join(" ");
}
function useClickHandler(value, setValue, props, items) {
const modal = useModal();
return () => {
var _a;
const hide = modal.show({
content: (_jsx(ViewDialog, { title: (_a = props.title) !== null && _a !== void 0 ? _a : props.label, bodyColor: props.bodyColor, headColor: props.headColor, footColor: props.footColor, buttonCancel: Object.assign(Object.assign({}, props.buttonCancel), { onClick: () => hide() }), children: _jsx(ViewPanel, { overflow: "auto", display: "flex", flexDirection: "column", gap: "1px", padding: 0, children: Object.keys(items).map((key) => (_jsx(ComboItemView, { value: key, showButton: false, selected: key === value, onClick: () => {
hide();
setValue(key);
}, children: items[key] }, key))) }) })),
});
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tYm8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdmlldy9Db21iby9Db21iby50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUVBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFBO0FBQzdELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFDbEMsT0FBTyxFQUFlLFdBQVcsRUFBRSxNQUFNLFNBQVMsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsVUFBVSxFQUFtQixNQUFNLFdBQVcsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3BDLE9BQU8sYUFBYSxNQUFNLDhCQUE4QixDQUFBO0FBQ3hELE9BQU8sRUFBUyxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUE7QUFFekMsT0FBTyxNQUFNLE1BQU0sb0JBQW9CLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQVVwQyxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQXFCO0lBQzNDLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUE7SUFDdEMsTUFBTSxDQUFDLEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQTtJQUNuRCxNQUFNLFdBQVcsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFDbEUsT0FBTyxDQUNILEtBQUMsU0FBUyxJQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSyxZQUN6QixjQUFLLFNBQVMsRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLLENBQUMsWUFDM0QsS0FBQyxhQUFhLElBQUMsVUFBVSxRQUFDLE9BQU8sRUFBRSxXQUFXLFlBQ3pDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FDRCxHQUNkLEdBQ0UsQ0FDZixDQUFBO0FBQ0wsQ0FBQztBQUVELFNBQVMsYUFBYSxDQUFDLEtBQXFCO0lBQ3hDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFBO0lBQ2hDLElBQUksT0FBTyxLQUFLLENBQUMsU0FBUyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ3RDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ3BDLENBQUM7SUFDRCxPQUFPLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFDL0IsQ0FBQztBQUVELFNBQVMsZUFBZSxDQUNwQixLQUFhLEVBQ2IsUUFBaUMsRUFDakMsS0FBcUIsRUFDckIsS0FBWTtJQUVaLE1BQU0sS0FBSyxHQUFHLFFBQVEsRUFBRSxDQUFBO0lBQ3hCLE9BQU8sR0FBRyxFQUFFOztRQUNSLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7WUFDcEIsT0FBTyxFQUFFLENBQ0wsS0FBQyxVQUFVLElBQ1AsS0FBSyxFQUFFLE1BQUEsS0FBSyxDQUFDLEtBQUssbUNBQUksS0FBSyxDQUFDLEtBQUssRUFDakMsU0FBUyxFQUFFLEtBQUssQ0FBQyxTQUFTLEVBQzFCLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUMxQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsRUFDMUIsWUFBWSxrQ0FDTCxLQUFLLENBQUMsWUFBWSxLQUNyQixPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLGVBR3pCLEtBQUMsU0FBUyxJQUNOLFFBQVEsRUFBQyxNQUFNLEVBQ2YsT0FBTyxFQUFDLE1BQU0sRUFDZCxhQUFhLEVBQUMsUUFBUSxFQUN0QixHQUFHLEVBQUMsS0FBSyxFQUNULE9BQU8sRUFBRSxDQUFDLFlBRVQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQzdCLEtBQUMsYUFBYSxJQUVWLEtBQUssRUFBRSxHQUFHLEVBQ1YsVUFBVSxFQUFFLEtBQUssRUFDakIsUUFBUSxFQUFFLEdBQUcsS0FBSyxLQUFLLEVBQ3ZCLE9BQU8sRUFBRSxHQUFHLEVBQUU7NEJBQ1YsSUFBSSxFQUFFLENBQUE7NEJBQ04sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO3dCQUNqQixDQUFDLFlBRUEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQVROLEdBQUcsQ0FVSSxDQUNuQixDQUFDLEdBQ00sR0FDSCxDQUNoQjtTQUNKLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQTtBQUNMLENBQUMifQ==