mithril-materialized 2.0.0-beta.12 → 2.0.0-beta.14

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.
package/README.md CHANGED
@@ -54,7 +54,7 @@ Your CSS imports can remain the same, but you no longer need the materialize-css
54
54
  - EmailInput
55
55
  - NumberInput
56
56
  - ColorInput
57
- - RangeInput
57
+ - RangeInput (with vertical and double-thumb support)
58
58
  - Chips
59
59
  - [Pickers](https://erikvullings.github.io/mithril-materialized/#!/pickers)
60
60
  - DatePicker (with optional week numbers)
@@ -117,6 +117,7 @@ Your CSS imports can remain the same, but you no longer need the materialize-css
117
117
  import {
118
118
  TextInput,
119
119
  Button,
120
+ RangeInput,
120
121
  DatePicker,
121
122
  DataTable,
122
123
  TreeView,
@@ -150,6 +151,38 @@ Your CSS imports can remain the same, but you no longer need the materialize-css
150
151
  label: 'Your name',
151
152
  onchange: (value) => console.log(value)
152
153
  }),
154
+
155
+ // Enhanced range sliders
156
+ m(RangeInput, {
157
+ label: 'Volume',
158
+ min: 0,
159
+ max: 100,
160
+ showValue: true,
161
+ onchange: (value) => console.log('Volume:', value)
162
+ }),
163
+
164
+ m(RangeInput, {
165
+ label: 'Price Range',
166
+ min: 0,
167
+ max: 1000,
168
+ minmax: true,
169
+ minValue: 100,
170
+ maxValue: 500,
171
+ showValue: true,
172
+ onchange: (min, max) => console.log('Range:', min, '-', max)
173
+ }),
174
+
175
+ m(RangeInput, {
176
+ label: 'Vertical Slider',
177
+ min: 0,
178
+ max: 100,
179
+ vertical: true,
180
+ height: '200px',
181
+ showValue: true,
182
+ tooltipPos: 'right',
183
+ onchange: (value) => console.log('Vertical:', value)
184
+ }),
185
+
153
186
  m(Button, {
154
187
  label: 'Submit',
155
188
  onclick: () => alert('Hello!')
@@ -214,6 +247,7 @@ See the [live documentation](https://erikvullings.github.io/mithril-materialized
214
247
  - ✅ TreeView component for hierarchical data with expand/collapse, selection, and VSCode-style connectors
215
248
  - ✅ Enhanced TypeScript definitions with better JSDoc comments
216
249
  - ✅ Performance optimizations and bundle size improvements
250
+ - ✅ Enhanced RangeInput with vertical orientation and double-thumb range selection
217
251
 
218
252
  ### 🎯 Phase 2: Advanced Components & Features
219
253
 
package/dist/forms.css CHANGED
@@ -1929,6 +1929,331 @@ input[type=range]::-ms-thumb {
1929
1929
  box-shadow: 0 0 0 10px rgba(38, 166, 154, 0.26);
1930
1930
  }
1931
1931
 
1932
+ /* Enhanced Range Sliders
1933
+ ========================================================================== */
1934
+ .range-slider.vertical {
1935
+ -webkit-appearance: none;
1936
+ appearance: none;
1937
+ writing-mode: vertical-lr;
1938
+ direction: rtl;
1939
+ width: 6px;
1940
+ transform: none;
1941
+ }
1942
+ .range-slider.vertical::-webkit-slider-runnable-track {
1943
+ width: 6px;
1944
+ height: 100%;
1945
+ }
1946
+ .range-slider.vertical::-webkit-slider-thumb {
1947
+ -webkit-appearance: none;
1948
+ width: 14px;
1949
+ height: 14px;
1950
+ margin-left: -4px;
1951
+ margin-top: 0;
1952
+ }
1953
+ .range-slider.vertical::-moz-range-track {
1954
+ width: 6px;
1955
+ height: 100%;
1956
+ }
1957
+ .range-slider.vertical::-moz-range-thumb {
1958
+ width: 14px;
1959
+ height: 14px;
1960
+ margin-left: -12px;
1961
+ margin-top: 0;
1962
+ }
1963
+ .range-slider.disabled {
1964
+ opacity: 0.6;
1965
+ cursor: not-allowed;
1966
+ }
1967
+ .range-slider.disabled::-webkit-slider-thumb {
1968
+ cursor: not-allowed;
1969
+ }
1970
+ .range-slider.disabled::-moz-range-thumb {
1971
+ cursor: not-allowed;
1972
+ }
1973
+
1974
+ .single-range-slider {
1975
+ outline: none;
1976
+ }
1977
+ .single-range-slider.horizontal {
1978
+ height: 40px;
1979
+ position: relative;
1980
+ display: flex;
1981
+ align-items: center;
1982
+ }
1983
+ .single-range-slider.vertical {
1984
+ width: 40px;
1985
+ position: relative;
1986
+ display: flex;
1987
+ flex-direction: column;
1988
+ align-items: center;
1989
+ height: 100%;
1990
+ }
1991
+ .single-range-slider .track {
1992
+ background-color: var(--mm-border-color, #c2c0c2);
1993
+ border-radius: 2px;
1994
+ }
1995
+ .single-range-slider .track.horizontal {
1996
+ position: absolute;
1997
+ top: 25%;
1998
+ left: 0;
1999
+ transform: translateY(-50%);
2000
+ width: 100%;
2001
+ height: 4px;
2002
+ }
2003
+ .single-range-slider .track.vertical {
2004
+ position: absolute;
2005
+ bottom: 10px;
2006
+ width: 4px;
2007
+ height: 100%;
2008
+ }
2009
+ .single-range-slider .range-progress {
2010
+ background-color: var(--mm-primary-color, #26a69a);
2011
+ border-radius: 2px;
2012
+ }
2013
+ .single-range-slider .range-progress.horizontal {
2014
+ position: absolute;
2015
+ top: 25%;
2016
+ transform: translateY(-50%);
2017
+ height: 4px;
2018
+ }
2019
+ .single-range-slider .range-progress.vertical {
2020
+ position: absolute;
2021
+ bottom: 10px;
2022
+ width: 4px;
2023
+ }
2024
+ .single-range-slider .thumb {
2025
+ background-color: var(--mm-primary-color, #26a69a);
2026
+ transition: transform 0.1s ease, box-shadow 0.1s ease;
2027
+ width: 20px;
2028
+ height: 20px;
2029
+ border-radius: 50%;
2030
+ cursor: pointer;
2031
+ outline: none;
2032
+ }
2033
+ .single-range-slider .thumb.horizontal {
2034
+ position: absolute;
2035
+ transform: translateY(-50%);
2036
+ }
2037
+ .single-range-slider .thumb.vertical {
2038
+ position: absolute;
2039
+ }
2040
+ .single-range-slider .thumb:hover {
2041
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
2042
+ }
2043
+ .single-range-slider .thumb .value-tooltip {
2044
+ position: absolute;
2045
+ background: var(--mm-primary-color, #26a69a);
2046
+ color: white;
2047
+ padding: 4px 8px;
2048
+ border-radius: 4px;
2049
+ font-size: 12px;
2050
+ white-space: nowrap;
2051
+ min-width: 24px;
2052
+ text-align: center;
2053
+ pointer-events: none;
2054
+ z-index: 20;
2055
+ }
2056
+ .single-range-slider .thumb .value-tooltip.top {
2057
+ bottom: 100%;
2058
+ left: 50%;
2059
+ transform: translateX(-50%);
2060
+ margin-bottom: 8px;
2061
+ }
2062
+ .single-range-slider .thumb .value-tooltip.top::after {
2063
+ content: "";
2064
+ position: absolute;
2065
+ top: 100%;
2066
+ left: 50%;
2067
+ transform: translateX(-50%);
2068
+ border: 4px solid transparent;
2069
+ border-top-color: var(--mm-primary-color, #26a69a);
2070
+ }
2071
+ .single-range-slider .thumb .value-tooltip.bottom {
2072
+ top: 100%;
2073
+ left: 50%;
2074
+ transform: translateX(-50%);
2075
+ margin-top: 8px;
2076
+ }
2077
+ .single-range-slider .thumb .value-tooltip.bottom::after {
2078
+ content: "";
2079
+ position: absolute;
2080
+ bottom: 100%;
2081
+ left: 50%;
2082
+ transform: translateX(-50%);
2083
+ border: 4px solid transparent;
2084
+ border-bottom-color: var(--mm-primary-color, #26a69a);
2085
+ }
2086
+ .single-range-slider .thumb .value-tooltip.left {
2087
+ right: 100%;
2088
+ top: 50%;
2089
+ transform: translateY(-50%);
2090
+ margin-right: 8px;
2091
+ }
2092
+ .single-range-slider .thumb .value-tooltip.left::after {
2093
+ content: "";
2094
+ position: absolute;
2095
+ top: 50%;
2096
+ left: 100%;
2097
+ transform: translateY(-50%);
2098
+ border: 4px solid transparent;
2099
+ border-left-color: var(--mm-primary-color, #26a69a);
2100
+ }
2101
+ .single-range-slider .thumb .value-tooltip.right {
2102
+ left: 100%;
2103
+ top: 50%;
2104
+ transform: translateY(-50%);
2105
+ margin-left: 8px;
2106
+ }
2107
+ .single-range-slider .thumb .value-tooltip.right::after {
2108
+ content: "";
2109
+ position: absolute;
2110
+ top: 50%;
2111
+ right: 100%;
2112
+ transform: translateY(-50%);
2113
+ border: 4px solid transparent;
2114
+ border-right-color: var(--mm-primary-color, #26a69a);
2115
+ }
2116
+ .single-range-slider:focus .thumb, .single-range-slider:focus-visible .thumb {
2117
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.2);
2118
+ }
2119
+ .single-range-slider:focus .thumb:hover, .single-range-slider:focus-visible .thumb:hover {
2120
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.3);
2121
+ }
2122
+
2123
+ .double-range-slider {
2124
+ outline: none;
2125
+ border-radius: 4px;
2126
+ }
2127
+ .double-range-slider.horizontal {
2128
+ height: 40px;
2129
+ position: relative;
2130
+ display: flex;
2131
+ align-items: center;
2132
+ }
2133
+ .double-range-slider.vertical {
2134
+ width: 40px;
2135
+ position: relative;
2136
+ display: flex;
2137
+ flex-direction: column;
2138
+ align-items: center;
2139
+ }
2140
+ .double-range-slider .track {
2141
+ background-color: var(--mm-border-color, #c2c0c2);
2142
+ border-radius: 2px;
2143
+ }
2144
+ .double-range-slider .track.horizontal {
2145
+ position: absolute;
2146
+ top: 50%;
2147
+ left: 0;
2148
+ transform: translateY(-50%);
2149
+ width: 100%;
2150
+ height: 4px;
2151
+ }
2152
+ .double-range-slider .track.vertical {
2153
+ position: absolute;
2154
+ left: 50%;
2155
+ top: 0;
2156
+ transform: translateX(-50%);
2157
+ width: 4px;
2158
+ height: 100%;
2159
+ }
2160
+ .double-range-slider .range {
2161
+ background-color: var(--mm-primary-color, #26a69a);
2162
+ border-radius: 2px;
2163
+ }
2164
+ .double-range-slider .range.horizontal {
2165
+ position: absolute;
2166
+ top: 50%;
2167
+ transform: translateY(-50%);
2168
+ height: 4px;
2169
+ }
2170
+ .double-range-slider .range.vertical {
2171
+ position: absolute;
2172
+ left: 50%;
2173
+ transform: translateX(-50%);
2174
+ width: 4px;
2175
+ }
2176
+ .double-range-slider .thumb {
2177
+ background-color: var(--mm-primary-color, #26a69a);
2178
+ transition: transform 0.1s ease, box-shadow 0.1s ease;
2179
+ width: 20px;
2180
+ height: 20px;
2181
+ border-radius: 50%;
2182
+ cursor: pointer;
2183
+ outline: none;
2184
+ }
2185
+ .double-range-slider .thumb.horizontal {
2186
+ position: absolute;
2187
+ top: 50%;
2188
+ transform: translateY(-50%);
2189
+ }
2190
+ .double-range-slider .thumb.vertical {
2191
+ position: absolute;
2192
+ left: 50%;
2193
+ transform: translateX(-50%);
2194
+ }
2195
+ .double-range-slider .thumb:hover {
2196
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
2197
+ }
2198
+ .double-range-slider .thumb .value {
2199
+ position: absolute;
2200
+ background: var(--mm-primary-color, #26a69a);
2201
+ color: white;
2202
+ padding: 2px 6px;
2203
+ border-radius: 4px;
2204
+ font-size: 12px;
2205
+ white-space: nowrap;
2206
+ min-width: 24px;
2207
+ text-align: center;
2208
+ pointer-events: none;
2209
+ z-index: 20;
2210
+ }
2211
+ .double-range-slider .thumb .value.horizontal {
2212
+ top: -30px;
2213
+ left: 50%;
2214
+ transform: translateX(-50%);
2215
+ }
2216
+ .double-range-slider .thumb .value.horizontal::after {
2217
+ content: "";
2218
+ position: absolute;
2219
+ top: 100%;
2220
+ left: 50%;
2221
+ transform: translateX(-50%);
2222
+ border: 4px solid transparent;
2223
+ border-top-color: var(--mm-primary-color, #26a69a);
2224
+ }
2225
+ .double-range-slider .thumb .value.vertical {
2226
+ top: 50%;
2227
+ left: -35px;
2228
+ transform: translateY(-50%);
2229
+ }
2230
+ .double-range-slider .thumb .value.vertical::after {
2231
+ content: "";
2232
+ position: absolute;
2233
+ top: 50%;
2234
+ left: 100%;
2235
+ transform: translateY(-50%);
2236
+ border: 4px solid transparent;
2237
+ border-left-color: var(--mm-primary-color, #26a69a);
2238
+ }
2239
+ .double-range-slider:focus .thumb.min-thumb.active, .double-range-slider:focus .thumb.max-thumb.active, .double-range-slider:focus-visible .thumb.min-thumb.active, .double-range-slider:focus-visible .thumb.max-thumb.active {
2240
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.2);
2241
+ }
2242
+ .double-range-slider:focus .thumb.min-thumb.active:hover, .double-range-slider:focus .thumb.max-thumb.active:hover, .double-range-slider:focus-visible .thumb.min-thumb.active:hover, .double-range-slider:focus-visible .thumb.max-thumb.active:hover {
2243
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.3);
2244
+ }
2245
+
2246
+ .range-field.vertical {
2247
+ display: flex;
2248
+ flex-direction: column;
2249
+ align-items: center;
2250
+ min-height: 100px;
2251
+ padding-top: 20px;
2252
+ }
2253
+ .range-field.vertical .double-range-slider {
2254
+ height: 100%;
2255
+ }
2256
+
1932
2257
  /* File Input
1933
2258
  ========================================================================== */
1934
2259
  .file-field {
package/dist/index.css CHANGED
@@ -7063,6 +7063,332 @@ label {
7063
7063
  color: #9e9e9e;
7064
7064
  }
7065
7065
 
7066
+ /* Enhanced Range Sliders
7067
+ ========================================================================== */
7068
+ .range-slider.vertical {
7069
+ -webkit-appearance: none;
7070
+ -moz-appearance: none;
7071
+ appearance: none;
7072
+ writing-mode: vertical-lr;
7073
+ direction: rtl;
7074
+ width: 6px;
7075
+ transform: none;
7076
+ }
7077
+ .range-slider.vertical::-webkit-slider-runnable-track {
7078
+ width: 6px;
7079
+ height: 100%;
7080
+ }
7081
+ .range-slider.vertical::-webkit-slider-thumb {
7082
+ -webkit-appearance: none;
7083
+ width: 14px;
7084
+ height: 14px;
7085
+ margin-left: -4px;
7086
+ margin-top: 0;
7087
+ }
7088
+ .range-slider.vertical::-moz-range-track {
7089
+ width: 6px;
7090
+ height: 100%;
7091
+ }
7092
+ .range-slider.vertical::-moz-range-thumb {
7093
+ width: 14px;
7094
+ height: 14px;
7095
+ margin-left: -12px;
7096
+ margin-top: 0;
7097
+ }
7098
+ .range-slider.disabled {
7099
+ opacity: 0.6;
7100
+ cursor: not-allowed;
7101
+ }
7102
+ .range-slider.disabled::-webkit-slider-thumb {
7103
+ cursor: not-allowed;
7104
+ }
7105
+ .range-slider.disabled::-moz-range-thumb {
7106
+ cursor: not-allowed;
7107
+ }
7108
+
7109
+ .single-range-slider {
7110
+ outline: none;
7111
+ }
7112
+ .single-range-slider.horizontal {
7113
+ height: 40px;
7114
+ position: relative;
7115
+ display: flex;
7116
+ align-items: center;
7117
+ }
7118
+ .single-range-slider.vertical {
7119
+ width: 40px;
7120
+ position: relative;
7121
+ display: flex;
7122
+ flex-direction: column;
7123
+ align-items: center;
7124
+ height: 100%;
7125
+ }
7126
+ .single-range-slider .track {
7127
+ background-color: var(--mm-border-color, #c2c0c2);
7128
+ border-radius: 2px;
7129
+ }
7130
+ .single-range-slider .track.horizontal {
7131
+ position: absolute;
7132
+ top: 25%;
7133
+ left: 0;
7134
+ transform: translateY(-50%);
7135
+ width: 100%;
7136
+ height: 4px;
7137
+ }
7138
+ .single-range-slider .track.vertical {
7139
+ position: absolute;
7140
+ bottom: 10px;
7141
+ width: 4px;
7142
+ height: 100%;
7143
+ }
7144
+ .single-range-slider .range-progress {
7145
+ background-color: var(--mm-primary-color, #26a69a);
7146
+ border-radius: 2px;
7147
+ }
7148
+ .single-range-slider .range-progress.horizontal {
7149
+ position: absolute;
7150
+ top: 25%;
7151
+ transform: translateY(-50%);
7152
+ height: 4px;
7153
+ }
7154
+ .single-range-slider .range-progress.vertical {
7155
+ position: absolute;
7156
+ bottom: 10px;
7157
+ width: 4px;
7158
+ }
7159
+ .single-range-slider .thumb {
7160
+ background-color: var(--mm-primary-color, #26a69a);
7161
+ transition: transform 0.1s ease, box-shadow 0.1s ease;
7162
+ width: 20px;
7163
+ height: 20px;
7164
+ border-radius: 50%;
7165
+ cursor: pointer;
7166
+ outline: none;
7167
+ }
7168
+ .single-range-slider .thumb.horizontal {
7169
+ position: absolute;
7170
+ transform: translateY(-50%);
7171
+ }
7172
+ .single-range-slider .thumb.vertical {
7173
+ position: absolute;
7174
+ }
7175
+ .single-range-slider .thumb:hover {
7176
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
7177
+ }
7178
+ .single-range-slider .thumb .value-tooltip {
7179
+ position: absolute;
7180
+ background: var(--mm-primary-color, #26a69a);
7181
+ color: white;
7182
+ padding: 4px 8px;
7183
+ border-radius: 4px;
7184
+ font-size: 12px;
7185
+ white-space: nowrap;
7186
+ min-width: 24px;
7187
+ text-align: center;
7188
+ pointer-events: none;
7189
+ z-index: 20;
7190
+ }
7191
+ .single-range-slider .thumb .value-tooltip.top {
7192
+ bottom: 100%;
7193
+ left: 50%;
7194
+ transform: translateX(-50%);
7195
+ margin-bottom: 8px;
7196
+ }
7197
+ .single-range-slider .thumb .value-tooltip.top::after {
7198
+ content: "";
7199
+ position: absolute;
7200
+ top: 100%;
7201
+ left: 50%;
7202
+ transform: translateX(-50%);
7203
+ border: 4px solid transparent;
7204
+ border-top-color: var(--mm-primary-color, #26a69a);
7205
+ }
7206
+ .single-range-slider .thumb .value-tooltip.bottom {
7207
+ top: 100%;
7208
+ left: 50%;
7209
+ transform: translateX(-50%);
7210
+ margin-top: 8px;
7211
+ }
7212
+ .single-range-slider .thumb .value-tooltip.bottom::after {
7213
+ content: "";
7214
+ position: absolute;
7215
+ bottom: 100%;
7216
+ left: 50%;
7217
+ transform: translateX(-50%);
7218
+ border: 4px solid transparent;
7219
+ border-bottom-color: var(--mm-primary-color, #26a69a);
7220
+ }
7221
+ .single-range-slider .thumb .value-tooltip.left {
7222
+ right: 100%;
7223
+ top: 50%;
7224
+ transform: translateY(-50%);
7225
+ margin-right: 8px;
7226
+ }
7227
+ .single-range-slider .thumb .value-tooltip.left::after {
7228
+ content: "";
7229
+ position: absolute;
7230
+ top: 50%;
7231
+ left: 100%;
7232
+ transform: translateY(-50%);
7233
+ border: 4px solid transparent;
7234
+ border-left-color: var(--mm-primary-color, #26a69a);
7235
+ }
7236
+ .single-range-slider .thumb .value-tooltip.right {
7237
+ left: 100%;
7238
+ top: 50%;
7239
+ transform: translateY(-50%);
7240
+ margin-left: 8px;
7241
+ }
7242
+ .single-range-slider .thumb .value-tooltip.right::after {
7243
+ content: "";
7244
+ position: absolute;
7245
+ top: 50%;
7246
+ right: 100%;
7247
+ transform: translateY(-50%);
7248
+ border: 4px solid transparent;
7249
+ border-right-color: var(--mm-primary-color, #26a69a);
7250
+ }
7251
+ .single-range-slider:focus .thumb, .single-range-slider:focus-visible .thumb {
7252
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.2);
7253
+ }
7254
+ .single-range-slider:focus .thumb:hover, .single-range-slider:focus-visible .thumb:hover {
7255
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.3);
7256
+ }
7257
+
7258
+ .double-range-slider {
7259
+ outline: none;
7260
+ border-radius: 4px;
7261
+ }
7262
+ .double-range-slider.horizontal {
7263
+ height: 40px;
7264
+ position: relative;
7265
+ display: flex;
7266
+ align-items: center;
7267
+ }
7268
+ .double-range-slider.vertical {
7269
+ width: 40px;
7270
+ position: relative;
7271
+ display: flex;
7272
+ flex-direction: column;
7273
+ align-items: center;
7274
+ }
7275
+ .double-range-slider .track {
7276
+ background-color: var(--mm-border-color, #c2c0c2);
7277
+ border-radius: 2px;
7278
+ }
7279
+ .double-range-slider .track.horizontal {
7280
+ position: absolute;
7281
+ top: 50%;
7282
+ left: 0;
7283
+ transform: translateY(-50%);
7284
+ width: 100%;
7285
+ height: 4px;
7286
+ }
7287
+ .double-range-slider .track.vertical {
7288
+ position: absolute;
7289
+ left: 50%;
7290
+ top: 0;
7291
+ transform: translateX(-50%);
7292
+ width: 4px;
7293
+ height: 100%;
7294
+ }
7295
+ .double-range-slider .range {
7296
+ background-color: var(--mm-primary-color, #26a69a);
7297
+ border-radius: 2px;
7298
+ }
7299
+ .double-range-slider .range.horizontal {
7300
+ position: absolute;
7301
+ top: 50%;
7302
+ transform: translateY(-50%);
7303
+ height: 4px;
7304
+ }
7305
+ .double-range-slider .range.vertical {
7306
+ position: absolute;
7307
+ left: 50%;
7308
+ transform: translateX(-50%);
7309
+ width: 4px;
7310
+ }
7311
+ .double-range-slider .thumb {
7312
+ background-color: var(--mm-primary-color, #26a69a);
7313
+ transition: transform 0.1s ease, box-shadow 0.1s ease;
7314
+ width: 20px;
7315
+ height: 20px;
7316
+ border-radius: 50%;
7317
+ cursor: pointer;
7318
+ outline: none;
7319
+ }
7320
+ .double-range-slider .thumb.horizontal {
7321
+ position: absolute;
7322
+ top: 50%;
7323
+ transform: translateY(-50%);
7324
+ }
7325
+ .double-range-slider .thumb.vertical {
7326
+ position: absolute;
7327
+ left: 50%;
7328
+ transform: translateX(-50%);
7329
+ }
7330
+ .double-range-slider .thumb:hover {
7331
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3);
7332
+ }
7333
+ .double-range-slider .thumb .value {
7334
+ position: absolute;
7335
+ background: var(--mm-primary-color, #26a69a);
7336
+ color: white;
7337
+ padding: 2px 6px;
7338
+ border-radius: 4px;
7339
+ font-size: 12px;
7340
+ white-space: nowrap;
7341
+ min-width: 24px;
7342
+ text-align: center;
7343
+ pointer-events: none;
7344
+ z-index: 20;
7345
+ }
7346
+ .double-range-slider .thumb .value.horizontal {
7347
+ top: -30px;
7348
+ left: 50%;
7349
+ transform: translateX(-50%);
7350
+ }
7351
+ .double-range-slider .thumb .value.horizontal::after {
7352
+ content: "";
7353
+ position: absolute;
7354
+ top: 100%;
7355
+ left: 50%;
7356
+ transform: translateX(-50%);
7357
+ border: 4px solid transparent;
7358
+ border-top-color: var(--mm-primary-color, #26a69a);
7359
+ }
7360
+ .double-range-slider .thumb .value.vertical {
7361
+ top: 50%;
7362
+ left: -35px;
7363
+ transform: translateY(-50%);
7364
+ }
7365
+ .double-range-slider .thumb .value.vertical::after {
7366
+ content: "";
7367
+ position: absolute;
7368
+ top: 50%;
7369
+ left: 100%;
7370
+ transform: translateY(-50%);
7371
+ border: 4px solid transparent;
7372
+ border-left-color: var(--mm-primary-color, #26a69a);
7373
+ }
7374
+ .double-range-slider:focus .thumb.min-thumb.active, .double-range-slider:focus .thumb.max-thumb.active, .double-range-slider:focus-visible .thumb.min-thumb.active, .double-range-slider:focus-visible .thumb.max-thumb.active {
7375
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.2);
7376
+ }
7377
+ .double-range-slider:focus .thumb.min-thumb.active:hover, .double-range-slider:focus .thumb.max-thumb.active:hover, .double-range-slider:focus-visible .thumb.min-thumb.active:hover, .double-range-slider:focus-visible .thumb.max-thumb.active:hover {
7378
+ box-shadow: 0 0 0 3px var(--mm-primary-color-alpha-30, rgba(38, 166, 154, 0.3)), 0 4px 8px rgba(0, 0, 0, 0.3);
7379
+ }
7380
+
7381
+ .range-field.vertical {
7382
+ display: flex;
7383
+ flex-direction: column;
7384
+ align-items: center;
7385
+ min-height: 100px;
7386
+ padding-top: 20px;
7387
+ }
7388
+ .range-field.vertical .double-range-slider {
7389
+ height: 100%;
7390
+ }
7391
+
7066
7392
  /***************
7067
7393
  Nav List
7068
7394
  ***************/