@cloukit/pagination
Version:
139 lines • 11.9 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,uselessCode} checked by tsc
*/
/*!
* @license MIT
* Copyright (c) 2017 Bernhard Grünewaldt - codeclou.io
* https://github.com/cloukit/legal
*/
import { EventEmitter, Component, Input, Output } from '@angular/core';
import { CloukitComponentTheme, CloukitThemeService, UiElement } from '@cloukit/theme';
import { Ui } from '../pagination.model';
import { PaginationButtonClickEvent, PaginationButtonType, PaginationItem } from '../pagination.model';
export class CloukitPaginationButtonComponent {
/**
* @param {?} themeService
*/
constructor(themeService) {
this.themeService = themeService;
this.clicked = new EventEmitter();
this.isMouseStillOver = false;
}
/**
* @param {?} pageItem
* @return {?}
*/
static transform(pageItem) {
if (pageItem === undefined || pageItem === null) {
return new UiElement(Ui.elements.filler, Ui.states.disabled, Ui.modifier.base);
}
/** @type {?} */
const uiElement = pageItem.isFiller ? Ui.elements.filler : Ui.elements.button;
/** @type {?} */
const uiState = pageItem.isActive ? Ui.states.active : Ui.states.normal;
return new UiElement(uiElement, uiState, Ui.modifier.base);
}
/**
* @return {?}
*/
updateStyle() {
/** @type {?} */
const style = this.themeSelected.getUiStyle(this.ui);
if (style !== null) {
this.style = this.themeService.prefixStyle(style);
}
}
/**
* @return {?}
*/
ngOnChanges() {
// retain mouseEnter and mouseLeave modifier changes!
/** @type {?} */
let modifier = null;
if (this.ui !== null && this.ui !== undefined) {
modifier = this.ui.modifier;
}
this.ui = CloukitPaginationButtonComponent.transform(this.paginationItem);
if (modifier !== null && this.isMouseStillOver) {
this.ui.modifier = modifier;
}
if (this.disabled === true) {
this.ui.state = Ui.states.disabled;
this.ui.modifier = Ui.modifier.base;
}
this.updateStyle();
}
/**
* @return {?}
*/
mouseEnter() {
this.ui.modifier = Ui.modifier.hover;
this.isMouseStillOver = true;
this.updateStyle();
}
/**
* @return {?}
*/
mouseLeave() {
this.ui.modifier = Ui.modifier.base;
this.isMouseStillOver = false;
this.updateStyle();
}
/**
* @return {?}
*/
doClick() {
if (!this.paginationItem.isFiller) {
this.clicked.emit(new PaginationButtonClickEvent(this.type, this.paginationItem.page));
}
}
}
CloukitPaginationButtonComponent.decorators = [
{ type: Component, args: [{
selector: 'cloukit-pagination-button',
template: `
<button
type="button"
[disabled]="disabled"
[ngStyle]="style?.style"
(click)="doClick()"
(mouseenter)="mouseEnter()"
(mouseleave)="mouseLeave()"
>
{{paginationItem.label}}
</button>`
}] }
];
/** @nocollapse */
CloukitPaginationButtonComponent.ctorParameters = () => [
{ type: CloukitThemeService }
];
CloukitPaginationButtonComponent.propDecorators = {
disabled: [{ type: Input }],
type: [{ type: Input }],
paginationItem: [{ type: Input }],
themeSelected: [{ type: Input }],
clicked: [{ type: Output }]
};
if (false) {
/** @type {?} */
CloukitPaginationButtonComponent.prototype.disabled;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.type;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.paginationItem;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.themeSelected;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.clicked;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.ui;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.style;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.isMouseStillOver;
/** @type {?} */
CloukitPaginationButtonComponent.prototype.themeService;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFnaW5hdGlvbi1idXR0b24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGNsb3VraXQvcGFnaW5hdGlvbi8iLCJzb3VyY2VzIjpbImxpYi9jaGlsZHJlbi9wYWdpbmF0aW9uLWJ1dHRvbi5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBS0EsT0FBTyxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBYSxNQUFNLGVBQWUsQ0FBQztBQUNsRixPQUFPLEVBQUUscUJBQXFCLEVBQUUsbUJBQW1CLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdkYsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQWlCdkcsTUFBTSxPQUFPLGdDQUFnQzs7OztJQWlDM0MsWUFBb0IsWUFBaUM7UUFBakMsaUJBQVksR0FBWixZQUFZLENBQXFCO1FBbEI5QyxZQUFPLEdBQTZDLElBQUksWUFBWSxFQUFFLENBQUM7UUFPdEUscUJBQWdCLEdBQUcsS0FBSyxDQUFDO0lBWWpDLENBQUM7Ozs7O0lBVk0sTUFBTSxDQUFDLFNBQVMsQ0FBQyxRQUF3QjtRQUM5QyxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLElBQUksRUFBRTtZQUMvQyxPQUFPLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDaEY7O2NBQ0ssU0FBUyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFD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YykgMjAxNyBCZXJuaGFyZCBHcsO8bmV3YWxkdCAtIGNvZGVjbG91LmlvXG4gKiBodHRwczovL2dpdGh1Yi5jb20vY2xvdWtpdC9sZWdhbFxuICovXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIsIENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgT25DaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDbG91a2l0Q29tcG9uZW50VGhlbWUsIENsb3VraXRUaGVtZVNlcnZpY2UsIFVpRWxlbWVudCB9IGZyb20gJ0BjbG91a2l0L3RoZW1lJztcbmltcG9ydCB7IFVpIH0gZnJvbSAnLi4vcGFnaW5hdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBQYWdpbmF0aW9uQnV0dG9uQ2xpY2tFdmVudCwgUGFnaW5hdGlvbkJ1dHRvblR5cGUsIFBhZ2luYXRpb25JdGVtIH0gZnJvbSAnLi4vcGFnaW5hdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2Nsb3VraXQtcGFnaW5hdGlvbi1idXR0b24nLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxidXR0b25cbiAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgIFtuZ1N0eWxlXT1cInN0eWxlPy5zdHlsZVwiXG4gICAgICAoY2xpY2spPVwiZG9DbGljaygpXCJcbiAgICAgIChtb3VzZWVudGVyKT1cIm1vdXNlRW50ZXIoKVwiXG4gICAgICAobW91c2VsZWF2ZSk9XCJtb3VzZUxlYXZlKClcIlxuICAgID5cbiAgICAgIHt7cGFnaW5hdGlvbkl0ZW0ubGFiZWx9fVxuICAgIDwvYnV0dG9uPmAsXG4gIHN0eWxlczogWyBdLFxufSlcbmV4cG9ydCBjbGFzcyBDbG91a2l0UGFnaW5hdGlvbkJ1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0eXBlOiBQYWdpbmF0aW9uQnV0dG9uVHlwZTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgcGFnaW5hdGlvbkl0ZW06IFBhZ2luYXRpb25JdGVtO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyB0aGVtZVNlbGVjdGVkOiBDbG91a2l0Q29tcG9uZW50VGhlbWU7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBjbGlja2VkOiBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvbkJ1dHRvbkNsaWNrRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8vXG4gIC8vIElOVEVSTkFMXG4gIC8vXG4gIHByaXZhdGUgdWk6IFVpRWxlbWVudDtcbiAgcHVibGljIHN0eWxlOiBhbnk7XG4gIHByaXZhdGUgaXNNb3VzZVN0aWxsT3ZlciA9IGZhbHNlO1xuXG4gIHB1YmxpYyBzdGF0aWMgdHJhbnNmb3JtKHBhZ2VJdGVtOiBQYWdpbmF0aW9uSXRlbSk6IFVpRWxlbWVudCB7XG4gICAgaWYgKHBhZ2VJdGVtID09PSB1bmRlZmluZWQgfHwgcGFnZUl0ZW0gPT09IG51bGwpIHtcbiAgICAgIHJldHVybiBuZXcgVWlFbGVtZW50KFVpLmVsZW1lbnRzLmZpbGxlciwgVWkuc3RhdGVzLmRpc2FibGVkLCBVaS5tb2RpZmllci5iYXNlKTtcbiAgICB9XG4gICAgY29uc3QgdWlFbGVtZW50ID0gcGFnZUl0ZW0uaXNGaWxsZXIgPyBVaS5lbGVtZW50cy5maWxsZXIgOiBVaS5lbGVtZW50cy5idXR0b247XG4gICAgY29uc3QgdWlTdGF0ZSA9IHBhZ2VJdGVtLmlzQWN0aXZlID8gVWkuc3RhdGVzLmFjdGl2ZSA6IFVpLnN0YXRlcy5ub3JtYWw7XG4gICAgcmV0dXJuIG5ldyBVaUVsZW1lbnQodWlFbGVtZW50LCB1aVN0YXRlLCBVaS5tb2RpZmllci5iYXNlKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBDbG91a2l0VGhlbWVTZXJ2aWNlKSB7XG4gIH1cblxuICB1cGRhdGVTdHlsZSgpIHtcbiAgICBjb25zdCBzdHlsZSA9IHRoaXMudGhlbWVTZWxlY3RlZC5nZXRVaVN0eWxlKHRoaXMudWkpO1xuICAgIGlmIChzdHlsZSAhPT0gbnVsbCkge1xuICAgICAgdGhpcy5zdHlsZSA9IHRoaXMudGhlbWVTZXJ2aWNlLnByZWZpeFN0eWxlKHN0eWxlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICAvLyByZXRhaW4gbW91c2VFbnRlciBhbmQgbW91c2VMZWF2ZSBtb2RpZmllciBjaGFuZ2VzIVxuICAgIGxldCBtb2RpZmllcjogc3RyaW5nID0gbnVsbDtcbiAgICBpZiAodGhpcy51aSAhPT0gbnVsbCAmJiB0aGlzLnVpICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIG1vZGlmaWVyID0gdGhpcy51aS5tb2RpZmllcjtcbiAgICB9XG4gICAgdGhpcy51aSA9IENsb3VraXRQYWdpbmF0aW9uQnV0dG9uQ29tcG9uZW50LnRyYW5zZm9ybSh0aGlzLnBhZ2luYXRpb25JdGVtKTtcbiAgICBpZiAobW9kaWZpZXIgIT09IG51bGwgJiYgdGhpcy5pc01vdXNlU3RpbGxPdmVyKSB7XG4gICAgICB0aGlzLnVpLm1vZGlmaWVyID0gbW9kaWZpZXI7XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVkID09PSB0cnVlKSB7XG4gICAgICB0aGlzLnVpLnN0YXRlID0gVWkuc3RhdGVzLmRpc2FibGVkO1xuICAgICAgdGhpcy51aS5tb2RpZmllciA9IFVpLm1vZGlmaWVyLmJhc2U7XG4gICAgfVxuICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3VzZUVudGVyKCkge1xuICAgIHRoaXMudWkubW9kaWZpZXIgPSBVaS5tb2RpZmllci5ob3ZlcjtcbiAgICB0aGlzLmlzTW91c2VTdGlsbE92ZXIgPSB0cnVlO1xuICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBtb3VzZUxlYXZlKCkge1xuICAgIHRoaXMudWkubW9kaWZpZXIgPSBVaS5tb2RpZmllci5iYXNlO1xuICAgIHRoaXMuaXNNb3VzZVN0aWxsT3ZlciA9IGZhbHNlO1xuICAgIHRoaXMudXBkYXRlU3R5bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBkb0NsaWNrKCkge1xuICAgIGlmICghdGhpcy5wYWdpbmF0aW9uSXRlbS5pc0ZpbGxlcikge1xuICAgICAgdGhpcy5jbGlja2VkLmVtaXQobmV3IFBhZ2luYXRpb25CdXR0b25DbGlja0V2ZW50KHRoaXMudHlwZSwgdGhpcy5wYWdpbmF0aW9uSXRlbS5wYWdlKSk7XG4gICAgfVxuICB9XG5cblxuXG59XG5cbiJdfQ==