@foxone/finance-ui
Version:
The Financial UI Component Library Based on @foxone/uikit and vuetify
176 lines (147 loc) • 19.2 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.RiskSlider = void 0;
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _vuePropertyDecorator = require("vue-property-decorator");
var _classnames = _interopRequireDefault(require("../utils/classnames"));
require("vue-slider-component/theme/default.css");
function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; }
function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
var __decorate = void 0 && (void 0).__decorate || function (decorators, target, key, desc) {
var c = arguments.length,
r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,
d;
if ((typeof Reflect === "undefined" ? "undefined" : (0, _typeof2["default"])(Reflect)) === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {
if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
}
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
// avoid typescript error
var VueSlider = require('vue-slider-component');
var RiskSlider = /*#__PURE__*/function (_Vue) {
(0, _inherits2["default"])(RiskSlider, _Vue);
var _super = _createSuper(RiskSlider);
function RiskSlider() {
(0, _classCallCheck2["default"])(this, RiskSlider);
return _super.apply(this, arguments);
}
(0, _createClass2["default"])(RiskSlider, [{
key: "isDark",
get: function get() {
var _a, _b;
return (_b = (_a = this.$vuetify) === null || _a === void 0 ? void 0 : _a.theme) === null || _b === void 0 ? void 0 : _b.dark;
}
}, {
key: "colors",
get: function get() {
return {
dark: {
low: '#56D471',
mid: '#F79F4D',
high: '#F67070'
},
light: {
low: '#2CC94E',
mid: '#F58721',
high: '#F44C4C'
}
};
}
}, {
key: "currentScale",
get: function get() {
var val = +this.value / 100;
if (val <= this.getScaleRatio('low')) {
return 'low';
} else if (val <= this.getScaleRatio('low') + this.getScaleRatio('mid')) {
return 'mid';
} else {
return 'high';
}
}
}, {
key: "getScaleRatio",
value: function getScaleRatio(scale) {
var _this$scale = this.scale,
low = _this$scale.low,
mid = _this$scale.mid,
high = _this$scale.high;
var total = low + mid + high;
return this.scale[scale] / total;
}
}, {
key: "render",
value: function render(h) {
var content = this.$slots["default"];
var classes = (0, _classnames["default"])('risk-slider');
var color = this.colors[this.isDark ? 'dark' : 'light'];
return h('div', {
staticClass: classes(),
"class": this.className
}, [h(VueSlider, {
props: {
value: this.value,
height: 8,
min: 0,
max: 100,
interval: 0.01,
lazy: true,
tooltip: 'none',
disabled: this.disabled,
railStyle: {
'background': "linear-gradient(to right, ".concat(color.low, " 0% ").concat(this.getScaleRatio('low') * 100, "%, ").concat(color.mid, " ").concat(this.getScaleRatio('low') * 100, "% ").concat((this.getScaleRatio('low') + this.getScaleRatio('mid')) * 100, "%, ").concat(color.high, " ").concat((this.getScaleRatio('low') + this.getScaleRatio('mid')) * 100, "% 100%)")
}
}
}), content !== null && content !== void 0 ? content : h('div', {
staticClass: classes('tips', 'f-greyscale-3 f-caption')
}, [h('span', this.tips.tip), h('span', {
staticClass: classes('tips-highlight', 'font-weight-bold'),
style: {
color: color[this.currentScale]
}
}, this.tips.highlight)])]);
}
}]);
return RiskSlider;
}(_vuePropertyDecorator.Vue);
exports.RiskSlider = RiskSlider;
__decorate([(0, _vuePropertyDecorator.Model)('change', {
type: [String, Number],
"default": ''
})], RiskSlider.prototype, "value", void 0);
__decorate([(0, _vuePropertyDecorator.Prop)({
type: String,
"default": ''
})], RiskSlider.prototype, "className", void 0);
__decorate([(0, _vuePropertyDecorator.Prop)({
type: Boolean,
"default": true
})], RiskSlider.prototype, "disabled", void 0);
__decorate([(0, _vuePropertyDecorator.Prop)({
type: Object,
"default": function _default() {
return {
low: 0.7,
mid: 0.15,
high: 0.15
};
}
})], RiskSlider.prototype, "scale", void 0);
__decorate([(0, _vuePropertyDecorator.Prop)({
type: Object,
"default": function _default() {
return {};
}
})], RiskSlider.prototype, "tips", void 0);
exports.RiskSlider = RiskSlider = __decorate([_vuePropertyDecorator.Component], RiskSlider);
var _default2 = RiskSlider;
exports["default"] = _default2;
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9SaXNrU2xpZGVyL19kZXByZWNhdGUudHMiLCJSaXNrU2xpZGVyL19kZXByZWNhdGUuanMiXSwibmFtZXMiOlsiX19kZWNvcmF0ZSIsImRlY29yYXRvcnMiLCJ0YXJnZXQiLCJrZXkiLCJkZXNjIiwiYyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInIiLCJPYmplY3QiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJkIiwiUmVmbGVjdCIsImRlY29yYXRlIiwiaSIsImRlZmluZVByb3BlcnR5IiwiVnVlU2xpZGVyIiwicmVxdWlyZSIsIlJpc2tTbGlkZXIiLCJfYSIsIl9iIiwiJHZ1ZXRpZnkiLCJ0aGVtZSIsImRhcmsiLCJsb3ciLCJtaWQiLCJoaWdoIiwibGlnaHQiLCJ2YWwiLCJ2YWx1ZSIsImdldFNjYWxlUmF0aW8iLCJzY2FsZSIsInRvdGFsIiwiaCIsImNvbnRlbnQiLCIkc2xvdHMiLCJjbGFzc2VzIiwiY29sb3IiLCJjb2xvcnMiLCJpc0RhcmsiLCJzdGF0aWNDbGFzcyIsImNsYXNzTmFtZSIsInByb3BzIiwiaGVpZ2h0IiwibWluIiwibWF4IiwiaW50ZXJ2YWwiLCJsYXp5IiwidG9vbHRpcCIsImRpc2FibGVkIiwicmFpbFN0eWxlIiwidGlwcyIsInRpcCIsInN0eWxlIiwiY3VycmVudFNjYWxlIiwiaGlnaGxpZ2h0IiwiVnVlIiwidHlwZSIsIlN0cmluZyIsIk51bWJlciIsInByb3RvdHlwZSIsIkJvb2xlYW4iLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQU1BOztBQUNBOzs7Ozs7QUNQQSxJQUFJQSxVQUFVLEdBQUksVUFBUSxTQUFLQSxVQUFkLElBQTZCLFVBQVVDLFVBQVYsRUFBc0JDLE1BQXRCLEVBQThCQyxHQUE5QixFQUFtQ0MsSUFBbkMsRUFBeUM7QUFDbkYsTUFBSUMsQ0FBQyxHQUFHQyxTQUFTLENBQUNDLE1BQWxCO0FBQUEsTUFBMEJDLENBQUMsR0FBR0gsQ0FBQyxHQUFH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QUs7QUFBRXlELEVBQUFBLElBQUksRUFBRUMsTUFBUjtBQUFnQixhQUFTO0FBQXpCLENBQUwsQ0FBb0MsQ0FBQSxFQ3FFcEN4QyxVQUFVLENBQUMwQyxTRHJFeUIsRUNxRWQsV0RyRWMsRUNxRUQsS0FBSyxDRHJFSixDQUFBOztBQUNHNUQsVUFBQSxDQUFBLENBQXZDLGdDQUFLO0FBQUV5RCxFQUFBQSxJQUFJLEVBQUVJLE9BQVI7QUFBaUIsYUFBUztBQUExQixDQUFMLENBQXVDLENBQUEsRUN1RXZDM0MsVUFBVSxDQUFDMEMsU0R2RTRCLEVDdUVqQixVRHZFaUIsRUN1RUwsS0FBSyxDRHZFQSxDQUFBOztBQU9yQzVELFVBQUEsQ0FBQSxDQU5GLGdDQUFLO0FBQ0p5RCxFQUFBQSxJQUFJLEVBQUVoRCxNQURGO0FBQ1UsYUFBUztBQUFBLFdBQU87QUFDNUJlLE1BQUFBLEdBQUcsRUFBRSxHQUR1QjtBQUU1QkMsTUFBQUEsR0FBRyxFQUFFLElBRnVCO0FBRzVCQyxNQUFBQSxJQUFJLEVBQUU7QUFIc0IsS0FBUDtBQUFBO0FBRG5CLENBQUwsQ0FNRSxDQUFBLEVDeUVGUixVQUFVLENBQUMwQyxTRHpFVCxFQ3lFb0IsT0R6RXBCLEVDeUU2QixLQUFLLENEekVsQyxDQUFBOztBQUswQzVELFVBQUEsQ0FBQSxDQUE1QyxnQ0FBSztBQUFFeUQsRUFBQUEsSUFBSSxFQUFFaEQsTUFBUjtBQUFnQixhQUFTO0FBQUEsV0FBTyxFQUFQO0FBQUE7QUFBekIsQ0FBTCxDQUE0QyxDQUFBLEVDdUU1Q1MsVUFBVSxDQUFDMEMsU0R2RWlDLEVDdUV0QixNRHZFc0IsRUN1RWQsS0FBSyxDRHZFUyxDQUFBOztBQWhCbEMscUJBQUExQyxVQUFVLEdBQUFsQixVQUFBLENBQUEsQ0FEdEI4RCwrQkFDc0IsQ0FBQSxFQUFWNUMsVUFBVSxDQUFWO2dCQWlIRUEsVSIsImZpbGUiOiJSaXNrU2xpZGVyL19kZXByZWNhdGUuanMiLCJzb3VyY2VzQ29udGVudCI6W251bGwsInZhciBfX2RlY29yYXRlID0gKHRoaXMgJiYgdGhpcy5fX2RlY29yYXRlKSB8fCBmdW5jdGlvbiAoZGVjb3JhdG9ycywgdGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XG4gICAgZWxzZSBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgaWYgKGQgPSBkZWNvcmF0b3JzW2ldKSByID0gKGMgPCAzID8gZChyKSA6IGMgPiAzID8gZCh0YXJnZXQsIGtleSwgcikgOiBkKHRhcmdldCwga2V5KSkgfHwgcjtcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xufTtcbmltcG9ydCB7IENvbXBvbmVudCwgVnVlLCBQcm9wLCBNb2RlbCB9IGZyb20gJ3Z1ZS1wcm9wZXJ0eS1kZWNvcmF0b3InO1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJvbSAnLi4vdXRpbHMvY2xhc3NuYW1lcyc7XG5pbXBvcnQgJ3Z1ZS1zbGlkZXItY29tcG9uZW50L3RoZW1lL2RlZmF1bHQuY3NzJztcbi8vIGF2b2lkIHR5cGVzY3JpcHQgZXJyb3JcbmNvbnN0IFZ1ZVNsaWRlciA9IHJlcXVpcmUoJ3Z1ZS1zbGlkZXItY29tcG9uZW50Jyk7XG5sZXQgUmlza1NsaWRlciA9IGNsYXNzIFJpc2tTbGlkZXIgZXh0ZW5kcyBWdWUge1xuICAgIGdldCBpc0RhcmsoKSB7XG4gICAgICAgIHZhciBfYSwgX2I7XG4gICAgICAgIHJldHVybiAoX2IgPSAoX2EgPSB0aGlzLiR2dWV0aWZ5KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudGhlbWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5kYXJrO1xuICAgIH1cbiAgICBnZXQgY29sb3JzKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGFyazoge1xuICAgICAgICAgICAgICAgIGxvdzogJyM1NkQ0NzEnLFxuICAgICAgICAgICAgICAgIG1pZDogJyNGNzlGNEQnLFxuICAgICAgICAgICAgICAgIGhpZ2g6ICcjRjY3MDcwJ1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxpZ2h0OiB7XG4gICAgICAgICAgICAgICAgbG93OiAnIzJDQzk0RScsXG4gICAgICAgICAgICAgICAgbWlkOiAnI0Y1ODcyMScsXG4gICAgICAgICAgICAgICAgaGlnaDogJyNGNDRDNEMnXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGdldCBjdXJyZW50U2NhbGUoKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9ICt0aGlzLnZhbHVlIC8gMTAwO1xuICAgICAgICBpZiAodmFsIDw9IHRoaXMuZ2V0U2NhbGVSYXRpbygnbG93JykpIHtcbiAgICAgICAgICAgIHJldHVybiAnbG93JztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgPD0gKHRoaXMuZ2V0U2NhbGVSYXRpbygnbG93JykgKyB0aGlzLmdldFNjYWxlUmF0aW8oJ21pZCcpKSkge1xuICAgICAgICAgICAgcmV0dXJuICdtaWQnO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuICdoaWdoJztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXRTY2FsZVJhdGlvKHNjYWxlKSB7XG4gICAgICAgIGNvbnN0IHsgbG93LCBtaWQsIGhpZ2ggfSA9IHRoaXMuc2NhbGU7XG4gICAgICAgIGNvbnN0IHRvdGFsID0gbG93ICsgbWlkICsgaGlnaDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2NhbGVbc2NhbGVdIC8gdG90YWw7XG4gICAgfVxuICAgIHJlbmRlcihoKSB7XG4gICAgICAgIGNvbnN0IGNvbnRlbnQgPSB0aGlzLiRzbG90cy5kZWZhdWx0O1xuICAgICAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcygncmlzay1zbGlkZXInKTtcbiAgICAgICAgY29uc3QgY29sb3IgPSB0aGlzLmNvbG9yc1t0aGlzLmlzRGFyayA/ICdkYXJrJyA6ICdsaWdodCddO1xuICAgICAgICByZXR1cm4gaCgnZGl2Jywge1xuICAgICAgICAgICAgc3RhdGljQ2xhc3M6IGNsYXNzZXMoKSxcbiAgICAgICAgICAgIGNsYXNzOiB0aGlzLmNsYXNzTmFtZVxuICAgICAgICB9LCBbXG4gICAgICAgICAgICBoKFZ1ZVNsaWRlciwge1xuICAgICAgICAgICAgICAgIHByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLnZhbHVlLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IDgsXG4gICAgICAgICAgICAgICAgICAgIG1pbjogMCxcbiAgICAgICAgICAgICAgICAgICAgbWF4OiAxMDAsXG4gICAgICAgICAgICAgICAgICAgIGludGVydmFsOiAwLjAxLFxuICAgICAgICAgICAgICAgICAgICBsYXp5OiB0cnVlLFxuICAgICAgICAgICAgICAgICAgICB0b29sdGlwOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLmRpc2FibGVkLFxuICAgICAgICAgICAgICAgICAgICByYWlsU3R5bGU6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICdiYWNrZ3JvdW5kJzogYGxpbmVhci1ncmFkaWVudCh0byByaWdodCwgJHtjb2xvci5sb3d9IDAlICR7dGhpcy5nZXRTY2FsZVJhdGlvKCdsb3cnKSAqIDEwMH0lLCAke2NvbG9yLm1pZH0gJHt0aGlzLmdldFNjYWxlUmF0aW8oJ2xvdycpICogMTAwfSUgJHsodGhpcy5nZXRTY2FsZVJhdGlvKCdsb3cnKSArIHRoaXMuZ2V0U2NhbGVSYXRpbygnbWlkJykpICogMTAwfSUsICR7Y29sb3IuaGlnaH0gJHsodGhpcy5nZXRTY2FsZVJhdGlvKCdsb3cnKSArIHRoaXMuZ2V0U2NhbGVSYXRpbygnbWlkJykpICogMTAwfSUgMTAwJSlgXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGNvbnRlbnQgIT09IG51bGwgJiYgY29udGVudCAhPT0gdm9pZCAwID8gY29udGVudCA6IGgoJ2RpdicsIHtcbiAgICAgICAgICAgICAgICBzdGF0aWNDbGFzczogY2xhc3NlcygndGlwcycsICdmLWdyZXlzY2FsZS0zIGYtY2FwdGlvbicpXG4gICAgICAgICAgICB9LCBbXG4gICAgICAgICAgICAgICAgaCgnc3BhbicsIHRoaXMudGlwcy50aXApLFxuICAgICAgICAgICAgICAgIGgoJ3NwYW4nLCB7XG4gICAgICAgICAgICAgICAgICAgIHN0YXRpY0NsYXNzOiBjbGFzc2VzKCd0aXBzLWhpZ2hsaWdodCcsICdmb250LXdlaWdodC1ib2xkJyksXG4gICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogY29sb3JbdGhpcy5jdXJyZW50U2NhbGVdXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9LCB0aGlzLnRpcHMuaGlnaGxpZ2h0KVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSk7XG4gICAgfVxufTtcbl9fZGVjb3JhdGUoW1xuICAgIE1vZGVsKCdjaGFuZ2UnLCB7IHR5cGU6IFtTdHJpbmcsIE51bWJlcl0sIGRlZmF1bHQ6ICcnIH0pXG5dLCBSaXNrU2xpZGVyLnByb3RvdHlwZSwgXCJ2YWx1ZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgUHJvcCh7IHR5cGU6IFN0cmluZywgZGVmYXVsdDogJycgfSlcbl0sIFJpc2tTbGlkZXIucHJvdG90eXBlLCBcImNsYXNzTmFtZVwiLCB2b2lkIDApO1xuX19kZWNvcmF0ZShbXG4gICAgUHJvcCh7IHR5cGU6IEJvb2xlYW4sIGRlZmF1bHQ6IHRydWUgfSlcbl0sIFJpc2tTbGlkZXIucHJvdG90eXBlLCBcImRpc2FibGVkXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBQcm9wKHtcbiAgICAgICAgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiAoKSA9PiAoe1xuICAgICAgICAgICAgbG93OiAwLjcsXG4gICAgICAgICAgICBtaWQ6IDAuMTUsXG4gICAgICAgICAgICBoaWdoOiAwLjE1XG4gICAgICAgIH0pXG4gICAgfSlcbl0sIFJpc2tTbGlkZXIucHJvdG90eXBlLCBcInNjYWxlXCIsIHZvaWQgMCk7XG5fX2RlY29yYXRlKFtcbiAgICBQcm9wKHsgdHlwZTogT2JqZWN0LCBkZWZhdWx0OiAoKSA9PiAoe30pIH0pXG5dLCBSaXNrU2xpZGVyLnByb3RvdHlwZSwgXCJ0aXBzXCIsIHZvaWQgMCk7XG5SaXNrU2xpZGVyID0gX19kZWNvcmF0ZShbXG4gICAgQ29tcG9uZW50XG5dLCBSaXNrU2xpZGVyKTtcbmV4cG9ydCB7IFJpc2tTbGlkZXIgfTtcbmV4cG9ydCBkZWZhdWx0IFJpc2tTbGlkZXI7Il0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==