@rpan93/ron-lib 1.0.0 → 1.0.4
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.
- package/esm2020/lib/custom-card/custom-card.component.mjs +19 -0
- package/esm2020/lib/custom-page/custom-page-routing.module.mjs +24 -0
- package/esm2020/lib/custom-page/custom-page.component.mjs +15 -0
- package/esm2020/lib/custom-page/custom-page.module.mjs +28 -0
- package/esm2020/lib/dashboard/dashboard-routing.module.mjs +24 -0
- package/esm2020/lib/dashboard/dashboard.module.mjs +41 -0
- package/esm2020/lib/dashboard/dashboard.page.mjs +58 -0
- package/esm2020/lib/ron-lib.component.mjs +26 -0
- package/esm2020/lib/ron-lib.module.mjs +51 -0
- package/esm2020/lib/ron-lib.service.mjs +28 -0
- package/esm2020/public-api.mjs +10 -0
- package/esm2020/rpan93-ron-lib.mjs +5 -0
- package/fesm2015/rpan93-ron-lib.mjs +288 -0
- package/fesm2015/rpan93-ron-lib.mjs.map +1 -0
- package/fesm2020/rpan93-ron-lib.mjs +286 -0
- package/fesm2020/rpan93-ron-lib.mjs.map +1 -0
- package/lib/custom-card/custom-card.component.d.ts +10 -0
- package/lib/custom-page/custom-page-routing.module.d.ts +7 -0
- package/lib/custom-page/custom-page.component.d.ts +8 -0
- package/lib/custom-page/custom-page.module.d.ts +11 -0
- package/lib/dashboard/dashboard-routing.module.d.ts +7 -0
- package/lib/dashboard/dashboard.module.d.ts +12 -0
- package/lib/dashboard/dashboard.page.d.ts +11 -0
- package/lib/ron-lib.component.d.ts +8 -0
- package/lib/ron-lib.module.d.ts +17 -0
- package/lib/ron-lib.service.d.ts +12 -0
- package/package.json +24 -6
- package/{src/public-api.ts → public-api.d.ts} +6 -9
- package/rpan93-ron-lib.d.ts +5 -0
- package/.browserslistrc +0 -16
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -7
- package/src/lib/custom-card/custom-card.component.css +0 -0
- package/src/lib/custom-card/custom-card.component.html +0 -8
- package/src/lib/custom-card/custom-card.component.spec.ts +0 -25
- package/src/lib/custom-card/custom-card.component.ts +0 -19
- package/src/lib/custom-page/custom-page-routing.module.ts +0 -18
- package/src/lib/custom-page/custom-page.component.css +0 -0
- package/src/lib/custom-page/custom-page.component.html +0 -15
- package/src/lib/custom-page/custom-page.component.spec.ts +0 -25
- package/src/lib/custom-page/custom-page.component.ts +0 -15
- package/src/lib/custom-page/custom-page.module.ts +0 -17
- package/src/lib/ron-lib.component.spec.ts +0 -25
- package/src/lib/ron-lib.component.ts +0 -20
- package/src/lib/ron-lib.module.ts +0 -42
- package/src/lib/ron-lib.service.spec.ts +0 -16
- package/src/lib/ron-lib.service.ts +0 -19
- package/src/test.ts +0 -27
- package/tsconfig.lib.json +0 -15
- package/tsconfig.lib.prod.json +0 -10
- package/tsconfig.spec.json +0 -17
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"rpan93-ron-lib.mjs","sources":["../../../projects/ron-lib/src/lib/ron-lib.component.ts","../../../projects/ron-lib/src/lib/custom-card/custom-card.component.ts","../../../projects/ron-lib/src/lib/custom-card/custom-card.component.html","../../../projects/ron-lib/src/lib/ron-lib.module.ts","../../../projects/ron-lib/src/lib/ron-lib.service.ts","../../../projects/ron-lib/src/lib/custom-page/custom-page.component.ts","../../../projects/ron-lib/src/lib/custom-page/custom-page.component.html","../../../projects/ron-lib/src/lib/custom-page/custom-page-routing.module.ts","../../../projects/ron-lib/src/lib/custom-page/custom-page.module.ts","../../../projects/ron-lib/src/lib/dashboard/dashboard.page.ts","../../../projects/ron-lib/src/lib/dashboard/dashboard.page.html","../../../projects/ron-lib/src/lib/dashboard/dashboard-routing.module.ts","../../../projects/ron-lib/src/lib/dashboard/dashboard.module.ts","../../../projects/ron-lib/src/public-api.ts","../../../projects/ron-lib/src/rpan93-ron-lib.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dev-ron-lib',\n template: `\n <p>\n ron-lib works!\n </p>\n `,\n styles: [\n ]\n})\nexport class RonLibComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'dev-custom-card',\n templateUrl: './custom-card.component.html',\n styleUrls: ['./custom-card.component.css']\n})\nexport class CustomCardComponent implements OnInit {\n @Input()\n title!: string;\n @Input()\n content!: string;\n \n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<ion-card>\n <ion-card-header>\n <ion-card-title>{{ title }}</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n {{ content }}\n </ion-card-content>\n</ion-card>\n","import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';\nimport { RonLibComponent } from './ron-lib.component';\nimport { CustomCardComponent } from './custom-card/custom-card.component';\nimport { CustomPageComponent } from './custom-page/custom-page.component';\n\nimport { IonicModule } from '@ionic/angular';\nimport { HttpClientModule } from '@angular/common/http';\nimport { CommonModule } from '@angular/common';\nimport { RonLibService } from './ron-lib.service';\n\nexport interface LibConfig {\n apiUrl: string;\n}\nexport const LibConfigService = new InjectionToken<LibConfig>('LibConfig');\n@NgModule({\n declarations: [\n RonLibComponent,\n CustomCardComponent\n ],\n imports: [\n CommonModule,\n HttpClientModule,\n IonicModule\n ],\n exports: [\n RonLibComponent, CustomCardComponent\n ]\n})\nexport class RonLibModule {\n static forRoot(config: LibConfig): ModuleWithProviders<any> {\n return {\n ngModule: RonLibModule,\n providers: [\n RonLibService,\n {\n provide: LibConfigService,\n useValue: config\n }\n ]\n };\n }\n }\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable } from '@angular/core';\nimport { LibConfigService, LibConfig } from './ron-lib.module';\nimport { map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RonLibService {\n baseUrl = this.config.apiUrl;\n constructor(@Inject(LibConfigService) private config: LibConfig, private http: HttpClient) {\n console.log('My config: ', config);\n }\n getData() {\n return this.http.get<any>(`${this.baseUrl}/api`).pipe(\n map((res: any) => res.results[0])\n )\n }\n}\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'dev-custom-page',\n templateUrl: './custom-page.component.html',\n styleUrls: ['./custom-page.component.css']\n})\nexport class CustomPageComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button defaultHref=\"/\">\n </ion-back-button>\n <ion-title>\n Ron Lib Page\n </ion-title>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <div class=\"custom-box\"></div>\n This is a full page from the library!\n</ion-content>\n","import { CustomPageComponent } from './custom-page.component';\r\nimport { NgModule } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nconst routes : Routes = [\r\n {\r\n path: '',\r\n component: CustomPageComponent,\r\n }\r\n];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forChild(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class CustomPageRoutingModule{\r\n \r\n}","import { CustomPageComponent } from \"./custom-page.component\";\r\nimport { CustomPageRoutingModule } from \"./custom-page-routing.module\";\r\nimport { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { IonicModule } from '@ionic/angular';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n imports:[CommonModule,FormsModule,\r\n IonicModule,\r\n CustomPageRoutingModule\r\n ],\r\n declarations: [CustomPageComponent]\r\n})\r\nexport class CustomPageModule{\r\n\r\n}","import { Component, OnInit, ViewChild, ElementRef } from '@angular/core';\nimport { Chart } from \"chart.js\";\nimport { HttpClient } from '@angular/common/http';\n@Component({\n selector: 'app-dashboard',\n templateUrl: './dashboard.page.html',\n styleUrls: ['./dashboard.page.scss'],\n})\nexport class DashboardPage implements OnInit {\n @ViewChild('barChart')\n private barChart!: ElementRef;\n bars: any;\n constructor(){}\n\n ngOnInit() {\n this.createBarChart();\n }\n createBarChart() {\n this.bars = new Chart(this.barChart.nativeElement, {\n type: 'bar',\n data: {\n labels: ['BJP', 'INC', 'AAP', 'CPI', 'CPI-M', 'NCP'],\n datasets: [{\n label: '# of Votes',\n data: [200, 50, 30, 15, 20, 34],\n backgroundColor: [\n 'rgba(255, 99, 132, 0.2)',\n 'rgba(54, 162, 235, 0.2)',\n 'rgba(255, 206, 86, 0.2)',\n 'rgba(75, 192, 192, 0.2)',\n 'rgba(153, 102, 255, 0.2)',\n 'rgba(255, 159, 64, 0.2)'\n ],\n borderColor: [\n 'rgba(255,99,132,1)',\n 'rgba(54, 162, 235, 1)',\n 'rgba(255, 206, 86, 1)',\n 'rgba(75, 192, 192, 1)',\n 'rgba(153, 102, 255, 1)',\n 'rgba(255, 159, 64, 1)'\n ],\n borderWidth: 1\n }]\n },\n options: {\n scales: {\n // yAxes: [{\n // ticks: {\n // beginAtZero: true\n // }\n // }]\n }\n }\n });\n }\n}\n","<ion-header>\n <ion-toolbar color=\"primary\">\n <ion-buttons slot=\"start\">\n <ion-back-button defaultHref=\"/\">\n </ion-back-button>\n <ion-title>\n Ron Dashboard Page\n </ion-title>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n\n<ion-content>\nDashboard\n<ion-card class=\"welcome-card\">\n <ion-card-header>\n <ion-card-subtitle>Authorizations</ion-card-subtitle>\n <ion-card-title>Transaction details</ion-card-title>\n </ion-card-header>\n <ion-card-content>\n My Card\n <canvas #barChart style=\"position: relative; height:20vh; width:40vw\"></canvas>\n </ion-card-content>\n</ion-card>\n</ion-content>\n","import { NgModule } from '@angular/core';\nimport { Routes, RouterModule } from '@angular/router';\n\nimport { DashboardPage } from './dashboard.page';\n\nconst routes: Routes = [\n {\n path: '',\n component: DashboardPage\n }\n];\n\n@NgModule({\n imports: [RouterModule.forChild(routes)],\n exports: [RouterModule],\n})\nexport class DashboardPageRoutingModule {}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\n\nimport { IonicModule } from '@ionic/angular';\n\nimport { DashboardPageRoutingModule } from './dashboard-routing.module';\n\nimport { DashboardPage } from './dashboard.page';\n//import { ChartModule } from 'angular2-chartjs';\nimport { HttpClientModule } from '@angular/common/http';\n@NgModule({\n imports: [\n CommonModule,\n FormsModule,\n IonicModule,\n DashboardPageRoutingModule,\n //ChartModule,\n HttpClientModule\n ],\n declarations: [DashboardPage]\n})\nexport class DashboardPageModule {}\n","/*\n * Public API Surface of ron-lib\n */\n\nexport * from './lib/ron-lib.service';\nexport * from './lib/ron-lib.component';\nexport * from './lib/ron-lib.module';\nexport * from './lib/custom-card/custom-card.component';\nexport * from './lib/custom-page/custom-page.module';\nexport * from './lib/dashboard/dashboard.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["routes"],"mappings":"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"}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { OnInit } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class CustomCardComponent implements OnInit {
|
4
|
+
title: string;
|
5
|
+
content: string;
|
6
|
+
constructor();
|
7
|
+
ngOnInit(): void;
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomCardComponent, never>;
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CustomCardComponent, "dev-custom-card", never, { "title": "title"; "content": "content"; }, {}, never, never>;
|
10
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "@angular/router";
|
3
|
+
export declare class CustomPageRoutingModule {
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomPageRoutingModule, never>;
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CustomPageRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
|
6
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CustomPageRoutingModule>;
|
7
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { OnInit } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class CustomPageComponent implements OnInit {
|
4
|
+
constructor();
|
5
|
+
ngOnInit(): void;
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomPageComponent, never>;
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CustomPageComponent, "dev-custom-page", never, {}, {}, never, never>;
|
8
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "./custom-page.component";
|
3
|
+
import * as i2 from "@angular/common";
|
4
|
+
import * as i3 from "@angular/forms";
|
5
|
+
import * as i4 from "@ionic/angular";
|
6
|
+
import * as i5 from "./custom-page-routing.module";
|
7
|
+
export declare class CustomPageModule {
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomPageModule, never>;
|
9
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<CustomPageModule, [typeof i1.CustomPageComponent], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i4.IonicModule, typeof i5.CustomPageRoutingModule], never>;
|
10
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<CustomPageModule>;
|
11
|
+
}
|
@@ -0,0 +1,7 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "@angular/router";
|
3
|
+
export declare class DashboardPageRoutingModule {
|
4
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardPageRoutingModule, never>;
|
5
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardPageRoutingModule, never, [typeof i1.RouterModule], [typeof i1.RouterModule]>;
|
6
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DashboardPageRoutingModule>;
|
7
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import * as i0 from "@angular/core";
|
2
|
+
import * as i1 from "./dashboard.page";
|
3
|
+
import * as i2 from "@angular/common";
|
4
|
+
import * as i3 from "@angular/forms";
|
5
|
+
import * as i4 from "@ionic/angular";
|
6
|
+
import * as i5 from "./dashboard-routing.module";
|
7
|
+
import * as i6 from "@angular/common/http";
|
8
|
+
export declare class DashboardPageModule {
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardPageModule, never>;
|
10
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<DashboardPageModule, [typeof i1.DashboardPage], [typeof i2.CommonModule, typeof i3.FormsModule, typeof i4.IonicModule, typeof i5.DashboardPageRoutingModule, typeof i6.HttpClientModule], never>;
|
11
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<DashboardPageModule>;
|
12
|
+
}
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { OnInit } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class DashboardPage implements OnInit {
|
4
|
+
private barChart;
|
5
|
+
bars: any;
|
6
|
+
constructor();
|
7
|
+
ngOnInit(): void;
|
8
|
+
createBarChart(): void;
|
9
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DashboardPage, never>;
|
10
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<DashboardPage, "app-dashboard", never, {}, {}, never, never>;
|
11
|
+
}
|
@@ -0,0 +1,8 @@
|
|
1
|
+
import { OnInit } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
export declare class RonLibComponent implements OnInit {
|
4
|
+
constructor();
|
5
|
+
ngOnInit(): void;
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RonLibComponent, never>;
|
7
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<RonLibComponent, "dev-ron-lib", never, {}, {}, never, never>;
|
8
|
+
}
|
@@ -0,0 +1,17 @@
|
|
1
|
+
import { InjectionToken, ModuleWithProviders } from '@angular/core';
|
2
|
+
import * as i0 from "@angular/core";
|
3
|
+
import * as i1 from "./ron-lib.component";
|
4
|
+
import * as i2 from "./custom-card/custom-card.component";
|
5
|
+
import * as i3 from "@angular/common";
|
6
|
+
import * as i4 from "@angular/common/http";
|
7
|
+
import * as i5 from "@ionic/angular";
|
8
|
+
export interface LibConfig {
|
9
|
+
apiUrl: string;
|
10
|
+
}
|
11
|
+
export declare const LibConfigService: InjectionToken<LibConfig>;
|
12
|
+
export declare class RonLibModule {
|
13
|
+
static forRoot(config: LibConfig): ModuleWithProviders<any>;
|
14
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RonLibModule, never>;
|
15
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<RonLibModule, [typeof i1.RonLibComponent, typeof i2.CustomCardComponent], [typeof i3.CommonModule, typeof i4.HttpClientModule, typeof i5.IonicModule], [typeof i1.RonLibComponent, typeof i2.CustomCardComponent]>;
|
16
|
+
static ɵinj: i0.ɵɵInjectorDeclaration<RonLibModule>;
|
17
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { HttpClient } from '@angular/common/http';
|
2
|
+
import { LibConfig } from './ron-lib.module';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export declare class RonLibService {
|
5
|
+
private config;
|
6
|
+
private http;
|
7
|
+
baseUrl: string;
|
8
|
+
constructor(config: LibConfig, http: HttpClient);
|
9
|
+
getData(): import("rxjs").Observable<any>;
|
10
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<RonLibService, never>;
|
11
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<RonLibService>;
|
12
|
+
}
|
package/package.json
CHANGED
@@ -1,14 +1,32 @@
|
|
1
1
|
{
|
2
2
|
"name": "@rpan93/ron-lib",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.4",
|
4
4
|
"peerDependencies": {
|
5
5
|
"@angular/common": "^13.1.0",
|
6
|
-
"@angular/core": "^13.1.0"
|
6
|
+
"@angular/core": "^13.1.0",
|
7
|
+
"@ionic/angular": "^6.0.2"
|
7
8
|
},
|
8
9
|
"dependencies": {
|
9
10
|
"tslib": "^2.3.0"
|
10
11
|
},
|
11
|
-
"
|
12
|
-
|
13
|
-
|
14
|
-
|
12
|
+
"module": "fesm2015/rpan93-ron-lib.mjs",
|
13
|
+
"es2020": "fesm2020/rpan93-ron-lib.mjs",
|
14
|
+
"esm2020": "esm2020/rpan93-ron-lib.mjs",
|
15
|
+
"fesm2020": "fesm2020/rpan93-ron-lib.mjs",
|
16
|
+
"fesm2015": "fesm2015/rpan93-ron-lib.mjs",
|
17
|
+
"typings": "rpan93-ron-lib.d.ts",
|
18
|
+
"exports": {
|
19
|
+
"./package.json": {
|
20
|
+
"default": "./package.json"
|
21
|
+
},
|
22
|
+
".": {
|
23
|
+
"types": "./rpan93-ron-lib.d.ts",
|
24
|
+
"esm2020": "./esm2020/rpan93-ron-lib.mjs",
|
25
|
+
"es2020": "./fesm2020/rpan93-ron-lib.mjs",
|
26
|
+
"es2015": "./fesm2015/rpan93-ron-lib.mjs",
|
27
|
+
"node": "./fesm2015/rpan93-ron-lib.mjs",
|
28
|
+
"default": "./fesm2020/rpan93-ron-lib.mjs"
|
29
|
+
}
|
30
|
+
},
|
31
|
+
"sideEffects": false
|
32
|
+
}
|
@@ -1,9 +1,6 @@
|
|
1
|
-
|
2
|
-
*
|
3
|
-
|
4
|
-
|
5
|
-
export * from './lib/
|
6
|
-
export * from './lib/
|
7
|
-
export * from './lib/ron-lib.module';
|
8
|
-
export * from './lib/custom-card/custom-card.component';
|
9
|
-
export * from './lib/custom-page/custom-page.module';
|
1
|
+
export * from './lib/ron-lib.service';
|
2
|
+
export * from './lib/ron-lib.component';
|
3
|
+
export * from './lib/ron-lib.module';
|
4
|
+
export * from './lib/custom-card/custom-card.component';
|
5
|
+
export * from './lib/custom-page/custom-page.module';
|
6
|
+
export * from './lib/dashboard/dashboard.module';
|
package/.browserslistrc
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# This file is used by the build system to adjust CSS and JS output to support the specified browsers below.
|
2
|
-
# For additional information regarding the format and rule options, please see:
|
3
|
-
# https://github.com/browserslist/browserslist#queries
|
4
|
-
|
5
|
-
# For the full list of supported browsers by the Angular framework, please see:
|
6
|
-
# https://angular.io/guide/browser-support
|
7
|
-
|
8
|
-
# You can see what browsers were selected by your queries by running:
|
9
|
-
# npx browserslist
|
10
|
-
|
11
|
-
last 1 Chrome version
|
12
|
-
last 1 Firefox version
|
13
|
-
last 2 Edge major versions
|
14
|
-
last 2 Safari major versions
|
15
|
-
last 2 iOS major versions
|
16
|
-
Firefox ESR
|
package/karma.conf.js
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
// Karma configuration file, see link for more information
|
2
|
-
// https://karma-runner.github.io/1.0/config/configuration-file.html
|
3
|
-
|
4
|
-
module.exports = function (config) {
|
5
|
-
config.set({
|
6
|
-
basePath: '',
|
7
|
-
frameworks: ['jasmine', '@angular-devkit/build-angular'],
|
8
|
-
plugins: [
|
9
|
-
require('karma-jasmine'),
|
10
|
-
require('karma-chrome-launcher'),
|
11
|
-
require('karma-jasmine-html-reporter'),
|
12
|
-
require('karma-coverage'),
|
13
|
-
require('@angular-devkit/build-angular/plugins/karma')
|
14
|
-
],
|
15
|
-
client: {
|
16
|
-
jasmine: {
|
17
|
-
// you can add configuration options for Jasmine here
|
18
|
-
// the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html
|
19
|
-
// for example, you can disable the random execution with `random: false`
|
20
|
-
// or set a specific seed with `seed: 4321`
|
21
|
-
},
|
22
|
-
clearContext: false // leave Jasmine Spec Runner output visible in browser
|
23
|
-
},
|
24
|
-
jasmineHtmlReporter: {
|
25
|
-
suppressAll: true // removes the duplicated traces
|
26
|
-
},
|
27
|
-
coverageReporter: {
|
28
|
-
dir: require('path').join(__dirname, '../../coverage/ron-lib'),
|
29
|
-
subdir: '.',
|
30
|
-
reporters: [
|
31
|
-
{ type: 'html' },
|
32
|
-
{ type: 'text-summary' }
|
33
|
-
]
|
34
|
-
},
|
35
|
-
reporters: ['progress', 'kjhtml'],
|
36
|
-
port: 9876,
|
37
|
-
colors: true,
|
38
|
-
logLevel: config.LOG_INFO,
|
39
|
-
autoWatch: true,
|
40
|
-
browsers: ['Chrome'],
|
41
|
-
singleRun: false,
|
42
|
-
restartOnFileChange: true
|
43
|
-
});
|
44
|
-
};
|
package/ng-package.json
DELETED
File without changes
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
2
|
-
|
3
|
-
import { CustomCardComponent } from './custom-card.component';
|
4
|
-
|
5
|
-
describe('CustomCardComponent', () => {
|
6
|
-
let component: CustomCardComponent;
|
7
|
-
let fixture: ComponentFixture<CustomCardComponent>;
|
8
|
-
|
9
|
-
beforeEach(async () => {
|
10
|
-
await TestBed.configureTestingModule({
|
11
|
-
declarations: [ CustomCardComponent ]
|
12
|
-
})
|
13
|
-
.compileComponents();
|
14
|
-
});
|
15
|
-
|
16
|
-
beforeEach(() => {
|
17
|
-
fixture = TestBed.createComponent(CustomCardComponent);
|
18
|
-
component = fixture.componentInstance;
|
19
|
-
fixture.detectChanges();
|
20
|
-
});
|
21
|
-
|
22
|
-
it('should create', () => {
|
23
|
-
expect(component).toBeTruthy();
|
24
|
-
});
|
25
|
-
});
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import { Component, OnInit, Input } from '@angular/core';
|
2
|
-
|
3
|
-
@Component({
|
4
|
-
selector: 'dev-custom-card',
|
5
|
-
templateUrl: './custom-card.component.html',
|
6
|
-
styleUrls: ['./custom-card.component.css']
|
7
|
-
})
|
8
|
-
export class CustomCardComponent implements OnInit {
|
9
|
-
@Input()
|
10
|
-
title!: string;
|
11
|
-
@Input()
|
12
|
-
content!: string;
|
13
|
-
|
14
|
-
constructor() { }
|
15
|
-
|
16
|
-
ngOnInit(): void {
|
17
|
-
}
|
18
|
-
|
19
|
-
}
|
@@ -1,18 +0,0 @@
|
|
1
|
-
import { CustomPageComponent } from './custom-page.component';
|
2
|
-
import { NgModule } from '@angular/core';
|
3
|
-
import { RouterModule, Routes } from '@angular/router';
|
4
|
-
|
5
|
-
const routes : Routes = [
|
6
|
-
{
|
7
|
-
path: '',
|
8
|
-
component: CustomPageComponent,
|
9
|
-
}
|
10
|
-
];
|
11
|
-
|
12
|
-
@NgModule({
|
13
|
-
imports: [RouterModule.forChild(routes)],
|
14
|
-
exports: [RouterModule]
|
15
|
-
})
|
16
|
-
export class CustomPageRoutingModule{
|
17
|
-
|
18
|
-
}
|
File without changes
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<ion-header>
|
2
|
-
<ion-toolbar color="primary">
|
3
|
-
<ion-buttons slot="start">
|
4
|
-
<ion-back-button defaultHref="/">
|
5
|
-
</ion-back-button>
|
6
|
-
<ion-title>
|
7
|
-
Ron Lib Page
|
8
|
-
</ion-title>
|
9
|
-
</ion-buttons>
|
10
|
-
</ion-toolbar>
|
11
|
-
</ion-header>
|
12
|
-
<ion-content>
|
13
|
-
<div class="custom-box"></div>
|
14
|
-
This is a full page from the library!
|
15
|
-
</ion-content>
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
2
|
-
|
3
|
-
import { CustomPageComponent } from './custom-page.component';
|
4
|
-
|
5
|
-
describe('CustomPageComponent', () => {
|
6
|
-
let component: CustomPageComponent;
|
7
|
-
let fixture: ComponentFixture<CustomPageComponent>;
|
8
|
-
|
9
|
-
beforeEach(async () => {
|
10
|
-
await TestBed.configureTestingModule({
|
11
|
-
declarations: [ CustomPageComponent ]
|
12
|
-
})
|
13
|
-
.compileComponents();
|
14
|
-
});
|
15
|
-
|
16
|
-
beforeEach(() => {
|
17
|
-
fixture = TestBed.createComponent(CustomPageComponent);
|
18
|
-
component = fixture.componentInstance;
|
19
|
-
fixture.detectChanges();
|
20
|
-
});
|
21
|
-
|
22
|
-
it('should create', () => {
|
23
|
-
expect(component).toBeTruthy();
|
24
|
-
});
|
25
|
-
});
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { Component, OnInit } from '@angular/core';
|
2
|
-
|
3
|
-
@Component({
|
4
|
-
selector: 'dev-custom-page',
|
5
|
-
templateUrl: './custom-page.component.html',
|
6
|
-
styleUrls: ['./custom-page.component.css']
|
7
|
-
})
|
8
|
-
export class CustomPageComponent implements OnInit {
|
9
|
-
|
10
|
-
constructor() { }
|
11
|
-
|
12
|
-
ngOnInit(): void {
|
13
|
-
}
|
14
|
-
|
15
|
-
}
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import { CustomPageComponent } from "./custom-page.component";
|
2
|
-
import { CustomPageRoutingModule } from "./custom-page-routing.module";
|
3
|
-
import { NgModule } from '@angular/core';
|
4
|
-
import { CommonModule } from '@angular/common';
|
5
|
-
import { IonicModule } from '@ionic/angular';
|
6
|
-
import { FormsModule } from '@angular/forms';
|
7
|
-
|
8
|
-
@NgModule({
|
9
|
-
imports:[CommonModule,FormsModule,
|
10
|
-
IonicModule,
|
11
|
-
CustomPageRoutingModule
|
12
|
-
],
|
13
|
-
declarations: [CustomPageComponent]
|
14
|
-
})
|
15
|
-
export class CustomPageModule{
|
16
|
-
|
17
|
-
}
|
@@ -1,25 +0,0 @@
|
|
1
|
-
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
2
|
-
|
3
|
-
import { RonLibComponent } from './ron-lib.component';
|
4
|
-
|
5
|
-
describe('RonLibComponent', () => {
|
6
|
-
let component: RonLibComponent;
|
7
|
-
let fixture: ComponentFixture<RonLibComponent>;
|
8
|
-
|
9
|
-
beforeEach(async () => {
|
10
|
-
await TestBed.configureTestingModule({
|
11
|
-
declarations: [ RonLibComponent ]
|
12
|
-
})
|
13
|
-
.compileComponents();
|
14
|
-
});
|
15
|
-
|
16
|
-
beforeEach(() => {
|
17
|
-
fixture = TestBed.createComponent(RonLibComponent);
|
18
|
-
component = fixture.componentInstance;
|
19
|
-
fixture.detectChanges();
|
20
|
-
});
|
21
|
-
|
22
|
-
it('should create', () => {
|
23
|
-
expect(component).toBeTruthy();
|
24
|
-
});
|
25
|
-
});
|
@@ -1,20 +0,0 @@
|
|
1
|
-
import { Component, OnInit } from '@angular/core';
|
2
|
-
|
3
|
-
@Component({
|
4
|
-
selector: 'dev-ron-lib',
|
5
|
-
template: `
|
6
|
-
<p>
|
7
|
-
ron-lib works!
|
8
|
-
</p>
|
9
|
-
`,
|
10
|
-
styles: [
|
11
|
-
]
|
12
|
-
})
|
13
|
-
export class RonLibComponent implements OnInit {
|
14
|
-
|
15
|
-
constructor() { }
|
16
|
-
|
17
|
-
ngOnInit(): void {
|
18
|
-
}
|
19
|
-
|
20
|
-
}
|
@@ -1,42 +0,0 @@
|
|
1
|
-
import { InjectionToken, ModuleWithProviders, NgModule } from '@angular/core';
|
2
|
-
import { RonLibComponent } from './ron-lib.component';
|
3
|
-
import { CustomCardComponent } from './custom-card/custom-card.component';
|
4
|
-
import { CustomPageComponent } from './custom-page/custom-page.component';
|
5
|
-
|
6
|
-
import { IonicModule } from '@ionic/angular';
|
7
|
-
import { HttpClientModule } from '@angular/common/http';
|
8
|
-
import { CommonModule } from '@angular/common';
|
9
|
-
import { RonLibService } from './ron-lib.service';
|
10
|
-
|
11
|
-
export interface LibConfig {
|
12
|
-
apiUrl: string;
|
13
|
-
}
|
14
|
-
export const LibConfigService = new InjectionToken<LibConfig>('LibConfig');
|
15
|
-
@NgModule({
|
16
|
-
declarations: [
|
17
|
-
RonLibComponent,
|
18
|
-
CustomCardComponent
|
19
|
-
],
|
20
|
-
imports: [
|
21
|
-
CommonModule,
|
22
|
-
HttpClientModule,
|
23
|
-
IonicModule
|
24
|
-
],
|
25
|
-
exports: [
|
26
|
-
RonLibComponent, CustomCardComponent
|
27
|
-
]
|
28
|
-
})
|
29
|
-
export class RonLibModule {
|
30
|
-
static forRoot(config: LibConfig): ModuleWithProviders<any> {
|
31
|
-
return {
|
32
|
-
ngModule: RonLibModule,
|
33
|
-
providers: [
|
34
|
-
RonLibService,
|
35
|
-
{
|
36
|
-
provide: LibConfigService,
|
37
|
-
useValue: config
|
38
|
-
}
|
39
|
-
]
|
40
|
-
};
|
41
|
-
}
|
42
|
-
}
|
@@ -1,16 +0,0 @@
|
|
1
|
-
import { TestBed } from '@angular/core/testing';
|
2
|
-
|
3
|
-
import { RonLibService } from './ron-lib.service';
|
4
|
-
|
5
|
-
describe('RonLibService', () => {
|
6
|
-
let service: RonLibService;
|
7
|
-
|
8
|
-
beforeEach(() => {
|
9
|
-
TestBed.configureTestingModule({});
|
10
|
-
service = TestBed.inject(RonLibService);
|
11
|
-
});
|
12
|
-
|
13
|
-
it('should be created', () => {
|
14
|
-
expect(service).toBeTruthy();
|
15
|
-
});
|
16
|
-
});
|
@@ -1,19 +0,0 @@
|
|
1
|
-
import { HttpClient } from '@angular/common/http';
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
3
|
-
import { LibConfigService, LibConfig } from './ron-lib.module';
|
4
|
-
import { map } from 'rxjs/operators';
|
5
|
-
|
6
|
-
@Injectable({
|
7
|
-
providedIn: 'root'
|
8
|
-
})
|
9
|
-
export class RonLibService {
|
10
|
-
baseUrl = this.config.apiUrl;
|
11
|
-
constructor(@Inject(LibConfigService) private config: LibConfig, private http: HttpClient) {
|
12
|
-
console.log('My config: ', config);
|
13
|
-
}
|
14
|
-
getData() {
|
15
|
-
return this.http.get<any>(`${this.baseUrl}/api`).pipe(
|
16
|
-
map((res: any) => res.results[0])
|
17
|
-
)
|
18
|
-
}
|
19
|
-
}
|
package/src/test.ts
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
// This file is required by karma.conf.js and loads recursively all the .spec and framework files
|
2
|
-
|
3
|
-
import 'zone.js';
|
4
|
-
import 'zone.js/testing';
|
5
|
-
import { getTestBed } from '@angular/core/testing';
|
6
|
-
import {
|
7
|
-
BrowserDynamicTestingModule,
|
8
|
-
platformBrowserDynamicTesting
|
9
|
-
} from '@angular/platform-browser-dynamic/testing';
|
10
|
-
|
11
|
-
declare const require: {
|
12
|
-
context(path: string, deep?: boolean, filter?: RegExp): {
|
13
|
-
<T>(id: string): T;
|
14
|
-
keys(): string[];
|
15
|
-
};
|
16
|
-
};
|
17
|
-
|
18
|
-
// First, initialize the Angular testing environment.
|
19
|
-
getTestBed().initTestEnvironment(
|
20
|
-
BrowserDynamicTestingModule,
|
21
|
-
platformBrowserDynamicTesting(),
|
22
|
-
);
|
23
|
-
|
24
|
-
// Then we find all the tests.
|
25
|
-
const context = require.context('./', true, /\.spec\.ts$/);
|
26
|
-
// And load the modules.
|
27
|
-
context.keys().map(context);
|
package/tsconfig.lib.json
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
/* To learn more about this file see: https://angular.io/config/tsconfig. */
|
2
|
-
{
|
3
|
-
"extends": "../../tsconfig.json",
|
4
|
-
"compilerOptions": {
|
5
|
-
"outDir": "../../out-tsc/lib",
|
6
|
-
"declaration": true,
|
7
|
-
"declarationMap": true,
|
8
|
-
"inlineSources": true,
|
9
|
-
"types": []
|
10
|
-
},
|
11
|
-
"exclude": [
|
12
|
-
"src/test.ts",
|
13
|
-
"**/*.spec.ts"
|
14
|
-
]
|
15
|
-
}
|
package/tsconfig.lib.prod.json
DELETED