@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
@@ -2,147 +2,9 @@
2
2
  * Web Slider Component
3
3
  *
4
4
  */
5
- import React from 'react';
6
- import type { IncludeCamelCase } from '../../shared/helpers/withCamelCaseProps';
7
- import type { ISpacingProps } from '../../shared/interfaces';
8
- import type { SuffixChildren } from '../../shared/helpers/Suffix';
9
- import type { formatReturnType, formatOptionParams } from '../number-format/NumberUtils';
10
- declare type onChangeEventProps = {
11
- value: number;
12
- rawValue: number;
13
- number?: formatReturnType | null;
14
- event?: Event;
15
- /** @deprecated use rawValue instead */
16
- raw_value?: number;
17
- };
18
- export declare type SliderProps = {
19
- id?: string;
20
- label?: React.ReactNode;
21
- label_direction?: 'vertical' | 'horizontal';
22
- label_sr_only?: boolean;
23
- status?: string | boolean;
24
- status_state?: 'error' | 'info';
25
- status_props?: Record<string, unknown>;
26
- status_no_animation?: boolean;
27
- global_status_id?: string;
28
- suffix?: SuffixChildren;
29
- thumb_title?: string;
30
- add_title?: string;
31
- subtract_title?: string;
32
- min?: number;
33
- max?: number;
34
- value?: number;
35
- step?: number;
36
- vertical?: boolean;
37
- reverse?: boolean;
38
- stretch?: boolean;
39
- number_format?: formatOptionParams;
40
- disabled?: boolean;
41
- hide_buttons?: boolean;
42
- skeleton?: boolean;
43
- class?: string;
44
- className?: string;
45
- on_change?: (props: onChangeEventProps) => void;
46
- on_drag_start?: (props: {
47
- event: MouseEvent | TouchEvent;
48
- }) => void;
49
- on_drag_end?: (props: {
50
- event: MouseEvent | TouchEvent;
51
- }) => void;
52
- /** @deprecated */
53
- on_init?: (props: Omit<onChangeEventProps, 'rawValue'>) => void;
54
- /** @deprecated The Slider does not support mouse wheel */
55
- use_scrollwheel?: boolean;
56
- } & ISpacingProps;
57
- declare function Slider(localProps: IncludeCamelCase<SliderProps>): JSX.Element;
58
- export { Slider as OriginalComponent };
59
- declare const _default: React.FunctionComponent<Partial<SliderProps> & Partial<{
60
- id?: string;
61
- label?: boolean | React.ReactText | {
62
- type: string | {} | {};
63
- props: any;
64
- key: React.Key;
65
- } | {} | {} | {
66
- key: React.Key;
67
- children: boolean | React.ReactText | {
68
- type: string | {} | {};
69
- props: any;
70
- key: React.Key;
71
- } | {} | {} | any;
72
- type: string | {} | {};
73
- props: any;
74
- };
75
- labelDirection?: "horizontal" | "vertical";
76
- labelSrOnly?: boolean;
77
- status?: string | boolean;
78
- statusState?: "error" | "info";
79
- statusProps?: {
80
- [x: string]: unknown;
81
- };
82
- statusNoAnimation?: boolean;
83
- globalStatusId?: string;
84
- suffix?: boolean | React.ReactText | {
85
- type: string | {} | {};
86
- props: any;
87
- key: React.Key;
88
- } | {} | {} | {
89
- key: React.Key;
90
- children: boolean | React.ReactText | {
91
- type: string | {} | {};
92
- props: any;
93
- key: React.Key;
94
- } | {} | {} | any;
95
- type: string | {} | {};
96
- props: any;
97
- };
98
- thumbTitle?: string;
99
- addTitle?: string;
100
- subtractTitle?: string;
101
- min?: number;
102
- max?: number;
103
- value?: number;
104
- step?: number;
105
- vertical?: boolean;
106
- reverse?: boolean;
107
- stretch?: boolean;
108
- numberFormat?: {
109
- locale?: string;
110
- clean?: boolean;
111
- compact?: boolean | "short" | "long";
112
- decimals?: number;
113
- omitRounding?: boolean;
114
- phone?: boolean;
115
- org?: boolean;
116
- ban?: boolean;
117
- nin?: boolean;
118
- percent?: boolean;
119
- currency?: string | boolean;
120
- currencyDisplay?: boolean | "" | "symbol" | "code" | "name" | "narrowSymbol";
121
- currencyPosition?: import("../number-format/NumberUtils").formatCurrencyPosition;
122
- omitCurrencySign?: boolean;
123
- cleanCopyValue?: boolean;
124
- options?: object;
125
- returnAria?: boolean;
126
- };
127
- disabled?: boolean;
128
- hideButtons?: boolean;
129
- skeleton?: boolean;
130
- class?: string;
131
- className?: string;
132
- onChange?: {};
133
- onDragStart?: {};
134
- onDragEnd?: {};
135
- onInit?: {};
136
- useScrollwheel?: boolean;
137
- space?: import("../../shared/interfaces").SpaceTypes | {
138
- top?: import("../../shared/interfaces").SpaceTypes;
139
- right?: import("../../shared/interfaces").SpaceTypes;
140
- bottom?: import("../../shared/interfaces").SpaceTypes;
141
- left?: import("../../shared/interfaces").SpaceTypes;
142
- };
143
- top?: import("../../shared/interfaces").SpaceTypes;
144
- right?: import("../../shared/interfaces").SpaceTypes;
145
- bottom?: import("../../shared/interfaces").SpaceTypes;
146
- left?: import("../../shared/interfaces").SpaceTypes;
147
- }>> & typeof Slider;
148
- export default _default;
5
+ /// <reference types="react" />
6
+ import type { SliderProps, ValueTypes } from './types';
7
+ import { ISpacingProps } from '../../shared/interfaces';
8
+ export type { SliderProps, ValueTypes };
9
+ declare function Slider(localProps: SliderProps & ISpacingProps): JSX.Element;
10
+ export default Slider;
@@ -1,490 +1,11 @@
1
- import _extends from "@babel/runtime/helpers/esm/extends";
2
- import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
3
- import _objectWithoutProperties from "@babel/runtime/helpers/esm/objectWithoutProperties";
4
-
5
- var _AlignmentHelper, _span;
6
-
7
- const _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"];
8
-
9
- 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; }
10
-
11
- 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; }
1
+ var _SliderInstance;
12
2
 
13
3
  import React from 'react';
14
- import classnames from 'classnames';
15
- import { warn, isTrue, makeUniqueId, validateDOMAttributes, getStatusState, combineLabelledBy, combineDescribedBy, dispatchCustomElementEvent } from '../../shared/component-helper';
16
- import { includeValidProps } from '../../components/form-row/FormRowHelpers';
17
- import { usePropsWithContext } from '../../shared/hooks';
18
- import AlignmentHelper from '../../shared/AlignmentHelper';
19
- import { withCamelCaseProps } from '../../shared/helpers/withCamelCaseProps';
20
- import { createSpacingClasses } from '../space/SpacingHelper';
21
- import { format } from '../number-format/NumberUtils';
22
- import { createSkeletonClass, skeletonDOMAttributes } from '../skeleton/SkeletonHelper';
23
- import Context from '../../shared/Context';
24
- import Suffix from '../../shared/helpers/Suffix';
25
- import Button from '../button/Button';
26
- import FormLabel from '../form-label/FormLabel';
27
- import FormStatus from '../form-status/FormStatus';
28
- const defaultProps = {
29
- status_state: 'error',
30
- add_title: '+',
31
- subtract_title: '−',
32
- min: 0,
33
- max: 100,
34
- value: -1
35
- };
4
+ import { SliderProvider } from './SliderProvider';
5
+ import { SliderInstance } from './SliderInstance';
36
6
 
37
7
  function Slider(localProps) {
38
- const context = React.useContext(Context);
39
- const allProps = usePropsWithContext(localProps, defaultProps, {
40
- skeleton: context === null || context === void 0 ? void 0 : context.skeleton
41
- }, context === null || context === void 0 ? void 0 : context.getTranslation(localProps).Slider, includeValidProps(context === null || context === void 0 ? void 0 : context.FormRow, {
42
- vertical: null
43
- }), context === null || context === void 0 ? void 0 : context.Slider);
44
- const [_id] = React.useState(makeUniqueId);
45
-
46
- if (!allProps.id) {
47
- allProps.id = _id;
48
- }
49
-
50
- const {
51
- step,
52
- label,
53
- label_direction,
54
- label_sr_only,
55
- status,
56
- status_state,
57
- status_props,
58
- status_no_animation,
59
- global_status_id,
60
- stretch,
61
- suffix,
62
- thumb_title: title,
63
- subtract_title,
64
- add_title,
65
- hide_buttons,
66
- number_format,
67
- skeleton,
68
- max,
69
- min,
70
- disabled,
71
- className,
72
- id,
73
- on_init,
74
- on_change,
75
- on_drag_start,
76
- on_drag_end,
77
- vertical: _vertical,
78
- reverse: _reverse,
79
- class: _className,
80
- value: _value
81
- } = allProps,
82
- attributes = _objectWithoutProperties(allProps, _excluded);
83
-
84
- const trackRef = React.useRef();
85
- const [value, setValue] = React.useState(_value);
86
- const [currentState, setCurrentState] = React.useState('initial');
87
- const [vertical] = React.useState(isTrue(_vertical));
88
- const [reverse] = React.useState(vertical ? !isTrue(_reverse) : isTrue(_reverse));
89
-
90
- if (allProps.use_scrollwheel) {
91
- warn('use_scrollwheel is not supported anymore!');
92
- }
93
-
94
- const onFocusHandler = () => {
95
- setCurrentState('focused');
96
- };
97
-
98
- const onBlurHandler = () => {
99
- setCurrentState('normal');
100
- };
101
-
102
- const onClickHandler = event => {
103
- const percent = calculatePercent(trackRef.current, event, vertical, reverse);
104
- const value = percentToValue(percent, min, max);
105
- emitChange(event, value);
106
- setJumpedState();
107
- };
108
-
109
- const onSubtractClickHandler = event => {
110
- emitChange(event, clamp(value - (step || 1), min, max));
111
- };
112
-
113
- const onAddClickHandler = event => {
114
- emitChange(event, clamp(value + (step || 1), min, max));
115
- };
116
-
117
- const onTouchEndHandler = event => onMouseUpHandler(event);
118
-
119
- const onMouseDownHandler = event => {
120
- if (typeof document !== 'undefined') {
121
- try {
122
- document.body.addEventListener('touchmove', onTouchMoveHandler);
123
- document.body.addEventListener('touchend', onTouchEndHandler);
124
- document.body.addEventListener('mousemove', onMouseMoveHandler);
125
- document.body.addEventListener('mouseup', onMouseUpHandler);
126
- } catch (e) {
127
- warn(e);
128
- }
129
- }
130
-
131
- setCurrentState('activated');
132
-
133
- if (typeof on_drag_start === 'function') {
134
- dispatchCustomElementEvent(allProps, 'on_drag_start', {
135
- event
136
- });
137
- }
138
- };
139
-
140
- const onMouseUpHandler = event => {
141
- if (typeof document !== 'undefined') {
142
- try {
143
- document.body.removeEventListener('touchmove', onTouchMoveHandler);
144
- document.body.removeEventListener('touchend', onTouchEndHandler);
145
- document.body.removeEventListener('mousemove', onMouseMoveHandler);
146
- document.body.removeEventListener('mouseup', onMouseUpHandler);
147
- } catch (e) {
148
- warn(e);
149
- }
150
- }
151
-
152
- setCurrentState('normal');
153
-
154
- if (typeof on_drag_end === 'function') {
155
- dispatchCustomElementEvent(allProps, 'on_drag_end', {
156
- event
157
- });
158
- }
159
- };
160
-
161
- const onRangeChangeHandler = event => {
162
- const value = parseFloat(event.currentTarget.value);
163
- setValue(value);
164
- const emitEvent = event;
165
- emitChange(emitEvent, value);
166
- };
167
-
168
- const onTouchMoveHandler = event => onMouseMoveHandler(event);
169
-
170
- const onMouseMoveHandler = event => {
171
- var _event, _event$detail;
172
-
173
- let elem = trackRef.current;
174
-
175
- 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') {
176
- elem = createMockDiv(event.detail);
177
- event = event.detail;
178
- }
179
-
180
- if (elem) {
181
- const percent = calculatePercent(elem, event, vertical, reverse);
182
- const value = percentToValue(percent, min, max);
183
- emitChange(event, value);
184
- }
185
- };
186
-
187
- const emitChange = (event, rawValue) => {
188
- if (disabled || isTrue(skeleton)) {
189
- return;
190
- }
191
-
192
- const currentValue = roundValue(rawValue, step);
193
-
194
- if (currentValue > -1 && rawValue !== value) {
195
- if (typeof on_change === 'function') {
196
- const obj = {
197
- value: currentValue,
198
- rawValue,
199
- raw_value: rawValue,
200
- event,
201
- number: null
202
- };
203
-
204
- if (number_format) {
205
- obj.number = formatNumber(currentValue, number_format);
206
- }
207
-
208
- dispatchCustomElementEvent(allProps, 'on_change', obj);
209
- }
210
-
211
- setValue(rawValue);
212
- }
213
- };
214
-
215
- const jumpedTimeout = React.useRef();
216
-
217
- const setJumpedState = () => {
218
- setCurrentState('jumped');
219
- clearTimeout(jumpedTimeout.current);
220
- jumpedTimeout.current = setTimeout(() => setCurrentState('normal'), 100);
221
- };
222
-
223
- React.useEffect(() => {
224
- setValue(_value);
225
- }, [_value]);
226
- React.useEffect(() => {
227
- if (typeof on_init === 'function') {
228
- const obj = {
229
- value,
230
- number: null
231
- };
232
-
233
- if (number_format) {
234
- obj.number = formatNumber(value, number_format);
235
- }
236
-
237
- dispatchCustomElementEvent(allProps, 'on_init', obj);
238
- }
239
-
240
- return () => {
241
- if (typeof document !== 'undefined') {
242
- try {
243
- document.body.removeEventListener('touchmove', onTouchMoveHandler);
244
- document.body.removeEventListener('touchend', onTouchEndHandler);
245
- document.body.removeEventListener('mousemove', onMouseMoveHandler);
246
- document.body.removeEventListener('mouseup', onMouseUpHandler);
247
- } catch (e) {
248
- warn(e);
249
- }
250
- }
251
-
252
- clearTimeout(jumpedTimeout.current);
253
- };
254
- }, []);
255
- const percent = clamp((value - min) * 100 / (max - min));
256
- const inlineStyleBefore = {
257
- [`${vertical ? 'height' : 'width'}`]: `${percent}%`
258
- };
259
- const inlineThumbStyles = {
260
- [`${vertical ? 'top' : 'left'}`]: `${percent}%`
261
- };
262
- const {
263
- aria: humanNumber
264
- } = number_format ? formatNumber(value, _objectSpread(_objectSpread({}, number_format || {}), {}, {
265
- returnAria: true
266
- })) : {
267
- aria: null
268
- };
269
- const hasHumanNumber = Boolean(humanNumber);
270
- const showStatus = getStatusState(status);
271
- const showButtons = !isTrue(hide_buttons);
272
- const mainParams = {
273
- 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--${label_direction}`, showStatus && 'dnb-slider__form-status', status && `dnb-slider__status--${status_state}`)
274
- };
275
- const helperParams = {};
276
- const subtractParams = {};
277
- const addParams = {};
278
- const trackParams = {
279
- className: 'dnb-slider__track' + (currentState ? ` dnb-slider__state--${currentState}` : ""),
280
- onTouchStart: onClickHandler,
281
- onTouchStartCapture: onMouseDownHandler,
282
- onMouseDown: onClickHandler,
283
- onMouseDownCapture: onMouseDownHandler
284
- };
285
-
286
- const thumbParams = _objectSpread({
287
- title,
288
- onBlur: onBlurHandler,
289
- onFocus: onFocusHandler
290
- }, attributes);
291
-
292
- if (label || hasHumanNumber) {
293
- helperParams['aria-labelledby'] = combineLabelledBy(helperParams, hasHumanNumber ? id + '-human' : null, label ? id + '-label' : null);
294
- }
295
-
296
- if (showStatus || suffix) {
297
- helperParams['aria-describedby'] = combineDescribedBy(helperParams, showStatus ? id + '-status' : null, suffix ? id + '-suffix' : null);
298
- }
299
-
300
- if (typeof thumbParams['aria-hidden'] !== 'undefined') {
301
- helperParams['aria-hidden'] = addParams['aria-hidden'] = subtractParams['aria-hidden'] = thumbParams['aria-hidden'];
302
- }
303
-
304
- validateDOMAttributes(allProps, thumbParams);
305
- validateDOMAttributes(null, trackParams);
306
- validateDOMAttributes(null, helperParams);
307
- skeletonDOMAttributes(mainParams, skeleton, context);
308
- const subtractButton = showButtons && React.createElement(Button, _extends({
309
- className: "dnb-slider__button dnb-slider__button--subtract",
310
- variant: "secondary",
311
- icon: "subtract",
312
- size: "small",
313
- "aria-label": subtract_title === null || subtract_title === void 0 ? void 0 : subtract_title.replace('%s', humanNumber),
314
- on_click: onSubtractClickHandler,
315
- disabled: disabled,
316
- skeleton: skeleton
317
- }, subtractParams));
318
- const addButton = showButtons && React.createElement(Button, _extends({
319
- className: "dnb-slider__button dnb-slider__button--add",
320
- variant: "secondary",
321
- icon: "add",
322
- size: "small",
323
- "aria-label": add_title === null || add_title === void 0 ? void 0 : add_title.replace('%s', humanNumber),
324
- on_click: onAddClickHandler,
325
- disabled: disabled,
326
- skeleton: skeleton
327
- }, addParams));
328
- return React.createElement("span", mainParams, label && React.createElement(FormLabel, {
329
- id: id + '-label',
330
- text: label,
331
- disabled: disabled,
332
- skeleton: skeleton,
333
- label_direction: label_direction,
334
- sr_only: label_sr_only
335
- }), React.createElement("span", {
336
- className: "dnb-slider__wrapper"
337
- }, _AlignmentHelper || (_AlignmentHelper = React.createElement(AlignmentHelper, null)), React.createElement(FormStatus, _extends({
338
- show: showStatus,
339
- id: id + '-form-status',
340
- global_status_id: global_status_id,
341
- label: label,
342
- text_id: id + '-status',
343
- text: status,
344
- status: status_state,
345
- no_animation: status_no_animation,
346
- skeleton: skeleton
347
- }, status_props)), React.createElement("span", {
348
- className: "dnb-slider__inner"
349
- }, showButtons && (reverse ? addButton : subtractButton), React.createElement("span", _extends({
350
- id: id,
351
- ref: trackRef
352
- }, trackParams), React.createElement("span", {
353
- className: "dnb-slider__thumb",
354
- style: inlineThumbStyles
355
- }, React.createElement("input", _extends({
356
- type: "range",
357
- className: "dnb-slider__button-helper",
358
- min: min,
359
- max: max,
360
- step: step,
361
- value: value,
362
- disabled: disabled,
363
- orientation: vertical ? 'vertical' : 'horizontal',
364
- onChange: onRangeChangeHandler
365
- }, helperParams)), React.createElement(Button, _extends({
366
- tabIndex: -1,
367
- "aria-hidden": true,
368
- variant: "secondary",
369
- disabled: disabled,
370
- skeleton: skeleton,
371
- onMouseDown: onMouseDownHandler
372
- }, thumbParams))), React.createElement("span", {
373
- className: "dnb-slider__line dnb-slider__line__before",
374
- style: inlineStyleBefore
375
- }), _span || (_span = React.createElement("span", {
376
- className: "dnb-slider__line dnb-slider__line__after"
377
- })), hasHumanNumber && React.createElement("span", {
378
- id: id + '-human',
379
- className: "dnb-sr-only",
380
- "aria-hidden": true
381
- }, humanNumber)), showButtons && (reverse ? subtractButton : addButton), suffix && React.createElement(Suffix, {
382
- className: "dnb-slider__suffix",
383
- id: id + '-suffix',
384
- context: allProps
385
- }, suffix))));
8
+ return React.createElement(SliderProvider, localProps, _SliderInstance || (_SliderInstance = React.createElement(SliderInstance, null)));
386
9
  }
387
10
 
388
- const percentToValue = (percent, min, max) => {
389
- if (typeof min === 'string') {
390
- min = parseFloat(min);
391
- }
392
-
393
- if (typeof max === 'string') {
394
- max = parseFloat(max);
395
- }
396
-
397
- return (max - min) * percent / 100 + min;
398
- };
399
-
400
- const roundToStep = (number, step) => Math.round(number / step) * step;
401
-
402
- const getOffset = node => {
403
- const {
404
- pageYOffset,
405
- pageXOffset
406
- } = typeof window !== 'undefined' ? window : {
407
- pageYOffset: 0,
408
- pageXOffset: 0
409
- };
410
- const {
411
- left,
412
- top
413
- } = node.getBoundingClientRect();
414
- return {
415
- top: top + pageYOffset,
416
- left: left + pageXOffset
417
- };
418
- };
419
-
420
- const getMousePosition = event => {
421
- if (event.changedTouches && event.changedTouches[0]) {
422
- return {
423
- x: event.changedTouches[0].pageX,
424
- y: event.changedTouches[0].pageY
425
- };
426
- }
427
-
428
- return {
429
- x: event.pageX,
430
- y: event.pageY
431
- };
432
- };
433
-
434
- const calculatePercent = (node, event, isVertical, isReverted) => {
435
- const {
436
- width,
437
- height
438
- } = node.getBoundingClientRect();
439
- const {
440
- top,
441
- left
442
- } = getOffset(node);
443
- const {
444
- x,
445
- y
446
- } = getMousePosition(event);
447
- const value = isVertical ? y - top : x - left;
448
- const onePercent = (isVertical ? height : width) / 100;
449
- return isReverted ? 100 - clamp(value / onePercent) : clamp(value / onePercent);
450
- };
451
-
452
- const clamp = (value, min = 0, max = 100) => Math.min(Math.max(value, min), max);
453
-
454
- const roundValue = (value, step) => {
455
- return step > 0 ? roundToStep(value, step) : parseFloat(parseFloat(String(value)).toFixed(3));
456
- };
457
-
458
- const createMockDiv = ({
459
- width,
460
- height
461
- }) => {
462
- const div = document.createElement('div');
463
-
464
- _extends(div.style, {
465
- width: `${width}px`,
466
- height: `${height}px`
467
- });
468
-
469
- div.getBoundingClientRect = () => ({
470
- width,
471
- height,
472
- top: 0,
473
- left: 0,
474
- right: width,
475
- bottom: height
476
- });
477
-
478
- return div;
479
- };
480
-
481
- const formatNumber = (value, opts = null) => {
482
- if (opts) {
483
- return format(value, opts);
484
- }
485
-
486
- return value;
487
- };
488
-
489
- export { Slider as OriginalComponent };
490
- 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;