@onereach/ui-components 8.19.5 → 8.20.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 (48) hide show
  1. package/dist/bundled/v2/components/OrRangeSliderV3/OrRangeSlider.js +146 -25
  2. package/dist/bundled/v2/components/OrRangeSliderV3/OrRangeSlider.vue.d.ts +43 -25
  3. package/dist/bundled/v2/components/OrRangeSliderV3/styles.js +40 -0
  4. package/dist/bundled/v2/components/OrSliderV3/OrSlider.js +68 -13
  5. package/dist/bundled/v2/components/OrSliderV3/OrSlider.vue.d.ts +31 -21
  6. package/dist/bundled/v2/components/OrSliderV3/props.d.ts +3 -1
  7. package/dist/bundled/v2/components/OrSliderV3/props.js +2 -0
  8. package/dist/bundled/v2/components/OrSliderV3/styles.js +34 -0
  9. package/dist/bundled/v3/components/OrRangeSliderV3/OrRangeSlider.js +1 -1
  10. package/dist/bundled/v3/components/OrRangeSliderV3/OrRangeSlider.vue.d.ts +27 -18
  11. package/dist/bundled/v3/components/OrRangeSliderV3/index.js +2 -2
  12. package/dist/bundled/v3/components/OrRangeSliderV3/props.js +1 -1
  13. package/dist/bundled/v3/components/OrRangeSliderV3/styles.js +2 -2
  14. package/dist/bundled/v3/components/{OrRangeSliderV3-f8024c15.js → OrRangeSliderV3-fac9697f.js} +187 -27
  15. package/dist/bundled/v3/components/OrSliderV3/OrSlider.js +1 -1
  16. package/dist/bundled/v3/components/OrSliderV3/OrSlider.vue.d.ts +21 -16
  17. package/dist/bundled/v3/components/OrSliderV3/index.js +1 -1
  18. package/dist/bundled/v3/components/OrSliderV3/props.d.ts +3 -1
  19. package/dist/bundled/v3/components/OrSliderV3/props.js +1 -1
  20. package/dist/bundled/v3/components/OrSliderV3/styles.js +1 -1
  21. package/dist/bundled/v3/components/{OrSliderV3-b69331d1.js → OrSliderV3-6d75304d.js} +104 -14
  22. package/dist/bundled/v3/components/index.js +2 -2
  23. package/dist/bundled/v3/index.js +2 -2
  24. package/dist/esm/v2/{OrRangeSlider-2fba4c60.js → OrRangeSlider-7a377862.js} +187 -26
  25. package/dist/esm/v2/{OrSlider-dd60a4a1.js → OrSlider-dd967591.js} +3 -4
  26. package/dist/esm/v2/{OrSlider.vue_rollup-plugin-vue_script-eadc5fc6.js → OrSlider.vue_rollup-plugin-vue_script-79f356ca.js} +102 -10
  27. package/dist/esm/v2/components/index.js +3 -3
  28. package/dist/esm/v2/components/or-range-slider-v3/OrRangeSlider.vue.d.ts +43 -25
  29. package/dist/esm/v2/components/or-range-slider-v3/index.js +2 -2
  30. package/dist/esm/v2/components/or-slider-v3/OrSlider.vue.d.ts +31 -21
  31. package/dist/esm/v2/components/or-slider-v3/index.js +2 -2
  32. package/dist/esm/v2/components/or-slider-v3/props.d.ts +3 -1
  33. package/dist/esm/v2/index.js +3 -3
  34. package/dist/esm/v3/{OrRangeSlider-1c6ff524.js → OrRangeSlider-cd72332c.js} +187 -27
  35. package/dist/esm/v3/{OrSlider-654bd19f.js → OrSlider-ba7aff7c.js} +104 -14
  36. package/dist/esm/v3/components/index.js +2 -2
  37. package/dist/esm/v3/components/or-range-slider-v3/OrRangeSlider.vue.d.ts +27 -18
  38. package/dist/esm/v3/components/or-range-slider-v3/index.js +2 -2
  39. package/dist/esm/v3/components/or-slider-v3/OrSlider.vue.d.ts +21 -16
  40. package/dist/esm/v3/components/or-slider-v3/index.js +1 -1
  41. package/dist/esm/v3/components/or-slider-v3/props.d.ts +3 -1
  42. package/dist/esm/v3/index.js +2 -2
  43. package/package.json +2 -2
  44. package/src/components/or-range-slider-v3/OrRangeSlider.vue +154 -28
  45. package/src/components/or-range-slider-v3/styles.ts +68 -0
  46. package/src/components/or-slider-v3/OrSlider.vue +66 -14
  47. package/src/components/or-slider-v3/props.ts +2 -0
  48. package/src/components/or-slider-v3/styles.ts +58 -0
@@ -3,19 +3,19 @@ import { RangeSliderColor, RangeSliderOrientation } from './props';
3
3
  declare const _default: import("vue-demi").DefineComponent<{
4
4
  modelValue: {
5
5
  type: PropType<[number, number]>;
6
- default: undefined;
6
+ default: () => undefined;
7
7
  };
8
8
  minValue: {
9
9
  type: NumberConstructor;
10
- default: number;
10
+ default: () => number;
11
11
  };
12
12
  maxValue: {
13
13
  type: NumberConstructor;
14
- default: number;
14
+ default: () => number;
15
15
  };
16
16
  step: {
17
17
  type: NumberConstructor;
18
- default: number;
18
+ default: () => number;
19
19
  };
20
20
  breakpoints: {
21
21
  type: PropType<number[]>;
@@ -26,12 +26,12 @@ declare const _default: import("vue-demi").DefineComponent<{
26
26
  default: () => RangeSliderColor;
27
27
  };
28
28
  orientation: {
29
- type: PropType<"horizontal" | "vertical">;
29
+ type: PropType<"horizontal" | "horizontal-reversed" | "vertical" | "vertical-reversed">;
30
30
  default: () => RangeSliderOrientation;
31
31
  };
32
32
  disabled: {
33
33
  type: BooleanConstructor;
34
- default: boolean;
34
+ default: () => boolean;
35
35
  };
36
36
  }, {
37
37
  root: import("vue-demi").Ref<HTMLElement | undefined>;
@@ -45,19 +45,28 @@ declare const _default: import("vue-demi").DefineComponent<{
45
45
  railStyles: import("vue-demi").ComputedRef<string[]>;
46
46
  offsetStyles: import("vue-demi").ComputedRef<string[]>;
47
47
  offsetComputedStyles: import("vue-demi").ComputedRef<{
48
- [x: string]: string;
49
- }>;
48
+ width: string;
49
+ height?: undefined;
50
+ } | {
51
+ height: string;
52
+ width?: undefined;
53
+ } | undefined>;
50
54
  trackStyles: import("vue-demi").ComputedRef<string[]>;
51
55
  trackComputedStyles: import("vue-demi").ComputedRef<{
52
- [x: string]: string;
53
- }>;
56
+ width: string;
57
+ height?: undefined;
58
+ } | {
59
+ height: string;
60
+ width?: undefined;
61
+ } | undefined>;
54
62
  thumbStyles: import("vue-demi").ComputedRef<string[]>;
55
63
  breakpointMarkStyles: import("vue-demi").ComputedRef<string[]>;
56
64
  labelStyles: import("vue-demi").ComputedRef<string[]>;
57
65
  labelMarkStyles: import("vue-demi").ComputedRef<string[]>;
58
66
  proxyModelValue: import("../../hooks").UseProxyModelValueReturn<[number, number]>;
67
+ tooltipPlacement: import("vue-demi").ComputedRef<"top" | "right" | undefined>;
59
68
  selectedControl: import("vue-demi").Ref<"from" | "to" | undefined>;
60
- getBreakpointOffset: (breakpoint: number) => number;
69
+ getBreakpointMarkComputedStyles: (breakpoint: number) => Partial<CSSStyleDeclaration> | undefined;
61
70
  isHoveringOffset: import("vue-demi").Ref<boolean>;
62
71
  isHoveringTrack: import("vue-demi").Ref<boolean>;
63
72
  isHoveringFiller: import("vue-demi").Ref<boolean>;
@@ -68,19 +77,19 @@ declare const _default: import("vue-demi").DefineComponent<{
68
77
  }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
69
78
  modelValue: {
70
79
  type: PropType<[number, number]>;
71
- default: undefined;
80
+ default: () => undefined;
72
81
  };
73
82
  minValue: {
74
83
  type: NumberConstructor;
75
- default: number;
84
+ default: () => number;
76
85
  };
77
86
  maxValue: {
78
87
  type: NumberConstructor;
79
- default: number;
88
+ default: () => number;
80
89
  };
81
90
  step: {
82
91
  type: NumberConstructor;
83
- default: number;
92
+ default: () => number;
84
93
  };
85
94
  breakpoints: {
86
95
  type: PropType<number[]>;
@@ -91,12 +100,12 @@ declare const _default: import("vue-demi").DefineComponent<{
91
100
  default: () => RangeSliderColor;
92
101
  };
93
102
  orientation: {
94
- type: PropType<"horizontal" | "vertical">;
103
+ type: PropType<"horizontal" | "horizontal-reversed" | "vertical" | "vertical-reversed">;
95
104
  default: () => RangeSliderOrientation;
96
105
  };
97
106
  disabled: {
98
107
  type: BooleanConstructor;
99
- default: boolean;
108
+ default: () => boolean;
100
109
  };
101
110
  }>> & {
102
111
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
@@ -107,7 +116,7 @@ declare const _default: import("vue-demi").DefineComponent<{
107
116
  step: number;
108
117
  breakpoints: number[];
109
118
  color: "primary" | "secondary";
110
- orientation: "horizontal" | "vertical";
119
+ orientation: "horizontal" | "horizontal-reversed" | "vertical" | "vertical-reversed";
111
120
  disabled: boolean;
112
121
  }>;
113
122
  export default _default;
@@ -1,5 +1,5 @@
1
- export { s as OrRangeSliderV3 } from '../../OrRangeSlider-1c6ff524.js';
2
- export { S as RangeSliderColor, a as RangeSliderOrientation } from '../../OrSlider-654bd19f.js';
1
+ export { s as OrRangeSliderV3 } from '../../OrRangeSlider-cd72332c.js';
2
+ export { S as RangeSliderColor, a as RangeSliderOrientation } from '../../OrSlider-ba7aff7c.js';
3
3
  import '@vueuse/core';
4
4
  import 'vue-demi';
5
5
  import '../../dom-aecadd9a.js';
@@ -3,19 +3,19 @@ import { SliderColor, SliderOrientation } from './props';
3
3
  declare const _default: import("vue-demi").DefineComponent<{
4
4
  modelValue: {
5
5
  type: NumberConstructor;
6
- default: undefined;
6
+ default: () => undefined;
7
7
  };
8
8
  minValue: {
9
9
  type: NumberConstructor;
10
- default: number;
10
+ default: () => number;
11
11
  };
12
12
  maxValue: {
13
13
  type: NumberConstructor;
14
- default: number;
14
+ default: () => number;
15
15
  };
16
16
  step: {
17
17
  type: NumberConstructor;
18
- default: number;
18
+ default: () => number;
19
19
  };
20
20
  breakpoints: {
21
21
  type: PropType<number[]>;
@@ -26,12 +26,12 @@ declare const _default: import("vue-demi").DefineComponent<{
26
26
  default: () => SliderColor;
27
27
  };
28
28
  orientation: {
29
- type: PropType<"horizontal" | "vertical">;
29
+ type: PropType<"horizontal" | "horizontal-reversed" | "vertical" | "vertical-reversed">;
30
30
  default: () => SliderOrientation;
31
31
  };
32
32
  disabled: {
33
33
  type: BooleanConstructor;
34
- default: boolean;
34
+ default: () => boolean;
35
35
  };
36
36
  }, {
37
37
  root: import("vue-demi").Ref<HTMLElement | undefined>;
@@ -41,32 +41,37 @@ declare const _default: import("vue-demi").DefineComponent<{
41
41
  railStyles: import("vue-demi").ComputedRef<string[]>;
42
42
  trackStyles: import("vue-demi").ComputedRef<string[]>;
43
43
  trackComputedStyles: import("vue-demi").ComputedRef<{
44
- [x: string]: string;
45
- }>;
44
+ width: string;
45
+ height?: undefined;
46
+ } | {
47
+ height: string;
48
+ width?: undefined;
49
+ } | undefined>;
46
50
  thumbStyles: import("vue-demi").ComputedRef<string[]>;
47
51
  breakpointMarkStyles: import("vue-demi").ComputedRef<string[]>;
48
52
  labelStyles: import("vue-demi").ComputedRef<string[]>;
49
53
  labelMarkStyles: import("vue-demi").ComputedRef<string[]>;
50
54
  proxyModelValue: import("../../hooks").UseProxyModelValueReturn<number>;
51
- getBreakpointOffset: (breakpoint: number) => number;
55
+ tooltipPlacement: import("vue-demi").ComputedRef<"top" | "right" | undefined>;
56
+ getBreakpointMarkComputedStyles: (breakpoint: number) => Partial<CSSStyleDeclaration> | undefined;
52
57
  isHovering: import("vue-demi").Ref<boolean>;
53
58
  isDragging: import("vue-demi").ComputedRef<boolean>;
54
59
  }, unknown, {}, {}, import("vue-demi").ComponentOptionsMixin, import("vue-demi").ComponentOptionsMixin, "update:modelValue"[], "update:modelValue", import("vue-demi").VNodeProps & import("vue-demi").AllowedComponentProps & import("vue-demi").ComponentCustomProps, Readonly<import("vue-demi").ExtractPropTypes<{
55
60
  modelValue: {
56
61
  type: NumberConstructor;
57
- default: undefined;
62
+ default: () => undefined;
58
63
  };
59
64
  minValue: {
60
65
  type: NumberConstructor;
61
- default: number;
66
+ default: () => number;
62
67
  };
63
68
  maxValue: {
64
69
  type: NumberConstructor;
65
- default: number;
70
+ default: () => number;
66
71
  };
67
72
  step: {
68
73
  type: NumberConstructor;
69
- default: number;
74
+ default: () => number;
70
75
  };
71
76
  breakpoints: {
72
77
  type: PropType<number[]>;
@@ -77,12 +82,12 @@ declare const _default: import("vue-demi").DefineComponent<{
77
82
  default: () => SliderColor;
78
83
  };
79
84
  orientation: {
80
- type: PropType<"horizontal" | "vertical">;
85
+ type: PropType<"horizontal" | "horizontal-reversed" | "vertical" | "vertical-reversed">;
81
86
  default: () => SliderOrientation;
82
87
  };
83
88
  disabled: {
84
89
  type: BooleanConstructor;
85
- default: boolean;
90
+ default: () => boolean;
86
91
  };
87
92
  }>> & {
88
93
  "onUpdate:modelValue"?: ((...args: any[]) => any) | undefined;
@@ -93,7 +98,7 @@ declare const _default: import("vue-demi").DefineComponent<{
93
98
  step: number;
94
99
  breakpoints: number[];
95
100
  color: "primary" | "secondary";
96
- orientation: "horizontal" | "vertical";
101
+ orientation: "horizontal" | "horizontal-reversed" | "vertical" | "vertical-reversed";
97
102
  disabled: boolean;
98
103
  }>;
99
104
  export default _default;
@@ -1,4 +1,4 @@
1
- export { s as OrSliderV3, S as SliderColor, a as SliderOrientation } from '../../OrSlider-654bd19f.js';
1
+ export { s as OrSliderV3, S as SliderColor, a as SliderOrientation } from '../../OrSlider-ba7aff7c.js';
2
2
  import '@vueuse/core';
3
3
  import 'vue-demi';
4
4
  import '../../dom-aecadd9a.js';
@@ -4,5 +4,7 @@ export declare enum SliderColor {
4
4
  }
5
5
  export declare enum SliderOrientation {
6
6
  Horizontal = "horizontal",
7
- Vertical = "vertical"
7
+ HorizontalReversed = "horizontal-reversed",
8
+ Vertical = "vertical",
9
+ VerticalReversed = "vertical-reversed"
8
10
  }
@@ -89,8 +89,8 @@ export { s as OrRadio } from './OrRadio-40bf2c87.js';
89
89
  export { s as OrRadioGroup } from './OrRadioGroup-00785e41.js';
90
90
  export { s as OrRadioGroupV3 } from './OrRadioGroup-2aa70aba.js';
91
91
  export { s as OrRadioV3 } from './OrRadio-c6f7ba23.js';
92
- export { s as OrRangeSliderV3 } from './OrRangeSlider-1c6ff524.js';
93
- export { s as OrSliderV3, S as RangeSliderColor, a as RangeSliderOrientation, S as SliderColor, a as SliderOrientation } from './OrSlider-654bd19f.js';
92
+ export { s as OrRangeSliderV3 } from './OrRangeSlider-cd72332c.js';
93
+ export { s as OrSliderV3, S as RangeSliderColor, a as RangeSliderOrientation, S as SliderColor, a as SliderOrientation } from './OrSlider-ba7aff7c.js';
94
94
  export { s as OrRatingV3 } from './OrRating-ec9462c5.js';
95
95
  export { s as OrResizeablePanelV3, R as ResizeablePanelPadding, a as ResizeablePanelPlacement, R as SidebarPadding } from './OrResizeablePanel-ae6a014f.js';
96
96
  export { F as Formats, s as OrRichTextEditorV3 } from './OrRichTextEditor-06c85acf.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onereach/ui-components",
3
- "version": "8.19.5",
3
+ "version": "8.20.0",
4
4
  "npmUnpacked": "4.15.2",
5
5
  "description": "Vue components library for v2/3",
6
6
  "sideEffects": false,
@@ -178,5 +178,5 @@
178
178
  },
179
179
  "./package.json": "./package.json"
180
180
  },
181
- "gitHead": "df3e3b6c62c6f5d0f3e95f096ad5263ba290743d"
181
+ "gitHead": "24dbc34bb789a688730618bdea9715eafcc70310"
182
182
  }
@@ -19,8 +19,8 @@
19
19
  <OrTooltip
20
20
  :class="['relative', 'z-10']"
21
21
  :is-open="(!isDragging && (isHoveringRail || isHoveringThumbFrom)) || (isDragging && selectedControl === 'from')"
22
- :content="String(proxyModelValue[0])"
23
- :placement="orientation === 'horizontal' ? 'top' : 'right'"
22
+ :content="String(proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0])"
23
+ :placement="tooltipPlacement"
24
24
  :offset="24"
25
25
  :external-control="true"
26
26
  >
@@ -41,8 +41,8 @@
41
41
  <OrTooltip
42
42
  :class="['relative', 'z-10']"
43
43
  :is-open="(!isDragging && (isHoveringRail || isHoveringThumbTo)) || (isDragging && selectedControl === 'to')"
44
- :content="String(proxyModelValue[1])"
45
- :placement="orientation === 'horizontal' ? 'top' : 'right'"
44
+ :content="String(proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1])"
45
+ :placement="tooltipPlacement"
46
46
  :offset="24"
47
47
  :external-control="true"
48
48
  >
@@ -63,8 +63,8 @@
63
63
  v-for="breakpoint of breakpoints"
64
64
  :key="breakpoint"
65
65
  :class="breakpointMarkStyles"
66
- :style="{ [orientation === 'horizontal' ? 'left' : 'bottom']: `${getBreakpointOffset(breakpoint) * 100}%` }"
67
- :activated="breakpoint >= proxyModelValue[0] && breakpoint <= proxyModelValue[1]"
66
+ :style="getBreakpointMarkComputedStyles(breakpoint)"
67
+ :activated="breakpoint >= proxyModelValue[orientation.endsWith('-reversed') ? 1 : 0] && breakpoint <= proxyModelValue[orientation.endsWith('-reversed') ? 0 : 1]"
68
68
  :disabled="disabled"
69
69
  />
70
70
  </div>
@@ -104,22 +104,22 @@ export default defineComponent({
104
104
  props: {
105
105
  modelValue: {
106
106
  type: Object as PropType<[number, number]>,
107
- default: undefined,
107
+ default: () => undefined,
108
108
  },
109
109
 
110
110
  minValue: {
111
111
  type: Number,
112
- default: 0,
112
+ default: () => 0,
113
113
  },
114
114
 
115
115
  maxValue: {
116
116
  type: Number,
117
- default: 100,
117
+ default: () => 100,
118
118
  },
119
119
 
120
120
  step: {
121
121
  type: Number,
122
- default: 1,
122
+ default: () => 1,
123
123
  },
124
124
 
125
125
  breakpoints: {
@@ -139,7 +139,7 @@ export default defineComponent({
139
139
 
140
140
  disabled: {
141
141
  type: Boolean,
142
- default: false,
142
+ default: () => false,
143
143
  },
144
144
  },
145
145
 
@@ -179,18 +179,34 @@ export default defineComponent({
179
179
  ...RangeSliderOffsetOrientations[props.orientation],
180
180
  ]);
181
181
 
182
- const offsetComputedStyles = computed(() => ({
183
- [props.orientation === RangeSliderOrientation.Horizontal ? 'width' : 'height']: `${internalModelValueFrom.value * 100}%`,
184
- }));
182
+ const offsetComputedStyles = computed(() => {
183
+ switch (props.orientation) {
184
+ case RangeSliderOrientation.Horizontal:
185
+ case RangeSliderOrientation.HorizontalReversed:
186
+ return { width: `${internalModelValueFrom.value * 100}%` };
187
+
188
+ case RangeSliderOrientation.Vertical:
189
+ case RangeSliderOrientation.VerticalReversed:
190
+ return { height: `${internalModelValueFrom.value * 100}%` };
191
+ }
192
+ });
185
193
 
186
194
  const trackStyles = computed(() => [
187
195
  ...RangeSliderTrack,
188
196
  ...RangeSliderTrackColors[props.color],
189
197
  ]);
190
198
 
191
- const trackComputedStyles = computed(() => ({
192
- [props.orientation === RangeSliderOrientation.Horizontal ? 'width' : 'height']: `${(internalModelValueTo.value - internalModelValueFrom.value) * 100}%`,
193
- }));
199
+ const trackComputedStyles = computed(() => {
200
+ switch (props.orientation) {
201
+ case RangeSliderOrientation.Horizontal:
202
+ case RangeSliderOrientation.HorizontalReversed:
203
+ return { width: `${(internalModelValueTo.value - internalModelValueFrom.value) * 100}%` };
204
+
205
+ case RangeSliderOrientation.Vertical:
206
+ case RangeSliderOrientation.VerticalReversed:
207
+ return { height: `${(internalModelValueTo.value - internalModelValueFrom.value) * 100}%` };
208
+ }
209
+ });
194
210
 
195
211
  const thumbStyles = computed(() => [
196
212
  'or-range-slider-thumb-v3',
@@ -219,37 +235,89 @@ export default defineComponent({
219
235
 
220
236
  const internalModelValueFrom = computed({
221
237
  get: () => {
222
- return (proxyModelValue.value[0] - props.minValue) / (props.maxValue - props.minValue);
238
+ let modelValue = 0;
239
+
240
+ switch (props.orientation) {
241
+ case RangeSliderOrientation.Horizontal:
242
+ case RangeSliderOrientation.Vertical:
243
+ modelValue = proxyModelValue.value[0];
244
+ break;
245
+
246
+ case RangeSliderOrientation.HorizontalReversed:
247
+ case RangeSliderOrientation.VerticalReversed:
248
+ modelValue = proxyModelValue.value[1];
249
+ break;
250
+ }
251
+
252
+ return (modelValue - props.minValue) / (props.maxValue - props.minValue);
223
253
  },
224
254
 
225
255
  set: (value) => {
226
256
  const modelValue = value * (props.maxValue - props.minValue) + props.minValue;
227
257
 
228
- proxyModelValue.value = [
258
+ const draftProxyModelValue = [
229
259
  internalBreakpoints.value.reduce((a, b) => {
230
260
  return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;
231
261
  }),
232
262
 
233
263
  internalModelValueTo.value * (props.maxValue - props.minValue) + props.minValue,
234
264
  ];
265
+
266
+ switch (props.orientation) {
267
+ case RangeSliderOrientation.Horizontal:
268
+ case RangeSliderOrientation.Vertical:
269
+ proxyModelValue.value = draftProxyModelValue as [number, number];
270
+ break;
271
+
272
+ case RangeSliderOrientation.HorizontalReversed:
273
+ case RangeSliderOrientation.VerticalReversed:
274
+ proxyModelValue.value = draftProxyModelValue.reverse() as [number, number];
275
+ break;
276
+ }
235
277
  },
236
278
  });
237
279
 
238
280
  const internalModelValueTo = computed({
239
281
  get: () => {
240
- return (proxyModelValue.value[1] - props.minValue) / (props.maxValue - props.minValue);
282
+ let modelValue = 0;
283
+
284
+ switch (props.orientation) {
285
+ case RangeSliderOrientation.Horizontal:
286
+ case RangeSliderOrientation.Vertical:
287
+ modelValue = proxyModelValue.value[1];
288
+ break;
289
+
290
+ case RangeSliderOrientation.HorizontalReversed:
291
+ case RangeSliderOrientation.VerticalReversed:
292
+ modelValue = proxyModelValue.value[0];
293
+ break;
294
+ }
295
+
296
+ return (modelValue - props.minValue) / (props.maxValue - props.minValue);
241
297
  },
242
298
 
243
299
  set: (value) => {
244
300
  const modelValue = value * (props.maxValue - props.minValue) + props.minValue;
245
301
 
246
- proxyModelValue.value = [
302
+ const draftProxyModelValue = [
247
303
  internalModelValueFrom.value * (props.maxValue - props.minValue) + props.minValue,
248
304
 
249
305
  internalBreakpoints.value.reduce((a, b) => {
250
306
  return Math.abs(a - modelValue) < Math.abs(b - modelValue) ? a : b;
251
307
  }),
252
308
  ];
309
+
310
+ switch (props.orientation) {
311
+ case RangeSliderOrientation.Horizontal:
312
+ case RangeSliderOrientation.Vertical:
313
+ proxyModelValue.value = draftProxyModelValue as [number, number];
314
+ break;
315
+
316
+ case RangeSliderOrientation.HorizontalReversed:
317
+ case RangeSliderOrientation.VerticalReversed:
318
+ proxyModelValue.value = draftProxyModelValue.reverse() as [number, number];
319
+ break;
320
+ }
253
321
  },
254
322
  });
255
323
 
@@ -267,6 +335,18 @@ export default defineComponent({
267
335
 
268
336
  const railBoundingBox = useElementBounding(rail);
269
337
 
338
+ const tooltipPlacement = computed(() => {
339
+ switch (props.orientation) {
340
+ case RangeSliderOrientation.Horizontal:
341
+ case RangeSliderOrientation.HorizontalReversed:
342
+ return 'top';
343
+
344
+ case RangeSliderOrientation.Vertical:
345
+ case RangeSliderOrientation.VerticalReversed:
346
+ return 'right';
347
+ }
348
+ });
349
+
270
350
  const selectedControl = ref<'from' | 'to'>();
271
351
 
272
352
  // Handlers
@@ -279,17 +359,62 @@ export default defineComponent({
279
359
  const totalHeight = railBoundingBox.height.value;
280
360
 
281
361
  if (selectedControl.value === 'from') {
282
- internalModelValueFrom.value = props.orientation === RangeSliderOrientation.Horizontal
283
- ? clamp(event.clientX - railBoundingBox.left.value, 0, internalModelValueTo.value * totalWidth) / totalWidth
284
- : clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, internalModelValueTo.value * totalHeight) / totalHeight;
362
+ switch (props.orientation) {
363
+ case RangeSliderOrientation.Horizontal:
364
+ internalModelValueFrom.value = clamp(event.clientX - railBoundingBox.left.value, 0, internalModelValueTo.value * totalWidth) / totalWidth;
365
+ break;
366
+
367
+ case RangeSliderOrientation.HorizontalReversed:
368
+ internalModelValueFrom.value = clamp(railBoundingBox.right.value - event.clientX, 0, internalModelValueTo.value * totalWidth) / totalWidth;
369
+ break;
370
+
371
+ case RangeSliderOrientation.Vertical:
372
+ internalModelValueFrom.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), 0, internalModelValueTo.value * totalHeight) / totalHeight;
373
+ break;
374
+
375
+ case RangeSliderOrientation.VerticalReversed:
376
+ internalModelValueFrom.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), 0, internalModelValueTo.value * totalHeight) / totalHeight;
377
+ break;
378
+ }
285
379
  } else {
286
- internalModelValueTo.value = props.orientation === RangeSliderOrientation.Horizontal
287
- ? clamp(event.clientX - railBoundingBox.left.value, internalModelValueFrom.value * totalWidth, totalWidth) / totalWidth
288
- : clamp(totalHeight - (event.clientY - railBoundingBox.top.value), internalModelValueFrom.value * totalHeight, totalHeight) / totalHeight;
380
+ switch (props.orientation) {
381
+ case RangeSliderOrientation.Horizontal:
382
+ internalModelValueTo.value = clamp(event.clientX - railBoundingBox.left.value, internalModelValueFrom.value * totalWidth, totalWidth) / totalWidth;
383
+ break;
384
+
385
+ case RangeSliderOrientation.HorizontalReversed:
386
+ internalModelValueTo.value = clamp(railBoundingBox.right.value - event.clientX, internalModelValueFrom.value * totalWidth, totalWidth) / totalWidth;
387
+ break;
388
+
389
+ case RangeSliderOrientation.Vertical:
390
+ internalModelValueTo.value = clamp(totalHeight - (event.clientY - railBoundingBox.top.value), internalModelValueFrom.value * totalHeight, totalHeight) / totalHeight;
391
+ break;
392
+
393
+ case RangeSliderOrientation.VerticalReversed:
394
+ internalModelValueTo.value = clamp(totalHeight - (railBoundingBox.bottom.value - event.clientY), internalModelValueFrom.value * totalHeight, totalHeight) / totalHeight;
395
+ break;
396
+ }
289
397
  }
290
398
  }
291
399
 
292
400
  // Methods
401
+ function getBreakpointMarkComputedStyles(breakpoint: number): Partial<CSSStyleDeclaration> | undefined {
402
+ switch (props.orientation) {
403
+ case RangeSliderOrientation.Horizontal:
404
+ return { left: `${getBreakpointOffset(breakpoint) * 100}%` };
405
+
406
+ case RangeSliderOrientation.HorizontalReversed:
407
+ return { right: `${getBreakpointOffset(breakpoint) * 100}%` };
408
+
409
+ case RangeSliderOrientation.Vertical:
410
+ return { bottom: `${getBreakpointOffset(breakpoint) * 100}%` };
411
+
412
+ case RangeSliderOrientation.VerticalReversed:
413
+ return { top: `${getBreakpointOffset(breakpoint) * 100}%` };
414
+ }
415
+ }
416
+
417
+ // Helpers
293
418
  function getBreakpointOffset(breakpoint: number): number {
294
419
  return (breakpoint - props.minValue) / (props.maxValue - props.minValue);
295
420
  }
@@ -361,9 +486,10 @@ export default defineComponent({
361
486
  labelMarkStyles,
362
487
 
363
488
  proxyModelValue,
489
+ tooltipPlacement,
364
490
  selectedControl,
365
491
 
366
- getBreakpointOffset,
492
+ getBreakpointMarkComputedStyles,
367
493
 
368
494
  isHoveringOffset,
369
495
  isHoveringTrack,