UNPKG

bruno-ui

Version:
59 lines (54 loc) 2.42 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); const core = require('./core-a98adf17.js'); const SliderComponent = class { constructor(hostRef) { core.registerInstance(this, hostRef); this._active = false; } MouseMoveHandler(e) { if (this._active) { this.SetHandlePosition(e); } } MouseUpHandler() { this._active = false; } componentDidLoad() { this.handle = this.GetHandle(); } render() { return (core.h("div", { class: "slider" }, core.h("div", { class: "slider__bar", onClick: e => { this.SetHandlePosition(e); } }), core.h("div", { class: "slider__handle", onMouseDown: () => { this._active = true; } }))); } GetHandle() { return this._element.getElementsByClassName("slider__handle")[0]; } GetSlider() { return this._element.getElementsByClassName("slider")[0]; } SetHandlePosition(e) { let position = this.CalculatePosition(e); this.handle.style.left = `${position}px`; } CalculatePosition(e) { let slider = this.GetSlider(); let position = e.clientX - this._element.offsetLeft - this.handle.clientWidth / 2; if (position < this._element.offsetLeft) { position = 0; } else if (e.clientX > slider.offsetWidth) { position = slider.offsetWidth - this._element.offsetLeft - this.handle.clientWidth / 2; } return position; } get _element() { return core.getElement(this); } static get style() { return "brn-slider .slider {\n position: relative;\n}\nbrn-slider .slider .slider__bar {\n display: block;\n height: 0.5rem;\n background-color: #eaecf0;\n -webkit-border-radius: 1rem;\n -moz-border-radius: 1rem;\n -ms-border-radius: 1rem;\n border-radius: 1rem;\n}\nbrn-slider .slider .slider__handle {\n top: -0.25rem;\n left: 0;\n position: absolute;\n width: 1rem;\n height: 1rem;\n background-color: #3abeff;\n cursor: pointer;\n -ms-user-select: none;\n -webkit-user-select: none;\n -moz-user-select: -moz-none;\n user-select: none;\n -webkit-border-radius: 1rem;\n -moz-border-radius: 1rem;\n -ms-border-radius: 1rem;\n border-radius: 1rem;\n}"; } }; exports.brn_slider = SliderComponent;