From c1b1d8c0798dfdddcabc6140c5c78ce9693b15ce Mon Sep 17 00:00:00 2001 From: Aleksandr Gumroian Date: Tue, 18 Aug 2020 10:13:57 +0200 Subject: [PATCH] Add Switch component --- src/bootstrap/Switch.js | 45 +++++++++++++++++++++++++++++++++++++++++ src/index.js | 31 ++++++++++++++++------------ 2 files changed, 63 insertions(+), 13 deletions(-) create mode 100644 src/bootstrap/Switch.js diff --git a/src/bootstrap/Switch.js b/src/bootstrap/Switch.js new file mode 100644 index 0000000..4113189 --- /dev/null +++ b/src/bootstrap/Switch.js @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2020 CZ.NIC z.s.p.o. (http://www.nic.cz/) + * + * This is free software, licensed under the GNU General Public License v3. + * See /LICENSE for more information. + */ + +import React from "react"; +import PropTypes from "prop-types"; +import { useUID } from "react-uid"; + +Switch.propTypes = { + label: PropTypes.oneOfType([ + PropTypes.string, + PropTypes.element, + PropTypes.node, + PropTypes.arrayOf(PropTypes.node), + ]).isRequired, + id: PropTypes.string.isRequired, + helpText: PropTypes.string, + switchHeading: PropTypes.string, +}; + +export function Switch({ + label, id, helpText, switchHeading, ...props +}) { + const uid = useUID(); + return ( +
+
+ + + {helpText && {helpText}} +
+
+ ); +} diff --git a/src/index.js b/src/index.js index 832816d..0d7f11b 100644 --- a/src/index.js +++ b/src/index.js @@ -31,17 +31,10 @@ export { Radio, RadioSet } from "./bootstrap/RadioSet"; export { Select } from "./bootstrap/Select"; export { TextInput } from "./bootstrap/TextInput"; export { formFieldsSize, buttonFormFieldSize } from "./bootstrap/constants"; +export { Switch } from "./bootstrap/Switch"; -export { - Spinner, - SpinnerElement, -} from "./bootstrap/Spinner"; -export { - Modal, - ModalBody, - ModalFooter, - ModalHeader, -} from "./bootstrap/Modal"; +export { Spinner, SpinnerElement } from "./bootstrap/Spinner"; +export { Modal, ModalBody, ModalFooter, ModalHeader } from "./bootstrap/Modal"; // Common export { RebootButton } from "./common/RebootButton"; @@ -49,7 +42,10 @@ export { WiFiSettings } from "./common/WiFiSettings/WiFiSettings"; // Form export { ForisForm } from "./form/components/ForisForm"; -export { SubmitButton, STATES as SUBMIT_BUTTON_STATES } from "./form/components/SubmitButton"; +export { + SubmitButton, + STATES as SUBMIT_BUTTON_STATES, +} from "./form/components/SubmitButton"; export { useForisModule, useForm } from "./form/hooks"; // WebSockets @@ -58,9 +54,18 @@ export { WebSockets } from "./webSockets/WebSockets"; // Utils export { Portal } from "./utils/Portal"; -export { undefinedIfEmpty, withoutUndefinedKeys, onlySpecifiedKeys } from "./utils/objectHelpers"; export { - withEither, withSpinner, withSending, withSpinnerOnSending, withError, withErrorMessage, + undefinedIfEmpty, + withoutUndefinedKeys, + onlySpecifiedKeys, +} from "./utils/objectHelpers"; +export { + withEither, + withSpinner, + withSending, + withSpinnerOnSending, + withError, + withErrorMessage, } from "./utils/conditionalHOCs"; export { ErrorMessage } from "./utils/ErrorMessage"; export { useClickOutside } from "./utils/hooks";