UNPKG

@junte/ui

Version:

Quality Angular UI components kit

204 lines 18.8 kB
import { __decorate, __metadata } from "tslib"; import { animate, state, style, transition, trigger } from '@angular/animations'; import { Component, ContentChild, HostBinding, Input, TemplateRef } from '@angular/core'; import { BreakpointService } from '../responsive/breakpoint.service'; import { ContentApi, MethodApi, PropertyApi } from '../../core/decorators/api'; import { Feature } from '../../core/enums/feature'; import { Gutter } from '../../core/enums/gutter'; import { State } from '../../core/enums/state'; import { UI } from '../../core/enums/ui'; import { Width } from '../../core/enums/width'; var BlockComponent = /** @class */ (function () { function BlockComponent(breakpoint) { this.breakpoint = breakpoint; this.ui = UI; this._state = { success: false }; this.host = 'jnt-block-host'; this._padding = Gutter.normal; this._spacing = Gutter.normal; this.width = Width.default; this.features = []; } Object.defineProperty(BlockComponent.prototype, "hasHelp", { get: function () { return !!this.blockHelpTemplate; }, enumerable: true, configurable: true }); Object.defineProperty(BlockComponent.prototype, "hasHeader", { get: function () { return !!this.blockHeaderTemplate || !!this.title; }, enumerable: true, configurable: true }); Object.defineProperty(BlockComponent.prototype, "padding", { set: function (padding) { this._padding = padding || Gutter.normal; }, enumerable: true, configurable: true }); Object.defineProperty(BlockComponent.prototype, "spacing", { get: function () { return this._spacing; }, set: function (spacing) { this._spacing = spacing || Gutter.normal; }, enumerable: true, configurable: true }); BlockComponent.prototype.success = function () { var _this = this; this._state.success = true; setTimeout(function () { return _this._state.success = false; }, 2100); }; BlockComponent.ctorParameters = function () { return [ { type: BreakpointService } ]; }; __decorate([ HostBinding('attr.host'), __metadata("design:type", Object) ], BlockComponent.prototype, "host", void 0); __decorate([ HostBinding('attr.data-has-help'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], BlockComponent.prototype, "hasHelp", null); __decorate([ HostBinding('attr.data-has-header'), __metadata("design:type", Object), __metadata("design:paramtypes", []) ], BlockComponent.prototype, "hasHeader", null); __decorate([ HostBinding('attr.data-padding'), __metadata("design:type", Object) ], BlockComponent.prototype, "_padding", void 0); __decorate([ PropertyApi({ description: 'Title of block', type: 'string' }), Input(), __metadata("design:type", String) ], BlockComponent.prototype, "title", void 0); __decorate([ PropertyApi({ description: 'Padding for block', path: 'ui.gutter', options: [Gutter.tiny, Gutter.small, Gutter.normal, Gutter.large, Gutter.big, Gutter.huge], default: Gutter.normal }), Input(), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], BlockComponent.prototype, "padding", null); __decorate([ PropertyApi({ description: 'Spacing between header, body and footer', path: 'ui.gutter', options: [Gutter.tiny, Gutter.small, Gutter.normal, Gutter.large, Gutter.big, Gutter.huge], default: Gutter.normal }), Input(), __metadata("design:type", String), __metadata("design:paramtypes", [String]) ], BlockComponent.prototype, "spacing", null); __decorate([ PropertyApi({ description: 'Block width', path: 'ui.width', default: Width.default, options: [Width.default, Width.fluid] }), HostBinding('attr.data-width'), Input(), __metadata("design:type", String) ], BlockComponent.prototype, "width", void 0); __decorate([ PropertyApi({ description: 'State of block', path: 'ui.state', options: [State.error, State.loading] }), Input(), __metadata("design:type", String) ], BlockComponent.prototype, "state", void 0); __decorate([ PropertyApi({ description: 'Adapted block on mobile view', path: 'ui.feature', options: [Feature.adapted] }), HostBinding('attr.data-features'), Input(), __metadata("design:type", Array) ], BlockComponent.prototype, "features", void 0); __decorate([ ContentApi({ selector: '#blockHelpTemplate', description: 'Block help template' }), ContentChild('blockHelpTemplate'), __metadata("design:type", TemplateRef) ], BlockComponent.prototype, "blockHelpTemplate", void 0); __decorate([ ContentApi({ selector: '#blockHeaderTemplate', description: 'Block header template' }), ContentChild('blockHeaderTemplate'), __metadata("design:type", TemplateRef) ], BlockComponent.prototype, "blockHeaderTemplate", void 0); __decorate([ ContentApi({ selector: '#blockFooterTemplate', description: 'Block footer template' }), ContentChild('blockFooterTemplate'), __metadata("design:type", TemplateRef) ], BlockComponent.prototype, "blockFooterTemplate", void 0); __decorate([ MethodApi({ description: 'Show success animation' }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", void 0) ], BlockComponent.prototype, "success", null); BlockComponent = __decorate([ Component({ selector: 'jnt-block', template: "<div child-of=\"jnt-block-host\" *ngIf=\"state === ui.state.loading\" data-state>\n <jnt-spinner child-of=\"jnt-block-host\" [size]=\"ui.size.large\"></jnt-spinner>\n</div>\n<div child-of=\"jnt-block-host\" *ngIf=\"state === ui.state.error\" data-state>\n <jnt-icon child-of=\"jnt-block-host\" [icon]=\"ui.icons.sad\"></jnt-icon>\n</div>\n<div child-of=\"jnt-block-host\" *ngIf=\"_state.success\" [@success]=\"_state.success\" data-state>\n <jnt-icon child-of=\"jnt-block-host\" [icon]=\"ui.icons.animated.success\"></jnt-icon>\n</div>\n\n<div child-of=\"jnt-block-host\" data-help *ngIf=\"!!blockHelpTemplate\"\n [jntPopover]=\"{\n contentTemplate: blockHelpTemplate,\n trigger: ui.trigger.click,\n position: breakpoint.current !== ui.breakpoint.mobile ? ui.position.right : ui.position.bottom\n }\">\n <jnt-icon child-of=\"jnt-block-host\" [icon]=\"ui.icons.question\"></jnt-icon>\n</div>\n\n<jnt-stack child-of=\"jnt-block-host\" data-block [align]=\"ui.align.stretch\" [gutter]=\"spacing\">\n <div child-of=\"jnt-block-host\" *ngIf=\"!!title && !blockHeaderTemplate\" data-title>\n {{title}}\n </div>\n\n <ng-container *ngIf=\"!!blockHeaderTemplate\">\n <ng-container *ngTemplateOutlet=\"blockHeaderTemplate\"></ng-container>\n </ng-container>\n\n <div child-of=\"jnt-block-host\" data-body>\n <ng-content></ng-content>\n </div>\n\n <div child-of=\"jnt-block-host\" *ngIf=\"!!blockFooterTemplate\" data-footer>\n <ng-container *ngTemplateOutlet=\"blockFooterTemplate\"></ng-container>\n </div>\n</jnt-stack>", animations: [ trigger('success', [ state('void', style({ opacity: 0 })), state('*', style({ opacity: 1 })), transition('void <=> *', [ animate('.3s ease-in-out') ]), ]), ] }), __metadata("design:paramtypes", [BreakpointService]) ], BlockComponent); return BlockComponent; }()); export { BlockComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmxvY2suY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vQGp1bnRlL3VpLyIsInNvdXJjZXMiOlsibGliL2xheW91dC9ibG9jay9ibG9jay5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDakYsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekYsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDL0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0MsT0FBTyxFQUFFLEVBQUUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQTZCL0M7SUF3SEUsd0JBQW1CLFVBQTZCO1FBQTdCLGVBQVUsR0FBVixVQUFVLENBQW1CO1FBdEhoRCxPQUFFLEdBQUcsRUFBRSxDQUFDO1FBRVIsV0FBTSxHQUFHLEVBQUMsT0FBTyxFQUFFLEtBQUssRUFBQyxDQUFDO1FBRVMsU0FBSSxHQUFHLGdCQUFnQixDQUFDO1FBYTNELGFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBRXpCLGFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBb0R6QixVQUFLLEdBQVUsS0FBSyxDQUFDLE9BQU8sQ0FBQztRQWtCN0Is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Q0FDSDtvQkFDRCxVQUFVLENBQ1IsWUFBWSxFQUNaO3dCQUNFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztxQkFDM0IsQ0FDRjtpQkFDRixDQUNGO2FBQ0Y7U0FDRixDQUFDO3lDQXlIK0IsaUJBQWlCO09BeEhyQyxjQUFjLENBMEgxQjtJQUFELHFCQUFDO0NBQUEsQUExSEQsSUEwSEM7U0ExSFksY0FBYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFuaW1hdGUsIHN0YXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIEhvc3RCaW5kaW5nLCBJbnB1dCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEJyZWFrcG9pbnRTZXJ2aWNlIH0gZnJvbSAnLi4vcmVzcG9uc2l2ZS9icmVha3BvaW50LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29udGVudEFwaSwgTWV0aG9kQXBpLCBQcm9wZXJ0eUFwaSB9IGZyb20gJy4uLy4uL2NvcmUvZGVjb3JhdG9ycy9hcGknO1xuaW1wb3J0IHsgRmVhdHVyZSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvZmVhdHVyZSc7XG5pbXBvcnQgeyBHdXR0ZXIgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL2d1dHRlcic7XG5pbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4uLy4uL2NvcmUvZW51bXMvc3RhdGUnO1xuaW1wb3J0IHsgVUkgfSBmcm9tICcuLi8uLi9jb3JlL2VudW1zL3VpJztcbmltcG9ydCB7IFdpZHRoIH0gZnJvbSAnLi4vLi4vY29yZS9lbnVtcy93aWR0aCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2pudC1ibG9jaycsXG4gIHRlbXBsYXRlVXJsOiAnLi9ibG9jay5lbmNhcHN1bGF0ZWQuaHRtbCcsXG4gIGFuaW1hdGlvbnM6IFtcbiAgICB0cmlnZ2VyKCdzdWNjZXNzJywgW1xuICAgICAgICBzdGF0ZShcbiAgICAgICAgICAndm9pZCcsXG4gICAgICAgICAgc3R5bGUoe1xuICAgICAgICAgICAgb3BhY2l0eTogMFxuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICAgIHN0YXRlKFxuICAgICAgICAgICcqJyxcbiAgICAgICAgICBzdHlsZSh7XG4gICAgICAgICAgICBvcGFjaXR5OiAxXG4gICAgICAgICAgfSlcbiAgICAgICAgKSxcbiAgICAgICAgdHJhbnNpdGlvbihcbiAgICAgICAgICAndm9pZCA8PT4gKicsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgYW5pbWF0ZSgnLjNzIGVhc2UtaW4tb3V0JylcbiAgICAgICAgICBdXG4gICAgICAgICksXG4gICAgICBdXG4gICAgKSxcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBCbG9ja0NvbXBvbmVudCB7XG5cbiAgdWkgPSBVSTtcblxuICBfc3RhdGUgPSB7c3VjY2VzczogZmFsc2V9O1xuXG4gIEBIb3N0QmluZGluZygnYXR0ci5ob3N0JykgcmVhZG9ubHkgaG9zdCA9ICdqbnQtYmxvY2staG9zdCc7XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtaGFzLWhlbHAnKVxuICBnZXQgaGFzSGVscCgpIHtcbiAgICByZXR1cm4gISF0aGlzLmJsb2NrSGVscFRlbXBsYXRlO1xuICB9XG5cbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtaGFzLWhlYWRlcicpXG4gIGdldCBoYXNIZWFkZXIoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5ibG9ja0hlYWRlclRlbXBsYXRlIHx8ICEhdGhpcy50aXRsZTtcbiAgfVxuXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXBhZGRpbmcnKVxuICBfcGFkZGluZyA9IEd1dHRlci5ub3JtYWw7XG5cbiAgX3NwYWNpbmcgPSBHdXR0ZXIubm9ybWFsO1xuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdUaXRsZSBvZiBibG9jaycsXG4gICAgdHlwZTogJ3N0cmluZydcbiAgfSlcbiAgQElucHV0KClcbiAgdGl0bGU6IHN0cmluZztcblxuICBAUHJvcGVydHlBcGkoe1xuICAgIGRlc2NyaXB0aW9uOiAnUGFkZGluZyBmb3IgYmxvY2snLFxuICAgIHBhdGg6ICd1aS5ndXR0ZXInLFxuICAgIG9wdGlvbnM6IFtHdXR0ZXIudGlueSxcbiAgICAgIEd1dHRlci5zbWFsbCxcbiAgICAgIEd1dHRlci5ub3JtYWwsXG4gICAgICBHdXR0ZXIubGFyZ2UsXG4gICAgICBHdXR0ZXIuYmlnLFxuICAgICAgR3V0dGVyLmh1Z2VdLFxuICAgIGRlZmF1bHQ6IEd1dHRlci5ub3JtYWxcbiAgfSlcbiAgQElucHV0KCkgc2V0IHBhZGRpbmcocGFkZGluZzogR3V0dGVyKSB7XG4gICAgdGhpcy5fcGFkZGluZyA9IHBhZGRpbmcgfHwgR3V0dGVyLm5vcm1hbDtcbiAgfVxuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdTcGFjaW5nIGJldHdlZW4gaGVhZGVyLCBib2R5IGFuZCBmb290ZXInLFxuICAgIHBhdGg6ICd1aS5ndXR0ZXInLFxuICAgIG9wdGlvbnM6IFtHdXR0ZXIudGlueSxcbiAgICAgIEd1dHRlci5zbWFsbCxcbiAgICAgIEd1dHRlci5ub3JtYWwsXG4gICAgICBHdXR0ZXIubGFyZ2UsXG4gICAgICBHdXR0ZXIuYmlnLFxuICAgICAgR3V0dGVyLmh1Z2VdLFxuICAgIGRlZmF1bHQ6IEd1dHRlci5ub3JtYWxcbiAgfSlcbiAgQElucHV0KCkgc2V0IHNwYWNpbmcoc3BhY2luZzogR3V0dGVyKSB7XG4gICAgdGhpcy5fc3BhY2luZyA9IHNwYWNpbmcgfHwgR3V0dGVyLm5vcm1hbDtcbiAgfVxuXG4gIGdldCBzcGFjaW5nKCkge1xuICAgIHJldHVybiB0aGlzLl9zcGFjaW5nO1xuICB9XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0Jsb2NrIHdpZHRoJyxcbiAgICBwYXRoOiAndWkud2lkdGgnLFxuICAgIGRlZmF1bHQ6IFdpZHRoLmRlZmF1bHQsXG4gICAgb3B0aW9uczogW1dpZHRoLmRlZmF1bHQsXG4gICAgICBXaWR0aC5mbHVpZF1cbiAgfSlcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmRhdGEtd2lkdGgnKVxuICBASW5wdXQoKVxuICB3aWR0aDogV2lkdGggPSBXaWR0aC5kZWZhdWx0O1xuXG4gIEBQcm9wZXJ0eUFwaSh7XG4gICAgZGVzY3JpcHRpb246ICdTdGF0ZSBvZiBibG9jaycsXG4gICAgcGF0aDogJ3VpLnN0YXRlJyxcbiAgICBvcHRpb25zOiBbU3RhdGUuZXJyb3IsXG4gICAgICBTdGF0ZS5sb2FkaW5nXVxuICB9KVxuICBASW5wdXQoKVxuICBzdGF0ZTogU3RhdGU7XG5cbiAgQFByb3BlcnR5QXBpKHtcbiAgICBkZXNjcmlwdGlvbjogJ0FkYXB0ZWQgYmxvY2sgb24gbW9iaWxlIHZpZXcnLFxuICAgIHBhdGg6ICd1aS5mZWF0dXJlJyxcbiAgICBvcHRpb25zOiBbRmVhdHVyZS5hZGFwdGVkXVxuICB9KVxuICBASG9zdEJpbmRpbmcoJ2F0dHIuZGF0YS1mZWF0dXJlcycpXG4gIEBJbnB1dCgpXG4gIGZlYXR1cmVzOiBGZWF0dXJlW10gPSBbXTtcblxuICBAQ29udGVudEFwaSh7XG4gICAgc2VsZWN0b3I6ICcjYmxvY2tIZWxwVGVtcGxhdGUnLFxuICAgIGRlc2NyaXB0aW9uOiAnQmxvY2sgaGVscCB0ZW1wbGF0ZSdcbiAgfSlcbiAgQENvbnRlbnRDaGlsZCgnYmxvY2tIZWxwVGVtcGxhdGUnKVxuICBibG9ja0hlbHBUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudEFwaSh7XG4gICAgc2VsZWN0b3I6ICcjYmxvY2tIZWFkZXJUZW1wbGF0ZScsXG4gICAgZGVzY3JpcHRpb246ICdCbG9jayBoZWFkZXIgdGVtcGxhdGUnXG4gIH0pXG4gIEBDb250ZW50Q2hpbGQoJ2Jsb2NrSGVhZGVyVGVtcGxhdGUnKVxuICBibG9ja0hlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBDb250ZW50QXBpKHtcbiAgICBzZWxlY3RvcjogJyNibG9ja0Zvb3RlclRlbXBsYXRlJyxcbiAgICBkZXNjcmlwdGlvbjogJ0Jsb2NrIGZvb3RlciB0ZW1wbGF0ZSdcbiAgfSlcbiAgQENvbnRlbnRDaGlsZCgnYmxvY2tGb290ZXJUZW1wbGF0ZScpXG4gIGJsb2NrRm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQE1ldGhvZEFwaSh7ZGVzY3JpcHRpb246ICdTaG93IHN1Y2Nlc3MgYW5pbWF0aW9uJ30pXG4gIHN1Y2Nlc3MoKSB7XG4gICAgdGhpcy5fc3RhdGUuc3VjY2VzcyA9IHRydWU7XG4gICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9zdGF0ZS5zdWNjZXNzID0gZmFsc2UsIDIxMDApO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHVibGljIGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnRTZXJ2aWNlKSB7XG4gIH1cbn1cbiJdfQ==