@madie/madie-design-system 1.2.92 → 1.2.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -68,7 +68,7 @@ const MadieDeleteDialog = ({
68
68
  {otherDialogProps.hideWarning !== true && (
69
69
  <section className="dialog-warning-action">
70
70
  <ErrorIcon />
71
- <p>This Action cannot be undone.</p>
71
+ <p>This action cannot be undone.</p>
72
72
  </section>
73
73
  )}
74
74
  </div>
@@ -0,0 +1,75 @@
1
+ import React, { useState } from "react";
2
+ import PropTypes from "prop-types";
3
+
4
+ const Toggle = ({
5
+ checked,
6
+ className,
7
+ defaultChecked,
8
+ disabled,
9
+ id,
10
+ label,
11
+ onChange,
12
+ ...rest
13
+ }) => {
14
+ const [uncontrolledChecked, setUncontrolledChecked] =
15
+ useState(defaultChecked);
16
+ const isControlled = checked !== undefined;
17
+ const isChecked = isControlled ? checked : uncontrolledChecked;
18
+ const classes = [
19
+ "qpp-c-toggle",
20
+ disabled && "qpp-c-toggle--disabled",
21
+ className,
22
+ ]
23
+ .filter(Boolean)
24
+ .join(" ");
25
+
26
+ const handleChange = (event) => {
27
+ const nextChecked = event.target.checked;
28
+
29
+ if (!isControlled) {
30
+ setUncontrolledChecked(nextChecked);
31
+ }
32
+
33
+ onChange(event, nextChecked);
34
+ };
35
+
36
+ return (
37
+ <div className={classes}>
38
+ <label className="qpp-c-toggle__label">
39
+ <input
40
+ checked={isChecked}
41
+ className="qpp-c-toggle__input"
42
+ disabled={disabled}
43
+ id={id}
44
+ onChange={handleChange}
45
+ role="switch"
46
+ type="checkbox"
47
+ {...rest}
48
+ />
49
+ <span className="qpp-c-toggle__control" aria-hidden="true" />
50
+ {label && <span className="qpp-c-toggle__text">{label}</span>}
51
+ </label>
52
+ </div>
53
+ );
54
+ };
55
+
56
+ Toggle.propTypes = {
57
+ checked: PropTypes.bool,
58
+ className: PropTypes.string,
59
+ defaultChecked: PropTypes.bool,
60
+ disabled: PropTypes.bool,
61
+ id: PropTypes.string.isRequired,
62
+ label: PropTypes.node,
63
+ onChange: PropTypes.func,
64
+ };
65
+
66
+ Toggle.defaultProps = {
67
+ checked: undefined,
68
+ className: "",
69
+ defaultChecked: false,
70
+ disabled: false,
71
+ label: null,
72
+ onChange: () => null,
73
+ };
74
+
75
+ export default Toggle;
@@ -0,0 +1,33 @@
1
+ import React, { useState } from "react";
2
+ import Toggle from "./Toggle";
3
+
4
+ export default {
5
+ title: "Toggle",
6
+ component: Toggle,
7
+ };
8
+
9
+ export const Default = () => {
10
+ const [checked, setChecked] = useState(false);
11
+
12
+ return (
13
+ <div className="qpp-u-padding--16">
14
+ <Toggle
15
+ checked={checked}
16
+ id="default-toggle"
17
+ label="Toggle"
18
+ onChange={(event, nextChecked) => setChecked(nextChecked)}
19
+ />
20
+ </div>
21
+ );
22
+ };
23
+
24
+ export const Disabled = () => (
25
+ <div className="qpp-u-padding--16">
26
+ <Toggle
27
+ defaultChecked
28
+ disabled
29
+ id="disabled-toggle"
30
+ label="Toggle"
31
+ />
32
+ </div>
33
+ );
@@ -36,6 +36,7 @@ import TextField from "./TextField";
36
36
  import TimeField from "./TimeField/TimeField";
37
37
  import TextArea from "./TextArea";
38
38
  import Tooltip from "./Tooltip";
39
+ import Toggle from "./Toggle/Toggle";
39
40
  import Toast from "./Toast";
40
41
  import Infotip from "./Infotip";
41
42
  import SearchAndFilter from "./SearchAndFilter";
@@ -173,6 +174,7 @@ export {
173
174
  TimeField,
174
175
  TextField,
175
176
  TextArea,
177
+ Toggle,
176
178
  Toast,
177
179
  Dropdown,
178
180
  Tooltip,