UNPKG

ng-zorro-antd-mobile

Version:

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

307 lines 18.6 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import * as tslib_1 from "tslib"; import { Component, ElementRef, Input, HostBinding, ViewEncapsulation } from '@angular/core'; var SliderStepsComponent = /** @class */ (function () { function SliderStepsComponent(_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(SliderStepsComponent.prototype, "min", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value <= this._max) { this._min = value; } }, enumerable: true, configurable: true }); Object.defineProperty(SliderStepsComponent.prototype, "max", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value >= this._min) { this._max = value; } }, enumerable: true, configurable: true }); Object.defineProperty(SliderStepsComponent.prototype, "marks", { set: /** * @param {?} value * @return {?} */ function (value) { this._marks = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderStepsComponent.prototype, "step", { set: /** * @param {?} value * @return {?} */ function (value) { this._step = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderStepsComponent.prototype, "included", { set: /** * @param {?} value * @return {?} */ function (value) { this._included = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderStepsComponent.prototype, "dots", { set: /** * @param {?} value * @return {?} */ function (value) { this._dots = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderStepsComponent.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(SliderStepsComponent.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(SliderStepsComponent.prototype, "class", { get: /** * @return {?} */ function () { return 'am-slider-step'; }, enumerable: true, configurable: true }); /** * @return {?} */ SliderStepsComponent.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 {?} */ SliderStepsComponent.prototype.getSteps = /** * @param {?} points * @return {?} */ function (points) { var _this = this; /** @type {?} */ var range = this._max - this._min; this.stepArray = []; points.map((/** * @param {?} point * @return {?} */ 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 {?} */ SliderStepsComponent.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 {?} */ SliderStepsComponent.prototype.ngOnInit = /** * @return {?} */ function () { /** @type {?} */ var points = this.calPoints(); this.getSteps(points); }; SliderStepsComponent.decorators = [ { type: Component, args: [{ selector: 'SliderSteps, nzm-slider-steps', template: "<span *ngFor=\"let item of stepArray\" [ngClass]=\"item.stepClass\" [ngStyle]=\"item.stepStyle\"> </span>\n", encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ SliderStepsComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; SliderStepsComponent.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 SliderStepsComponent; }()); export { SliderStepsComponent }; if (false) { /** @type {?} */ SliderStepsComponent.prototype.prefixCls; /** @type {?} */ SliderStepsComponent.prototype.stepArray; /** * @type {?} * @private */ SliderStepsComponent.prototype._min; /** * @type {?} * @private */ SliderStepsComponent.prototype._max; /** * @type {?} * @private */ SliderStepsComponent.prototype._step; /** * @type {?} * @private */ SliderStepsComponent.prototype._marks; /** * @type {?} * @private */ SliderStepsComponent.prototype._included; /** * @type {?} * @private */ SliderStepsComponent.prototype._upperBound; /** * @type {?} * @private */ SliderStepsComponent.prototype._lowerBound; /** * @type {?} * @private */ SliderStepsComponent.prototype._dots; /** * @type {?} * @private */ SliderStepsComponent.prototype._dotStyle; /** * @type {?} * @private */ SliderStepsComponent.prototype._activeDotStyle; /** * @type {?} * @private */ SliderStepsComponent.prototype._elf; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLXN0ZXBzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci1zdGVwcy9zbGlkZXItc3RlcHMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxVQUFVLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVyRztJQW9FRSw4QkFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQTlEcEMsY0FBUyxHQUFHLFdBQVcsQ0FBQztRQUN4QixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBRVAsU0FBSSxHQUFXLENBQUMsQ0FBQztRQUNqQixTQUFJLEdBQVcsR0FBRyxDQUFDO1FBRW5CLFdBQU0sR0FBVyxFQUFFLENBQUM7UUFDcEIsY0FBUyxHQUFZLElBQUksQ0FBQztRQUcxQixVQUFLLEdBQVksS0FBSyxDQUFDO0lBb0RRLENBQUM7SUFoRHhDLHNCQUNJLHFDQUFHOzs7OztRQURQLFVBQ1EsS0FBYTtZQUNuQixJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7YUFDbkI7UUFDSCxDQUFDOzs7T0FBQTtJQUNELHNCQUNJLHFDQUFHOzs7OztRQURQLFVBQ1EsS0FBYTtZQUNuQixJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7YUFDbkI7UUFDSCxDQUFDOzs7T0FBQTtJQUNELHNCQUNJLHVDQUFLOzs7OztRQURULFVBQ1UsS0FBYTtZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztRQUN0QixDQUFDOzs7T0FBQTtJQUNELHNCQUNJ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K0JBQStCO29CQUN6Qyx1SEFBNEM7b0JBQzVDLGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO2lCQUN0Qzs7OztnQkFOMkIsVUFBVTs7O3NCQXNCbkMsS0FBSztzQkFNTCxLQUFLO3dCQU1MLEtBQUs7dUJBSUwsS0FBSzsyQkFJTCxLQUFLO3VCQUlMLEtBQUs7NkJBSUwsS0FBSzs2QkFPTCxLQUFLO3dCQVFMLFdBQVc7O0lBaUVkLDJCQUFDO0NBQUEsQUFoSUQsSUFnSUM7U0EzSFksb0JBQW9COzs7SUFDL0IseUNBQXdCOztJQUN4Qix5Q0FBZTs7Ozs7SUFFZixvQ0FBeUI7Ozs7O0lBQ3pCLG9DQUEyQjs7Ozs7SUFDM0IscUNBQXNCOzs7OztJQUN0QixzQ0FBNEI7Ozs7O0lBQzVCLHlDQUFrQzs7Ozs7SUFDbEMsMkNBQTRCOzs7OztJQUM1QiwyQ0FBNEI7Ozs7O0lBQzVCLHFDQUErQjs7Ozs7SUFDL0IseUNBQTBCOzs7OztJQUMxQiwrQ0FBZ0M7Ozs7O0lBa0RwQixvQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgRWxlbWVudFJlZiwgSW5wdXQsIEhvc3RCaW5kaW5nLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTbGlkZXJTdGVwcywgbnptLXNsaWRlci1zdGVwcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXItc3RlcHMuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlclN0ZXBzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJlZml4Q2xzID0gJ2FtLXNsaWRlcic7XG4gIHN0ZXBBcnJheSA9IFtdO1xuXG4gIHByaXZhdGUgX21pbjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgX3N0ZXA6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbWFya3M6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIF9pbmNsdWRlZDogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX3VwcGVyQm91bmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbG93ZXJCb3VuZDogbnVtYmVyO1xuICBwcml2YXRlIF9kb3RzOiBib29sZWFuID0gZmFsc2U7XG4gIHByaXZhdGUgX2RvdFN0eWxlOiBvYmplY3Q7XG4gIHByaXZhdGUgX2FjdGl2ZURvdFN0eWxlOiBvYmplY3Q7XG5cbiAgQElucHV0KClcbiAgc2V0IG1pbih2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlIDw9IHRoaXMuX21heCkge1xuICAgICAgdGhpcy5fbWluID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBtYXgodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA+PSB0aGlzLl9taW4pIHtcbiAgICAgIHRoaXMuX21heCA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBzZXQgbWFya3ModmFsdWU6IG9iamVjdCkge1xuICAgIHRoaXMuX21hcmtzID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHN0ZXAodmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3N0ZXAgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaW5jbHVkZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBkb3RzKHZhbHVlOiBib29sZWFuKSB7XG4gICAgdGhpcy5fZG90cyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB1cHBlckJvdW5kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgIT09IHVuZGVmaW5lZCAmJiB2YWx1ZSAhPT0gdGhpcy5fdXBwZXJCb3VuZCkge1xuICAgICAgdGhpcy5fdXBwZXJCb3VuZCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRBY3RpdmVDbHMoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGxvd2VyQm91bmQodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSB0aGlzLmxvd2VyQm91bmQpIHtcbiAgICAgIHRoaXMuX2xvd2VyQm91bmQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlQ2xzKCk7XG4gICAgfVxuICB9XG5cbiAgQEhvc3RCaW5kaW5nKClcbiAgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiAnYW0tc2xpZGVyLXN0ZXAnO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBfZWxmOiBFbGVtZW50UmVmKSB7fVxuXG4gIGNhbFBvaW50cygpIHtcbiAgICBjb25zdCBwb2ludHMgPSBPYmplY3Qua2V5cyh0aGlzLl9tYXJrcykubWFwKHBhcnNlRmxvYXQpO1xuICAgIGlmICh0aGlzLl9kb3RzKSB7XG4gICAgICBmb3IgKGxldCBpID0gdGhpcy5fbWluOyBpIDw9IHRoaXMuX21heDsgaSA9IGkgKyB0aGlzLl9zdGVwKSB7XG4gICAgICAgIGlmIChwb2ludHMuaW5kZXhPZihpKSA8IDApIHtcbiAgICAgICAgICBwb2ludHMucHVzaChpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcG9pbnRzO1xuICB9XG5cbiAgZ2V0U3RlcHMocG9pbnRzKSB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLl9tYXggLSB0aGlzLl9taW47XG4gICAgdGhpcy5zdGVwQXJyYXkgPSBbXTtcbiAgICBwb2ludHMubWFwKHBvaW50ID0+IHtcbiAgICAgIGNvbnN0IHN0ZXBJdGVtID0ge1xuICAgICAgICBzdGVwU3R5bGU6IHt9LFxuICAgICAgICBzdGVwQ2xhc3M6IHt9LFxuICAgICAgICBwb2ludDogbnVsbFxuICAgICAgfTtcbiAgICAgIGNvbnN0IG9mZnNldCA9IGAkeyhNYXRoLmFicyhwb2ludCAtIHRoaXMuX21pbikgLyByYW5nZSkgKiAxMDB9JWA7XG4gICAgICBjb25zdCBpc0FjdGl2ZWQgPVxuICAgICAgICAoIXRoaXMuX2luY2x1ZGVkICYmIHBvaW50ID09PSB0aGlzLl91cHBlckJvdW5kKSB8fFxuICAgICAgICAodGhpcy5faW5jbHVkZWQgJiYgcG9pbnQgPD0gdGhpcy5fdXBwZXJCb3VuZCAmJiBwb2ludCA+PSB0aGlzLl9sb3dlckJvdW5kKTtcbiAgICAgIGxldCBzdHlsZSA9IHsgbGVmdDogb2Zmc2V0LCAuLi50aGlzLl9kb3RTdHlsZSB9O1xuICAgICAgaWYgKGlzQWN0aXZlZCkge1xuICAgICAgICBzdHlsZSA9IHsgLi4uc3R5bGUsIC4uLnRoaXMuX2FjdGl2ZURvdFN0eWxlIH07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHBvaW50Q2xhc3NOYW1lID0ge1xuICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdGBdOiB0cnVlLFxuICAgICAgICBbYCR7dGhpcy5wcmVmaXhDbHN9LWRvdC1hY3RpdmVgXTogaXNBY3RpdmVkXG4gICAgICB9O1xuICAgICAgc3RlcEl0ZW0ucG9pbnQgPSBwb2ludDtcbiAgICAgIHN0ZXBJdGVtLnN0ZXBTdHlsZSA9IHN0eWxlO1xuICAgICAgc3RlcEl0ZW0uc3RlcENsYXNzID0gcG9pbnRDbGFzc05hbWU7XG4gICAgICB0aGlzLnN0ZXBBcnJheS5wdXNoKHN0ZXBJdGVtKTtcbiAgICB9KTtcbiAgfVxuXG4gIHNldEFjdGl2ZUNscygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuc3RlcEFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwb2ludCA9IHRoaXMuc3RlcEFycmF5W2ldLnBvaW50O1xuICAgICAgY29uc3QgaXNBY3RpdmVkID1cbiAgICAgICAgKCF0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA9PT0gdGhpcy5fdXBwZXJCb3VuZCkgfHxcbiAgICAgICAgKHRoaXMuX2luY2x1ZGVkICYmIHBvaW50IDw9IHRoaXMuX3VwcGVyQm91bmQgJiYgcG9pbnQgPj0gdGhpcy5fbG93ZXJCb3VuZCk7XG4gICAgICB0aGlzLnN0ZXBBcnJheVtpXS5zdGVwQ2xhc3MgPSB7XG4gICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tZG90YF06IHRydWUsXG4gICAgICAgIFtgJHt0aGlzLnByZWZpeENsc30tZG90LWFjdGl2ZWBdOiBpc0FjdGl2ZWRcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgcG9pbnRzID0gdGhpcy5jYWxQb2ludHMoKTtcbiAgICB0aGlzLmdldFN0ZXBzKHBvaW50cyk7XG4gIH1cbn1cbiJdfQ==