UNPKG

ng-zorro-antd-mobile

Version:

An enterprise-class mobile UI components based on Ant Design and Angular

311 lines (310 loc) 17.9 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, Input, Output, EventEmitter, ElementRef, ViewEncapsulation, HostBinding } from '@angular/core'; export class Slider { /** * @param {?} _elf */ constructor(_elf) { this._elf = _elf; this.prefixCls = 'am-slider'; this.offset = 0; this.length = 0; this._min = 0; this._max = 100; this._step = 1; this._value = 10; this._disabled = false; this._marks = {}; this._dots = false; this._included = true; this._trackStyle = {}; this.onChange = new EventEmitter(); this.onAfterChange = new EventEmitter(); this.amSliderWrapper = true; } /** * @return {?} */ get min() { return this._min; } /** * @param {?} value * @return {?} */ set min(value) { this._min = value; } /** * @return {?} */ get max() { return this._max; } /** * @param {?} value * @return {?} */ set max(value) { this._max = value; } /** * @return {?} */ get step() { return this._step; } /** * @param {?} value * @return {?} */ set step(value) { this._step = value; } /** * @return {?} */ get value() { return this._value; } /** * @param {?} value * @return {?} */ set value(value) { this._value = value; this.valueRange(); } /** * @param {?} value * @return {?} */ set defaultValue(value) { this._defaultValue = value; this._value = this._defaultValue; } /** * @return {?} */ get disabled() { return this._disabled; } /** * @param {?} value * @return {?} */ set disabled(value) { this._disabled = value; this.setCls(); } /** * @return {?} */ get marks() { return this._marks; } /** * @param {?} value * @return {?} */ set marks(value) { this._marks = value; } /** * @return {?} */ get dots() { return this._dots; } /** * @param {?} value * @return {?} */ set dots(value) { this._dots = value; } /** * @return {?} */ get included() { return this._included; } /** * @param {?} value * @return {?} */ set included(value) { this._included = value; } /** * @return {?} */ get handleStyle() { return this._handleStyle; } /** * @param {?} value * @return {?} */ set handleStyle(value) { this._handleStyle = value; } /** * @return {?} */ get trackStyle() { return this._trackStyle; } /** * @param {?} value * @return {?} */ set trackStyle(value) { this._trackStyle = value; } /** * @return {?} */ get railStyle() { return this._railStyle; } /** * @param {?} value * @return {?} */ set railStyle(value) { this._railStyle = value; } /** * @return {?} */ setCls() { this.sliderCls = { [`${this.prefixCls}-disabled`]: this._disabled }; } /** * @param {?} e * @return {?} */ handleChange(e) { setTimeout(() => { this.offset = 0; this.length = ((e - this._min) * 100) / (this._max - this._min); this._value = e; }, 10); this.onChange.emit(e); } /** * @param {?} e * @return {?} */ handleAfterChange(e) { setTimeout(() => { this.offset = 0; this.length = ((e - this._min) * 100) / (this._max - this._min); this._value = e; }, 10); this.onAfterChange.emit(e); } /** * @return {?} */ valueRange() { if (this._value < this._min) { this._value = this._min; } if (this._value > this._max) { this._value = this._max; } } /** * @return {?} */ ngOnInit() { this.setCls(); this.valueRange(); /** @type {?} */ const sliderCoords = this._elf.nativeElement.getElementsByClassName('am-slider')[0].getBoundingClientRect(); this.sliderLength = sliderCoords.width; this.sliderStart = sliderCoords.left; } } Slider.decorators = [ { type: Component, args: [{ selector: 'Slider , nzm-slider', template: "<div class=\"am-slider\" [ngClass]=\"sliderCls\">\n <div class=\"am-slider-rail\" [ngStyle]=\"railStyle\"></div>\n <SliderTrack [className]=\"'am-slider-track'\"\n [style]=\"trackStyle\"\n [offset]=\"offset\"\n [length]=\"length\"\n [included]=\"included\"\n ></SliderTrack>\n <SliderSteps [max]=\"max\"\n [min]=\"min\"\n [dots]=\"dots\"\n [step]=\"step\"\n [marks]=\"marks\"\n [lowerBound]=\"min\"\n [upperBound]=\"value\"\n [included]=\"included\"\n ></SliderSteps>\n <SliderHandle [max]=\"max\"\n [min]=\"min\"\n [value]=\"value\"\n [step]=\"step\"\n [disabled]=\"disabled\"\n [handleStyle]=\"handleStyle\"\n [sliderStart]=\"sliderStart\"\n [sliderLength]=\"sliderLength\"\n (onChange)=\"handleChange($event)\"\n (onAfterChange)=\"handleAfterChange($event)\"\n ></SliderHandle>\n <SliderMarks [max]=\"max\"\n [min]=\"min\"\n [marks]=\"marks\"\n [lowerBound]=\"min\"\n [upperBound]=\"value\"\n [included]=\"included\"\n ></SliderMarks>\n</div>", encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ Slider.ctorParameters = () => [ { type: ElementRef } ]; Slider.propDecorators = { min: [{ type: Input }], max: [{ type: Input }], step: [{ type: Input }], value: [{ type: Input }], defaultValue: [{ type: Input }], disabled: [{ type: Input }], marks: [{ type: Input }], dots: [{ type: Input }], included: [{ type: Input }], handleStyle: [{ type: Input }], trackStyle: [{ type: Input }], railStyle: [{ type: Input }], onChange: [{ type: Output }], onAfterChange: [{ type: Output }], amSliderWrapper: [{ type: HostBinding, args: ['class.am-slider-wrapper',] }] }; if (false) { /** @type {?} */ Slider.prototype.prefixCls; /** @type {?} */ Slider.prototype.sliderLength; /** @type {?} */ Slider.prototype.sliderStart; /** @type {?} */ Slider.prototype.sliderCls; /** @type {?} */ Slider.prototype.offset; /** @type {?} */ Slider.prototype.length; /** @type {?} */ Slider.prototype._min; /** @type {?} */ Slider.prototype._max; /** @type {?} */ Slider.prototype._step; /** @type {?} */ Slider.prototype._value; /** @type {?} */ Slider.prototype._defaultValue; /** @type {?} */ Slider.prototype._disabled; /** @type {?} */ Slider.prototype._marks; /** @type {?} */ Slider.prototype._dots; /** @type {?} */ Slider.prototype._included; /** @type {?} */ Slider.prototype._handleStyle; /** @type {?} */ Slider.prototype._trackStyle; /** @type {?} */ Slider.prototype._railStyle; /** @type {?} */ Slider.prototype.onChange; /** @type {?} */ Slider.prototype.onAfterChange; /** @type {?} */ Slider.prototype.amSliderWrapper; /** @type {?} */ Slider.prototype._elf; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFDTCxTQUFTLEVBRVQsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBQ1osVUFBVSxFQUNWLGlCQUFpQixFQUNqQixXQUFXLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFPdkIsTUFBTTs7OztJQWlISixZQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO3lCQWhIeEIsV0FBVztzQkFJTixDQUFDO3NCQUNELENBQUM7b0JBRUssQ0FBQztvQkFDRCxHQUFHO3FCQUNGLENBQUM7c0JBQ0EsRUFBRTt5QkFFRSxLQUFLO3NCQUNULEVBQUU7cUJBQ0YsS0FBSzt5QkFDRCxJQUFJOzJCQUVILEVBQUU7d0JBd0ZyQixJQUFJLFlBQVksRUFBTzs2QkFFbEIsSUFBSSxZQUFZLEVBQU87K0JBR1osSUFBSTtLQUVTOzs7O0lBNUZ4QyxJQUNJLEdBQUc7UUFDTCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7S0FDbEI7Ozs7O0lBQ0QsSUFBSSxHQUFHLENBQUMsS0FBYTtRQUNuQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztLQUNuQjs7OztJQUNELElBQ0ksR0FBRztRQUNMLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQztLQUNsQjs7Ozs7SUFDRCxJQUFJLEdBQUcsQ0FBQyxLQUFhO1FBQ25CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0tBQ25COzs7O0lBQ0QsSUFDSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0tBQ25COzs7OztJQUNELElBQUksSUFBSSxDQUFDLEtBQWE7UUFDcEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7S0FDcEI7Ozs7SUFDRCxJQUNJLEtB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QUFLO3VCQU9MLE1BQU07NEJBRU4sTUFBTTs4QkFHTixXQUFXLFNBQUMseUJBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgRWxlbWVudFJlZixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG4gIEhvc3RCaW5kaW5nXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTbGlkZXIgLCBuem0tc2xpZGVyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NsaWRlci5jb21wb25lbnQuaHRtbCcsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgU2xpZGVyIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJlZml4Q2xzID0gJ2FtLXNsaWRlcic7XG4gIHNsaWRlckxlbmd0aDogbnVtYmVyO1xuICBzbGlkZXJTdGFydDogbnVtYmVyO1xuICBzbGlkZXJDbHM6IG9iamVjdDtcbiAgb2Zmc2V0OiBudW1iZXIgPSAwO1xuICBsZW5ndGg6IG51bWJlciA9IDA7XG5cbiAgcHJpdmF0ZSBfbWluOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9tYXg6IG51bWJlciA9IDEwMDtcbiAgcHJpdmF0ZSBfc3RlcDogbnVtYmVyID0gMTtcbiAgcHJpdmF0ZSBfdmFsdWU6IG51bWJlciA9IDEwO1xuICBwcml2YXRlIF9kZWZhdWx0VmFsdWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgcHJpdmF0ZSBfbWFya3M6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIF9kb3RzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2luY2x1ZGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgcHJpdmF0ZSBfaGFuZGxlU3R5bGU6IG9iamVjdDtcbiAgcHJpdmF0ZSBfdHJhY2tTdHlsZTogb2JqZWN0ID0ge307XG4gIHByaXZhdGUgX3JhaWxTdHlsZTogb2JqZWN0O1xuXG4gIEBJbnB1dCgpXG4gIGdldCBtaW4oKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWluO1xuICB9XG4gIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBtYXgoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fbWF4O1xuICB9XG4gIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX21heCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBzdGVwKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX3N0ZXA7XG4gIH1cbiAgc2V0IHN0ZXAodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgdmFsdWUoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gIH1cbiAgc2V0IHZhbHVlKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl92YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMudmFsdWVSYW5nZSgpO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBkZWZhdWx0VmFsdWUodmFsdWUpIHtcbiAgICB0aGlzLl9kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLl92YWx1ZSA9IHRoaXMuX2RlZmF1bHRWYWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICB9XG4gIHNldCBkaXNhYmxlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsdWU7XG4gICAgdGhpcy5zZXRDbHMoKTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgbWFya3MoKTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5fbWFya3M7XG4gIH1cbiAgc2V0IG1hcmtzKHZhbHVlOiBvYmplY3QpIHtcbiAgICB0aGlzLl9tYXJrcyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBkb3RzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9kb3RzO1xuICB9XG4gIHNldCBkb3RzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZG90cyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCBpbmNsdWRlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faW5jbHVkZWQ7XG4gIH1cbiAgc2V0IGluY2x1ZGVkKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5faW5jbHVkZWQgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgaGFuZGxlU3R5bGUoKTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5faGFuZGxlU3R5bGU7XG4gIH1cbiAgc2V0IGhhbmRsZVN0eWxlKHZhbHVlOiBvYmplY3QpIHtcbiAgICB0aGlzLl9oYW5kbGVTdHlsZSA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIGdldCB0cmFja1N0eWxlKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX3RyYWNrU3R5bGU7XG4gIH1cbiAgc2V0IHRyYWNrU3R5bGUodmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX3RyYWNrU3R5bGUgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBnZXQgcmFpbFN0eWxlKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuX3JhaWxTdHlsZTtcbiAgfVxuICBzZXQgcmFpbFN0eWxlKHZhbHVlOiBvYmplY3QpIHtcbiAgICB0aGlzLl9yYWlsU3R5bGUgPSB2YWx1ZTtcbiAgfVxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpXG4gIG9uQWZ0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFtLXNsaWRlci13cmFwcGVyJylcbiAgYW1TbGlkZXJXcmFwcGVyOiBib29sZWFuID0gdHJ1ZTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgc2V0Q2xzKCkge1xuICAgIHRoaXMuc2xpZGVyQ2xzID0ge1xuICAgICAgW2Ake3RoaXMucHJlZml4Q2xzfS1kaXNhYmxlZGBdOiB0aGlzLl9kaXNhYmxlZFxuICAgIH07XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UoZSkge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5vZmZzZXQgPSAwO1xuICAgICAgdGhpcy5sZW5ndGggPSAoKGUgLSB0aGlzLl9taW4pICogMTAwKSAvICh0aGlzLl9tYXggLSB0aGlzLl9taW4pO1xuICAgICAgdGhpcy5fdmFsdWUgPSBlO1xuICAgIH0sIDEwKTtcbiAgICB0aGlzLm9uQ2hhbmdlLmVtaXQoZSk7XG4gIH1cblxuICBoYW5kbGVBZnRlckNoYW5nZShlKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLm9mZnNldCA9IDA7XG4gICAgICB0aGlzLmxlbmd0aCA9ICgoZSAtIHRoaXMuX21pbikgKiAxMDApIC8gKHRoaXMuX21heCAtIHRoaXMuX21pbik7XG4gICAgICB0aGlzLl92YWx1ZSA9IGU7XG4gICAgfSwgMTApO1xuICAgIHRoaXMub25BZnRlckNoYW5nZS5lbWl0KGUpO1xuICB9XG5cbiAgdmFsdWVSYW5nZSgpIHtcbiAgICBpZiAodGhpcy5fdmFsdWUgPCB0aGlzLl9taW4pIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fbWluO1xuICAgIH1cbiAgICBpZiAodGhpcy5fdmFsdWUgPiB0aGlzLl9tYXgpIHtcbiAgICAgIHRoaXMuX3ZhbHVlID0gdGhpcy5fbWF4O1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc2V0Q2xzKCk7XG4gICAgdGhpcy52YWx1ZVJhbmdlKCk7XG4gICAgY29uc3Qgc2xpZGVyQ29vcmRzID0gdGhpcy5fZWxmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnYW0tc2xpZGVyJylbMF0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgdGhpcy5zbGlkZXJMZW5ndGggPSBzbGlkZXJDb29yZHMud2lkdGg7XG4gICAgdGhpcy5zbGlkZXJTdGFydCA9IHNsaWRlckNvb3Jkcy5sZWZ0O1xuICB9XG59XG4iXX0=