UNPKG

@kushki/ng-suka

Version:

<p align="center"> <h1 align="center">Suka Components Angular</h1> <p align="center"> An Angular implementation of the Suka Design System </p> </p>

255 lines 17.7 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ import { Directive, HostBinding, Input, ChangeDetectorRef, ElementRef, Renderer2, ViewContainerRef, ComponentFactoryResolver } from '@angular/core'; import { Loading } from '../loading/loading.module'; /** * Buttons are used primarily for actions, such as “Add”, “Close”, “Cancel”, or “Save”. * Plain buttons, which look similar to links, are used for less important or less commonly used actions, such as “view shipping settings”. * * For navigational actions that appear within or directly following a sentence, use the link component. */ export class Button { /** * @param {?} ref * @param {?} el * @param {?} renderer * @param {?} viewContainerRef * @param {?} componentFactoryResolver */ constructor(ref, el, renderer, viewContainerRef, componentFactoryResolver) { this.ref = ref; this.el = el; this.renderer = renderer; this.viewContainerRef = viewContainerRef; this.componentFactoryResolver = componentFactoryResolver; /** * Sets the button type. Can be `primary`, `basic`, `plain`, `destructive` or `outline_white`. */ this.sukaButton = 'basic'; /** * Button size. Can be `md` (Medium), `sm` (Small) or `lg` (Large). */ this.size = 'md'; /** * Set to `true` for a skeleton state button. */ this.skeleton = false; /** * Set to `true` to display the outline version of the button. */ this.outline = false; /** * Set to `true` for a hover effect. */ this.hover = false; /** * Set to `true` for a button that uses the full horizontal width; */ this.fullWidth = false; /** * Sets to `true` when the button is on a button group. */ this.inGroup = false; /** * Set to `true` for a loading button. */ this.loading = false; } /** * @return {?} */ get basic() { return this.getType('basic'); } /** * @return {?} */ get primary() { return this.getType('primary'); } /** * @return {?} */ get plain() { return this.getType('plain'); } /** * @return {?} */ get destructive() { return this.getType('destructive'); } /** * @return {?} */ get outline_white() { return this.getType('outline_white'); } /** * @return {?} */ get buttonSmall() { return this.size === 'sm'; } /** * @return {?} */ get buttonLarge() { return this.size === 'lg'; } /** * @private * @param {?} type * @return {?} */ getType(type) { return this.sukaButton === type; } /** * @return {?} */ ngOnInit() { if (!this.sukaButton) { this.sukaButton = 'basic'; } // Create the spinner /** @type {?} */ const factory = this.componentFactoryResolver.resolveComponentFactory(Loading); /** @type {?} */ const componentRef = this.viewContainerRef.createComponent(factory); this.loadingSpinner = componentRef.instance; this.loadingSpinner.size = 'sm'; this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'none'); this.renderer.appendChild(this.el.nativeElement, this.loadingSpinner.elementRef.nativeElement); if (this.loading) { this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'inherit'); this.el.nativeElement.disabled = true; } } /** * @param {?} changes * @return {?} */ ngOnChanges(changes) { if (changes.loading && this.loadingSpinner) { if (this.loading) { this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'inherit'); } else { this.renderer.setStyle(this.loadingSpinner.elementRef.nativeElement, 'display', 'none'); } this.el.nativeElement.disabled = changes.loading.currentValue; } } /** * @return {?} */ ngAfterViewInit() { this.ref.detectChanges(); } } Button.decorators = [ { type: Directive, args: [{ selector: '[sukaButton]' },] } ]; /** @nocollapse */ Button.ctorParameters = () => [ { type: ChangeDetectorRef }, { type: ElementRef }, { type: Renderer2 }, { type: ViewContainerRef }, { type: ComponentFactoryResolver } ]; Button.propDecorators = { sukaButton: [{ type: Input }], size: [{ type: Input }], basic: [{ type: HostBinding, args: ['class.btn--basic',] }], primary: [{ type: HostBinding, args: ['class.btn--primary',] }], plain: [{ type: HostBinding, args: ['class.btn--plain',] }], destructive: [{ type: HostBinding, args: ['class.btn--destructive',] }], outline_white: [{ type: HostBinding, args: ['class.btn--outline_white',] }], skeleton: [{ type: HostBinding, args: ['class.skeleton',] }, { type: Input }], outline: [{ type: HostBinding, args: ['class.btn--outline',] }, { type: Input }], hover: [{ type: HostBinding, args: ['class.btn--hover',] }, { type: Input }], fullWidth: [{ type: HostBinding, args: ['class.btn--full_width',] }, { type: Input }], inGroup: [{ type: HostBinding, args: ['class.btn--group_item',] }, { type: Input }], loading: [{ type: HostBinding, args: ['class.btn--loading',] }, { type: Input }], buttonSmall: [{ type: HostBinding, args: ['class.btn--sm',] }], buttonLarge: [{ type: HostBinding, args: ['class.btn--lg',] }] }; if (false) { /** * Sets the button type. Can be `primary`, `basic`, `plain`, `destructive` or `outline_white`. * @type {?} */ Button.prototype.sukaButton; /** * Button size. Can be `md` (Medium), `sm` (Small) or `lg` (Large). * @type {?} */ Button.prototype.size; /** * Set to `true` for a skeleton state button. * @type {?} */ Button.prototype.skeleton; /** * Set to `true` to display the outline version of the button. * @type {?} */ Button.prototype.outline; /** * Set to `true` for a hover effect. * @type {?} */ Button.prototype.hover; /** * Set to `true` for a button that uses the full horizontal width; * @type {?} */ Button.prototype.fullWidth; /** * Sets to `true` when the button is on a button group. * @type {?} */ Button.prototype.inGroup; /** * Set to `true` for a loading button. * @type {?} */ Button.prototype.loading; /** * @ignore * @type {?} */ Button.prototype.loadingSpinner; /** * @type {?} * @private */ Button.prototype.ref; /** * @type {?} * @private */ Button.prototype.el; /** * @type {?} * @private */ Button.prototype.renderer; /** * @type {?} * @private */ Button.prototype.viewContainerRef; /** * @type {?} * @private */ Button.prototype.componentFactoryResolver; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0BrdXNoa2kvbmctc3VrYS8iLCJzb3VyY2VzIjpbImxpYi9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxXQUFXLEVBQ1gsS0FBSyxFQUlMLGlCQUFpQixFQUNqQixVQUFVLEVBQ1YsU0FBUyxFQUNULGdCQUFnQixFQUNoQix3QkFBd0IsRUFFekIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7Ozs7O0FBYXBELE1BQU0sT0FBTyxNQUFNOzs7Ozs7OztJQWdFakIsWUFDVSxHQUFzQixFQUN0QixFQUFjLEVBQ2QsUUFBbUIsRUFDbkIsZ0JBQWtDLEVBQ2xDLHdCQUFrRDtRQUpsRCxRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQ2QsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQUNuQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWtCO1FBQ2xDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7Ozs7UUFqRW5ELGVBQVUsR0FBZSxPQUFPLENBQUM7Ozs7UUFLakMsU0FBSSxHQUF3QixJQUFJLENBQUM7Ozs7UUFxQkYsYUFBUSxHQUFLLEtBQUssQ0FBQzs7OztRQUlmLFlBQU8sR0FBSyxLQUFLLENBQUM7Ozs7UUFJcEIsVUFBSyxHQUFLLEtBQUssQ0FBQzs7OztRQUlYLGNBQVMsR0FBSyxLQUFLLENBQUM7Ozs7UUFJcEIsWUFBTyxHQUFLLEtBQUssQ0FBQzs7OztRQUlyQixZQUFPLEdBQUssS0FBSyxDQUFDO0lBb0IzRCxDQUFDOzs7O0lBM0RKLElBQXFDLEtBQUs7UUFDeEMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQy9CLENBQUM7Ozs7SUFDRCxJQUF1QyxPQUFPO1FBQzVD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Qix3QkFBd0I7Ozt5QkFvQnZCLEtBQUs7bUJBS0wsS0FBSztvQkFFTCxXQUFXLFNBQUMsa0JBQWtCO3NCQUc5QixXQUFXLFNBQUMsb0JBQW9CO29CQUdoQyxXQUFXLFNBQUMsa0JBQWtCOzBCQUc5QixXQUFXLFNBQUMsd0JBQXdCOzRCQUdwQyxXQUFXLFNBQUMsMEJBQTBCO3VCQU90QyxXQUFXLFNBQUMsZ0JBQWdCLGNBQUcsS0FBSztzQkFJcEMsV0FBVyxTQUFDLG9CQUFvQixjQUFHLEtBQUs7b0JBSXhDLFdBQVcsU0FBQyxrQkFBa0IsY0FBRyxLQUFLO3dCQUl0QyxXQUFXLFNBQUMsdUJBQXVCLGNBQUcsS0FBSztzQkFJM0MsV0FBVyxTQUFDLHVCQUF1QixjQUFHLEtBQUs7c0JBSTNDLFdBQVcsU0FBQyxvQkFBb0IsY0FBRyxLQUFLOzBCQUV4QyxXQUFXLFNBQUMsZUFBZTswQkFHM0IsV0FBVyxTQUFDLGVBQWU7Ozs7Ozs7SUFuRDVCLDRCQUEwQzs7Ozs7SUFLMUMsc0JBQTBDOzs7OztJQXFCMUMsMEJBQTJEOzs7OztJQUkzRCx5QkFBOEQ7Ozs7O0lBSTlELHVCQUEwRDs7Ozs7SUFJMUQsMkJBQW1FOzs7OztJQUluRSx5QkFBaUU7Ozs7O0lBSWpFLHlCQUE4RDs7Ozs7SUFZOUQsZ0NBQXdCOzs7OztJQUd0QixxQkFBOEI7Ozs7O0lBQzlCLG9CQUFzQjs7Ozs7SUFDdEIsMEJBQTJCOzs7OztJQUMzQixrQ0FBMEM7Ozs7O0lBQzFDLDBDQUEwRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERpcmVjdGl2ZSxcbiAgSG9zdEJpbmRpbmcsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE9uQ2hhbmdlcyxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIEVsZW1lbnRSZWYsXG4gIFJlbmRlcmVyMixcbiAgVmlld0NvbnRhaW5lclJlZixcbiAgQ29tcG9uZW50RmFjdG9yeVJlc29sdmVyLFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTG9hZGluZyB9IGZyb20gJy4uL2xvYWRpbmcvbG9hZGluZy5tb2R1bGUnO1xuaW1wb3J0IHsgQnV0dG9uVHlwZSB9IGZyb20gJy4vYnV0dG9uLXR5cGVzJztcblxuXG4vKipcbiAqIEJ1dHRvbnMgYXJlIHVzZWQgcHJpbWFyaWx5IGZvciBhY3Rpb25zLCBzdWNoIGFzIOKAnEFkZOKAnSwg4oCcQ2xvc2XigJ0sIOKAnENhbmNlbOKAnSwgb3Ig4oCcU2F2ZeKAnS5cbiAqIFBsYWluIGJ1dHRvbnMsIHdoaWNoIGxvb2sgc2ltaWxhciB0byBsaW5rcywgYXJlIHVzZWQgZm9yIGxlc3MgaW1wb3J0YW50IG9yIGxlc3MgY29tbW9ubHkgdXNlZCBhY3Rpb25zLCBzdWNoIGFzIOKAnHZpZXcgc2hpcHBpbmcgc2V0dGluZ3PigJ0uXG4gKlxuICogRm9yIG5hdmlnYXRpb25hbCBhY3Rpb25zIHRoYXQgYXBwZWFyIHdpdGhpbiBvciBkaXJlY3RseSBmb2xsb3dpbmcgYSBzZW50ZW5jZSwgdXNlIHRoZSBsaW5rIGNvbXBvbmVudC5cbiAqL1xuQERpcmVjdGl2ZSh7XG4gIHNlbGVjdG9yOiAnW3N1a2FCdXR0b25dJ1xufSlcbmV4cG9ydCBjbGFzcyBCdXR0b24gaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XG4gIC8qKlxuICAgKiBTZXRzIHRoZSBidXR0b24gdHlwZS4gQ2FuIGJlIGBwcmltYXJ5YCwgYGJhc2ljYCwgYHBsYWluYCwgYGRlc3RydWN0aXZlYCBvciBgb3V0bGluZV93aGl0ZWAuXG4gICAqL1xuICBASW5wdXQoKSBzdWthQnV0dG9uOiBCdXR0b25UeXBlID0gJ2Jhc2ljJztcblxuICAvKipcbiAgICogQnV0dG9uIHNpemUuIENhbiBiZSBgbWRgIChNZWRpdW0pLCBgc21gIChTbWFsbCkgb3IgYGxnYCAoTGFyZ2UpLlxuICAgKi9cbiAgQElucHV0KCkgc2l6ZT86ICdtZCcgfCAnc20nIHwgJ2xnJyA9ICdtZCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLWJhc2ljJykgZ2V0IGJhc2ljKCkge1xuICAgIHJldHVybiB0aGlzLmdldFR5cGUoJ2Jhc2ljJyk7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLXByaW1hcnknKSBnZXQgcHJpbWFyeSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlKCdwcmltYXJ5Jyk7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLXBsYWluJykgZ2V0IHBsYWluKCkge1xuICAgIHJldHVybiB0aGlzLmdldFR5cGUoJ3BsYWluJyk7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLWRlc3RydWN0aXZlJykgZ2V0IGRlc3RydWN0aXZlKCkge1xuICAgIHJldHVybiB0aGlzLmdldFR5cGUoJ2Rlc3RydWN0aXZlJyk7XG4gIH1cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLW91dGxpbmVfd2hpdGUnKSBnZXQgb3V0bGluZV93aGl0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRUeXBlKCdvdXRsaW5lX3doaXRlJyk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCBmb3IgYSBza2VsZXRvbiBzdGF0ZSBidXR0b24uXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNrZWxldG9uJykgQElucHV0KCkgc2tlbGV0b24gPyA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0IHRvIGB0cnVlYCB0byBkaXNwbGF5IHRoZSBvdXRsaW5lIHZlcnNpb24gb2YgdGhlIGJ1dHRvbi5cbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1vdXRsaW5lJykgQElucHV0KCkgb3V0bGluZSA/ID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTZXQgdG8gYHRydWVgIGZvciBhIGhvdmVyIGVmZmVjdC5cbiAgICovXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1ob3ZlcicpIEBJbnB1dCgpIGhvdmVyID8gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgYnV0dG9uIHRoYXQgdXNlcyB0aGUgZnVsbCBob3Jpem9udGFsIHdpZHRoO1xuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLWZ1bGxfd2lkdGgnKSBASW5wdXQoKSBmdWxsV2lkdGggPyA9IGZhbHNlO1xuICAvKipcbiAgICogU2V0cyB0byBgdHJ1ZWAgd2hlbiB0aGUgYnV0dG9uIGlzIG9uIGEgYnV0dG9uIGdyb3VwLlxuICAgKi9cbiAgQEhvc3RCaW5kaW5nKCdjbGFzcy5idG4tLWdyb3VwX2l0ZW0nKSBASW5wdXQoKSBpbkdyb3VwID8gPSBmYWxzZTtcbiAgLyoqXG4gICAqIFNldCB0byBgdHJ1ZWAgZm9yIGEgbG9hZGluZyBidXR0b24uXG4gICAqL1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLmJ0bi0tbG9hZGluZycpIEBJbnB1dCgpIGxvYWRpbmcgPyA9IGZhbHNlO1xuXG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1zbScpIGdldCBidXR0b25TbWFsbCgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSAnc20nO1xuICB9XG4gIEBIb3N0QmluZGluZygnY2xhc3MuYnRuLS1sZycpIGdldCBidXR0b25MYXJnZSgpIHtcbiAgICByZXR1cm4gdGhpcy5zaXplID09PSAnbGcnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGxvYWRpbmdTcGlubmVyOiBMb2FkaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBwcml2YXRlIGVsOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICBwcml2YXRlIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYsXG4gICAgcHJpdmF0ZSBjb21wb25lbnRGYWN0b3J5UmVzb2x2ZXI6IENvbXBvbmVudEZhY3RvcnlSZXNvbHZlclxuICApIHt9XG5cbiAgcHJpdmF0ZSBnZXRUeXBlKHR5cGU6IEJ1dHRvblR5cGUpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zdWthQnV0dG9uID09PSB0eXBlO1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCkge1xuICAgIGlmICghdGhpcy5zdWthQnV0dG9uKSB7XG4gICAgICB0aGlzLnN1a2FCdXR0b24gPSAnYmFzaWMnO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSB0aGUgc3Bpbm5lclxuICAgIGNvbnN0IGZhY3RvcnkgPSB0aGlzLmNvbXBvbmVudEZhY3RvcnlSZXNvbHZlci5yZXNvbHZlQ29tcG9uZW50RmFjdG9yeShMb2FkaW5nKTtcbiAgICBjb25zdCBjb21wb25lbnRSZWYgPSB0aGlzLnZpZXdDb250YWluZXJSZWYuY3JlYXRlQ29tcG9uZW50KGZhY3RvcnkpO1xuICAgIHRoaXMubG9hZGluZ1NwaW5uZXIgPSBjb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICB0aGlzLmxvYWRpbmdTcGlubmVyLnNpemUgPSAnc20nO1xuXG4gICAgdGhpcy5yZW5kZXJlci5zZXRTdHlsZSh0aGlzLmxvYWRpbmdTcGlubmVyLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgJ2Rpc3BsYXknLCAnbm9uZScpO1xuXG4gICAgdGhpcy5yZW5kZXJlci5hcHBlbmRDaGlsZCh0aGlzLmVsLm5hdGl2ZUVsZW1lbnQsIHRoaXMubG9hZGluZ1NwaW5uZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50KTtcblxuICAgIGlmICh0aGlzLmxvYWRpbmcpIHtcbiAgICAgIHRoaXMucmVuZGVyZXIuc2V0U3R5bGUodGhpcy5sb2FkaW5nU3Bpbm5lci5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsICdkaXNwbGF5JywgJ2luaGVyaXQnKTtcbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmIChjaGFuZ2VzLmxvYWRpbmcgJiYgdGhpcy5sb2FkaW5nU3Bpbm5lcikge1xuICAgICAgaWYgKHRoaXMubG9hZGluZykge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubG9hZGluZ1NwaW5uZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdpbmhlcml0Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFN0eWxlKHRoaXMubG9hZGluZ1NwaW5uZXIuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCAnZGlzcGxheScsICdub25lJyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZWwubmF0aXZlRWxlbWVudC5kaXNhYmxlZCA9IGNoYW5nZXMubG9hZGluZy5jdXJyZW50VmFsdWU7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMucmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxufVxuIl19