@nulogy/components 15.1.3 → 15.2.0

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.
package/README.md CHANGED
@@ -40,20 +40,18 @@ Note that loading fonts from Google API is just an example and not the most perf
40
40
 
41
41
  Wrap your application in the NDSProvider component to access Nulogy's theme values and add typographic defaults.
42
42
 
43
- ```js
43
+ ```jsx
44
44
  import React from "react";
45
45
  import { NDSProvider } from "@nulogy/components";
46
46
 
47
- class App extends React.Component {
48
- render() {
49
- return <NDSProvider>// your application</NDSProvider>;
50
- }
47
+ export default function App() {
48
+ return <NDSProvider>// your application</NDSProvider>;
51
49
  }
52
50
  ```
53
51
 
54
52
  ### 3. Import desired components
55
53
 
56
- ```js
54
+ ```jsx
57
55
  import { Button } from "@nulogy/components";
58
56
 
59
57
  const SomeView = () => <Button>Click me</Button>;
package/dist/main.js CHANGED
@@ -25973,10 +25973,12 @@
25973
25973
  componentId: "sc-lf392x-0"
25974
25974
  })(function (_ref) {
25975
25975
  var _ref$color = _ref.color,
25976
- color = _ref$color === void 0 ? "black" : _ref$color;
25976
+ color = _ref$color === void 0 ? "black" : _ref$color,
25977
+ disabled = _ref.disabled;
25977
25978
  return {
25978
25979
  color: color,
25979
- display: "inline-block"
25980
+ display: "inline-block",
25981
+ cursor: disabled ? undefined : "pointer"
25980
25982
  };
25981
25983
  }, display, space, color);
25982
25984
 
@@ -51418,14 +51420,14 @@
51418
51420
  marginBottom: theme.space.x1
51419
51421
  }
51420
51422
  }, /*#__PURE__*/React__default["default"].createElement("span", {
51421
- style: labelTextStyles$1(theme)
51423
+ style: labelTextStyles(theme)
51422
51424
  }, labelText), requirementText && /*#__PURE__*/React__default["default"].createElement(RequirementText, null, requirementText)), helpText && /*#__PURE__*/React__default["default"].createElement(HelpText$1, null, helpText), getRadioButtons(otherProps), /*#__PURE__*/React__default["default"].createElement(InlineValidation, {
51423
51425
  mt: "x1",
51424
51426
  errorMessage: errorMessage,
51425
51427
  errorList: errorList
51426
51428
  }));
51427
51429
  }
51428
- var labelTextStyles$1 = function labelTextStyles(theme) {
51430
+ var labelTextStyles = function labelTextStyles(theme) {
51429
51431
  return {
51430
51432
  fontSize: theme.fontSizes.small,
51431
51433
  fontWeight: Number(theme.fontWeights.bold),
@@ -54987,8 +54989,8 @@
54987
54989
  }
54988
54990
  };
54989
54991
 
54990
- var getSwitchBackground = function getSwitchBackground(toggled) {
54991
- return toggled ? "darkBlue" : "darkGrey";
54992
+ var getSwitchBackground = function getSwitchBackground(checked) {
54993
+ return checked ? "darkBlue" : "darkGrey";
54992
54994
  };
54993
54995
  var animationConfig = {
54994
54996
  transition: {
@@ -55002,8 +55004,7 @@
55002
55004
  function Switch(_ref) {
55003
55005
  var children = _ref.children,
55004
55006
  disabled = _ref.disabled,
55005
- toggled = _ref.toggled,
55006
- onClick = _ref.onClick;
55007
+ checked = _ref.checked;
55007
55008
  var componentVariant = useComponentVariant();
55008
55009
  return /*#__PURE__*/React__default["default"].createElement(AnimatedBox, {
55009
55010
  marginTop: componentVariant === "touch" ? "x0_25" : "none",
@@ -55011,14 +55012,13 @@
55011
55012
  flexShrink: 0,
55012
55013
  height: "24px",
55013
55014
  width: "48px",
55014
- bg: disabled ? "grey" : getSwitchBackground(toggled),
55015
+ bg: disabled ? "grey" : getSwitchBackground(checked),
55015
55016
  borderRadius: "20px",
55016
55017
  padding: "2px",
55017
55018
  boxShadow: "small",
55018
- animate: toggled ? "toggled" : "initial",
55019
+ animate: checked ? "toggled" : "initial",
55019
55020
  whileHover: "active",
55020
- whileFocus: "active",
55021
- onClick: onClick
55021
+ whileFocus: "active"
55022
55022
  }, children);
55023
55023
  }
55024
55024
  var Slider = function Slider(_ref2) {
@@ -55068,142 +55068,107 @@
55068
55068
  boxShadow: disabled ? undefined : theme.shadows.focus
55069
55069
  }, _ref4;
55070
55070
  });
55071
- var ToggleButton = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
55072
- var disabled = props.disabled,
55073
- defaultToggled = props.defaultToggled,
55074
- toggled = props.toggled;
55075
- var inputRef = React.useRef(null);
55076
- React.useImperativeHandle(ref, function () {
55077
- return inputRef.current;
55078
- });
55079
- var handleClick = function handleClick() {
55080
- if (inputRef.current) {
55081
- // triggers the onChange event on a checkbox input
55082
- inputRef.current.click();
55083
- }
55084
- };
55071
+ var ToggleButton = /*#__PURE__*/React__default["default"].forwardRef(function (_a, ref) {
55072
+ var disabled = _a.disabled,
55073
+ checked = _a.checked,
55074
+ props = __rest(_a, ["disabled", "checked"]);
55085
55075
  return /*#__PURE__*/React__default["default"].createElement(Switch, {
55086
55076
  disabled: disabled,
55087
- toggled: toggled,
55088
- onClick: handleClick
55077
+ checked: checked
55089
55078
  }, /*#__PURE__*/React__default["default"].createElement(ToggleInput, Object.assign({
55090
- ref: inputRef,
55091
55079
  type: "checkbox",
55092
- defaultChecked: defaultToggled,
55093
- value: toggled ? "on" : "off"
55080
+ role: "switch",
55081
+ checked: checked,
55082
+ ref: ref,
55083
+ value: checked ? "on" : "off"
55094
55084
  }, props)), /*#__PURE__*/React__default["default"].createElement(Slider, {
55095
55085
  disabled: disabled
55096
55086
  }));
55097
55087
  });
55098
55088
 
55099
- var labelTextStyles = function labelTextStyles(theme) {
55100
- return {
55101
- fontSize: theme.fontSizes.small,
55102
- fontWeight: theme.fontWeights.bold,
55103
- lineHeight: theme.lineHeights.smallTextBase
55104
- };
55105
- };
55106
- function MaybeToggleTitle(_a) {
55107
- var labelText = _a.labelText,
55089
+ var Toggle = /*#__PURE__*/React__default["default"].forwardRef(function (_a, ref) {
55090
+ var _b;
55091
+ var checked = _a.checked,
55092
+ variant = _a.variant,
55093
+ className = _a.className,
55094
+ labelText = _a.labelText,
55108
55095
  requirementText = _a.requirementText,
55109
55096
  helpText = _a.helpText,
55110
- children = _a.children,
55111
- props = __rest(_a, ["labelText", "requirementText", "helpText", "children"]);
55112
- var themeContext = React.useContext(styled.ThemeContext);
55113
- return labelText ? (/*#__PURE__*/React__default["default"].createElement("div", Object.assign({}, props), /*#__PURE__*/React__default["default"].createElement(Box, {
55114
- mb: children && "x1"
55115
- }, /*#__PURE__*/React__default["default"].createElement("span", {
55116
- style: labelTextStyles(themeContext)
55117
- }, labelText), requirementText && /*#__PURE__*/React__default["default"].createElement(RequirementText, null, requirementText), helpText && /*#__PURE__*/React__default["default"].createElement(HelpText$1, null, helpText)), children)) : (/*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, children));
55118
- }
55119
- var BaseToggle = function BaseToggle(_a) {
55120
- var disabled = _a.disabled,
55097
+ hint = _a.hint,
55098
+ disabled = _a.disabled,
55099
+ toggled = _a.toggled,
55121
55100
  onChange = _a.onChange,
55122
55101
  onText = _a.onText,
55123
55102
  offText = _a.offText,
55124
- className = _a.className,
55125
55103
  required = _a.required,
55126
55104
  error = _a.error,
55127
55105
  id = _a.id,
55128
- labelText = _a.labelText,
55129
- requirementText = _a.requirementText,
55130
- helpText = _a.helpText,
55131
- toggled = _a.toggled,
55132
- _a$onClick = _a.onClick,
55133
- onClick = _a$onClick === void 0 ? noop$2 : _a$onClick,
55134
- variant = _a.variant,
55106
+ defaultToggled = _a.defaultToggled,
55107
+ onClick = _a.onClick,
55135
55108
  dataTestId = _a["data-testid"],
55136
- props = __rest(_a, ["disabled", "onChange", "onText", "offText", "className", "required", "error", "id", "labelText", "requirementText", "helpText", "toggled", "onClick", "variant", "data-testid"]);
55137
- var handleClick = function handleClick(e) {
55138
- onClick(e);
55139
- };
55109
+ props = __rest(_a, ["checked", "variant", "className", "labelText", "requirementText", "helpText", "hint", "disabled", "toggled", "onChange", "onText", "offText", "required", "error", "id", "defaultToggled", "onClick", "data-testid"]);
55140
55110
  var componentVariant = useComponentVariant(variant);
55141
55111
  var spaceProps = getSubset(props, propTypes$1.space);
55142
55112
  var restProps = omitSubset(props, propTypes$1.space);
55113
+ React.useEffect(function () {
55114
+ if (defaultToggled) {
55115
+ console.warn("defaultToggled is deprecated. Use checked instead.");
55116
+ }
55117
+ if (checked) {
55118
+ console.warn("checked is deprecated. Use checked instead.");
55119
+ }
55120
+ if (onClick) {
55121
+ console.warn("onClick is deprecated. Use onChange instead.");
55122
+ }
55123
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55124
+ }, []);
55125
+ var _checked = (_b = checked !== null && checked !== void 0 ? checked : defaultToggled) !== null && _b !== void 0 ? _b : toggled;
55126
+ var _onChange = React.useCallback(function (e) {
55127
+ if (onClick) {
55128
+ onClick(e);
55129
+ }
55130
+ if (onChange) {
55131
+ onChange(e);
55132
+ }
55133
+ }, [onClick, onChange]);
55134
+ React.useEffect(function () {
55135
+ if (_checked !== undefined && !(onChange || onClick)) {
55136
+ console.warn("onChange or onClick is required when checked is set.");
55137
+ }
55138
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55139
+ }, []);
55143
55140
  return /*#__PURE__*/React__default["default"].createElement(Field, Object.assign({
55144
55141
  className: className,
55145
55142
  alignItems: "flex-start",
55146
55143
  py: "half"
55147
- }, spaceProps), /*#__PURE__*/React__default["default"].createElement(MaybeToggleTitle, {
55148
- id: labelText && labelText + "-label",
55144
+ }, spaceProps), /*#__PURE__*/React__default["default"].createElement(FieldLabel, {
55145
+ htmlFor: id,
55149
55146
  labelText: labelText,
55150
55147
  requirementText: requirementText,
55151
- helpText: helpText
55152
- }, /*#__PURE__*/React__default["default"].createElement(ClickInputLabel, {
55153
- variant: componentVariant,
55154
- as: "div",
55155
- onClick: onClick,
55148
+ helpText: helpText,
55149
+ hint: hint,
55156
55150
  disabled: disabled,
55151
+ variant: componentVariant,
55157
55152
  "data-testid": dataTestId
55153
+ }, /*#__PURE__*/React__default["default"].createElement(Flex, {
55154
+ flexDirection: "row",
55155
+ alignItems: "center"
55158
55156
  }, /*#__PURE__*/React__default["default"].createElement(ToggleButton, Object.assign({
55159
55157
  id: id,
55160
- checked: toggled,
55161
- onChange: onChange,
55158
+ checked: _checked,
55159
+ onChange: _onChange,
55162
55160
  disabled: disabled,
55163
55161
  required: required,
55164
55162
  "aria-required": required,
55165
- "aria-invalid": error,
55166
- "aria-labelledby": labelText && labelText + "-label",
55167
- onClick: handleClick,
55168
- toggled: toggled
55163
+ "aria-invalid": error
55169
55164
  }, restProps, {
55170
- ref: props.innerRef
55165
+ ref: ref
55171
55166
  })), (onText || offText) && (/*#__PURE__*/React__default["default"].createElement(Text, {
55172
55167
  disabled: disabled,
55173
55168
  mb: "none",
55174
- ml: "x1"
55175
- }, toggled ? onText : offText)))));
55176
- };
55177
- var StatefulToggle = function StatefulToggle(_a) {
55178
- var defaultToggled = _a.defaultToggled,
55179
- _a$onClick2 = _a.onClick,
55180
- onClick = _a$onClick2 === void 0 ? noop$2 : _a$onClick2,
55181
- disabled = _a.disabled,
55182
- props = __rest(_a, ["defaultToggled", "onClick", "disabled"]);
55183
- var _useState = React.useState(defaultToggled),
55184
- toggled = _useState[0],
55185
- setToggled = _useState[1];
55186
- var handleClick = function handleClick(e) {
55187
- if (!disabled) setToggled(!toggled);
55188
- onClick(e);
55189
- };
55190
- return /*#__PURE__*/React__default["default"].createElement(BaseToggle, Object.assign({
55191
- toggled: toggled,
55192
- onClick: handleClick,
55193
- disabled: disabled
55194
- }, props));
55195
- };
55196
- var Toggle = function Toggle(_a) {
55197
- var toggled = _a.toggled,
55198
- props = __rest(_a, ["toggled"]);
55199
- return toggled === undefined ? /*#__PURE__*/React__default["default"].createElement(StatefulToggle, Object.assign({}, props)) : /*#__PURE__*/React__default["default"].createElement(BaseToggle, Object.assign({
55200
- toggled: toggled
55201
- }, props));
55202
- };
55203
- var ToggleComponent = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
55204
- return /*#__PURE__*/React__default["default"].createElement(Toggle, Object.assign({
55205
- innerRef: ref
55206
- }, props));
55169
+ ml: "x1",
55170
+ "aria-hidden": true
55171
+ }, _checked ? onText : offText)))));
55207
55172
  });
55208
55173
 
55209
55174
  var TOPBAR = {
@@ -55800,7 +55765,7 @@
55800
55765
  exports.TimeRange = TimeRange;
55801
55766
  exports.Toast = Toast;
55802
55767
  exports.ToastContainer = ToastContainer;
55803
- exports.Toggle = ToggleComponent;
55768
+ exports.Toggle = Toggle;
55804
55769
  exports.Tooltip = Tooltip;
55805
55770
  exports.TopBar = TopBar;
55806
55771
  exports.TruncatedText = TruncatedText;
@@ -25956,10 +25956,12 @@ var Label = styled.label.withConfig({
25956
25956
  componentId: "sc-lf392x-0"
25957
25957
  })(function (_ref) {
25958
25958
  var _ref$color = _ref.color,
25959
- color = _ref$color === void 0 ? "black" : _ref$color;
25959
+ color = _ref$color === void 0 ? "black" : _ref$color,
25960
+ disabled = _ref.disabled;
25960
25961
  return {
25961
25962
  color: color,
25962
- display: "inline-block"
25963
+ display: "inline-block",
25964
+ cursor: disabled ? undefined : "pointer"
25963
25965
  };
25964
25966
  }, display, space, color);
25965
25967
 
@@ -51401,14 +51403,14 @@ function RadioGroup(_a) {
51401
51403
  marginBottom: theme.space.x1
51402
51404
  }
51403
51405
  }, /*#__PURE__*/React__default.createElement("span", {
51404
- style: labelTextStyles$1(theme)
51406
+ style: labelTextStyles(theme)
51405
51407
  }, labelText), requirementText && /*#__PURE__*/React__default.createElement(RequirementText, null, requirementText)), helpText && /*#__PURE__*/React__default.createElement(HelpText$1, null, helpText), getRadioButtons(otherProps), /*#__PURE__*/React__default.createElement(InlineValidation, {
51406
51408
  mt: "x1",
51407
51409
  errorMessage: errorMessage,
51408
51410
  errorList: errorList
51409
51411
  }));
51410
51412
  }
51411
- var labelTextStyles$1 = function labelTextStyles(theme) {
51413
+ var labelTextStyles = function labelTextStyles(theme) {
51412
51414
  return {
51413
51415
  fontSize: theme.fontSizes.small,
51414
51416
  fontWeight: Number(theme.fontWeights.bold),
@@ -54970,8 +54972,8 @@ var toast = {
54970
54972
  }
54971
54973
  };
54972
54974
 
54973
- var getSwitchBackground = function getSwitchBackground(toggled) {
54974
- return toggled ? "darkBlue" : "darkGrey";
54975
+ var getSwitchBackground = function getSwitchBackground(checked) {
54976
+ return checked ? "darkBlue" : "darkGrey";
54975
54977
  };
54976
54978
  var animationConfig = {
54977
54979
  transition: {
@@ -54985,8 +54987,7 @@ var animationConfig = {
54985
54987
  function Switch(_ref) {
54986
54988
  var children = _ref.children,
54987
54989
  disabled = _ref.disabled,
54988
- toggled = _ref.toggled,
54989
- onClick = _ref.onClick;
54990
+ checked = _ref.checked;
54990
54991
  var componentVariant = useComponentVariant();
54991
54992
  return /*#__PURE__*/React__default.createElement(AnimatedBox, {
54992
54993
  marginTop: componentVariant === "touch" ? "x0_25" : "none",
@@ -54994,14 +54995,13 @@ function Switch(_ref) {
54994
54995
  flexShrink: 0,
54995
54996
  height: "24px",
54996
54997
  width: "48px",
54997
- bg: disabled ? "grey" : getSwitchBackground(toggled),
54998
+ bg: disabled ? "grey" : getSwitchBackground(checked),
54998
54999
  borderRadius: "20px",
54999
55000
  padding: "2px",
55000
55001
  boxShadow: "small",
55001
- animate: toggled ? "toggled" : "initial",
55002
+ animate: checked ? "toggled" : "initial",
55002
55003
  whileHover: "active",
55003
- whileFocus: "active",
55004
- onClick: onClick
55004
+ whileFocus: "active"
55005
55005
  }, children);
55006
55006
  }
55007
55007
  var Slider = function Slider(_ref2) {
@@ -55051,142 +55051,107 @@ var ToggleInput = styled.input.withConfig({
55051
55051
  boxShadow: disabled ? undefined : theme.shadows.focus
55052
55052
  }, _ref4;
55053
55053
  });
55054
- var ToggleButton = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
55055
- var disabled = props.disabled,
55056
- defaultToggled = props.defaultToggled,
55057
- toggled = props.toggled;
55058
- var inputRef = useRef(null);
55059
- useImperativeHandle(ref, function () {
55060
- return inputRef.current;
55061
- });
55062
- var handleClick = function handleClick() {
55063
- if (inputRef.current) {
55064
- // triggers the onChange event on a checkbox input
55065
- inputRef.current.click();
55066
- }
55067
- };
55054
+ var ToggleButton = /*#__PURE__*/React__default.forwardRef(function (_a, ref) {
55055
+ var disabled = _a.disabled,
55056
+ checked = _a.checked,
55057
+ props = __rest(_a, ["disabled", "checked"]);
55068
55058
  return /*#__PURE__*/React__default.createElement(Switch, {
55069
55059
  disabled: disabled,
55070
- toggled: toggled,
55071
- onClick: handleClick
55060
+ checked: checked
55072
55061
  }, /*#__PURE__*/React__default.createElement(ToggleInput, Object.assign({
55073
- ref: inputRef,
55074
55062
  type: "checkbox",
55075
- defaultChecked: defaultToggled,
55076
- value: toggled ? "on" : "off"
55063
+ role: "switch",
55064
+ checked: checked,
55065
+ ref: ref,
55066
+ value: checked ? "on" : "off"
55077
55067
  }, props)), /*#__PURE__*/React__default.createElement(Slider, {
55078
55068
  disabled: disabled
55079
55069
  }));
55080
55070
  });
55081
55071
 
55082
- var labelTextStyles = function labelTextStyles(theme) {
55083
- return {
55084
- fontSize: theme.fontSizes.small,
55085
- fontWeight: theme.fontWeights.bold,
55086
- lineHeight: theme.lineHeights.smallTextBase
55087
- };
55088
- };
55089
- function MaybeToggleTitle(_a) {
55090
- var labelText = _a.labelText,
55072
+ var Toggle = /*#__PURE__*/React__default.forwardRef(function (_a, ref) {
55073
+ var _b;
55074
+ var checked = _a.checked,
55075
+ variant = _a.variant,
55076
+ className = _a.className,
55077
+ labelText = _a.labelText,
55091
55078
  requirementText = _a.requirementText,
55092
55079
  helpText = _a.helpText,
55093
- children = _a.children,
55094
- props = __rest(_a, ["labelText", "requirementText", "helpText", "children"]);
55095
- var themeContext = useContext(ThemeContext$1);
55096
- return labelText ? (/*#__PURE__*/React__default.createElement("div", Object.assign({}, props), /*#__PURE__*/React__default.createElement(Box, {
55097
- mb: children && "x1"
55098
- }, /*#__PURE__*/React__default.createElement("span", {
55099
- style: labelTextStyles(themeContext)
55100
- }, labelText), requirementText && /*#__PURE__*/React__default.createElement(RequirementText, null, requirementText), helpText && /*#__PURE__*/React__default.createElement(HelpText$1, null, helpText)), children)) : (/*#__PURE__*/React__default.createElement(React__default.Fragment, null, children));
55101
- }
55102
- var BaseToggle = function BaseToggle(_a) {
55103
- var disabled = _a.disabled,
55080
+ hint = _a.hint,
55081
+ disabled = _a.disabled,
55082
+ toggled = _a.toggled,
55104
55083
  onChange = _a.onChange,
55105
55084
  onText = _a.onText,
55106
55085
  offText = _a.offText,
55107
- className = _a.className,
55108
55086
  required = _a.required,
55109
55087
  error = _a.error,
55110
55088
  id = _a.id,
55111
- labelText = _a.labelText,
55112
- requirementText = _a.requirementText,
55113
- helpText = _a.helpText,
55114
- toggled = _a.toggled,
55115
- _a$onClick = _a.onClick,
55116
- onClick = _a$onClick === void 0 ? noop$2 : _a$onClick,
55117
- variant = _a.variant,
55089
+ defaultToggled = _a.defaultToggled,
55090
+ onClick = _a.onClick,
55118
55091
  dataTestId = _a["data-testid"],
55119
- props = __rest(_a, ["disabled", "onChange", "onText", "offText", "className", "required", "error", "id", "labelText", "requirementText", "helpText", "toggled", "onClick", "variant", "data-testid"]);
55120
- var handleClick = function handleClick(e) {
55121
- onClick(e);
55122
- };
55092
+ props = __rest(_a, ["checked", "variant", "className", "labelText", "requirementText", "helpText", "hint", "disabled", "toggled", "onChange", "onText", "offText", "required", "error", "id", "defaultToggled", "onClick", "data-testid"]);
55123
55093
  var componentVariant = useComponentVariant(variant);
55124
55094
  var spaceProps = getSubset(props, propTypes$1.space);
55125
55095
  var restProps = omitSubset(props, propTypes$1.space);
55096
+ useEffect(function () {
55097
+ if (defaultToggled) {
55098
+ console.warn("defaultToggled is deprecated. Use checked instead.");
55099
+ }
55100
+ if (checked) {
55101
+ console.warn("checked is deprecated. Use checked instead.");
55102
+ }
55103
+ if (onClick) {
55104
+ console.warn("onClick is deprecated. Use onChange instead.");
55105
+ }
55106
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55107
+ }, []);
55108
+ var _checked = (_b = checked !== null && checked !== void 0 ? checked : defaultToggled) !== null && _b !== void 0 ? _b : toggled;
55109
+ var _onChange = useCallback(function (e) {
55110
+ if (onClick) {
55111
+ onClick(e);
55112
+ }
55113
+ if (onChange) {
55114
+ onChange(e);
55115
+ }
55116
+ }, [onClick, onChange]);
55117
+ useEffect(function () {
55118
+ if (_checked !== undefined && !(onChange || onClick)) {
55119
+ console.warn("onChange or onClick is required when checked is set.");
55120
+ }
55121
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55122
+ }, []);
55126
55123
  return /*#__PURE__*/React__default.createElement(Field, Object.assign({
55127
55124
  className: className,
55128
55125
  alignItems: "flex-start",
55129
55126
  py: "half"
55130
- }, spaceProps), /*#__PURE__*/React__default.createElement(MaybeToggleTitle, {
55131
- id: labelText && labelText + "-label",
55127
+ }, spaceProps), /*#__PURE__*/React__default.createElement(FieldLabel, {
55128
+ htmlFor: id,
55132
55129
  labelText: labelText,
55133
55130
  requirementText: requirementText,
55134
- helpText: helpText
55135
- }, /*#__PURE__*/React__default.createElement(ClickInputLabel, {
55136
- variant: componentVariant,
55137
- as: "div",
55138
- onClick: onClick,
55131
+ helpText: helpText,
55132
+ hint: hint,
55139
55133
  disabled: disabled,
55134
+ variant: componentVariant,
55140
55135
  "data-testid": dataTestId
55136
+ }, /*#__PURE__*/React__default.createElement(Flex, {
55137
+ flexDirection: "row",
55138
+ alignItems: "center"
55141
55139
  }, /*#__PURE__*/React__default.createElement(ToggleButton, Object.assign({
55142
55140
  id: id,
55143
- checked: toggled,
55144
- onChange: onChange,
55141
+ checked: _checked,
55142
+ onChange: _onChange,
55145
55143
  disabled: disabled,
55146
55144
  required: required,
55147
55145
  "aria-required": required,
55148
- "aria-invalid": error,
55149
- "aria-labelledby": labelText && labelText + "-label",
55150
- onClick: handleClick,
55151
- toggled: toggled
55146
+ "aria-invalid": error
55152
55147
  }, restProps, {
55153
- ref: props.innerRef
55148
+ ref: ref
55154
55149
  })), (onText || offText) && (/*#__PURE__*/React__default.createElement(Text, {
55155
55150
  disabled: disabled,
55156
55151
  mb: "none",
55157
- ml: "x1"
55158
- }, toggled ? onText : offText)))));
55159
- };
55160
- var StatefulToggle = function StatefulToggle(_a) {
55161
- var defaultToggled = _a.defaultToggled,
55162
- _a$onClick2 = _a.onClick,
55163
- onClick = _a$onClick2 === void 0 ? noop$2 : _a$onClick2,
55164
- disabled = _a.disabled,
55165
- props = __rest(_a, ["defaultToggled", "onClick", "disabled"]);
55166
- var _useState = useState(defaultToggled),
55167
- toggled = _useState[0],
55168
- setToggled = _useState[1];
55169
- var handleClick = function handleClick(e) {
55170
- if (!disabled) setToggled(!toggled);
55171
- onClick(e);
55172
- };
55173
- return /*#__PURE__*/React__default.createElement(BaseToggle, Object.assign({
55174
- toggled: toggled,
55175
- onClick: handleClick,
55176
- disabled: disabled
55177
- }, props));
55178
- };
55179
- var Toggle = function Toggle(_a) {
55180
- var toggled = _a.toggled,
55181
- props = __rest(_a, ["toggled"]);
55182
- return toggled === undefined ? /*#__PURE__*/React__default.createElement(StatefulToggle, Object.assign({}, props)) : /*#__PURE__*/React__default.createElement(BaseToggle, Object.assign({
55183
- toggled: toggled
55184
- }, props));
55185
- };
55186
- var ToggleComponent = /*#__PURE__*/React__default.forwardRef(function (props, ref) {
55187
- return /*#__PURE__*/React__default.createElement(Toggle, Object.assign({
55188
- innerRef: ref
55189
- }, props));
55152
+ ml: "x1",
55153
+ "aria-hidden": true
55154
+ }, _checked ? onText : offText)))));
55190
55155
  });
55191
55156
 
55192
55157
  var TOPBAR = {
@@ -55678,4 +55643,4 @@ var TruncatedText = function TruncatedText(_a) {
55678
55643
  return fullWidth ? (/*#__PURE__*/React__default.createElement(TruncatedTextFillWidth, Object.assign({}, props), children)) : (/*#__PURE__*/React__default.createElement(TruncatedTextMaxCharacters, Object.assign({}, props), children));
55679
55644
  };
55680
55645
 
55681
- export { ALL_NDS_LOCALES, Alert$1 as Alert, AnimatedBox, AppTag, ApplicationFrame, AsyncSelect, Banner, BottomSheet, BottomSheetParts, Box, BrandLogoContainer, NavBar as BrandedNavBar, Branding, Breadcrumbs, Button$1 as Button, ButtonGroup, Card, CardSet, Checkbox, CheckboxGroup, ControlIcon, DangerButton, DatePicker, DateRange, DescriptionDetails, DescriptionGroup, DescriptionList, DescriptionTerm, DesktopMenu, Divider$1 as Divider, DropdownButton, DropdownItem, DropdownLink, DropdownMenu, DropdownText, EnvironmentBanner, Field, FieldLabel, Fieldset, Flex, Form, FormSection, Header$3 as Header, Heading1, Heading2, Heading3, Heading4, HelpText$1 as HelpText, Icon, IconicButton, InlineFlex, InlineIcon, InlineValidation, Input, Link$1 as Link, List$1 as List, ListItem, LoadingAnimation, MenuTrigger, Modal, MonthPicker, NDSProvider, NavBarBackground, Navigation$1 as Navigation, NavigationLogo, NavigationLogoLink, NotificationTypes, NulogyLogo, Overlay$1 as Overlay, Page, Pagination, PrimaryButton, QuietButton, Radio, RadioGroup, RangeContainer, RequirementText, NDSSelect as Select, SelectClearIndicator, SelectContainer, SelectControl, SelectDropdownIndicator, SelectInput, SelectMenu, SelectMultiValue, SelectOption$1 as SelectOption, Sidebar, SmallNavBar, SortingTable, StatusIndicator, StatusIndicatorValues, Summary, SummaryDivider, SummaryItem, Switch$1 as Switch, Switcher, Tab, Table, Tabs, Text, Textarea, TimePicker, TimeRange, Toast, ToastContainer, ToggleComponent as Toggle, Tooltip, TopBar, TruncatedText, VerticalDivider, WeekPicker, addStyledProps, legacy as desktop, phone, tablet, themes, toast, useMediaQuery, useWindowDimensions };
55646
+ export { ALL_NDS_LOCALES, Alert$1 as Alert, AnimatedBox, AppTag, ApplicationFrame, AsyncSelect, Banner, BottomSheet, BottomSheetParts, Box, BrandLogoContainer, NavBar as BrandedNavBar, Branding, Breadcrumbs, Button$1 as Button, ButtonGroup, Card, CardSet, Checkbox, CheckboxGroup, ControlIcon, DangerButton, DatePicker, DateRange, DescriptionDetails, DescriptionGroup, DescriptionList, DescriptionTerm, DesktopMenu, Divider$1 as Divider, DropdownButton, DropdownItem, DropdownLink, DropdownMenu, DropdownText, EnvironmentBanner, Field, FieldLabel, Fieldset, Flex, Form, FormSection, Header$3 as Header, Heading1, Heading2, Heading3, Heading4, HelpText$1 as HelpText, Icon, IconicButton, InlineFlex, InlineIcon, InlineValidation, Input, Link$1 as Link, List$1 as List, ListItem, LoadingAnimation, MenuTrigger, Modal, MonthPicker, NDSProvider, NavBarBackground, Navigation$1 as Navigation, NavigationLogo, NavigationLogoLink, NotificationTypes, NulogyLogo, Overlay$1 as Overlay, Page, Pagination, PrimaryButton, QuietButton, Radio, RadioGroup, RangeContainer, RequirementText, NDSSelect as Select, SelectClearIndicator, SelectContainer, SelectControl, SelectDropdownIndicator, SelectInput, SelectMenu, SelectMultiValue, SelectOption$1 as SelectOption, Sidebar, SmallNavBar, SortingTable, StatusIndicator, StatusIndicatorValues, Summary, SummaryDivider, SummaryItem, Switch$1 as Switch, Switcher, Tab, Table, Tabs, Text, Textarea, TimePicker, TimeRange, Toast, ToastContainer, Toggle, Tooltip, TopBar, TruncatedText, VerticalDivider, WeekPicker, addStyledProps, legacy as desktop, phone, tablet, themes, toast, useMediaQuery, useWindowDimensions };
@@ -32,7 +32,7 @@ export const WithRangeOfInputComponents = () => (React.createElement(Flex, { gap
32
32
  { value: 2, label: "This is 2nd option" },
33
33
  ] })),
34
34
  React.createElement(FieldLabel, { labelText: "Label with hint", hint: "This is a hint for the input field", requirementText: "(Required)" },
35
- React.createElement(Toggle, { onText: "on", offText: "off", defaultToggled: true })),
35
+ React.createElement(Toggle, { onText: "on", offText: "off", toggled: true })),
36
36
  React.createElement(FieldLabel, { labelText: "Label with hint", hint: "This is a hint for the input field", requirementText: "(Required)" },
37
37
  React.createElement(RadioGroup, { name: "settingSelection" },
38
38
  React.createElement(Radio, { value: "a", labelText: "Option A" }),
@@ -1,7 +1,10 @@
1
1
  import { DisplayProps } from "styled-system";
2
2
  import type { SpaceProps } from "styled-system";
3
3
  import type { ComponentPropsWithRef } from "react";
4
+ import { ComponentVariant } from "../NDSProvider/ComponentVariantContext";
4
5
  export interface LabelProps extends SpaceProps, DisplayProps, Omit<ComponentPropsWithRef<"label">, "color"> {
6
+ disabled?: boolean;
7
+ variant?: ComponentVariant;
5
8
  }
6
9
  declare const Label: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("react").DetailedHTMLProps<import("react").LabelHTMLAttributes<HTMLLabelElement>, HTMLLabelElement>, LabelProps>> & string;
7
10
  export default Label;
@@ -1,7 +1,8 @@
1
1
  import styled from "styled-components";
2
2
  import { space, color, display } from "styled-system";
3
- const Label = styled.label(({ color = "black" }) => ({
3
+ const Label = styled.label(({ color = "black", disabled }) => ({
4
4
  color: color,
5
5
  display: "inline-block",
6
+ cursor: disabled ? undefined : "pointer",
6
7
  }), display, space, color);
7
8
  export default Label;
@@ -2,9 +2,25 @@ import React from "react";
2
2
  import { SpaceProps } from "styled-system";
3
3
  import { ComponentVariant } from "../NDSProvider/ComponentVariantContext";
4
4
  import { DefaultNDSThemeType } from "../theme";
5
- declare const ToggleComponent: React.ForwardRefExoticComponent<SpaceProps<Required<import("styled-system").Theme<import("styled-system").TLengthStyledSystem>>, string | number | symbol> & {
5
+ interface ToggleProps extends SpaceProps {
6
+ /**
7
+ * @see FieldLabel
8
+ */
9
+ hint?: string;
10
+ /**
11
+ * @note This prop is required when checked is set. It will not be optional in
12
+ * a future version.
13
+ */
6
14
  onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;
7
15
  variant?: ComponentVariant;
16
+ /**
17
+ * Controls whether the toggle is checked or not.
18
+ * @note This prop will be required in a future version.
19
+ */
20
+ checked?: boolean;
21
+ /**
22
+ * @deprecated use checked instead
23
+ */
8
24
  toggled?: boolean;
9
25
  disabled?: boolean;
10
26
  onText?: string;
@@ -12,16 +28,28 @@ declare const ToggleComponent: React.ForwardRefExoticComponent<SpaceProps<Requir
12
28
  id?: string;
13
29
  className?: string;
14
30
  required?: boolean;
31
+ /**
32
+ * @see FieldLabel
33
+ */
15
34
  helpText?: string;
35
+ /**
36
+ * @see FieldLabel
37
+ */
16
38
  labelText?: string;
17
39
  requirementText?: string;
18
40
  error?: boolean;
19
- onClick?: (e: React.MouseEvent) => void;
20
- innerRef?: React.Ref<HTMLInputElement>;
41
+ ref?: React.Ref<HTMLInputElement>;
21
42
  name?: string;
22
43
  theme?: DefaultNDSThemeType;
23
44
  "data-testid"?: string;
24
- } & {
45
+ /**
46
+ * @deprecated use onChange instead
47
+ */
48
+ onClick?: (e: React.MouseEvent<HTMLInputElement>) => void;
49
+ /**
50
+ * @deprecated set the default state through the checked prop instead
51
+ */
25
52
  defaultToggled?: boolean;
26
- } & React.RefAttributes<HTMLInputElement>>;
27
- export default ToggleComponent;
53
+ }
54
+ declare const Toggle: React.ForwardRefExoticComponent<Omit<ToggleProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
55
+ export default Toggle;
@@ -9,60 +9,52 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
- import React, { useState, useContext } from "react";
13
- import { ThemeContext } from "styled-components";
12
+ import React, { useCallback, useEffect } from "react";
14
13
  import propTypes from "@styled-system/prop-types";
15
- import { Box } from "../Box";
16
- import { HelpText, RequirementText } from "../FieldLabel";
14
+ import { FieldLabel } from "../FieldLabel";
17
15
  import { Field } from "../Form";
18
16
  import { Text } from "../Type";
19
17
  import { useComponentVariant } from "../NDSProvider/ComponentVariantContext";
20
- import { ClickInputLabel } from "../utils";
21
18
  import { getSubset, omitSubset } from "../utils/subset";
22
- import { noop } from "../utils/noop";
19
+ import { Flex } from "../Flex";
23
20
  import ToggleButton from "./ToggleButton";
24
- const labelTextStyles = (theme) => ({
25
- fontSize: theme.fontSizes.small,
26
- fontWeight: theme.fontWeights.bold,
27
- lineHeight: theme.lineHeights.smallTextBase,
28
- });
29
- function MaybeToggleTitle(_a) {
30
- var { labelText, requirementText, helpText, children } = _a, props = __rest(_a, ["labelText", "requirementText", "helpText", "children"]);
31
- const themeContext = useContext(ThemeContext);
32
- return labelText ? (React.createElement("div", Object.assign({}, props),
33
- React.createElement(Box, { mb: children && "x1" },
34
- React.createElement("span", { style: labelTextStyles(themeContext) }, labelText),
35
- requirementText && React.createElement(RequirementText, null, requirementText),
36
- helpText && React.createElement(HelpText, null, helpText)),
37
- children)) : (React.createElement(React.Fragment, null, children));
38
- }
39
- const BaseToggle = (_a) => {
40
- var { disabled, onChange, onText, offText, className, required, error, id, labelText, requirementText, helpText, toggled, onClick = noop, variant, "data-testid": dataTestId } = _a, props = __rest(_a, ["disabled", "onChange", "onText", "offText", "className", "required", "error", "id", "labelText", "requirementText", "helpText", "toggled", "onClick", "variant", "data-testid"]);
41
- const handleClick = (e) => {
42
- onClick(e);
43
- };
21
+ const Toggle = React.forwardRef((_a, ref) => {
22
+ var _b;
23
+ var { checked, variant, className, labelText, requirementText, helpText, hint, disabled, toggled, onChange, onText, offText, required, error, id, defaultToggled, onClick, "data-testid": dataTestId } = _a, props = __rest(_a, ["checked", "variant", "className", "labelText", "requirementText", "helpText", "hint", "disabled", "toggled", "onChange", "onText", "offText", "required", "error", "id", "defaultToggled", "onClick", "data-testid"]);
44
24
  const componentVariant = useComponentVariant(variant);
45
25
  const spaceProps = getSubset(props, propTypes.space);
46
26
  const restProps = omitSubset(props, propTypes.space);
27
+ useEffect(() => {
28
+ if (defaultToggled) {
29
+ console.warn("defaultToggled is deprecated. Use checked instead.");
30
+ }
31
+ if (checked) {
32
+ console.warn("checked is deprecated. Use checked instead.");
33
+ }
34
+ if (onClick) {
35
+ console.warn("onClick is deprecated. Use onChange instead.");
36
+ }
37
+ // eslint-disable-next-line react-hooks/exhaustive-deps
38
+ }, []);
39
+ const _checked = (_b = checked !== null && checked !== void 0 ? checked : defaultToggled) !== null && _b !== void 0 ? _b : toggled;
40
+ const _onChange = useCallback((e) => {
41
+ if (onClick) {
42
+ onClick(e);
43
+ }
44
+ if (onChange) {
45
+ onChange(e);
46
+ }
47
+ }, [onClick, onChange]);
48
+ useEffect(() => {
49
+ if (_checked !== undefined && !(onChange || onClick)) {
50
+ console.warn("onChange or onClick is required when checked is set.");
51
+ }
52
+ // eslint-disable-next-line react-hooks/exhaustive-deps
53
+ }, []);
47
54
  return (React.createElement(Field, Object.assign({ className: className, alignItems: "flex-start", py: "half" }, spaceProps),
48
- React.createElement(MaybeToggleTitle, { id: labelText && `${labelText}-label`, labelText: labelText, requirementText: requirementText, helpText: helpText },
49
- React.createElement(ClickInputLabel, { variant: componentVariant, as: "div", onClick: onClick, disabled: disabled, "data-testid": dataTestId },
50
- React.createElement(ToggleButton, Object.assign({ id: id, checked: toggled, onChange: onChange, disabled: disabled, required: required, "aria-required": required, "aria-invalid": error, "aria-labelledby": labelText && `${labelText}-label`, onClick: handleClick, toggled: toggled }, restProps, { ref: props.innerRef })),
51
- (onText || offText) && (React.createElement(Text, { disabled: disabled, mb: "none", ml: "x1" }, toggled ? onText : offText))))));
52
- };
53
- const StatefulToggle = (_a) => {
54
- var { defaultToggled, onClick = noop, disabled } = _a, props = __rest(_a, ["defaultToggled", "onClick", "disabled"]);
55
- const [toggled, setToggled] = useState(defaultToggled);
56
- const handleClick = (e) => {
57
- if (!disabled)
58
- setToggled(!toggled);
59
- onClick(e);
60
- };
61
- return React.createElement(BaseToggle, Object.assign({ toggled: toggled, onClick: handleClick, disabled: disabled }, props));
62
- };
63
- const Toggle = (_a) => {
64
- var { toggled } = _a, props = __rest(_a, ["toggled"]);
65
- return toggled === undefined ? React.createElement(StatefulToggle, Object.assign({}, props)) : React.createElement(BaseToggle, Object.assign({ toggled: toggled }, props));
66
- };
67
- const ToggleComponent = React.forwardRef((props, ref) => (React.createElement(Toggle, Object.assign({ innerRef: ref }, props))));
68
- export default ToggleComponent;
55
+ React.createElement(FieldLabel, { htmlFor: id, labelText: labelText, requirementText: requirementText, helpText: helpText, hint: hint, disabled: disabled, variant: componentVariant, "data-testid": dataTestId },
56
+ React.createElement(Flex, { flexDirection: "row", alignItems: "center" },
57
+ React.createElement(ToggleButton, Object.assign({ id: id, checked: _checked, onChange: _onChange, disabled: disabled, required: required, "aria-required": required, "aria-invalid": error }, restProps, { ref: ref })),
58
+ (onText || offText) && (React.createElement(Text, { disabled: disabled, mb: "none", ml: "x1", "aria-hidden": true }, _checked ? onText : offText))))));
59
+ });
60
+ export default Toggle;
@@ -6,45 +6,29 @@ export default _default;
6
6
  export declare const _Toggle: () => React.JSX.Element;
7
7
  export declare const ToggleWithAllProps: {
8
8
  (): React.JSX.Element;
9
- story: {
10
- name: string;
11
- };
12
- };
13
- export declare const ToggleSetToDefaultToggled: {
14
- (): React.JSX.Element;
15
- story: {
16
- name: string;
17
- };
9
+ storyName: string;
18
10
  };
19
11
  export declare const ToggleSetToDisabled: {
20
12
  (): React.JSX.Element;
21
- story: {
22
- name: string;
23
- };
13
+ storyName: string;
24
14
  };
25
15
  export declare const WithCustomId: {
26
16
  (): React.JSX.Element;
27
- story: {
28
- name: string;
29
- };
17
+ storyName: string;
30
18
  };
31
19
  export declare const WithText: {
32
20
  (): React.JSX.Element;
33
- story: {
34
- name: string;
35
- };
21
+ storyName: string;
36
22
  };
37
23
  export declare const WithLongText: {
38
24
  (): React.JSX.Element;
39
- story: {
40
- name: string;
41
- };
25
+ storyName: string;
26
+ };
27
+ export declare const WithContraintWidth: {
28
+ (): React.JSX.Element;
29
+ storyName: string;
42
30
  };
43
- export declare const WithContraintWidth: () => React.JSX.Element;
44
- export declare const ControlledToggle: () => React.JSX.Element;
45
31
  export declare const UsingRefToControlFocus: {
46
32
  (): React.JSX.Element;
47
- story: {
48
- name: string;
49
- };
33
+ storyName: string;
50
34
  };
@@ -1,51 +1,55 @@
1
- import React, { useRef } from "react";
1
+ import React, { useRef, useState } from "react";
2
2
  import { action } from "@storybook/addon-actions";
3
- import { boolean } from "@storybook/addon-knobs";
4
3
  import { Toggle, Button, Box } from "../index";
5
4
  import { dashed } from "../utils/story/dashed";
6
5
  const DashedBox = dashed(Box);
7
6
  export default {
8
7
  title: "Components/Toggle",
9
8
  };
10
- export const _Toggle = () => React.createElement(Toggle, { "data-testid": "toggle-example", onChange: action("on change") });
11
- export const ToggleWithAllProps = () => (React.createElement(Toggle, { labelText: "Toggle", helpText: "Turns setting on/off", onText: "on", offText: "off", defaultToggled: true, required: true, requirementText: "(Required)", onChange: action("on change") }));
12
- ToggleWithAllProps.story = {
13
- name: "Toggle with all props",
9
+ export const _Toggle = () => {
10
+ const [toggled, setToggled] = useState(false);
11
+ return React.createElement(Toggle, { "data-testid": "toggle-example", toggled: toggled, onChange: (e) => setToggled(e.target.checked) });
14
12
  };
15
- export const ToggleSetToDefaultToggled = () => (React.createElement(Toggle, { labelText: "Toggle", defaultToggled: true, onChange: action("on change") }));
16
- ToggleSetToDefaultToggled.story = {
17
- name: "Toggle set to defaultToggled",
13
+ export const ToggleWithAllProps = () => {
14
+ const [toggled, setToggled] = useState(true);
15
+ return (React.createElement(Toggle, { labelText: "Toggle", helpText: "Turns setting on/off", onText: "on", offText: "off", toggled: toggled, required: true, requirementText: "(Required)", onChange: (e) => setToggled(e.target.checked) }));
18
16
  };
19
- export const ToggleSetToDisabled = () => (React.createElement(React.Fragment, null,
20
- React.createElement(Toggle, { labelText: "Toggle", disabled: true, onText: "on", offText: "off", onChange: action("on change"), "data-testid": "toggle-example" }),
21
- React.createElement(Toggle, { id: "toggle-2", disabled: true, onText: "on", offText: "off", defaultToggled: true, labelText: "Toggle", onChange: action("on change") })));
22
- ToggleSetToDisabled.story = {
23
- name: "Toggle set to disabled",
24
- };
25
- export const WithCustomId = () => (React.createElement(Toggle, { id: "my-custom-id", labelText: "Toggle", onText: "on", offText: "off", onChange: action("on change") }));
26
- WithCustomId.story = {
27
- name: "With custom id",
28
- };
29
- export const WithText = () => React.createElement(Toggle, { labelText: "Toggle", onText: "on", offText: "off", onChange: action("on change") });
30
- WithText.story = {
31
- name: "With text",
32
- };
33
- export const WithLongText = () => (React.createElement(Toggle, { labelText: "Toggle", defaultToggled: true, onText: "this state has a very long text label to explain it's state", offText: "not this one", onChange: action("on change") }));
34
- WithLongText.story = {
35
- name: "With long text",
36
- };
37
- export const WithContraintWidth = () => (React.createElement(DashedBox, { width: "200px", padding: "x2" },
38
- React.createElement(Toggle, { labelText: "Toggle", onText: "This is a long On label for the toggle component.", offText: "This is a long Off label for the toggle component.", defaultToggled: true, onChange: action("on change") })));
39
- export const ControlledToggle = () => (React.createElement(Toggle, { labelText: "Controlled Toggle", toggled: boolean("Toggled", false), onText: "on", offText: "off", onChange: action("on change"), "data-testid": "toggle-example" }));
17
+ ToggleWithAllProps.storyName = "Toggle with all props";
18
+ export const ToggleSetToDisabled = () => {
19
+ return (React.createElement(React.Fragment, null,
20
+ React.createElement(Toggle, { labelText: "Toggle", disabled: true, onText: "on", offText: "off", onChange: action("on change"), "data-testid": "toggle-example" }),
21
+ React.createElement(Toggle, { id: "toggle-2", disabled: true, onText: "on", offText: "off", toggled: true, labelText: "Toggle", onChange: action("on change") })));
22
+ };
23
+ ToggleSetToDisabled.storyName = "Toggle set to disabled";
24
+ export const WithCustomId = () => {
25
+ const [toggled, setToggled] = useState(true);
26
+ return (React.createElement(Toggle, { id: "my-custom-id", labelText: "Toggle", onText: "on", offText: "off", toggled: toggled, onChange: (e) => setToggled(e.target.checked) }));
27
+ };
28
+ WithCustomId.storyName = "With custom id";
29
+ export const WithText = () => {
30
+ const [toggled, setToggled] = useState(true);
31
+ return (React.createElement(Toggle, { labelText: "Toggle", onText: "on", offText: "off", toggled: toggled, onChange: (e) => setToggled(e.target.checked) }));
32
+ };
33
+ WithText.storyName = "With text";
34
+ export const WithLongText = () => {
35
+ const [toggled, setToggled] = useState(true);
36
+ return (React.createElement(Toggle, { labelText: "Toggle", toggled: toggled, onText: "this state has a very long text label to explain it's state", offText: "not this one", onChange: (e) => setToggled(e.target.checked) }));
37
+ };
38
+ WithLongText.storyName = "With long text";
39
+ export const WithContraintWidth = () => {
40
+ const [toggled, setToggled] = useState(true);
41
+ return (React.createElement(DashedBox, { width: "200px", padding: "x2" },
42
+ React.createElement(Toggle, { labelText: "Toggle", onText: "This is a long On label for the toggle component.", offText: "This is a long Off label for the toggle component.", toggled: toggled, onChange: (e) => setToggled(e.target.checked) })));
43
+ };
44
+ WithContraintWidth.storyName = "With constraint width";
40
45
  export const UsingRefToControlFocus = () => {
46
+ const [toggled, setToggled] = useState(true);
41
47
  const ref = useRef(null);
42
48
  const handleClick = () => {
43
49
  ref.current.focus();
44
50
  };
45
51
  return (React.createElement(React.Fragment, null,
46
- React.createElement(Toggle, { id: "my-custom-id", labelText: "Toggle", onText: "on", offText: "off", onChange: action("on change"), ref: ref }),
52
+ React.createElement(Toggle, { id: "my-custom-id", labelText: "Toggle", onText: "on", offText: "off", toggled: toggled, onChange: (e) => setToggled(e.target.checked), ref: ref }),
47
53
  React.createElement(Button, { onClick: handleClick }, "Focus the Toggle")));
48
54
  };
49
- UsingRefToControlFocus.story = {
50
- name: "using ref to control focus",
51
- };
55
+ UsingRefToControlFocus.storyName = "Using ref to control focus";
@@ -1,11 +1,9 @@
1
1
  import React from "react";
2
2
  import { DefaultNDSThemeType } from "../theme";
3
- type ToggleButtonProps = React.ComponentPropsWithRef<"input"> & {
4
- defaultToggled?: boolean;
5
- toggled?: boolean;
3
+ interface ToggleButtonProps extends React.ComponentPropsWithRef<"input"> {
6
4
  disabled?: boolean;
7
5
  name?: string;
8
6
  theme?: DefaultNDSThemeType;
9
- };
7
+ }
10
8
  declare const ToggleButton: React.ForwardRefExoticComponent<Omit<ToggleButtonProps, "ref"> & React.RefAttributes<HTMLInputElement>>;
11
9
  export default ToggleButton;
@@ -1,9 +1,20 @@
1
- import React, { useRef, useImperativeHandle } from "react";
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import React from "react";
2
13
  import { motion } from "framer-motion";
3
14
  import styled, { useTheme } from "styled-components";
4
15
  import { AnimatedBox } from "../Box";
5
16
  import { useComponentVariant } from "../NDSProvider/ComponentVariantContext";
6
- const getSwitchBackground = (toggled) => (toggled ? "darkBlue" : "darkGrey");
17
+ const getSwitchBackground = (checked) => (checked ? "darkBlue" : "darkGrey");
7
18
  const animationConfig = {
8
19
  transition: {
9
20
  type: "spring",
@@ -13,9 +24,9 @@ const animationConfig = {
13
24
  },
14
25
  scale: 1.08,
15
26
  };
16
- function Switch({ children, disabled, toggled, onClick }) {
27
+ function Switch({ children, disabled, checked }) {
17
28
  const componentVariant = useComponentVariant();
18
- return (React.createElement(AnimatedBox, { marginTop: componentVariant === "touch" ? "x0_25" : "none", position: "relative", flexShrink: 0, height: "24px", width: "48px", bg: disabled ? "grey" : getSwitchBackground(toggled), borderRadius: "20px", padding: "2px", boxShadow: "small", animate: toggled ? "toggled" : "initial", whileHover: "active", whileFocus: "active", onClick: onClick }, children));
29
+ return (React.createElement(AnimatedBox, { marginTop: componentVariant === "touch" ? "x0_25" : "none", position: "relative", flexShrink: 0, height: "24px", width: "48px", bg: disabled ? "grey" : getSwitchBackground(checked), borderRadius: "20px", padding: "2px", boxShadow: "small", animate: checked ? "toggled" : "initial", whileHover: "active", whileFocus: "active" }, children));
19
30
  }
20
31
  const Slider = ({ disabled, children }) => {
21
32
  const theme = useTheme();
@@ -50,18 +61,10 @@ const ToggleInput = styled.input(({ disabled, theme }) => ({
50
61
  boxShadow: disabled ? undefined : theme.shadows.focus,
51
62
  },
52
63
  }));
53
- const ToggleButton = React.forwardRef((props, ref) => {
54
- const { disabled, defaultToggled, toggled } = props;
55
- const inputRef = useRef(null);
56
- useImperativeHandle(ref, () => inputRef.current);
57
- const handleClick = () => {
58
- if (inputRef.current) {
59
- // triggers the onChange event on a checkbox input
60
- inputRef.current.click();
61
- }
62
- };
63
- return (React.createElement(Switch, { disabled: disabled, toggled: toggled, onClick: handleClick },
64
- React.createElement(ToggleInput, Object.assign({ ref: inputRef, type: "checkbox", defaultChecked: defaultToggled, value: toggled ? "on" : "off" }, props)),
64
+ const ToggleButton = React.forwardRef((_a, ref) => {
65
+ var { disabled, checked } = _a, props = __rest(_a, ["disabled", "checked"]);
66
+ return (React.createElement(Switch, { disabled: disabled, checked: checked },
67
+ React.createElement(ToggleInput, Object.assign({ type: "checkbox", role: "switch", checked: checked, ref: ref, value: checked ? "on" : "off" }, props)),
65
68
  React.createElement(Slider, { disabled: disabled })));
66
69
  });
67
70
  export default ToggleButton;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nulogy/components",
3
- "version": "15.1.3",
3
+ "version": "15.2.0",
4
4
  "description": "Component library for the Nulogy Design System - http://nulogy.design",
5
5
  "private": false,
6
6
  "publishConfig": {