diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32d56f2..531efc9 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,10 @@
+# [1.2.0](https://github.com/bootstrap-styled/toggle/compare/v1.1.0...v1.2.0) (2018-12-16)
+
+
+### Features
+
+* **greekeeper:** added greenkeeper ([8d0c60e](https://github.com/bootstrap-styled/toggle/commit/8d0c60e))
+
# [1.1.0](https://github.com/bootstrap-styled/toggle/compare/v1.0.10...v1.1.0) (2018-11-23)
diff --git a/lib/components/Toggle/ToggleOption.js b/lib/components/Toggle/ToggleOption.js
new file mode 100644
index 0000000..be78771
--- /dev/null
+++ b/lib/components/Toggle/ToggleOption.js
@@ -0,0 +1,87 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _react = _interopRequireDefault(require("react"));
+
+var _propTypes = _interopRequireDefault(require("prop-types"));
+
+var _Option = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Option"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
+
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+
+var injectIntl;
+var intlShape; // this make react-intl optional to our component and our module
+
+try {
+ var _require = require('react-intl'),
+ injectIntlDefault = _require.injectIntl,
+ intlShapeDefault = _require.intlShape; // eslint-disable-line
+
+
+ injectIntl = injectIntlDefault; // eslint-disable-line
+
+ intlShape = intlShapeDefault; // eslint-disable-line
+} catch (er) {
+ injectIntl = null;
+ intlShape = null;
+}
+/**
+ * This component is automatically used when using ``
+ * If you need a different option tag, instead just pass the prop `optionTag` to the `` component.
+ */
+
+
+var ToggleOption = function ToggleOption(_ref) {
+ var Tag = _ref.tag,
+ value = _ref.value,
+ message = _ref.message,
+ intl = _ref.intl,
+ rest = _objectWithoutProperties(_ref, ["tag", "value", "message", "intl"]);
+
+ return _react.default.createElement(Tag, _extends({
+ value: value
+ }, rest), message && intl ? intl.formatMessage(message) : value);
+};
+
+ToggleOption.defaultProps = {
+ tag: _Option.default
+};
+/* eslint-disable react/require-default-props */
+
+ToggleOption.propTypes = {
+ /**
+ * Replace the default component tag by the one specified. Can be:
+ */
+ tag: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.element, _propTypes.default.func, _propTypes.default.object]),
+
+ /**
+ * The value
+ */
+ value: _propTypes.default.string.isRequired,
+
+ /**
+ * react-intl messages (optional)
+ */
+ message: _propTypes.default.object
+};
+var exported = ToggleOption; // eslint-disable-line import/no-mutable-exports
+
+if (intlShape) {
+ /** @ignore */
+ ToggleOption.propTypes.intl = intlShape.isRequired;
+ exported = injectIntl(ToggleOption);
+}
+
+var _default = exported;
+exports.default = _default;
+module.exports = exports.default;
\ No newline at end of file
diff --git a/lib/components/Toggle/index.js b/lib/components/Toggle/index.js
new file mode 100644
index 0000000..0547699
--- /dev/null
+++ b/lib/components/Toggle/index.js
@@ -0,0 +1,106 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _react = _interopRequireDefault(require("react"));
+
+var _propTypes = _interopRequireDefault(require("prop-types"));
+
+var _Option = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Option"));
+
+var _Input = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Input"));
+
+var _ToggleOption = _interopRequireDefault(require("./ToggleOption"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
+
+function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
+
+function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
+
+function Toggle(props) {
+ var Tag = props.tag,
+ OptionTag = props.optionTag,
+ defaultLabel = props.defaultLabel,
+ className = props.className,
+ onToggle = props.onToggle,
+ value = props.value,
+ values = props.values,
+ messages = props.messages,
+ rest = _objectWithoutProperties(props, ["tag", "optionTag", "defaultLabel", "className", "onToggle", "value", "values", "messages"]); // If we have items, render them
+
+
+ var content = !values.length ? _react.default.createElement(_Option.default, null, defaultLabel) : values.map(function (v) {
+ return _react.default.createElement(OptionTag, {
+ key: v,
+ value: v,
+ message: messages[v]
+ });
+ });
+ return _react.default.createElement(Tag, _extends({
+ type: "select",
+ name: "select",
+ value: value,
+ onChange: onToggle,
+ className: className
+ }, rest), content);
+}
+
+Toggle.defaultProps = {
+ tag: _Input.default,
+ optionTag: _ToggleOption.default,
+ defaultLabel: '--',
+ messages: {},
+ value: '',
+ values: [],
+ onToggle: function onToggle() {}
+};
+/* eslint-disable react/require-default-props */
+
+Toggle.propTypes = {
+ /**
+ * Replace the default component tag by the one specified. Can be:
+ */
+ tag: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.element, _propTypes.default.object, _propTypes.default.func]),
+
+ /**
+ * Replace the option component tag by the one specified. Can be:
+ */
+ optionTag: _propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.element, _propTypes.default.object, _propTypes.default.func]),
+
+ /**
+ * Trigger when toggle
+ */
+ onToggle: _propTypes.default.func,
+
+ /**
+ * Label used by default when no selection
+ */
+ defaultLabel: _propTypes.default.string,
+
+ /**
+ * List of all possible values
+ */
+ values: _propTypes.default.array,
+
+ /**
+ * Current value
+ */
+ value: _propTypes.default.string,
+
+ /** @ignore */
+ className: _propTypes.default.string,
+
+ /** react-intl messages (optional) */
+ messages: _propTypes.default.object
+};
+/* eslint-enable react/require-default-props */
+
+var _default = Toggle;
+exports.default = _default;
+module.exports = exports.default;
\ No newline at end of file
diff --git a/lib/components/Toggle/tests/ToggleOption.test.js b/lib/components/Toggle/tests/ToggleOption.test.js
new file mode 100644
index 0000000..2f3619d
--- /dev/null
+++ b/lib/components/Toggle/tests/ToggleOption.test.js
@@ -0,0 +1,42 @@
+"use strict";
+
+var _react = _interopRequireDefault(require("react"));
+
+var _enzyme = require("enzyme");
+
+var _reactIntl = require("react-intl");
+
+var _ToggleOption = _interopRequireDefault(require("../ToggleOption"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint-disable function-paren-newline */
+describe('', function () {
+ it('should render default language messages', function () {
+ var defaultEnMessage = 'someContent';
+ var message = (0, _reactIntl.defineMessages)({
+ enMessage: {
+ id: 'boilerplate.containers.LocaleToggle.en',
+ defaultMessage: defaultEnMessage
+ }
+ });
+ var renderedComponent = (0, _enzyme.shallow)(_react.default.createElement(_reactIntl.IntlProvider, {
+ locale: "en"
+ }, _react.default.createElement(_ToggleOption.default, {
+ value: "en",
+ message: message.enMessage
+ })));
+ expect(renderedComponent.contains(_react.default.createElement(_ToggleOption.default, {
+ value: "en",
+ message: message.enMessage
+ }))).toBe(true);
+ });
+ it('should display `value`(two letter language code) when `message` is absent', function () {
+ var renderedComponent = (0, _enzyme.mount)(_react.default.createElement(_reactIntl.IntlProvider, {
+ locale: "de"
+ }, _react.default.createElement(_ToggleOption.default, {
+ value: "de"
+ })));
+ expect(renderedComponent.text()).toBe('de');
+ });
+});
\ No newline at end of file
diff --git a/lib/components/Toggle/tests/index.test.js b/lib/components/Toggle/tests/index.test.js
new file mode 100644
index 0000000..64130a4
--- /dev/null
+++ b/lib/components/Toggle/tests/index.test.js
@@ -0,0 +1,54 @@
+"use strict";
+
+var _react = _interopRequireDefault(require("react"));
+
+var _enzyme = require("enzyme");
+
+var _reactIntl = require("react-intl");
+
+var _Option = _interopRequireDefault(require("@bootstrap-styled/v4/lib/Option"));
+
+var _index = _interopRequireDefault(require("../index"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/* eslint-disable function-paren-newline */
+describe('', function () {
+ it('should contain default text', function () {
+ var defaultEnMessage = 'someContent';
+ var defaultDeMessage = 'someOtherContent';
+ var messages = (0, _reactIntl.defineMessages)({
+ en: {
+ id: 'boilerplate.containers.LocaleToggle.en',
+ defaultMessage: defaultEnMessage
+ },
+ de: {
+ id: 'boilerplate.containers.LocaleToggle.en',
+ defaultMessage: defaultDeMessage
+ }
+ });
+ var renderedComponent = (0, _enzyme.shallow)(_react.default.createElement(_reactIntl.IntlProvider, {
+ locale: "en"
+ }, _react.default.createElement(_index.default, {
+ values: ['en', 'de'],
+ messages: messages
+ })));
+ expect(renderedComponent.contains(_react.default.createElement(_index.default, {
+ values: ['en', 'de'],
+ messages: messages
+ }))).toBe(true);
+ expect(renderedComponent.find('option').length).toBe(0);
+ });
+ it('should not have ToggleOptions if props.values is not defined', function () {
+ var renderedComponent = (0, _enzyme.shallow)(_react.default.createElement(_index.default, null));
+ expect(renderedComponent.contains(_react.default.createElement(_Option.default, null, "--"))).toBe(true);
+ expect(renderedComponent.find('Option').length).toBe(1);
+ });
+ it('should have ToggleOptions if props.values is defined', function () {
+ var renderedComponent = (0, _enzyme.shallow)(_react.default.createElement(_index.default, {
+ value: "a",
+ values: ['a', 'b']
+ }));
+ expect(renderedComponent.find('InjectIntl(ToggleOption)').length).toBe(2);
+ });
+});
\ No newline at end of file
diff --git a/lib/index.js b/lib/index.js
new file mode 100644
index 0000000..b88c53b
--- /dev/null
+++ b/lib/index.js
@@ -0,0 +1,23 @@
+"use strict";
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "default", {
+ enumerable: true,
+ get: function get() {
+ return _Toggle.default;
+ }
+});
+Object.defineProperty(exports, "ToggleOption", {
+ enumerable: true,
+ get: function get() {
+ return _ToggleOption.default;
+ }
+});
+
+var _Toggle = _interopRequireDefault(require("./components/Toggle"));
+
+var _ToggleOption = _interopRequireDefault(require("./components/Toggle/ToggleOption"));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
\ No newline at end of file
diff --git a/lib/tests/index.test.js b/lib/tests/index.test.js
new file mode 100644
index 0000000..9fa42cb
--- /dev/null
+++ b/lib/tests/index.test.js
@@ -0,0 +1,11 @@
+"use strict";
+
+var exported = require('../index');
+
+describe('should export', function () {
+ Object.keys(exported).forEach(function (key) {
+ it("".concat(key, " should be defined"), function () {
+ expect(exported[key]).toBeDefined();
+ });
+ });
+});
\ No newline at end of file
diff --git a/package.json b/package.json
index 10e3825..cd5471b 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@bootstrap-styled/toggle",
- "version": "1.1.0",
+ "version": "1.2.0",
"description": "Toggle option made with bootstrap and optionaly use react-intl or any other ui component",
"main": "lib/index.js",
"jsnext:main": "dist/@bootstrap-styled/toggle.es.js",