@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
@@ -0,0 +1,152 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _toConsumableArray from "@babel/runtime/helpers/esm/toConsumableArray";
3
+ import _extends from "@babel/runtime/helpers/esm/extends";
4
+
5
+ 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; }
6
+
7
+ 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; }
8
+
9
+ import "core-js/modules/es.parse-float.js";
10
+ import "core-js/modules/es.number.to-fixed.js";
11
+ import "core-js/modules/es.array.map.js";
12
+ import "core-js/modules/es.array.sort.js";
13
+ import "core-js/modules/es.array.find-index.js";
14
+ import "core-js/modules/es.object.keys.js";
15
+ import "core-js/modules/es.symbol.js";
16
+ import "core-js/modules/es.array.filter.js";
17
+ import "core-js/modules/es.object.to-string.js";
18
+ import "core-js/modules/es.object.get-own-property-descriptor.js";
19
+ import "core-js/modules/web.dom-collections.for-each.js";
20
+ import "core-js/modules/es.object.get-own-property-descriptors.js";
21
+ import { format } from '../number-format/NumberUtils';
22
+ export var percentToValue = function percentToValue(percent, min, max) {
23
+ if (typeof min === 'string') {
24
+ min = parseFloat(min);
25
+ }
26
+
27
+ if (typeof max === 'string') {
28
+ max = parseFloat(max);
29
+ }
30
+
31
+ return (max - min) * percent / 100 + min;
32
+ };
33
+ export var roundToStep = function roundToStep(number, step) {
34
+ return Math.round(number / step) * step;
35
+ };
36
+ export var getOffset = function getOffset(node) {
37
+ var _ref = typeof window !== 'undefined' ? window : {
38
+ pageYOffset: 0,
39
+ pageXOffset: 0
40
+ },
41
+ pageYOffset = _ref.pageYOffset,
42
+ pageXOffset = _ref.pageXOffset;
43
+
44
+ var _node$getBoundingClie = node.getBoundingClientRect(),
45
+ left = _node$getBoundingClie.left,
46
+ top = _node$getBoundingClie.top;
47
+
48
+ return {
49
+ top: top + pageYOffset,
50
+ left: left + pageXOffset
51
+ };
52
+ };
53
+ export var getMousePosition = function getMousePosition(event) {
54
+ if (event.changedTouches && event.changedTouches[0]) {
55
+ return {
56
+ x: event.changedTouches[0].pageX,
57
+ y: event.changedTouches[0].pageY
58
+ };
59
+ }
60
+
61
+ return {
62
+ x: event.pageX,
63
+ y: event.pageY
64
+ };
65
+ };
66
+ export var calculatePercent = function calculatePercent(node, event, isVertical, isReverted) {
67
+ var _node$getBoundingClie2 = node.getBoundingClientRect(),
68
+ width = _node$getBoundingClie2.width,
69
+ height = _node$getBoundingClie2.height;
70
+
71
+ var _getOffset = getOffset(node),
72
+ top = _getOffset.top,
73
+ left = _getOffset.left;
74
+
75
+ var _getMousePosition = getMousePosition(event),
76
+ x = _getMousePosition.x,
77
+ y = _getMousePosition.y;
78
+
79
+ var value = isVertical ? y - top : x - left;
80
+ var onePercent = (isVertical ? height : width) / 100;
81
+ return Math.abs((isReverted ? 100 : 0) - clamp(value / onePercent));
82
+ };
83
+ export var clamp = function clamp(value) {
84
+ var min = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
85
+ var max = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 100;
86
+ return Math.min(Math.max(value, min), max);
87
+ };
88
+ export var roundValue = function roundValue(value, step) {
89
+ return step > 0 ? roundToStep(value, step) : parseFloat(parseFloat(String(value)).toFixed(3));
90
+ };
91
+ export var createMockDiv = function createMockDiv(_ref2) {
92
+ var width = _ref2.width,
93
+ height = _ref2.height;
94
+ var div = document.createElement('div');
95
+
96
+ _extends(div.style, {
97
+ width: "".concat(width, "px"),
98
+ height: "".concat(height, "px")
99
+ });
100
+
101
+ div.getBoundingClientRect = function () {
102
+ return {
103
+ width: width,
104
+ height: height,
105
+ top: 0,
106
+ left: 0,
107
+ right: width,
108
+ bottom: height
109
+ };
110
+ };
111
+
112
+ return div;
113
+ };
114
+ export var getUpdatedValues = function getUpdatedValues(value, index, newValue) {
115
+ return value.map(function (val, i) {
116
+ if (i === index) {
117
+ val = newValue;
118
+ }
119
+
120
+ return val;
121
+ });
122
+ };
123
+ export var closestIndex = function closestIndex(goal, array) {
124
+ var res = _toConsumableArray(array).sort(function (a, b) {
125
+ return Math.abs(goal - a) - Math.abs(goal - b);
126
+ })[0];
127
+
128
+ return array.findIndex(function (num) {
129
+ return num === res;
130
+ });
131
+ };
132
+ export var formatNumber = function formatNumber(value) {
133
+ var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
134
+
135
+ if (opts) {
136
+ return format(value, opts);
137
+ }
138
+
139
+ return value;
140
+ };
141
+ export var getHumanNumber = function getHumanNumber(value, numberFormat) {
142
+ var num = value;
143
+
144
+ var _ref3 = numberFormat ? formatNumber(num, _objectSpread(_objectSpread({}, numberFormat || {}), {}, {
145
+ returnAria: true
146
+ })) : {
147
+ aria: null
148
+ },
149
+ humanNumber = _ref3.aria;
150
+
151
+ return String(humanNumber || value);
152
+ };
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Web Slider Component
3
+ *
4
+ */
5
+ /// <reference types="react" />
6
+ export declare function SliderInstance(): JSX.Element;
@@ -0,0 +1,162 @@
1
+ import _extends from "@babel/runtime/helpers/esm/extends";
2
+
3
+ var _SubtractButton, _AddButton, _AlignmentHelper, _SliderMainTrack, _SliderSuffix;
4
+
5
+ import "core-js/modules/es.regexp.exec.js";
6
+ import "core-js/modules/es.string.replace.js";
7
+ import React from 'react';
8
+ import classnames from 'classnames';
9
+ import { isTrue } from '../../shared/component-helper';
10
+ import AlignmentHelper from '../../shared/AlignmentHelper';
11
+ import { createSpacingClasses } from '../space/SpacingHelper';
12
+ import { createSkeletonClass, skeletonDOMAttributes } from '../skeleton/SkeletonHelper';
13
+ import Context from '../../shared/Context';
14
+ import Suffix from '../../shared/helpers/Suffix';
15
+ import Button from '../button/Button';
16
+ import FormLabel from '../form-label/FormLabel';
17
+ import FormStatus from '../form-status/FormStatus';
18
+ import { SliderMainTrack, SliderTrackAfter, SliderTrackBefore } from './SliderTrack';
19
+ import { SliderThumb } from './SliderThumb';
20
+ import { useSliderProps } from './hooks/useSliderProps';
21
+ import { clamp, getHumanNumber } from './SliderHelpers';
22
+ export function SliderInstance() {
23
+ var context = React.useContext(Context);
24
+
25
+ var _useSliderProps = useSliderProps(),
26
+ isReverse = _useSliderProps.isReverse,
27
+ isVertical = _useSliderProps.isVertical,
28
+ showButtons = _useSliderProps.showButtons,
29
+ showStatus = _useSliderProps.showStatus,
30
+ allProps = _useSliderProps.allProps;
31
+
32
+ var id = allProps.id,
33
+ label = allProps.label,
34
+ labelSrOnly = allProps.labelSrOnly,
35
+ labelDirection = allProps.labelDirection,
36
+ status = allProps.status,
37
+ statusProps = allProps.statusProps,
38
+ statusState = allProps.statusState,
39
+ statusNoAnimation = allProps.statusNoAnimation,
40
+ globalStatusId = allProps.globalStatusId,
41
+ stretch = allProps.stretch,
42
+ skeleton = allProps.skeleton,
43
+ disabled = allProps.disabled,
44
+ className = allProps.className;
45
+ var mainParams = {
46
+ className: classnames("dnb-slider dnb-form-component", createSkeletonClass(null, skeleton), createSpacingClasses(allProps), className, isReverse && 'dnb-slider--reverse', isVertical && 'dnb-slider--vertical', disabled && 'dnb-slider__state--disabled', !showButtons && 'dnb-slider--no-buttons', isTrue(stretch) && 'dnb-slider--stretch', label && labelDirection && "dnb-slider__label--".concat(labelDirection), showStatus && 'dnb-slider__form-status', status && "dnb-slider__status--".concat(statusState))
47
+ };
48
+ var subtractButton = showButtons ? _SubtractButton || (_SubtractButton = React.createElement(SubtractButton, null)) : null;
49
+ var addButton = showButtons ? _AddButton || (_AddButton = React.createElement(AddButton, null)) : null;
50
+ skeletonDOMAttributes(mainParams, skeleton, context);
51
+ return React.createElement("span", mainParams, label && React.createElement(FormLabel, {
52
+ id: id + '-label',
53
+ text: label,
54
+ disabled: disabled,
55
+ skeleton: skeleton,
56
+ label_direction: labelDirection,
57
+ sr_only: labelSrOnly
58
+ }), React.createElement("span", {
59
+ className: "dnb-slider__wrapper"
60
+ }, _AlignmentHelper || (_AlignmentHelper = React.createElement(AlignmentHelper, null)), React.createElement(FormStatus, _extends({
61
+ show: showStatus,
62
+ id: id + '-form-status',
63
+ global_status_id: globalStatusId,
64
+ label: label,
65
+ text_id: id + '-status',
66
+ text: status,
67
+ status: statusState,
68
+ no_animation: statusNoAnimation,
69
+ skeleton: skeleton
70
+ }, statusProps)), React.createElement("span", {
71
+ className: "dnb-slider__inner"
72
+ }, showButtons && (isReverse ? addButton : subtractButton), _SliderMainTrack || (_SliderMainTrack = React.createElement(SliderMainTrack, null, React.createElement(SliderThumb, null), React.createElement(SliderTrackBefore, null), React.createElement(SliderTrackAfter, null))), showButtons && (isReverse ? subtractButton : addButton), _SliderSuffix || (_SliderSuffix = React.createElement(SliderSuffix, null)))));
73
+ }
74
+
75
+ function SliderSuffix() {
76
+ var _useSliderProps2 = useSliderProps(),
77
+ allProps = _useSliderProps2.allProps;
78
+
79
+ var id = allProps.id,
80
+ suffix = allProps.suffix;
81
+ return suffix ? React.createElement(Suffix, {
82
+ className: "dnb-slider__suffix",
83
+ id: id + '-suffix',
84
+ context: allProps
85
+ }, suffix) : null;
86
+ }
87
+
88
+ function SubtractButton() {
89
+ var _useSliderProps3 = useSliderProps(),
90
+ emitChange = _useSliderProps3.emitChange,
91
+ value = _useSliderProps3.value,
92
+ attributes = _useSliderProps3.attributes,
93
+ allProps = _useSliderProps3.allProps;
94
+
95
+ var step = allProps.step,
96
+ min = allProps.min,
97
+ max = allProps.max,
98
+ disabled = allProps.disabled,
99
+ skeleton = allProps.skeleton,
100
+ subtractTitle = allProps.subtractTitle,
101
+ numberFormat = allProps.numberFormat;
102
+
103
+ var onSubtractClickHandler = function onSubtractClickHandler(event) {
104
+ emitChange(event, clamp(value - (step || 1), min, max));
105
+ };
106
+
107
+ var subtractParams = {};
108
+
109
+ if (typeof attributes['aria-hidden'] !== 'undefined') {
110
+ subtractParams['aria-hidden'] = attributes['aria-hidden'];
111
+ }
112
+
113
+ var humanNumber = getHumanNumber(value, numberFormat);
114
+ return React.createElement(Button, _extends({
115
+ className: "dnb-slider__button dnb-slider__button--subtract",
116
+ variant: "secondary",
117
+ icon: "subtract",
118
+ size: "small",
119
+ "aria-label": subtractTitle === null || subtractTitle === void 0 ? void 0 : subtractTitle.replace('%s', humanNumber),
120
+ on_click: onSubtractClickHandler,
121
+ disabled: disabled,
122
+ skeleton: skeleton
123
+ }, subtractParams));
124
+ }
125
+
126
+ function AddButton() {
127
+ var _useSliderProps4 = useSliderProps(),
128
+ emitChange = _useSliderProps4.emitChange,
129
+ value = _useSliderProps4.value,
130
+ attributes = _useSliderProps4.attributes,
131
+ allProps = _useSliderProps4.allProps;
132
+
133
+ var step = allProps.step,
134
+ min = allProps.min,
135
+ max = allProps.max,
136
+ disabled = allProps.disabled,
137
+ skeleton = allProps.skeleton,
138
+ addTitle = allProps.addTitle,
139
+ numberFormat = allProps.numberFormat;
140
+
141
+ var onAddClickHandler = function onAddClickHandler(event) {
142
+ emitChange(event, clamp(value + (step || 1), min, max));
143
+ };
144
+
145
+ var addParams = {};
146
+
147
+ if (typeof attributes['aria-hidden'] !== 'undefined') {
148
+ addParams['aria-hidden'] = attributes['aria-hidden'];
149
+ }
150
+
151
+ var humanNumber = getHumanNumber(value, numberFormat);
152
+ return React.createElement(Button, _extends({
153
+ className: "dnb-slider__button dnb-slider__button--add",
154
+ variant: "secondary",
155
+ icon: "add",
156
+ size: "small",
157
+ "aria-label": addTitle === null || addTitle === void 0 ? void 0 : addTitle.replace('%s', humanNumber),
158
+ on_click: onAddClickHandler,
159
+ disabled: disabled,
160
+ skeleton: skeleton
161
+ }, addParams));
162
+ }
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { SliderProps, SliderContextTypes } from './types';
3
+ export declare const SliderContext: React.Context<SliderContextTypes>;
4
+ export declare function SliderProvider(localProps: SliderProps): JSX.Element;
@@ -0,0 +1,199 @@
1
+ import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ var _excluded = ["step", "label", "labelDirection", "labelSrOnly", "status", "statusState", "statusProps", "statusNoAnimation", "globalStatusId", "stretch", "suffix", "thumbTitle", "subtractTitle", "addTitle", "hideButtons", "numberFormat", "skeleton", "max", "min", "disabled", "className", "id", "onInit", "onChange", "onDragStart", "onDragEnd", "vertical", "reverse", "value", "children"];
4
+ import "core-js/modules/es.array.reverse.js";
5
+ import "core-js/modules/es.object.to-string.js";
6
+ import React from 'react';
7
+ import { includeValidProps } from '../../components/form-row/FormRowHelpers';
8
+ import { usePropsWithContext } from '../../shared/hooks';
9
+ import { warn, isTrue, makeUniqueId, dispatchCustomElementEvent, getStatusState } from '../../shared/component-helper';
10
+ import Context from '../../shared/Context';
11
+ import { closestIndex, formatNumber, getUpdatedValues, roundValue } from './SliderHelpers';
12
+ import { convertSnakeCaseProps } from '../../shared/helpers/withSnakeCaseProps';
13
+ var defaultProps = {
14
+ statusState: 'error',
15
+ addTitle: '+',
16
+ subtractTitle: '−',
17
+ min: 0,
18
+ max: 100,
19
+ value: -1
20
+ };
21
+ export var SliderContext = React.createContext(null);
22
+ export function SliderProvider(localProps) {
23
+ var context = React.useContext(Context);
24
+ var allProps = convertSnakeCaseProps(usePropsWithContext(localProps, defaultProps, {
25
+ skeleton: context === null || context === void 0 ? void 0 : context.skeleton
26
+ }, context === null || context === void 0 ? void 0 : context.getTranslation(localProps).Slider, includeValidProps(context === null || context === void 0 ? void 0 : context.FormRow, {
27
+ vertical: null
28
+ }), context === null || context === void 0 ? void 0 : context.Slider));
29
+
30
+ var _React$useState = React.useState(makeUniqueId),
31
+ _React$useState2 = _slicedToArray(_React$useState, 1),
32
+ _id = _React$useState2[0];
33
+
34
+ if (!allProps.id) {
35
+ allProps.id = _id;
36
+ }
37
+
38
+ var step = allProps.step,
39
+ label = allProps.label,
40
+ labelDirection = allProps.labelDirection,
41
+ labelSrOnly = allProps.labelSrOnly,
42
+ status = allProps.status,
43
+ statusState = allProps.statusState,
44
+ statusProps = allProps.statusProps,
45
+ statusNoAnimation = allProps.statusNoAnimation,
46
+ globalStatusId = allProps.globalStatusId,
47
+ stretch = allProps.stretch,
48
+ suffix = allProps.suffix,
49
+ title = allProps.thumbTitle,
50
+ subtractTitle = allProps.subtractTitle,
51
+ addTitle = allProps.addTitle,
52
+ hideButtons = allProps.hideButtons,
53
+ numberFormat = allProps.numberFormat,
54
+ skeleton = allProps.skeleton,
55
+ max = allProps.max,
56
+ min = allProps.min,
57
+ disabled = allProps.disabled,
58
+ className = allProps.className,
59
+ id = allProps.id,
60
+ onInit = allProps.onInit,
61
+ onChange = allProps.onChange,
62
+ onDragStart = allProps.onDragStart,
63
+ onDragEnd = allProps.onDragEnd,
64
+ _vertical = allProps.vertical,
65
+ _reverse = allProps.reverse,
66
+ _value = allProps.value,
67
+ _children = allProps.children,
68
+ attributes = _objectWithoutProperties(allProps, _excluded);
69
+
70
+ var _React$useState3 = React.useState(_value),
71
+ _React$useState4 = _slicedToArray(_React$useState3, 2),
72
+ value = _React$useState4[0],
73
+ setValue = _React$useState4[1];
74
+
75
+ var _React$useState5 = React.useState('initial'),
76
+ _React$useState6 = _slicedToArray(_React$useState5, 2),
77
+ thumbState = _React$useState6[0],
78
+ setThumbState = _React$useState6[1];
79
+
80
+ var thumbIndex = React.useRef(-1);
81
+
82
+ var _React$useState7 = React.useState(isTrue(_vertical)),
83
+ _React$useState8 = _slicedToArray(_React$useState7, 1),
84
+ isVertical = _React$useState8[0];
85
+
86
+ var _React$useState9 = React.useState(isVertical ? !isTrue(_reverse) : isTrue(_reverse)),
87
+ _React$useState10 = _slicedToArray(_React$useState9, 1),
88
+ isReverse = _React$useState10[0];
89
+
90
+ var isMulti = Array.isArray(value);
91
+
92
+ var setThumbIndex = function setThumbIndex(index) {
93
+ if (!isNaN(index)) {
94
+ thumbIndex.current = index;
95
+ }
96
+ };
97
+
98
+ if (allProps.use_scrollwheel) {
99
+ warn('use_scrollwheel is not supported anymore!');
100
+ }
101
+
102
+ var getAndUpdateCurrentIndex = function getAndUpdateCurrentIndex(currentValue) {
103
+ var currentIndex = null;
104
+
105
+ if (thumbIndex.current > -1) {
106
+ currentIndex = thumbIndex.current;
107
+ } else {
108
+ currentIndex = closestIndex(currentValue, value);
109
+ setThumbIndex(currentIndex);
110
+ }
111
+
112
+ return currentIndex;
113
+ };
114
+
115
+ var emitChange = function emitChange(event, rawValue) {
116
+ if (disabled || isTrue(skeleton)) {
117
+ return;
118
+ }
119
+
120
+ var currentValue = roundValue(rawValue, step);
121
+
122
+ if (currentValue > -1 && rawValue !== value) {
123
+ var newValue = currentValue;
124
+
125
+ if (isMulti) {
126
+ var currentIndex = getAndUpdateCurrentIndex(currentValue);
127
+ newValue = getUpdatedValues(value, currentIndex, currentValue);
128
+ }
129
+
130
+ if (typeof onChange === 'function') {
131
+ var obj = {
132
+ value: newValue,
133
+ rawValue: rawValue,
134
+ raw_value: rawValue,
135
+ event: event,
136
+ number: null
137
+ };
138
+
139
+ if (numberFormat) {
140
+ obj.number = formatNumber(currentValue, numberFormat);
141
+ }
142
+
143
+ dispatchCustomElementEvent(allProps, 'onChange', obj);
144
+ }
145
+
146
+ setValue(newValue);
147
+ }
148
+ };
149
+
150
+ React.useEffect(function () {
151
+ if (isMulti) {
152
+ var hasChanged = _value.some(function (val, i) {
153
+ return val !== value[i];
154
+ });
155
+
156
+ if (hasChanged) {
157
+ setValue(_value);
158
+ }
159
+ } else {
160
+ setValue(_value);
161
+ }
162
+ }, [_value, isMulti]);
163
+ var trackRef = React.useRef();
164
+ var jumpedTimeout = React.useRef();
165
+
166
+ var setJumpedState = function setJumpedState() {
167
+ setThumbState('jumped');
168
+ clearTimeout(jumpedTimeout.current);
169
+ jumpedTimeout.current = setTimeout(function () {
170
+ return setThumbState('normal');
171
+ }, 100);
172
+ };
173
+
174
+ var showStatus = getStatusState(status);
175
+ var showButtons = !isMulti && !isTrue(hideButtons);
176
+ var values = isMulti ? value : [value];
177
+ return React.createElement(SliderContext.Provider, {
178
+ value: {
179
+ isMulti: isMulti,
180
+ isReverse: isReverse,
181
+ isVertical: isVertical,
182
+ value: value,
183
+ values: values,
184
+ setValue: setValue,
185
+ attributes: attributes,
186
+ showStatus: showStatus,
187
+ showButtons: showButtons,
188
+ thumbState: thumbState,
189
+ setThumbState: setThumbState,
190
+ thumbIndex: thumbIndex,
191
+ setThumbIndex: setThumbIndex,
192
+ emitChange: emitChange,
193
+ allProps: allProps,
194
+ trackRef: trackRef,
195
+ setJumpedState: setJumpedState,
196
+ jumpedTimeout: jumpedTimeout
197
+ }
198
+ }, localProps.children);
199
+ }
@@ -0,0 +1,2 @@
1
+ /// <reference types="react" />
2
+ export declare function SliderThumb(): JSX.Element;
@@ -0,0 +1,109 @@
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.get-own-property-descriptor.js";
5
+ import "core-js/modules/web.dom-collections.for-each.js";
6
+ import "core-js/modules/es.object.get-own-property-descriptors.js";
7
+ import _extends from "@babel/runtime/helpers/esm/extends";
8
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
9
+
10
+ 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; }
11
+
12
+ 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; }
13
+
14
+ import "core-js/modules/es.array.iterator.js";
15
+ import "core-js/modules/es.object.to-string.js";
16
+ import "core-js/modules/web.dom-collections.iterator.js";
17
+ import "core-js/modules/es.array.map.js";
18
+ import React from 'react';
19
+ import { combineDescribedBy, combineLabelledBy, validateDOMAttributes } from '../../shared/component-helper';
20
+ import Button from '../button/Button';
21
+ import { useSliderEvents } from './hooks/useSliderEvents';
22
+ import { useSliderProps } from './hooks/useSliderProps';
23
+ import { clamp, getHumanNumber } from './SliderHelpers';
24
+ export function SliderThumb() {
25
+ var _useSliderProps = useSliderProps(),
26
+ values = _useSliderProps.values,
27
+ thumbIndex = _useSliderProps.thumbIndex,
28
+ isVertical = _useSliderProps.isVertical,
29
+ showStatus = _useSliderProps.showStatus,
30
+ attributes = _useSliderProps.attributes,
31
+ allProps = _useSliderProps.allProps;
32
+
33
+ var id = allProps.id,
34
+ label = allProps.label,
35
+ min = allProps.min,
36
+ max = allProps.max,
37
+ step = allProps.step,
38
+ skeleton = allProps.skeleton,
39
+ disabled = allProps.disabled,
40
+ suffix = allProps.suffix,
41
+ numberFormat = allProps.numberFormat;
42
+
43
+ var _useSliderEvents = useSliderEvents(),
44
+ onThumbMouseDownHandler = _useSliderEvents.onThumbMouseDownHandler,
45
+ onThumbMouseUpHandler = _useSliderEvents.onThumbMouseUpHandler,
46
+ onThumbBlurHandler = _useSliderEvents.onThumbBlurHandler,
47
+ onThumbFocusHandler = _useSliderEvents.onThumbFocusHandler,
48
+ onHelperChangeHandler = _useSliderEvents.onHelperChangeHandler,
49
+ onHelperFocusHandler = _useSliderEvents.onHelperFocusHandler;
50
+
51
+ var thumbParams = _objectSpread({
52
+ onBlur: onThumbBlurHandler,
53
+ onFocus: onThumbFocusHandler
54
+ }, attributes);
55
+
56
+ var helperParams = {};
57
+
58
+ if (label) {
59
+ helperParams['aria-labelledby'] = combineLabelledBy(helperParams, label ? id + '-label' : null);
60
+ }
61
+
62
+ if (showStatus || suffix) {
63
+ helperParams['aria-describedby'] = combineDescribedBy(helperParams, showStatus ? id + '-status' : null, suffix ? id + '-suffix' : null);
64
+ }
65
+
66
+ validateDOMAttributes(null, helperParams);
67
+ validateDOMAttributes(allProps, thumbParams);
68
+ return React.createElement(React.Fragment, null, values.map(function (value, i) {
69
+ var index = thumbIndex.current;
70
+ var percent = clamp((value - min) * 100 / (max - min));
71
+
72
+ var style = _defineProperty({
73
+ zIndex: index === i ? 4 : 3
74
+ }, "".concat(isVertical ? 'top' : 'left'), "".concat(percent, "%"));
75
+
76
+ var humanNumber = getHumanNumber(value, numberFormat);
77
+ return React.createElement(React.Fragment, {
78
+ key: i
79
+ }, React.createElement("span", {
80
+ className: "dnb-slider__thumb",
81
+ style: style
82
+ }, React.createElement("input", _extends({
83
+ type: "range",
84
+ className: "dnb-slider__button-helper",
85
+ min: min,
86
+ max: max,
87
+ step: step,
88
+ value: value,
89
+ disabled: disabled,
90
+ onChange: onHelperChangeHandler,
91
+ onFocus: onHelperFocusHandler,
92
+ "aria-valuemin": min,
93
+ "aria-valuemax": max,
94
+ "aria-valuenow": value,
95
+ "aria-valuetext": humanNumber ? humanNumber : undefined,
96
+ "aria-orientation": isVertical ? 'vertical' : 'horizontal',
97
+ "data-index": i
98
+ }, helperParams)), React.createElement(Button, _extends({
99
+ element: "span",
100
+ type: "",
101
+ variant: "secondary",
102
+ disabled: disabled,
103
+ skeleton: skeleton,
104
+ "data-index": i,
105
+ onMouseDown: onThumbMouseDownHandler,
106
+ onMouseUp: onThumbMouseUpHandler
107
+ }, thumbParams))));
108
+ }));
109
+ }
@@ -0,0 +1,6 @@
1
+ import React from 'react';
2
+ export declare function SliderMainTrack({ children, }: {
3
+ children: React.ReactNode | React.ReactNode[];
4
+ }): JSX.Element;
5
+ export declare function SliderTrackBefore(): JSX.Element;
6
+ export declare function SliderTrackAfter(): JSX.Element;