<wxs src="./slider.wxs" module="t" />
|
<wxs src="../common/utils.wxs" module="_" />
|
|
<view
|
style="{{_._style([style, customStyle])}}"
|
class="{{_.cls(classPrefix, [['top', label || scaleTextArray.length], ['disabled', disabled], ['range', range]])}} class {{prefix}}-class {{vertical ? classPrefix + '--vertical' : ''}}"
|
>
|
<block wx:if="{{!range}}">
|
<text wx:if="{{showExtremeValue}}" class="{{classPrefix}}__value {{classPrefix}}__value--min">
|
{{ label ? t.getValue(label, min) : min}}
|
</text>
|
<view
|
id="sliderLine"
|
class="{{_.cls(classPrefix + '__bar', [['disabled', disabled], theme, ['marks', isScale && theme == 'capsule']])}} {{prefix}}-class-bar"
|
bind:tap="onSingleLineTap"
|
>
|
<block wx:if="{{isScale}}">
|
<view
|
class="{{_.cls(classPrefix + '__scale-item', [['active', _value >= item.val], ['disabled', disabled], theme, ['hidden', (index == 0 || index == scaleArray.length - 1) && theme == 'capsule' || value == item.val]])}}"
|
wx:for="{{scaleArray}}"
|
wx:key="index"
|
style="{{vertical ? 'top' : 'left'}}:{{item.left}}px; {{vertical ? 'transform: translate(-50%, -50%);' : 'transform: translateX(-50%);'}}"
|
aria-hidden="{{true}}"
|
>
|
<view wx:if="{{scaleTextArray.length}}" class="{{_.cls(classPrefix + '__scale-desc', [theme])}}">
|
{{scaleTextArray[index]}}
|
</view>
|
</view>
|
</block>
|
<view
|
class="{{_.cls(classPrefix + '__line', [['disabled', disabled], theme, 'single'])}} {{prefix}}-class-bar-active"
|
style="{{vertical ? 'height' : 'width'}}: {{lineBarWidth}}"
|
>
|
<view
|
id="singleDot"
|
class="{{classPrefix}}__dot {{prefix}}-class-cursor"
|
catch:touchstart="onTouchStart"
|
catch:touchmove="onSingleLineTap"
|
catch:touchend="onTouchEnd"
|
catch:touchcancel="onTouchEnd"
|
>
|
<view
|
wx:if="{{label || isVisibleToScreenReader}}"
|
class="{{_.cls(classPrefix+'__dot-value', [['sr-only', !label]])}}"
|
aria-role="alert"
|
aria-live="assertive"
|
aria-hidden="{{!isVisibleToScreenReader}}"
|
>
|
{{t.getValue(label, _value) || _value}}
|
</view>
|
<view
|
class="{{classPrefix}}__dot-slider"
|
aria-role="slider"
|
aria-disabled="{{disabled}}"
|
aria-valuemax="{{max}}"
|
aria-valuemin="{{min}}"
|
aria-valuenow="{{_value}}"
|
aria-valuetext="{{t.getValue(label, _value) || _value}}"
|
></view>
|
</view>
|
</view>
|
</view>
|
<!-- <view wx:if="{{label}}" class="{{classPrefix}}__value {{classPrefix}}__value--right">
|
<text class="{{classPrefix}}__value--text"> {{t.getValue(label, _value)}}</text>
|
</view> -->
|
<text wx:if="{{showExtremeValue}}" class="{{classPrefix}}__value {{classPrefix}}__value--max">
|
{{ label ? t.getValue(label, max) : max}}
|
</text>
|
</block>
|
<!-- range选择器自定义 -->
|
<block wx:if="{{range}}">
|
<view wx:if="{{showExtremeValue}}" class="{{classPrefix}}__range-extreme {{classPrefix}}__range-extreme--min">
|
{{min}}
|
</view>
|
<view
|
id="sliderLine"
|
bind:tap="onLineTap"
|
class="{{_.cls(classPrefix + '__bar', [['disabled', disabled], theme, ['marks', isScale && theme == 'capsule']])}} {{prefix}}-class-bar"
|
>
|
<block wx:if="{{isScale}}">
|
<view
|
class="{{_.cls(classPrefix + '__scale-item', [['active', dotTopValue[1] >= item.val && item.val >= dotTopValue[0]], ['disabled', disabled], theme, ['hidden', (index == 0 || index == scaleArray.length - 1) && theme == 'capsule' || value == item.val]])}}"
|
wx:for="{{scaleArray}}"
|
wx:for-index="index"
|
wx:key="index"
|
style="{{vertical ? 'top' : 'left'}}:{{item.left}}px; {{vertical ? 'transform: translate(-50%, -50%);' : 'transform: translateX(-50%);'}}"
|
aria-hidden="{{true}}"
|
>
|
<view wx:if="{{scaleTextArray.length}}" class="{{_.cls(classPrefix + '__scale-desc', [theme])}}"
|
>{{scaleTextArray[index]}}</view
|
>
|
</view>
|
</block>
|
<view
|
class="{{_.cls(classPrefix + '__line', [['disabled', disabled], theme])}} {{prefix}}-class-bar-active"
|
style="{{vertical ? 'top' : 'left'}}: {{lineLeft}}px; {{vertical ? 'bottom' : 'right'}}: {{lineRight}}px"
|
>
|
<view
|
id="leftDot"
|
catch:touchstart="onTouchStart"
|
catch:touchmove="onTouchMoveLeft"
|
catch:touchend="onTouchEnd"
|
catch:touchcancel="onTouchEnd"
|
class="{{classPrefix}}__dot {{classPrefix}}__dot--left {{prefix}}-class-cursor"
|
>
|
<view
|
wx:if="{{label || isVisibleToScreenReader}}"
|
class="{{_.cls(classPrefix+'__dot-value', [['sr-only', !label]])}}"
|
aria-role="alert"
|
aria-live="assertive"
|
aria-hidden="{{!isVisibleToScreenReader}}"
|
>
|
{{t.getValue(label, dotTopValue[0]) || dotTopValue[0]}}
|
</view>
|
<view
|
class="{{classPrefix}}__dot-slider"
|
aria-role="slider"
|
aria-disabled="{{disabled}}"
|
aria-valuemax="{{max}}"
|
aria-valuemin="{{min}}"
|
aria-valuenow="{{dotTopValue[0]}}"
|
aria-valuetext="{{t.getValue(label, dotTopValue[0]) || dotTopValue[0]}}"
|
></view>
|
</view>
|
<view
|
id="rightDot"
|
catch:touchstart="onTouchStart"
|
catch:touchmove="onTouchMoveRight"
|
catch:touchend="onTouchEnd"
|
catch:touchcancel="onTouchEnd"
|
class="{{classPrefix}}__dot {{classPrefix}}__dot--right {{prefix}}-class-cursor"
|
>
|
<view
|
wx:if="{{label || isVisibleToScreenReader}}"
|
class="{{_.cls(classPrefix+'__dot-value', [['sr-only', !label]])}}"
|
aria-role="alert"
|
aria-live="assertive"
|
aria-hidden="{{!isVisibleToScreenReader}}"
|
>
|
{{t.getValue(label, dotTopValue[1]) || dotTopValue[1]}}
|
</view>
|
<view
|
class="{{classPrefix}}__dot-slider"
|
aria-role="slider"
|
aria-disabled="{{disabled}}"
|
aria-valuemax="{{max}}"
|
aria-valuemin="{{min}}"
|
aria-valuenow="{{dotTopValue[1]}}"
|
aria-valuetext="{{t.getValue(label, dotTopValue[1]) || dotTopValue[1]}}"
|
>
|
</view>
|
</view>
|
</view>
|
</view>
|
<view wx:if="{{showExtremeValue}}" class="{{classPrefix}}__range-extreme {{classPrefix}}__range-extreme--max">
|
{{max}}
|
</view>
|
</block>
|
</view>
|