@dnb/eufemia 9.27.0 → 9.28.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.
Files changed (235) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/cjs/components/Badge.d.ts +3 -0
  3. package/cjs/components/{slider/web-component.js → Badge.js} +6 -9
  4. package/cjs/components/autocomplete/Autocomplete.js +14 -2
  5. package/cjs/components/autocomplete/style/_autocomplete.scss +17 -1
  6. package/cjs/components/autocomplete/style/dnb-autocomplete.css +36 -3
  7. package/cjs/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  8. package/cjs/components/avatar/style/_avatar.scss +1 -0
  9. package/cjs/components/avatar/style/dnb-avatar.css +1 -0
  10. package/cjs/components/avatar/style/dnb-avatar.min.css +1 -1
  11. package/cjs/components/badge/Badge.d.ts +58 -0
  12. package/cjs/components/badge/Badge.js +124 -0
  13. package/cjs/components/badge/index.d.ts +8 -0
  14. package/cjs/components/badge/index.js +52 -0
  15. package/cjs/components/badge/style/_badge.scss +74 -0
  16. package/cjs/components/badge/style/dnb-badge.css +151 -0
  17. package/cjs/components/badge/style/dnb-badge.min.css +1 -0
  18. package/cjs/components/badge/style/dnb-badge.scss +12 -0
  19. package/cjs/components/badge/style/index.d.ts +6 -0
  20. package/cjs/components/badge/style/index.js +3 -0
  21. package/cjs/components/badge/style/themes/dnb-badge-theme-ui.css +21 -0
  22. package/cjs/components/badge/style/themes/dnb-badge-theme-ui.min.css +1 -0
  23. package/cjs/components/badge/style/themes/dnb-badge-theme-ui.scss +17 -0
  24. package/cjs/components/badge/style/themes/ui.d.ts +1 -0
  25. package/cjs/components/badge/style/themes/ui.js +3 -0
  26. package/cjs/components/badge/style.d.ts +1 -0
  27. package/cjs/components/badge/style.js +3 -0
  28. package/cjs/components/dialog/style/dnb-dialog.css +3 -13
  29. package/cjs/components/dialog/style/dnb-dialog.min.css +1 -1
  30. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.css +0 -2
  31. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  32. package/cjs/components/dialog/style/themes/dnb-dialog-theme-ui.scss +0 -7
  33. package/cjs/components/drawer/DrawerContent.js +7 -1
  34. package/cjs/components/drawer/style/_drawer.scss +2 -10
  35. package/cjs/components/drawer/style/dnb-drawer.css +4 -21
  36. package/cjs/components/drawer/style/dnb-drawer.min.css +1 -1
  37. package/cjs/components/drawer/style/themes/dnb-drawer-theme-ui.css +0 -2
  38. package/cjs/components/drawer/style/themes/dnb-drawer-theme-ui.min.css +1 -1
  39. package/cjs/components/drawer/style/themes/dnb-drawer-theme-ui.scss +0 -7
  40. package/cjs/components/form-row/FormRow.js +9 -8
  41. package/cjs/components/form-row/FormRowHelpers.d.ts +1 -0
  42. package/cjs/components/form-row/FormRowHelpers.js +16 -2
  43. package/cjs/components/index.d.ts +2 -1
  44. package/cjs/components/index.js +8 -0
  45. package/cjs/components/lib.d.ts +92 -2
  46. package/cjs/components/lib.js +9 -0
  47. package/cjs/components/modal/ModalContent.js +0 -2
  48. package/cjs/components/modal/style/_modal.scss +0 -3
  49. package/cjs/components/modal/style/dnb-modal.css +3 -13
  50. package/cjs/components/modal/style/dnb-modal.min.css +1 -1
  51. package/cjs/components/modal/style/themes/dnb-modal-theme-ui.css +6 -2
  52. package/cjs/components/modal/style/themes/dnb-modal-theme-ui.min.css +1 -1
  53. package/cjs/components/modal/style/themes/dnb-modal-theme-ui.scss +6 -5
  54. package/cjs/components/slider/Slider.d.ts +146 -229
  55. package/cjs/components/slider/Slider.js +381 -589
  56. package/cjs/components/timeline/TimelineItem.js +2 -1
  57. package/cjs/index.d.ts +2 -1
  58. package/cjs/index.js +8 -0
  59. package/cjs/shared/AlignmentHelper.js +4 -2
  60. package/cjs/shared/Context.d.ts +5 -1
  61. package/cjs/shared/Eufemia.js +1 -1
  62. package/cjs/shared/helpers/Suffix.d.ts +5 -4
  63. package/cjs/shared/helpers/filterValidProps.d.ts +11 -0
  64. package/cjs/shared/helpers/filterValidProps.js +19 -0
  65. package/cjs/shared/helpers/withCamelCaseProps.js +3 -0
  66. package/cjs/style/dnb-ui-components.css +122 -16
  67. package/cjs/style/dnb-ui-components.min.css +3 -3
  68. package/cjs/style/dnb-ui-components.scss +1 -0
  69. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.css +28 -6
  70. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +3 -3
  71. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +28 -6
  72. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  73. package/cjs/style/themes/theme-ui/dnb-theme-ui.scss +1 -0
  74. package/components/Badge.d.ts +3 -0
  75. package/components/Badge.js +3 -0
  76. package/components/autocomplete/Autocomplete.js +15 -3
  77. package/components/autocomplete/style/_autocomplete.scss +17 -1
  78. package/components/autocomplete/style/dnb-autocomplete.css +36 -3
  79. package/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  80. package/components/avatar/style/_avatar.scss +1 -0
  81. package/components/avatar/style/dnb-avatar.css +1 -0
  82. package/components/avatar/style/dnb-avatar.min.css +1 -1
  83. package/components/badge/Badge.d.ts +58 -0
  84. package/components/badge/Badge.js +92 -0
  85. package/components/badge/index.d.ts +8 -0
  86. package/components/badge/index.js +3 -0
  87. package/components/badge/style/_badge.scss +74 -0
  88. package/components/badge/style/dnb-badge.css +151 -0
  89. package/components/badge/style/dnb-badge.min.css +1 -0
  90. package/components/badge/style/dnb-badge.scss +12 -0
  91. package/components/badge/style/index.d.ts +6 -0
  92. package/components/badge/style/index.js +1 -0
  93. package/components/badge/style/themes/dnb-badge-theme-ui.css +21 -0
  94. package/components/badge/style/themes/dnb-badge-theme-ui.min.css +1 -0
  95. package/components/badge/style/themes/dnb-badge-theme-ui.scss +17 -0
  96. package/components/badge/style/themes/ui.d.ts +1 -0
  97. package/components/badge/style/themes/ui.js +1 -0
  98. package/components/badge/style.d.ts +1 -0
  99. package/components/badge/style.js +1 -0
  100. package/components/dialog/style/dnb-dialog.css +3 -13
  101. package/components/dialog/style/dnb-dialog.min.css +1 -1
  102. package/components/dialog/style/themes/dnb-dialog-theme-ui.css +0 -2
  103. package/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  104. package/components/dialog/style/themes/dnb-dialog-theme-ui.scss +0 -7
  105. package/components/drawer/DrawerContent.js +4 -1
  106. package/components/drawer/style/_drawer.scss +2 -10
  107. package/components/drawer/style/dnb-drawer.css +4 -21
  108. package/components/drawer/style/dnb-drawer.min.css +1 -1
  109. package/components/drawer/style/themes/dnb-drawer-theme-ui.css +0 -2
  110. package/components/drawer/style/themes/dnb-drawer-theme-ui.min.css +1 -1
  111. package/components/drawer/style/themes/dnb-drawer-theme-ui.scss +0 -7
  112. package/components/form-row/FormRow.js +9 -8
  113. package/components/form-row/FormRowHelpers.d.ts +1 -0
  114. package/components/form-row/FormRowHelpers.js +10 -0
  115. package/components/index.d.ts +2 -1
  116. package/components/index.js +2 -1
  117. package/components/lib.d.ts +92 -2
  118. package/components/lib.js +3 -1
  119. package/components/modal/ModalContent.js +0 -2
  120. package/components/modal/style/_modal.scss +0 -3
  121. package/components/modal/style/dnb-modal.css +3 -13
  122. package/components/modal/style/dnb-modal.min.css +1 -1
  123. package/components/modal/style/themes/dnb-modal-theme-ui.css +6 -2
  124. package/components/modal/style/themes/dnb-modal-theme-ui.min.css +1 -1
  125. package/components/modal/style/themes/dnb-modal-theme-ui.scss +6 -5
  126. package/components/slider/Slider.d.ts +146 -229
  127. package/components/slider/Slider.js +356 -574
  128. package/components/timeline/TimelineItem.js +2 -1
  129. package/es/components/Badge.d.ts +3 -0
  130. package/es/components/Badge.js +3 -0
  131. package/es/components/autocomplete/Autocomplete.js +14 -3
  132. package/es/components/autocomplete/style/_autocomplete.scss +17 -1
  133. package/es/components/autocomplete/style/dnb-autocomplete.css +36 -3
  134. package/es/components/autocomplete/style/dnb-autocomplete.min.css +1 -1
  135. package/es/components/avatar/style/_avatar.scss +1 -0
  136. package/es/components/avatar/style/dnb-avatar.css +1 -0
  137. package/es/components/avatar/style/dnb-avatar.min.css +1 -1
  138. package/es/components/badge/Badge.d.ts +58 -0
  139. package/es/components/badge/Badge.js +88 -0
  140. package/es/components/badge/index.d.ts +8 -0
  141. package/es/components/badge/index.js +3 -0
  142. package/es/components/badge/style/_badge.scss +74 -0
  143. package/es/components/badge/style/dnb-badge.css +151 -0
  144. package/es/components/badge/style/dnb-badge.min.css +1 -0
  145. package/es/components/badge/style/dnb-badge.scss +12 -0
  146. package/es/components/badge/style/index.d.ts +6 -0
  147. package/es/components/badge/style/index.js +1 -0
  148. package/es/components/badge/style/themes/dnb-badge-theme-ui.css +21 -0
  149. package/es/components/badge/style/themes/dnb-badge-theme-ui.min.css +1 -0
  150. package/es/components/badge/style/themes/dnb-badge-theme-ui.scss +17 -0
  151. package/es/components/badge/style/themes/ui.d.ts +1 -0
  152. package/es/components/badge/style/themes/ui.js +1 -0
  153. package/es/components/badge/style.d.ts +1 -0
  154. package/es/components/badge/style.js +1 -0
  155. package/es/components/dialog/style/dnb-dialog.css +3 -13
  156. package/es/components/dialog/style/dnb-dialog.min.css +1 -1
  157. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.css +0 -2
  158. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.min.css +1 -1
  159. package/es/components/dialog/style/themes/dnb-dialog-theme-ui.scss +0 -7
  160. package/es/components/drawer/DrawerContent.js +4 -1
  161. package/es/components/drawer/style/_drawer.scss +2 -10
  162. package/es/components/drawer/style/dnb-drawer.css +4 -21
  163. package/es/components/drawer/style/dnb-drawer.min.css +1 -1
  164. package/es/components/drawer/style/themes/dnb-drawer-theme-ui.css +0 -2
  165. package/es/components/drawer/style/themes/dnb-drawer-theme-ui.min.css +1 -1
  166. package/es/components/drawer/style/themes/dnb-drawer-theme-ui.scss +0 -7
  167. package/es/components/form-row/FormRow.js +13 -11
  168. package/es/components/form-row/FormRowHelpers.d.ts +1 -0
  169. package/es/components/form-row/FormRowHelpers.js +10 -0
  170. package/es/components/index.d.ts +2 -1
  171. package/es/components/index.js +2 -1
  172. package/es/components/lib.d.ts +92 -2
  173. package/es/components/lib.js +3 -1
  174. package/es/components/modal/ModalContent.js +0 -1
  175. package/es/components/modal/style/_modal.scss +0 -3
  176. package/es/components/modal/style/dnb-modal.css +3 -13
  177. package/es/components/modal/style/dnb-modal.min.css +1 -1
  178. package/es/components/modal/style/themes/dnb-modal-theme-ui.css +6 -2
  179. package/es/components/modal/style/themes/dnb-modal-theme-ui.min.css +1 -1
  180. package/es/components/modal/style/themes/dnb-modal-theme-ui.scss +6 -5
  181. package/es/components/slider/Slider.d.ts +146 -229
  182. package/es/components/slider/Slider.js +323 -526
  183. package/es/components/timeline/TimelineItem.js +2 -1
  184. package/es/index.d.ts +2 -1
  185. package/es/index.js +2 -1
  186. package/es/shared/AlignmentHelper.js +2 -2
  187. package/es/shared/Context.d.ts +5 -1
  188. package/es/shared/Eufemia.js +1 -1
  189. package/es/shared/helpers/Suffix.d.ts +5 -4
  190. package/es/shared/helpers/filterValidProps.d.ts +11 -0
  191. package/es/shared/helpers/filterValidProps.js +14 -0
  192. package/es/shared/helpers/withCamelCaseProps.js +2 -0
  193. package/es/style/dnb-ui-components.css +122 -16
  194. package/es/style/dnb-ui-components.min.css +3 -3
  195. package/es/style/dnb-ui-components.scss +1 -0
  196. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.css +28 -6
  197. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +3 -3
  198. package/es/style/themes/theme-ui/dnb-theme-ui.css +28 -6
  199. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  200. package/es/style/themes/theme-ui/dnb-theme-ui.scss +1 -0
  201. package/esm/dnb-ui-basis.min.mjs +1 -1
  202. package/esm/dnb-ui-components.min.mjs +1 -1
  203. package/esm/dnb-ui-elements.min.mjs +1 -1
  204. package/esm/dnb-ui-extensions.min.mjs +1 -1
  205. package/esm/dnb-ui-lib.min.mjs +3 -3
  206. package/esm/dnb-ui-web-components.min.mjs +2 -2
  207. package/index.d.ts +2 -1
  208. package/index.js +2 -1
  209. package/package.json +1 -1
  210. package/shared/AlignmentHelper.js +4 -2
  211. package/shared/Context.d.ts +5 -1
  212. package/shared/Eufemia.js +1 -1
  213. package/shared/helpers/Suffix.d.ts +5 -4
  214. package/shared/helpers/filterValidProps.d.ts +11 -0
  215. package/shared/helpers/filterValidProps.js +14 -0
  216. package/shared/helpers/withCamelCaseProps.js +3 -0
  217. package/style/dnb-ui-components.css +122 -16
  218. package/style/dnb-ui-components.min.css +3 -3
  219. package/style/dnb-ui-components.scss +1 -0
  220. package/style/themes/theme-eiendom/dnb-theme-eiendom.css +28 -6
  221. package/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +3 -3
  222. package/style/themes/theme-ui/dnb-theme-ui.css +28 -6
  223. package/style/themes/theme-ui/dnb-theme-ui.min.css +3 -3
  224. package/style/themes/theme-ui/dnb-theme-ui.scss +1 -0
  225. package/umd/dnb-ui-basis.min.js +1 -1
  226. package/umd/dnb-ui-components.min.js +1 -1
  227. package/umd/dnb-ui-elements.min.js +1 -1
  228. package/umd/dnb-ui-extensions.min.js +1 -1
  229. package/umd/dnb-ui-lib.min.js +3 -3
  230. package/umd/dnb-ui-web-components.min.js +4 -4
  231. package/cjs/components/slider/web-component.d.ts +0 -3
  232. package/components/slider/web-component.d.ts +0 -3
  233. package/components/slider/web-component.js +0 -5
  234. package/es/components/slider/web-component.d.ts +0 -3
  235. package/es/components/slider/web-component.js +0 -5
@@ -1,24 +1,18 @@
1
- import "core-js/modules/es.object.to-string.js";
2
- import "core-js/modules/es.reflect.construct.js";
3
1
  import "core-js/modules/es.object.keys.js";
4
2
  import "core-js/modules/es.symbol.js";
5
3
  import "core-js/modules/es.array.filter.js";
4
+ import "core-js/modules/es.object.to-string.js";
6
5
  import "core-js/modules/es.object.get-own-property-descriptor.js";
7
6
  import "core-js/modules/web.dom-collections.for-each.js";
8
7
  import "core-js/modules/es.object.get-own-property-descriptors.js";
9
8
  import _extends from "@babel/runtime/helpers/esm/extends";
10
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
11
- import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
12
- import _createClass from "@babel/runtime/helpers/esm/createClass";
13
- import _assertThisInitialized from "@babel/runtime/helpers/esm/assertThisInitialized";
14
- import _inherits from "@babel/runtime/helpers/esm/inherits";
15
- import _possibleConstructorReturn from "@babel/runtime/helpers/esm/possibleConstructorReturn";
16
- import _getPrototypeOf from "@babel/runtime/helpers/esm/getPrototypeOf";
17
9
  import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
10
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
11
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
18
12
 
19
13
  var _AlignmentHelper, _span;
20
14
 
21
- var _excluded = ["label", "label_direction", "label_sr_only", "status", "status_state", "status_props", "status_no_animation", "global_status_id", "stretch", "suffix", "thump_title", "subtract_title", "add_title", "hide_buttons", "skeleton", "className", "class", "max", "min", "disabled", "reverse", "vertical", "id", "step", "value", "children", "use_scrollwheel"];
15
+ var _excluded = ["step", "label", "label_direction", "label_sr_only", "status", "status_state", "status_props", "status_no_animation", "global_status_id", "stretch", "suffix", "thumb_title", "subtract_title", "add_title", "hide_buttons", "number_format", "skeleton", "max", "min", "disabled", "className", "id", "on_init", "on_change", "on_drag_start", "on_drag_end", "vertical", "reverse", "class", "value"];
22
16
 
23
17
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
24
18
 
@@ -26,20 +20,17 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
26
20
 
27
21
  import "core-js/modules/es.array.reverse.js";
28
22
  import "core-js/modules/es.parse-float.js";
29
- import "core-js/modules/es.number.to-fixed.js";
30
23
  import "core-js/modules/es.regexp.exec.js";
31
24
  import "core-js/modules/es.string.replace.js";
32
-
33
- function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
34
-
35
- function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
36
-
25
+ import "core-js/modules/es.number.to-fixed.js";
37
26
  import React from 'react';
38
- import PropTypes from 'prop-types';
39
27
  import classnames from 'classnames';
40
- import { warn, isTrue, makeUniqueId, registerElement, validateDOMAttributes, processChildren, extendPropsWithContext, getStatusState, combineLabelledBy, combineDescribedBy, dispatchCustomElementEvent } from '../../shared/component-helper';
28
+ import { warn, isTrue, makeUniqueId, validateDOMAttributes, getStatusState, combineLabelledBy, combineDescribedBy, dispatchCustomElementEvent } from '../../shared/component-helper';
29
+ import { includeValidProps } from '../../components/form-row/FormRowHelpers';
30
+ import { usePropsWithContext } from '../../shared/hooks';
41
31
  import AlignmentHelper from '../../shared/AlignmentHelper';
42
- import { spacingPropTypes, createSpacingClasses } from '../space/SpacingHelper';
32
+ import { withCamelCaseProps } from '../../shared/helpers/withCamelCaseProps';
33
+ import { createSpacingClasses } from '../space/SpacingHelper';
43
34
  import { format } from '../number-format/NumberUtils';
44
35
  import { createSkeletonClass, skeletonDOMAttributes } from '../skeleton/SkeletonHelper';
45
36
  import Context from '../../shared/Context';
@@ -47,613 +38,397 @@ import Suffix from '../../shared/helpers/Suffix';
47
38
  import Button from '../button/Button';
48
39
  import FormLabel from '../form-label/FormLabel';
49
40
  import FormStatus from '../form-status/FormStatus';
41
+ var defaultProps = {
42
+ status_state: 'error',
43
+ add_title: '+',
44
+ subtract_title: '−',
45
+ min: 0,
46
+ max: 100,
47
+ value: -1
48
+ };
50
49
 
51
- var Slider = function (_React$PureComponent) {
52
- _inherits(Slider, _React$PureComponent);
53
-
54
- var _super = _createSuper(Slider);
55
-
56
- function Slider(props) {
57
- var _this;
58
-
59
- _classCallCheck(this, Slider);
50
+ function Slider(localProps) {
51
+ var context = React.useContext(Context);
52
+ var allProps = usePropsWithContext(localProps, defaultProps, {
53
+ skeleton: context === null || context === void 0 ? void 0 : context.skeleton
54
+ }, context === null || context === void 0 ? void 0 : context.getTranslation(localProps).Slider, includeValidProps(context === null || context === void 0 ? void 0 : context.FormRow, {
55
+ vertical: null
56
+ }), context === null || context === void 0 ? void 0 : context.Slider);
60
57
 
61
- _this = _super.call(this, props);
58
+ var _React$useState = React.useState(makeUniqueId),
59
+ _React$useState2 = _slicedToArray(_React$useState, 1),
60
+ _id = _React$useState2[0];
62
61
 
63
- _defineProperty(_assertThisInitialized(_this), "state", {
64
- currentState: 'initial',
65
- value: null
66
- });
62
+ if (!allProps.id) {
63
+ allProps.id = _id;
64
+ }
67
65
 
68
- _defineProperty(_assertThisInitialized(_this), "onFocusHandler", function () {
69
- _this.setState({
70
- _listenForPropChanges: false,
71
- currentState: 'focused'
72
- });
73
- });
66
+ var step = allProps.step,
67
+ label = allProps.label,
68
+ label_direction = allProps.label_direction,
69
+ label_sr_only = allProps.label_sr_only,
70
+ status = allProps.status,
71
+ status_state = allProps.status_state,
72
+ status_props = allProps.status_props,
73
+ status_no_animation = allProps.status_no_animation,
74
+ global_status_id = allProps.global_status_id,
75
+ stretch = allProps.stretch,
76
+ suffix = allProps.suffix,
77
+ title = allProps.thumb_title,
78
+ subtract_title = allProps.subtract_title,
79
+ add_title = allProps.add_title,
80
+ hide_buttons = allProps.hide_buttons,
81
+ number_format = allProps.number_format,
82
+ skeleton = allProps.skeleton,
83
+ max = allProps.max,
84
+ min = allProps.min,
85
+ disabled = allProps.disabled,
86
+ className = allProps.className,
87
+ id = allProps.id,
88
+ on_init = allProps.on_init,
89
+ on_change = allProps.on_change,
90
+ on_drag_start = allProps.on_drag_start,
91
+ on_drag_end = allProps.on_drag_end,
92
+ _vertical = allProps.vertical,
93
+ _reverse = allProps.reverse,
94
+ _className = allProps.class,
95
+ _value = allProps.value,
96
+ attributes = _objectWithoutProperties(allProps, _excluded);
97
+
98
+ var trackRef = React.useRef();
99
+
100
+ var _React$useState3 = React.useState(_value),
101
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
102
+ value = _React$useState4[0],
103
+ setValue = _React$useState4[1];
104
+
105
+ var _React$useState5 = React.useState('initial'),
106
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
107
+ currentState = _React$useState6[0],
108
+ setCurrentState = _React$useState6[1];
109
+
110
+ var _React$useState7 = React.useState(isTrue(_vertical)),
111
+ _React$useState8 = _slicedToArray(_React$useState7, 1),
112
+ vertical = _React$useState8[0];
113
+
114
+ var _React$useState9 = React.useState(vertical ? !isTrue(_reverse) : isTrue(_reverse)),
115
+ _React$useState10 = _slicedToArray(_React$useState9, 1),
116
+ reverse = _React$useState10[0];
117
+
118
+ if (allProps.use_scrollwheel) {
119
+ warn('use_scrollwheel is not supported anymore!');
120
+ }
74
121
 
75
- _defineProperty(_assertThisInitialized(_this), "onBlurHandler", function () {
76
- _this.setState({
77
- _listenForPropChanges: false,
78
- currentState: 'normal'
79
- });
80
- });
81
-
82
- _defineProperty(_assertThisInitialized(_this), "onClickHandler", function (event) {
83
- var _this$state = _this.state,
84
- min = _this$state.min,
85
- max = _this$state.max,
86
- reverse = _this$state.reverse,
87
- vertical = _this$state.vertical;
88
- var percent = calculatePercent(_this._trackRef.current, event, vertical, reverse);
89
- var value = percentToValue(percent, min, max);
90
-
91
- _this.emitChange(event, value);
92
-
93
- _this.setJumpedState();
94
- });
95
-
96
- _defineProperty(_assertThisInitialized(_this), "onSubtractClickHandler", function (event) {
97
- var step = _this.props.step;
98
- var _this$state2 = _this.state,
99
- min = _this$state2.min,
100
- max = _this$state2.max,
101
- value = _this$state2.value;
102
-
103
- _this.emitChange(event, clamp(value - (step || 1), min, max));
104
- });
105
-
106
- _defineProperty(_assertThisInitialized(_this), "onAddClickHandler", function (event) {
107
- var step = _this.props.step;
108
- var _this$state3 = _this.state,
109
- min = _this$state3.min,
110
- max = _this$state3.max,
111
- value = _this$state3.value;
112
-
113
- _this.emitChange(event, clamp(value + (step || 1), min, max));
114
- });
115
-
116
- _defineProperty(_assertThisInitialized(_this), "onMouseDownHandler", function (event) {
117
- if (typeof document !== 'undefined') {
118
- try {
119
- document.body.addEventListener('touchmove', _this.onTouchMoveHandler);
120
- document.body.addEventListener('touchend', _this.onTouchEndHandler);
121
- document.body.addEventListener('mousemove', _this.onMouseMoveHandler);
122
- document.body.addEventListener('mouseup', _this.onMouseUpHandler);
123
- } catch (e) {
124
- warn(e);
125
- }
126
- }
122
+ var onFocusHandler = function onFocusHandler() {
123
+ setCurrentState('focused');
124
+ };
127
125
 
128
- _this.setState({
129
- _listenForPropChanges: false,
130
- currentState: 'activated'
131
- });
126
+ var onBlurHandler = function onBlurHandler() {
127
+ setCurrentState('normal');
128
+ };
132
129
 
133
- if (typeof _this.props.on_drag_start === 'function') {
134
- dispatchCustomElementEvent(_assertThisInitialized(_this), 'on_drag_start', {
135
- event: event
136
- });
137
- }
138
- });
130
+ var onClickHandler = function onClickHandler(event) {
131
+ var percent = calculatePercent(trackRef.current, event, vertical, reverse);
132
+ var value = percentToValue(percent, min, max);
133
+ emitChange(event, value);
134
+ setJumpedState();
135
+ };
139
136
 
140
- _defineProperty(_assertThisInitialized(_this), "onTouchEndHandler", function (event) {
141
- return _this.onMouseUpHandler(event);
142
- });
137
+ var onSubtractClickHandler = function onSubtractClickHandler(event) {
138
+ emitChange(event, clamp(value - (step || 1), min, max));
139
+ };
143
140
 
144
- _defineProperty(_assertThisInitialized(_this), "onMouseUpHandler", function (event) {
145
- if (typeof document !== 'undefined') {
146
- try {
147
- document.body.removeEventListener('touchmove', _this.onTouchMoveHandler);
148
- document.body.removeEventListener('touchend', _this.onTouchEndHandler);
149
- document.body.removeEventListener('mousemove', _this.onMouseMoveHandler);
150
- document.body.removeEventListener('mouseup', _this.onMouseUpHandler);
151
- } catch (e) {
152
- warn(e);
153
- }
154
- }
141
+ var onAddClickHandler = function onAddClickHandler(event) {
142
+ emitChange(event, clamp(value + (step || 1), min, max));
143
+ };
155
144
 
156
- _this.setState({
157
- _listenForPropChanges: false,
158
- currentState: 'normal'
159
- });
145
+ var onTouchEndHandler = function onTouchEndHandler(event) {
146
+ return onMouseUpHandler(event);
147
+ };
160
148
 
161
- if (typeof _this.props.on_drag_end === 'function') {
162
- dispatchCustomElementEvent(_assertThisInitialized(_this), 'on_drag_end', {
163
- event: event
164
- });
149
+ var onMouseDownHandler = function onMouseDownHandler(event) {
150
+ if (typeof document !== 'undefined') {
151
+ try {
152
+ document.body.addEventListener('touchmove', onTouchMoveHandler);
153
+ document.body.addEventListener('touchend', onTouchEndHandler);
154
+ document.body.addEventListener('mousemove', onMouseMoveHandler);
155
+ document.body.addEventListener('mouseup', onMouseUpHandler);
156
+ } catch (e) {
157
+ warn(e);
165
158
  }
166
- });
167
-
168
- _defineProperty(_assertThisInitialized(_this), "onRangeChangeHandler", function (event) {
169
- var value = parseFloat(event.currentTarget.value);
170
-
171
- _this.setState({
172
- value: value,
173
- _listenForPropChanges: false
174
- }, function () {});
175
-
176
- _this.emitChange(event, value);
177
- });
159
+ }
178
160
 
179
- _defineProperty(_assertThisInitialized(_this), "onTouchMoveHandler", function (event) {
180
- return _this.onMouseMoveHandler(event);
181
- });
161
+ setCurrentState('activated');
182
162
 
183
- _defineProperty(_assertThisInitialized(_this), "onMouseMoveHandler", function (event) {
184
- var elem = _this._trackRef.current;
163
+ if (typeof on_drag_start === 'function') {
164
+ dispatchCustomElementEvent(allProps, 'on_drag_start', {
165
+ event: event
166
+ });
167
+ }
168
+ };
185
169
 
186
- if (event && event.detail && typeof event.detail.height !== 'undefined') {
187
- elem = createMockDiv(event.detail);
188
- event = event.detail;
170
+ var onMouseUpHandler = function onMouseUpHandler(event) {
171
+ if (typeof document !== 'undefined') {
172
+ try {
173
+ document.body.removeEventListener('touchmove', onTouchMoveHandler);
174
+ document.body.removeEventListener('touchend', onTouchEndHandler);
175
+ document.body.removeEventListener('mousemove', onMouseMoveHandler);
176
+ document.body.removeEventListener('mouseup', onMouseUpHandler);
177
+ } catch (e) {
178
+ warn(e);
189
179
  }
180
+ }
190
181
 
191
- var _this$state4 = _this.state,
192
- min = _this$state4.min,
193
- max = _this$state4.max,
194
- vertical = _this$state4.vertical,
195
- reverse = _this$state4.reverse;
196
- var percent = calculatePercent(elem, event, vertical, reverse);
197
- var value = percentToValue(percent, min, max);
198
-
199
- _this.emitChange(event, value);
200
- });
201
-
202
- _this._id = props.id || makeUniqueId();
203
- _this._trackRef = React.createRef();
204
-
205
- var _value2 = Slider.getValue(props);
206
-
207
- _this.state = {
208
- _listenForPropChanges: true,
209
- value: _value2,
210
- _value: _value2,
211
- __value: _value2
212
- };
213
- return _this;
214
- }
182
+ setCurrentState('normal');
215
183
 
216
- _createClass(Slider, [{
217
- key: "roundValue",
218
- value: function roundValue(value) {
219
- var step = this.props.step;
220
- return parseFloat(step) > 0 ? roundToStep(value, step) : parseFloat(value).toFixed(3);
184
+ if (typeof on_drag_end === 'function') {
185
+ dispatchCustomElementEvent(allProps, 'on_drag_end', {
186
+ event: event
187
+ });
221
188
  }
222
- }, {
223
- key: "emitChange",
224
- value: function emitChange(event, rawValue, callback) {
225
- var _this$context;
189
+ };
226
190
 
227
- var _this$state5 = this.state,
228
- previousValue = _this$state5.value,
229
- disabled = _this$state5.disabled;
191
+ var onRangeChangeHandler = function onRangeChangeHandler(event) {
192
+ var value = parseFloat(event.currentTarget.value);
193
+ setValue(value);
194
+ var emitEvent = event;
195
+ emitChange(emitEvent, value);
196
+ };
230
197
 
231
- if (disabled || isTrue(this.props.skeleton) || isTrue((_this$context = this.context) === null || _this$context === void 0 ? void 0 : _this$context.skeleton)) {
232
- return;
233
- }
198
+ var onTouchMoveHandler = function onTouchMoveHandler(event) {
199
+ return onMouseMoveHandler(event);
200
+ };
234
201
 
235
- var value = this.roundValue(rawValue);
202
+ var onMouseMoveHandler = function onMouseMoveHandler(event) {
203
+ var _event, _event$detail;
236
204
 
237
- if (value > -1) {
238
- if (typeof this.props.on_change === 'function' && value !== this.roundValue(previousValue)) {
239
- var obj = {
240
- value: value,
241
- rawValue: rawValue,
242
- raw_value: rawValue,
243
- event: event
244
- };
205
+ var elem = trackRef.current;
245
206
 
246
- if (this.props.number_format) {
247
- obj.number = formatNumber(value, this.props.number_format);
248
- }
207
+ if (typeof ((_event = event) === null || _event === void 0 ? void 0 : (_event$detail = _event.detail) === null || _event$detail === void 0 ? void 0 : _event$detail.height) !== 'undefined') {
208
+ elem = createMockDiv(event.detail);
209
+ event = event.detail;
210
+ }
249
211
 
250
- dispatchCustomElementEvent(this, 'on_change', obj);
212
+ if (elem) {
213
+ var _percent = calculatePercent(elem, event, vertical, reverse);
251
214
 
252
- if (typeof callback === 'function') {
253
- callback();
254
- }
255
- }
215
+ var _value2 = percentToValue(_percent, min, max);
256
216
 
257
- this.setState({
258
- value: rawValue,
259
- _listenForPropChanges: false
260
- });
261
- }
217
+ emitChange(event, _value2);
262
218
  }
263
- }, {
264
- key: "setJumpedState",
265
- value: function setJumpedState() {
266
- var _this2 = this;
267
-
268
- this.setState({
269
- currentState: 'jumped',
270
- _listenForPropChanges: false
271
- }, function () {
272
- clearTimeout(_this2.jumpedTimeout);
273
- _this2.jumpedTimeout = setTimeout(function () {
274
- return _this2.setState({
275
- currentState: 'normal',
276
- _listenForPropChanges: false
277
- });
278
- }, 100);
279
- });
219
+ };
220
+
221
+ var emitChange = function emitChange(event, rawValue) {
222
+ if (disabled || isTrue(skeleton)) {
223
+ return;
280
224
  }
281
- }, {
282
- key: "componentDidMount",
283
- value: function componentDidMount() {
284
- var _this3 = this;
285
-
286
- if (this._trackRef.current) {
287
- if (isTrue(this.props.use_scrollwheel)) {
288
- var _this$state6 = this.state,
289
- min = _this$state6.min,
290
- max = _this$state6.max,
291
- reverse = _this$state6.reverse,
292
- vertical = _this$state6.vertical;
293
-
294
- this._trackRef.current.addEventListener('wheel', function (event) {
295
- event.preventDefault();
296
-
297
- _this3.emitChange(event, clamp(_this3.state.value + (!vertical && reverse || vertical && !reverse ? -event.deltaY / 10 : event.deltaY / 10), min, max));
298
- });
299
- }
300
- }
301
225
 
302
- if (typeof this.props.on_init === 'function') {
303
- var value = this.state.value;
226
+ var currentValue = roundValue(rawValue, step);
227
+
228
+ if (currentValue > -1 && rawValue !== value) {
229
+ if (typeof on_change === 'function') {
304
230
  var obj = {
305
- value: value
231
+ value: currentValue,
232
+ rawValue: rawValue,
233
+ raw_value: rawValue,
234
+ event: event,
235
+ number: null
306
236
  };
307
237
 
308
- if (this.props.number_format) {
309
- obj.number = formatNumber(value, this.props.number_format);
238
+ if (number_format) {
239
+ obj.number = formatNumber(currentValue, number_format);
310
240
  }
311
241
 
312
- dispatchCustomElementEvent(this, 'on_init', obj);
313
- }
314
- }
315
- }, {
316
- key: "componentWillUnmount",
317
- value: function componentWillUnmount() {
318
- if (typeof document !== 'undefined') {
319
- try {
320
- document.body.removeEventListener('touchmove', this.onTouchMoveHandler);
321
- document.body.removeEventListener('touchend', this.onTouchEndHandler);
322
- document.body.removeEventListener('mousemove', this.onMouseMoveHandler);
323
- document.body.removeEventListener('mouseup', this.onMouseUpHandler);
324
- } catch (e) {
325
- warn(e);
326
- }
242
+ dispatchCustomElementEvent(allProps, 'on_change', obj);
327
243
  }
328
244
 
329
- clearTimeout(this.jumpedTimeout);
245
+ setValue(rawValue);
330
246
  }
331
- }, {
332
- key: "render",
333
- value: function render() {
334
- var _this$context2;
335
-
336
- var props = extendPropsWithContext(this.props, Slider.defaultProps, {
337
- skeleton: (_this$context2 = this.context) === null || _this$context2 === void 0 ? void 0 : _this$context2.skeleton
338
- }, this.context.getTranslation(this.props).Slider, this.context.FormRow, this.context.Slider);
339
-
340
- var label = props.label,
341
- label_direction = props.label_direction,
342
- label_sr_only = props.label_sr_only,
343
- status = props.status,
344
- status_state = props.status_state,
345
- status_props = props.status_props,
346
- status_no_animation = props.status_no_animation,
347
- global_status_id = props.global_status_id,
348
- stretch = props.stretch,
349
- suffix = props.suffix,
350
- title = props.thump_title,
351
- subtract_title = props.subtract_title,
352
- add_title = props.add_title,
353
- hide_buttons = props.hide_buttons,
354
- skeleton = props.skeleton,
355
- className = props.className,
356
- _className = props.class,
357
- _max = props.max,
358
- _min = props.min,
359
- _disabled = props.disabled,
360
- _reverse = props.reverse,
361
- _vertical = props.vertical,
362
- _id = props.id,
363
- _step = props.step,
364
- _value = props.value,
365
- _children = props.children,
366
- _use_scrollwheel = props.use_scrollwheel,
367
- attributes = _objectWithoutProperties(props, _excluded);
368
-
369
- var _this$state7 = this.state,
370
- min = _this$state7.min,
371
- max = _this$state7.max,
372
- reverse = _this$state7.reverse,
373
- vertical = _this$state7.vertical,
374
- value = _this$state7.value,
375
- currentState = _this$state7.currentState,
376
- disabled = _this$state7.disabled;
377
- var showStatus = getStatusState(status);
378
- var showButtons = !isTrue(hide_buttons);
379
- var id = this._id;
380
- var mainParams = {
381
- className: classnames("dnb-slider dnb-form-component", createSkeletonClass(null, skeleton), createSpacingClasses(props), className, _className, reverse && 'dnb-slider--reverse', vertical && 'dnb-slider--vertical', isTrue(stretch) && 'dnb-slider--stretch', label && label_direction && "dnb-slider__label--".concat(label_direction), showStatus && 'dnb-slider__form-status', status && "dnb-slider__status--".concat(status_state))
382
- };
383
- var percent = clamp((value - min) * 100 / (max - min));
384
-
385
- var _formatNumber = formatNumber(value, _objectSpread({
386
- returnAria: true
387
- }, this.props.number_format)),
388
- humanNumber = _formatNumber.aria;
389
-
390
- var hasHumanNumber = value !== humanNumber;
247
+ };
391
248
 
392
- var inlineStyleBefore = _defineProperty({}, "".concat(vertical ? 'height' : 'width'), "".concat(percent, "%"));
249
+ var jumpedTimeout = React.useRef();
393
250
 
394
- var inlineThumbStyles = _defineProperty({}, "".concat(vertical ? 'top' : 'left'), "".concat(percent, "%"));
251
+ var setJumpedState = function setJumpedState() {
252
+ setCurrentState('jumped');
253
+ clearTimeout(jumpedTimeout.current);
254
+ jumpedTimeout.current = setTimeout(function () {
255
+ return setCurrentState('normal');
256
+ }, 100);
257
+ };
395
258
 
396
- skeletonDOMAttributes(mainParams, skeleton, this.context);
397
- var helperParams = {};
398
- var trackParams = {
399
- className: 'dnb-slider__track' + (currentState ? " dnb-slider__state--".concat(currentState) : ""),
400
- onTouchStart: this.onClickHandler,
401
- onTouchStartCapture: this.onMouseDownHandler,
402
- onMouseDown: this.onClickHandler,
403
- onMouseDownCapture: this.onMouseDownHandler
259
+ React.useEffect(function () {
260
+ setValue(_value);
261
+ }, [_value]);
262
+ React.useEffect(function () {
263
+ if (typeof on_init === 'function') {
264
+ var obj = {
265
+ value: value,
266
+ number: null
404
267
  };
405
268
 
406
- var thumbParams = _objectSpread(_objectSpread({
407
- title: title
408
- }, attributes), {}, {
409
- onBlur: this.onBlurHandler,
410
- onFocus: this.onFocusHandler
411
- });
412
-
413
- if (label || hasHumanNumber) {
414
- helperParams['aria-labelledby'] = combineLabelledBy(helperParams, hasHumanNumber ? id + '-human' : null, label ? id + '-label' : null);
415
- }
416
-
417
- if (showStatus || suffix) {
418
- helperParams['aria-describedby'] = combineDescribedBy(helperParams, showStatus ? id + '-status' : null, suffix ? id + '-suffix' : null);
419
- }
420
-
421
- var subtractParams = {};
422
- var addParams = {};
423
-
424
- if (typeof thumbParams['aria-hidden'] !== 'undefined') {
425
- helperParams['aria-hidden'] = addParams['aria-hidden'] = subtractParams['aria-hidden'] = thumbParams['aria-hidden'];
269
+ if (number_format) {
270
+ obj.number = formatNumber(value, number_format);
426
271
  }
427
272
 
428
- validateDOMAttributes(this.props, thumbParams);
429
- validateDOMAttributes(null, trackParams);
430
- validateDOMAttributes(null, helperParams);
431
- var subtractButton = React.createElement(Button, {
432
- className: "dnb-slider__button dnb-slider__button--subtract",
433
- variant: "secondary",
434
- icon: "subtract",
435
- size: "small",
436
- "aria-label": subtract_title.replace('%s', humanNumber),
437
- on_click: this.onSubtractClickHandler,
438
- disabled: disabled,
439
- skeleton: skeleton
440
- });
441
- var addButton = React.createElement(Button, {
442
- className: "dnb-slider__button dnb-slider__button--add",
443
- variant: "secondary",
444
- icon: "add",
445
- size: "small",
446
- "aria-label": add_title.replace('%s', humanNumber),
447
- on_click: this.onAddClickHandler,
448
- disabled: disabled,
449
- skeleton: skeleton
450
- });
451
- return React.createElement("span", mainParams, label && React.createElement(FormLabel, {
452
- id: id + '-label',
453
- text: label,
454
- disabled: disabled,
455
- skeleton: skeleton,
456
- label_direction: label_direction,
457
- sr_only: label_sr_only
458
- }), React.createElement("span", {
459
- className: "dnb-slider__wrapper"
460
- }, _AlignmentHelper || (_AlignmentHelper = React.createElement(AlignmentHelper, null)), React.createElement(FormStatus, _extends({
461
- show: showStatus,
462
- id: id + '-form-status',
463
- global_status_id: global_status_id,
464
- label: label,
465
- text_id: id + '-status',
466
- text: status,
467
- status: status_state,
468
- no_animation: status_no_animation,
469
- skeleton: skeleton
470
- }, status_props)), React.createElement("span", {
471
- className: "dnb-slider__inner"
472
- }, showButtons && (reverse ? addButton : subtractButton), React.createElement("span", _extends({
473
- id: this._id,
474
- ref: this._trackRef
475
- }, trackParams), React.createElement("span", {
476
- className: "dnb-slider__thumb",
477
- style: inlineThumbStyles
478
- }, React.createElement("input", _extends({
479
- type: "range",
480
- className: "dnb-slider__button-helper",
481
- min: min,
482
- max: max,
483
- step: _step,
484
- value: value,
485
- disabled: disabled,
486
- orientation: vertical ? 'vertical' : 'horizontal',
487
- onChange: this.onRangeChangeHandler
488
- }, helperParams)), React.createElement(Button, _extends({
489
- tabIndex: "-1",
490
- "aria-hidden": true,
491
- variant: "secondary",
492
- disabled: disabled,
493
- skeleton: skeleton,
494
- onMouseDown: this.onMouseDownHandler
495
- }, thumbParams))), React.createElement("span", {
496
- className: "dnb-slider__line dnb-slider__line__before",
497
- style: inlineStyleBefore
498
- }), _span || (_span = React.createElement("span", {
499
- className: "dnb-slider__line dnb-slider__line__after"
500
- })), hasHumanNumber && React.createElement("span", {
501
- id: id + '-human',
502
- className: "dnb-sr-only",
503
- "aria-hidden": true
504
- }, humanNumber)), showButtons && (reverse ? subtractButton : addButton), suffix && React.createElement(Suffix, {
505
- className: "dnb-slider__suffix",
506
- id: id + '-suffix',
507
- context: props
508
- }, suffix))));
273
+ dispatchCustomElementEvent(allProps, 'on_init', obj);
509
274
  }
510
- }], [{
511
- key: "enableWebComponent",
512
- value: function enableWebComponent() {
513
- registerElement(Slider === null || Slider === void 0 ? void 0 : Slider.tagName, Slider, Slider.defaultProps);
514
- }
515
- }, {
516
- key: "getDerivedStateFromProps",
517
- value: function getDerivedStateFromProps(props, state) {
518
- if (state._listenForPropChanges) {
519
- state.reverse = isTrue(props.reverse);
520
-
521
- if (isTrue(props.vertical)) {
522
- state.reverse = !state.reverse;
523
- }
524
-
525
- state.vertical = isTrue(props.vertical);
526
- state.min = parseFloat(props.min);
527
- state.max = parseFloat(props.max);
528
- var value = Slider.getValue(props);
529
-
530
- if (value !== state._value && value >= -1) {
531
- state.value = value;
532
275
 
533
- if (typeof props.on_state_update === 'function') {
534
- var obj = {
535
- value: value
536
- };
537
-
538
- if (props.number_format) {
539
- obj.number = formatNumber(value, props.number_format);
540
- }
541
-
542
- dispatchCustomElementEvent(_objectSpread({}, props), 'on_state_update', obj);
543
- }
276
+ return function () {
277
+ if (typeof document !== 'undefined') {
278
+ try {
279
+ document.body.removeEventListener('touchmove', onTouchMoveHandler);
280
+ document.body.removeEventListener('touchend', onTouchEndHandler);
281
+ document.body.removeEventListener('mousemove', onMouseMoveHandler);
282
+ document.body.removeEventListener('mouseup', onMouseUpHandler);
283
+ } catch (e) {
284
+ warn(e);
544
285
  }
545
-
546
- state._value = value;
547
286
  }
548
287
 
549
- state._listenForPropChanges = true;
550
- state.disabled = isTrue(props.disabled);
288
+ clearTimeout(jumpedTimeout.current);
289
+ };
290
+ }, []);
291
+ var percent = clamp((value - min) * 100 / (max - min));
551
292
 
552
- if (isTrue(props.skeleton)) {
553
- state.disabled = true;
554
- }
293
+ var inlineStyleBefore = _defineProperty({}, "".concat(vertical ? 'height' : 'width'), "".concat(percent, "%"));
555
294
 
556
- if (state.disabled) {
557
- state.currentState = 'disabled';
558
- } else if (state.currentState === 'disabled') {
559
- state.currentState = 'normal';
560
- }
295
+ var inlineThumbStyles = _defineProperty({}, "".concat(vertical ? 'top' : 'left'), "".concat(percent, "%"));
561
296
 
562
- return state;
563
- }
564
- }, {
565
- key: "getValue",
566
- value: function getValue(props) {
567
- if (props.value >= -1) {
568
- return props.value;
569
- }
297
+ var _ref = number_format ? formatNumber(value, _objectSpread(_objectSpread({}, number_format || {}), {}, {
298
+ returnAria: true
299
+ })) : {
300
+ aria: null
301
+ },
302
+ humanNumber = _ref.aria;
570
303
 
571
- return processChildren(props);
572
- }
573
- }]);
304
+ var hasHumanNumber = Boolean(humanNumber);
305
+ var showStatus = getStatusState(status);
306
+ var showButtons = !isTrue(hide_buttons);
307
+ var mainParams = {
308
+ className: classnames("dnb-slider dnb-form-component", createSkeletonClass(null, skeleton), createSpacingClasses(allProps), className, _className, reverse && 'dnb-slider--reverse', vertical && 'dnb-slider--vertical', isTrue(stretch) && 'dnb-slider--stretch', label && label_direction && "dnb-slider__label--".concat(label_direction), showStatus && 'dnb-slider__form-status', status && "dnb-slider__status--".concat(status_state))
309
+ };
310
+ var helperParams = {};
311
+ var subtractParams = {};
312
+ var addParams = {};
313
+ var trackParams = {
314
+ className: 'dnb-slider__track' + (currentState ? " dnb-slider__state--".concat(currentState) : ""),
315
+ onTouchStart: onClickHandler,
316
+ onTouchStartCapture: onMouseDownHandler,
317
+ onMouseDown: onClickHandler,
318
+ onMouseDownCapture: onMouseDownHandler
319
+ };
574
320
 
575
- return Slider;
576
- }(React.PureComponent);
321
+ var thumbParams = _objectSpread({
322
+ title: title,
323
+ onBlur: onBlurHandler,
324
+ onFocus: onFocusHandler
325
+ }, attributes);
577
326
 
578
- _defineProperty(Slider, "tagName", 'dnb-slider');
327
+ if (label || hasHumanNumber) {
328
+ helperParams['aria-labelledby'] = combineLabelledBy(helperParams, hasHumanNumber ? id + '-human' : null, label ? id + '-label' : null);
329
+ }
579
330
 
580
- _defineProperty(Slider, "contextType", Context);
331
+ if (showStatus || suffix) {
332
+ helperParams['aria-describedby'] = combineDescribedBy(helperParams, showStatus ? id + '-status' : null, suffix ? id + '-suffix' : null);
333
+ }
581
334
 
582
- _defineProperty(Slider, "defaultProps", {
583
- id: null,
584
- label: null,
585
- label_direction: null,
586
- label_sr_only: null,
587
- status: null,
588
- status_state: 'error',
589
- status_props: null,
590
- status_no_animation: null,
591
- global_status_id: null,
592
- suffix: null,
593
- thump_title: null,
594
- add_title: '+',
595
- subtract_title: '',
596
- min: 0,
597
- max: 100,
598
- value: -1,
599
- step: null,
600
- vertical: false,
601
- reverse: false,
602
- stretch: false,
603
- number_format: null,
604
- disabled: false,
605
- hide_buttons: false,
606
- use_scrollwheel: false,
607
- skeleton: null,
608
- class: null,
609
- className: null,
610
- children: null,
611
- on_init: null,
612
- on_change: null,
613
- on_drag_start: null,
614
- on_drag_end: null,
615
- on_state_update: null
616
- });
617
-
618
- export { Slider as default };
619
- process.env.NODE_ENV !== "production" ? Slider.propTypes = _objectSpread(_objectSpread({
620
- id: PropTypes.string,
621
- label: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.node]),
622
- label_direction: PropTypes.oneOf(['horizontal', 'vertical']),
623
- label_sr_only: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
624
- status: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.func, PropTypes.node]),
625
- status_state: PropTypes.string,
626
- status_props: PropTypes.object,
627
- status_no_animation: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
628
- global_status_id: PropTypes.string,
629
- suffix: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.node]),
630
- thump_title: PropTypes.string,
631
- add_title: PropTypes.string,
632
- subtract_title: PropTypes.string,
633
- min: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
634
- max: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
635
- value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
636
- step: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),
637
- vertical: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
638
- reverse: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
639
- stretch: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
640
- number_format: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),
641
- disabled: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
642
- hide_buttons: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
643
- use_scrollwheel: PropTypes.oneOfType([PropTypes.string, PropTypes.bool]),
644
- skeleton: PropTypes.oneOfType([PropTypes.string, PropTypes.bool])
645
- }, spacingPropTypes), {}, {
646
- class: PropTypes.string,
647
- className: PropTypes.string,
648
- children: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),
649
- on_init: PropTypes.func,
650
- on_change: PropTypes.func,
651
- on_drag_start: PropTypes.func,
652
- on_drag_end: PropTypes.func,
653
- on_state_update: PropTypes.func
654
- }) : void 0;
335
+ if (typeof thumbParams['aria-hidden'] !== 'undefined') {
336
+ helperParams['aria-hidden'] = addParams['aria-hidden'] = subtractParams['aria-hidden'] = thumbParams['aria-hidden'];
337
+ }
338
+
339
+ validateDOMAttributes(allProps, thumbParams);
340
+ validateDOMAttributes(null, trackParams);
341
+ validateDOMAttributes(null, helperParams);
342
+ skeletonDOMAttributes(mainParams, skeleton, context);
343
+ var subtractButton = showButtons && React.createElement(Button, _extends({
344
+ className: "dnb-slider__button dnb-slider__button--subtract",
345
+ variant: "secondary",
346
+ icon: "subtract",
347
+ size: "small",
348
+ "aria-label": subtract_title === null || subtract_title === void 0 ? void 0 : subtract_title.replace('%s', humanNumber),
349
+ on_click: onSubtractClickHandler,
350
+ disabled: disabled,
351
+ skeleton: skeleton
352
+ }, subtractParams));
353
+ var addButton = showButtons && React.createElement(Button, _extends({
354
+ className: "dnb-slider__button dnb-slider__button--add",
355
+ variant: "secondary",
356
+ icon: "add",
357
+ size: "small",
358
+ "aria-label": add_title === null || add_title === void 0 ? void 0 : add_title.replace('%s', humanNumber),
359
+ on_click: onAddClickHandler,
360
+ disabled: disabled,
361
+ skeleton: skeleton
362
+ }, addParams));
363
+ return React.createElement("span", mainParams, label && React.createElement(FormLabel, {
364
+ id: id + '-label',
365
+ text: label,
366
+ disabled: disabled,
367
+ skeleton: skeleton,
368
+ label_direction: label_direction,
369
+ sr_only: label_sr_only
370
+ }), React.createElement("span", {
371
+ className: "dnb-slider__wrapper"
372
+ }, _AlignmentHelper || (_AlignmentHelper = React.createElement(AlignmentHelper, null)), React.createElement(FormStatus, _extends({
373
+ show: showStatus,
374
+ id: id + '-form-status',
375
+ global_status_id: global_status_id,
376
+ label: label,
377
+ text_id: id + '-status',
378
+ text: status,
379
+ status: status_state,
380
+ no_animation: status_no_animation,
381
+ skeleton: skeleton
382
+ }, status_props)), React.createElement("span", {
383
+ className: "dnb-slider__inner"
384
+ }, showButtons && (reverse ? addButton : subtractButton), React.createElement("span", _extends({
385
+ id: id,
386
+ ref: trackRef
387
+ }, trackParams), React.createElement("span", {
388
+ className: "dnb-slider__thumb",
389
+ style: inlineThumbStyles
390
+ }, React.createElement("input", _extends({
391
+ type: "range",
392
+ className: "dnb-slider__button-helper",
393
+ min: min,
394
+ max: max,
395
+ step: step,
396
+ value: value,
397
+ disabled: disabled,
398
+ orientation: vertical ? 'vertical' : 'horizontal',
399
+ onChange: onRangeChangeHandler
400
+ }, helperParams)), React.createElement(Button, _extends({
401
+ tabIndex: -1,
402
+ "aria-hidden": true,
403
+ variant: "secondary",
404
+ disabled: disabled,
405
+ skeleton: skeleton,
406
+ onMouseDown: onMouseDownHandler
407
+ }, thumbParams))), React.createElement("span", {
408
+ className: "dnb-slider__line dnb-slider__line__before",
409
+ style: inlineStyleBefore
410
+ }), _span || (_span = React.createElement("span", {
411
+ className: "dnb-slider__line dnb-slider__line__after"
412
+ })), hasHumanNumber && React.createElement("span", {
413
+ id: id + '-human',
414
+ className: "dnb-sr-only",
415
+ "aria-hidden": true
416
+ }, humanNumber)), showButtons && (reverse ? subtractButton : addButton), suffix && React.createElement(Suffix, {
417
+ className: "dnb-slider__suffix",
418
+ id: id + '-suffix',
419
+ context: allProps
420
+ }, suffix))));
421
+ }
655
422
 
656
423
  var percentToValue = function percentToValue(percent, min, max) {
424
+ if (typeof min === 'string') {
425
+ min = parseFloat(min);
426
+ }
427
+
428
+ if (typeof max === 'string') {
429
+ max = parseFloat(max);
430
+ }
431
+
657
432
  return (max - min) * percent / 100 + min;
658
433
  };
659
434
 
@@ -662,12 +437,12 @@ var roundToStep = function roundToStep(number, step) {
662
437
  };
663
438
 
664
439
  var getOffset = function getOffset(node) {
665
- var _ref = typeof window !== 'undefined' ? window : {
440
+ var _ref2 = typeof window !== 'undefined' ? window : {
666
441
  pageYOffset: 0,
667
442
  pageXOffset: 0
668
443
  },
669
- pageYOffset = _ref.pageYOffset,
670
- pageXOffset = _ref.pageXOffset;
444
+ pageYOffset = _ref2.pageYOffset,
445
+ pageXOffset = _ref2.pageXOffset;
671
446
 
672
447
  var _node$getBoundingClie = node.getBoundingClientRect(),
673
448
  left = _node$getBoundingClie.left,
@@ -717,9 +492,13 @@ var clamp = function clamp(value) {
717
492
  return Math.min(Math.max(value, min), max);
718
493
  };
719
494
 
720
- var createMockDiv = function createMockDiv(_ref2) {
721
- var width = _ref2.width,
722
- height = _ref2.height;
495
+ var roundValue = function roundValue(value, step) {
496
+ return step > 0 ? roundToStep(value, step) : parseFloat(parseFloat(String(value)).toFixed(3));
497
+ };
498
+
499
+ var createMockDiv = function createMockDiv(_ref3) {
500
+ var width = _ref3.width,
501
+ height = _ref3.height;
723
502
  var div = document.createElement('div');
724
503
 
725
504
  _extends(div.style, {
@@ -741,7 +520,7 @@ var createMockDiv = function createMockDiv(_ref2) {
741
520
  return div;
742
521
  };
743
522
 
744
- function formatNumber(value) {
523
+ var formatNumber = function formatNumber(value) {
745
524
  var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
746
525
 
747
526
  if (opts) {
@@ -749,4 +528,7 @@ function formatNumber(value) {
749
528
  }
750
529
 
751
530
  return value;
752
- }
531
+ };
532
+
533
+ export { Slider as OriginalComponent };
534
+ export default withCamelCaseProps(Slider);