"use strict";

function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.default = exports.WithForwardedRef = exports.WithFormField = exports.WithError = exports.Primary = exports.MultiSelectWithGroupedOptions = exports.MultiSelectUnControlled = exports.MultiSelect = exports.GroupedOptions = exports.Disabled = exports.DifferentWidths = exports.DifferentSizes = exports.DefaultValue = exports.CustomOption = void 0;
var _react = _interopRequireWildcard(require("react"));
var _ = require("../..");
var _Display = require("../../common/Display");
var _2 = require(".");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
var options = [{
  label: 'Red is the best color according to scientific research',
  value: '#Red is the best color according to scientific research'
}, {
  label: 'Green',
  value: '#4CAF50'
}, {
  label: 'Blue',
  value: '#2196F3'
}];
var otherOptions = [{
  label: 'First option',
  value: '1'
}, {
  label: 'second',
  value: '2'
}, {
  label: 'third',
  value: '3'
}];
var countryOptions = [{
  label: 'Sweden',
  value: 'se'
}, {
  label: 'Norway',
  value: 'no'
}, {
  label: 'Denmark',
  value: 'dk'
}, {
  label: 'Finland',
  value: 'fi'
}];
var meta = {
  component: _2.Select,
  title: 'Molecules/Select'
};
var _default = exports.default = meta;
var Primary = exports.Primary = function Primary() {
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a option..."
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  }));
};
var DefaultValue = exports.DefaultValue = function DefaultValue() {
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a option...",
    defaultValue: options[0].value
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  }));
};
var CustomOption = exports.CustomOption = function CustomOption() {
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a country..."
  }, countryOptions.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    }, _react.default.createElement(_.Flexbox, {
      container: true,
      alignItems: "center",
      gap: 2
    }, _react.default.createElement(_.Flexbox, {
      item: true
    }, _react.default.createElement(_.Flag, {
      country: option.value,
      size: "m"
    })), _react.default.createElement(_.Flexbox, {
      item: true
    }, _react.default.createElement(_.Typography, {
      type: "primary"
    }, option.label))));
  }));
};
var DifferentSizes = exports.DifferentSizes = function DifferentSizes() {
  return _react.default.createElement(_Display.Display, {
    items: [{
      title: 'Default (medium) size',
      component: _react.default.createElement(_2.Select, {
        name: "my-select",
        size: "m",
        placeholder: "Select a option..."
      }, options.map(function (option) {
        return _react.default.createElement(_2.Select.Option, {
          key: "".concat(option.value, "-m"),
          value: option.value,
          label: option.label
        });
      }))
    }, {
      title: 'Small size',
      component: _react.default.createElement(_2.Select, {
        name: "my-small-select",
        size: "s",
        placeholder: "Select a option..."
      }, options.map(function (option) {
        return _react.default.createElement(_2.Select.Option, {
          key: "".concat(option.value, "-s"),
          value: option.value,
          label: option.label
        });
      }))
    }]
  });
};
var DifferentWidths = exports.DifferentWidths = function DifferentWidths() {
  return _react.default.createElement(_Display.Display, {
    items: [{
      title: '75 units wide',
      component: _react.default.createElement(_2.Select, {
        name: "my-select",
        placeholder: "Select a option...",
        width: 75
      }, options.map(function (option) {
        return _react.default.createElement(_2.Select.Option, {
          key: "".concat(option.value, "-m"),
          value: option.value,
          label: option.label
        });
      }))
    }, {
      title: 'Full width',
      component: _react.default.createElement(_2.Select, {
        name: "my-full-width-select",
        placeholder: "Select a option...",
        fullWidth: true
      }, options.map(function (option) {
        return _react.default.createElement(_2.Select.Option, {
          key: "".concat(option.value, "-s"),
          value: option.value,
          label: option.label
        });
      }))
    }]
  });
};
var WithFormField = exports.WithFormField = function WithFormField() {
  return _react.default.createElement(_.FormField, {
    label: "Label",
    required: true,
    extraInfo: "Extra info"
  }, _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a option..."
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  })));
};
var WithError = exports.WithError = function WithError() {
  return _react.default.createElement(_.FormField, {
    error: "Error message",
    label: "Label"
  }, _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a option...",
    hasError: true
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  })));
};
var Disabled = exports.Disabled = function Disabled() {
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a option...",
    disabled: true
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  }));
};
var GroupedOptions = exports.GroupedOptions = function GroupedOptions() {
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a option..."
  }, _react.default.createElement(_2.Select.Group, {
    label: "First Group"
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  })), _react.default.createElement(_2.Select.Group, {
    label: "Second Group"
  }, otherOptions.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  })));
};
var MultiSelectUnControlled = exports.MultiSelectUnControlled = function MultiSelectUnControlled() {
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    multiple: true
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label,
      multiple: true
    });
  }));
};
var MultiSelect = exports.MultiSelect = function MultiSelect() {
  var _useState = (0, _react.useState)(0),
    _useState2 = _slicedToArray(_useState, 2),
    selectedCount = _useState2[0],
    setSelectedCount = _useState2[1];
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    multiple: true,
    onChange: function onChange(e, value) {
      return setSelectedCount(value ? value.length : 0);
    },
    valueDisplay: _react.default.createElement(_2.Select.ValueDisplayMultiSelect, {
      label: selectedCount > 1 ? 'Colors' : 'Color',
      placeholder: "Select a value...",
      selectedCount: selectedCount
    })
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label,
      multiple: true
    });
  }));
};
var MultiSelectWithGroupedOptions = exports.MultiSelectWithGroupedOptions = function MultiSelectWithGroupedOptions() {
  var _useState3 = (0, _react.useState)(0),
    _useState4 = _slicedToArray(_useState3, 2),
    selectedCount = _useState4[0],
    setSelectedCount = _useState4[1];
  return _react.default.createElement(_2.Select, {
    name: "my-select",
    multiple: true,
    placeholder: "Select a option...",
    onChange: function onChange(e, value) {
      return setSelectedCount(value ? value.length : 0);
    },
    valueDisplay: _react.default.createElement(_2.Select.ValueDisplayMultiSelect, {
      label: selectedCount > 1 ? 'Colors' : 'Color',
      placeholder: "Select a value...",
      selectedCount: selectedCount
    })
  }, _react.default.createElement(_2.Select.Group, {
    label: "First Group"
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label,
      multiple: true
    });
  })), _react.default.createElement(_2.Select.Group, {
    label: "Second Group"
  }, otherOptions.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label,
      multiple: true
    });
  })));
};
var WithForwardedRef = exports.WithForwardedRef = function WithForwardedRef() {
  var buttonRef = (0, _react.useRef)(null);
  var focusButton = function focusButton() {
    var _buttonRef$current;
    (_buttonRef$current = buttonRef.current) === null || _buttonRef$current === void 0 || _buttonRef$current.focus();
  };
  return _react.default.createElement("div", null, _react.default.createElement(_.Button, {
    onClick: focusButton
  }, "Focus"), _react.default.createElement(_.Box, {
    mt: 2
  }, _react.default.createElement(_2.Select, {
    name: "my-select",
    placeholder: "Select a option...",
    ref: buttonRef
  }, options.map(function (option) {
    return _react.default.createElement(_2.Select.Option, {
      key: option.value,
      value: option.value,
      label: option.label
    });
  }))));
};