UNPKG

8.7 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.sliderProps = exports.default = void 0;
9
10var _vue = require("vue");
11
12var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
13
14var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
17
18var _Slider = _interopRequireDefault(require("../vc-slider/src/Slider"));
19
20var _Range = _interopRequireDefault(require("../vc-slider/src/Range"));
21
22var _Handle = _interopRequireDefault(require("../vc-slider/src/Handle"));
23
24var _type = require("../_util/type");
25
26var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
27
28var _SliderTooltip = _interopRequireDefault(require("./SliderTooltip"));
29
30var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
31
32var _FormItemContext = require("../form/FormItemContext");
33
34var __rest = void 0 && (void 0).__rest || function (s, e) {
35 var t = {};
36
37 for (var p in s) {
38 if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
39 }
40
41 if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
42 if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
43 }
44 return t;
45};
46
47var defaultTipFormatter = function defaultTipFormatter(value) {
48 return typeof value === 'number' ? value.toString() : '';
49};
50
51var sliderProps = function sliderProps() {
52 return {
53 id: String,
54 prefixCls: String,
55 tooltipPrefixCls: String,
56 range: {
57 type: [Boolean, Object],
58 default: undefined
59 },
60 reverse: {
61 type: Boolean,
62 default: undefined
63 },
64 min: Number,
65 max: Number,
66 step: {
67 type: [Number, Object]
68 },
69 marks: {
70 type: Object
71 },
72 dots: {
73 type: Boolean,
74 default: undefined
75 },
76 value: {
77 type: [Number, Array]
78 },
79 defaultValue: {
80 type: [Number, Array]
81 },
82 included: {
83 type: Boolean,
84 default: undefined
85 },
86 disabled: {
87 type: Boolean,
88 default: undefined
89 },
90 vertical: {
91 type: Boolean,
92 default: undefined
93 },
94 tipFormatter: {
95 type: [Function, Object],
96 default: function _default() {
97 return defaultTipFormatter;
98 }
99 },
100 tooltipVisible: {
101 type: Boolean,
102 default: undefined
103 },
104 tooltipPlacement: {
105 type: String
106 },
107 getTooltipPopupContainer: {
108 type: Function
109 },
110 autofocus: {
111 type: Boolean,
112 default: undefined
113 },
114 onChange: {
115 type: Function
116 },
117 onAfterChange: {
118 type: Function
119 },
120 handleStyle: {
121 type: [Object, Array]
122 },
123 trackStyle: {
124 type: [Object, Array]
125 }
126 };
127};
128
129exports.sliderProps = sliderProps;
130var Slider = (0, _vue.defineComponent)({
131 name: 'ASlider',
132 inheritAttrs: false,
133 props: sliderProps(),
134 emits: ['update:value', 'change', 'afterChange', 'blur'],
135 slots: ['mark'],
136 setup: function setup(props, _ref) {
137 var attrs = _ref.attrs,
138 slots = _ref.slots,
139 emit = _ref.emit,
140 expose = _ref.expose;
141
142 var _useConfigInject = (0, _useConfigInject2.default)('slider', props),
143 prefixCls = _useConfigInject.prefixCls,
144 rootPrefixCls = _useConfigInject.rootPrefixCls,
145 direction = _useConfigInject.direction,
146 getPopupContainer = _useConfigInject.getPopupContainer,
147 configProvider = _useConfigInject.configProvider;
148
149 var formItemContext = (0, _FormItemContext.useInjectFormItemContext)();
150 var sliderRef = (0, _vue.ref)();
151 var visibles = (0, _vue.ref)({});
152
153 var toggleTooltipVisible = function toggleTooltipVisible(index, visible) {
154 visibles.value[index] = visible;
155 };
156
157 var tooltipPlacement = (0, _vue.computed)(function () {
158 if (props.tooltipPlacement) {
159 return props.tooltipPlacement;
160 }
161
162 if (!props.vertical) {
163 return 'top';
164 }
165
166 return direction.value === 'rtl' ? 'left' : 'right';
167 });
168
169 var focus = function focus() {
170 var _a;
171
172 (_a = sliderRef.value) === null || _a === void 0 ? void 0 : _a.focus();
173 };
174
175 var blur = function blur() {
176 var _a;
177
178 (_a = sliderRef.value) === null || _a === void 0 ? void 0 : _a.blur();
179 };
180
181 var handleChange = function handleChange(val) {
182 emit('update:value', val);
183 emit('change', val);
184 formItemContext.onFieldChange();
185 };
186
187 var handleBlur = function handleBlur() {
188 emit('blur');
189 };
190
191 expose({
192 focus: focus,
193 blur: blur
194 });
195
196 var handleWithTooltip = function handleWithTooltip(_a) {
197 var tooltipPrefixCls = _a.tooltipPrefixCls,
198 _b = _a.info,
199 value = _b.value,
200 dragging = _b.dragging,
201 index = _b.index,
202 restProps = __rest(_b, ["value", "dragging", "index"]);
203
204 var tipFormatter = props.tipFormatter,
205 tooltipVisible = props.tooltipVisible,
206 getTooltipPopupContainer = props.getTooltipPopupContainer;
207 var isTipFormatter = tipFormatter ? visibles.value[index] || dragging : false;
208 var visible = tooltipVisible || tooltipVisible === undefined && isTipFormatter;
209 return (0, _vue.createVNode)(_SliderTooltip.default, {
210 "prefixCls": tooltipPrefixCls,
211 "title": tipFormatter ? tipFormatter(value) : '',
212 "visible": visible,
213 "placement": tooltipPlacement.value,
214 "transitionName": "".concat(rootPrefixCls.value, "-zoom-down"),
215 "key": index,
216 "overlayClassName": "".concat(prefixCls.value, "-tooltip"),
217 "getPopupContainer": getTooltipPopupContainer || getPopupContainer.value
218 }, {
219 default: function _default() {
220 return [(0, _vue.createVNode)(_Handle.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
221 "value": value,
222 "onMouseenter": function onMouseenter() {
223 return toggleTooltipVisible(index, true);
224 },
225 "onMouseleave": function onMouseleave() {
226 return toggleTooltipVisible(index, false);
227 }
228 }), null)];
229 }
230 });
231 };
232
233 return function () {
234 var customizeTooltipPrefixCls = props.tooltipPrefixCls,
235 range = props.range,
236 _props$id = props.id,
237 id = _props$id === void 0 ? formItemContext.id.value : _props$id,
238 restProps = __rest(props, ["tooltipPrefixCls", "range", "id"]);
239
240 var tooltipPrefixCls = configProvider.getPrefixCls('tooltip', customizeTooltipPrefixCls);
241 var cls = (0, _classNames2.default)(attrs.class, (0, _defineProperty2.default)({}, "".concat(prefixCls.value, "-rtl"), direction.value === 'rtl')); // make reverse default on rtl direction
242
243 if (direction.value === 'rtl' && !restProps.vertical) {
244 restProps.reverse = !restProps.reverse;
245 } // extrack draggableTrack from range={{ ... }}
246
247
248 var draggableTrack;
249
250 if ((0, _typeof2.default)(range) === 'object') {
251 draggableTrack = range.draggableTrack;
252 }
253
254 if (range) {
255 return (0, _vue.createVNode)(_Range.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
256 "step": restProps.step,
257 "draggableTrack": draggableTrack,
258 "class": cls,
259 "ref": _vue.ref,
260 "handle": function handle(info) {
261 return handleWithTooltip({
262 tooltipPrefixCls: tooltipPrefixCls,
263 prefixCls: prefixCls.value,
264 info: info
265 });
266 },
267 "prefixCls": prefixCls.value,
268 "onChange": handleChange
269 }), {
270 mark: slots.mark
271 });
272 }
273
274 return (0, _vue.createVNode)(_Slider.default, (0, _objectSpread2.default)((0, _objectSpread2.default)({}, restProps), {}, {
275 "id": id,
276 "step": restProps.step,
277 "class": cls,
278 "ref": _vue.ref,
279 "handle": function handle(info) {
280 return handleWithTooltip({
281 tooltipPrefixCls: tooltipPrefixCls,
282 prefixCls: prefixCls.value,
283 info: info
284 });
285 },
286 "prefixCls": prefixCls.value,
287 "onChange": handleChange,
288 "onBlur": handleBlur
289 }), {
290 mark: slots.mark
291 });
292 };
293 }
294});
295
296var _default2 = (0, _type.withInstall)(Slider);
297
298exports.default = _default2;
\No newline at end of file