UNPKG

kwikui

Version:

KwikID's UI Component Library in Angular

145 lines 19.2 kB
import { Component, EventEmitter, Input, Output } from "@angular/core"; import * as i0 from "@angular/core"; import * as i1 from "./button-live-location.permission.service"; import * as i2 from "@taiga-ui/core"; export class KwikUIButtonLiveLocationComponent { constructor(liveLocationPermissionService) { this.liveLocationPermissionService = liveLocationPermissionService; this.liveLocationStatus = "default"; this.class = "tui-space_right-3 tui-space_bottom-3"; this.disabled = false; this.id = ""; this.label = "Button"; this.shape = null; this.showLoader = false; this.size = "m"; this.styles = ""; this.isShowLatLongCaptureTimestamp = ""; this.onClick = new EventEmitter(); this.onLocationPermission = new EventEmitter(); this.isShowApiTimerMessage = false; this.icon = ""; this.iconRight = "tuiIconRadioLarge"; } ngOnInit() { this.handleLiveLocationStatus(this.liveLocationStatus); } ngOnChanges(changes) { const hasKey = (object, key) => { return object.hasOwnProperty(key); }; const verifyChange = (key) => { return hasKey(changes, key) && !changes[key].firstChange; }; if (verifyChange("liveLocationStatus")) { this.handleLiveLocationStatus(changes.liveLocationStatus.currentValue); } if (verifyChange("disabled")) { if (this.liveLocationStatus === "default") { this.disabled = changes.disabled.currentValue; } else if (this.liveLocationStatus === "loading") { this.disabled = true; } else { this.disabled = false; } } } ngOnDestroy() { } handleLiveLocationStatus(liveLocationStatus) { switch (liveLocationStatus) { case "default": this.liveLocationStatus = "default"; this.icon = ""; this.iconRight = "tuiIconRadioLarge"; this.disabled = this.disabled; this.showLoader = false; break; case "loading": this.liveLocationStatus = "loading"; this.icon = ""; this.iconRight = ""; this.disabled = true; this.showLoader = true; break; case "success": this.liveLocationStatus = "success"; this.icon = ""; this.iconRight = "tuiIconCheck"; this.disabled = false; this.showLoader = false; break; case "failed": this.liveLocationStatus = "failed"; this.icon = ""; this.iconRight = "tuiIconClose"; this.disabled = false; this.showLoader = false; break; default: break; } } handleOnClick(e) { if (this.liveLocationStatus === "default" || this.liveLocationStatus === "retry") { this.liveLocationPermissionService.askForPermission().then((resolve) => { this.liveLocationPermissionService.getLocation().then((resolve) => { this.onClick.emit({ event: e, key: this.id, liveLocation: resolve }); }, (reject) => { this.onLocationPermission.emit({ event: e, key: this.id, permission: false }); }); }, (reject) => { this.onLocationPermission.emit({ event: e, key: this.id, permission: false }); }); } } } /** @nocollapse */ KwikUIButtonLiveLocationComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIButtonLiveLocationComponent, deps: [{ token: i1.KwikUIButtonLiveLocationPermissionService }], target: i0.ɵɵFactoryTarget.Component }); /** @nocollapse */ KwikUIButtonLiveLocationComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "12.2.17", type: KwikUIButtonLiveLocationComponent, selector: "kwikui-button-live-location", inputs: { liveLocationStatus: "liveLocationStatus", class: "class", disabled: "disabled", id: "id", label: "label", shape: "shape", showLoader: "showLoader", size: "size", styles: "styles", isShowLatLongCaptureTimestamp: "isShowLatLongCaptureTimestamp" }, outputs: { onClick: "onClick", onLocationPermission: "onLocationPermission" }, usesOnChanges: true, ngImport: i0, template: "<div>\n <button\n tuiButton\n [appearance]=\"'primary'\"\n [class.default]=\"liveLocationStatus === 'default'\"\n [class.failed]=\"liveLocationStatus === 'failed'\"\n [class.loading]=\"liveLocationStatus === 'loading'\"\n [class.success]=\"liveLocationStatus === 'success'\"\n [class]=\"class\"\n [disabled]=\"disabled\"\n [icon]=\"icon\"\n [iconRight]=\"iconRight\"\n [nativeId]=\"id\"\n [shape]=\"shape\"\n [showLoader]=\"showLoader\"\n [size]=\"size\"\n [style]=\"styles\"\n [type]=\"'button'\"\n (click)=\"handleOnClick($event)\"\n >\n {{ label }}\n </button>\n</div>\n", styles: [".w-100{width:100%}button{margin:0}:host .loading{pointer-events:none;cursor:not-allowed}:host .success{--tui-primary: var(--tui-support-04);--tui-primary-hover: var(--tui-support-04);--tui-primary-active: var(--tui-support-04);--tui-primary-text: #fff;pointer-events:none;cursor:not-allowed}:host .failed{--tui-primary: var(--tui-negative);--tui-primary-hover: var(--tui-negative-hover);--tui-primary-active: var(--tui-negative);--tui-primary-text: #fff;pointer-events:none;cursor:not-allowed}\n"], components: [{ type: i2.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }] }); i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.17", ngImport: i0, type: KwikUIButtonLiveLocationComponent, decorators: [{ type: Component, args: [{ selector: "kwikui-button-live-location", templateUrl: "./button-live-location.component.html", styleUrls: ["./button-live-location.component.scss"] }] }], ctorParameters: function () { return [{ type: i1.KwikUIButtonLiveLocationPermissionService }]; }, propDecorators: { liveLocationStatus: [{ type: Input }], class: [{ type: Input }], disabled: [{ type: Input }], id: [{ type: Input }], label: [{ type: Input }], shape: [{ type: Input }], showLoader: [{ type: Input }], size: [{ type: Input }], styles: [{ type: Input }], isShowLatLongCaptureTimestamp: [{ type: Input }], onClick: [{ type: Output }], onLocationPermission: [{ type: Output }] } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa3VpL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b20vYnV0dG9uLWxpdmUtbG9jYXRpb24vYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3dpa3VpL3NyYy9saWIvY29tcG9uZW50cy9jdXN0b20vYnV0dG9uLWxpdmUtbG9jYXRpb24vYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFDVCxZQUFZLEVBQ1osS0FBSyxFQUVMLE1BQU0sRUFFUCxNQUFNLGVBQWUsQ0FBQzs7OztBQVN2QixNQUFNLE9BQU8saUNBQWlDO0lBb0M1QyxZQUNTLDZCQUF3RTtRQUF4RSxrQ0FBNkIsR0FBN0IsNkJBQTZCLENBQTJDO1FBcEN4RSx1QkFBa0IsR0FLWixTQUFTLENBQUM7UUFFaEIsVUFBSyxHQUFHLHNDQUFzQyxDQUFDO1FBRS9DLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFakIsT0FBRSxHQUFHLEVBQUUsQ0FBQztRQUVSLFVBQUssR0FBRyxRQUFRLENBQUM7UUFFakIsVUFBSyxHQUFnQyxJQUFJLENBQUM7UUFFMUMsZUFBVSxHQUFHLEtBQUssQ0FBQztRQUVuQixTQUFJLEdBQWtDLEdBQUcsQ0FBQztRQUUxQyxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBRVosa0NBQTZCLEdBQUcsRUFBRSxDQUFDO1FBRWxDLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO1FBRWxDLHlCQUFvQixHQUFzQixJQUFJLFlBQVksRUFBTyxDQUFDO1FBRTVFLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUU5QixTQUFJLEdBQUcsRUFBRSxDQUFDO1FBRVYsY0FB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QWIsS0FBSztnQkFFRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVHLEVBQUU7c0JBQVYsS0FBSztnQkFFRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsS0FBSztzQkFBYixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRUcsSUFBSTtzQkFBWixLQUFLO2dCQUVHLE1BQU07c0JBQWQsS0FBSztnQkFFRyw2QkFBNkI7c0JBQXJDLEtBQUs7Z0JBRUksT0FBTztzQkFBaEIsTUFBTTtnQkFFRyxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBsb2dNZXRob2QgfSBmcm9tIFwia3dpa2lkLXRvb2xraXRcIjtcbmltcG9ydCB7IEt3aWtVSUJ1dHRvbkxpdmVMb2NhdGlvblBlcm1pc3Npb25TZXJ2aWNlIH0gZnJvbSBcIi4vYnV0dG9uLWxpdmUtbG9jYXRpb24ucGVybWlzc2lvbi5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogXCJrd2lrdWktYnV0dG9uLWxpdmUtbG9jYXRpb25cIixcbiAgdGVtcGxhdGVVcmw6IFwiLi9idXR0b24tbGl2ZS1sb2NhdGlvbi5jb21wb25lbnQuaHRtbFwiLFxuICBzdHlsZVVybHM6IFtcIi4vYnV0dG9uLWxpdmUtbG9jYXRpb24uY29tcG9uZW50LnNjc3NcIl1cbn0pXG5leHBvcnQgY2xhc3MgS3dpa1VJQnV0dG9uTGl2ZUxvY2F0aW9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgQElucHV0KCkgbGl2ZUxvY2F0aW9uU3RhdHVzOlxuICAgIHwgXCJkZWZhdWx0XCJcbiAgICB8IFwibG9hZGluZ1wiXG4gICAgfCBcInJldHJ5XCJcbiAgICB8IFwic3VjY2Vzc1wiXG4gICAgfCBcImZhaWxlZFwiID0gXCJkZWZhdWx0XCI7XG5cbiAgQElucHV0KCkgY2xhc3MgPSBcInR1aS1zcGFjZV9yaWdodC0zIHR1aS1zcGFjZV9ib3R0b20tM1wiO1xuXG4gIEBJbnB1dCgpIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgQElucHV0KCkgaWQgPSBcIlwiO1xuXG4gIEBJbnB1dCgpIGxhYmVsID0gXCJCdXR0b25cIjtcblxuICBASW5wdXQoKSBzaGFwZTogbnVsbCB8IFwic3F1YXJlXCIgfCBcInJvdW5kZWRcIiA9IG51bGw7XG5cbiAgQElucHV0KCkgc2hvd0xvYWRlciA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpIHNpemU6IFwieHNcIiB8IFwic1wiIHwgXCJtXCIgfCBcImxcIiB8IFwieGxcIiA9IFwibVwiO1xuXG4gIEBJbnB1dCgpIHN0eWxlcyA9IFwiXCI7XG5cbiAgQElucHV0KCkgaXNTaG93TGF0TG9uZ0NhcHR1cmVUaW1lc3RhbXAgPSBcIlwiO1xuXG4gIEBPdXRwdXQoKSBvbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgQE91dHB1dCgpIG9uTG9jYXRpb25QZXJtaXNzaW9uOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGlzU2hvd0FwaVRpbWVyTWVzc2FnZSA9IGZhbHNlO1xuXG4gIGljb24gPSBcIlwiO1xuXG4gIGljb25SaWdodCA9IFwidHVpSWNvblJhZGlvTGFyZ2VcIjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgbGl2ZUxvY2F0aW9uUGVybWlzc2lvblNlcnZpY2U6IEt3aWtVSUJ1dHRvbkxpdmVMb2NhdGlvblBlcm1pc3Npb25TZXJ2aWNlXG4gICkge31cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmhhbmRsZUxpdmVMb2NhdGlvblN0YXR1cyh0aGlzLmxpdmVMb2NhdGlvblN0YXR1cyk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XG4gICAgY29uc3QgaGFzS2V5ID0gKG9iamVjdDogYW55LCBrZXk6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICAgICAgcmV0dXJuIG9iamVjdC5oYXNPd25Qcm9wZXJ0eShrZXkpO1xuICAgIH07XG4gICAgY29uc3QgdmVyaWZ5Q2hhbmdlID0gKGtleTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gaGFzS2V5KGNoYW5nZXMsIGtleSkgJiYgIWNoYW5nZXNba2V5XS5maXJzdENoYW5nZTtcbiAgICB9O1xuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJsaXZlTG9jYXRpb25TdGF0dXNcIikpIHtcbiAgICAgIHRoaXMuaGFuZGxlTGl2ZUxvY2F0aW9uU3RhdHVzKGNoYW5nZXMubGl2ZUxvY2F0aW9uU3RhdHVzLmN1cnJlbnRWYWx1ZSk7XG4gICAgfVxuICAgIGlmICh2ZXJpZnlDaGFuZ2UoXCJkaXNhYmxlZFwiKSkge1xuICAgICAgaWYgKHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gY2hhbmdlcy5kaXNhYmxlZC5jdXJyZW50VmFsdWU7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID09PSBcImxvYWRpbmdcIikge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHt9XG5cbiAgaGFuZGxlTGl2ZUxvY2F0aW9uU3RhdHVzKGxpdmVMb2NhdGlvblN0YXR1czogc3RyaW5nKTogdm9pZCB7XG4gICAgc3dpdGNoIChsaXZlTG9jYXRpb25TdGF0dXMpIHtcbiAgICAgIGNhc2UgXCJkZWZhdWx0XCI6XG4gICAgICAgIHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID0gXCJkZWZhdWx0XCI7XG4gICAgICAgIHRoaXMuaWNvbiA9IFwiXCI7XG4gICAgICAgIHRoaXMuaWNvblJpZ2h0ID0gXCJ0dWlJY29uUmFkaW9MYXJnZVwiO1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdGhpcy5kaXNhYmxlZDtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImxvYWRpbmdcIjpcbiAgICAgICAgdGhpcy5saXZlTG9jYXRpb25TdGF0dXMgPSBcImxvYWRpbmdcIjtcbiAgICAgICAgdGhpcy5pY29uID0gXCJcIjtcbiAgICAgICAgdGhpcy5pY29uUmlnaHQgPSBcIlwiO1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gdHJ1ZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFwic3VjY2Vzc1wiOlxuICAgICAgICB0aGlzLmxpdmVMb2NhdGlvblN0YXR1cyA9IFwic3VjY2Vzc1wiO1xuICAgICAgICB0aGlzLmljb24gPSBcIlwiO1xuICAgICAgICB0aGlzLmljb25SaWdodCA9IFwidHVpSWNvbkNoZWNrXCI7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93TG9hZGVyID0gZmFsc2U7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcImZhaWxlZFwiOlxuICAgICAgICB0aGlzLmxpdmVMb2NhdGlvblN0YXR1cyA9IFwiZmFpbGVkXCI7XG4gICAgICAgIHRoaXMuaWNvbiA9IFwiXCI7XG4gICAgICAgIHRoaXMuaWNvblJpZ2h0ID0gXCJ0dWlJY29uQ2xvc2VcIjtcbiAgICAgICAgdGhpcy5kaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNob3dMb2FkZXIgPSBmYWxzZTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBoYW5kbGVPbkNsaWNrKGU6IGFueSkge1xuICAgIGlmIChcbiAgICAgIHRoaXMubGl2ZUxvY2F0aW9uU3RhdHVzID09PSBcImRlZmF1bHRcIiB8fFxuICAgICAgdGhpcy5saXZlTG9jYXRpb25TdGF0dXMgPT09IFwicmV0cnlcIlxuICAgICkge1xuICAgICAgdGhpcy5saXZlTG9jYXRpb25QZXJtaXNzaW9uU2VydmljZS5hc2tGb3JQZXJtaXNzaW9uKCkudGhlbihcbiAgICAgICAgKHJlc29sdmUpID0+IHtcbiAgICAgICAgICB0aGlzLmxpdmVMb2NhdGlvblBlcm1pc3Npb25TZXJ2aWNlLmdldExvY2F0aW9uKCkudGhlbihcbiAgICAgICAgICAgIChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgIHRoaXMub25DbGljay5lbWl0KHtcbiAgICAgICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgICAgICBrZXk6IHRoaXMuaWQsXG4gICAgICAgICAgICAgICAgbGl2ZUxvY2F0aW9uOiByZXNvbHZlXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIChyZWplY3QpID0+IHtcbiAgICAgICAgICAgICAgdGhpcy5vbkxvY2F0aW9uUGVybWlzc2lvbi5lbWl0KHtcbiAgICAgICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgICAgICBrZXk6IHRoaXMuaWQsXG4gICAgICAgICAgICAgICAgcGVybWlzc2lvbjogZmFsc2VcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICAgKHJlamVjdCkgPT4ge1xuICAgICAgICAgIHRoaXMub25Mb2NhdGlvblBlcm1pc3Npb24uZW1pdCh7XG4gICAgICAgICAgICBldmVudDogZSxcbiAgICAgICAgICAgIGtleTogdGhpcy5pZCxcbiAgICAgICAgICAgIHBlcm1pc3Npb246IGZhbHNlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfVxuICB9XG59XG4iLCI8ZGl2PlxuICA8YnV0dG9uXG4gICAgdHVpQnV0dG9uXG4gICAgW2FwcGVhcmFuY2VdPVwiJ3ByaW1hcnknXCJcbiAgICBbY2xhc3MuZGVmYXVsdF09XCJsaXZlTG9jYXRpb25TdGF0dXMgPT09ICdkZWZhdWx0J1wiXG4gICAgW2NsYXNzLmZhaWxlZF09XCJsaXZlTG9jYXRpb25TdGF0dXMgPT09ICdmYWlsZWQnXCJcbiAgICBbY2xhc3MubG9hZGluZ109XCJsaXZlTG9jYXRpb25TdGF0dXMgPT09ICdsb2FkaW5nJ1wiXG4gICAgW2NsYXNzLnN1Y2Nlc3NdPVwibGl2ZUxvY2F0aW9uU3RhdHVzID09PSAnc3VjY2VzcydcIlxuICAgIFtjbGFzc109XCJjbGFzc1wiXG4gICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICBbaWNvbl09XCJpY29uXCJcbiAgICBbaWNvblJpZ2h0XT1cImljb25SaWdodFwiXG4gICAgW25hdGl2ZUlkXT1cImlkXCJcbiAgICBbc2hhcGVdPVwic2hhcGVcIlxuICAgIFtzaG93TG9hZGVyXT1cInNob3dMb2FkZXJcIlxuICAgIFtzaXplXT1cInNpemVcIlxuICAgIFtzdHlsZV09XCJzdHlsZXNcIlxuICAgIFt0eXBlXT1cIididXR0b24nXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlT25DbGljaygkZXZlbnQpXCJcbiAgPlxuICAgIHt7IGxhYmVsIH19XG4gIDwvYnV0dG9uPlxuPC9kaXY+XG4iXX0=