UNPKG

zmp-vue

Version:

Build full featured iOS & Android apps using ZMP & Vue

152 lines (143 loc) 4.01 kB
"use strict"; exports.__esModule = true; exports.default = void 0; var _vue = require("vue"); var _utils = require("../shared/utils"); var _mixins = require("../shared/mixins"); var _zmp = require("../shared/zmp"); function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); } function render(_ctx, _cache) { return (0, _vue.openBlock)(), (0, _vue.createBlock)("div", { ref: "elRef", class: _ctx.classes }, [_ctx.input ? ((0, _vue.openBlock)(), (0, _vue.createBlock)("input", { key: 0, id: "inputId", type: "range", name: _ctx.name }, null, 8, ["name"])) : (0, _vue.createCommentVNode)("", true), (0, _vue.renderSlot)(_ctx.$slots, "default")], 2); } var _default = { name: 'zmp-range', render: render, props: _extends({ init: { type: Boolean, default: true }, value: { type: [Number, Array, String], default: 0 }, min: { type: [Number, String], default: 0 }, max: { type: [Number, String], default: 100 }, step: { type: [Number, String], default: 1 }, label: { type: Boolean, default: false }, dual: { type: Boolean, default: false }, vertical: { type: Boolean, default: false }, verticalReversed: { type: Boolean, default: false }, draggableBar: { type: Boolean, default: true }, formatLabel: Function, scale: { type: Boolean, default: false }, scaleSteps: { type: Number, default: 5 }, scaleSubSteps: { type: Number, default: 0 }, formatScaleLabel: Function, limitKnobPosition: { type: Boolean, default: undefined }, name: String, input: Boolean, inputId: String, disabled: Boolean }, _mixins.colorProps), emits: ['range:change', 'range:changed', 'rangeChange', 'rangeChanged', 'update:value'], setup: function setup(props, _ref) { var emit = _ref.emit; var zmpRange = null; var elRef = (0, _vue.ref)(null); (0, _vue.watch)(function () { return props.value; }, function (newValue) { if (!zmpRange) return; var rangeValue = zmpRange.value; if (Array.isArray(newValue) && Array.isArray(rangeValue)) { if (rangeValue[0] !== newValue[0] || rangeValue[1] !== newValue[1]) { zmpRange.setValue(newValue); } } else { zmpRange.setValue(newValue); } }); (0, _vue.onMounted)(function () { (0, _zmp.zmpready)(function () { if (!props.init || !elRef.value) return; zmpRange = _zmp.zmp.range.create((0, _utils.noUndefinedProps)(_extends({ el: elRef.value }, props, { on: { change: function change(range, val) { emit('range:change', val); emit('rangeChange', val); }, changed: function changed(range, val) { emit('range:changed', val); emit('rangeChanged', val); emit('update:value', val); } } }))); }); }); (0, _vue.onBeforeUnmount)(function () { if (zmpRange && zmpRange.destroy) zmpRange.destroy(); zmpRange = null; }); var classes = (0, _vue.computed)(function () { return (0, _utils.classNames)('range-slider', { 'range-slider-horizontal': !props.vertical, 'range-slider-vertical': props.vertical, 'range-slider-vertical-reversed': props.vertical && props.verticalReversed, disabled: props.disabled }, (0, _mixins.colorClasses)(props)); }); return { elRef: elRef, classes: classes }; } }; exports.default = _default;