ng-zorro-antd-mobile
Version:
An enterprise-class mobile UI components based on Ant Design and Angular
280 lines (279 loc) • 20.4 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,uselessCode} checked by tsc
*/
import * as tslib_1 from "tslib";
import { Component, ElementRef, Input, Output, EventEmitter, HostBinding, ViewEncapsulation } from '@angular/core';
var SliderMarks = /** @class */ (function () {
function SliderMarks(_elf) {
this._elf = _elf;
this.markArray = [];
this._min = 0;
this._max = 100;
this._marks = {};
this._included = true;
this._className = 'am-slider-mark';
this.onChange = new EventEmitter();
this.onAfterChange = new EventEmitter();
}
Object.defineProperty(SliderMarks.prototype, "min", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value <= this._max) {
this._min = value;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarks.prototype, "max", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value >= this._min) {
this._max = value;
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarks.prototype, "marks", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._marks = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarks.prototype, "included", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
this._included = value;
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarks.prototype, "upperBound", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value !== this._upperBound) {
this._upperBound = value;
this.setActiveCls();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarks.prototype, "lowerBound", {
set: /**
* @param {?} value
* @return {?}
*/
function (value) {
if (value && value !== this.lowerBound) {
this._lowerBound = value;
this.setActiveCls();
}
},
enumerable: true,
configurable: true
});
Object.defineProperty(SliderMarks.prototype, "class", {
get: /**
* @return {?}
*/
function () {
return this._className;
},
enumerable: true,
configurable: true
});
/**
* @param {?} marksKeys
* @return {?}
*/
SliderMarks.prototype.getMarks = /**
* @param {?} marksKeys
* @return {?}
*/
function (marksKeys) {
var _this = this;
this.markArray = [];
marksKeys
.map(parseFloat)
.sort(function (a, b) { return a - b; })
.map(function (point) {
var _a;
/** @type {?} */
var markItem = {
markLabel: '',
point: '',
className: {},
style: {}
};
/** @type {?} */
var markPoint = _this._marks[point];
/** @type {?} */
var markPointIsObject = typeof markPoint === 'object';
/** @type {?} */
var markLabel = markPointIsObject ? markPoint.label : markPoint;
if (!markLabel && markLabel !== 0) {
return null;
}
/** @type {?} */
var isActive = (!_this._included && point === _this._upperBound) ||
(_this._included && point <= _this._upperBound && point >= _this._lowerBound);
/** @type {?} */
var markClassName = (_a = {},
_a[_this._className + "-text"] = true,
_a[_this._className + "-text-active"] = isActive,
_a);
/** @type {?} */
var bottomStyle = {
marginBottom: '-50%',
bottom: ((point - _this._min) / _this._range) * 100 + "%"
};
/** @type {?} */
var leftStyle = {
width: _this._markWidth + "%",
marginLeft: -_this._markWidth / 2 + "%",
left: ((point - _this._min) / _this._range) * 100 + "%"
};
/** @type {?} */
var style = leftStyle;
/** @type {?} */
var markStyle = markPointIsObject ? tslib_1.__assign({}, style, markPoint.style) : style;
markItem.markLabel = markLabel;
markItem.point = point;
markItem.className = Object.keys(markClassName).join(' ');
markItem.style = markStyle;
_this.markArray.push(markItem);
});
};
/**
* @return {?}
*/
SliderMarks.prototype.setActiveCls = /**
* @return {?}
*/
function () {
var _a;
for (var i = 0; i < this.markArray.length; i++) {
/** @type {?} */
var point = this.markArray[i].point;
/** @type {?} */
var isActive = (!this._included && point === this._upperBound) ||
(this._included && point <= this._upperBound && point >= this._lowerBound);
this.markArray[i].className = (_a = {},
_a[this._className + "-text"] = true,
_a[this._className + "-text-active"] = isActive,
_a);
}
};
/**
* @return {?}
*/
SliderMarks.prototype.setMarksLable = /**
* @return {?}
*/
function () {
for (var i = 0; i < this.markArray.length; i++) {
/** @type {?} */
var markEle = this._elf.nativeElement.getElementsByClassName(this._className + '-text')[i];
markEle.innerHTML = this.markArray[i].markLabel;
}
};
/**
* @return {?}
*/
SliderMarks.prototype.ngOnInit = /**
* @return {?}
*/
function () {
/** @type {?} */
var marksKeys = Object.keys(this._marks);
/** @type {?} */
var marksCount = marksKeys.length;
/** @type {?} */
var unit = marksCount > 1 ? 100 / (marksCount - 1) : 100;
this._markWidth = unit * 0.9;
this._range = this._max - this._min;
this.getMarks(marksKeys);
};
/**
* @return {?}
*/
SliderMarks.prototype.ngAfterViewInit = /**
* @return {?}
*/
function () {
this.setMarksLable();
};
SliderMarks.decorators = [
{ type: Component, args: [{
selector: 'SliderMarks, nzm-slider-marks',
template: "<span *ngFor=\"let item of markArray\"\n [ngClass]=\"item.className\"\n [ngStyle]=\"item.style\"\n (onMouseDown)=\"onClickLabel($event, point)\"\n (onTouchStart)=\"onClickLabel($events, point)\">\n</span>",
encapsulation: ViewEncapsulation.None
}] }
];
/** @nocollapse */
SliderMarks.ctorParameters = function () { return [
{ type: ElementRef }
]; };
SliderMarks.propDecorators = {
min: [{ type: Input }],
max: [{ type: Input }],
marks: [{ type: Input }],
included: [{ type: Input }],
upperBound: [{ type: Input }],
lowerBound: [{ type: Input }],
onChange: [{ type: Output }],
onAfterChange: [{ type: Output }],
class: [{ type: HostBinding }]
};
return SliderMarks;
}());
export { SliderMarks };
if (false) {
/** @type {?} */
SliderMarks.prototype.markArray;
/** @type {?} */
SliderMarks.prototype._min;
/** @type {?} */
SliderMarks.prototype._max;
/** @type {?} */
SliderMarks.prototype._marks;
/** @type {?} */
SliderMarks.prototype._included;
/** @type {?} */
SliderMarks.prototype._className;
/** @type {?} */
SliderMarks.prototype._upperBound;
/** @type {?} */
SliderMarks.prototype._lowerBound;
/** @type {?} */
SliderMarks.prototype._range;
/** @type {?} */
SliderMarks.prototype._markWidth;
/** @type {?} */
SliderMarks.prototype.onChange;
/** @type {?} */
SliderMarks.prototype.onAfterChange;
/** @type {?} */
SliderMarks.prototype._elf;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLW1hcmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci1tYXJrcy9zbGlkZXItbWFya3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosV0FBVyxFQUNYLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQzs7SUFnRXJCLHFCQUFvQixJQUFnQjtRQUFoQixTQUFJLEdBQUosSUFBSSxDQUFZO3lCQXhEWixFQUFFO29CQUVILENBQUM7b0JBQ0QsR0FBRztzQkFDRCxFQUFFO3lCQUNFLElBQUk7MEJBQ0osZ0JBQWdCO3dCQXlDbEMsSUFBSSxZQUFZLEVBQU87NkJBRWxCLElBQUksWUFBWSxFQUFPO0tBT0M7SUE1Q3hDLHNCQUNJLDRCQUFHOzs7OztRQURQLFVBQ1EsS0FBYTtZQUNuQixJQUFJLEtBQUssSUFBSSxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtnQkFDL0IsSUFBSSxDQUFDLElBQUksR0FBRyxLQUFLLENBQUM7YUFDbkI7U0FDRjs7O09BQUE7SUFDRCxzQkFDSSw0QkFBRzs7Ozs7UUFEUCxVQUNRLEtBQWE7WUFDbkIsSUFBSSxLQUFLLElBQUksS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQy9CLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO2FBQ25CO1NBQ0Y7OztPQUFBO0lBQ0Qsc0JBQ0ksOEJBQUs7Ozs7O1FBRFQsVUFDVSxLQUFhO1lBQ3JCLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1NBQ3JCOzs7T0FBQTtJQUNELHNCQUNJLGlDQUFROzs7OztRQURaLFVBQ2EsS0FBYztZQUN6QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztTQUN4Qjs7O09B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biAgQ29tcG9uZW50LFxuICBPbkluaXQsXG4gIEVsZW1lbnRSZWYsXG4gIElucHV0LFxuICBPdXRwdXQsXG4gIEV2ZW50RW1pdHRlcixcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgSG9zdEJpbmRpbmcsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdTbGlkZXJNYXJrcywgbnptLXNsaWRlci1tYXJrcycsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZXItbWFya3MuY29tcG9uZW50Lmh0bWwnLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFNsaWRlck1hcmtzIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgbWFya0FycmF5OiBBcnJheTxhbnk+ID0gW107XG5cbiAgcHJpdmF0ZSBfbWluOiBudW1iZXIgPSAwO1xuICBwcml2YXRlIF9tYXg6IG51bWJlciA9IDEwMDtcbiAgcHJpdmF0ZSBfbWFya3M6IG9iamVjdCA9IHt9O1xuICBwcml2YXRlIF9pbmNsdWRlZDogYm9vbGVhbiA9IHRydWU7XG4gIHByaXZhdGUgX2NsYXNzTmFtZTogc3RyaW5nID0gJ2FtLXNsaWRlci1tYXJrJztcbiAgcHJpdmF0ZSBfdXBwZXJCb3VuZDogbnVtYmVyO1xuICBwcml2YXRlIF9sb3dlckJvdW5kOiBudW1iZXI7XG4gIHByaXZhdGUgX3JhbmdlOiBudW1iZXI7XG4gIHByaXZhdGUgX21hcmtXaWR0aDogbnVtYmVyO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBtaW4odmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSA8PSB0aGlzLl9tYXgpIHtcbiAgICAgIHRoaXMuX21pbiA9IHZhbHVlO1xuICAgIH1cbiAgfVxuICBASW5wdXQoKVxuICBzZXQgbWF4KHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgPj0gdGhpcy5fbWluKSB7XG4gICAgICB0aGlzLl9tYXggPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IG1hcmtzKHZhbHVlOiBvYmplY3QpIHtcbiAgICB0aGlzLl9tYXJrcyA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBpbmNsdWRlZCh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2luY2x1ZGVkID0gdmFsdWU7XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IHVwcGVyQm91bmQodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gdGhpcy5fdXBwZXJCb3VuZCkge1xuICAgICAgdGhpcy5fdXBwZXJCb3VuZCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRBY3RpdmVDbHMoKTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IGxvd2VyQm91bmQodmFsdWU6IG51bWJlcikge1xuICAgIGlmICh2YWx1ZSAmJiB2YWx1ZSAhPT0gdGhpcy5sb3dlckJvdW5kKSB7XG4gICAgICB0aGlzLl9sb3dlckJvdW5kID0gdmFsdWU7XG4gICAgICB0aGlzLnNldEFjdGl2ZUNscygpO1xuICAgIH1cbiAgfVxuICBAT3V0cHV0KClcbiAgb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpXG4gIG9uQWZ0ZXJDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBASG9zdEJpbmRpbmcoKVxuICBnZXQgY2xhc3MoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2NsYXNzTmFtZTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgX2VsZjogRWxlbWVudFJlZikge31cblxuICBnZXRNYXJrcyhtYXJrc0tleXMpIHtcbiAgICB0aGlzLm1hcmtBcnJheSA9IFtdO1xuICAgIG1hcmtzS2V5c1xuICAgICAgLm1hcChwYXJzZUZsb2F0KVxuICAgICAgLnNvcnQoKGEsIGIpID0+IGEgLSBiKVxuICAgICAgLm1hcChwb2ludCA9PiB7XG4gICAgICAgIGNvbnN0IG1hcmtJdGVtID0ge1xuICAgICAgICAgIG1hcmtMYWJlbDogJycsXG4gICAgICAgICAgcG9pbnQ6ICcnLFxuICAgICAgICAgIGNsYXNzTmFtZToge30sXG4gICAgICAgICAgc3R5bGU6IHt9XG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IG1hcmtQb2ludCA9IHRoaXMuX21hcmtzW3BvaW50XTtcbiAgICAgICAgY29uc3QgbWFya1BvaW50SXNPYmplY3QgPSB0eXBlb2YgbWFya1BvaW50ID09PSAnb2JqZWN0JztcbiAgICAgICAgY29uc3QgbWFya0xhYmVsID0gbWFya1BvaW50SXNPYmplY3QgPyBtYXJrUG9pbnQubGFiZWwgOiBtYXJrUG9pbnQ7XG4gICAgICAgIGlmICghbWFya0xhYmVsICYmIG1hcmtMYWJlbCAhPT0gMCkge1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGlzQWN0aXZlID1cbiAgICAgICAgICAoIXRoaXMuX2luY2x1ZGVkICYmIHBvaW50ID09PSB0aGlzLl91cHBlckJvdW5kKSB8fFxuICAgICAgICAgICh0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA8PSB0aGlzLl91cHBlckJvdW5kICYmIHBvaW50ID49IHRoaXMuX2xvd2VyQm91bmQpO1xuICAgICAgICBjb25zdCBtYXJrQ2xhc3NOYW1lID0ge1xuICAgICAgICAgIFtgJHt0aGlzLl9jbGFzc05hbWV9LXRleHRgXTogdHJ1ZSxcbiAgICAgICAgICBbYCR7dGhpcy5fY2xhc3NOYW1lfS10ZXh0LWFjdGl2ZWBdOiBpc0FjdGl2ZVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBib3R0b21TdHlsZSA9IHtcbiAgICAgICAgICBtYXJnaW5Cb3R0b206ICctNTAlJyxcbiAgICAgICAgICBib3R0b206IGAkeygocG9pbnQgLSB0aGlzLl9taW4pIC8gdGhpcy5fcmFuZ2UpICogMTAwfSVgXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGxlZnRTdHlsZSA9IHtcbiAgICAgICAgICB3aWR0aDogYCR7dGhpcy5fbWFya1dpZHRofSVgLFxuICAgICAgICAgIG1hcmdpbkxlZnQ6IGAkey10aGlzLl9tYXJrV2lkdGggLyAyfSVgLFxuICAgICAgICAgIGxlZnQ6IGAkeygocG9pbnQgLSB0aGlzLl9taW4pIC8gdGhpcy5fcmFuZ2UpICogMTAwfSVgXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IHN0eWxlID0gbGVmdFN0eWxlO1xuICAgICAgICBjb25zdCBtYXJrU3R5bGUgPSBtYXJrUG9pbnRJc09iamVjdCA/IHsgLi4uc3R5bGUsIC4uLm1hcmtQb2ludC5zdHlsZSB9IDogc3R5bGU7XG4gICAgICAgIG1hcmtJdGVtLm1hcmtMYWJlbCA9IG1hcmtMYWJlbDtcbiAgICAgICAgbWFya0l0ZW0ucG9pbnQgPSBwb2ludDtcbiAgICAgICAgbWFya0l0ZW0uY2xhc3NOYW1lID0gT2JqZWN0LmtleXMobWFya0NsYXNzTmFtZSkuam9pbignICcpO1xuICAgICAgICBtYXJrSXRlbS5zdHlsZSA9IG1hcmtTdHlsZTtcbiAgICAgICAgdGhpcy5tYXJrQXJyYXkucHVzaChtYXJrSXRlbSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIHNldEFjdGl2ZUNscygpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFya0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBwb2ludCA9IHRoaXMubWFya0FycmF5W2ldLnBvaW50O1xuICAgICAgY29uc3QgaXNBY3RpdmUgPVxuICAgICAgICAoIXRoaXMuX2luY2x1ZGVkICYmIHBvaW50ID09PSB0aGlzLl91cHBlckJvdW5kKSB8fFxuICAgICAgICAodGhpcy5faW5jbHVkZWQgJiYgcG9pbnQgPD0gdGhpcy5fdXBwZXJCb3VuZCAmJiBwb2ludCA+PSB0aGlzLl9sb3dlckJvdW5kKTtcbiAgICAgIHRoaXMubWFya0FycmF5W2ldLmNsYXNzTmFtZSA9IHtcbiAgICAgICAgW2Ake3RoaXMuX2NsYXNzTmFtZX0tdGV4dGBdOiB0cnVlLFxuICAgICAgICBbYCR7dGhpcy5fY2xhc3NOYW1lfS10ZXh0LWFjdGl2ZWBdOiBpc0FjdGl2ZVxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBzZXRNYXJrc0xhYmxlKCkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5tYXJrQXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IG1hcmtFbGUgPSB0aGlzLl9lbGYubmF0aXZlRWxlbWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKHRoaXMuX2NsYXNzTmFtZSArICctdGV4dCcpW2ldO1xuICAgICAgbWFya0VsZS5pbm5lckhUTUwgPSB0aGlzLm1hcmtBcnJheVtpXS5tYXJrTGFiZWw7XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgY29uc3QgbWFya3NLZXlzID0gT2JqZWN0LmtleXModGhpcy5fbWFya3MpO1xuICAgIGNvbnN0IG1hcmtzQ291bnQgPSBtYXJrc0tleXMubGVuZ3RoO1xuICAgIGNvbnN0IHVuaXQgPSBtYXJrc0NvdW50ID4gMSA/IDEwMCAvIChtYXJrc0NvdW50IC0gMSkgOiAxMDA7XG4gICAgdGhpcy5fbWFya1dpZHRoID0gdW5pdCAqIDAuOTtcbiAgICB0aGlzLl9yYW5nZSA9IHRoaXMuX21heCAtIHRoaXMuX21pbjtcbiAgICB0aGlzLmdldE1hcmtzKG1hcmtzS2V5cyk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5zZXRNYXJrc0xhYmxlKCk7XG4gIH1cbn1cbiJdfQ==