"use strict";

var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.DeliveryStartDate = DeliveryStartDate;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
var _classnames = _interopRequireDefault(require("classnames"));
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
function DeliveryStartDate(_ref) {
  var _ref$hasError = _ref.hasError,
    hasError = _ref$hasError === void 0 ? false : _ref$hasError,
    _ref$date = _ref.date,
    date = _ref$date === void 0 ? '' : _ref$date,
    _ref$value = _ref.value,
    value = _ref$value === void 0 ? '' : _ref$value,
    _ref$min = _ref.min,
    min = _ref$min === void 0 ? null : _ref$min,
    _ref$max = _ref.max,
    max = _ref$max === void 0 ? null : _ref$max,
    _ref$isDisabled = _ref.isDisabled,
    isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,
    _ref$isAddressUpdate = _ref.isAddressUpdate,
    isAddressUpdate = _ref$isAddressUpdate === void 0 ? false : _ref$isAddressUpdate,
    _ref$isPaperVoucherDe = _ref.isPaperVoucherDeliveryOptionOnly,
    isPaperVoucherDeliveryOptionOnly = _ref$isPaperVoucherDe === void 0 ? false : _ref$isPaperVoucherDe;
  var inputWrapperClassNames = (0, _classnames["default"])(['o-forms-input', 'o-forms-input--text', {
    'o-forms-input--invalid': hasError
  }]);
  var inputProps = _objectSpread(_objectSpread(_objectSpread({
    type: 'date',
    id: 'deliveryStartDate',
    name: 'deliveryStartDate'
  }, min && {
    min: min
  }), max && {
    max: max
  }), {}, {
    'data-trackable': 'field-deliveryStartDate',
    'aria-required': 'true',
    required: true,
    disabled: isDisabled,
    defaultValue: value
  });
  var startMessage = isPaperVoucherDeliveryOptionOnly ? 'Your vouchers will be valid from:' : isAddressUpdate ? 'We’ll start delivering to this address from:' : 'The first print edition you will receive is:';
  return /*#__PURE__*/_react["default"].createElement("label", {
    id: "deliveryStartDateField",
    className: "o-forms-field ncf__validation-error",
    "data-validate": "required",
    htmlFor: inputProps.id
  }, /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-title"
  }, /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-title__main",
    id: "start-date-picker-title-span"
  }, "Start date"), /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-title__prompt"
  }, "Earliest available start date: ", date)), /*#__PURE__*/_react["default"].createElement("span", {
    className: inputWrapperClassNames
  }, /*#__PURE__*/_react["default"].createElement("input", inputProps), /*#__PURE__*/_react["default"].createElement("span", {
    className: "o-forms-input__error"
  }, "Please select a valid start date")), /*#__PURE__*/_react["default"].createElement("p", null, startMessage, " ", /*#__PURE__*/_react["default"].createElement("strong", {
    className: "js-start-date-text"
  }, date)));
}
DeliveryStartDate.propTypes = {
  hasError: _propTypes["default"].bool,
  date: _propTypes["default"].node,
  // could be a string or a component that formats the string
  value: _propTypes["default"].string,
  min: _propTypes["default"].string,
  max: _propTypes["default"].string,
  isDisabled: _propTypes["default"].bool,
  isAddressUpdate: _propTypes["default"].bool,
  isPaperVoucherDeliveryOptionOnly: _propTypes["default"].bool
};