@flower-city-online/itinerary-lib 0.0.39 → 0.0.41
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/README.md +67 -0
- package/esm2022/lib/itinerary-app/itinerary-lib.module.mjs +16 -2
- package/fesm2022/flower-city-online-itinerary-lib.mjs +15 -1
- package/fesm2022/flower-city-online-itinerary-lib.mjs.map +1 -1
- package/lib/itinerary-app/itinerary-lib.module.d.ts +11 -1
- package/package.json +1 -1
- package/src/lib/itinerary-app/styles.scss +0 -2
package/README.md
CHANGED
|
@@ -58,6 +58,73 @@ If you prefer to use the source SCSS files and configure Tailwind yourself, you
|
|
|
58
58
|
|
|
59
59
|
This requires you to have Tailwind CSS configured in your project.
|
|
60
60
|
|
|
61
|
+
## Setting Up Translations
|
|
62
|
+
|
|
63
|
+
The library uses `@ngx-translate` for internationalization. To make translations work in your consuming application, follow these steps:
|
|
64
|
+
|
|
65
|
+
### Step 1: Configure TranslateModule in Your App
|
|
66
|
+
|
|
67
|
+
In your consuming app's `app.module.ts` (or `app.config.ts` for standalone), add:
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
import { TranslateModule, TranslateLoader } from '@ngx-translate/core';
|
|
71
|
+
import { TranslateHttpLoader } from '@ngx-translate/http-loader';
|
|
72
|
+
import { HttpClient } from '@angular/common/http';
|
|
73
|
+
|
|
74
|
+
export function createTranslateLoader(http: HttpClient) {
|
|
75
|
+
return new TranslateHttpLoader(http, './assets/i18n/', '.json');
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
@NgModule({
|
|
79
|
+
imports: [
|
|
80
|
+
// ... other imports
|
|
81
|
+
TranslateModule.forRoot({
|
|
82
|
+
loader: {
|
|
83
|
+
provide: TranslateLoader,
|
|
84
|
+
useFactory: createTranslateLoader,
|
|
85
|
+
deps: [HttpClient]
|
|
86
|
+
},
|
|
87
|
+
defaultLanguage: 'en'
|
|
88
|
+
}),
|
|
89
|
+
// ... other modules
|
|
90
|
+
]
|
|
91
|
+
})
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Step 2: Copy Translation Files
|
|
95
|
+
|
|
96
|
+
You need to copy the translation files from the library to your app's assets folder.
|
|
97
|
+
|
|
98
|
+
**Option A: Manual Copy (One-time)**
|
|
99
|
+
Copy the translation files from:
|
|
100
|
+
```
|
|
101
|
+
node_modules/@flower-city-online/itinerary-lib/src/assets/i18n/
|
|
102
|
+
```
|
|
103
|
+
To:
|
|
104
|
+
```
|
|
105
|
+
src/assets/i18n/
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Option B: Automatic Copy via angular.json (Recommended)**
|
|
109
|
+
|
|
110
|
+
Add this to your `angular.json` in the `assets` array of your project:
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"glob": "**/*",
|
|
115
|
+
"input": "node_modules/@flower-city-online/itinerary-lib/src/assets/i18n",
|
|
116
|
+
"output": "/assets/i18n"
|
|
117
|
+
}
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
This will automatically copy the translation files when you build your app.
|
|
121
|
+
|
|
122
|
+
### Step 3: Verify
|
|
123
|
+
|
|
124
|
+
After setup, translations should work automatically. The library will load translations from `/assets/i18n/` in your consuming app.
|
|
125
|
+
|
|
126
|
+
**Note:** If you need to customize translations, you can override specific keys in your own translation files. The library's translations will be merged with your app's translations.
|
|
127
|
+
|
|
61
128
|
## Running unit tests
|
|
62
129
|
|
|
63
130
|
Run `ng test itinerary-lib` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
@@ -13,7 +13,21 @@ import { IonicModule } from '@ionic/angular';
|
|
|
13
13
|
import { CommonModule } from '@angular/common';
|
|
14
14
|
import * as i0 from "@angular/core";
|
|
15
15
|
import * as i1 from "@ngx-translate/core";
|
|
16
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Translation loader factory for the library.
|
|
18
|
+
* Points to the library's translation files in node_modules.
|
|
19
|
+
*
|
|
20
|
+
* Note: The consuming app must:
|
|
21
|
+
* 1. Have TranslateModule.forRoot() configured in their AppModule
|
|
22
|
+
* 2. Copy translation files from node_modules/@flower-city-online/itinerary-lib/src/assets/i18n/
|
|
23
|
+
* to their own assets/i18n/ folder, OR
|
|
24
|
+
* 3. Configure their own TranslateModule to use the library's translations
|
|
25
|
+
*/
|
|
26
|
+
export function httpLoaderFactory(http) {
|
|
27
|
+
// Use absolute path from root - works in both dev and production
|
|
28
|
+
// The consuming app should copy these files to their assets folder or configure their own loader
|
|
29
|
+
return new TranslateHttpLoader(new HttpClient(http), '/assets/i18n/', '.json');
|
|
30
|
+
}
|
|
17
31
|
export class ItineraryLibModule {
|
|
18
32
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
19
33
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, declarations: [ItineraryLibComponent], imports: [CommonModule, i1.TranslateModule, ButtonsModule,
|
|
@@ -79,4 +93,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
79
93
|
providers: [],
|
|
80
94
|
}]
|
|
81
95
|
}] });
|
|
82
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRpbmVyYXJ5LWxpYi5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pdGluZXJhcnktbGliL3NyYy9saWIvaXRpbmVyYXJ5LWFwcC9pdGluZXJhcnktbGliLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQ0wsYUFBYSxFQUNiLGNBQWMsRUFDZCxtQkFBbUIsRUFDbkIsWUFBWSxHQUNiLE1BQU0sd0JBQXdCLENBQUM7QUFDaEMsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUMvRCxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUNqRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDeEQsT0FBTyxFQUFFLDRCQUE0QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDdEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7O0FBRS9DOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxJQUFpQjtJQUNqRCxpRUFBaUU7SUFDakUsaUdBQWlHO0lBQ2pHLE9BQU8sSUFBSSxtQkFBbUIsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDakYsQ0FBQztBQThCRCxNQUFNLE9BQU8sa0JBQWtCO3dHQUFsQixrQkFBa0I7eUdBQWxCLGtCQUFrQixpQkEzQmQscUJBQXFCLGFBRWxDLFlBQVksc0JBU1osYUFBYTtZQUNiLFdBQVc7WUFDWCxXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixVQUFVO1lBQ1YseUJBQXlCO1lBQ3pCLDRCQUE0QixhQUVwQixxQkFBcUIsRUFBRSx5QkFBeUI7eUdBSS9DLGtCQUFrQixZQXpCM0IsWUFBWTtZQUNaLGVBQWUsQ0FBQyxRQUFRLENBQUM7Z0JBQ3ZCLGVBQWUsRUFBRSxJQUFJO2dCQUNyQixNQUFNLEVBQUU7b0JBQ04sT0FBTyxFQUFFLGVBQWU7b0JBQ3hCLFVBQVUsRUFBRSxpQkFBaUI7b0JBQzdCLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQztpQkFDcEI7YUFDRixDQUFDO1lBQ0YsYUFBYTtZQUNiLFdBQVc7WUFDWCxXQUFXO1lBQ1gsbUJBQW1CO1lBQ25CLGNBQWM7WUFDZCxZQUFZO1lBQ1osbUJBQW1CO1lBQ25CLGVBQWU7WUFDZixVQUFVO1lBQ1YseUJBQXlCO1lBQ3pCLDRCQUE0QixFQUVHLHlCQUF5Qjs7NEZBSS9DLGtCQUFrQjtrQkE1QjlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMscUJBQXFCLENBQUM7b0JBQ3JDLE9BQU8sRUFBRTt3QkFDUCxZQUFZO3dCQUNaLGVBQWUsQ0FBQyxRQUFRLENBQUM7NEJBQ3ZCLGVBQWUsRUFBRSxJQUFJOzRCQUNyQixNQUFNLEVBQUU7Z0NBQ04sT0FBTyxFQUFFLGVBQWU7Z0NBQ3hCLFVBQVUsRUFBRSxpQkFBaUI7Z0NBQzdCLElBQUksRUFBRSxDQUFDLFdBQVcsQ0FBQzs2QkFDcEI7eUJBQ0YsQ0FBQzt3QkFDRixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsV0FBVzt3QkFDWCxtQkFBbUI7d0JBQ25CLGNBQWM7d0JBQ2QsWUFBWTt3QkFDWixtQkFBbUI7d0JBQ25CLGVBQWU7d0JBQ2YsVUFBVTt3QkFDVix5QkFBeUI7d0JBQ3pCLDRCQUE0QjtxQkFDN0I7b0JBQ0QsT0FBTyxFQUFFLENBQUMscUJBQXFCLEVBQUUseUJBQXlCLENBQUM7b0JBQzNELE9BQU8sRUFBRSxDQUFDLHNCQUFzQixDQUFDO29CQUNqQyxTQUFTLEVBQUUsRUFBRTtpQkFDZCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVMb2FkZXIsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2dNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbnNNb2R1bGUsXHJcbiAgTGliTW9kYWxNb2R1bGUsXHJcbiAgUmFuZ2VTZWxlY3Rvck1vZHVsZSxcclxuICBUb2dnbGVNb2R1bGUsXHJcbn0gZnJvbSAnQG5hbml0ZW5pbmphL2lvbmljLWxpYic7XHJcbmltcG9ydCB7IEl0aW5lcmFyeUxpYlJvdXRpbmdNb2R1bGUgfSBmcm9tICcuL2l0aW5lcmFyeS1saWItcm91dGluZy5tb2R1bGUnO1xyXG5pbXBvcnQgeyBJdGluZXJhcnlMaWJDb21wb25lbnQgfSBmcm9tICcuL2l0aW5lcmFyeS1saWIuY29tcG9uZW50JzsgXHJcbmltcG9ydCB7IEh0dHBCYWNrZW5kLCBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVIdHRwTG9hZGVyIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvaHR0cC1sb2FkZXInO1xyXG5pbXBvcnQgeyBVc2VyTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3VzZXIvdXNlci5tb2R1bGUnOyBcclxuaW1wb3J0IHsgTmV4dHNhcGllbkNvbXBvbmVudExpYk1vZHVsZSB9IGZyb20gJ0BuYW5pdGVuaW5qYS9pb25pYy1saWInO1xyXG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJzsgXHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcblxyXG4vKipcclxuICogVHJhbnNsYXRpb24gbG9hZGVyIGZhY3RvcnkgZm9yIHRoZSBsaWJyYXJ5LlxyXG4gKiBQb2ludHMgdG8gdGhlIGxpYnJhcnkncyB0cmFuc2xhdGlvbiBmaWxlcyBpbiBub2RlX21vZHVsZXMuXHJcbiAqIFxyXG4gKiBOb3RlOiBUaGUgY29uc3VtaW5nIGFwcCBtdXN0OlxyXG4gKiAxLiBIYXZlIFRyYW5zbGF0ZU1vZHVsZS5mb3JSb290KCkgY29uZmlndXJlZCBpbiB0aGVpciBBcHBNb2R1bGVcclxuICogMi4gQ29weSB0cmFuc2xhdGlvbiBmaWxlcyBmcm9tIG5vZGVfbW9kdWxlcy9AZmxvd2VyLWNpdHktb25saW5lL2l0aW5lcmFyeS1saWIvc3JjL2Fzc2V0cy9pMThuL1xyXG4gKiAgICB0byB0aGVpciBvd24gYXNzZXRzL2kxOG4vIGZvbGRlciwgT1JcclxuICogMy4gQ29uZmlndXJlIHRoZWlyIG93biBUcmFuc2xhdGVNb2R1bGUgdG8gdXNlIHRoZSBsaWJyYXJ5J3MgdHJhbnNsYXRpb25zXHJcbiAqL1xyXG5leHBvcnQgZnVuY3Rpb24gaHR0cExvYWRlckZhY3RvcnkoaHR0cDogSHR0cEJhY2tlbmQpOiBUcmFuc2xhdGVIdHRwTG9hZGVyIHtcclxuICAvLyBVc2UgYWJzb2x1dGUgcGF0aCBmcm9tIHJvb3QgLSB3b3JrcyBpbiBib3RoIGRldiBhbmQgcHJvZHVjdGlvblxyXG4gIC8vIFRoZSBjb25zdW1pbmcgYXBwIHNob3VsZCBjb3B5IHRoZXNlIGZpbGVzIHRvIHRoZWlyIGFzc2V0cyBmb2xkZXIgb3IgY29uZmlndXJlIHRoZWlyIG93biBsb2FkZXJcclxuICByZXR1cm4gbmV3IFRyYW5zbGF0ZUh0dHBMb2FkZXIobmV3IEh0dHBDbGllbnQoaHR0cCksICcvYXNzZXRzL2kxOG4vJywgJy5qc29uJyk7XHJcbn1cclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgZGVjbGFyYXRpb25zOiBbSXRpbmVyYXJ5TGliQ29tcG9uZW50XSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUuZm9yQ2hpbGQoe1xyXG4gICAgICBkZWZhdWx0TGFuZ3VhZ2U6ICdlbicsXHJcbiAgICAgIGxvYWRlcjoge1xyXG4gICAgICAgIHByb3ZpZGU6IFRyYW5zbGF0ZUxvYWRlcixcclxuICAgICAgICB1c2VGYWN0b3J5OiBodHRwTG9hZGVyRmFjdG9yeSxcclxuICAgICAgICBkZXBzOiBbSHR0cEJhY2tlbmRdLFxyXG4gICAgICB9LFxyXG4gICAgfSksXHJcbiAgICBCdXR0b25zTW9kdWxlLFxyXG4gICAgRm9ybXNNb2R1bGUsXHJcbiAgICBJb25pY01vZHVsZSxcclxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXHJcbiAgICBMaWJNb2RhbE1vZHVsZSxcclxuICAgIFRvZ2dsZU1vZHVsZSxcclxuICAgIFJhbmdlU2VsZWN0b3JNb2R1bGUsXHJcbiAgICBNYXREaWFsb2dNb2R1bGUsXHJcbiAgICBVc2VyTW9kdWxlLFxyXG4gICAgSXRpbmVyYXJ5TGliUm91dGluZ01vZHVsZSxcclxuICAgIE5leHRzYXBpZW5Db21wb25lbnRMaWJNb2R1bGVcclxuICBdLFxyXG4gIGV4cG9ydHM6IFtJdGluZXJhcnlMaWJDb21wb25lbnQsIEl0aW5lcmFyeUxpYlJvdXRpbmdNb2R1bGVdLFxyXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcclxuICBwcm92aWRlcnM6IFtdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgSXRpbmVyYXJ5TGliTW9kdWxlIHsgfVxyXG4iXX0=
|
|
@@ -9255,7 +9255,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
|
|
|
9255
9255
|
}]
|
|
9256
9256
|
}] });
|
|
9257
9257
|
|
|
9258
|
-
|
|
9258
|
+
/**
|
|
9259
|
+
* Translation loader factory for the library.
|
|
9260
|
+
* Points to the library's translation files in node_modules.
|
|
9261
|
+
*
|
|
9262
|
+
* Note: The consuming app must:
|
|
9263
|
+
* 1. Have TranslateModule.forRoot() configured in their AppModule
|
|
9264
|
+
* 2. Copy translation files from node_modules/@flower-city-online/itinerary-lib/src/assets/i18n/
|
|
9265
|
+
* to their own assets/i18n/ folder, OR
|
|
9266
|
+
* 3. Configure their own TranslateModule to use the library's translations
|
|
9267
|
+
*/
|
|
9268
|
+
function httpLoaderFactory(http) {
|
|
9269
|
+
// Use absolute path from root - works in both dev and production
|
|
9270
|
+
// The consuming app should copy these files to their assets folder or configure their own loader
|
|
9271
|
+
return new TranslateHttpLoader(new HttpClient(http), '/assets/i18n/', '.json');
|
|
9272
|
+
}
|
|
9259
9273
|
class ItineraryLibModule {
|
|
9260
9274
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9261
9275
|
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: ItineraryLibModule, declarations: [ItineraryLibComponent], imports: [CommonModule, i4$1.TranslateModule, ButtonsModule,
|