@hitachivantara/uikit-react-core 3.73.1 → 3.74.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.
@@ -1,6 +1,6 @@
1
1
  import { StandardProps, SwitchProps } from "@material-ui/core";
2
2
 
3
- export type HvBaseSwitchClassKey = "root" | "disabled";
3
+ export type HvBaseSwitchClassKey = "root" | "disabled" | "readOnly";
4
4
 
5
5
  export interface HvBaseSwitchProps
6
6
  extends StandardProps<SwitchProps, HvBaseSwitchClassKey, "onChange"> {
@@ -95,7 +95,7 @@ var HvBaseSwitch = function HvBaseSwitch(props) {
95
95
  return /*#__PURE__*/_react.default.createElement(_core.Switch, (0, _extends2.default)({
96
96
  id: id,
97
97
  name: name,
98
- className: (0, _clsx.default)(className, classes.root, disabled && classes.disabled, focusVisible && classes.focusVisible),
98
+ className: (0, _clsx.default)(className, classes.root, disabled && classes.disabled, readOnly && classes.readOnly, focusVisible && classes.focusVisible),
99
99
  color: "default",
100
100
  disabled: disabled,
101
101
  required: required,
@@ -139,6 +139,11 @@ process.env.NODE_ENV !== "production" ? HvBaseSwitch.propTypes = {
139
139
  */
140
140
  disabled: _propTypes.default.string,
141
141
 
142
+ /**
143
+ * Styles applied to the switch when it is in read only mode.
144
+ */
145
+ readOnly: _propTypes.default.string,
146
+
142
147
  /**
143
148
  * Styles applied to the internal Switch component's root class.
144
149
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseSwitch.js","names":["HvBaseSwitch","props","classes","className","id","name","value","required","readOnly","disabled","checked","defaultChecked","onChange","inputProps","onFocusVisible","onBlur","others","useState","focusVisible","setFocusVisible","onFocusVisibleCallback","useCallback","evt","onBlurCallback","onLocalChange","target","clsx","root","switch","switchBase","track","thumb","propTypes","PropTypes","string","shape","isRequired","any","bool","func","instanceOf","Object","withStyles","styles"],"sources":["../../src/BaseSwitch/BaseSwitch.js"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\n\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\n\nimport { Switch, withStyles } from \"@material-ui/core\";\n\nimport styles from \"./styles\";\n\n/**\n * A Switch is <b>binary</b> and work as a digital on/off button.\n *\n * The Base Switch is a building block of the Switch form element. Don't use unless\n * implementing a custom use case not covered by the Switch form element.\n */\nconst HvBaseSwitch = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n value = \"on\",\n\n required = false,\n readOnly = false,\n disabled = false,\n\n checked,\n defaultChecked,\n\n onChange,\n\n inputProps,\n\n onFocusVisible,\n onBlur,\n\n ...others\n } = props;\n\n const [focusVisible, setFocusVisible] = useState(false);\n\n const onFocusVisibleCallback = useCallback(\n (evt) => {\n setFocusVisible(true);\n onFocusVisible?.(evt);\n },\n [onFocusVisible]\n );\n\n const onBlurCallback = useCallback(\n (evt) => {\n setFocusVisible(false);\n onBlur?.(evt);\n },\n [onBlur]\n );\n\n const onLocalChange = useCallback(\n (evt) => {\n if (readOnly) {\n return;\n }\n\n onChange?.(evt, evt.target.checked, value);\n },\n [onChange, readOnly, value]\n );\n\n return (\n <Switch\n id={id}\n name={name}\n className={clsx(className, classes.root, {\n [classes.disabled]: disabled,\n [classes.focusVisible]: focusVisible,\n })}\n color=\"default\"\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n disableRipple\n onChange={onLocalChange}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n classes={{\n root: classes.switch,\n switchBase: classes.switchBase,\n checked: classes.checked,\n track: classes.track,\n thumb: classes.thumb,\n disabled: classes.disabled,\n }}\n inputProps={inputProps}\n onFocusVisible={onFocusVisibleCallback}\n onBlur={onBlurCallback}\n {...others}\n />\n );\n};\n\nHvBaseSwitch.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the switch.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the switch when it is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Styles applied to the internal Switch component's root class.\n */\n switch: PropTypes.string,\n /**\n * Styles applied to the internal SwitchBase component's root class.\n */\n switchBase: PropTypes.string,\n /**\n * Pseudo-class applied to the internal SwitchBase component's checked class.\n */\n checked: PropTypes.string,\n /**\n * Styles applied to the track element.\n */\n track: PropTypes.string,\n /**\n * Styles used to create the thumb passed to the internal SwitchBase component icon prop.\n */\n thumb: PropTypes.string,\n /**\n * Class applied to the root element if keyboard focused.\n */\n focusVisible: PropTypes.string,\n }).isRequired,\n\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * The input name.\n */\n name: PropTypes.string,\n /**\n * The value of the input.\n *\n * Is up to the application's logic when to consider the submission of this value.\n * Generally it should be used only when the switch is neither unchecked nor indeterminate.\n *\n * The default value is \"on\".\n */\n // eslint-disable-next-line react/forbid-prop-types\n value: PropTypes.any,\n\n /**\n * Indicates that user input is required.\n */\n required: PropTypes.bool,\n /**\n * Indicates that the input is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * Indicates that the input is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` the switch is selected, if set to `false` the switch is not selected.\n *\n * When defined the switch state becomes controlled.\n */\n checked: PropTypes.bool,\n /**\n * When uncontrolled, defines the initial checked state.\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * The callback fired when the switch is pressed.\n */\n onChange: PropTypes.func,\n\n /**\n * Properties passed on to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvBaseSwitch\" })(HvBaseSwitch);\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseSwitch.js","names":["HvBaseSwitch","props","classes","className","id","name","value","required","readOnly","disabled","checked","defaultChecked","onChange","inputProps","onFocusVisible","onBlur","others","useState","focusVisible","setFocusVisible","onFocusVisibleCallback","useCallback","evt","onBlurCallback","onLocalChange","target","clsx","root","switch","switchBase","track","thumb","propTypes","PropTypes","string","shape","isRequired","any","bool","func","instanceOf","Object","withStyles","styles"],"sources":["../../src/BaseSwitch/BaseSwitch.js"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\n\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\n\nimport { Switch, withStyles } from \"@material-ui/core\";\n\nimport styles from \"./styles\";\n\n/**\n * A Switch is <b>binary</b> and work as a digital on/off button.\n *\n * The Base Switch is a building block of the Switch form element. Don't use unless\n * implementing a custom use case not covered by the Switch form element.\n */\nconst HvBaseSwitch = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n value = \"on\",\n\n required = false,\n readOnly = false,\n disabled = false,\n\n checked,\n defaultChecked,\n\n onChange,\n\n inputProps,\n\n onFocusVisible,\n onBlur,\n\n ...others\n } = props;\n\n const [focusVisible, setFocusVisible] = useState(false);\n\n const onFocusVisibleCallback = useCallback(\n (evt) => {\n setFocusVisible(true);\n onFocusVisible?.(evt);\n },\n [onFocusVisible]\n );\n\n const onBlurCallback = useCallback(\n (evt) => {\n setFocusVisible(false);\n onBlur?.(evt);\n },\n [onBlur]\n );\n\n const onLocalChange = useCallback(\n (evt) => {\n if (readOnly) {\n return;\n }\n\n onChange?.(evt, evt.target.checked, value);\n },\n [onChange, readOnly, value]\n );\n\n return (\n <Switch\n id={id}\n name={name}\n className={clsx(className, classes.root, {\n [classes.disabled]: disabled,\n [classes.readOnly]: readOnly,\n [classes.focusVisible]: focusVisible,\n })}\n color=\"default\"\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n disableRipple\n onChange={onLocalChange}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n classes={{\n root: classes.switch,\n switchBase: classes.switchBase,\n checked: classes.checked,\n track: classes.track,\n thumb: classes.thumb,\n disabled: classes.disabled,\n }}\n inputProps={inputProps}\n onFocusVisible={onFocusVisibleCallback}\n onBlur={onBlurCallback}\n {...others}\n />\n );\n};\n\nHvBaseSwitch.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the switch.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the switch when it is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Styles applied to the switch when it is in read only mode.\n */\n readOnly: PropTypes.string,\n /**\n * Styles applied to the internal Switch component's root class.\n */\n switch: PropTypes.string,\n /**\n * Styles applied to the internal SwitchBase component's root class.\n */\n switchBase: PropTypes.string,\n /**\n * Pseudo-class applied to the internal SwitchBase component's checked class.\n */\n checked: PropTypes.string,\n /**\n * Styles applied to the track element.\n */\n track: PropTypes.string,\n /**\n * Styles used to create the thumb passed to the internal SwitchBase component icon prop.\n */\n thumb: PropTypes.string,\n /**\n * Class applied to the root element if keyboard focused.\n */\n focusVisible: PropTypes.string,\n }).isRequired,\n\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * The input name.\n */\n name: PropTypes.string,\n /**\n * The value of the input.\n *\n * Is up to the application's logic when to consider the submission of this value.\n * Generally it should be used only when the switch is neither unchecked nor indeterminate.\n *\n * The default value is \"on\".\n */\n // eslint-disable-next-line react/forbid-prop-types\n value: PropTypes.any,\n\n /**\n * Indicates that user input is required.\n */\n required: PropTypes.bool,\n /**\n * Indicates that the input is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * Indicates that the input is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` the switch is selected, if set to `false` the switch is not selected.\n *\n * When defined the switch state becomes controlled.\n */\n checked: PropTypes.bool,\n /**\n * When uncontrolled, defines the initial checked state.\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * The callback fired when the switch is pressed.\n */\n onChange: PropTypes.func,\n\n /**\n * Properties passed on to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvBaseSwitch\" })(HvBaseSwitch);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEA;;AACA;;AAEA;;AAEA;;;;;;;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAMA,YAAY,GAAG,SAAfA,YAAe,CAACC,KAAD,EAAW;EAC9B,IACEC,OADF,GAuBID,KAvBJ,CACEC,OADF;EAAA,IAEEC,SAFF,GAuBIF,KAvBJ,CAEEE,SAFF;EAAA,IAIEC,EAJF,GAuBIH,KAvBJ,CAIEG,EAJF;EAAA,IAKEC,IALF,GAuBIJ,KAvBJ,CAKEI,IALF;EAAA,mBAuBIJ,KAvBJ,CAMEK,KANF;EAAA,IAMEA,KANF,6BAMU,IANV;EAAA,sBAuBIL,KAvBJ,CAQEM,QARF;EAAA,IAQEA,QARF,gCAQa,KARb;EAAA,sBAuBIN,KAvBJ,CASEO,QATF;EAAA,IASEA,QATF,gCASa,KATb;EAAA,sBAuBIP,KAvBJ,CAUEQ,QAVF;EAAA,IAUEA,QAVF,gCAUa,KAVb;EAAA,IAYEC,OAZF,GAuBIT,KAvBJ,CAYES,OAZF;EAAA,IAaEC,cAbF,GAuBIV,KAvBJ,CAaEU,cAbF;EAAA,IAeEC,QAfF,GAuBIX,KAvBJ,CAeEW,QAfF;EAAA,IAiBEC,UAjBF,GAuBIZ,KAvBJ,CAiBEY,UAjBF;EAAA,IAmBEC,cAnBF,GAuBIb,KAvBJ,CAmBEa,cAnBF;EAAA,IAoBEC,MApBF,GAuBId,KAvBJ,CAoBEc,MApBF;EAAA,IAsBKC,MAtBL,0CAuBIf,KAvBJ;;EAyBA,gBAAwC,IAAAgB,eAAA,EAAS,KAAT,CAAxC;EAAA;EAAA,IAAOC,YAAP;EAAA,IAAqBC,eAArB;;EAEA,IAAMC,sBAAsB,GAAG,IAAAC,kBAAA,EAC7B,UAACC,GAAD,EAAS;IACPH,eAAe,CAAC,IAAD,CAAf;IACAL,cAAc,SAAd,IAAAA,cAAc,WAAd,YAAAA,cAAc,CAAGQ,GAAH,CAAd;EACD,CAJ4B,EAK7B,CAACR,cAAD,CAL6B,CAA/B;EAQA,IAAMS,cAAc,GAAG,IAAAF,kBAAA,EACrB,UAACC,GAAD,EAAS;IACPH,eAAe,CAAC,KAAD,CAAf;IACAJ,MAAM,SAAN,IAAAA,MAAM,WAAN,YAAAA,MAAM,CAAGO,GAAH,CAAN;EACD,CAJoB,EAKrB,CAACP,MAAD,CALqB,CAAvB;EAQA,IAAMS,aAAa,GAAG,IAAAH,kBAAA,EACpB,UAACC,GAAD,EAAS;IACP,IAAId,QAAJ,EAAc;MACZ;IACD;;IAEDI,QAAQ,SAAR,IAAAA,QAAQ,WAAR,YAAAA,QAAQ,CAAGU,GAAH,EAAQA,GAAG,CAACG,MAAJ,CAAWf,OAAnB,EAA4BJ,KAA5B,CAAR;EACD,CAPmB,EAQpB,CAACM,QAAD,EAAWJ,QAAX,EAAqBF,KAArB,CARoB,CAAtB;EAWA,oBACE,6BAAC,YAAD;IACE,EAAE,EAAEF,EADN;IAEE,IAAI,EAAEC,IAFR;IAGE,SAAS,EAAE,IAAAqB,aAAA,EAAKvB,SAAL,EAAgBD,OAAO,CAACyB,IAAxB,EACWlB,QADX,IACRP,OAAO,CAACO,QADA,EAEWD,QAFX,IAERN,OAAO,CAACM,QAFA,EAGeU,YAHf,IAGRhB,OAAO,CAACgB,YAHA,CAHb;IAQE,KAAK,EAAC,SARR;IASE,QAAQ,EAAET,QATZ;IAUE,QAAQ,EAAEF,QAVZ;IAWE,QAAQ,EAAEC,QAXZ;IAYE,aAAa,MAZf;IAaE,QAAQ,EAAEgB,aAbZ;IAcE,KAAK,EAAElB,KAdT;IAeE,OAAO,EAAEI,OAfX;IAgBE,cAAc,EAAEC,cAhBlB;IAiBE,OAAO,EAAE;MACPgB,IAAI,EAAEzB,OAAO,CAAC0B,MADP;MAEPC,UAAU,EAAE3B,OAAO,CAAC2B,UAFb;MAGPnB,OAAO,EAAER,OAAO,CAACQ,OAHV;MAIPoB,KAAK,EAAE5B,OAAO,CAAC4B,KAJR;MAKPC,KAAK,EAAE7B,OAAO,CAAC6B,KALR;MAMPtB,QAAQ,EAAEP,OAAO,CAACO;IANX,CAjBX;IAyBE,UAAU,EAAEI,UAzBd;IA0BE,cAAc,EAAEO,sBA1BlB;IA2BE,MAAM,EAAEG;EA3BV,GA4BMP,MA5BN,EADF;AAgCD,CAvFD;;AAyFA,wCAAAhB,YAAY,CAACgC,SAAb,GAAyB;EACvB;AACF;AACA;EACE7B,SAAS,EAAE8B,kBAAA,CAAUC,MAJE;;EAKvB;AACF;AACA;EACEhC,OAAO,EAAE+B,kBAAA,CAAUE,KAAV,CAAgB;IACvB;AACJ;AACA;IACIR,IAAI,EAAEM,kBAAA,CAAUC,MAJO;;IAKvB;AACJ;AACA;IACIzB,QAAQ,EAAEwB,kBAAA,CAAUC,MARG;;IASvB;AACJ;AACA;IACI1B,QAAQ,EAAEyB,kBAAA,CAAUC,MAZG;;IAavB;AACJ;AACA;IACIN,MAAM,EAAEK,kBAAA,CAAUC,MAhBK;;IAiBvB;AACJ;AACA;IACIL,UAAU,EAAEI,kBAAA,CAAUC,MApBC;;IAqBvB;AACJ;AACA;IACIxB,OAAO,EAAEuB,kBAAA,CAAUC,MAxBI;;IAyBvB;AACJ;AACA;IACIJ,KAAK,EAAEG,kBAAA,CAAUC,MA5BM;;IA6BvB;AACJ;AACA;IACIH,KAAK,EAAEE,kBAAA,CAAUC,MAhCM;;IAiCvB;AACJ;AACA;IACIhB,YAAY,EAAEe,kBAAA,CAAUC;EApCD,CAAhB,EAqCNE,UA7CoB;;EA+CvB;AACF;AACA;EACEhC,EAAE,EAAE6B,kBAAA,CAAUC,MAlDS;;EAoDvB;AACF;AACA;EACE7B,IAAI,EAAE4B,kBAAA,CAAUC,MAvDO;;EAwDvB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;EACE;EACA5B,KAAK,EAAE2B,kBAAA,CAAUI,GAjEM;;EAmEvB;AACF;AACA;EACE9B,QAAQ,EAAE0B,kBAAA,CAAUK,IAtEG;;EAuEvB;AACF;AACA;EACE9B,QAAQ,EAAEyB,kBAAA,CAAUK,IA1EG;;EA2EvB;AACF;AACA;EACE7B,QAAQ,EAAEwB,kBAAA,CAAUK,IA9EG;;EAgFvB;AACF;AACA;AACA;AACA;EACE5B,OAAO,EAAEuB,kBAAA,CAAUK,IArFI;;EAsFvB;AACF;AACA;EACE3B,cAAc,EAAEsB,kBAAA,CAAUK,IAzFH;;EA2FvB;AACF;AACA;EACE1B,QAAQ,EAAEqB,kBAAA,CAAUM,IA9FG;;EAgGvB;AACF;AACA;EACE1B,UAAU,EAAEoB,kBAAA,CAAUO,UAAV,CAAqBC,MAArB,CAnGW;;EAqGvB;AACF;AACA;AACA;EACE3B,cAAc,EAAEmB,kBAAA,CAAUM,IAzGH;;EA0GvB;AACF;AACA;EACExB,MAAM,EAAEkB,kBAAA,CAAUM;AA7GK,CAAzB;;eAgHe,IAAAG,gBAAA,EAAWC,eAAX,EAAmB;EAAEtC,IAAI,EAAE;AAAR,CAAnB,EAA6CL,YAA7C,C"}
@@ -46,7 +46,10 @@ var styles = function styles(theme) {
46
46
  switch: {
47
47
  padding: 0,
48
48
  width: switchWidth,
49
- height: 16
49
+ height: 16,
50
+ "&$readOnly $switchBase": {
51
+ cursor: "default"
52
+ }
50
53
  },
51
54
  switchBase: {
52
55
  width: switchWidth,
@@ -97,6 +100,7 @@ var styles = function styles(theme) {
97
100
  opacity: 1
98
101
  }
99
102
  },
103
+ readOnly: {},
100
104
  focusVisible: _objectSpread({
101
105
  borderRadius: "8px"
102
106
  }, _styles.outlineStyles)
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["switchWidth","thumbPosition","position","left","width","height","styles","theme","root","padding","cursor","switch","switchBase","backgroundColor","transform","opacity","hv","palette","accent","acce1","track","borderRadius","border","atmosphere","atmo2","thumb","atmo1","marginLeft","marginTop","checked","disabled","atmo3","atmo5","focusVisible","outlineStyles"],"sources":["../../src/BaseSwitch/styles.js"],"sourcesContent":["import { outlineStyles } from \"../Focus/styles\";\n\nconst switchWidth = 32;\n\nconst thumbPosition = {\n position: \"relative\",\n left: -9,\n width: 12,\n height: 12,\n};\n\nconst styles = (theme) => ({\n root: {\n padding: 0,\n cursor: \"pointer\",\n },\n\n switch: {\n padding: 0,\n width: switchWidth,\n height: 16,\n },\n\n switchBase: {\n width: switchWidth,\n height: 16,\n padding: 0,\n\n // increase CSS specificity\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n \"&$checked\": {\n transform: \"translateX(16px)\",\n \"& + $track\": {\n opacity: 1,\n backgroundColor: theme.hv.palette.accent.acce1,\n },\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n\n track: {\n opacity: 1,\n borderRadius: 15,\n left: 17,\n height: 16,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo2,\n },\n\n thumb: {\n ...thumbPosition,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo1,\n marginLeft: 2,\n marginTop: 0,\n },\n\n checked: {},\n\n disabled: {\n cursor: \"not-allowed\",\n\n \"& $switch\": {\n cursor: \"not-allowed\",\n },\n\n \"& $thumb\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n },\n\n \"& $switchBase + $track\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n opacity: 1,\n },\n },\n\n focusVisible: {\n borderRadius: \"8px\",\n ...outlineStyles,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,IAAMA,WAAW,GAAG,EAApB;AAEA,IAAMC,aAAa,GAAG;EACpBC,QAAQ,EAAE,UADU;EAEpBC,IAAI,EAAE,CAAC,CAFa;EAGpBC,KAAK,EAAE,EAHa;EAIpBC,MAAM,EAAE;AAJY,CAAtB;;AAOA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;EAAA,OAAY;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAE,CADL;MAEJC,MAAM,EAAE;IAFJ,CADmB;IAMzBC,MAAM,EAAE;MACNF,OAAO,EAAE,CADH;MAENL,KAAK,EAAEJ,WAFD;MAGNK,MAAM,EAAE;IAHF,CANiB;IAYzBO,UAAU,EAAE;MACVR,KAAK,EAAEJ,WADG;MAEVK,MAAM,EAAE,EAFE;MAGVI,OAAO,EAAE,CAHC;MAKV;MACA,WAAW;QACTI,eAAe,EAAE;MADR,CAND;MASV,aAAa;QACXC,SAAS,EAAE,kBADA;QAEX,cAAc;UACZC,OAAO,EAAE,CADG;UAEZF,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC;QAF7B,CAFH;QAMX,WAAW;UACTN,eAAe,EAAE;QADR;MANA;IATH,CAZa;IAiCzBO,KAAK,EAAE;MACLL,OAAO,EAAE,CADJ;MAELM,YAAY,EAAE,EAFT;MAGLlB,IAAI,EAAE,EAHD;MAILE,MAAM,EAAE,EAJH;MAKLiB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CALD;MAMLN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BC;IANxC,CAjCkB;IA0CzBC,KAAK,kCACAxB,aADA;MAEHqB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CAFH;MAGHN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BG,KAH1C;MAIHC,UAAU,EAAE,CAJT;MAKHC,SAAS,EAAE;IALR,EA1CoB;IAkDzBC,OAAO,EAAE,EAlDgB;IAoDzBC,QAAQ,EAAE;MACRpB,MAAM,EAAE,aADA;MAGR,aAAa;QACXA,MAAM,EAAE;MADG,CAHL;MAOR,YAAY;QACVG,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADL;QAEVT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C;MAFI,CAPJ;MAYR,0BAA0B;QACxBnB,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADS;QAExBT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C,CAFkB;QAGxBjB,OAAO,EAAE;MAHe;IAZlB,CApDe;IAuEzBkB,YAAY;MACVZ,YAAY,EAAE;IADJ,GAEPa,qBAFO;EAvEa,CAAZ;AAAA,CAAf;;eA6Ee5B,M"}
1
+ {"version":3,"file":"styles.js","names":["switchWidth","thumbPosition","position","left","width","height","styles","theme","root","padding","cursor","switch","switchBase","backgroundColor","transform","opacity","hv","palette","accent","acce1","track","borderRadius","border","atmosphere","atmo2","thumb","atmo1","marginLeft","marginTop","checked","disabled","atmo3","atmo5","readOnly","focusVisible","outlineStyles"],"sources":["../../src/BaseSwitch/styles.js"],"sourcesContent":["import { outlineStyles } from \"../Focus/styles\";\n\nconst switchWidth = 32;\n\nconst thumbPosition = {\n position: \"relative\",\n left: -9,\n width: 12,\n height: 12,\n};\n\nconst styles = (theme) => ({\n root: {\n padding: 0,\n cursor: \"pointer\",\n },\n\n switch: {\n padding: 0,\n width: switchWidth,\n height: 16,\n\n \"&$readOnly $switchBase\": {\n cursor: \"default\",\n },\n },\n\n switchBase: {\n width: switchWidth,\n height: 16,\n padding: 0,\n\n // increase CSS specificity\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n \"&$checked\": {\n transform: \"translateX(16px)\",\n \"& + $track\": {\n opacity: 1,\n backgroundColor: theme.hv.palette.accent.acce1,\n },\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n\n track: {\n opacity: 1,\n borderRadius: 15,\n left: 17,\n height: 16,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo2,\n },\n\n thumb: {\n ...thumbPosition,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo1,\n marginLeft: 2,\n marginTop: 0,\n },\n\n checked: {},\n\n disabled: {\n cursor: \"not-allowed\",\n\n \"& $switch\": {\n cursor: \"not-allowed\",\n },\n\n \"& $thumb\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n },\n\n \"& $switchBase + $track\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n opacity: 1,\n },\n },\n\n readOnly: {},\n\n focusVisible: {\n borderRadius: \"8px\",\n ...outlineStyles,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;;;;;AAEA,IAAMA,WAAW,GAAG,EAApB;AAEA,IAAMC,aAAa,GAAG;EACpBC,QAAQ,EAAE,UADU;EAEpBC,IAAI,EAAE,CAAC,CAFa;EAGpBC,KAAK,EAAE,EAHa;EAIpBC,MAAM,EAAE;AAJY,CAAtB;;AAOA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;EAAA,OAAY;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAE,CADL;MAEJC,MAAM,EAAE;IAFJ,CADmB;IAMzBC,MAAM,EAAE;MACNF,OAAO,EAAE,CADH;MAENL,KAAK,EAAEJ,WAFD;MAGNK,MAAM,EAAE,EAHF;MAKN,0BAA0B;QACxBK,MAAM,EAAE;MADgB;IALpB,CANiB;IAgBzBE,UAAU,EAAE;MACVR,KAAK,EAAEJ,WADG;MAEVK,MAAM,EAAE,EAFE;MAGVI,OAAO,EAAE,CAHC;MAKV;MACA,WAAW;QACTI,eAAe,EAAE;MADR,CAND;MASV,aAAa;QACXC,SAAS,EAAE,kBADA;QAEX,cAAc;UACZC,OAAO,EAAE,CADG;UAEZF,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC;QAF7B,CAFH;QAMX,WAAW;UACTN,eAAe,EAAE;QADR;MANA;IATH,CAhBa;IAqCzBO,KAAK,EAAE;MACLL,OAAO,EAAE,CADJ;MAELM,YAAY,EAAE,EAFT;MAGLlB,IAAI,EAAE,EAHD;MAILE,MAAM,EAAE,EAJH;MAKLiB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CALD;MAMLN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BC;IANxC,CArCkB;IA8CzBC,KAAK,kCACAxB,aADA;MAEHqB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CAFH;MAGHN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BG,KAH1C;MAIHC,UAAU,EAAE,CAJT;MAKHC,SAAS,EAAE;IALR,EA9CoB;IAsDzBC,OAAO,EAAE,EAtDgB;IAwDzBC,QAAQ,EAAE;MACRpB,MAAM,EAAE,aADA;MAGR,aAAa;QACXA,MAAM,EAAE;MADG,CAHL;MAOR,YAAY;QACVG,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADL;QAEVT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C;MAFI,CAPJ;MAYR,0BAA0B;QACxBnB,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADS;QAExBT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C,CAFkB;QAGxBjB,OAAO,EAAE;MAHe;IAZlB,CAxDe;IA2EzBkB,QAAQ,EAAE,EA3Ee;IA6EzBC,YAAY;MACVb,YAAY,EAAE;IADJ,GAEPc,qBAFO;EA7Ea,CAAZ;AAAA,CAAf;;eAmFe7B,M"}
@@ -28,6 +28,7 @@ var useScrollTo = function useScrollTo() {
28
28
  var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
29
29
  var options = arguments.length > 4 ? arguments[4] : undefined;
30
30
  var onChange = arguments.length > 5 ? arguments[5] : undefined;
31
+ var direction = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : "column";
31
32
  var RETRY_MAX = 5;
32
33
 
33
34
  var _useState = (0, _react.useState)(selectedIndexProp),
@@ -148,7 +149,7 @@ var useScrollTo = function useScrollTo() {
148
149
  var ele = document.getElementById(id);
149
150
 
150
151
  if (ele) {
151
- (0, _utils.scrollElement)(ele, scrollEle.current, option.offset || offset);
152
+ (0, _utils.scrollElement)(ele, scrollEle.current, option.offset || offset, direction);
152
153
  }
153
154
 
154
155
  if (href) {
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollTo.js","names":["useScrollTo","selectedIndexProp","scrollElementId","href","offset","options","onChange","RETRY_MAX","useState","selectedIndex","setSelectedIndex","scrollEle","useRef","requestedAnimationFrame","lastContainerScrollTop","selectedIndexRef","useEffect","current","document","getElementById","window","verticalScrollOffset","checkScroll","useCallback","event","requestAnimationFrame","firstVisibleElementIndex","findFirstVisibleElement","newSelectedIndex","length","isScrolledToTheBottom","containerScrollTop","getScrollTop","isScrollingDown","addEventListener","removeEventListener","cancelAnimationFrame","checkRenderedInterval","hashValue","location","hash","split","option","find","o","value","retry","setInterval","ele","scrollElement","clearInterval","setScrollTo","id","index","wrappedOnChange","history","pushState"],"sources":["../../src/ScrollTo/useScrollTo.js"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport {\n verticalScrollOffset,\n findFirstVisibleElement,\n isScrolledToTheBottom,\n getScrollTop,\n scrollElement,\n} from \"./utils\";\n\nconst useScrollTo = (\n selectedIndexProp = 0,\n scrollElementId,\n href,\n offset = 0,\n options,\n onChange\n) => {\n const RETRY_MAX = 5;\n const [selectedIndex, setSelectedIndex] = useState(selectedIndexProp);\n\n const scrollEle = useRef();\n const requestedAnimationFrame = useRef(0);\n const lastContainerScrollTop = useRef();\n\n // ref to use a often-changing value in useCallback, as recommended in\n // https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n const selectedIndexRef = useRef(selectedIndex);\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n scrollEle.current = (scrollElementId && document.getElementById(scrollElementId)) || window;\n lastContainerScrollTop.current = verticalScrollOffset(scrollEle.current);\n }, [scrollElementId]);\n\n const checkScroll = useCallback(\n (event) => {\n if (requestedAnimationFrame.current === 0 && window?.requestAnimationFrame) {\n requestedAnimationFrame.current = window.requestAnimationFrame(() => {\n requestedAnimationFrame.current = 0;\n\n const firstVisibleElementIndex = findFirstVisibleElement(\n scrollEle.current,\n options,\n offset\n );\n\n let newSelectedIndex = firstVisibleElementIndex;\n\n // select the first element when all elements are bellow the container's top\n if (firstVisibleElementIndex < 0) {\n newSelectedIndex = 0;\n }\n\n // if the user has reached the bottom of the container, select the first nav item still visible\n // (usually this selects the last nav item, when it can't reach the top the container)\n // in theory only needed when scrolling down, but no... because of the Safari bouncing behaviour\n if (newSelectedIndex < options.length - 1 && isScrolledToTheBottom(scrollEle.current)) {\n newSelectedIndex += 1;\n }\n\n const containerScrollTop = getScrollTop(scrollEle.current);\n const isScrollingDown = containerScrollTop > lastContainerScrollTop.current;\n lastContainerScrollTop.current = containerScrollTop;\n\n // only update the selected item if the scroll direction is moving away from it\n if (isScrollingDown) {\n if (newSelectedIndex < selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n } else if (newSelectedIndex > selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n\n setSelectedIndex(newSelectedIndex);\n onChange?.(event, newSelectedIndex);\n });\n }\n },\n [offset, options, onChange]\n );\n\n // registers and unregisters the scroll listener\n useEffect(() => {\n if (scrollEle.current) {\n scrollEle.current.addEventListener(\"scroll\", checkScroll, false);\n }\n\n return () => {\n if (scrollEle.current) {\n scrollEle.current.removeEventListener(\"scroll\", checkScroll);\n }\n\n if (requestedAnimationFrame.current !== 0) {\n window.cancelAnimationFrame(requestedAnimationFrame.current);\n requestedAnimationFrame.current = 0;\n }\n };\n }, [checkScroll]);\n\n // waits for the elements to be rendered and scrolls to the one referenced\n // in the URL hash, if any\n useEffect(() => {\n let checkRenderedInterval;\n\n if (href) {\n const hashValue = document.location.hash.split(\"#\")[1] || \"\";\n\n const option = options.find((o) => o.value === hashValue);\n\n if (option) {\n let retry = 0;\n checkRenderedInterval = setInterval(() => {\n const ele = document.getElementById(option.value);\n\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n clearInterval(checkRenderedInterval);\n } else {\n retry += 1;\n if (retry === RETRY_MAX) {\n clearInterval(checkRenderedInterval);\n }\n }\n }, 1000);\n }\n }\n\n return () => {\n clearInterval(checkRenderedInterval);\n };\n\n // we really want to run this just in the first load\n // in fact this doesn't even belong here, the logic should be external\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setScrollTo = (event, id, index, wrappedOnChange) => {\n const option = options.find((o) => o.value === id);\n\n if (option) {\n const ele = document.getElementById(id);\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n }\n\n if (href) {\n window.history.pushState({}, \"\", `#${options[index].value}`);\n }\n\n setSelectedIndex(index);\n wrappedOnChange?.(index);\n\n // Safari scrolls immediately (no smooth scroll support),\n // so this ref value must be updated asap\n selectedIndexRef.current = index;\n }\n };\n\n return [selectedIndex, setScrollTo];\n};\n\nexport default useScrollTo;\n"],"mappings":"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"}
1
+ {"version":3,"file":"useScrollTo.js","names":["useScrollTo","selectedIndexProp","scrollElementId","href","offset","options","onChange","direction","RETRY_MAX","useState","selectedIndex","setSelectedIndex","scrollEle","useRef","requestedAnimationFrame","lastContainerScrollTop","selectedIndexRef","useEffect","current","document","getElementById","window","verticalScrollOffset","checkScroll","useCallback","event","requestAnimationFrame","firstVisibleElementIndex","findFirstVisibleElement","newSelectedIndex","length","isScrolledToTheBottom","containerScrollTop","getScrollTop","isScrollingDown","addEventListener","removeEventListener","cancelAnimationFrame","checkRenderedInterval","hashValue","location","hash","split","option","find","o","value","retry","setInterval","ele","scrollElement","clearInterval","setScrollTo","id","index","wrappedOnChange","history","pushState"],"sources":["../../src/ScrollTo/useScrollTo.js"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport {\n verticalScrollOffset,\n findFirstVisibleElement,\n isScrolledToTheBottom,\n getScrollTop,\n scrollElement,\n} from \"./utils\";\n\nconst useScrollTo = (\n selectedIndexProp = 0,\n scrollElementId,\n href,\n offset = 0,\n options,\n onChange,\n direction = \"column\"\n) => {\n const RETRY_MAX = 5;\n const [selectedIndex, setSelectedIndex] = useState(selectedIndexProp);\n\n const scrollEle = useRef();\n const requestedAnimationFrame = useRef(0);\n const lastContainerScrollTop = useRef();\n\n // ref to use a often-changing value in useCallback, as recommended in\n // https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n const selectedIndexRef = useRef(selectedIndex);\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n scrollEle.current = (scrollElementId && document.getElementById(scrollElementId)) || window;\n lastContainerScrollTop.current = verticalScrollOffset(scrollEle.current);\n }, [scrollElementId]);\n\n const checkScroll = useCallback(\n (event) => {\n if (requestedAnimationFrame.current === 0 && window?.requestAnimationFrame) {\n requestedAnimationFrame.current = window.requestAnimationFrame(() => {\n requestedAnimationFrame.current = 0;\n\n const firstVisibleElementIndex = findFirstVisibleElement(\n scrollEle.current,\n options,\n offset\n );\n\n let newSelectedIndex = firstVisibleElementIndex;\n\n // select the first element when all elements are bellow the container's top\n if (firstVisibleElementIndex < 0) {\n newSelectedIndex = 0;\n }\n\n // if the user has reached the bottom of the container, select the first nav item still visible\n // (usually this selects the last nav item, when it can't reach the top the container)\n // in theory only needed when scrolling down, but no... because of the Safari bouncing behaviour\n if (newSelectedIndex < options.length - 1 && isScrolledToTheBottom(scrollEle.current)) {\n newSelectedIndex += 1;\n }\n\n const containerScrollTop = getScrollTop(scrollEle.current);\n const isScrollingDown = containerScrollTop > lastContainerScrollTop.current;\n lastContainerScrollTop.current = containerScrollTop;\n\n // only update the selected item if the scroll direction is moving away from it\n if (isScrollingDown) {\n if (newSelectedIndex < selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n } else if (newSelectedIndex > selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n\n setSelectedIndex(newSelectedIndex);\n onChange?.(event, newSelectedIndex);\n });\n }\n },\n [offset, options, onChange]\n );\n\n // registers and unregisters the scroll listener\n useEffect(() => {\n if (scrollEle.current) {\n scrollEle.current.addEventListener(\"scroll\", checkScroll, false);\n }\n\n return () => {\n if (scrollEle.current) {\n scrollEle.current.removeEventListener(\"scroll\", checkScroll);\n }\n\n if (requestedAnimationFrame.current !== 0) {\n window.cancelAnimationFrame(requestedAnimationFrame.current);\n requestedAnimationFrame.current = 0;\n }\n };\n }, [checkScroll]);\n\n // waits for the elements to be rendered and scrolls to the one referenced\n // in the URL hash, if any\n useEffect(() => {\n let checkRenderedInterval;\n\n if (href) {\n const hashValue = document.location.hash.split(\"#\")[1] || \"\";\n\n const option = options.find((o) => o.value === hashValue);\n\n if (option) {\n let retry = 0;\n checkRenderedInterval = setInterval(() => {\n const ele = document.getElementById(option.value);\n\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n clearInterval(checkRenderedInterval);\n } else {\n retry += 1;\n if (retry === RETRY_MAX) {\n clearInterval(checkRenderedInterval);\n }\n }\n }, 1000);\n }\n }\n\n return () => {\n clearInterval(checkRenderedInterval);\n };\n\n // we really want to run this just in the first load\n // in fact this doesn't even belong here, the logic should be external\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setScrollTo = (event, id, index, wrappedOnChange) => {\n const option = options.find((o) => o.value === id);\n\n if (option) {\n const ele = document.getElementById(id);\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset, direction);\n }\n\n if (href) {\n window.history.pushState({}, \"\", `#${options[index].value}`);\n }\n\n setSelectedIndex(index);\n wrappedOnChange?.(index);\n\n // Safari scrolls immediately (no smooth scroll support),\n // so this ref value must be updated asap\n selectedIndexRef.current = index;\n }\n };\n\n return [selectedIndex, setScrollTo];\n};\n\nexport default useScrollTo;\n"],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.verticalScrollOffset = exports.scrollElement = exports.isScrolledToTheBottom = exports.getScrollTop = exports.findFirstVisibleElement = void 0;
6
+ exports.verticalScrollOffset = exports.scrollElement = exports.isScrolledToTheBottom = exports.horizontalScrollOffset = exports.getScrollTop = exports.findFirstVisibleElement = void 0;
7
7
 
8
8
  var getScrollTop = function getScrollTop() {
9
9
  var c = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : window;
@@ -35,13 +35,46 @@ var verticalScrollOffset = function verticalScrollOffset(t) {
35
35
 
36
36
  exports.verticalScrollOffset = verticalScrollOffset;
37
37
 
38
+ var horizontalScrollOffset = function horizontalScrollOffset(t) {
39
+ var c = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
40
+
41
+ if (c === window) {
42
+ var _t$getBoundingClientR2;
43
+
44
+ return ((t === null || t === void 0 ? void 0 : (_t$getBoundingClientR2 = t.getBoundingClientRect) === null || _t$getBoundingClientR2 === void 0 ? void 0 : _t$getBoundingClientR2.call(t).left) || 0) + (window.scrollX || window.pageXOffset);
45
+ }
46
+
47
+ if (getComputedStyle(c).position !== "static") {
48
+ return t.offsetLeft;
49
+ }
50
+
51
+ return t.offsetLeft - c.offsetLeft;
52
+ };
53
+
54
+ exports.horizontalScrollOffset = horizontalScrollOffset;
55
+
38
56
  var scrollElement = function scrollElement(element, container) {
39
57
  var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
40
- var elemTop = verticalScrollOffset(element, container);
41
- container.scrollTo({
42
- top: elemTop - offset,
43
- behavior: "smooth"
44
- });
58
+ var direction = arguments.length > 3 ? arguments[3] : undefined;
59
+
60
+ if (direction === "row") {
61
+ var _container$scrollTo;
62
+
63
+ var elemLeft = horizontalScrollOffset(element, container);
64
+ container === null || container === void 0 ? void 0 : (_container$scrollTo = container.scrollTo) === null || _container$scrollTo === void 0 ? void 0 : _container$scrollTo.call(container, {
65
+ left: elemLeft - offset,
66
+ behavior: "smooth"
67
+ });
68
+ } else {
69
+ var _container$scrollTo2;
70
+
71
+ var elemTop = verticalScrollOffset(element, container);
72
+ container === null || container === void 0 ? void 0 : (_container$scrollTo2 = container.scrollTo) === null || _container$scrollTo2 === void 0 ? void 0 : _container$scrollTo2.call(container, {
73
+ top: elemTop - offset,
74
+ behavior: "smooth"
75
+ });
76
+ }
77
+
45
78
  element.focus({
46
79
  preventScroll: true
47
80
  });
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["getScrollTop","c","window","scrollY","pageYOffset","document","documentElement","scrollTop","body","verticalScrollOffset","t","getBoundingClientRect","top","getComputedStyle","position","offsetTop","scrollElement","element","container","offset","elemTop","scrollTo","behavior","focus","preventScroll","isScrolledToTheBottom","containerScrollTop","scrollHeight","innerHeight","offsetHeight","findFirstVisibleElement","options","boundsTop","i","length","ele","getElementById","value"],"sources":["../../src/ScrollTo/utils.js"],"sourcesContent":["export const getScrollTop = (c = window) => {\n if (c === window) {\n return (\n window.scrollY ||\n window.pageYOffset ||\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n return c.scrollTop;\n};\n\nexport const verticalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().top || 0) + (window.scrollY || window.pageYOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetTop;\n }\n\n return t.offsetTop - c.offsetTop;\n};\n\nexport const scrollElement = (element, container, offset = 0) => {\n const elemTop = verticalScrollOffset(element, container);\n container.scrollTo({\n top: elemTop - offset,\n behavior: \"smooth\",\n });\n element.focus({ preventScroll: true });\n};\n\nexport const isScrolledToTheBottom = (container) => {\n const containerScrollTop = getScrollTop(container);\n\n if (container === window) {\n // accounting for cases where html/body are set to height:100%\n const scrollHeight =\n (document.documentElement && document.documentElement.scrollHeight) ||\n document.body.scrollHeight;\n\n return containerScrollTop + window.innerHeight >= scrollHeight;\n }\n\n return containerScrollTop + container.offsetHeight >= container.scrollHeight;\n};\n\nexport const findFirstVisibleElement = (container, options, offset) => {\n const boundsTop = verticalScrollOffset(container);\n\n let i = 0;\n // find index of first element whose top is still visible inside the container\n for (; i < options.length; i += 1) {\n const ele = document.getElementById(options[i].value);\n\n if (ele) {\n const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);\n\n if (elemTop > boundsTop) {\n break;\n }\n }\n }\n\n // return the previous index, the element that last scrolled past the top\n return i - 1;\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","names":["getScrollTop","c","window","scrollY","pageYOffset","document","documentElement","scrollTop","body","verticalScrollOffset","t","getBoundingClientRect","top","getComputedStyle","position","offsetTop","horizontalScrollOffset","left","scrollX","pageXOffset","offsetLeft","scrollElement","element","container","offset","direction","elemLeft","scrollTo","behavior","elemTop","focus","preventScroll","isScrolledToTheBottom","containerScrollTop","scrollHeight","innerHeight","offsetHeight","findFirstVisibleElement","options","boundsTop","i","length","ele","getElementById","value"],"sources":["../../src/ScrollTo/utils.js"],"sourcesContent":["export const getScrollTop = (c = window) => {\n if (c === window) {\n return (\n window.scrollY ||\n window.pageYOffset ||\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n return c.scrollTop;\n};\n\nexport const verticalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().top || 0) + (window.scrollY || window.pageYOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetTop;\n }\n\n return t.offsetTop - c.offsetTop;\n};\n\nexport const horizontalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().left || 0) + (window.scrollX || window.pageXOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetLeft;\n }\n\n return t.offsetLeft - c.offsetLeft;\n};\n\nexport const scrollElement = (element, container, offset = 0, direction) => {\n if (direction === \"row\") {\n const elemLeft = horizontalScrollOffset(element, container);\n container?.scrollTo?.({\n left: elemLeft - offset,\n behavior: \"smooth\",\n });\n } else {\n const elemTop = verticalScrollOffset(element, container);\n container?.scrollTo?.({\n top: elemTop - offset,\n behavior: \"smooth\",\n });\n }\n element.focus({ preventScroll: true });\n};\n\nexport const isScrolledToTheBottom = (container) => {\n const containerScrollTop = getScrollTop(container);\n\n if (container === window) {\n // accounting for cases where html/body are set to height:100%\n const scrollHeight =\n (document.documentElement && document.documentElement.scrollHeight) ||\n document.body.scrollHeight;\n\n return containerScrollTop + window.innerHeight >= scrollHeight;\n }\n\n return containerScrollTop + container.offsetHeight >= container.scrollHeight;\n};\n\nexport const findFirstVisibleElement = (container, options, offset) => {\n const boundsTop = verticalScrollOffset(container);\n\n let i = 0;\n // find index of first element whose top is still visible inside the container\n for (; i < options.length; i += 1) {\n const ele = document.getElementById(options[i].value);\n\n if (ele) {\n const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);\n\n if (elemTop > boundsTop) {\n break;\n }\n }\n }\n\n // return the previous index, the element that last scrolled past the top\n return i - 1;\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { StandardProps, SwitchProps } from "@material-ui/core";
2
2
 
3
- export type HvBaseSwitchClassKey = "root" | "disabled";
3
+ export type HvBaseSwitchClassKey = "root" | "disabled" | "readOnly";
4
4
 
5
5
  export interface HvBaseSwitchProps
6
6
  extends StandardProps<SwitchProps, HvBaseSwitchClassKey, "onChange"> {
@@ -59,7 +59,7 @@ var HvBaseSwitch = function HvBaseSwitch(props) {
59
59
  return /*#__PURE__*/React.createElement(Switch, _extends({
60
60
  id: id,
61
61
  name: name,
62
- className: clsx(className, classes.root, disabled && classes.disabled, focusVisible && classes.focusVisible),
62
+ className: clsx(className, classes.root, disabled && classes.disabled, readOnly && classes.readOnly, focusVisible && classes.focusVisible),
63
63
  color: "default",
64
64
  disabled: disabled,
65
65
  required: required,
@@ -103,6 +103,11 @@ process.env.NODE_ENV !== "production" ? HvBaseSwitch.propTypes = {
103
103
  */
104
104
  disabled: PropTypes.string,
105
105
 
106
+ /**
107
+ * Styles applied to the switch when it is in read only mode.
108
+ */
109
+ readOnly: PropTypes.string,
110
+
106
111
  /**
107
112
  * Styles applied to the internal Switch component's root class.
108
113
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseSwitch.js","names":["React","useState","useCallback","PropTypes","clsx","Switch","withStyles","styles","HvBaseSwitch","props","classes","className","id","name","value","required","readOnly","disabled","checked","defaultChecked","onChange","inputProps","onFocusVisible","onBlur","others","focusVisible","setFocusVisible","onFocusVisibleCallback","evt","onBlurCallback","onLocalChange","target","root","switch","switchBase","track","thumb","propTypes","string","shape","isRequired","any","bool","func","instanceOf","Object"],"sources":["../../../src/BaseSwitch/BaseSwitch.js"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\n\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\n\nimport { Switch, withStyles } from \"@material-ui/core\";\n\nimport styles from \"./styles\";\n\n/**\n * A Switch is <b>binary</b> and work as a digital on/off button.\n *\n * The Base Switch is a building block of the Switch form element. Don't use unless\n * implementing a custom use case not covered by the Switch form element.\n */\nconst HvBaseSwitch = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n value = \"on\",\n\n required = false,\n readOnly = false,\n disabled = false,\n\n checked,\n defaultChecked,\n\n onChange,\n\n inputProps,\n\n onFocusVisible,\n onBlur,\n\n ...others\n } = props;\n\n const [focusVisible, setFocusVisible] = useState(false);\n\n const onFocusVisibleCallback = useCallback(\n (evt) => {\n setFocusVisible(true);\n onFocusVisible?.(evt);\n },\n [onFocusVisible]\n );\n\n const onBlurCallback = useCallback(\n (evt) => {\n setFocusVisible(false);\n onBlur?.(evt);\n },\n [onBlur]\n );\n\n const onLocalChange = useCallback(\n (evt) => {\n if (readOnly) {\n return;\n }\n\n onChange?.(evt, evt.target.checked, value);\n },\n [onChange, readOnly, value]\n );\n\n return (\n <Switch\n id={id}\n name={name}\n className={clsx(className, classes.root, {\n [classes.disabled]: disabled,\n [classes.focusVisible]: focusVisible,\n })}\n color=\"default\"\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n disableRipple\n onChange={onLocalChange}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n classes={{\n root: classes.switch,\n switchBase: classes.switchBase,\n checked: classes.checked,\n track: classes.track,\n thumb: classes.thumb,\n disabled: classes.disabled,\n }}\n inputProps={inputProps}\n onFocusVisible={onFocusVisibleCallback}\n onBlur={onBlurCallback}\n {...others}\n />\n );\n};\n\nHvBaseSwitch.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the switch.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the switch when it is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Styles applied to the internal Switch component's root class.\n */\n switch: PropTypes.string,\n /**\n * Styles applied to the internal SwitchBase component's root class.\n */\n switchBase: PropTypes.string,\n /**\n * Pseudo-class applied to the internal SwitchBase component's checked class.\n */\n checked: PropTypes.string,\n /**\n * Styles applied to the track element.\n */\n track: PropTypes.string,\n /**\n * Styles used to create the thumb passed to the internal SwitchBase component icon prop.\n */\n thumb: PropTypes.string,\n /**\n * Class applied to the root element if keyboard focused.\n */\n focusVisible: PropTypes.string,\n }).isRequired,\n\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * The input name.\n */\n name: PropTypes.string,\n /**\n * The value of the input.\n *\n * Is up to the application's logic when to consider the submission of this value.\n * Generally it should be used only when the switch is neither unchecked nor indeterminate.\n *\n * The default value is \"on\".\n */\n // eslint-disable-next-line react/forbid-prop-types\n value: PropTypes.any,\n\n /**\n * Indicates that user input is required.\n */\n required: PropTypes.bool,\n /**\n * Indicates that the input is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * Indicates that the input is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` the switch is selected, if set to `false` the switch is not selected.\n *\n * When defined the switch state becomes controlled.\n */\n checked: PropTypes.bool,\n /**\n * When uncontrolled, defines the initial checked state.\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * The callback fired when the switch is pressed.\n */\n onChange: PropTypes.func,\n\n /**\n * Properties passed on to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvBaseSwitch\" })(HvBaseSwitch);\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseSwitch.js","names":["React","useState","useCallback","PropTypes","clsx","Switch","withStyles","styles","HvBaseSwitch","props","classes","className","id","name","value","required","readOnly","disabled","checked","defaultChecked","onChange","inputProps","onFocusVisible","onBlur","others","focusVisible","setFocusVisible","onFocusVisibleCallback","evt","onBlurCallback","onLocalChange","target","root","switch","switchBase","track","thumb","propTypes","string","shape","isRequired","any","bool","func","instanceOf","Object"],"sources":["../../../src/BaseSwitch/BaseSwitch.js"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\n\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\n\nimport { Switch, withStyles } from \"@material-ui/core\";\n\nimport styles from \"./styles\";\n\n/**\n * A Switch is <b>binary</b> and work as a digital on/off button.\n *\n * The Base Switch is a building block of the Switch form element. Don't use unless\n * implementing a custom use case not covered by the Switch form element.\n */\nconst HvBaseSwitch = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n value = \"on\",\n\n required = false,\n readOnly = false,\n disabled = false,\n\n checked,\n defaultChecked,\n\n onChange,\n\n inputProps,\n\n onFocusVisible,\n onBlur,\n\n ...others\n } = props;\n\n const [focusVisible, setFocusVisible] = useState(false);\n\n const onFocusVisibleCallback = useCallback(\n (evt) => {\n setFocusVisible(true);\n onFocusVisible?.(evt);\n },\n [onFocusVisible]\n );\n\n const onBlurCallback = useCallback(\n (evt) => {\n setFocusVisible(false);\n onBlur?.(evt);\n },\n [onBlur]\n );\n\n const onLocalChange = useCallback(\n (evt) => {\n if (readOnly) {\n return;\n }\n\n onChange?.(evt, evt.target.checked, value);\n },\n [onChange, readOnly, value]\n );\n\n return (\n <Switch\n id={id}\n name={name}\n className={clsx(className, classes.root, {\n [classes.disabled]: disabled,\n [classes.readOnly]: readOnly,\n [classes.focusVisible]: focusVisible,\n })}\n color=\"default\"\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n disableRipple\n onChange={onLocalChange}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n classes={{\n root: classes.switch,\n switchBase: classes.switchBase,\n checked: classes.checked,\n track: classes.track,\n thumb: classes.thumb,\n disabled: classes.disabled,\n }}\n inputProps={inputProps}\n onFocusVisible={onFocusVisibleCallback}\n onBlur={onBlurCallback}\n {...others}\n />\n );\n};\n\nHvBaseSwitch.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the switch.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the switch when it is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Styles applied to the switch when it is in read only mode.\n */\n readOnly: PropTypes.string,\n /**\n * Styles applied to the internal Switch component's root class.\n */\n switch: PropTypes.string,\n /**\n * Styles applied to the internal SwitchBase component's root class.\n */\n switchBase: PropTypes.string,\n /**\n * Pseudo-class applied to the internal SwitchBase component's checked class.\n */\n checked: PropTypes.string,\n /**\n * Styles applied to the track element.\n */\n track: PropTypes.string,\n /**\n * Styles used to create the thumb passed to the internal SwitchBase component icon prop.\n */\n thumb: PropTypes.string,\n /**\n * Class applied to the root element if keyboard focused.\n */\n focusVisible: PropTypes.string,\n }).isRequired,\n\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * The input name.\n */\n name: PropTypes.string,\n /**\n * The value of the input.\n *\n * Is up to the application's logic when to consider the submission of this value.\n * Generally it should be used only when the switch is neither unchecked nor indeterminate.\n *\n * The default value is \"on\".\n */\n // eslint-disable-next-line react/forbid-prop-types\n value: PropTypes.any,\n\n /**\n * Indicates that user input is required.\n */\n required: PropTypes.bool,\n /**\n * Indicates that the input is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * Indicates that the input is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` the switch is selected, if set to `false` the switch is not selected.\n *\n * When defined the switch state becomes controlled.\n */\n checked: PropTypes.bool,\n /**\n * When uncontrolled, defines the initial checked state.\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * The callback fired when the switch is pressed.\n */\n onChange: PropTypes.func,\n\n /**\n * Properties passed on to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvBaseSwitch\" })(HvBaseSwitch);\n"],"mappings":"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"}
@@ -29,7 +29,10 @@ var styles = function styles(theme) {
29
29
  switch: {
30
30
  padding: 0,
31
31
  width: switchWidth,
32
- height: 16
32
+ height: 16,
33
+ "&$readOnly $switchBase": {
34
+ cursor: "default"
35
+ }
33
36
  },
34
37
  switchBase: {
35
38
  width: switchWidth,
@@ -80,6 +83,7 @@ var styles = function styles(theme) {
80
83
  opacity: 1
81
84
  }
82
85
  },
86
+ readOnly: {},
83
87
  focusVisible: _objectSpread({
84
88
  borderRadius: "8px"
85
89
  }, outlineStyles)
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["outlineStyles","switchWidth","thumbPosition","position","left","width","height","styles","theme","root","padding","cursor","switch","switchBase","backgroundColor","transform","opacity","hv","palette","accent","acce1","track","borderRadius","border","atmosphere","atmo2","thumb","atmo1","marginLeft","marginTop","checked","disabled","atmo3","atmo5","focusVisible"],"sources":["../../../src/BaseSwitch/styles.js"],"sourcesContent":["import { outlineStyles } from \"../Focus/styles\";\n\nconst switchWidth = 32;\n\nconst thumbPosition = {\n position: \"relative\",\n left: -9,\n width: 12,\n height: 12,\n};\n\nconst styles = (theme) => ({\n root: {\n padding: 0,\n cursor: \"pointer\",\n },\n\n switch: {\n padding: 0,\n width: switchWidth,\n height: 16,\n },\n\n switchBase: {\n width: switchWidth,\n height: 16,\n padding: 0,\n\n // increase CSS specificity\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n \"&$checked\": {\n transform: \"translateX(16px)\",\n \"& + $track\": {\n opacity: 1,\n backgroundColor: theme.hv.palette.accent.acce1,\n },\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n\n track: {\n opacity: 1,\n borderRadius: 15,\n left: 17,\n height: 16,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo2,\n },\n\n thumb: {\n ...thumbPosition,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo1,\n marginLeft: 2,\n marginTop: 0,\n },\n\n checked: {},\n\n disabled: {\n cursor: \"not-allowed\",\n\n \"& $switch\": {\n cursor: \"not-allowed\",\n },\n\n \"& $thumb\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n },\n\n \"& $switchBase + $track\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n opacity: 1,\n },\n },\n\n focusVisible: {\n borderRadius: \"8px\",\n ...outlineStyles,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,aAAT,QAA8B,iBAA9B;AAEA,IAAMC,WAAW,GAAG,EAApB;AAEA,IAAMC,aAAa,GAAG;EACpBC,QAAQ,EAAE,UADU;EAEpBC,IAAI,EAAE,CAAC,CAFa;EAGpBC,KAAK,EAAE,EAHa;EAIpBC,MAAM,EAAE;AAJY,CAAtB;;AAOA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;EAAA,OAAY;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAE,CADL;MAEJC,MAAM,EAAE;IAFJ,CADmB;IAMzBC,MAAM,EAAE;MACNF,OAAO,EAAE,CADH;MAENL,KAAK,EAAEJ,WAFD;MAGNK,MAAM,EAAE;IAHF,CANiB;IAYzBO,UAAU,EAAE;MACVR,KAAK,EAAEJ,WADG;MAEVK,MAAM,EAAE,EAFE;MAGVI,OAAO,EAAE,CAHC;MAKV;MACA,WAAW;QACTI,eAAe,EAAE;MADR,CAND;MASV,aAAa;QACXC,SAAS,EAAE,kBADA;QAEX,cAAc;UACZC,OAAO,EAAE,CADG;UAEZF,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC;QAF7B,CAFH;QAMX,WAAW;UACTN,eAAe,EAAE;QADR;MANA;IATH,CAZa;IAiCzBO,KAAK,EAAE;MACLL,OAAO,EAAE,CADJ;MAELM,YAAY,EAAE,EAFT;MAGLlB,IAAI,EAAE,EAHD;MAILE,MAAM,EAAE,EAJH;MAKLiB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CALD;MAMLN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BC;IANxC,CAjCkB;IA0CzBC,KAAK,kCACAxB,aADA;MAEHqB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CAFH;MAGHN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BG,KAH1C;MAIHC,UAAU,EAAE,CAJT;MAKHC,SAAS,EAAE;IALR,EA1CoB;IAkDzBC,OAAO,EAAE,EAlDgB;IAoDzBC,QAAQ,EAAE;MACRpB,MAAM,EAAE,aADA;MAGR,aAAa;QACXA,MAAM,EAAE;MADG,CAHL;MAOR,YAAY;QACVG,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADL;QAEVT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C;MAFI,CAPJ;MAYR,0BAA0B;QACxBnB,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADS;QAExBT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C,CAFkB;QAGxBjB,OAAO,EAAE;MAHe;IAZlB,CApDe;IAuEzBkB,YAAY;MACVZ,YAAY,EAAE;IADJ,GAEPtB,aAFO;EAvEa,CAAZ;AAAA,CAAf;;AA6EA,eAAeO,MAAf"}
1
+ {"version":3,"file":"styles.js","names":["outlineStyles","switchWidth","thumbPosition","position","left","width","height","styles","theme","root","padding","cursor","switch","switchBase","backgroundColor","transform","opacity","hv","palette","accent","acce1","track","borderRadius","border","atmosphere","atmo2","thumb","atmo1","marginLeft","marginTop","checked","disabled","atmo3","atmo5","readOnly","focusVisible"],"sources":["../../../src/BaseSwitch/styles.js"],"sourcesContent":["import { outlineStyles } from \"../Focus/styles\";\n\nconst switchWidth = 32;\n\nconst thumbPosition = {\n position: \"relative\",\n left: -9,\n width: 12,\n height: 12,\n};\n\nconst styles = (theme) => ({\n root: {\n padding: 0,\n cursor: \"pointer\",\n },\n\n switch: {\n padding: 0,\n width: switchWidth,\n height: 16,\n\n \"&$readOnly $switchBase\": {\n cursor: \"default\",\n },\n },\n\n switchBase: {\n width: switchWidth,\n height: 16,\n padding: 0,\n\n // increase CSS specificity\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n \"&$checked\": {\n transform: \"translateX(16px)\",\n \"& + $track\": {\n opacity: 1,\n backgroundColor: theme.hv.palette.accent.acce1,\n },\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n\n track: {\n opacity: 1,\n borderRadius: 15,\n left: 17,\n height: 16,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo2,\n },\n\n thumb: {\n ...thumbPosition,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo1,\n marginLeft: 2,\n marginTop: 0,\n },\n\n checked: {},\n\n disabled: {\n cursor: \"not-allowed\",\n\n \"& $switch\": {\n cursor: \"not-allowed\",\n },\n\n \"& $thumb\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n },\n\n \"& $switchBase + $track\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n opacity: 1,\n },\n },\n\n readOnly: {},\n\n focusVisible: {\n borderRadius: \"8px\",\n ...outlineStyles,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;;;;;;;;AAAA,SAASA,aAAT,QAA8B,iBAA9B;AAEA,IAAMC,WAAW,GAAG,EAApB;AAEA,IAAMC,aAAa,GAAG;EACpBC,QAAQ,EAAE,UADU;EAEpBC,IAAI,EAAE,CAAC,CAFa;EAGpBC,KAAK,EAAE,EAHa;EAIpBC,MAAM,EAAE;AAJY,CAAtB;;AAOA,IAAMC,MAAM,GAAG,SAATA,MAAS,CAACC,KAAD;EAAA,OAAY;IACzBC,IAAI,EAAE;MACJC,OAAO,EAAE,CADL;MAEJC,MAAM,EAAE;IAFJ,CADmB;IAMzBC,MAAM,EAAE;MACNF,OAAO,EAAE,CADH;MAENL,KAAK,EAAEJ,WAFD;MAGNK,MAAM,EAAE,EAHF;MAKN,0BAA0B;QACxBK,MAAM,EAAE;MADgB;IALpB,CANiB;IAgBzBE,UAAU,EAAE;MACVR,KAAK,EAAEJ,WADG;MAEVK,MAAM,EAAE,EAFE;MAGVI,OAAO,EAAE,CAHC;MAKV;MACA,WAAW;QACTI,eAAe,EAAE;MADR,CAND;MASV,aAAa;QACXC,SAAS,EAAE,kBADA;QAEX,cAAc;UACZC,OAAO,EAAE,CADG;UAEZF,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC;QAF7B,CAFH;QAMX,WAAW;UACTN,eAAe,EAAE;QADR;MANA;IATH,CAhBa;IAqCzBO,KAAK,EAAE;MACLL,OAAO,EAAE,CADJ;MAELM,YAAY,EAAE,EAFT;MAGLlB,IAAI,EAAE,EAHD;MAILE,MAAM,EAAE,EAJH;MAKLiB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CALD;MAMLN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BC;IANxC,CArCkB;IA8CzBC,KAAK,kCACAxB,aADA;MAEHqB,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAvC,CAFH;MAGHN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BG,KAH1C;MAIHC,UAAU,EAAE,CAJT;MAKHC,SAAS,EAAE;IALR,EA9CoB;IAsDzBC,OAAO,EAAE,EAtDgB;IAwDzBC,QAAQ,EAAE;MACRpB,MAAM,EAAE,aADA;MAGR,aAAa;QACXA,MAAM,EAAE;MADG,CAHL;MAOR,YAAY;QACVG,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADL;QAEVT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C;MAFI,CAPJ;MAYR,0BAA0B;QACxBnB,eAAe,YAAKN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAjC,CADS;QAExBT,MAAM,sBAAef,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAA3C,CAFkB;QAGxBjB,OAAO,EAAE;MAHe;IAZlB,CAxDe;IA2EzBkB,QAAQ,EAAE,EA3Ee;IA6EzBC,YAAY;MACVb,YAAY,EAAE;IADJ,GAEPtB,aAFO;EA7Ea,CAAZ;AAAA,CAAf;;AAmFA,eAAeO,MAAf"}
@@ -13,6 +13,7 @@ var useScrollTo = function useScrollTo() {
13
13
  var offset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
14
14
  var options = arguments.length > 4 ? arguments[4] : undefined;
15
15
  var onChange = arguments.length > 5 ? arguments[5] : undefined;
16
+ var direction = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : "column";
16
17
  var RETRY_MAX = 5;
17
18
 
18
19
  var _useState = useState(selectedIndexProp),
@@ -133,7 +134,7 @@ var useScrollTo = function useScrollTo() {
133
134
  var ele = document.getElementById(id);
134
135
 
135
136
  if (ele) {
136
- scrollElement(ele, scrollEle.current, option.offset || offset);
137
+ scrollElement(ele, scrollEle.current, option.offset || offset, direction);
137
138
  }
138
139
 
139
140
  if (href) {
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollTo.js","names":["useEffect","useRef","useState","useCallback","verticalScrollOffset","findFirstVisibleElement","isScrolledToTheBottom","getScrollTop","scrollElement","useScrollTo","selectedIndexProp","scrollElementId","href","offset","options","onChange","RETRY_MAX","selectedIndex","setSelectedIndex","scrollEle","requestedAnimationFrame","lastContainerScrollTop","selectedIndexRef","current","document","getElementById","window","checkScroll","event","requestAnimationFrame","firstVisibleElementIndex","newSelectedIndex","length","containerScrollTop","isScrollingDown","addEventListener","removeEventListener","cancelAnimationFrame","checkRenderedInterval","hashValue","location","hash","split","option","find","o","value","retry","setInterval","ele","clearInterval","setScrollTo","id","index","wrappedOnChange","history","pushState"],"sources":["../../../src/ScrollTo/useScrollTo.js"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport {\n verticalScrollOffset,\n findFirstVisibleElement,\n isScrolledToTheBottom,\n getScrollTop,\n scrollElement,\n} from \"./utils\";\n\nconst useScrollTo = (\n selectedIndexProp = 0,\n scrollElementId,\n href,\n offset = 0,\n options,\n onChange\n) => {\n const RETRY_MAX = 5;\n const [selectedIndex, setSelectedIndex] = useState(selectedIndexProp);\n\n const scrollEle = useRef();\n const requestedAnimationFrame = useRef(0);\n const lastContainerScrollTop = useRef();\n\n // ref to use a often-changing value in useCallback, as recommended in\n // https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n const selectedIndexRef = useRef(selectedIndex);\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n scrollEle.current = (scrollElementId && document.getElementById(scrollElementId)) || window;\n lastContainerScrollTop.current = verticalScrollOffset(scrollEle.current);\n }, [scrollElementId]);\n\n const checkScroll = useCallback(\n (event) => {\n if (requestedAnimationFrame.current === 0 && window?.requestAnimationFrame) {\n requestedAnimationFrame.current = window.requestAnimationFrame(() => {\n requestedAnimationFrame.current = 0;\n\n const firstVisibleElementIndex = findFirstVisibleElement(\n scrollEle.current,\n options,\n offset\n );\n\n let newSelectedIndex = firstVisibleElementIndex;\n\n // select the first element when all elements are bellow the container's top\n if (firstVisibleElementIndex < 0) {\n newSelectedIndex = 0;\n }\n\n // if the user has reached the bottom of the container, select the first nav item still visible\n // (usually this selects the last nav item, when it can't reach the top the container)\n // in theory only needed when scrolling down, but no... because of the Safari bouncing behaviour\n if (newSelectedIndex < options.length - 1 && isScrolledToTheBottom(scrollEle.current)) {\n newSelectedIndex += 1;\n }\n\n const containerScrollTop = getScrollTop(scrollEle.current);\n const isScrollingDown = containerScrollTop > lastContainerScrollTop.current;\n lastContainerScrollTop.current = containerScrollTop;\n\n // only update the selected item if the scroll direction is moving away from it\n if (isScrollingDown) {\n if (newSelectedIndex < selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n } else if (newSelectedIndex > selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n\n setSelectedIndex(newSelectedIndex);\n onChange?.(event, newSelectedIndex);\n });\n }\n },\n [offset, options, onChange]\n );\n\n // registers and unregisters the scroll listener\n useEffect(() => {\n if (scrollEle.current) {\n scrollEle.current.addEventListener(\"scroll\", checkScroll, false);\n }\n\n return () => {\n if (scrollEle.current) {\n scrollEle.current.removeEventListener(\"scroll\", checkScroll);\n }\n\n if (requestedAnimationFrame.current !== 0) {\n window.cancelAnimationFrame(requestedAnimationFrame.current);\n requestedAnimationFrame.current = 0;\n }\n };\n }, [checkScroll]);\n\n // waits for the elements to be rendered and scrolls to the one referenced\n // in the URL hash, if any\n useEffect(() => {\n let checkRenderedInterval;\n\n if (href) {\n const hashValue = document.location.hash.split(\"#\")[1] || \"\";\n\n const option = options.find((o) => o.value === hashValue);\n\n if (option) {\n let retry = 0;\n checkRenderedInterval = setInterval(() => {\n const ele = document.getElementById(option.value);\n\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n clearInterval(checkRenderedInterval);\n } else {\n retry += 1;\n if (retry === RETRY_MAX) {\n clearInterval(checkRenderedInterval);\n }\n }\n }, 1000);\n }\n }\n\n return () => {\n clearInterval(checkRenderedInterval);\n };\n\n // we really want to run this just in the first load\n // in fact this doesn't even belong here, the logic should be external\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setScrollTo = (event, id, index, wrappedOnChange) => {\n const option = options.find((o) => o.value === id);\n\n if (option) {\n const ele = document.getElementById(id);\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n }\n\n if (href) {\n window.history.pushState({}, \"\", `#${options[index].value}`);\n }\n\n setSelectedIndex(index);\n wrappedOnChange?.(index);\n\n // Safari scrolls immediately (no smooth scroll support),\n // so this ref value must be updated asap\n selectedIndexRef.current = index;\n }\n };\n\n return [selectedIndex, setScrollTo];\n};\n\nexport default useScrollTo;\n"],"mappings":"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"}
1
+ {"version":3,"file":"useScrollTo.js","names":["useEffect","useRef","useState","useCallback","verticalScrollOffset","findFirstVisibleElement","isScrolledToTheBottom","getScrollTop","scrollElement","useScrollTo","selectedIndexProp","scrollElementId","href","offset","options","onChange","direction","RETRY_MAX","selectedIndex","setSelectedIndex","scrollEle","requestedAnimationFrame","lastContainerScrollTop","selectedIndexRef","current","document","getElementById","window","checkScroll","event","requestAnimationFrame","firstVisibleElementIndex","newSelectedIndex","length","containerScrollTop","isScrollingDown","addEventListener","removeEventListener","cancelAnimationFrame","checkRenderedInterval","hashValue","location","hash","split","option","find","o","value","retry","setInterval","ele","clearInterval","setScrollTo","id","index","wrappedOnChange","history","pushState"],"sources":["../../../src/ScrollTo/useScrollTo.js"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport {\n verticalScrollOffset,\n findFirstVisibleElement,\n isScrolledToTheBottom,\n getScrollTop,\n scrollElement,\n} from \"./utils\";\n\nconst useScrollTo = (\n selectedIndexProp = 0,\n scrollElementId,\n href,\n offset = 0,\n options,\n onChange,\n direction = \"column\"\n) => {\n const RETRY_MAX = 5;\n const [selectedIndex, setSelectedIndex] = useState(selectedIndexProp);\n\n const scrollEle = useRef();\n const requestedAnimationFrame = useRef(0);\n const lastContainerScrollTop = useRef();\n\n // ref to use a often-changing value in useCallback, as recommended in\n // https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n const selectedIndexRef = useRef(selectedIndex);\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n scrollEle.current = (scrollElementId && document.getElementById(scrollElementId)) || window;\n lastContainerScrollTop.current = verticalScrollOffset(scrollEle.current);\n }, [scrollElementId]);\n\n const checkScroll = useCallback(\n (event) => {\n if (requestedAnimationFrame.current === 0 && window?.requestAnimationFrame) {\n requestedAnimationFrame.current = window.requestAnimationFrame(() => {\n requestedAnimationFrame.current = 0;\n\n const firstVisibleElementIndex = findFirstVisibleElement(\n scrollEle.current,\n options,\n offset\n );\n\n let newSelectedIndex = firstVisibleElementIndex;\n\n // select the first element when all elements are bellow the container's top\n if (firstVisibleElementIndex < 0) {\n newSelectedIndex = 0;\n }\n\n // if the user has reached the bottom of the container, select the first nav item still visible\n // (usually this selects the last nav item, when it can't reach the top the container)\n // in theory only needed when scrolling down, but no... because of the Safari bouncing behaviour\n if (newSelectedIndex < options.length - 1 && isScrolledToTheBottom(scrollEle.current)) {\n newSelectedIndex += 1;\n }\n\n const containerScrollTop = getScrollTop(scrollEle.current);\n const isScrollingDown = containerScrollTop > lastContainerScrollTop.current;\n lastContainerScrollTop.current = containerScrollTop;\n\n // only update the selected item if the scroll direction is moving away from it\n if (isScrollingDown) {\n if (newSelectedIndex < selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n } else if (newSelectedIndex > selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n\n setSelectedIndex(newSelectedIndex);\n onChange?.(event, newSelectedIndex);\n });\n }\n },\n [offset, options, onChange]\n );\n\n // registers and unregisters the scroll listener\n useEffect(() => {\n if (scrollEle.current) {\n scrollEle.current.addEventListener(\"scroll\", checkScroll, false);\n }\n\n return () => {\n if (scrollEle.current) {\n scrollEle.current.removeEventListener(\"scroll\", checkScroll);\n }\n\n if (requestedAnimationFrame.current !== 0) {\n window.cancelAnimationFrame(requestedAnimationFrame.current);\n requestedAnimationFrame.current = 0;\n }\n };\n }, [checkScroll]);\n\n // waits for the elements to be rendered and scrolls to the one referenced\n // in the URL hash, if any\n useEffect(() => {\n let checkRenderedInterval;\n\n if (href) {\n const hashValue = document.location.hash.split(\"#\")[1] || \"\";\n\n const option = options.find((o) => o.value === hashValue);\n\n if (option) {\n let retry = 0;\n checkRenderedInterval = setInterval(() => {\n const ele = document.getElementById(option.value);\n\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n clearInterval(checkRenderedInterval);\n } else {\n retry += 1;\n if (retry === RETRY_MAX) {\n clearInterval(checkRenderedInterval);\n }\n }\n }, 1000);\n }\n }\n\n return () => {\n clearInterval(checkRenderedInterval);\n };\n\n // we really want to run this just in the first load\n // in fact this doesn't even belong here, the logic should be external\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setScrollTo = (event, id, index, wrappedOnChange) => {\n const option = options.find((o) => o.value === id);\n\n if (option) {\n const ele = document.getElementById(id);\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset, direction);\n }\n\n if (href) {\n window.history.pushState({}, \"\", `#${options[index].value}`);\n }\n\n setSelectedIndex(index);\n wrappedOnChange?.(index);\n\n // Safari scrolls immediately (no smooth scroll support),\n // so this ref value must be updated asap\n selectedIndexRef.current = index;\n }\n };\n\n return [selectedIndex, setScrollTo];\n};\n\nexport default useScrollTo;\n"],"mappings":"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"}
@@ -22,13 +22,43 @@ export var verticalScrollOffset = function verticalScrollOffset(t) {
22
22
 
23
23
  return t.offsetTop - c.offsetTop;
24
24
  };
25
+ export var horizontalScrollOffset = function horizontalScrollOffset(t) {
26
+ var c = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;
27
+
28
+ if (c === window) {
29
+ var _t$getBoundingClientR2;
30
+
31
+ return ((t === null || t === void 0 ? void 0 : (_t$getBoundingClientR2 = t.getBoundingClientRect) === null || _t$getBoundingClientR2 === void 0 ? void 0 : _t$getBoundingClientR2.call(t).left) || 0) + (window.scrollX || window.pageXOffset);
32
+ }
33
+
34
+ if (getComputedStyle(c).position !== "static") {
35
+ return t.offsetLeft;
36
+ }
37
+
38
+ return t.offsetLeft - c.offsetLeft;
39
+ };
25
40
  export var scrollElement = function scrollElement(element, container) {
26
41
  var offset = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;
27
- var elemTop = verticalScrollOffset(element, container);
28
- container.scrollTo({
29
- top: elemTop - offset,
30
- behavior: "smooth"
31
- });
42
+ var direction = arguments.length > 3 ? arguments[3] : undefined;
43
+
44
+ if (direction === "row") {
45
+ var _container$scrollTo;
46
+
47
+ var elemLeft = horizontalScrollOffset(element, container);
48
+ container === null || container === void 0 ? void 0 : (_container$scrollTo = container.scrollTo) === null || _container$scrollTo === void 0 ? void 0 : _container$scrollTo.call(container, {
49
+ left: elemLeft - offset,
50
+ behavior: "smooth"
51
+ });
52
+ } else {
53
+ var _container$scrollTo2;
54
+
55
+ var elemTop = verticalScrollOffset(element, container);
56
+ container === null || container === void 0 ? void 0 : (_container$scrollTo2 = container.scrollTo) === null || _container$scrollTo2 === void 0 ? void 0 : _container$scrollTo2.call(container, {
57
+ top: elemTop - offset,
58
+ behavior: "smooth"
59
+ });
60
+ }
61
+
32
62
  element.focus({
33
63
  preventScroll: true
34
64
  });
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["getScrollTop","c","window","scrollY","pageYOffset","document","documentElement","scrollTop","body","verticalScrollOffset","t","getBoundingClientRect","top","getComputedStyle","position","offsetTop","scrollElement","element","container","offset","elemTop","scrollTo","behavior","focus","preventScroll","isScrolledToTheBottom","containerScrollTop","scrollHeight","innerHeight","offsetHeight","findFirstVisibleElement","options","boundsTop","i","length","ele","getElementById","value"],"sources":["../../../src/ScrollTo/utils.js"],"sourcesContent":["export const getScrollTop = (c = window) => {\n if (c === window) {\n return (\n window.scrollY ||\n window.pageYOffset ||\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n return c.scrollTop;\n};\n\nexport const verticalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().top || 0) + (window.scrollY || window.pageYOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetTop;\n }\n\n return t.offsetTop - c.offsetTop;\n};\n\nexport const scrollElement = (element, container, offset = 0) => {\n const elemTop = verticalScrollOffset(element, container);\n container.scrollTo({\n top: elemTop - offset,\n behavior: \"smooth\",\n });\n element.focus({ preventScroll: true });\n};\n\nexport const isScrolledToTheBottom = (container) => {\n const containerScrollTop = getScrollTop(container);\n\n if (container === window) {\n // accounting for cases where html/body are set to height:100%\n const scrollHeight =\n (document.documentElement && document.documentElement.scrollHeight) ||\n document.body.scrollHeight;\n\n return containerScrollTop + window.innerHeight >= scrollHeight;\n }\n\n return containerScrollTop + container.offsetHeight >= container.scrollHeight;\n};\n\nexport const findFirstVisibleElement = (container, options, offset) => {\n const boundsTop = verticalScrollOffset(container);\n\n let i = 0;\n // find index of first element whose top is still visible inside the container\n for (; i < options.length; i += 1) {\n const ele = document.getElementById(options[i].value);\n\n if (ele) {\n const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);\n\n if (elemTop > boundsTop) {\n break;\n }\n }\n }\n\n // return the previous index, the element that last scrolled past the top\n return i - 1;\n};\n"],"mappings":"AAAA,OAAO,IAAMA,YAAY,GAAG,SAAfA,YAAe,GAAgB;EAAA,IAAfC,CAAe,uEAAXC,MAAW;;EAC1C,IAAID,CAAC,KAAKC,MAAV,EAAkB;IAChB,OACEA,MAAM,CAACC,OAAP,IACAD,MAAM,CAACE,WADP,IAECC,QAAQ,CAACC,eAAT,IAA4BD,QAAQ,CAACC,eAAT,CAAyBC,SAFtD,IAGAF,QAAQ,CAACG,IAAT,CAAcD,SAJhB;EAMD;;EAED,OAAON,CAAC,CAACM,SAAT;AACD,CAXM;AAaP,OAAO,IAAME,oBAAoB,GAAG,SAAvBA,oBAAuB,CAACC,CAAD,EAAmB;EAAA,IAAfT,CAAe,uEAAXC,MAAW;;EACrD,IAAID,CAAC,KAAKC,MAAV,EAAkB;IAAA;;IAChB,OAAO,CAAC,CAAAQ,CAAC,SAAD,IAAAA,CAAC,WAAD,qCAAAA,CAAC,CAAEC,qBAAH,qFAAAD,CAAC,EAA4BE,GAA7B,KAAoC,CAArC,KAA2CV,MAAM,CAACC,OAAP,IAAkBD,MAAM,CAACE,WAApE,CAAP;EACD;;EACD,IAAIS,gBAAgB,CAACZ,CAAD,CAAhB,CAAoBa,QAApB,KAAiC,QAArC,EAA+C;IAC7C,OAAOJ,CAAC,CAACK,SAAT;EACD;;EAED,OAAOL,CAAC,CAACK,SAAF,GAAcd,CAAC,CAACc,SAAvB;AACD,CATM;AAWP,OAAO,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,CAACC,OAAD,EAAUC,SAAV,EAAoC;EAAA,IAAfC,MAAe,uEAAN,CAAM;EAC/D,IAAMC,OAAO,GAAGX,oBAAoB,CAACQ,OAAD,EAAUC,SAAV,CAApC;EACAA,SAAS,CAACG,QAAV,CAAmB;IACjBT,GAAG,EAAEQ,OAAO,GAAGD,MADE;IAEjBG,QAAQ,EAAE;EAFO,CAAnB;EAIAL,OAAO,CAACM,KAAR,CAAc;IAAEC,aAAa,EAAE;EAAjB,CAAd;AACD,CAPM;AASP,OAAO,IAAMC,qBAAqB,GAAG,SAAxBA,qBAAwB,CAACP,SAAD,EAAe;EAClD,IAAMQ,kBAAkB,GAAG1B,YAAY,CAACkB,SAAD,CAAvC;;EAEA,IAAIA,SAAS,KAAKhB,MAAlB,EAA0B;IACxB;IACA,IAAMyB,YAAY,GACftB,QAAQ,CAACC,eAAT,IAA4BD,QAAQ,CAACC,eAAT,CAAyBqB,YAAtD,IACAtB,QAAQ,CAACG,IAAT,CAAcmB,YAFhB;IAIA,OAAOD,kBAAkB,GAAGxB,MAAM,CAAC0B,WAA5B,IAA2CD,YAAlD;EACD;;EAED,OAAOD,kBAAkB,GAAGR,SAAS,CAACW,YAA/B,IAA+CX,SAAS,CAACS,YAAhE;AACD,CAbM;AAeP,OAAO,IAAMG,uBAAuB,GAAG,SAA1BA,uBAA0B,CAACZ,SAAD,EAAYa,OAAZ,EAAqBZ,MAArB,EAAgC;EACrE,IAAMa,SAAS,GAAGvB,oBAAoB,CAACS,SAAD,CAAtC;EAEA,IAAIe,CAAC,GAAG,CAAR,CAHqE,CAIrE;;EACA,OAAOA,CAAC,GAAGF,OAAO,CAACG,MAAnB,EAA2BD,CAAC,IAAI,CAAhC,EAAmC;IACjC,IAAME,GAAG,GAAG9B,QAAQ,CAAC+B,cAAT,CAAwBL,OAAO,CAACE,CAAD,CAAP,CAAWI,KAAnC,CAAZ;;IAEA,IAAIF,GAAJ,EAAS;MACP,IAAMf,OAAO,GAAGX,oBAAoB,CAAC0B,GAAD,CAApB,IAA6BJ,OAAO,CAACE,CAAD,CAAP,CAAWd,MAAX,IAAqBA,MAAlD,CAAhB;;MAEA,IAAIC,OAAO,GAAGY,SAAd,EAAyB;QACvB;MACD;IACF;EACF,CAfoE,CAiBrE;;;EACA,OAAOC,CAAC,GAAG,CAAX;AACD,CAnBM"}
1
+ {"version":3,"file":"utils.js","names":["getScrollTop","c","window","scrollY","pageYOffset","document","documentElement","scrollTop","body","verticalScrollOffset","t","getBoundingClientRect","top","getComputedStyle","position","offsetTop","horizontalScrollOffset","left","scrollX","pageXOffset","offsetLeft","scrollElement","element","container","offset","direction","elemLeft","scrollTo","behavior","elemTop","focus","preventScroll","isScrolledToTheBottom","containerScrollTop","scrollHeight","innerHeight","offsetHeight","findFirstVisibleElement","options","boundsTop","i","length","ele","getElementById","value"],"sources":["../../../src/ScrollTo/utils.js"],"sourcesContent":["export const getScrollTop = (c = window) => {\n if (c === window) {\n return (\n window.scrollY ||\n window.pageYOffset ||\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n return c.scrollTop;\n};\n\nexport const verticalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().top || 0) + (window.scrollY || window.pageYOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetTop;\n }\n\n return t.offsetTop - c.offsetTop;\n};\n\nexport const horizontalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().left || 0) + (window.scrollX || window.pageXOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetLeft;\n }\n\n return t.offsetLeft - c.offsetLeft;\n};\n\nexport const scrollElement = (element, container, offset = 0, direction) => {\n if (direction === \"row\") {\n const elemLeft = horizontalScrollOffset(element, container);\n container?.scrollTo?.({\n left: elemLeft - offset,\n behavior: \"smooth\",\n });\n } else {\n const elemTop = verticalScrollOffset(element, container);\n container?.scrollTo?.({\n top: elemTop - offset,\n behavior: \"smooth\",\n });\n }\n element.focus({ preventScroll: true });\n};\n\nexport const isScrolledToTheBottom = (container) => {\n const containerScrollTop = getScrollTop(container);\n\n if (container === window) {\n // accounting for cases where html/body are set to height:100%\n const scrollHeight =\n (document.documentElement && document.documentElement.scrollHeight) ||\n document.body.scrollHeight;\n\n return containerScrollTop + window.innerHeight >= scrollHeight;\n }\n\n return containerScrollTop + container.offsetHeight >= container.scrollHeight;\n};\n\nexport const findFirstVisibleElement = (container, options, offset) => {\n const boundsTop = verticalScrollOffset(container);\n\n let i = 0;\n // find index of first element whose top is still visible inside the container\n for (; i < options.length; i += 1) {\n const ele = document.getElementById(options[i].value);\n\n if (ele) {\n const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);\n\n if (elemTop > boundsTop) {\n break;\n }\n }\n }\n\n // return the previous index, the element that last scrolled past the top\n return i - 1;\n};\n"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { StandardProps, SwitchProps } from "@material-ui/core";
2
2
 
3
- export type HvBaseSwitchClassKey = "root" | "disabled";
3
+ export type HvBaseSwitchClassKey = "root" | "disabled" | "readOnly";
4
4
 
5
5
  export interface HvBaseSwitchProps
6
6
  extends StandardProps<SwitchProps, HvBaseSwitchClassKey, "onChange"> {
@@ -52,7 +52,7 @@ const HvBaseSwitch = props => {
52
52
  return /*#__PURE__*/React.createElement(Switch, _extends({
53
53
  id: id,
54
54
  name: name,
55
- className: clsx(className, classes.root, disabled && classes.disabled, focusVisible && classes.focusVisible),
55
+ className: clsx(className, classes.root, disabled && classes.disabled, readOnly && classes.readOnly, focusVisible && classes.focusVisible),
56
56
  color: "default",
57
57
  disabled: disabled,
58
58
  required: required,
@@ -96,6 +96,11 @@ process.env.NODE_ENV !== "production" ? HvBaseSwitch.propTypes = {
96
96
  */
97
97
  disabled: PropTypes.string,
98
98
 
99
+ /**
100
+ * Styles applied to the switch when it is in read only mode.
101
+ */
102
+ readOnly: PropTypes.string,
103
+
99
104
  /**
100
105
  * Styles applied to the internal Switch component's root class.
101
106
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseSwitch.js","names":["React","useState","useCallback","PropTypes","clsx","Switch","withStyles","styles","HvBaseSwitch","props","classes","className","id","name","value","required","readOnly","disabled","checked","defaultChecked","onChange","inputProps","onFocusVisible","onBlur","others","focusVisible","setFocusVisible","onFocusVisibleCallback","evt","onBlurCallback","onLocalChange","target","root","switch","switchBase","track","thumb","propTypes","string","shape","isRequired","any","bool","func","instanceOf","Object"],"sources":["../../../src/BaseSwitch/BaseSwitch.js"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\n\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\n\nimport { Switch, withStyles } from \"@material-ui/core\";\n\nimport styles from \"./styles\";\n\n/**\n * A Switch is <b>binary</b> and work as a digital on/off button.\n *\n * The Base Switch is a building block of the Switch form element. Don't use unless\n * implementing a custom use case not covered by the Switch form element.\n */\nconst HvBaseSwitch = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n value = \"on\",\n\n required = false,\n readOnly = false,\n disabled = false,\n\n checked,\n defaultChecked,\n\n onChange,\n\n inputProps,\n\n onFocusVisible,\n onBlur,\n\n ...others\n } = props;\n\n const [focusVisible, setFocusVisible] = useState(false);\n\n const onFocusVisibleCallback = useCallback(\n (evt) => {\n setFocusVisible(true);\n onFocusVisible?.(evt);\n },\n [onFocusVisible]\n );\n\n const onBlurCallback = useCallback(\n (evt) => {\n setFocusVisible(false);\n onBlur?.(evt);\n },\n [onBlur]\n );\n\n const onLocalChange = useCallback(\n (evt) => {\n if (readOnly) {\n return;\n }\n\n onChange?.(evt, evt.target.checked, value);\n },\n [onChange, readOnly, value]\n );\n\n return (\n <Switch\n id={id}\n name={name}\n className={clsx(className, classes.root, {\n [classes.disabled]: disabled,\n [classes.focusVisible]: focusVisible,\n })}\n color=\"default\"\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n disableRipple\n onChange={onLocalChange}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n classes={{\n root: classes.switch,\n switchBase: classes.switchBase,\n checked: classes.checked,\n track: classes.track,\n thumb: classes.thumb,\n disabled: classes.disabled,\n }}\n inputProps={inputProps}\n onFocusVisible={onFocusVisibleCallback}\n onBlur={onBlurCallback}\n {...others}\n />\n );\n};\n\nHvBaseSwitch.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the switch.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the switch when it is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Styles applied to the internal Switch component's root class.\n */\n switch: PropTypes.string,\n /**\n * Styles applied to the internal SwitchBase component's root class.\n */\n switchBase: PropTypes.string,\n /**\n * Pseudo-class applied to the internal SwitchBase component's checked class.\n */\n checked: PropTypes.string,\n /**\n * Styles applied to the track element.\n */\n track: PropTypes.string,\n /**\n * Styles used to create the thumb passed to the internal SwitchBase component icon prop.\n */\n thumb: PropTypes.string,\n /**\n * Class applied to the root element if keyboard focused.\n */\n focusVisible: PropTypes.string,\n }).isRequired,\n\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * The input name.\n */\n name: PropTypes.string,\n /**\n * The value of the input.\n *\n * Is up to the application's logic when to consider the submission of this value.\n * Generally it should be used only when the switch is neither unchecked nor indeterminate.\n *\n * The default value is \"on\".\n */\n // eslint-disable-next-line react/forbid-prop-types\n value: PropTypes.any,\n\n /**\n * Indicates that user input is required.\n */\n required: PropTypes.bool,\n /**\n * Indicates that the input is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * Indicates that the input is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` the switch is selected, if set to `false` the switch is not selected.\n *\n * When defined the switch state becomes controlled.\n */\n checked: PropTypes.bool,\n /**\n * When uncontrolled, defines the initial checked state.\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * The callback fired when the switch is pressed.\n */\n onChange: PropTypes.func,\n\n /**\n * Properties passed on to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvBaseSwitch\" })(HvBaseSwitch);\n"],"mappings":"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"}
1
+ {"version":3,"file":"BaseSwitch.js","names":["React","useState","useCallback","PropTypes","clsx","Switch","withStyles","styles","HvBaseSwitch","props","classes","className","id","name","value","required","readOnly","disabled","checked","defaultChecked","onChange","inputProps","onFocusVisible","onBlur","others","focusVisible","setFocusVisible","onFocusVisibleCallback","evt","onBlurCallback","onLocalChange","target","root","switch","switchBase","track","thumb","propTypes","string","shape","isRequired","any","bool","func","instanceOf","Object"],"sources":["../../../src/BaseSwitch/BaseSwitch.js"],"sourcesContent":["import React, { useState, useCallback } from \"react\";\n\nimport PropTypes from \"prop-types\";\nimport clsx from \"clsx\";\n\nimport { Switch, withStyles } from \"@material-ui/core\";\n\nimport styles from \"./styles\";\n\n/**\n * A Switch is <b>binary</b> and work as a digital on/off button.\n *\n * The Base Switch is a building block of the Switch form element. Don't use unless\n * implementing a custom use case not covered by the Switch form element.\n */\nconst HvBaseSwitch = (props) => {\n const {\n classes,\n className,\n\n id,\n name,\n value = \"on\",\n\n required = false,\n readOnly = false,\n disabled = false,\n\n checked,\n defaultChecked,\n\n onChange,\n\n inputProps,\n\n onFocusVisible,\n onBlur,\n\n ...others\n } = props;\n\n const [focusVisible, setFocusVisible] = useState(false);\n\n const onFocusVisibleCallback = useCallback(\n (evt) => {\n setFocusVisible(true);\n onFocusVisible?.(evt);\n },\n [onFocusVisible]\n );\n\n const onBlurCallback = useCallback(\n (evt) => {\n setFocusVisible(false);\n onBlur?.(evt);\n },\n [onBlur]\n );\n\n const onLocalChange = useCallback(\n (evt) => {\n if (readOnly) {\n return;\n }\n\n onChange?.(evt, evt.target.checked, value);\n },\n [onChange, readOnly, value]\n );\n\n return (\n <Switch\n id={id}\n name={name}\n className={clsx(className, classes.root, {\n [classes.disabled]: disabled,\n [classes.readOnly]: readOnly,\n [classes.focusVisible]: focusVisible,\n })}\n color=\"default\"\n disabled={disabled}\n required={required}\n readOnly={readOnly}\n disableRipple\n onChange={onLocalChange}\n value={value}\n checked={checked}\n defaultChecked={defaultChecked}\n classes={{\n root: classes.switch,\n switchBase: classes.switchBase,\n checked: classes.checked,\n track: classes.track,\n thumb: classes.thumb,\n disabled: classes.disabled,\n }}\n inputProps={inputProps}\n onFocusVisible={onFocusVisibleCallback}\n onBlur={onBlurCallback}\n {...others}\n />\n );\n};\n\nHvBaseSwitch.propTypes = {\n /**\n * Class names to be applied.\n */\n className: PropTypes.string,\n /**\n * A Jss Object used to override or extend the styles applied to the switch.\n */\n classes: PropTypes.shape({\n /**\n * Styles applied to the component.\n */\n root: PropTypes.string,\n /**\n * Styles applied to the switch when it is disabled.\n */\n disabled: PropTypes.string,\n /**\n * Styles applied to the switch when it is in read only mode.\n */\n readOnly: PropTypes.string,\n /**\n * Styles applied to the internal Switch component's root class.\n */\n switch: PropTypes.string,\n /**\n * Styles applied to the internal SwitchBase component's root class.\n */\n switchBase: PropTypes.string,\n /**\n * Pseudo-class applied to the internal SwitchBase component's checked class.\n */\n checked: PropTypes.string,\n /**\n * Styles applied to the track element.\n */\n track: PropTypes.string,\n /**\n * Styles used to create the thumb passed to the internal SwitchBase component icon prop.\n */\n thumb: PropTypes.string,\n /**\n * Class applied to the root element if keyboard focused.\n */\n focusVisible: PropTypes.string,\n }).isRequired,\n\n /**\n * Id to be applied to the root node.\n */\n id: PropTypes.string,\n\n /**\n * The input name.\n */\n name: PropTypes.string,\n /**\n * The value of the input.\n *\n * Is up to the application's logic when to consider the submission of this value.\n * Generally it should be used only when the switch is neither unchecked nor indeterminate.\n *\n * The default value is \"on\".\n */\n // eslint-disable-next-line react/forbid-prop-types\n value: PropTypes.any,\n\n /**\n * Indicates that user input is required.\n */\n required: PropTypes.bool,\n /**\n * Indicates that the input is not editable.\n */\n readOnly: PropTypes.bool,\n /**\n * Indicates that the input is disabled.\n */\n disabled: PropTypes.bool,\n\n /**\n * If `true` the switch is selected, if set to `false` the switch is not selected.\n *\n * When defined the switch state becomes controlled.\n */\n checked: PropTypes.bool,\n /**\n * When uncontrolled, defines the initial checked state.\n */\n defaultChecked: PropTypes.bool,\n\n /**\n * The callback fired when the switch is pressed.\n */\n onChange: PropTypes.func,\n\n /**\n * Properties passed on to the input element.\n */\n inputProps: PropTypes.instanceOf(Object),\n\n /**\n * Callback fired when the component is focused with a keyboard.\n * We trigger a `onFocus` callback too.\n */\n onFocusVisible: PropTypes.func,\n /**\n * @ignore\n */\n onBlur: PropTypes.func,\n};\n\nexport default withStyles(styles, { name: \"HvBaseSwitch\" })(HvBaseSwitch);\n"],"mappings":"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"}
@@ -21,7 +21,10 @@ const styles = theme => ({
21
21
  switch: {
22
22
  padding: 0,
23
23
  width: switchWidth,
24
- height: 16
24
+ height: 16,
25
+ "&$readOnly $switchBase": {
26
+ cursor: "default"
27
+ }
25
28
  },
26
29
  switchBase: {
27
30
  width: switchWidth,
@@ -72,6 +75,7 @@ const styles = theme => ({
72
75
  opacity: 1
73
76
  }
74
77
  },
78
+ readOnly: {},
75
79
  focusVisible: _objectSpread({
76
80
  borderRadius: "8px"
77
81
  }, outlineStyles)
@@ -1 +1 @@
1
- {"version":3,"file":"styles.js","names":["outlineStyles","switchWidth","thumbPosition","position","left","width","height","styles","theme","root","padding","cursor","switch","switchBase","backgroundColor","transform","opacity","hv","palette","accent","acce1","track","borderRadius","border","atmosphere","atmo2","thumb","atmo1","marginLeft","marginTop","checked","disabled","atmo3","atmo5","focusVisible"],"sources":["../../../src/BaseSwitch/styles.js"],"sourcesContent":["import { outlineStyles } from \"../Focus/styles\";\n\nconst switchWidth = 32;\n\nconst thumbPosition = {\n position: \"relative\",\n left: -9,\n width: 12,\n height: 12,\n};\n\nconst styles = (theme) => ({\n root: {\n padding: 0,\n cursor: \"pointer\",\n },\n\n switch: {\n padding: 0,\n width: switchWidth,\n height: 16,\n },\n\n switchBase: {\n width: switchWidth,\n height: 16,\n padding: 0,\n\n // increase CSS specificity\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n \"&$checked\": {\n transform: \"translateX(16px)\",\n \"& + $track\": {\n opacity: 1,\n backgroundColor: theme.hv.palette.accent.acce1,\n },\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n\n track: {\n opacity: 1,\n borderRadius: 15,\n left: 17,\n height: 16,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo2,\n },\n\n thumb: {\n ...thumbPosition,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo1,\n marginLeft: 2,\n marginTop: 0,\n },\n\n checked: {},\n\n disabled: {\n cursor: \"not-allowed\",\n\n \"& $switch\": {\n cursor: \"not-allowed\",\n },\n\n \"& $thumb\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n },\n\n \"& $switchBase + $track\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n opacity: 1,\n },\n },\n\n focusVisible: {\n borderRadius: \"8px\",\n ...outlineStyles,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;AAAA,SAASA,aAAT,QAA8B,iBAA9B;AAEA,MAAMC,WAAW,GAAG,EAApB;AAEA,MAAMC,aAAa,GAAG;EACpBC,QAAQ,EAAE,UADU;EAEpBC,IAAI,EAAE,CAAC,CAFa;EAGpBC,KAAK,EAAE,EAHa;EAIpBC,MAAM,EAAE;AAJY,CAAtB;;AAOA,MAAMC,MAAM,GAAIC,KAAD,KAAY;EACzBC,IAAI,EAAE;IACJC,OAAO,EAAE,CADL;IAEJC,MAAM,EAAE;EAFJ,CADmB;EAMzBC,MAAM,EAAE;IACNF,OAAO,EAAE,CADH;IAENL,KAAK,EAAEJ,WAFD;IAGNK,MAAM,EAAE;EAHF,CANiB;EAYzBO,UAAU,EAAE;IACVR,KAAK,EAAEJ,WADG;IAEVK,MAAM,EAAE,EAFE;IAGVI,OAAO,EAAE,CAHC;IAKV;IACA,WAAW;MACTI,eAAe,EAAE;IADR,CAND;IASV,aAAa;MACXC,SAAS,EAAE,kBADA;MAEX,cAAc;QACZC,OAAO,EAAE,CADG;QAEZF,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC;MAF7B,CAFH;MAMX,WAAW;QACTN,eAAe,EAAE;MADR;IANA;EATH,CAZa;EAiCzBO,KAAK,EAAE;IACLL,OAAO,EAAE,CADJ;IAELM,YAAY,EAAE,EAFT;IAGLlB,IAAI,EAAE,EAHD;IAILE,MAAM,EAAE,EAJH;IAKLiB,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAM,EAL9C;IAMLN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BC;EANxC,CAjCkB;EA0CzBC,KAAK,kCACAxB,aADA;IAEHqB,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAM,EAFhD;IAGHN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BG,KAH1C;IAIHC,UAAU,EAAE,CAJT;IAKHC,SAAS,EAAE;EALR,EA1CoB;EAkDzBC,OAAO,EAAE,EAlDgB;EAoDzBC,QAAQ,EAAE;IACRpB,MAAM,EAAE,aADA;IAGR,aAAa;MACXA,MAAM,EAAE;IADG,CAHL;IAOR,YAAY;MACVG,eAAe,EAAG,GAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAM,EAD5C;MAEVT,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAAM;IAF7C,CAPJ;IAYR,0BAA0B;MACxBnB,eAAe,EAAG,GAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAM,EAD9B;MAExBT,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAAM,EAF/B;MAGxBjB,OAAO,EAAE;IAHe;EAZlB,CApDe;EAuEzBkB,YAAY;IACVZ,YAAY,EAAE;EADJ,GAEPtB,aAFO;AAvEa,CAAZ,CAAf;;AA6EA,eAAeO,MAAf"}
1
+ {"version":3,"file":"styles.js","names":["outlineStyles","switchWidth","thumbPosition","position","left","width","height","styles","theme","root","padding","cursor","switch","switchBase","backgroundColor","transform","opacity","hv","palette","accent","acce1","track","borderRadius","border","atmosphere","atmo2","thumb","atmo1","marginLeft","marginTop","checked","disabled","atmo3","atmo5","readOnly","focusVisible"],"sources":["../../../src/BaseSwitch/styles.js"],"sourcesContent":["import { outlineStyles } from \"../Focus/styles\";\n\nconst switchWidth = 32;\n\nconst thumbPosition = {\n position: \"relative\",\n left: -9,\n width: 12,\n height: 12,\n};\n\nconst styles = (theme) => ({\n root: {\n padding: 0,\n cursor: \"pointer\",\n },\n\n switch: {\n padding: 0,\n width: switchWidth,\n height: 16,\n\n \"&$readOnly $switchBase\": {\n cursor: \"default\",\n },\n },\n\n switchBase: {\n width: switchWidth,\n height: 16,\n padding: 0,\n\n // increase CSS specificity\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n \"&$checked\": {\n transform: \"translateX(16px)\",\n \"& + $track\": {\n opacity: 1,\n backgroundColor: theme.hv.palette.accent.acce1,\n },\n \"&:hover\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n\n track: {\n opacity: 1,\n borderRadius: 15,\n left: 17,\n height: 16,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo2,\n },\n\n thumb: {\n ...thumbPosition,\n border: `solid 1px ${theme.hv.palette.accent.acce1}`,\n backgroundColor: theme.hv.palette.atmosphere.atmo1,\n marginLeft: 2,\n marginTop: 0,\n },\n\n checked: {},\n\n disabled: {\n cursor: \"not-allowed\",\n\n \"& $switch\": {\n cursor: \"not-allowed\",\n },\n\n \"& $thumb\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n },\n\n \"& $switchBase + $track\": {\n backgroundColor: `${theme.hv.palette.atmosphere.atmo3}`,\n border: `solid 1px ${theme.hv.palette.atmosphere.atmo5}`,\n opacity: 1,\n },\n },\n\n readOnly: {},\n\n focusVisible: {\n borderRadius: \"8px\",\n ...outlineStyles,\n },\n});\n\nexport default styles;\n"],"mappings":";;;;;;AAAA,SAASA,aAAT,QAA8B,iBAA9B;AAEA,MAAMC,WAAW,GAAG,EAApB;AAEA,MAAMC,aAAa,GAAG;EACpBC,QAAQ,EAAE,UADU;EAEpBC,IAAI,EAAE,CAAC,CAFa;EAGpBC,KAAK,EAAE,EAHa;EAIpBC,MAAM,EAAE;AAJY,CAAtB;;AAOA,MAAMC,MAAM,GAAIC,KAAD,KAAY;EACzBC,IAAI,EAAE;IACJC,OAAO,EAAE,CADL;IAEJC,MAAM,EAAE;EAFJ,CADmB;EAMzBC,MAAM,EAAE;IACNF,OAAO,EAAE,CADH;IAENL,KAAK,EAAEJ,WAFD;IAGNK,MAAM,EAAE,EAHF;IAKN,0BAA0B;MACxBK,MAAM,EAAE;IADgB;EALpB,CANiB;EAgBzBE,UAAU,EAAE;IACVR,KAAK,EAAEJ,WADG;IAEVK,MAAM,EAAE,EAFE;IAGVI,OAAO,EAAE,CAHC;IAKV;IACA,WAAW;MACTI,eAAe,EAAE;IADR,CAND;IASV,aAAa;MACXC,SAAS,EAAE,kBADA;MAEX,cAAc;QACZC,OAAO,EAAE,CADG;QAEZF,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC;MAF7B,CAFH;MAMX,WAAW;QACTN,eAAe,EAAE;MADR;IANA;EATH,CAhBa;EAqCzBO,KAAK,EAAE;IACLL,OAAO,EAAE,CADJ;IAELM,YAAY,EAAE,EAFT;IAGLlB,IAAI,EAAE,EAHD;IAILE,MAAM,EAAE,EAJH;IAKLiB,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAM,EAL9C;IAMLN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BC;EANxC,CArCkB;EA8CzBC,KAAK,kCACAxB,aADA;IAEHqB,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBC,MAAjB,CAAwBC,KAAM,EAFhD;IAGHN,eAAe,EAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BG,KAH1C;IAIHC,UAAU,EAAE,CAJT;IAKHC,SAAS,EAAE;EALR,EA9CoB;EAsDzBC,OAAO,EAAE,EAtDgB;EAwDzBC,QAAQ,EAAE;IACRpB,MAAM,EAAE,aADA;IAGR,aAAa;MACXA,MAAM,EAAE;IADG,CAHL;IAOR,YAAY;MACVG,eAAe,EAAG,GAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAM,EAD5C;MAEVT,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAAM;IAF7C,CAPJ;IAYR,0BAA0B;MACxBnB,eAAe,EAAG,GAAEN,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BQ,KAAM,EAD9B;MAExBT,MAAM,EAAG,aAAYf,KAAK,CAACS,EAAN,CAASC,OAAT,CAAiBM,UAAjB,CAA4BS,KAAM,EAF/B;MAGxBjB,OAAO,EAAE;IAHe;EAZlB,CAxDe;EA2EzBkB,QAAQ,EAAE,EA3Ee;EA6EzBC,YAAY;IACVb,YAAY,EAAE;EADJ,GAEPtB,aAFO;AA7Ea,CAAZ,CAAf;;AAmFA,eAAeO,MAAf"}
@@ -2,7 +2,7 @@ import "core-js/modules/web.dom-collections.iterator.js";
2
2
  import { useEffect, useRef, useState, useCallback } from "react";
3
3
  import { verticalScrollOffset, findFirstVisibleElement, isScrolledToTheBottom, getScrollTop, scrollElement } from "./utils";
4
4
 
5
- const useScrollTo = (selectedIndexProp = 0, scrollElementId, href, offset = 0, options, onChange) => {
5
+ const useScrollTo = (selectedIndexProp = 0, scrollElementId, href, offset = 0, options, onChange, direction = "column") => {
6
6
  const RETRY_MAX = 5;
7
7
  const [selectedIndex, setSelectedIndex] = useState(selectedIndexProp);
8
8
  const scrollEle = useRef();
@@ -114,7 +114,7 @@ const useScrollTo = (selectedIndexProp = 0, scrollElementId, href, offset = 0, o
114
114
  const ele = document.getElementById(id);
115
115
 
116
116
  if (ele) {
117
- scrollElement(ele, scrollEle.current, option.offset || offset);
117
+ scrollElement(ele, scrollEle.current, option.offset || offset, direction);
118
118
  }
119
119
 
120
120
  if (href) {
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollTo.js","names":["useEffect","useRef","useState","useCallback","verticalScrollOffset","findFirstVisibleElement","isScrolledToTheBottom","getScrollTop","scrollElement","useScrollTo","selectedIndexProp","scrollElementId","href","offset","options","onChange","RETRY_MAX","selectedIndex","setSelectedIndex","scrollEle","requestedAnimationFrame","lastContainerScrollTop","selectedIndexRef","current","document","getElementById","window","checkScroll","event","requestAnimationFrame","firstVisibleElementIndex","newSelectedIndex","length","containerScrollTop","isScrollingDown","addEventListener","removeEventListener","cancelAnimationFrame","checkRenderedInterval","hashValue","location","hash","split","option","find","o","value","retry","setInterval","ele","clearInterval","setScrollTo","id","index","wrappedOnChange","history","pushState"],"sources":["../../../src/ScrollTo/useScrollTo.js"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport {\n verticalScrollOffset,\n findFirstVisibleElement,\n isScrolledToTheBottom,\n getScrollTop,\n scrollElement,\n} from \"./utils\";\n\nconst useScrollTo = (\n selectedIndexProp = 0,\n scrollElementId,\n href,\n offset = 0,\n options,\n onChange\n) => {\n const RETRY_MAX = 5;\n const [selectedIndex, setSelectedIndex] = useState(selectedIndexProp);\n\n const scrollEle = useRef();\n const requestedAnimationFrame = useRef(0);\n const lastContainerScrollTop = useRef();\n\n // ref to use a often-changing value in useCallback, as recommended in\n // https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n const selectedIndexRef = useRef(selectedIndex);\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n scrollEle.current = (scrollElementId && document.getElementById(scrollElementId)) || window;\n lastContainerScrollTop.current = verticalScrollOffset(scrollEle.current);\n }, [scrollElementId]);\n\n const checkScroll = useCallback(\n (event) => {\n if (requestedAnimationFrame.current === 0 && window?.requestAnimationFrame) {\n requestedAnimationFrame.current = window.requestAnimationFrame(() => {\n requestedAnimationFrame.current = 0;\n\n const firstVisibleElementIndex = findFirstVisibleElement(\n scrollEle.current,\n options,\n offset\n );\n\n let newSelectedIndex = firstVisibleElementIndex;\n\n // select the first element when all elements are bellow the container's top\n if (firstVisibleElementIndex < 0) {\n newSelectedIndex = 0;\n }\n\n // if the user has reached the bottom of the container, select the first nav item still visible\n // (usually this selects the last nav item, when it can't reach the top the container)\n // in theory only needed when scrolling down, but no... because of the Safari bouncing behaviour\n if (newSelectedIndex < options.length - 1 && isScrolledToTheBottom(scrollEle.current)) {\n newSelectedIndex += 1;\n }\n\n const containerScrollTop = getScrollTop(scrollEle.current);\n const isScrollingDown = containerScrollTop > lastContainerScrollTop.current;\n lastContainerScrollTop.current = containerScrollTop;\n\n // only update the selected item if the scroll direction is moving away from it\n if (isScrollingDown) {\n if (newSelectedIndex < selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n } else if (newSelectedIndex > selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n\n setSelectedIndex(newSelectedIndex);\n onChange?.(event, newSelectedIndex);\n });\n }\n },\n [offset, options, onChange]\n );\n\n // registers and unregisters the scroll listener\n useEffect(() => {\n if (scrollEle.current) {\n scrollEle.current.addEventListener(\"scroll\", checkScroll, false);\n }\n\n return () => {\n if (scrollEle.current) {\n scrollEle.current.removeEventListener(\"scroll\", checkScroll);\n }\n\n if (requestedAnimationFrame.current !== 0) {\n window.cancelAnimationFrame(requestedAnimationFrame.current);\n requestedAnimationFrame.current = 0;\n }\n };\n }, [checkScroll]);\n\n // waits for the elements to be rendered and scrolls to the one referenced\n // in the URL hash, if any\n useEffect(() => {\n let checkRenderedInterval;\n\n if (href) {\n const hashValue = document.location.hash.split(\"#\")[1] || \"\";\n\n const option = options.find((o) => o.value === hashValue);\n\n if (option) {\n let retry = 0;\n checkRenderedInterval = setInterval(() => {\n const ele = document.getElementById(option.value);\n\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n clearInterval(checkRenderedInterval);\n } else {\n retry += 1;\n if (retry === RETRY_MAX) {\n clearInterval(checkRenderedInterval);\n }\n }\n }, 1000);\n }\n }\n\n return () => {\n clearInterval(checkRenderedInterval);\n };\n\n // we really want to run this just in the first load\n // in fact this doesn't even belong here, the logic should be external\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setScrollTo = (event, id, index, wrappedOnChange) => {\n const option = options.find((o) => o.value === id);\n\n if (option) {\n const ele = document.getElementById(id);\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n }\n\n if (href) {\n window.history.pushState({}, \"\", `#${options[index].value}`);\n }\n\n setSelectedIndex(index);\n wrappedOnChange?.(index);\n\n // Safari scrolls immediately (no smooth scroll support),\n // so this ref value must be updated asap\n selectedIndexRef.current = index;\n }\n };\n\n return [selectedIndex, setScrollTo];\n};\n\nexport default useScrollTo;\n"],"mappings":"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"}
1
+ {"version":3,"file":"useScrollTo.js","names":["useEffect","useRef","useState","useCallback","verticalScrollOffset","findFirstVisibleElement","isScrolledToTheBottom","getScrollTop","scrollElement","useScrollTo","selectedIndexProp","scrollElementId","href","offset","options","onChange","direction","RETRY_MAX","selectedIndex","setSelectedIndex","scrollEle","requestedAnimationFrame","lastContainerScrollTop","selectedIndexRef","current","document","getElementById","window","checkScroll","event","requestAnimationFrame","firstVisibleElementIndex","newSelectedIndex","length","containerScrollTop","isScrollingDown","addEventListener","removeEventListener","cancelAnimationFrame","checkRenderedInterval","hashValue","location","hash","split","option","find","o","value","retry","setInterval","ele","clearInterval","setScrollTo","id","index","wrappedOnChange","history","pushState"],"sources":["../../../src/ScrollTo/useScrollTo.js"],"sourcesContent":["import { useEffect, useRef, useState, useCallback } from \"react\";\nimport {\n verticalScrollOffset,\n findFirstVisibleElement,\n isScrolledToTheBottom,\n getScrollTop,\n scrollElement,\n} from \"./utils\";\n\nconst useScrollTo = (\n selectedIndexProp = 0,\n scrollElementId,\n href,\n offset = 0,\n options,\n onChange,\n direction = \"column\"\n) => {\n const RETRY_MAX = 5;\n const [selectedIndex, setSelectedIndex] = useState(selectedIndexProp);\n\n const scrollEle = useRef();\n const requestedAnimationFrame = useRef(0);\n const lastContainerScrollTop = useRef();\n\n // ref to use a often-changing value in useCallback, as recommended in\n // https://reactjs.org/docs/hooks-faq.html#how-to-read-an-often-changing-value-from-usecallback\n const selectedIndexRef = useRef(selectedIndex);\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n scrollEle.current = (scrollElementId && document.getElementById(scrollElementId)) || window;\n lastContainerScrollTop.current = verticalScrollOffset(scrollEle.current);\n }, [scrollElementId]);\n\n const checkScroll = useCallback(\n (event) => {\n if (requestedAnimationFrame.current === 0 && window?.requestAnimationFrame) {\n requestedAnimationFrame.current = window.requestAnimationFrame(() => {\n requestedAnimationFrame.current = 0;\n\n const firstVisibleElementIndex = findFirstVisibleElement(\n scrollEle.current,\n options,\n offset\n );\n\n let newSelectedIndex = firstVisibleElementIndex;\n\n // select the first element when all elements are bellow the container's top\n if (firstVisibleElementIndex < 0) {\n newSelectedIndex = 0;\n }\n\n // if the user has reached the bottom of the container, select the first nav item still visible\n // (usually this selects the last nav item, when it can't reach the top the container)\n // in theory only needed when scrolling down, but no... because of the Safari bouncing behaviour\n if (newSelectedIndex < options.length - 1 && isScrolledToTheBottom(scrollEle.current)) {\n newSelectedIndex += 1;\n }\n\n const containerScrollTop = getScrollTop(scrollEle.current);\n const isScrollingDown = containerScrollTop > lastContainerScrollTop.current;\n lastContainerScrollTop.current = containerScrollTop;\n\n // only update the selected item if the scroll direction is moving away from it\n if (isScrollingDown) {\n if (newSelectedIndex < selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n } else if (newSelectedIndex > selectedIndexRef.current) {\n newSelectedIndex = selectedIndexRef.current;\n }\n\n setSelectedIndex(newSelectedIndex);\n onChange?.(event, newSelectedIndex);\n });\n }\n },\n [offset, options, onChange]\n );\n\n // registers and unregisters the scroll listener\n useEffect(() => {\n if (scrollEle.current) {\n scrollEle.current.addEventListener(\"scroll\", checkScroll, false);\n }\n\n return () => {\n if (scrollEle.current) {\n scrollEle.current.removeEventListener(\"scroll\", checkScroll);\n }\n\n if (requestedAnimationFrame.current !== 0) {\n window.cancelAnimationFrame(requestedAnimationFrame.current);\n requestedAnimationFrame.current = 0;\n }\n };\n }, [checkScroll]);\n\n // waits for the elements to be rendered and scrolls to the one referenced\n // in the URL hash, if any\n useEffect(() => {\n let checkRenderedInterval;\n\n if (href) {\n const hashValue = document.location.hash.split(\"#\")[1] || \"\";\n\n const option = options.find((o) => o.value === hashValue);\n\n if (option) {\n let retry = 0;\n checkRenderedInterval = setInterval(() => {\n const ele = document.getElementById(option.value);\n\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset);\n clearInterval(checkRenderedInterval);\n } else {\n retry += 1;\n if (retry === RETRY_MAX) {\n clearInterval(checkRenderedInterval);\n }\n }\n }, 1000);\n }\n }\n\n return () => {\n clearInterval(checkRenderedInterval);\n };\n\n // we really want to run this just in the first load\n // in fact this doesn't even belong here, the logic should be external\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const setScrollTo = (event, id, index, wrappedOnChange) => {\n const option = options.find((o) => o.value === id);\n\n if (option) {\n const ele = document.getElementById(id);\n if (ele) {\n scrollElement(ele, scrollEle.current, option.offset || offset, direction);\n }\n\n if (href) {\n window.history.pushState({}, \"\", `#${options[index].value}`);\n }\n\n setSelectedIndex(index);\n wrappedOnChange?.(index);\n\n // Safari scrolls immediately (no smooth scroll support),\n // so this ref value must be updated asap\n selectedIndexRef.current = index;\n }\n };\n\n return [selectedIndex, setScrollTo];\n};\n\nexport default useScrollTo;\n"],"mappings":"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"}
@@ -18,12 +18,38 @@ export const verticalScrollOffset = (t, c = window) => {
18
18
 
19
19
  return t.offsetTop - c.offsetTop;
20
20
  };
21
- export const scrollElement = (element, container, offset = 0) => {
22
- const elemTop = verticalScrollOffset(element, container);
23
- container.scrollTo({
24
- top: elemTop - offset,
25
- behavior: "smooth"
26
- });
21
+ export const horizontalScrollOffset = (t, c = window) => {
22
+ if (c === window) {
23
+ var _t$getBoundingClientR2;
24
+
25
+ return ((t === null || t === void 0 ? void 0 : (_t$getBoundingClientR2 = t.getBoundingClientRect) === null || _t$getBoundingClientR2 === void 0 ? void 0 : _t$getBoundingClientR2.call(t).left) || 0) + (window.scrollX || window.pageXOffset);
26
+ }
27
+
28
+ if (getComputedStyle(c).position !== "static") {
29
+ return t.offsetLeft;
30
+ }
31
+
32
+ return t.offsetLeft - c.offsetLeft;
33
+ };
34
+ export const scrollElement = (element, container, offset = 0, direction) => {
35
+ if (direction === "row") {
36
+ var _container$scrollTo;
37
+
38
+ const elemLeft = horizontalScrollOffset(element, container);
39
+ container === null || container === void 0 ? void 0 : (_container$scrollTo = container.scrollTo) === null || _container$scrollTo === void 0 ? void 0 : _container$scrollTo.call(container, {
40
+ left: elemLeft - offset,
41
+ behavior: "smooth"
42
+ });
43
+ } else {
44
+ var _container$scrollTo2;
45
+
46
+ const elemTop = verticalScrollOffset(element, container);
47
+ container === null || container === void 0 ? void 0 : (_container$scrollTo2 = container.scrollTo) === null || _container$scrollTo2 === void 0 ? void 0 : _container$scrollTo2.call(container, {
48
+ top: elemTop - offset,
49
+ behavior: "smooth"
50
+ });
51
+ }
52
+
27
53
  element.focus({
28
54
  preventScroll: true
29
55
  });
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","names":["getScrollTop","c","window","scrollY","pageYOffset","document","documentElement","scrollTop","body","verticalScrollOffset","t","getBoundingClientRect","top","getComputedStyle","position","offsetTop","scrollElement","element","container","offset","elemTop","scrollTo","behavior","focus","preventScroll","isScrolledToTheBottom","containerScrollTop","scrollHeight","innerHeight","offsetHeight","findFirstVisibleElement","options","boundsTop","i","length","ele","getElementById","value"],"sources":["../../../src/ScrollTo/utils.js"],"sourcesContent":["export const getScrollTop = (c = window) => {\n if (c === window) {\n return (\n window.scrollY ||\n window.pageYOffset ||\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n return c.scrollTop;\n};\n\nexport const verticalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().top || 0) + (window.scrollY || window.pageYOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetTop;\n }\n\n return t.offsetTop - c.offsetTop;\n};\n\nexport const scrollElement = (element, container, offset = 0) => {\n const elemTop = verticalScrollOffset(element, container);\n container.scrollTo({\n top: elemTop - offset,\n behavior: \"smooth\",\n });\n element.focus({ preventScroll: true });\n};\n\nexport const isScrolledToTheBottom = (container) => {\n const containerScrollTop = getScrollTop(container);\n\n if (container === window) {\n // accounting for cases where html/body are set to height:100%\n const scrollHeight =\n (document.documentElement && document.documentElement.scrollHeight) ||\n document.body.scrollHeight;\n\n return containerScrollTop + window.innerHeight >= scrollHeight;\n }\n\n return containerScrollTop + container.offsetHeight >= container.scrollHeight;\n};\n\nexport const findFirstVisibleElement = (container, options, offset) => {\n const boundsTop = verticalScrollOffset(container);\n\n let i = 0;\n // find index of first element whose top is still visible inside the container\n for (; i < options.length; i += 1) {\n const ele = document.getElementById(options[i].value);\n\n if (ele) {\n const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);\n\n if (elemTop > boundsTop) {\n break;\n }\n }\n }\n\n // return the previous index, the element that last scrolled past the top\n return i - 1;\n};\n"],"mappings":"AAAA,OAAO,MAAMA,YAAY,GAAG,CAACC,CAAC,GAAGC,MAAL,KAAgB;EAC1C,IAAID,CAAC,KAAKC,MAAV,EAAkB;IAChB,OACEA,MAAM,CAACC,OAAP,IACAD,MAAM,CAACE,WADP,IAECC,QAAQ,CAACC,eAAT,IAA4BD,QAAQ,CAACC,eAAT,CAAyBC,SAFtD,IAGAF,QAAQ,CAACG,IAAT,CAAcD,SAJhB;EAMD;;EAED,OAAON,CAAC,CAACM,SAAT;AACD,CAXM;AAaP,OAAO,MAAME,oBAAoB,GAAG,CAACC,CAAD,EAAIT,CAAC,GAAGC,MAAR,KAAmB;EACrD,IAAID,CAAC,KAAKC,MAAV,EAAkB;IAAA;;IAChB,OAAO,CAAC,CAAAQ,CAAC,SAAD,IAAAA,CAAC,WAAD,qCAAAA,CAAC,CAAEC,qBAAH,qFAAAD,CAAC,EAA4BE,GAA7B,KAAoC,CAArC,KAA2CV,MAAM,CAACC,OAAP,IAAkBD,MAAM,CAACE,WAApE,CAAP;EACD;;EACD,IAAIS,gBAAgB,CAACZ,CAAD,CAAhB,CAAoBa,QAApB,KAAiC,QAArC,EAA+C;IAC7C,OAAOJ,CAAC,CAACK,SAAT;EACD;;EAED,OAAOL,CAAC,CAACK,SAAF,GAAcd,CAAC,CAACc,SAAvB;AACD,CATM;AAWP,OAAO,MAAMC,aAAa,GAAG,CAACC,OAAD,EAAUC,SAAV,EAAqBC,MAAM,GAAG,CAA9B,KAAoC;EAC/D,MAAMC,OAAO,GAAGX,oBAAoB,CAACQ,OAAD,EAAUC,SAAV,CAApC;EACAA,SAAS,CAACG,QAAV,CAAmB;IACjBT,GAAG,EAAEQ,OAAO,GAAGD,MADE;IAEjBG,QAAQ,EAAE;EAFO,CAAnB;EAIAL,OAAO,CAACM,KAAR,CAAc;IAAEC,aAAa,EAAE;EAAjB,CAAd;AACD,CAPM;AASP,OAAO,MAAMC,qBAAqB,GAAIP,SAAD,IAAe;EAClD,MAAMQ,kBAAkB,GAAG1B,YAAY,CAACkB,SAAD,CAAvC;;EAEA,IAAIA,SAAS,KAAKhB,MAAlB,EAA0B;IACxB;IACA,MAAMyB,YAAY,GACftB,QAAQ,CAACC,eAAT,IAA4BD,QAAQ,CAACC,eAAT,CAAyBqB,YAAtD,IACAtB,QAAQ,CAACG,IAAT,CAAcmB,YAFhB;IAIA,OAAOD,kBAAkB,GAAGxB,MAAM,CAAC0B,WAA5B,IAA2CD,YAAlD;EACD;;EAED,OAAOD,kBAAkB,GAAGR,SAAS,CAACW,YAA/B,IAA+CX,SAAS,CAACS,YAAhE;AACD,CAbM;AAeP,OAAO,MAAMG,uBAAuB,GAAG,CAACZ,SAAD,EAAYa,OAAZ,EAAqBZ,MAArB,KAAgC;EACrE,MAAMa,SAAS,GAAGvB,oBAAoB,CAACS,SAAD,CAAtC;EAEA,IAAIe,CAAC,GAAG,CAAR,CAHqE,CAIrE;;EACA,OAAOA,CAAC,GAAGF,OAAO,CAACG,MAAnB,EAA2BD,CAAC,IAAI,CAAhC,EAAmC;IACjC,MAAME,GAAG,GAAG9B,QAAQ,CAAC+B,cAAT,CAAwBL,OAAO,CAACE,CAAD,CAAP,CAAWI,KAAnC,CAAZ;;IAEA,IAAIF,GAAJ,EAAS;MACP,MAAMf,OAAO,GAAGX,oBAAoB,CAAC0B,GAAD,CAApB,IAA6BJ,OAAO,CAACE,CAAD,CAAP,CAAWd,MAAX,IAAqBA,MAAlD,CAAhB;;MAEA,IAAIC,OAAO,GAAGY,SAAd,EAAyB;QACvB;MACD;IACF;EACF,CAfoE,CAiBrE;;;EACA,OAAOC,CAAC,GAAG,CAAX;AACD,CAnBM"}
1
+ {"version":3,"file":"utils.js","names":["getScrollTop","c","window","scrollY","pageYOffset","document","documentElement","scrollTop","body","verticalScrollOffset","t","getBoundingClientRect","top","getComputedStyle","position","offsetTop","horizontalScrollOffset","left","scrollX","pageXOffset","offsetLeft","scrollElement","element","container","offset","direction","elemLeft","scrollTo","behavior","elemTop","focus","preventScroll","isScrolledToTheBottom","containerScrollTop","scrollHeight","innerHeight","offsetHeight","findFirstVisibleElement","options","boundsTop","i","length","ele","getElementById","value"],"sources":["../../../src/ScrollTo/utils.js"],"sourcesContent":["export const getScrollTop = (c = window) => {\n if (c === window) {\n return (\n window.scrollY ||\n window.pageYOffset ||\n (document.documentElement && document.documentElement.scrollTop) ||\n document.body.scrollTop\n );\n }\n\n return c.scrollTop;\n};\n\nexport const verticalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().top || 0) + (window.scrollY || window.pageYOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetTop;\n }\n\n return t.offsetTop - c.offsetTop;\n};\n\nexport const horizontalScrollOffset = (t, c = window) => {\n if (c === window) {\n return (t?.getBoundingClientRect?.().left || 0) + (window.scrollX || window.pageXOffset);\n }\n if (getComputedStyle(c).position !== \"static\") {\n return t.offsetLeft;\n }\n\n return t.offsetLeft - c.offsetLeft;\n};\n\nexport const scrollElement = (element, container, offset = 0, direction) => {\n if (direction === \"row\") {\n const elemLeft = horizontalScrollOffset(element, container);\n container?.scrollTo?.({\n left: elemLeft - offset,\n behavior: \"smooth\",\n });\n } else {\n const elemTop = verticalScrollOffset(element, container);\n container?.scrollTo?.({\n top: elemTop - offset,\n behavior: \"smooth\",\n });\n }\n element.focus({ preventScroll: true });\n};\n\nexport const isScrolledToTheBottom = (container) => {\n const containerScrollTop = getScrollTop(container);\n\n if (container === window) {\n // accounting for cases where html/body are set to height:100%\n const scrollHeight =\n (document.documentElement && document.documentElement.scrollHeight) ||\n document.body.scrollHeight;\n\n return containerScrollTop + window.innerHeight >= scrollHeight;\n }\n\n return containerScrollTop + container.offsetHeight >= container.scrollHeight;\n};\n\nexport const findFirstVisibleElement = (container, options, offset) => {\n const boundsTop = verticalScrollOffset(container);\n\n let i = 0;\n // find index of first element whose top is still visible inside the container\n for (; i < options.length; i += 1) {\n const ele = document.getElementById(options[i].value);\n\n if (ele) {\n const elemTop = verticalScrollOffset(ele) - (options[i].offset || offset);\n\n if (elemTop > boundsTop) {\n break;\n }\n }\n }\n\n // return the previous index, the element that last scrolled past the top\n return i - 1;\n};\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hitachivantara/uikit-react-core",
3
- "version": "3.73.1",
3
+ "version": "3.74.0",
4
4
  "description": "A collection of React components for the Hitachi Vantara's Design System.",
5
5
  "homepage": "https://github.com/lumada-design/hv-uikit-react",
6
6
  "license": "Apache-2.0",
@@ -80,5 +80,5 @@
80
80
  "publishConfig": {
81
81
  "access": "public"
82
82
  },
83
- "gitHead": "f8a061de68b72ecbfcd65da3501291f62d3f35cc"
83
+ "gitHead": "c22744ec752bf0b2957e69354b1988369246bd9e"
84
84
  }