modaq
Version:
Quiz Bowl Reader using TypeScript, React, and MobX
44 lines • 2.33 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RoundSelector = void 0;
const jsx_runtime_1 = require("react/jsx-runtime");
require("react");
const mobx_react_lite_1 = require("mobx-react-lite");
const react_1 = require("@fluentui/react");
const defaultMaximumRoundNumber = 30;
exports.RoundSelector = mobx_react_lite_1.observer(function RoundSelector(props) {
var _a, _b;
const maximumRoundNumber = (_a = props.maximumRoundNumber) !== null && _a !== void 0 ? _a : defaultMaximumRoundNumber;
return (jsx_runtime_1.jsx(react_1.SpinButton, { label: "Round Number", onIncrement: (newValue) => roundNumberIncrementHandler(props, maximumRoundNumber, newValue), onDecrement: (newValue) => roundNumberDecrementHandler(props, newValue), onValidate: (newValue) => roundNumberChangeHandler(props, maximumRoundNumber, newValue), disabled: props.disabled, value: props.roundNumber.toString(), min: 1, max: (_b = props.maximumRoundNumber) !== null && _b !== void 0 ? _b : defaultMaximumRoundNumber, step: 1, incrementButtonAriaLabel: "Increase round number by 1", decrementButtonAriaLabel: "Decrease round number by 1" }, void 0));
});
function roundNumberChangeHandler(props, maximumRoundNumber, newValue) {
if (newValue == undefined) {
return;
}
const roundNumber = parseInt(newValue, 10);
if (isNaN(roundNumber) || roundNumber < 1 || roundNumber > maximumRoundNumber) {
// Don't accept the input if it's not a number
return;
}
props.onRoundNumberChange(roundNumber);
return roundNumber.toString();
}
function roundNumberDecrementHandler(props, newValue) {
const roundNumber = parseInt(newValue, 10);
if (isNaN(roundNumber) || roundNumber <= 1) {
return;
}
const newRoundNumber = roundNumber - 1;
props.onRoundNumberChange(newRoundNumber);
return newRoundNumber.toString();
}
function roundNumberIncrementHandler(props, maximumRoundNumber, newValue) {
const roundNumber = parseInt(newValue, 10);
if (isNaN(roundNumber) || roundNumber >= maximumRoundNumber) {
return;
}
const newRoundNumber = roundNumber + 1;
props.onRoundNumberChange(newRoundNumber);
return newRoundNumber.toString();
}
//# sourceMappingURL=RoundSelector.js.map