UNPKG

ng-zorro-antd-mobile

Version:

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

280 lines (279 loc) 20.4 kB
/** * @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==