@@ -9,8 +9,11 @@ const Self = class ChannelSlider extends ColorElement {
9
9
static shadowStyle = true ;
10
10
static shadowTemplate = `
11
11
<label class="color-slider-label" part="label">
12
- <slot></slot>
13
- <color-slider part="color_slider" exportparts="slider" id="slider" tooltip></color-slider>
12
+ <slot>
13
+ <span id="channel_info" part="channel-info"></span>
14
+ <input type="number" part="spinner" min="0" max="1" step="0.01" id="spinner" />
15
+ </slot>
16
+ <color-slider part="color_slider" exportparts="slider" id="slider"></color-slider>
14
17
</label>` ;
15
18
16
19
constructor ( ) {
@@ -24,10 +27,12 @@ const Self = class ChannelSlider extends ColorElement {
24
27
super . connectedCallback ?. ( ) ;
25
28
26
29
this . _el . slider . addEventListener ( "input" , this ) ;
30
+ this . _el . slot . addEventListener ( "input" , this ) ;
27
31
}
28
32
29
33
disconnectedCallback ( ) {
30
34
this . _el . slider . removeEventListener ( "input" , this ) ;
35
+ this . _el . slot . removeEventListener ( "input" , this ) ;
31
36
}
32
37
33
38
handleEvent ( event ) {
@@ -82,13 +87,26 @@ const Self = class ChannelSlider extends ColorElement {
82
87
propChangedCallback ( { name, prop, detail : change } ) {
83
88
if ( [ "space" , "min" , "max" , "step" , "value" , "defaultValue" ] . includes ( name ) ) {
84
89
prop . applyChange ( this . _el . slider , change ) ;
90
+
91
+ if ( [ "min" , "max" , "step" , "value" , "defaultValue" ] . includes ( name ) ) {
92
+ prop . applyChange ( this . _el . spinner , change ) ;
93
+
94
+ if ( name === "value" && this . value !== undefined ) {
95
+ this . _el . spinner . value = Number ( this . value . toPrecision ( 4 ) ) ;
96
+
97
+ if ( ! CSS . supports ( "field-sizing" , "content" ) ) {
98
+ let valueStr = this . _el . spinner . value ;
99
+ this . _el . spinner . style . setProperty ( "--value-length" , valueStr . length ) ;
100
+ }
101
+ }
102
+ }
85
103
}
86
104
87
105
if ( name === "defaultColor" || name === "space" || name === "channel" || name === "min" || name === "max" ) {
88
106
this . _el . slider . stops = this . stops ;
89
107
90
108
if ( name === "space" || name === "channel" || name === "min" || name === "max" ) {
91
- this . _el . slot . innerHTML = `${ this . channelName } <em>(${ this . min }  – ${ this . max } )</em>` ;
109
+ this . _el . channel_info . innerHTML = `${ this . channelName } <em>(${ this . min }  – ${ this . max } )</em>` ;
92
110
}
93
111
}
94
112
}
0 commit comments