@dnb/eufemia 9.28.0 → 9.29.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 (209) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/cjs/components/dialog/style/dnb-dialog.css +9 -6
  3. package/cjs/components/dialog/style/dnb-dialog.min.css +1 -1
  4. package/cjs/components/drawer/style/_drawer.scss +4 -3
  5. package/cjs/components/drawer/style/dnb-drawer.css +17 -10
  6. package/cjs/components/drawer/style/dnb-drawer.min.css +1 -1
  7. package/cjs/components/form-row/FormRowHelpers.d.ts +1 -1
  8. package/cjs/components/lib.d.ts +1 -89
  9. package/cjs/components/modal/style/_modal.scss +0 -1
  10. package/cjs/components/modal/style/dnb-modal.css +9 -6
  11. package/cjs/components/modal/style/dnb-modal.min.css +1 -1
  12. package/cjs/components/skeleton/SkeletonHelper.d.ts +2 -1
  13. package/cjs/components/slider/Slider.d.ts +6 -144
  14. package/cjs/components/slider/Slider.js +5 -595
  15. package/cjs/components/slider/SliderHelpers.d.ts +23 -0
  16. package/cjs/components/slider/SliderHelpers.js +239 -0
  17. package/cjs/components/slider/SliderInstance.d.ts +6 -0
  18. package/cjs/components/slider/SliderInstance.js +190 -0
  19. package/cjs/components/slider/SliderProvider.d.ts +4 -0
  20. package/cjs/components/slider/SliderProvider.js +264 -0
  21. package/cjs/components/slider/SliderThumb.d.ts +2 -0
  22. package/cjs/components/slider/SliderThumb.js +137 -0
  23. package/cjs/components/slider/SliderTrack.d.ts +6 -0
  24. package/cjs/components/slider/SliderTrack.js +131 -0
  25. package/cjs/components/slider/hooks/useSliderEvents.d.ts +11 -0
  26. package/cjs/components/slider/hooks/useSliderEvents.js +146 -0
  27. package/cjs/components/slider/hooks/useSliderProps.d.ts +1 -0
  28. package/cjs/components/slider/hooks/useSliderProps.js +16 -0
  29. package/cjs/components/slider/style/_slider.scss +19 -48
  30. package/cjs/components/slider/style/dnb-slider.css +30 -60
  31. package/cjs/components/slider/style/dnb-slider.min.css +1 -1
  32. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.css +0 -16
  33. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  34. package/cjs/components/slider/style/themes/dnb-slider-theme-ui.scss +0 -17
  35. package/cjs/components/slider/types.d.ts +75 -0
  36. package/cjs/components/slider/types.js +1 -0
  37. package/cjs/elements/Anchor.d.ts +44 -105
  38. package/cjs/elements/Anchor.js +48 -138
  39. package/cjs/elements/Element.d.ts +23 -40
  40. package/cjs/elements/Element.js +48 -122
  41. package/cjs/elements/Link.d.ts +18 -1
  42. package/cjs/elements/lib.d.ts +36 -2
  43. package/cjs/shared/Context.d.ts +2 -0
  44. package/cjs/shared/Eufemia.js +1 -1
  45. package/cjs/shared/helpers/Suffix.d.ts +2 -1
  46. package/cjs/shared/helpers/Suffix.js +5 -2
  47. package/cjs/shared/helpers/withCamelCaseProps.d.ts +1 -1
  48. package/cjs/shared/helpers/withSnakeCaseProps.d.ts +40 -0
  49. package/cjs/shared/helpers/withSnakeCaseProps.js +168 -0
  50. package/cjs/shared/locales/en-GB.d.ts +3 -3
  51. package/cjs/shared/locales/en-GB.js +3 -3
  52. package/cjs/shared/locales/en-US.d.ts +3 -3
  53. package/cjs/shared/locales/index.d.ts +6 -6
  54. package/cjs/shared/locales/nb-NO.d.ts +3 -3
  55. package/cjs/shared/locales/nb-NO.js +3 -3
  56. package/cjs/style/dnb-ui-components.css +39 -66
  57. package/cjs/style/dnb-ui-components.min.css +3 -3
  58. package/cjs/style/dnb-ui-elements.css +44 -28
  59. package/cjs/style/dnb-ui-elements.min.css +1 -1
  60. package/cjs/style/dnb-ui-tags.css +63 -40
  61. package/cjs/style/dnb-ui-tags.min.css +1 -1
  62. package/cjs/style/elements/_anchor-mixins.scss +6 -3
  63. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.css +40 -40
  64. package/cjs/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  65. package/cjs/style/themes/theme-ui/dnb-theme-ui.css +44 -44
  66. package/cjs/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  67. package/components/dialog/style/dnb-dialog.css +9 -6
  68. package/components/dialog/style/dnb-dialog.min.css +1 -1
  69. package/components/drawer/style/_drawer.scss +4 -3
  70. package/components/drawer/style/dnb-drawer.css +17 -10
  71. package/components/drawer/style/dnb-drawer.min.css +1 -1
  72. package/components/form-row/FormRowHelpers.d.ts +1 -1
  73. package/components/lib.d.ts +1 -89
  74. package/components/modal/style/_modal.scss +0 -1
  75. package/components/modal/style/dnb-modal.css +9 -6
  76. package/components/modal/style/dnb-modal.min.css +1 -1
  77. package/components/skeleton/SkeletonHelper.d.ts +2 -1
  78. package/components/slider/Slider.d.ts +6 -144
  79. package/components/slider/Slider.js +5 -528
  80. package/components/slider/SliderHelpers.d.ts +23 -0
  81. package/components/slider/SliderHelpers.js +152 -0
  82. package/components/slider/SliderInstance.d.ts +6 -0
  83. package/components/slider/SliderInstance.js +162 -0
  84. package/components/slider/SliderProvider.d.ts +4 -0
  85. package/components/slider/SliderProvider.js +199 -0
  86. package/components/slider/SliderThumb.d.ts +2 -0
  87. package/components/slider/SliderThumb.js +109 -0
  88. package/components/slider/SliderTrack.d.ts +6 -0
  89. package/components/slider/SliderTrack.js +104 -0
  90. package/components/slider/hooks/useSliderEvents.d.ts +11 -0
  91. package/components/slider/hooks/useSliderEvents.js +132 -0
  92. package/components/slider/hooks/useSliderProps.d.ts +1 -0
  93. package/components/slider/hooks/useSliderProps.js +5 -0
  94. package/components/slider/style/_slider.scss +19 -48
  95. package/components/slider/style/dnb-slider.css +30 -60
  96. package/components/slider/style/dnb-slider.min.css +1 -1
  97. package/components/slider/style/themes/dnb-slider-theme-ui.css +0 -16
  98. package/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  99. package/components/slider/style/themes/dnb-slider-theme-ui.scss +0 -17
  100. package/components/slider/types.d.ts +75 -0
  101. package/components/slider/types.js +1 -0
  102. package/elements/Anchor.d.ts +44 -105
  103. package/elements/Anchor.js +51 -113
  104. package/elements/Element.d.ts +23 -40
  105. package/elements/Element.js +44 -92
  106. package/elements/Link.d.ts +18 -1
  107. package/elements/lib.d.ts +36 -2
  108. package/es/components/dialog/style/dnb-dialog.css +9 -6
  109. package/es/components/dialog/style/dnb-dialog.min.css +1 -1
  110. package/es/components/drawer/style/_drawer.scss +4 -3
  111. package/es/components/drawer/style/dnb-drawer.css +17 -10
  112. package/es/components/drawer/style/dnb-drawer.min.css +1 -1
  113. package/es/components/form-row/FormRowHelpers.d.ts +1 -1
  114. package/es/components/lib.d.ts +1 -89
  115. package/es/components/modal/style/_modal.scss +0 -1
  116. package/es/components/modal/style/dnb-modal.css +9 -6
  117. package/es/components/modal/style/dnb-modal.min.css +1 -1
  118. package/es/components/skeleton/SkeletonHelper.d.ts +2 -1
  119. package/es/components/slider/Slider.d.ts +6 -144
  120. package/es/components/slider/Slider.js +5 -484
  121. package/es/components/slider/SliderHelpers.d.ts +23 -0
  122. package/es/components/slider/SliderHelpers.js +124 -0
  123. package/es/components/slider/SliderInstance.d.ts +6 -0
  124. package/es/components/slider/SliderInstance.js +167 -0
  125. package/es/components/slider/SliderProvider.d.ts +4 -0
  126. package/es/components/slider/SliderProvider.js +178 -0
  127. package/es/components/slider/SliderThumb.d.ts +2 -0
  128. package/es/components/slider/SliderThumb.js +100 -0
  129. package/es/components/slider/SliderTrack.d.ts +6 -0
  130. package/es/components/slider/SliderTrack.js +99 -0
  131. package/es/components/slider/hooks/useSliderEvents.d.ts +11 -0
  132. package/es/components/slider/hooks/useSliderEvents.js +129 -0
  133. package/es/components/slider/hooks/useSliderProps.d.ts +1 -0
  134. package/es/components/slider/hooks/useSliderProps.js +5 -0
  135. package/es/components/slider/style/_slider.scss +19 -48
  136. package/es/components/slider/style/dnb-slider.css +30 -60
  137. package/es/components/slider/style/dnb-slider.min.css +1 -1
  138. package/es/components/slider/style/themes/dnb-slider-theme-ui.css +0 -16
  139. package/es/components/slider/style/themes/dnb-slider-theme-ui.min.css +1 -1
  140. package/es/components/slider/style/themes/dnb-slider-theme-ui.scss +0 -17
  141. package/es/components/slider/types.d.ts +75 -0
  142. package/es/components/slider/types.js +1 -0
  143. package/es/elements/Anchor.d.ts +44 -105
  144. package/es/elements/Anchor.js +49 -80
  145. package/es/elements/Element.d.ts +23 -40
  146. package/es/elements/Element.js +44 -61
  147. package/es/elements/Link.d.ts +18 -1
  148. package/es/elements/lib.d.ts +36 -2
  149. package/es/shared/Context.d.ts +2 -0
  150. package/es/shared/Eufemia.js +1 -1
  151. package/es/shared/helpers/Suffix.d.ts +2 -1
  152. package/es/shared/helpers/Suffix.js +5 -3
  153. package/es/shared/helpers/withCamelCaseProps.d.ts +1 -1
  154. package/es/shared/helpers/withSnakeCaseProps.d.ts +40 -0
  155. package/es/shared/helpers/withSnakeCaseProps.js +72 -0
  156. package/es/shared/locales/en-GB.d.ts +3 -3
  157. package/es/shared/locales/en-GB.js +3 -3
  158. package/es/shared/locales/en-US.d.ts +3 -3
  159. package/es/shared/locales/index.d.ts +6 -6
  160. package/es/shared/locales/nb-NO.d.ts +3 -3
  161. package/es/shared/locales/nb-NO.js +3 -3
  162. package/es/style/dnb-ui-components.css +39 -66
  163. package/es/style/dnb-ui-components.min.css +3 -3
  164. package/es/style/dnb-ui-elements.css +44 -28
  165. package/es/style/dnb-ui-elements.min.css +1 -1
  166. package/es/style/dnb-ui-tags.css +63 -40
  167. package/es/style/dnb-ui-tags.min.css +1 -1
  168. package/es/style/elements/_anchor-mixins.scss +6 -3
  169. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.css +40 -40
  170. package/es/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  171. package/es/style/themes/theme-ui/dnb-theme-ui.css +44 -44
  172. package/es/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  173. package/esm/dnb-ui-basis.min.mjs +1 -1
  174. package/esm/dnb-ui-components.min.mjs +3 -3
  175. package/esm/dnb-ui-elements.min.mjs +9 -10
  176. package/esm/dnb-ui-extensions.min.mjs +4 -4
  177. package/esm/dnb-ui-lib.min.mjs +3 -3
  178. package/esm/dnb-ui-web-components.min.mjs +3 -3
  179. package/package.json +1 -1
  180. package/shared/Context.d.ts +2 -0
  181. package/shared/Eufemia.js +1 -1
  182. package/shared/helpers/Suffix.d.ts +2 -1
  183. package/shared/helpers/Suffix.js +4 -2
  184. package/shared/helpers/withCamelCaseProps.d.ts +1 -1
  185. package/shared/helpers/withSnakeCaseProps.d.ts +40 -0
  186. package/shared/helpers/withSnakeCaseProps.js +115 -0
  187. package/shared/locales/en-GB.d.ts +3 -3
  188. package/shared/locales/en-GB.js +3 -3
  189. package/shared/locales/en-US.d.ts +3 -3
  190. package/shared/locales/index.d.ts +6 -6
  191. package/shared/locales/nb-NO.d.ts +3 -3
  192. package/shared/locales/nb-NO.js +3 -3
  193. package/style/dnb-ui-components.css +39 -66
  194. package/style/dnb-ui-components.min.css +3 -3
  195. package/style/dnb-ui-elements.css +44 -28
  196. package/style/dnb-ui-elements.min.css +1 -1
  197. package/style/dnb-ui-tags.css +63 -40
  198. package/style/dnb-ui-tags.min.css +1 -1
  199. package/style/elements/_anchor-mixins.scss +6 -3
  200. package/style/themes/theme-eiendom/dnb-theme-eiendom.css +40 -40
  201. package/style/themes/theme-eiendom/dnb-theme-eiendom.min.css +2 -2
  202. package/style/themes/theme-ui/dnb-theme-ui.css +44 -44
  203. package/style/themes/theme-ui/dnb-theme-ui.min.css +2 -2
  204. package/umd/dnb-ui-basis.min.js +1 -1
  205. package/umd/dnb-ui-components.min.js +5 -5
  206. package/umd/dnb-ui-elements.min.js +20 -21
  207. package/umd/dnb-ui-extensions.min.js +3 -3
  208. package/umd/dnb-ui-lib.min.js +4 -4
  209. package/umd/dnb-ui-web-components.min.js +3 -3
@@ -1,534 +1,11 @@
1
- import "core-js/modules/es.object.keys.js";
2
- import "core-js/modules/es.symbol.js";
3
- import "core-js/modules/es.array.filter.js";
4
- import "core-js/modules/es.object.to-string.js";
5
- import "core-js/modules/es.object.get-own-property-descriptor.js";
6
- import "core-js/modules/web.dom-collections.for-each.js";
7
- import "core-js/modules/es.object.get-own-property-descriptors.js";
8
- import _extends from "@babel/runtime/helpers/esm/extends";
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";
1
+ var _SliderInstance;
12
2
 
13
- var _AlignmentHelper, _span;
14
-
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"];
16
-
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; }
18
-
19
- function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
20
-
21
- import "core-js/modules/es.array.reverse.js";
22
- import "core-js/modules/es.parse-float.js";
23
- import "core-js/modules/es.regexp.exec.js";
24
- import "core-js/modules/es.string.replace.js";
25
- import "core-js/modules/es.number.to-fixed.js";
26
3
  import React from 'react';
27
- import classnames from 'classnames';
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';
31
- import AlignmentHelper from '../../shared/AlignmentHelper';
32
- import { withCamelCaseProps } from '../../shared/helpers/withCamelCaseProps';
33
- import { createSpacingClasses } from '../space/SpacingHelper';
34
- import { format } from '../number-format/NumberUtils';
35
- import { createSkeletonClass, skeletonDOMAttributes } from '../skeleton/SkeletonHelper';
36
- import Context from '../../shared/Context';
37
- import Suffix from '../../shared/helpers/Suffix';
38
- import Button from '../button/Button';
39
- import FormLabel from '../form-label/FormLabel';
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
- };
4
+ import { SliderProvider } from './SliderProvider';
5
+ import { SliderInstance } from './SliderInstance';
49
6
 
50
7
  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);
57
-
58
- var _React$useState = React.useState(makeUniqueId),
59
- _React$useState2 = _slicedToArray(_React$useState, 1),
60
- _id = _React$useState2[0];
61
-
62
- if (!allProps.id) {
63
- allProps.id = _id;
64
- }
65
-
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
- }
121
-
122
- var onFocusHandler = function onFocusHandler() {
123
- setCurrentState('focused');
124
- };
125
-
126
- var onBlurHandler = function onBlurHandler() {
127
- setCurrentState('normal');
128
- };
129
-
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
- };
136
-
137
- var onSubtractClickHandler = function onSubtractClickHandler(event) {
138
- emitChange(event, clamp(value - (step || 1), min, max));
139
- };
140
-
141
- var onAddClickHandler = function onAddClickHandler(event) {
142
- emitChange(event, clamp(value + (step || 1), min, max));
143
- };
144
-
145
- var onTouchEndHandler = function onTouchEndHandler(event) {
146
- return onMouseUpHandler(event);
147
- };
148
-
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);
158
- }
159
- }
160
-
161
- setCurrentState('activated');
162
-
163
- if (typeof on_drag_start === 'function') {
164
- dispatchCustomElementEvent(allProps, 'on_drag_start', {
165
- event: event
166
- });
167
- }
168
- };
169
-
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);
179
- }
180
- }
181
-
182
- setCurrentState('normal');
183
-
184
- if (typeof on_drag_end === 'function') {
185
- dispatchCustomElementEvent(allProps, 'on_drag_end', {
186
- event: event
187
- });
188
- }
189
- };
190
-
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
- };
197
-
198
- var onTouchMoveHandler = function onTouchMoveHandler(event) {
199
- return onMouseMoveHandler(event);
200
- };
201
-
202
- var onMouseMoveHandler = function onMouseMoveHandler(event) {
203
- var _event, _event$detail;
204
-
205
- var elem = trackRef.current;
206
-
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
- }
211
-
212
- if (elem) {
213
- var _percent = calculatePercent(elem, event, vertical, reverse);
214
-
215
- var _value2 = percentToValue(_percent, min, max);
216
-
217
- emitChange(event, _value2);
218
- }
219
- };
220
-
221
- var emitChange = function emitChange(event, rawValue) {
222
- if (disabled || isTrue(skeleton)) {
223
- return;
224
- }
225
-
226
- var currentValue = roundValue(rawValue, step);
227
-
228
- if (currentValue > -1 && rawValue !== value) {
229
- if (typeof on_change === 'function') {
230
- var obj = {
231
- value: currentValue,
232
- rawValue: rawValue,
233
- raw_value: rawValue,
234
- event: event,
235
- number: null
236
- };
237
-
238
- if (number_format) {
239
- obj.number = formatNumber(currentValue, number_format);
240
- }
241
-
242
- dispatchCustomElementEvent(allProps, 'on_change', obj);
243
- }
244
-
245
- setValue(rawValue);
246
- }
247
- };
248
-
249
- var jumpedTimeout = React.useRef();
250
-
251
- var setJumpedState = function setJumpedState() {
252
- setCurrentState('jumped');
253
- clearTimeout(jumpedTimeout.current);
254
- jumpedTimeout.current = setTimeout(function () {
255
- return setCurrentState('normal');
256
- }, 100);
257
- };
258
-
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
267
- };
268
-
269
- if (number_format) {
270
- obj.number = formatNumber(value, number_format);
271
- }
272
-
273
- dispatchCustomElementEvent(allProps, 'on_init', obj);
274
- }
275
-
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);
285
- }
286
- }
287
-
288
- clearTimeout(jumpedTimeout.current);
289
- };
290
- }, []);
291
- var percent = clamp((value - min) * 100 / (max - min));
292
-
293
- var inlineStyleBefore = _defineProperty({}, "".concat(vertical ? 'height' : 'width'), "".concat(percent, "%"));
294
-
295
- var inlineThumbStyles = _defineProperty({}, "".concat(vertical ? 'top' : 'left'), "".concat(percent, "%"));
296
-
297
- var _ref = number_format ? formatNumber(value, _objectSpread(_objectSpread({}, number_format || {}), {}, {
298
- returnAria: true
299
- })) : {
300
- aria: null
301
- },
302
- humanNumber = _ref.aria;
303
-
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
- };
320
-
321
- var thumbParams = _objectSpread({
322
- title: title,
323
- onBlur: onBlurHandler,
324
- onFocus: onFocusHandler
325
- }, attributes);
326
-
327
- if (label || hasHumanNumber) {
328
- helperParams['aria-labelledby'] = combineLabelledBy(helperParams, hasHumanNumber ? id + '-human' : null, label ? id + '-label' : null);
329
- }
330
-
331
- if (showStatus || suffix) {
332
- helperParams['aria-describedby'] = combineDescribedBy(helperParams, showStatus ? id + '-status' : null, suffix ? id + '-suffix' : null);
333
- }
334
-
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))));
8
+ return React.createElement(SliderProvider, localProps, _SliderInstance || (_SliderInstance = React.createElement(SliderInstance, null)));
421
9
  }
422
10
 
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
-
432
- return (max - min) * percent / 100 + min;
433
- };
434
-
435
- var roundToStep = function roundToStep(number, step) {
436
- return Math.round(number / step) * step;
437
- };
438
-
439
- var getOffset = function getOffset(node) {
440
- var _ref2 = typeof window !== 'undefined' ? window : {
441
- pageYOffset: 0,
442
- pageXOffset: 0
443
- },
444
- pageYOffset = _ref2.pageYOffset,
445
- pageXOffset = _ref2.pageXOffset;
446
-
447
- var _node$getBoundingClie = node.getBoundingClientRect(),
448
- left = _node$getBoundingClie.left,
449
- top = _node$getBoundingClie.top;
450
-
451
- return {
452
- top: top + pageYOffset,
453
- left: left + pageXOffset
454
- };
455
- };
456
-
457
- var getMousePosition = function getMousePosition(event) {
458
- if (event.changedTouches && event.changedTouches[0]) {
459
- return {
460
- x: event.changedTouches[0].pageX,
461
- y: event.changedTouches[0].pageY
462
- };
463
- }
464
-
465
- return {
466
- x: event.pageX,
467
- y: event.pageY
468
- };
469
- };
470
-
471
- var calculatePercent = function calculatePercent(node, event, isVertical, isReverted) {
472
- var _node$getBoundingClie2 = node.getBoundingClientRect(),
473
- width = _node$getBoundingClie2.width,
474
- height = _node$getBoundingClie2.height;
475
-
476
- var _getOffset = getOffset(node),
477
- top = _getOffset.top,
478
- left = _getOffset.left;
479
-
480
- var _getMousePosition = getMousePosition(event),
481
- x = _getMousePosition.x,
482
- y = _getMousePosition.y;
483
-
484
- var value = isVertical ? y - top : x - left;
485
- var onePercent = (isVertical ? height : width) / 100;
486
- return isReverted ? 100 - clamp(value / onePercent) : clamp(value / onePercent);
487
- };
488
-
489
- var clamp = function clamp(value) {
490
- var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
491
- var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
492
- return Math.min(Math.max(value, min), max);
493
- };
494
-
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;
502
- var div = document.createElement('div');
503
-
504
- _extends(div.style, {
505
- width: "".concat(width, "px"),
506
- height: "".concat(height, "px")
507
- });
508
-
509
- div.getBoundingClientRect = function () {
510
- return {
511
- width: width,
512
- height: height,
513
- top: 0,
514
- left: 0,
515
- right: width,
516
- bottom: height
517
- };
518
- };
519
-
520
- return div;
521
- };
522
-
523
- var formatNumber = function formatNumber(value) {
524
- var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
525
-
526
- if (opts) {
527
- return format(value, opts);
528
- }
529
-
530
- return value;
531
- };
532
-
533
- export { Slider as OriginalComponent };
534
- export default withCamelCaseProps(Slider);
11
+ export default Slider;
@@ -0,0 +1,23 @@
1
+ import { formatOptionParams, formatValue, formatReturnType } from '../number-format/NumberUtils';
2
+ import type { ValueTypes } from './types';
3
+ export declare const percentToValue: (percent: number, min: number, max: number) => number;
4
+ export declare const roundToStep: (number: number, step: number) => number;
5
+ export declare const getOffset: (node: HTMLElement) => {
6
+ top: number;
7
+ left: number;
8
+ };
9
+ export declare const getMousePosition: (event: MouseEvent & TouchEvent) => {
10
+ x: number;
11
+ y: number;
12
+ };
13
+ export declare const calculatePercent: (node: HTMLElement, event: MouseEvent | TouchEvent, isVertical: boolean, isReverted: boolean) => number;
14
+ export declare const clamp: (value: number, min?: number, max?: number) => number;
15
+ export declare const roundValue: (value: number, step: number) => number;
16
+ export declare const createMockDiv: ({ width, height }: {
17
+ width: any;
18
+ height: any;
19
+ }) => HTMLDivElement;
20
+ export declare const getUpdatedValues: (value: Array<number>, index: number, newValue: number) => ValueTypes;
21
+ export declare const closestIndex: (goal: number, array: Array<number>) => number;
22
+ export declare const formatNumber: (value: formatValue, opts?: formatOptionParams) => formatReturnType;
23
+ export declare const getHumanNumber: (value: number, numberFormat: formatOptionParams) => string;