UNPKG

ng-zorro-antd-mobile

Version:

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

271 lines (270 loc) 17.4 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, HostBinding, ViewEncapsulation } from '@angular/core'; var SliderSteps = /** @class */ (function () { function SliderSteps(_elf) { this._elf = _elf; this.prefixCls = 'am-slider'; this.stepArray = []; this._min = 0; this._max = 100; this._marks = {}; this._included = true; this._dots = false; } Object.defineProperty(SliderSteps.prototype, "min", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value <= this._max) { this._min = value; } }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "max", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value >= this._min) { this._max = value; } }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "marks", { set: /** * @param {?} value * @return {?} */ function (value) { this._marks = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "step", { set: /** * @param {?} value * @return {?} */ function (value) { this._step = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "included", { set: /** * @param {?} value * @return {?} */ function (value) { this._included = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "dots", { set: /** * @param {?} value * @return {?} */ function (value) { this._dots = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "upperBound", { set: /** * @param {?} value * @return {?} */ function (value) { if (value !== undefined && value !== this._upperBound) { this._upperBound = value; this.setActiveCls(); } }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "lowerBound", { set: /** * @param {?} value * @return {?} */ function (value) { if (value !== undefined && value !== this.lowerBound) { this._lowerBound = value; this.setActiveCls(); } }, enumerable: true, configurable: true }); Object.defineProperty(SliderSteps.prototype, "class", { get: /** * @return {?} */ function () { return 'am-slider-step'; }, enumerable: true, configurable: true }); /** * @return {?} */ SliderSteps.prototype.calPoints = /** * @return {?} */ function () { /** @type {?} */ var points = Object.keys(this._marks).map(parseFloat); if (this._dots) { for (var i = this._min; i <= this._max; i = i + this._step) { if (points.indexOf(i) < 0) { points.push(i); } } } return points; }; /** * @param {?} points * @return {?} */ SliderSteps.prototype.getSteps = /** * @param {?} points * @return {?} */ function (points) { var _this = this; /** @type {?} */ var range = this._max - this._min; this.stepArray = []; points.map(function (point) { var _a; /** @type {?} */ var stepItem = { stepStyle: {}, stepClass: {}, point: null }; /** @type {?} */ var offset = (Math.abs(point - _this._min) / range) * 100 + "%"; /** @type {?} */ var isActived = (!_this._included && point === _this._upperBound) || (_this._included && point <= _this._upperBound && point >= _this._lowerBound); /** @type {?} */ var style = tslib_1.__assign({ left: offset }, _this._dotStyle); if (isActived) { style = tslib_1.__assign({}, style, _this._activeDotStyle); } /** @type {?} */ var pointClassName = (_a = {}, _a[_this.prefixCls + "-dot"] = true, _a[_this.prefixCls + "-dot-active"] = isActived, _a); stepItem.point = point; stepItem.stepStyle = style; stepItem.stepClass = pointClassName; _this.stepArray.push(stepItem); }); }; /** * @return {?} */ SliderSteps.prototype.setActiveCls = /** * @return {?} */ function () { var _a; for (var i = 0; i < this.stepArray.length; i++) { /** @type {?} */ var point = this.stepArray[i].point; /** @type {?} */ var isActived = (!this._included && point === this._upperBound) || (this._included && point <= this._upperBound && point >= this._lowerBound); this.stepArray[i].stepClass = (_a = {}, _a[this.prefixCls + "-dot"] = true, _a[this.prefixCls + "-dot-active"] = isActived, _a); } }; /** * @return {?} */ SliderSteps.prototype.ngOnInit = /** * @return {?} */ function () { /** @type {?} */ var 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 = function () { return [ { 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 }] }; return SliderSteps; }()); export { SliderSteps }; 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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXN0ZXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci1zdGVwcy9zbGlkZXItc3RlcHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7SUFzRW5HLHFCQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO3lCQTlEeEIsV0FBVzt5QkFDWCxFQUFFO29CQUVTLENBQUM7b0JBQ0QsR0FBRztzQkFFRCxFQUFFO3lCQUNFLElBQUk7cUJBR1IsS0FBSztLQW9EVTtJQWhEeEMsc0JBQ0ksNEJBQUc7Ozs7O1FBRFAsVUFDUSxLQUFhO1lBQ25CLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNuQjtTQUNGOzs7T0FBQTtJQUNELHNCQUNJLDRCQUFHOzs7OztRQURQLFVBQ1EsS0FBYTtZQUNuQixJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7YUFDbkI7U0FDRjs7O09BQUE7SUFDRCxzQkFDSSw4QkFBSzs7Ozs7UUFEVCxVQUNVLEtBQWE7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7U0FDckI7OztPQUFBO0lBQ0Qsc0JBQ0ksNkJBQUk7Ozs7O1FBRFIsVUFDUyxLQUFhO1lBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1NBQ3BCOzs7T0FBQTtJQUNELHNCQUNJLGlDQUFROzs7OztRQURaLFVBQ2EsS0FBYztZQUN6QixJQUFJLENBQUMs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d0JBTUwsS0FBSzt1QkFJTCxLQUFLOzJCQUlMLEtBQUs7dUJBSUwsS0FBSzs2QkFJTCxLQUFLOzZCQU9MLEtBQUs7d0JBUUwsV0FBVzs7c0JBakVkOztTQU9hLFdBQVciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIEhvc3RCaW5kaW5nLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTbGlkZXJTdGVwcywgbnptLXNsaWRlci1zdGVwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXItc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlclN0ZXBzIGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJlZml4Q2xzID0gJ2FtLXNsaWRlcic7XG4gIHN0ZXBBcnJheSA9IFtdO1xuXG4gIHByaXZhdGUgX21pbjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgX3N0ZXA6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWFya3M6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIF9pbmNsdWRlZDogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX3VwcGVyQm91bmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbG93ZXJCb3VuZDogbnVtYmVyO1xuICBwcml2YXRlIF9kb3RzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvdFN0eWxlOiBvYmplY3Q7XG4gIHByaXZhdGUgX2FjdGl2ZURvdFN0eWxlOiBvYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlIDw9IHRoaXMuX21heCkge1xuICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA+PSB0aGlzLl9taW4pIHtcbiAgICAgIHRoaXMuX21heCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBzZXQgbWFya3ModmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX21hcmtzID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHN0ZXAodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaW5jbHVkZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBkb3RzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZG90cyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB1cHBlckJvdW5kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gdGhpcy5fdXBwZXJCb3VuZCkge1xuICAgICAgdGhpcy5fdXBwZXJCb3VuZCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRBY3RpdmVDbHMoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGxvd2VyQm91bmQodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSB0aGlzLmxvd2VyQm91bmQpIHtcbiAgICAgIHRoaXMuX2xvd2VyQm91bmQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlQ2xzKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKClcbiAgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiAnYW0tc2xpZGVyLXN0ZXAnO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxmOiBFbGVtZW50UmVmKSB7fVxuXG4gIGNhbFBvaW50cygpIHtcbiAgICBjb25zdCBwb2ludHMgPSBPYmplY3Qua2V5cyh0aGlzLl9tYXJrcykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGlmICh0aGlzLl9kb3RzKSB7XG4gICAgICBmb3IgKGxldCBpID0gdGhpcy5fbWluOyBpIDw9IHRoaXMuX21heDsgaSA9IGkgKyB0aGlzLl9zdGVwKSB7XG4gICAgICAgIGlmIChwb2ludHMuaW5kZXhPZihpKSA8IDApIHtcbiAgICAgICAgICBwb2ludHMucHVzaChpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcG9pbnRzO1xuICB9XG5cbiAgZ2V0U3RlcHMocG9pbnRzKSB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLl9tYXggLSB0aGlzLl9taW47XG4gICAgdGhpcy5zdGVwQXJyYXkgPSBbXTtcbiAgICBwb2ludHMubWFwKHBvaW50ID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBJdGVtID0ge1xuICAgICAgICBzdGVwU3R5bGU6IHt9LFxuICAgICAgICBzdGVwQ2xhc3M6IHt9LFxuICAgICAgICBwb2ludDogbnVsbFxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGAkeyhNYXRoLmFicyhwb2ludCAtIHRoaXMuX21pbikgLyByYW5nZSkgKiAxMDB9JWA7XG4gICAgICBjb25zdCBpc0FjdGl2ZWQgPVxuICAgICAgICAoIXRoaXMuX2luY2x1ZGVkICYmIHBvaW50ID09PSB0aGlzLl91cHBlckJvdW5kKSB8fFxuICAgICAgICAodGhpcy5faW5jbHVkZWQgJiYgcG9pbnQgPD0gdGhpcy5fdXBwZXJCb3VuZCAmJiBwb2ludCA+PSB0aGlzLl9sb3dlckJvdW5kKTtcbiAgICAgIGxldCBzdHlsZSA9IHsgbGVmdDogb2Zmc2V0LCAuLi50aGlzLl9kb3RTdHlsZSB9O1xuICAgICAgaWYgKGlzQWN0aXZlZCkge1xuICAgICAgICBzdHlsZSA9IHsgLi4uc3R5bGUsIC4uLnRoaXMuX2FjdGl2ZURvdFN0eWxlIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBvaW50Q2xhc3NOYW1lID0ge1xuICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdGBdOiB0cnVlLFxuICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdC1hY3RpdmVgXTogaXNBY3RpdmVkXG4gICAgICB9O1xuICAgICAgc3RlcEl0ZW0ucG9pbnQgPSBwb2ludDtcbiAgICAgIHN0ZXBJdGVtLnN0ZXBTdHlsZSA9IHN0eWxlO1xuICAgICAgc3RlcEl0ZW0uc3RlcENsYXNzID0gcG9pbnRDbGFzc05hbWU7XG4gICAgICB0aGlzLnN0ZXBBcnJheS5wdXNoKHN0ZXBJdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEFjdGl2ZUNscygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwb2ludCA9IHRoaXMuc3RlcEFycmF5W2ldLnBvaW50O1xuICAgICAgY29uc3QgaXNBY3RpdmVkID1cbiAgICAgICAgKCF0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA9PT0gdGhpcy5fdXBwZXJCb3VuZCkgfHxcbiAgICAgICAgKHRoaXMuX2luY2x1ZGVkICYmIHBvaW50IDw9IHRoaXMuX3VwcGVyQm91bmQgJiYgcG9pbnQgPj0gdGhpcy5fbG93ZXJCb3VuZCk7XG4gICAgICB0aGlzLnN0ZXBBcnJheVtpXS5zdGVwQ2xhc3MgPSB7XG4gICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tZG90YF06IHRydWUsXG4gICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tZG90LWFjdGl2ZWBdOiBpc0FjdGl2ZWRcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5jYWxQb2ludHMoKTtcbiAgICB0aGlzLmdldFN0ZXBzKHBvaW50cyk7XG4gIH1cbn1cbiJdfQ==