ng-zorro-antd
Version:
An enterprise-class UI components based on Ant Design and Angular
235 lines • 17.5 kB
JavaScript
/**
* @fileoverview added by tsickle
* Generated from: handle.component.ts
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { __decorate, __metadata } from "tslib";
/**
* @license
* Copyright Alibaba.com All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
*/
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, Input, ViewChild, ViewEncapsulation } from '@angular/core';
import { InputBoolean } from 'ng-zorro-antd/core/util';
import { NzTooltipDirective } from 'ng-zorro-antd/tooltip';
import { NzSliderService } from './slider.service';
var NzSliderHandleComponent = /** @class */ (function () {
function NzSliderHandleComponent(sliderService, cdr) {
var _this = this;
this.sliderService = sliderService;
this.cdr = cdr;
this.tooltipVisible = 'default';
this.active = false;
this.style = {};
this.enterHandle = (/**
* @return {?}
*/
function () {
if (!_this.sliderService.isDragging) {
_this.toggleTooltip(true);
_this.updateTooltipPosition();
_this.cdr.detectChanges();
}
});
this.leaveHandle = (/**
* @return {?}
*/
function () {
if (!_this.sliderService.isDragging) {
_this.toggleTooltip(false);
_this.cdr.detectChanges();
}
});
}
/**
* @param {?} changes
* @return {?}
*/
NzSliderHandleComponent.prototype.ngOnChanges = /**
* @param {?} changes
* @return {?}
*/
function (changes) {
var _this = this;
var offset = changes.offset, value = changes.value, active = changes.active, tooltipVisible = changes.tooltipVisible;
if (offset) {
this.updateStyle();
}
if (value) {
this.updateTooltipTitle();
this.updateTooltipPosition();
}
if (active) {
if (active.currentValue) {
this.toggleTooltip(true);
}
else {
this.toggleTooltip(false);
}
}
if ((tooltipVisible === null || tooltipVisible === void 0 ? void 0 : tooltipVisible.currentValue) === 'always') {
Promise.resolve().then((/**
* @return {?}
*/
function () { return _this.toggleTooltip(true, true); }));
}
};
/**
* @return {?}
*/
NzSliderHandleComponent.prototype.focus = /**
* @return {?}
*/
function () {
var _a;
(_a = this.handleEl) === null || _a === void 0 ? void 0 : _a.nativeElement.focus();
};
/**
* @private
* @param {?} show
* @param {?=} force
* @return {?}
*/
NzSliderHandleComponent.prototype.toggleTooltip = /**
* @private
* @param {?} show
* @param {?=} force
* @return {?}
*/
function (show, force) {
if (force === void 0) { force = false; }
var _a, _b;
if (!force && (this.tooltipVisible !== 'default' || !this.tooltip)) {
return;
}
if (show) {
(_a = this.tooltip) === null || _a === void 0 ? void 0 : _a.show();
}
else {
(_b = this.tooltip) === null || _b === void 0 ? void 0 : _b.hide();
}
};
/**
* @private
* @return {?}
*/
NzSliderHandleComponent.prototype.updateTooltipTitle = /**
* @private
* @return {?}
*/
function () {
this.tooltipTitle = this.tooltipFormatter ? this.tooltipFormatter((/** @type {?} */ (this.value))) : "" + this.value;
};
/**
* @private
* @return {?}
*/
NzSliderHandleComponent.prototype.updateTooltipPosition = /**
* @private
* @return {?}
*/
function () {
var _this = this;
if (this.tooltip) {
Promise.resolve().then((/**
* @return {?}
*/
function () { var _a; return (_a = _this.tooltip) === null || _a === void 0 ? void 0 : _a.updatePosition(); }));
}
};
/**
* @private
* @return {?}
*/
NzSliderHandleComponent.prototype.updateStyle = /**
* @private
* @return {?}
*/
function () {
var _a;
this.style = (_a = {},
_a[this.vertical ? 'bottom' : 'left'] = this.offset + "%",
_a.transform = this.vertical ? 'translateY(50%)' : 'translateX(-50%)',
_a);
this.cdr.markForCheck();
};
NzSliderHandleComponent.decorators = [
{ type: Component, args: [{
changeDetection: ChangeDetectionStrategy.OnPush,
encapsulation: ViewEncapsulation.None,
selector: 'nz-slider-handle',
exportAs: 'nzSliderHandle',
preserveWhitespaces: false,
template: "\n <div\n #handle\n class=\"ant-slider-handle\"\n tabindex=\"0\"\n nz-tooltip\n [ngStyle]=\"style\"\n [nzTooltipTitle]=\"tooltipFormatter === null || tooltipVisible === 'never' ? null : tooltipTitle\"\n [nzTooltipTrigger]=\"null\"\n [nzTooltipPlacement]=\"tooltipPlacement\"\n ></div>\n ",
host: {
'(mouseenter)': 'enterHandle()',
'(mouseleave)': 'leaveHandle()'
}
}] }
];
/** @nocollapse */
NzSliderHandleComponent.ctorParameters = function () { return [
{ type: NzSliderService },
{ type: ChangeDetectorRef }
]; };
NzSliderHandleComponent.propDecorators = {
handleEl: [{ type: ViewChild, args: ['handle', { static: false },] }],
tooltip: [{ type: ViewChild, args: [NzTooltipDirective, { static: false },] }],
vertical: [{ type: Input }],
offset: [{ type: Input }],
value: [{ type: Input }],
tooltipVisible: [{ type: Input }],
tooltipPlacement: [{ type: Input }],
tooltipFormatter: [{ type: Input }],
active: [{ type: Input }]
};
__decorate([
InputBoolean(),
__metadata("design:type", Object)
], NzSliderHandleComponent.prototype, "active", void 0);
return NzSliderHandleComponent;
}());
export { NzSliderHandleComponent };
if (false) {
/** @type {?} */
NzSliderHandleComponent.ngAcceptInputType_active;
/** @type {?} */
NzSliderHandleComponent.prototype.handleEl;
/** @type {?} */
NzSliderHandleComponent.prototype.tooltip;
/** @type {?} */
NzSliderHandleComponent.prototype.vertical;
/** @type {?} */
NzSliderHandleComponent.prototype.offset;
/** @type {?} */
NzSliderHandleComponent.prototype.value;
/** @type {?} */
NzSliderHandleComponent.prototype.tooltipVisible;
/** @type {?} */
NzSliderHandleComponent.prototype.tooltipPlacement;
/** @type {?} */
NzSliderHandleComponent.prototype.tooltipFormatter;
/** @type {?} */
NzSliderHandleComponent.prototype.active;
/** @type {?} */
NzSliderHandleComponent.prototype.tooltipTitle;
/** @type {?} */
NzSliderHandleComponent.prototype.style;
/** @type {?} */
NzSliderHandleComponent.prototype.enterHandle;
/** @type {?} */
NzSliderHandleComponent.prototype.leaveHandle;
/**
* @type {?}
* @private
*/
NzSliderHandleComponent.prototype.sliderService;
/**
* @type {?}
* @private
*/
NzSliderHandleComponent.prototype.cdr;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGFuZGxlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nLXpvcnJvLWFudGQvc2xpZGVyLyIsInNvdXJjZXMiOlsiaGFuZGxlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBUUEsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixLQUFLLEVBR0wsU0FBUyxFQUNULGlCQUFpQixFQUNsQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR25EO0lBd0NFLGlDQUFvQixhQUE4QixFQUFVLEdBQXNCO1FBQWxGLGlCQUFzRjtRQUFsRSxrQkFBYSxHQUFiLGFBQWEsQ0FBaUI7UUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQVJ6RSxtQkFBYyxHQUF3QixTQUFTLENBQUM7UUFHaEMsV0FBTSxHQUFHLEtBQUssQ0FBQztRQUd4QyxVQUFLLEdBQXFCLEVBQUUsQ0FBQztRQTZCN0IsZ0JBQVc7OztRQUFHO1lBQ1osSUFBSSxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsVUFBVSxFQUFFO2dCQUNsQyxLQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QixLQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztnQkFDN0IsS0FBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQzthQUMxQjtRQUNILENBQUMsRUFBQztRQUVGLGdCQUFXOzs7UUFBRztZQUNaLElBQUksQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRTtnQkFDbEMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDMUIsS0FBSSxD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QixRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixtQkFBbUIsRUFBRSxLQUFLO29CQUMxQixRQUFRLEVBQUUsZ1ZBV1Q7b0JBQ0QsSUFBSSxFQUFFO3dCQUNKLGNBQWMsRUFBRSxlQUFlO3dCQUMvQixjQUFjLEVBQUUsZUFBZTtxQkFDaEM7aUJBQ0Y7Ozs7Z0JBekJRLGVBQWU7Z0JBYnRCLGlCQUFpQjs7OzJCQTBDaEIsU0FBUyxTQUFDLFFBQVEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7MEJBQ3JDLFNBQVMsU0FBQyxrQkFBa0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7MkJBRS9DLEtBQUs7eUJBQ0wsS0FBSzt3QkFDTCxLQUFLO2lDQUNMLEtBQUs7bUNBQ0wsS0FBSzttQ0FDTCxLQUFLO3lCQUNMLEtBQUs7O0lBQW1CO1FBQWYsWUFBWSxFQUFFOzsyREFBZ0I7SUFnRjFDLDhCQUFDO0NBQUEsQUFuSEQsSUFtSEM7U0E1RlksdUJBQXVCOzs7SUFDbEMsaURBQThDOztJQUU5QywyQ0FBOEQ7O0lBQzlELDBDQUErRTs7SUFFL0UsMkNBQTRCOztJQUM1Qix5Q0FBeUI7O0lBQ3pCLHdDQUF3Qjs7SUFDeEIsaURBQXlEOztJQUN6RCxtREFBbUM7O0lBQ25DLG1EQUErRDs7SUFDL0QseUNBQXdDOztJQUV4QywrQ0FBc0I7O0lBQ3RCLHdDQUE2Qjs7SUE2QjdCLDhDQU1FOztJQUVGLDhDQUtFOzs7OztJQXhDVSxnREFBc0M7Ozs7O0lBQUUsc0NBQThCIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEFsaWJhYmEuY29tIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9naXRodWIuY29tL05HLVpPUlJPL25nLXpvcnJvLWFudGQvYmxvYi9tYXN0ZXIvTElDRU5TRVxuICovXG5cbmltcG9ydCB7XG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBFbGVtZW50UmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQm9vbGVhbklucHV0LCBOZ1N0eWxlSW50ZXJmYWNlIH0gZnJvbSAnbmctem9ycm8tYW50ZC9jb3JlL3R5cGVzJztcbmltcG9ydCB7IElucHV0Qm9vbGVhbiB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS91dGlsJztcblxuaW1wb3J0IHsgTnpUb29sdGlwRGlyZWN0aXZlIH0gZnJvbSAnbmctem9ycm8tYW50ZC90b29sdGlwJztcbmltcG9ydCB7IE56U2xpZGVyU2VydmljZSB9IGZyb20gJy4vc2xpZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgTnpTbGlkZXJTaG93VG9vbHRpcCB9IGZyb20gJy4vdHlwaW5ncyc7XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgc2VsZWN0b3I6ICduei1zbGlkZXItaGFuZGxlJyxcbiAgZXhwb3J0QXM6ICduelNsaWRlckhhbmRsZScsXG4gIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxkaXZcbiAgICAgICNoYW5kbGVcbiAgICAgIGNsYXNzPVwiYW50LXNsaWRlci1oYW5kbGVcIlxuICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICAgIG56LXRvb2x0aXBcbiAgICAgIFtuZ1N0eWxlXT1cInN0eWxlXCJcbiAgICAgIFtuelRvb2x0aXBUaXRsZV09XCJ0b29sdGlwRm9ybWF0dGVyID09PSBudWxsIHx8IHRvb2x0aXBWaXNpYmxlID09PSAnbmV2ZXInID8gbnVsbCA6IHRvb2x0aXBUaXRsZVwiXG4gICAgICBbbnpUb29sdGlwVHJpZ2dlcl09XCJudWxsXCJcbiAgICAgIFtuelRvb2x0aXBQbGFjZW1lbnRdPVwidG9vbHRpcFBsYWNlbWVudFwiXG4gICAgPjwvZGl2PlxuICBgLFxuICBob3N0OiB7XG4gICAgJyhtb3VzZWVudGVyKSc6ICdlbnRlckhhbmRsZSgpJyxcbiAgICAnKG1vdXNlbGVhdmUpJzogJ2xlYXZlSGFuZGxlKCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgTnpTbGlkZXJIYW5kbGVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfYWN0aXZlOiBCb29sZWFuSW5wdXQ7XG5cbiAgQFZpZXdDaGlsZCgnaGFuZGxlJywgeyBzdGF0aWM6IGZhbHNlIH0pIGhhbmRsZUVsPzogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZChOelRvb2x0aXBEaXJlY3RpdmUsIHsgc3RhdGljOiBmYWxzZSB9KSB0b29sdGlwPzogTnpUb29sdGlwRGlyZWN0aXZlO1xuXG4gIEBJbnB1dCgpIHZlcnRpY2FsPzogYm9vbGVhbjtcbiAgQElucHV0KCkgb2Zmc2V0PzogbnVtYmVyO1xuICBASW5wdXQoKSB2YWx1ZT86IG51bWJlcjtcbiAgQElucHV0KCkgdG9vbHRpcFZpc2libGU6IE56U2xpZGVyU2hvd1Rvb2x0aXAgPSAnZGVmYXVsdCc7XG4gIEBJbnB1dCgpIHRvb2x0aXBQbGFjZW1lbnQ/OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHRvb2x0aXBGb3JtYXR0ZXI/OiBudWxsIHwgKCh2YWx1ZTogbnVtYmVyKSA9PiBzdHJpbmcpO1xuICBASW5wdXQoKSBASW5wdXRCb29sZWFuKCkgYWN0aXZlID0gZmFsc2U7XG5cbiAgdG9vbHRpcFRpdGxlPzogc3RyaW5nO1xuICBzdHlsZTogTmdTdHlsZUludGVyZmFjZSA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2xpZGVyU2VydmljZTogTnpTbGlkZXJTZXJ2aWNlLCBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IHsgb2Zmc2V0LCB2YWx1ZSwgYWN0aXZlLCB0b29sdGlwVmlzaWJsZSB9ID0gY2hhbmdlcztcblxuICAgIGlmIChvZmZzZXQpIHtcbiAgICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcbiAgICB9XG5cbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMudXBkYXRlVG9vbHRpcFRpdGxlKCk7XG4gICAgICB0aGlzLnVwZGF0ZVRvb2x0aXBQb3NpdGlvbigpO1xuICAgIH1cblxuICAgIGlmIChhY3RpdmUpIHtcbiAgICAgIGlmIChhY3RpdmUuY3VycmVudFZhbHVlKSB7XG4gICAgICAgIHRoaXMudG9nZ2xlVG9vbHRpcCh0cnVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudG9nZ2xlVG9vbHRpcChmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRvb2x0aXBWaXNpYmxlPy5jdXJyZW50VmFsdWUgPT09ICdhbHdheXMnKSB7XG4gICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHRoaXMudG9nZ2xlVG9vbHRpcCh0cnVlLCB0cnVlKSk7XG4gICAgfVxuICB9XG5cbiAgZW50ZXJIYW5kbGUgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnNsaWRlclNlcnZpY2UuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy50b2dnbGVUb29sdGlwKHRydWUpO1xuICAgICAgdGhpcy51cGRhdGVUb29sdGlwUG9zaXRpb24oKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH07XG5cbiAgbGVhdmVIYW5kbGUgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnNsaWRlclNlcnZpY2UuaXNEcmFnZ2luZykge1xuICAgICAgdGhpcy50b2dnbGVUb29sdGlwKGZhbHNlKTtcbiAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG4gIH07XG5cbiAgZm9jdXMoKTogdm9pZCB7XG4gICAgdGhpcy5oYW5kbGVFbD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICB9XG5cbiAgcHJpdmF0ZSB0b2dnbGVUb29sdGlwKHNob3c6IGJvb2xlYW4sIGZvcmNlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIWZvcmNlICYmICh0aGlzLnRvb2x0aXBWaXNpYmxlICE9PSAnZGVmYXVsdCcgfHwgIXRoaXMudG9vbHRpcCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoc2hvdykge1xuICAgICAgdGhpcy50b29sdGlwPy5zaG93KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudG9vbHRpcD8uaGlkZSgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcFRpdGxlKCk6IHZvaWQge1xuICAgIHRoaXMudG9vbHRpcFRpdGxlID0gdGhpcy50b29sdGlwRm9ybWF0dGVyID8gdGhpcy50b29sdGlwRm9ybWF0dGVyKHRoaXMudmFsdWUhKSA6IGAke3RoaXMudmFsdWV9YDtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlVG9vbHRpcFBvc2l0aW9uKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRvb2x0aXApIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4gdGhpcy50b29sdGlwPy51cGRhdGVQb3NpdGlvbigpKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZVN0eWxlKCk6IHZvaWQge1xuICAgIHRoaXMuc3R5bGUgPSB7XG4gICAgICBbdGhpcy52ZXJ0aWNhbCA/ICdib3R0b20nIDogJ2xlZnQnXTogYCR7dGhpcy5vZmZzZXR9JWAsXG4gICAgICB0cmFuc2Zvcm06IHRoaXMudmVydGljYWwgPyAndHJhbnNsYXRlWSg1MCUpJyA6ICd0cmFuc2xhdGVYKC01MCUpJ1xuICAgIH07XG4gICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gIH1cbn1cbiJdfQ==