1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.sliderProps = exports.default = void 0;
|
9 |
|
10 | var _vue = require("vue");
|
11 |
|
12 | var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
13 |
|
14 | var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
15 |
|
16 | var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread2"));
|
17 |
|
18 | var _Slider = _interopRequireDefault(require("../vc-slider/src/Slider"));
|
19 |
|
20 | var _Range = _interopRequireDefault(require("../vc-slider/src/Range"));
|
21 |
|
22 | var _Handle = _interopRequireDefault(require("../vc-slider/src/Handle"));
|
23 |
|
24 | var _type = require("../_util/type");
|
25 |
|
26 | var _useConfigInject2 = _interopRequireDefault(require("../_util/hooks/useConfigInject"));
|
27 |
|
28 | var _SliderTooltip = _interopRequireDefault(require("./SliderTooltip"));
|
29 |
|
30 | var _classNames2 = _interopRequireDefault(require("../_util/classNames"));
|
31 |
|
32 | var _FormItemContext = require("../form/FormItemContext");
|
33 |
|
34 | var __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 |
|
47 | var defaultTipFormatter = function defaultTipFormatter(value) {
|
48 | return typeof value === 'number' ? value.toString() : '';
|
49 | };
|
50 |
|
51 | var 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 |
|
129 | exports.sliderProps = sliderProps;
|
130 | var 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'));
|
242 |
|
243 | if (direction.value === 'rtl' && !restProps.vertical) {
|
244 | restProps.reverse = !restProps.reverse;
|
245 | }
|
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 |
|
296 | var _default2 = (0, _type.withInstall)(Slider);
|
297 |
|
298 | exports.default = _default2; |
\ | No newline at end of file |