useFieldsInvalidate.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. "use strict";
  2. var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
  3. var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
  4. Object.defineProperty(exports, "__esModule", {
  5. value: true
  6. });
  7. exports.default = useFieldsInvalidate;
  8. var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
  9. var _miscUtil = require("../../utils/miscUtil");
  10. var React = _interopRequireWildcard(require("react"));
  11. /**
  12. * Used to control each fields invalidate status
  13. */
  14. function useFieldsInvalidate(calendarValue, isInvalidateDate) {
  15. var allowEmpty = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
  16. var _React$useState = React.useState([false, false]),
  17. _React$useState2 = (0, _slicedToArray2.default)(_React$useState, 2),
  18. fieldsInvalidates = _React$useState2[0],
  19. setFieldsInvalidates = _React$useState2[1];
  20. var onSelectorInvalid = function onSelectorInvalid(invalid, index) {
  21. setFieldsInvalidates(function (ori) {
  22. return (0, _miscUtil.fillIndex)(ori, index, invalid);
  23. });
  24. };
  25. /**
  26. * For the Selector Input to mark as `aria-disabled`
  27. */
  28. var submitInvalidates = React.useMemo(function () {
  29. return fieldsInvalidates.map(function (invalid, index) {
  30. // If typing invalidate
  31. if (invalid) {
  32. return true;
  33. }
  34. var current = calendarValue[index];
  35. // Not check if all empty
  36. if (!current) {
  37. return false;
  38. }
  39. // Not allow empty
  40. if (!allowEmpty[index] && !current) {
  41. return true;
  42. }
  43. // Invalidate
  44. if (current && isInvalidateDate(current, {
  45. activeIndex: index
  46. })) {
  47. return true;
  48. }
  49. return false;
  50. });
  51. }, [calendarValue, fieldsInvalidates, isInvalidateDate, allowEmpty]);
  52. return [submitInvalidates, onSelectorInvalid];
  53. }