UNPKG

ng-zorro-antd-mobile

Version:

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

318 lines 21.5 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, Output, EventEmitter, HostBinding, ViewEncapsulation } from '@angular/core'; var SliderMarksComponent = /** @class */ (function () { function SliderMarksComponent(_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(SliderMarksComponent.prototype, "min", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value <= this._max) { this._min = value; } }, enumerable: true, configurable: true }); Object.defineProperty(SliderMarksComponent.prototype, "max", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value >= this._min) { this._max = value; } }, enumerable: true, configurable: true }); Object.defineProperty(SliderMarksComponent.prototype, "marks", { set: /** * @param {?} value * @return {?} */ function (value) { this._marks = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderMarksComponent.prototype, "included", { set: /** * @param {?} value * @return {?} */ function (value) { this._included = value; }, enumerable: true, configurable: true }); Object.defineProperty(SliderMarksComponent.prototype, "upperBound", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value !== this._upperBound) { this._upperBound = value; this.setActiveCls(); } }, enumerable: true, configurable: true }); Object.defineProperty(SliderMarksComponent.prototype, "lowerBound", { set: /** * @param {?} value * @return {?} */ function (value) { if (value && value !== this.lowerBound) { this._lowerBound = value; this.setActiveCls(); } }, enumerable: true, configurable: true }); Object.defineProperty(SliderMarksComponent.prototype, "class", { get: /** * @return {?} */ function () { return this._className; }, enumerable: true, configurable: true }); /** * @param {?} marksKeys * @return {?} */ SliderMarksComponent.prototype.getMarks = /** * @param {?} marksKeys * @return {?} */ function (marksKeys) { var _this = this; this.markArray = []; marksKeys .map(parseFloat) .sort((/** * @param {?} a * @param {?} b * @return {?} */ function (a, b) { return a - b; })) .map((/** * @param {?} point * @return {?} */ 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 {?} */ SliderMarksComponent.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 {?} */ SliderMarksComponent.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 {?} */ SliderMarksComponent.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 {?} */ SliderMarksComponent.prototype.ngAfterViewInit = /** * @return {?} */ function () { this.setMarksLable(); }; SliderMarksComponent.decorators = [ { type: Component, args: [{ selector: 'SliderMarks, nzm-slider-marks', template: "<span *ngFor=\"let item of markArray\" [ngClass]=\"item.className\" [ngStyle]=\"item.style\"> </span>\n", encapsulation: ViewEncapsulation.None }] } ]; /** @nocollapse */ SliderMarksComponent.ctorParameters = function () { return [ { type: ElementRef } ]; }; SliderMarksComponent.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 SliderMarksComponent; }()); export { SliderMarksComponent }; if (false) { /** @type {?} */ SliderMarksComponent.prototype.markArray; /** * @type {?} * @private */ SliderMarksComponent.prototype._min; /** * @type {?} * @private */ SliderMarksComponent.prototype._max; /** * @type {?} * @private */ SliderMarksComponent.prototype._marks; /** * @type {?} * @private */ SliderMarksComponent.prototype._included; /** * @type {?} * @private */ SliderMarksComponent.prototype._className; /** * @type {?} * @private */ SliderMarksComponent.prototype._upperBound; /** * @type {?} * @private */ SliderMarksComponent.prototype._lowerBound; /** * @type {?} * @private */ SliderMarksComponent.prototype._range; /** * @type {?} * @private */ SliderMarksComponent.prototype._markWidth; /** @type {?} */ SliderMarksComponent.prototype.onChange; /** @type {?} */ SliderMarksComponent.prototype.onAfterChange; /** * @type {?} * @private */ SliderMarksComponent.prototype._elf; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGVyLW1hcmtzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQtbW9iaWxlLyIsInNvdXJjZXMiOlsic2xpZGVyL3NsaWRlci1tYXJrcy9zbGlkZXItbWFya3MuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosV0FBVyxFQUNYLGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QjtJQThERSw4QkFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQXhEcEMsY0FBUyxHQUFlLEVBQUUsQ0FBQztRQUVuQixTQUFJLEdBQVcsQ0FBQyxDQUFDO1FBQ2pCLFNBQUksR0FBVyxHQUFHLENBQUM7UUFDbkIsV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUNwQixjQUFTLEdBQVksSUFBSSxDQUFDO1FBQzFCLGVBQVUsR0FBVyxnQkFBZ0IsQ0FBQztRQXlDOUMsYUFBUSxHQUFHLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBT0QsQ0FBQztJQTVDeEMsc0JBQ0kscUNBQUc7Ozs7O1FBRFAsVUFDUSxLQUFhO1lBQ25CLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNuQjtRQUNILENBQUM7OztPQUFBO0lBQ0Qsc0JBQ0kscUNBQUc7Ozs7O1FBRFAsVUFDUSxLQUFhO1lBQ25CLElBQUksS0FBSyxJQUFJLEtBQUssSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO2dCQUMvQixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQzthQUNuQjtRQUNILENBQUM7OztPQUFBO0lBQ0Qsc0JBQ0ksdUNBQUs7Ozs7O1FBRFQsVUFD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QUdOLFdBQVc7O0lBbUZkLDJCQUFDO0NBQUEsQUE1SUQsSUE0SUM7U0F2SVksb0JBQW9COzs7SUFDL0IseUNBQTJCOzs7OztJQUUzQixvQ0FBeUI7Ozs7O0lBQ3pCLG9DQUEyQjs7Ozs7SUFDM0Isc0NBQTRCOzs7OztJQUM1Qix5Q0FBa0M7Ozs7O0lBQ2xDLDBDQUE4Qzs7Ozs7SUFDOUMsMkNBQTRCOzs7OztJQUM1QiwyQ0FBNEI7Ozs7O0lBQzVCLHNDQUF1Qjs7Ozs7SUFDdkIsMENBQTJCOztJQW9DM0Isd0NBQ21DOztJQUNuQyw2Q0FDd0M7Ozs7O0lBTzVCLG9DQUF3QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgT25Jbml0LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT3V0cHV0LFxuICBFdmVudEVtaXR0ZXIsXG4gIEFmdGVyVmlld0luaXQsXG4gIEhvc3RCaW5kaW5nLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnU2xpZGVyTWFya3MsIG56bS1zbGlkZXItbWFya3MnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2xpZGVyLW1hcmtzLmNvbXBvbmVudC5odG1sJyxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxufSlcbmV4cG9ydCBjbGFzcyBTbGlkZXJNYXJrc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCB7XG4gIG1hcmtBcnJheTogQXJyYXk8YW55PiA9IFtdO1xuXG4gIHByaXZhdGUgX21pbjogbnVtYmVyID0gMDtcbiAgcHJpdmF0ZSBfbWF4OiBudW1iZXIgPSAxMDA7XG4gIHByaXZhdGUgX21hcmtzOiBvYmplY3QgPSB7fTtcbiAgcHJpdmF0ZSBfaW5jbHVkZWQ6IGJvb2xlYW4gPSB0cnVlO1xuICBwcml2YXRlIF9jbGFzc05hbWU6IHN0cmluZyA9ICdhbS1zbGlkZXItbWFyayc7XG4gIHByaXZhdGUgX3VwcGVyQm91bmQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfbG93ZXJCb3VuZDogbnVtYmVyO1xuICBwcml2YXRlIF9yYW5nZTogbnVtYmVyO1xuICBwcml2YXRlIF9tYXJrV2lkdGg6IG51bWJlcjtcblxuICBASW5wdXQoKVxuICBzZXQgbWluKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgPD0gdGhpcy5fbWF4KSB7XG4gICAgICB0aGlzLl9taW4gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgQElucHV0KClcbiAgc2V0IG1heCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgaWYgKHZhbHVlICYmIHZhbHVlID49IHRoaXMuX21pbikge1xuICAgICAgdGhpcy5fbWF4ID0gdmFsdWU7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBtYXJrcyh2YWx1ZTogb2JqZWN0KSB7XG4gICAgdGhpcy5fbWFya3MgPSB2YWx1ZTtcbiAgfVxuICBASW5wdXQoKVxuICBzZXQgaW5jbHVkZWQodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9pbmNsdWRlZCA9IHZhbHVlO1xuICB9XG4gIEBJbnB1dCgpXG4gIHNldCB1cHBlckJvdW5kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHRoaXMuX3VwcGVyQm91bmQpIHtcbiAgICAgIHRoaXMuX3VwcGVyQm91bmQgPSB2YWx1ZTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlQ2xzKCk7XG4gICAgfVxuICB9XG4gIEBJbnB1dCgpXG4gIHNldCBsb3dlckJvdW5kKHZhbHVlOiBudW1iZXIpIHtcbiAgICBpZiAodmFsdWUgJiYgdmFsdWUgIT09IHRoaXMubG93ZXJCb3VuZCkge1xuICAgICAgdGhpcy5fbG93ZXJCb3VuZCA9IHZhbHVlO1xuICAgICAgdGhpcy5zZXRBY3RpdmVDbHMoKTtcbiAgICB9XG4gIH1cbiAgQE91dHB1dCgpXG4gIG9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIEBPdXRwdXQoKVxuICBvbkFmdGVyQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQEhvc3RCaW5kaW5nKClcbiAgZ2V0IGNsYXNzKCkge1xuICAgIHJldHVybiB0aGlzLl9jbGFzc05hbWU7XG4gIH1cblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9lbGY6IEVsZW1lbnRSZWYpIHt9XG5cbiAgZ2V0TWFya3MobWFya3NLZXlzKSB7XG4gICAgdGhpcy5tYXJrQXJyYXkgPSBbXTtcbiAgICBtYXJrc0tleXNcbiAgICAgIC5tYXAocGFyc2VGbG9hdClcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhIC0gYilcbiAgICAgIC5tYXAocG9pbnQgPT4ge1xuICAgICAgICBjb25zdCBtYXJrSXRlbSA9IHtcbiAgICAgICAgICBtYXJrTGFiZWw6ICcnLFxuICAgICAgICAgIHBvaW50OiAnJyxcbiAgICAgICAgICBjbGFzc05hbWU6IHt9LFxuICAgICAgICAgIHN0eWxlOiB7fVxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBtYXJrUG9pbnQgPSB0aGlzLl9tYXJrc1twb2ludF07XG4gICAgICAgIGNvbnN0IG1hcmtQb2ludElzT2JqZWN0ID0gdHlwZW9mIG1hcmtQb2ludCA9PT0gJ29iamVjdCc7XG4gICAgICAgIGNvbnN0IG1hcmtMYWJlbCA9IG1hcmtQb2ludElzT2JqZWN0ID8gbWFya1BvaW50LmxhYmVsIDogbWFya1BvaW50O1xuICAgICAgICBpZiAoIW1hcmtMYWJlbCAmJiBtYXJrTGFiZWwgIT09IDApIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc0FjdGl2ZSA9XG4gICAgICAgICAgKCF0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA9PT0gdGhpcy5fdXBwZXJCb3VuZCkgfHxcbiAgICAgICAgICAodGhpcy5faW5jbHVkZWQgJiYgcG9pbnQgPD0gdGhpcy5fdXBwZXJCb3VuZCAmJiBwb2ludCA+PSB0aGlzLl9sb3dlckJvdW5kKTtcbiAgICAgICAgY29uc3QgbWFya0NsYXNzTmFtZSA9IHtcbiAgICAgICAgICBbYCR7dGhpcy5fY2xhc3NOYW1lfS10ZXh0YF06IHRydWUsXG4gICAgICAgICAgW2Ake3RoaXMuX2NsYXNzTmFtZX0tdGV4dC1hY3RpdmVgXTogaXNBY3RpdmVcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgYm90dG9tU3R5bGUgPSB7XG4gICAgICAgICAgbWFyZ2luQm90dG9tOiAnLTUwJScsXG4gICAgICAgICAgYm90dG9tOiBgJHsoKHBvaW50IC0gdGhpcy5fbWluKSAvIHRoaXMuX3JhbmdlKSAqIDEwMH0lYFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBsZWZ0U3R5bGUgPSB7XG4gICAgICAgICAgd2lkdGg6IGAke3RoaXMuX21hcmtXaWR0aH0lYCxcbiAgICAgICAgICBtYXJnaW5MZWZ0OiBgJHstdGhpcy5fbWFya1dpZHRoIC8gMn0lYCxcbiAgICAgICAgICBsZWZ0OiBgJHsoKHBvaW50IC0gdGhpcy5fbWluKSAvIHRoaXMuX3JhbmdlKSAqIDEwMH0lYFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBzdHlsZSA9IGxlZnRTdHlsZTtcbiAgICAgICAgY29uc3QgbWFya1N0eWxlID0gbWFya1BvaW50SXNPYmplY3QgPyB7IC4uLnN0eWxlLCAuLi5tYXJrUG9pbnQuc3R5bGUgfSA6IHN0eWxlO1xuICAgICAgICBtYXJrSXRlbS5tYXJrTGFiZWwgPSBtYXJrTGFiZWw7XG4gICAgICAgIG1hcmtJdGVtLnBvaW50ID0gcG9pbnQ7XG4gICAgICAgIG1hcmtJdGVtLmNsYXNzTmFtZSA9IE9iamVjdC5rZXlzKG1hcmtDbGFzc05hbWUpLmpvaW4oJyAnKTtcbiAgICAgICAgbWFya0l0ZW0uc3R5bGUgPSBtYXJrU3R5bGU7XG4gICAgICAgIHRoaXMubWFya0FycmF5LnB1c2gobWFya0l0ZW0pO1xuICAgICAgfSk7XG4gIH1cblxuICBzZXRBY3RpdmVDbHMoKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLm1hcmtBcnJheS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgcG9pbnQgPSB0aGlzLm1hcmtBcnJheVtpXS5wb2ludDtcbiAgICAgIGNvbnN0IGlzQWN0aXZlID1cbiAgICAgICAgKCF0aGlzLl9pbmNsdWRlZCAmJiBwb2ludCA9PT0gdGhpcy5fdXBwZXJCb3VuZCkgfHxcbiAgICAgICAgKHRoaXMuX2luY2x1ZGVkICYmIHBvaW50IDw9IHRoaXMuX3VwcGVyQm91bmQgJiYgcG9pbnQgPj0gdGhpcy5fbG93ZXJCb3VuZCk7XG4gICAgICB0aGlzLm1hcmtBcnJheVtpXS5jbGFzc05hbWUgPSB7XG4gICAgICAgIFtgJHt0aGlzLl9jbGFzc05hbWV9LXRleHRgXTogdHJ1ZSxcbiAgICAgICAgW2Ake3RoaXMuX2NsYXNzTmFtZX0tdGV4dC1hY3RpdmVgXTogaXNBY3RpdmVcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgc2V0TWFya3NMYWJsZSgpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMubWFya0FycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBtYXJrRWxlID0gdGhpcy5fZWxmLm5hdGl2ZUVsZW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSh0aGlzLl9jbGFzc05hbWUgKyAnLXRleHQnKVtpXTtcbiAgICAgIG1hcmtFbGUuaW5uZXJIVE1MID0gdGhpcy5tYXJrQXJyYXlbaV0ubWFya0xhYmVsO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIGNvbnN0IG1hcmtzS2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuX21hcmtzKTtcbiAgICBjb25zdCBtYXJrc0NvdW50ID0gbWFya3NLZXlzLmxlbmd0aDtcbiAgICBjb25zdCB1bml0ID0gbWFya3NDb3VudCA+IDEgPyAxMDAgLyAobWFya3NDb3VudCAtIDEpIDogMTAwO1xuICAgIHRoaXMuX21hcmtXaWR0aCA9IHVuaXQgKiAwLjk7XG4gICAgdGhpcy5fcmFuZ2UgPSB0aGlzLl9tYXggLSB0aGlzLl9taW47XG4gICAgdGhpcy5nZXRNYXJrcyhtYXJrc0tleXMpO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuc2V0TWFya3NMYWJsZSgpO1xuICB9XG59XG4iXX0=