UNPKG

ng-zorro-antd-mobile

Version:

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

219 lines (218 loc) 15.2 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import { Component, ElementRef, Input, HostBinding, ViewEncapsulation } from '@angular/core'; export class SliderSteps { /** * @param {?} _elf */ constructor(_elf) { this._elf = _elf; this.prefixCls = 'am-slider'; this.stepArray = []; this._min = 0; this._max = 100; this._marks = {}; this._included = true; this._dots = false; } /** * @param {?} value * @return {?} */ set min(value) { if (value && value <= this._max) { this._min = value; } } /** * @param {?} value * @return {?} */ set max(value) { if (value && value >= this._min) { this._max = value; } } /** * @param {?} value * @return {?} */ set marks(value) { this._marks = value; } /** * @param {?} value * @return {?} */ set step(value) { this._step = value; } /** * @param {?} value * @return {?} */ set included(value) { this._included = value; } /** * @param {?} value * @return {?} */ set dots(value) { this._dots = value; } /** * @param {?} value * @return {?} */ set upperBound(value) { if (value !== undefined && value !== this._upperBound) { this._upperBound = value; this.setActiveCls(); } } /** * @param {?} value * @return {?} */ set lowerBound(value) { if (value !== undefined && value !== this.lowerBound) { this._lowerBound = value; this.setActiveCls(); } } /** * @return {?} */ get class() { return 'am-slider-step'; } /** * @return {?} */ calPoints() { /** @type {?} */ const points = Object.keys(this._marks).map(parseFloat); if (this._dots) { for (let i = this._min; i <= this._max; i = i + this._step) { if (points.indexOf(i) < 0) { points.push(i); } } } return points; } /** * @param {?} points * @return {?} */ getSteps(points) { /** @type {?} */ const range = this._max - this._min; this.stepArray = []; points.map(point => { /** @type {?} */ const stepItem = { stepStyle: {}, stepClass: {}, point: null }; /** @type {?} */ const offset = `${(Math.abs(point - this._min) / range) * 100}%`; /** @type {?} */ const isActived = (!this._included && point === this._upperBound) || (this._included && point <= this._upperBound && point >= this._lowerBound); /** @type {?} */ let style = Object.assign({ left: offset }, this._dotStyle); if (isActived) { style = Object.assign({}, style, this._activeDotStyle); } /** @type {?} */ const pointClassName = { [`${this.prefixCls}-dot`]: true, [`${this.prefixCls}-dot-active`]: isActived }; stepItem.point = point; stepItem.stepStyle = style; stepItem.stepClass = pointClassName; this.stepArray.push(stepItem); }); } /** * @return {?} */ setActiveCls() { for (let i = 0; i < this.stepArray.length; i++) { /** @type {?} */ const point = this.stepArray[i].point; /** @type {?} */ const isActived = (!this._included && point === this._upperBound) || (this._included && point <= this._upperBound && point >= this._lowerBound); this.stepArray[i].stepClass = { [`${this.prefixCls}-dot`]: true, [`${this.prefixCls}-dot-active`]: isActived }; } } /** * @return {?} */ ngOnInit() { /** @type {?} */ const points = this.calPoints(); this.getSteps(points); } } SliderSteps.decorators = [ { type: Component, args: [{ selector: 'SliderSteps, nzm-slider-steps', template: "<span *ngFor=\"let item of stepArray\"\n [ngClass]=\"item.stepClass\"\n [ngStyle]=\"item.stepStyle\">\n</span>", encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ SliderSteps.ctorParameters = () => [ { type: ElementRef } ]; SliderSteps.propDecorators = { min: [{ type: Input }], max: [{ type: Input }], marks: [{ type: Input }], step: [{ type: Input }], included: [{ type: Input }], dots: [{ type: Input }], upperBound: [{ type: Input }], lowerBound: [{ type: Input }], class: [{ type: HostBinding }] }; if (false) { /** @type {?} */ SliderSteps.prototype.prefixCls; /** @type {?} */ SliderSteps.prototype.stepArray; /** @type {?} */ SliderSteps.prototype._min; /** @type {?} */ SliderSteps.prototype._max; /** @type {?} */ SliderSteps.prototype._step; /** @type {?} */ SliderSteps.prototype._marks; /** @type {?} */ SliderSteps.prototype._included; /** @type {?} */ SliderSteps.prototype._upperBound; /** @type {?} */ SliderSteps.prototype._lowerBound; /** @type {?} */ SliderSteps.prototype._dots; /** @type {?} */ SliderSteps.prototype._dotStyle; /** @type {?} */ SliderSteps.prototype._activeDotStyle; /** @type {?} */ SliderSteps.prototype._elf; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXN0ZXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci1zdGVwcy9zbGlkZXItc3RlcHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFVLFVBQVUsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBT3JHLE1BQU07Ozs7SUErREosWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTt5QkE5RHhCLFdBQVc7eUJBQ1gsRUFBRTtvQkFFUyxDQUFDO29CQUNELEdBQUc7c0JBRUQsRUFBRTt5QkFDRSxJQUFJO3FCQUdSLEtBQUs7S0FvRFU7Ozs7O0lBaER4QyxJQUNJLEdBQUcsQ0FBQyxLQUFhO1FBQ25CLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO1NBQ25CO0tBQ0Y7Ozs7O0lBQ0QsSUFDSSxHQUFHLENBQUMsS0FBYTtRQUNuQixJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztTQUNuQjtLQUNGOzs7OztJQUNELElBQ0ksS0FBSyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7S0FDckI7Ozs7O0lBQ0QsSUFDSSxJQUFJLENBQUMsS0FBYTtRQUNwQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztLQUNwQjs7Ozs7SUFDRCxJQUNJLFFBQVEsQ0FBQyxLQUFjO1FBQ3pCLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0tBQ3hCOzs7OztJQUNELElBQ0ksSUFBSSxDQUFDLEtBQWM7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b25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIEhvc3RCaW5kaW5nLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTbGlkZXJTdGVwcywgbnptLXNsaWRlci1zdGVwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXItc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlclN0ZXBzIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJlZml4Q2xzID0gJ2FtLXNsaWRlcic7XG4gIHN0ZXBBcnJheSA9IFtdO1xuXG4gIHByaXZhdGUgX21pbjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgX3N0ZXA6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWFya3M6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIF9pbmNsdWRlZDogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX3VwcGVyQm91bmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbG93ZXJCb3VuZDogbnVtYmVyO1xuICBwcml2YXRlIF9kb3RzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvdFN0eWxlOiBvYmplY3Q7XG4gIHByaXZhdGUgX2FjdGl2ZURvdFN0eWxlOiBvYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlIDw9IHRoaXMuX21heCkge1xuICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA+PSB0aGlzLl9taW4pIHtcbiAgICAgIHRoaXMuX21heCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBzZXQgbWFya3ModmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX21hcmtzID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHN0ZXAodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaW5jbHVkZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBkb3RzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZG90cyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB1cHBlckJvdW5kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gdGhpcy5fdXBwZXJCb3VuZCkge1xuICAgICAgdGhpcy5fdXBwZXJCb3VuZCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRBY3RpdmVDbHMoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGxvd2VyQm91bmQodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSB0aGlzLmxvd2VyQm91bmQpIHtcbiAgICAgIHRoaXMuX2xvd2VyQm91bmQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlQ2xzKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKClcbiAgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiAnYW0tc2xpZGVyLXN0ZXAnO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxmOiBFbGVtZW50UmVmKSB7fVxuXG4gIGNhbFBvaW50cygpIHtcbiAgICBjb25zdCBwb2ludHMgPSBPYmplY3Qua2V5cyh0aGlzLl9tYXJrcykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGlmICh0aGlzLl9kb3RzKSB7XG4gICAgICBmb3IgKGxldCBpID0gdGhpcy5fbWluOyBpIDw9IHRoaXMuX21heDsgaSA9IGkgKyB0aGlzLl9zdGVwKSB7XG4gICAgICAgIGlmIChwb2ludHMuaW5kZXhPZihpKSA8IDApIHtcbiAgICAgICAgICBwb2ludHMucHVzaChpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcG9pbnRzO1xuICB9XG5cbiAgZ2V0U3RlcHMocG9pbnRzKSB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLl9tYXggLSB0aGlzLl9taW47XG4gICAgdGhpcy5zdGVwQXJyYXkgPSBbXTtcbiAgICBwb2ludHMubWFwKHBvaW50ID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBJdGVtID0ge1xuICAgICAgICBzdGVwU3R5bGU6IHt9LFxuICAgICAgICBzdGVwQ2xhc3M6IHt9LFxuICAgICAgICBwb2ludDogbnVsbFxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGAkeyhNYXRoLmFicyhwb2ludCAtIHRoaXMuX21pbikgLyByYW5nZSkgKiAxMDB9JWA7XG4gICAgICBjb25zdCBpc0FjdGl2ZWQgPVxuICAgICAgICAoIXRoaXMuX2luY2x1ZGVkICYmIHBvaW50ID09PSB0aGlzLl91cHBlckJvdW5kKSB8fFxuICAgICAgICAodGhpcy5faW5jbHVkZWQgJiYgcG9pbnQgPD0gdGhpcy5fdXBwZXJCb3VuZCAmJiBwb2ludCA+PSB0aGlzLl9sb3dlckJvdW5kKTtcbiAgICAgIGxldCBzdHlsZSA9IHsgbGVmdDogb2Zmc2V0LCAuLi50aGlzLl9kb3RTdHlsZSB9O1xuICAgICAgaWYgKGlzQWN0aXZlZCkge1xuICAgICAgICBzdHlsZSA9IHsgLi4uc3R5bGUsIC4uLnRoaXMuX2FjdGl2ZURvdFN0eWxlIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBvaW50Q2xhc3NOYW1lID0ge1xuICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdGBdOiB0cnVlLFxuICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdC1hY3RpdmVgXTogaXNBY3RpdmVkXG4gICAgICB9O1xuICAgICAgc3RlcEl0ZW0ucG9pbnQgPSBwb2ludDtcbiAgICAgIHN0ZXBJdGVtLnN0ZXBTdHlsZSA9IHN0eWxlO1xuICAgICAgc3RlcEl0ZW0uc3RlcENsYXNzID0gcG9pbnRDbGFzc05hbWU7XG4gICAgICB0aGlzLnN0ZXBBcnJheS5wdXNoKHN0ZXBJdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEFjdGl2ZUNscygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwb2ludCA9IHRoaXMuc3RlcEFycmF5W2ldLnBvaW50O1xuICAgICAgY29uc3QgaXNBY3RpdmVkID1cbiAgICAgICAgKCF0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA9PT0gdGhpcy5fdXBwZXJCb3VuZCkgfHxcbiAgICAgICAgKHRoaXMuX2luY2x1ZGVkICYmIHBvaW50IDw9IHRoaXMuX3VwcGVyQm91bmQgJiYgcG9pbnQgPj0gdGhpcy5fbG93ZXJCb3VuZCk7XG4gICAgICB0aGlzLnN0ZXBBcnJheVtpXS5zdGVwQ2xhc3MgPSB7XG4gICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tZG90YF06IHRydWUsXG4gICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tZG90LWFjdGl2ZWBdOiBpc0FjdGl2ZWRcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5jYWxQb2ludHMoKTtcbiAgICB0aGlzLmdldFN0ZXBzKHBvaW50cyk7XG4gIH1cbn1cbiJdfQ==