@react-md/form
Version:
This package is for creating all the different form input types.
67 lines • 2.56 kB
JavaScript
;
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.useIndeterminateChecked = void 0;
var react_1 = require("react");
function useIndeterminateChecked(values, _a) {
var _b;
var _c = _a === void 0 ? {} : _a, _d = _c.menu, menu = _d === void 0 ? false : _d, propOnChange = _c.onChange, _e = _c.defaultCheckedValues, defaultCheckedValues = _e === void 0 ? [] : _e;
var _f = __read((0, react_1.useState)(defaultCheckedValues), 2), checkedValues = _f[0], setCheckedValues = _f[1];
var checked = checkedValues.length > 0;
var indeterminate = checked && checkedValues.length < values.length;
var updateCheckedValues = function (values) {
propOnChange === null || propOnChange === void 0 ? void 0 : propOnChange(values);
setCheckedValues(values);
};
var rootProps = (_b = {
"aria-checked": indeterminate ? "mixed" : undefined,
checked: checked,
indeterminate: indeterminate
},
_b[menu ? "onCheckedChange" : "onChange"] = function () {
updateCheckedValues(checkedValues.length === 0 || indeterminate ? values : []);
},
_b);
var getProps = function (value) {
var _a;
return _a = {
value: value,
checked: checkedValues.includes(value)
},
_a[menu ? "onCheckedChange" : "onChange"] = function () {
var i = checkedValues.indexOf(value);
var nextChecked = checkedValues.slice();
if (i === -1) {
nextChecked.push(value);
}
else {
nextChecked.splice(i, 1);
}
updateCheckedValues(nextChecked);
},
_a;
};
return {
rootProps: rootProps,
getProps: getProps,
checkedValues: checkedValues,
setCheckedValues: setCheckedValues,
};
}
exports.useIndeterminateChecked = useIndeterminateChecked;
//# sourceMappingURL=useIndeterminateChecked.js.map