@@ -46,6 +46,15 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
46
46
@property ( { type : Boolean , reflect : true } )
47
47
disabled = false ;
48
48
49
+ /**
50
+ * Sets the input to readonly mode, meaning value cannot be changed but still able to read and select its content.
51
+ * @type {boolean }
52
+ * @attr
53
+ * @default false
54
+ */
55
+ @property ( { type : Boolean , reflect : true } )
56
+ readonly = false ;
57
+
49
58
/**
50
59
* Sets the minimum allowed value.
51
60
* @type {number }
@@ -488,6 +497,7 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
488
497
/** Mouse Event */
489
498
private _onMouseDown = ( e : MouseEvent ) => {
490
499
if ( this . disabled ) return ;
500
+ if ( this . readonly ) return ;
491
501
492
502
const target = e . composedPath ( ) [ 0 ] ;
493
503
if ( target === this . _outerTrack ) return ;
@@ -554,6 +564,8 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
554
564
/** Input Events */
555
565
private _onLowInput ( e : Event ) {
556
566
if ( this . disabled ) e . preventDefault ( ) ;
567
+ if ( this . readonly ) e . preventDefault ( ) ;
568
+
557
569
this . _currentFocus = this . _inputLow ;
558
570
const newValue = Number ( ( e . target as HTMLInputElement ) . value ) ;
559
571
@@ -563,6 +575,8 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
563
575
564
576
private _onHighInput ( e : Event ) {
565
577
if ( this . disabled ) e . preventDefault ( ) ;
578
+ if ( this . readonly ) e . preventDefault ( ) ;
579
+
566
580
this . _currentFocus = this . _inputHigh ;
567
581
const newValue = Number ( ( e . target as HTMLInputElement ) . value ) ;
568
582
@@ -675,7 +689,7 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
675
689
step= ${ this . _step }
676
690
.value = ${ this . _lowInputValue . toString ( ) }
677
691
aria- label= "${ this . label } low- end value"
678
- ?dis abled= "${ this . disabled } "
692
+ ?dis abled= "${ this . disabled || this . readonly } "
679
693
@input = ${ this . _onLowInput }
680
694
@change = ${ this . _onLowChange } / >
681
695
<input
@@ -687,7 +701,7 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
687
701
step= "${ this . _step } "
688
702
.value = ${ this . _highInputValue . toString ( ) }
689
703
aria- label= "${ this . label } high- end value"
690
- ?dis abled= "${ this . disabled } "
704
+ ?dis abled= "${ this . disabled || this . readonly } "
691
705
@input = ${ this . _onHighInput }
692
706
@change = ${ this . _onHighChange } / >
693
707
</ div> ` ;
@@ -744,7 +758,8 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
744
758
z-index : ${ Z_INDEX . CENTER } ;
745
759
}
746
760
747
- : host ([disabled ]) # inner-color-thumb {
761
+ : host ([disabled ]) # inner-color-thumb ,
762
+ : host ([readonly ]) # inner-color-thumb {
748
763
cursor : default;
749
764
}
750
765
@@ -757,10 +772,12 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
757
772
# inner-color-thumb : focus .color {
758
773
background-color : var (--color-focus );
759
774
}
775
+
760
776
# inner-color-thumb : hover .color ,
761
777
# inner-color-thumb .color .active {
762
778
background-color : var (--color-hover );
763
779
}
780
+
764
781
# inner-color-thumb : hover .color {
765
782
height : 5px ;
766
783
background-color : var (--color-hover );
@@ -892,6 +909,10 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
892
909
color : var (--uui-palette-mine-grey );
893
910
}
894
911
912
+ : host ([readonly ]) .thumb-values {
913
+ opacity : 1 ;
914
+ }
915
+
895
916
# range-slider : hover .thumb-values {
896
917
opacity : 1 ;
897
918
}
@@ -914,7 +935,9 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
914
935
inset 0 0 0 2px var (--color-interactive ),
915
936
inset 0 0 0 4px var (--uui-color-surface );
916
937
}
917
- : host ([disabled ]) input ::-webkit-slider-thumb {
938
+
939
+ : host ([disabled ]) input ::-webkit-slider-thumb ,
940
+ : host ([readonly ]) input ::-webkit-slider-thumb {
918
941
cursor : default;
919
942
}
920
943
@@ -958,7 +981,8 @@ export class UUIRangeSliderElement extends UUIFormControlMixin(LitElement, '') {
958
981
inset 0 0 0 2px var (--color-interactive ),
959
982
inset 0 0 0 4px var (--uui-color-surface );
960
983
}
961
- : host ([disabled ]) input ::-moz-range-thumb {
984
+ : host ([disabled ]) input ::-moz-range-thumb ,
985
+ : host ([readonly ]) input ::-moz-range-thumb {
962
986
cursor : default;
963
987
}
964
988
0 commit comments