@pridheep16/ng-fb 1.0.6 → 1.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -4,6 +4,7 @@ import * as i3 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i2 from '@angular/forms';
6
6
  import { FormsModule } from '@angular/forms';
7
+ import { Observable } from 'rxjs';
7
8
  import * as i1 from '@angular/common/http';
8
9
 
9
10
  class Fb {
@@ -17,20 +18,31 @@ class Fb {
17
18
  error = null;
18
19
  baseUrl = 'https://slqy53w3xc.execute-api.ap-south-1.amazonaws.com/core-service/api/v1';
19
20
  endpoint = '';
20
- // <!-- [apiUrl]="'https://slqy53w3xc.execute-api.ap-south-1.amazonaws.com/core-service/api/v1/
21
- // ORG-S122500003/questionnaires/QRB-QUEST8732/public
22
21
  constructor(http) {
23
- // this.nameChange.emit(this.name);
24
22
  this.http = http;
25
- if (this.orgId && this.questionnaireId && this.token) {
26
- this.endpoint = this.baseUrl + '/' + this.orgId + '/questionnaires/' + this.questionnaireId + '/public';
23
+ }
24
+ ngOnChanges(changes) {
25
+ if (changes['orgId'] || changes['questionnaireId'] || changes['token']) {
26
+ this.buildEndpoint();
27
+ if (this.orgId && this.questionnaireId && this.token && this.endpoint) {
28
+ this.fetchData();
29
+ }
27
30
  }
28
31
  }
29
32
  ngOnInit() {
30
- if (this.orgId && this.questionnaireId && this.token) {
33
+ this.buildEndpoint();
34
+ if (this.orgId && this.questionnaireId && this.token && this.endpoint) {
31
35
  this.fetchData();
32
36
  }
33
37
  }
38
+ buildEndpoint() {
39
+ if (this.orgId && this.questionnaireId && this.token) {
40
+ this.endpoint = this.baseUrl + '/' + this.orgId + '/questionnaires/' + this.questionnaireId + '/public';
41
+ }
42
+ else {
43
+ this.endpoint = '';
44
+ }
45
+ }
34
46
  changeName(name) {
35
47
  this.name = name;
36
48
  }
@@ -59,30 +71,30 @@ class Fb {
59
71
  }
60
72
  });
61
73
  }
62
- // getData(): Observable<any> {
63
- // const url = this.baseUrl + '/' + this.orgId + '/' + this.questionnaireId + '/' + this.token;
64
- // if (!url) {
65
- // console.warn('API URL is not provided');
66
- // return new Observable(observer => observer.complete());
67
- // }
68
- // if (!this.http) {
69
- // console.error('HttpClient is not available');
70
- // return new Observable(observer => {
71
- // observer.error('HttpClient is not available');
72
- // observer.complete();
73
- // });
74
- // }
75
- // return this.http.get<any>(url);
76
- // }
74
+ getData() {
75
+ this.buildEndpoint();
76
+ if (!this.endpoint) {
77
+ console.warn('API endpoint is not available. Please provide orgId, questionnaireId, and token.');
78
+ return new Observable(observer => observer.complete());
79
+ }
80
+ if (!this.http) {
81
+ console.error('HttpClient is not available');
82
+ return new Observable(observer => {
83
+ observer.error('HttpClient is not available');
84
+ observer.complete();
85
+ });
86
+ }
87
+ return this.http.get(this.endpoint);
88
+ }
77
89
  refreshData() {
78
90
  this.fetchData();
79
91
  }
80
92
  static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: Fb, deps: [{ token: i1.HttpClient, optional: true }], target: i0.ɵɵFactoryTarget.Component });
81
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: Fb, isStandalone: true, selector: "lib-fb", inputs: { name: "name", orgId: "orgId", questionnaireId: "questionnaireId", token: "token" }, ngImport: i0, template: "<div class=\"fb-container\">\n <div class=\"fb-header\">\n <h2>Welcome, {{ name }}!</h2>\n <div class=\"name-input-section\">\n <input \n type=\"text\" \n [(ngModel)]=\"name\" \n (ngModelChange)=\"changeName(name)\"\n placeholder=\"Enter your name\"\n class=\"name-input\"\n />\n </div>\n </div>\n\n @if (orgId && questionnaireId && token; as isDataAvailable) {\n <div class=\"api-section\">\n <div class=\"api-controls\">\n <button (click)=\"refreshData()\" [disabled]=\"isLoading\" class=\"refresh-btn\">\n {{ isLoading ? 'Loading...' : 'Refresh Data' }}\n </button>\n </div>\n\n @if (isLoading) {\n <div class=\"loading\">\n <p>Loading data from API...</p>\n </div>\n }\n @if (error && !isLoading) {\n <div class=\"error\">\n <p><strong>Error:</strong> {{ error }}</p>\n </div>\n }\n @if (apiData && !isLoading && !error) {\n <div class=\"api-data\">\n <h3>API Response Data:</h3>\n <div class=\"data-display\">\n <pre>{{ apiData | json }}</pre>\n </div>\n </div>\n }\n </div>\n }\n\n @else {\n <div class=\"no-api-url\">\n <p>No data available. Please set the orgId, questionnaireId, and token inputs to fetch data.</p>\n </div>\n }\n</div>\n\n", styles: [".fb-container{padding:20px;max-width:800px;margin:0 auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.fb-header{margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e0e0e0}.fb-header h2{margin:0 0 15px;color:#333;font-size:24px}.name-input-section{margin-top:15px}.name-input{width:100%;max-width:300px;padding:10px 15px;font-size:16px;border:2px solid #ddd;border-radius:4px;transition:border-color .3s ease}.name-input:focus{outline:none;border-color:#007bff}.api-section{margin-top:30px}.api-controls{margin-bottom:20px}.refresh-btn{padding:10px 20px;font-size:16px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s ease}.refresh-btn:hover:not(:disabled){background-color:#0056b3}.refresh-btn:disabled{background-color:#ccc;cursor:not-allowed}.loading{padding:20px;text-align:center;color:#666;background-color:#f8f9fa;border-radius:4px;margin:20px 0}.error{padding:15px;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;margin:20px 0}.error p{margin:0}.api-data{margin-top:20px}.api-data h3{margin:0 0 15px;color:#333;font-size:20px}.data-display{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:15px;overflow-x:auto}.data-display pre{margin:0;font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5;color:#333;white-space:pre-wrap;word-wrap:break-word}.no-api-url{padding:20px;text-align:center;color:#666;background-color:#fff3cd;border:1px solid #ffc107;border-radius:4px;margin-top:20px}.no-api-url p{margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] });
93
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: Fb, isStandalone: true, selector: "lib-fb", inputs: { name: "name", orgId: "orgId", questionnaireId: "questionnaireId", token: "token" }, usesOnChanges: true, ngImport: i0, template: "<div class=\"fb-container\">\n <div class=\"fb-header\">\n <h2>Welcome, {{ name }}!</h2>\n <div class=\"name-input-section\">\n <input \n type=\"text\" \n [(ngModel)]=\"name\" \n (ngModelChange)=\"changeName(name)\"\n placeholder=\"Enter your name\"\n class=\"name-input\"\n />\n </div>\n </div>\n\n @if (orgId && questionnaireId && token) {\n <div class=\"api-section\">\n <div class=\"api-controls\">\n <button (click)=\"refreshData()\" [disabled]=\"isLoading\" class=\"refresh-btn\">\n {{ isLoading ? 'Loading...' : 'Refresh Data' }}\n </button>\n </div>\n\n @if (isLoading) {\n <div class=\"loading\">\n <p>Loading data from API...</p>\n </div>\n }\n\n @if (error && !isLoading) {\n <div class=\"error\">\n <p><strong>Error:</strong> {{ error }}</p>\n </div>\n }\n\n @if (apiData && !isLoading && !error) {\n <div class=\"api-data\">\n <h3>API Response Data:</h3>\n <div class=\"data-display\">\n <pre>{{ apiData | json }}</pre>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-api-url\">\n <p>No data available. Please set the orgId, questionnaireId, and token inputs to fetch data.</p>\n </div>\n }\n</div>\n\n", styles: [".fb-container{padding:20px;max-width:800px;margin:0 auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.fb-header{margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e0e0e0}.fb-header h2{margin:0 0 15px;color:#333;font-size:24px}.name-input-section{margin-top:15px}.name-input{width:100%;max-width:300px;padding:10px 15px;font-size:16px;border:2px solid #ddd;border-radius:4px;transition:border-color .3s ease}.name-input:focus{outline:none;border-color:#007bff}.api-section{margin-top:30px}.api-controls{margin-bottom:20px}.refresh-btn{padding:10px 20px;font-size:16px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s ease}.refresh-btn:hover:not(:disabled){background-color:#0056b3}.refresh-btn:disabled{background-color:#ccc;cursor:not-allowed}.loading{padding:20px;text-align:center;color:#666;background-color:#f8f9fa;border-radius:4px;margin:20px 0}.error{padding:15px;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;margin:20px 0}.error p{margin:0}.api-data{margin-top:20px}.api-data h3{margin:0 0 15px;color:#333;font-size:20px}.data-display{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:15px;overflow-x:auto}.data-display pre{margin:0;font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5;color:#333;white-space:pre-wrap;word-wrap:break-word}.no-api-url{padding:20px;text-align:center;color:#666;background-color:#fff3cd;border:1px solid #ffc107;border-radius:4px;margin-top:20px}.no-api-url p{margin:0}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: i3.JsonPipe, name: "json" }] });
82
94
  }
83
95
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: Fb, decorators: [{
84
96
  type: Component,
85
- args: [{ selector: 'lib-fb', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"fb-container\">\n <div class=\"fb-header\">\n <h2>Welcome, {{ name }}!</h2>\n <div class=\"name-input-section\">\n <input \n type=\"text\" \n [(ngModel)]=\"name\" \n (ngModelChange)=\"changeName(name)\"\n placeholder=\"Enter your name\"\n class=\"name-input\"\n />\n </div>\n </div>\n\n @if (orgId && questionnaireId && token; as isDataAvailable) {\n <div class=\"api-section\">\n <div class=\"api-controls\">\n <button (click)=\"refreshData()\" [disabled]=\"isLoading\" class=\"refresh-btn\">\n {{ isLoading ? 'Loading...' : 'Refresh Data' }}\n </button>\n </div>\n\n @if (isLoading) {\n <div class=\"loading\">\n <p>Loading data from API...</p>\n </div>\n }\n @if (error && !isLoading) {\n <div class=\"error\">\n <p><strong>Error:</strong> {{ error }}</p>\n </div>\n }\n @if (apiData && !isLoading && !error) {\n <div class=\"api-data\">\n <h3>API Response Data:</h3>\n <div class=\"data-display\">\n <pre>{{ apiData | json }}</pre>\n </div>\n </div>\n }\n </div>\n }\n\n @else {\n <div class=\"no-api-url\">\n <p>No data available. Please set the orgId, questionnaireId, and token inputs to fetch data.</p>\n </div>\n }\n</div>\n\n", styles: [".fb-container{padding:20px;max-width:800px;margin:0 auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.fb-header{margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e0e0e0}.fb-header h2{margin:0 0 15px;color:#333;font-size:24px}.name-input-section{margin-top:15px}.name-input{width:100%;max-width:300px;padding:10px 15px;font-size:16px;border:2px solid #ddd;border-radius:4px;transition:border-color .3s ease}.name-input:focus{outline:none;border-color:#007bff}.api-section{margin-top:30px}.api-controls{margin-bottom:20px}.refresh-btn{padding:10px 20px;font-size:16px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s ease}.refresh-btn:hover:not(:disabled){background-color:#0056b3}.refresh-btn:disabled{background-color:#ccc;cursor:not-allowed}.loading{padding:20px;text-align:center;color:#666;background-color:#f8f9fa;border-radius:4px;margin:20px 0}.error{padding:15px;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;margin:20px 0}.error p{margin:0}.api-data{margin-top:20px}.api-data h3{margin:0 0 15px;color:#333;font-size:20px}.data-display{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:15px;overflow-x:auto}.data-display pre{margin:0;font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5;color:#333;white-space:pre-wrap;word-wrap:break-word}.no-api-url{padding:20px;text-align:center;color:#666;background-color:#fff3cd;border:1px solid #ffc107;border-radius:4px;margin-top:20px}.no-api-url p{margin:0}\n"] }]
97
+ args: [{ selector: 'lib-fb', standalone: true, imports: [CommonModule, FormsModule], template: "<div class=\"fb-container\">\n <div class=\"fb-header\">\n <h2>Welcome, {{ name }}!</h2>\n <div class=\"name-input-section\">\n <input \n type=\"text\" \n [(ngModel)]=\"name\" \n (ngModelChange)=\"changeName(name)\"\n placeholder=\"Enter your name\"\n class=\"name-input\"\n />\n </div>\n </div>\n\n @if (orgId && questionnaireId && token) {\n <div class=\"api-section\">\n <div class=\"api-controls\">\n <button (click)=\"refreshData()\" [disabled]=\"isLoading\" class=\"refresh-btn\">\n {{ isLoading ? 'Loading...' : 'Refresh Data' }}\n </button>\n </div>\n\n @if (isLoading) {\n <div class=\"loading\">\n <p>Loading data from API...</p>\n </div>\n }\n\n @if (error && !isLoading) {\n <div class=\"error\">\n <p><strong>Error:</strong> {{ error }}</p>\n </div>\n }\n\n @if (apiData && !isLoading && !error) {\n <div class=\"api-data\">\n <h3>API Response Data:</h3>\n <div class=\"data-display\">\n <pre>{{ apiData | json }}</pre>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-api-url\">\n <p>No data available. Please set the orgId, questionnaireId, and token inputs to fetch data.</p>\n </div>\n }\n</div>\n\n", styles: [".fb-container{padding:20px;max-width:800px;margin:0 auto;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif}.fb-header{margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e0e0e0}.fb-header h2{margin:0 0 15px;color:#333;font-size:24px}.name-input-section{margin-top:15px}.name-input{width:100%;max-width:300px;padding:10px 15px;font-size:16px;border:2px solid #ddd;border-radius:4px;transition:border-color .3s ease}.name-input:focus{outline:none;border-color:#007bff}.api-section{margin-top:30px}.api-controls{margin-bottom:20px}.refresh-btn{padding:10px 20px;font-size:16px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;transition:background-color .3s ease}.refresh-btn:hover:not(:disabled){background-color:#0056b3}.refresh-btn:disabled{background-color:#ccc;cursor:not-allowed}.loading{padding:20px;text-align:center;color:#666;background-color:#f8f9fa;border-radius:4px;margin:20px 0}.error{padding:15px;background-color:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;margin:20px 0}.error p{margin:0}.api-data{margin-top:20px}.api-data h3{margin:0 0 15px;color:#333;font-size:20px}.data-display{background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:15px;overflow-x:auto}.data-display pre{margin:0;font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5;color:#333;white-space:pre-wrap;word-wrap:break-word}.no-api-url{padding:20px;text-align:center;color:#666;background-color:#fff3cd;border:1px solid #ffc107;border-radius:4px;margin-top:20px}.no-api-url p{margin:0}\n"] }]
86
98
  }], ctorParameters: () => [{ type: i1.HttpClient, decorators: [{
87
99
  type: Optional
88
100
  }] }], propDecorators: { name: [{
@@ -1 +1 @@
1
- {"version":3,"file":"pridheep16-ng-fb.mjs","sources":["../../../projects/fb/src/lib/fb.ts","../../../projects/fb/src/lib/fb.html","../../../projects/fb/src/public-api.ts","../../../projects/fb/src/pridheep16-ng-fb.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, OnInit, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'lib-fb',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './fb.html',\n styleUrls: ['./fb.scss'],\n})\nexport class Fb implements OnInit {\n @Input() name: string = 'Pridheep';\n @Input() orgId: any = null;\n @Input() questionnaireId: any = null;\n @Input() token: string = '';\n apiData: any = null;\n isLoading: boolean = false;\n error: string | null = null;\n baseUrl: string = 'https://slqy53w3xc.execute-api.ap-south-1.amazonaws.com/core-service/api/v1';\n endpoint: string = '';\n // <!-- [apiUrl]=\"'https://slqy53w3xc.execute-api.ap-south-1.amazonaws.com/core-service/api/v1/\n // ORG-S122500003/questionnaires/QRB-QUEST8732/public\n\n constructor(@Optional() private http: HttpClient | null) {\n // this.nameChange.emit(this.name);\n\n if (this.orgId && this.questionnaireId && this.token) {\n this.endpoint = this.baseUrl + '/' + this.orgId + '/questionnaires/' + this.questionnaireId + '/public';\n }\n }\n\n ngOnInit() {\n if (this.orgId && this.questionnaireId && this.token) {\n this.fetchData();\n }\n }\n\n changeName(name: string) {\n this.name = name;\n }\n\n fetchData(): void {\n if (!this.endpoint) {\n console.warn('API URL is not provided');\n return;\n }\n\n if (!this.http) {\n this.error = 'HttpClient is not available. Please import HttpClientModule in your application.';\n console.error('HttpClient is not available');\n return;\n }\n \n this.isLoading = true;\n this.error = null;\n this.apiData = null;\n \n this.http.get<any>(this.endpoint).subscribe({\n next: (data) => {\n this.apiData = data;\n this.isLoading = false;\n },\n error: (error) => {\n this.isLoading = false;\n this.error = error.message || 'Failed to fetch data from API';\n console.error('Error fetching data from API:', error);\n }\n });\n }\n\n // getData(): Observable<any> {\n // const url = this.baseUrl + '/' + this.orgId + '/' + this.questionnaireId + '/' + this.token;\n // if (!url) {\n // console.warn('API URL is not provided');\n // return new Observable(observer => observer.complete());\n // }\n // if (!this.http) {\n // console.error('HttpClient is not available');\n // return new Observable(observer => {\n // observer.error('HttpClient is not available');\n // observer.complete();\n // });\n // }\n // return this.http.get<any>(url);\n // }\n\n refreshData(): void {\n this.fetchData();\n }\n}\n","<div class=\"fb-container\">\n <div class=\"fb-header\">\n <h2>Welcome, {{ name }}!</h2>\n <div class=\"name-input-section\">\n <input \n type=\"text\" \n [(ngModel)]=\"name\" \n (ngModelChange)=\"changeName(name)\"\n placeholder=\"Enter your name\"\n class=\"name-input\"\n />\n </div>\n </div>\n\n @if (orgId && questionnaireId && token; as isDataAvailable) {\n <div class=\"api-section\">\n <div class=\"api-controls\">\n <button (click)=\"refreshData()\" [disabled]=\"isLoading\" class=\"refresh-btn\">\n {{ isLoading ? 'Loading...' : 'Refresh Data' }}\n </button>\n </div>\n\n @if (isLoading) {\n <div class=\"loading\">\n <p>Loading data from API...</p>\n </div>\n }\n @if (error && !isLoading) {\n <div class=\"error\">\n <p><strong>Error:</strong> {{ error }}</p>\n </div>\n }\n @if (apiData && !isLoading && !error) {\n <div class=\"api-data\">\n <h3>API Response Data:</h3>\n <div class=\"data-display\">\n <pre>{{ apiData | json }}</pre>\n </div>\n </div>\n }\n </div>\n }\n\n @else {\n <div class=\"no-api-url\">\n <p>No data available. Please set the orgId, questionnaireId, and token inputs to fetch data.</p>\n </div>\n }\n</div>\n\n","/*\n * Public API Surface of fb\n */\n\nexport * from './lib/fb';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pridheep16-ng-fb.mjs","sources":["../../../projects/fb/src/lib/fb.ts","../../../projects/fb/src/lib/fb.html","../../../projects/fb/src/public-api.ts","../../../projects/fb/src/pridheep16-ng-fb.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output, OnInit, OnChanges, SimpleChanges, Optional } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\n\n@Component({\n selector: 'lib-fb',\n standalone: true,\n imports: [CommonModule, FormsModule],\n templateUrl: './fb.html',\n styleUrls: ['./fb.scss'],\n})\nexport class Fb implements OnInit, OnChanges {\n @Input() name: string = 'Pridheep';\n @Input() orgId: any = null;\n @Input() questionnaireId: any = null;\n @Input() token: string = '';\n apiData: any = null;\n isLoading: boolean = false;\n error: string | null = null;\n baseUrl: string = 'https://slqy53w3xc.execute-api.ap-south-1.amazonaws.com/core-service/api/v1';\n endpoint: string = '';\n\n constructor(@Optional() private http: HttpClient | null) {}\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['orgId'] || changes['questionnaireId'] || changes['token']) {\n this.buildEndpoint();\n if (this.orgId && this.questionnaireId && this.token && this.endpoint) {\n this.fetchData();\n }\n }\n }\n\n ngOnInit() {\n this.buildEndpoint();\n if (this.orgId && this.questionnaireId && this.token && this.endpoint) {\n this.fetchData();\n }\n }\n\n buildEndpoint(): void {\n if (this.orgId && this.questionnaireId && this.token) {\n this.endpoint = this.baseUrl + '/' + this.orgId + '/questionnaires/' + this.questionnaireId + '/public';\n } else {\n this.endpoint = '';\n }\n }\n\n changeName(name: string) {\n this.name = name;\n }\n\n fetchData(): void {\n if (!this.endpoint) {\n console.warn('API URL is not provided');\n return;\n }\n\n if (!this.http) {\n this.error = 'HttpClient is not available. Please import HttpClientModule in your application.';\n console.error('HttpClient is not available');\n return;\n }\n \n this.isLoading = true;\n this.error = null;\n this.apiData = null;\n \n this.http.get<any>(this.endpoint).subscribe({\n next: (data) => {\n this.apiData = data;\n this.isLoading = false;\n },\n error: (error) => {\n this.isLoading = false;\n this.error = error.message || 'Failed to fetch data from API';\n console.error('Error fetching data from API:', error);\n }\n });\n }\n\n getData(): Observable<any> {\n this.buildEndpoint();\n if (!this.endpoint) {\n console.warn('API endpoint is not available. Please provide orgId, questionnaireId, and token.');\n return new Observable(observer => observer.complete());\n }\n if (!this.http) {\n console.error('HttpClient is not available');\n return new Observable(observer => {\n observer.error('HttpClient is not available');\n observer.complete();\n });\n }\n return this.http.get<any>(this.endpoint);\n }\n\n refreshData(): void {\n this.fetchData();\n }\n}\n","<div class=\"fb-container\">\n <div class=\"fb-header\">\n <h2>Welcome, {{ name }}!</h2>\n <div class=\"name-input-section\">\n <input \n type=\"text\" \n [(ngModel)]=\"name\" \n (ngModelChange)=\"changeName(name)\"\n placeholder=\"Enter your name\"\n class=\"name-input\"\n />\n </div>\n </div>\n\n @if (orgId && questionnaireId && token) {\n <div class=\"api-section\">\n <div class=\"api-controls\">\n <button (click)=\"refreshData()\" [disabled]=\"isLoading\" class=\"refresh-btn\">\n {{ isLoading ? 'Loading...' : 'Refresh Data' }}\n </button>\n </div>\n\n @if (isLoading) {\n <div class=\"loading\">\n <p>Loading data from API...</p>\n </div>\n }\n\n @if (error && !isLoading) {\n <div class=\"error\">\n <p><strong>Error:</strong> {{ error }}</p>\n </div>\n }\n\n @if (apiData && !isLoading && !error) {\n <div class=\"api-data\">\n <h3>API Response Data:</h3>\n <div class=\"data-display\">\n <pre>{{ apiData | json }}</pre>\n </div>\n </div>\n }\n </div>\n } @else {\n <div class=\"no-api-url\">\n <p>No data available. Please set the orgId, questionnaireId, and token inputs to fetch data.</p>\n </div>\n }\n</div>\n\n","/*\n * Public API Surface of fb\n */\n\nexport * from './lib/fb';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import * as i0 from '@angular/core';
2
- import { OnInit } from '@angular/core';
2
+ import { OnInit, OnChanges, SimpleChanges } from '@angular/core';
3
3
  import { HttpClient } from '@angular/common/http';
4
+ import { Observable } from 'rxjs';
4
5
 
5
- declare class Fb implements OnInit {
6
+ declare class Fb implements OnInit, OnChanges {
6
7
  private http;
7
8
  name: string;
8
9
  orgId: any;
@@ -14,9 +15,12 @@ declare class Fb implements OnInit {
14
15
  baseUrl: string;
15
16
  endpoint: string;
16
17
  constructor(http: HttpClient | null);
18
+ ngOnChanges(changes: SimpleChanges): void;
17
19
  ngOnInit(): void;
20
+ buildEndpoint(): void;
18
21
  changeName(name: string): void;
19
22
  fetchData(): void;
23
+ getData(): Observable<any>;
20
24
  refreshData(): void;
21
25
  static ɵfac: i0.ɵɵFactoryDeclaration<Fb, [{ optional: true; }]>;
22
26
  static ɵcmp: i0.ɵɵComponentDeclaration<Fb, "lib-fb", never, { "name": { "alias": "name"; "required": false; }; "orgId": { "alias": "orgId"; "required": false; }; "questionnaireId": { "alias": "questionnaireId"; "required": false; }; "token": { "alias": "token"; "required": false; }; }, {}, never, never, true, never>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pridheep16/ng-fb",
3
- "version": "1.0.6",
3
+ "version": "1.0.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=18.0.0",
6
6
  "@angular/core": ">=18.0.0",