ngx-ionic-zone 1.0.5 → 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.
@@ -41,7 +41,7 @@ class HelpIconComponent {
41
41
  </div>
42
42
  </ion-accordion>
43
43
  </ion-accordion-group>
44
- `, isInline: true, styles: [":host{display:inline-block;width:100%;--help-icon-right: 10px;--help-icon-left: initial;--help-icon-caret-left: 35px;--help-icon-caret-right: initial;--help-icon-content-margin-left: 24px;--help-icon-content-margin-right: initial}.help-button{position:absolute;right:var(--help-icon-right);left:var(--help-icon-left);top:0;z-index:9999;height:36px}.help-content{position:relative;margin-top:10px;background:var(--ion-color-primary);color:#fff;padding:10px}.help-content:after{content:\"\";position:absolute;width:0;height:0;border-width:10px;border-style:solid;border-color:transparent transparent var(--ion-color-primary) transparent;top:-19px;left:var(--help-icon-caret-left);right:var(--help-icon-caret-right)}.help-content span{display:flex;align-items:center}.help-content span ion-icon{font-size:24px}.help-content p{margin-left:var(--help-icon-content-margin-left);margin-right:var(--help-icon-content-margin-right)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonAccordionGroup, selector: "ion-accordion-group", inputs: ["animated", "disabled", "expand", "mode", "multiple", "readonly", "value"] }, { kind: "component", type: IonAccordion, selector: "ion-accordion", inputs: ["disabled", "mode", "readonly", "toggleIcon", "toggleIconSlot", "value"] }] }); }
44
+ `, isInline: true, styles: [":host{display:inline-block;width:100%;display:none;--help-icon-right: 10px;--help-icon-left: initial;--help-icon-caret-left: 35px;--help-icon-caret-right: initial;--help-icon-content-margin-left: 24px;--help-icon-content-margin-right: initial}.help-button{position:absolute;right:var(--help-icon-right);left:var(--help-icon-left);top:0;z-index:9999;height:36px}.help-content{position:relative;margin-top:10px;background:var(--ion-color-primary);color:#fff;padding:10px}.help-content:after{content:\"\";position:absolute;width:0;height:0;border-width:10px;border-style:solid;border-color:transparent transparent var(--ion-color-primary) transparent;top:-19px;left:var(--help-icon-caret-left);right:var(--help-icon-caret-right)}.help-content span{display:flex;align-items:center}.help-content span ion-icon{font-size:24px}.help-content p{margin-left:var(--help-icon-content-margin-left);margin-right:var(--help-icon-content-margin-right)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonAccordionGroup, selector: "ion-accordion-group", inputs: ["animated", "disabled", "expand", "mode", "multiple", "readonly", "value"] }, { kind: "component", type: IonAccordion, selector: "ion-accordion", inputs: ["disabled", "mode", "readonly", "toggleIcon", "toggleIconSlot", "value"] }] }); }
45
45
  }
46
46
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: HelpIconComponent, decorators: [{
47
47
  type: Component,
@@ -61,7 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
61
61
  </div>
62
62
  </ion-accordion>
63
63
  </ion-accordion-group>
64
- `, standalone: true, imports: [CommonModule, IonButton, IonIcon, IonAccordionGroup, IonAccordion], styles: [":host{display:inline-block;width:100%;--help-icon-right: 10px;--help-icon-left: initial;--help-icon-caret-left: 35px;--help-icon-caret-right: initial;--help-icon-content-margin-left: 24px;--help-icon-content-margin-right: initial}.help-button{position:absolute;right:var(--help-icon-right);left:var(--help-icon-left);top:0;z-index:9999;height:36px}.help-content{position:relative;margin-top:10px;background:var(--ion-color-primary);color:#fff;padding:10px}.help-content:after{content:\"\";position:absolute;width:0;height:0;border-width:10px;border-style:solid;border-color:transparent transparent var(--ion-color-primary) transparent;top:-19px;left:var(--help-icon-caret-left);right:var(--help-icon-caret-right)}.help-content span{display:flex;align-items:center}.help-content span ion-icon{font-size:24px}.help-content p{margin-left:var(--help-icon-content-margin-left);margin-right:var(--help-icon-content-margin-right)}\n"] }]
64
+ `, standalone: true, imports: [CommonModule, IonButton, IonIcon, IonAccordionGroup, IonAccordion], styles: [":host{display:inline-block;width:100%;display:none;--help-icon-right: 10px;--help-icon-left: initial;--help-icon-caret-left: 35px;--help-icon-caret-right: initial;--help-icon-content-margin-left: 24px;--help-icon-content-margin-right: initial}.help-button{position:absolute;right:var(--help-icon-right);left:var(--help-icon-left);top:0;z-index:9999;height:36px}.help-content{position:relative;margin-top:10px;background:var(--ion-color-primary);color:#fff;padding:10px}.help-content:after{content:\"\";position:absolute;width:0;height:0;border-width:10px;border-style:solid;border-color:transparent transparent var(--ion-color-primary) transparent;top:-19px;left:var(--help-icon-caret-left);right:var(--help-icon-caret-right)}.help-content span{display:flex;align-items:center}.help-content span ion-icon{font-size:24px}.help-content p{margin-left:var(--help-icon-content-margin-left);margin-right:var(--help-icon-content-margin-right)}\n"] }]
65
65
  }], ctorParameters: () => [], propDecorators: { text: [{
66
66
  type: Input
67
67
  }], accordionGroup: [{
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-ionic-zone-components.mjs","sources":["../../../projects/ngx-ionic-zone/components/help-icon/help-icon.component.ts","../../../projects/ngx-ionic-zone/components/ngx-ionic-zone-components.ts"],"sourcesContent":["import { CommonModule } from \"@angular/common\";\nimport { Component, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { IonButton, IonIcon, IonAccordionGroup, IonAccordion } from \"@ionic/angular/standalone\";\nimport { addIcons } from 'ionicons';\nimport { helpCircleOutline, closeCircleOutline, informationCircleOutline } from \"ionicons/icons\";\n\n@Component({\n selector: 'help-icon',\n template: `\n <ion-button class=\"help-button button-no-border\" fill=\"clear\" (click)=\"onHelpClicked()\">\n <ion-icon ios=\"help-circle-outline\" md=\"help-circle-outline\" *ngIf=\"!accordionGroup.value\"></ion-icon>\n <ion-icon ios=\"close-circle-outline\" md=\"close-circle-outline\" *ngIf=\"accordionGroup.value\"></ion-icon>\n </ion-button>\n <ion-accordion-group #accordionGroup>\n <ion-accordion value=\"first\">\n <div slot=\"content\" class=\"help-content\">\n <span>\n <ion-icon ios=\"information-circle-outline\" md=\"information-circle-outline\"></ion-icon>\n <!-- <strong>{{'admin.common.alert' | localizedResource | async}}:</strong> -->\n </span>\n <p [innerHTML]=\"text\"></p>\n </div>\n </ion-accordion>\n </ion-accordion-group>\n `,\n styles: [`\n :host {\n display: inline-block;\n width: 100%;\n\n --help-icon-right: 10px;\n --help-icon-left: initial;\n --help-icon-caret-left: 35px;\n --help-icon-caret-right: initial;\n --help-icon-content-margin-left: 24px;\n --help-icon-content-margin-right: initial;\n }\n\n .help-button {\n position: absolute;\n right: var(--help-icon-right);\n left: var(--help-icon-left);\n top: 0;\n z-index: 9999;\n height: 36px;\n }\n \n .help-content {\n position: relative;\n margin-top: 10px;\n background: var(--ion-color-primary);\n color: #fff;\n padding: 10px;\n }\n\n .help-content::after {\n content: \"\";\n position: absolute;\n width: 0;\n height: 0;\n border-width: 10px;\n border-style: solid;\n border-color: transparent transparent var(--ion-color-primary) transparent;\n top: -19px;\n left: var(--help-icon-caret-left);\n right: var(--help-icon-caret-right);\n }\n\n .help-content span {\n display: flex;\n align-items: center;\n }\n\n .help-content span ion-icon {\n font-size: 24px;\n }\n\n .help-content p {\n margin-left: var(--help-icon-content-margin-left);\n margin-right: var(--help-icon-content-margin-right);\n }\n `],\n standalone: true,\n imports: [CommonModule, IonButton, IonIcon, IonAccordionGroup, IonAccordion]\n})\nexport class HelpIconComponent implements OnInit {\n @Input() text!: string;\n @ViewChild('accordionGroup', { static: true }) accordionGroup!: IonAccordionGroup;\n\n constructor() {\n addIcons({ helpCircleOutline, closeCircleOutline, informationCircleOutline });\n }\n\n ngOnInit() {\n if (!this.text) {\n this.text = 'Please add some help text';\n }\n }\n\n onHelpClicked() {\n const nativeEl = this.accordionGroup;\n if (nativeEl.value === 'first') {\n nativeEl.value = undefined;\n } else {\n nativeEl.value = 'first';\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngx-ionic-zone-components.mjs","sources":["../../../projects/ngx-ionic-zone/components/help-icon/help-icon.component.ts","../../../projects/ngx-ionic-zone/components/ngx-ionic-zone-components.ts"],"sourcesContent":["import { CommonModule } from \"@angular/common\";\nimport { Component, Input, OnInit, ViewChild } from \"@angular/core\";\nimport { IonButton, IonIcon, IonAccordionGroup, IonAccordion } from \"@ionic/angular/standalone\";\nimport { addIcons } from 'ionicons';\nimport { helpCircleOutline, closeCircleOutline, informationCircleOutline } from \"ionicons/icons\";\n\n@Component({\n selector: 'help-icon',\n template: `\n <ion-button class=\"help-button button-no-border\" fill=\"clear\" (click)=\"onHelpClicked()\">\n <ion-icon ios=\"help-circle-outline\" md=\"help-circle-outline\" *ngIf=\"!accordionGroup.value\"></ion-icon>\n <ion-icon ios=\"close-circle-outline\" md=\"close-circle-outline\" *ngIf=\"accordionGroup.value\"></ion-icon>\n </ion-button>\n <ion-accordion-group #accordionGroup>\n <ion-accordion value=\"first\">\n <div slot=\"content\" class=\"help-content\">\n <span>\n <ion-icon ios=\"information-circle-outline\" md=\"information-circle-outline\"></ion-icon>\n <!-- <strong>{{'admin.common.alert' | localizedResource | async}}:</strong> -->\n </span>\n <p [innerHTML]=\"text\"></p>\n </div>\n </ion-accordion>\n </ion-accordion-group>\n `,\n styles: [`\n :host {\n display: inline-block;\n width: 100%;\n display:none; /* tmp: hide by default */\n\n --help-icon-right: 10px;\n --help-icon-left: initial;\n --help-icon-caret-left: 35px;\n --help-icon-caret-right: initial;\n --help-icon-content-margin-left: 24px;\n --help-icon-content-margin-right: initial;\n }\n\n .help-button {\n position: absolute;\n right: var(--help-icon-right);\n left: var(--help-icon-left);\n top: 0;\n z-index: 9999;\n height: 36px;\n }\n \n .help-content {\n position: relative;\n margin-top: 10px;\n background: var(--ion-color-primary);\n color: #fff;\n padding: 10px;\n }\n\n .help-content::after {\n content: \"\";\n position: absolute;\n width: 0;\n height: 0;\n border-width: 10px;\n border-style: solid;\n border-color: transparent transparent var(--ion-color-primary) transparent;\n top: -19px;\n left: var(--help-icon-caret-left);\n right: var(--help-icon-caret-right);\n }\n\n .help-content span {\n display: flex;\n align-items: center;\n }\n\n .help-content span ion-icon {\n font-size: 24px;\n }\n\n .help-content p {\n margin-left: var(--help-icon-content-margin-left);\n margin-right: var(--help-icon-content-margin-right);\n }\n `],\n standalone: true,\n imports: [CommonModule, IonButton, IonIcon, IonAccordionGroup, IonAccordion]\n})\nexport class HelpIconComponent implements OnInit {\n @Input() text!: string;\n @ViewChild('accordionGroup', { static: true }) accordionGroup!: IonAccordionGroup;\n\n constructor() {\n addIcons({ helpCircleOutline, closeCircleOutline, informationCircleOutline });\n }\n\n ngOnInit() {\n if (!this.text) {\n this.text = 'Please add some help text';\n }\n }\n\n onHelpClicked() {\n const nativeEl = this.accordionGroup;\n if (nativeEl.value === 'first') {\n nativeEl.value = undefined;\n } else {\n nativeEl.value = 'first';\n }\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -2,6 +2,8 @@ import * as i0 from '@angular/core';
2
2
  import { InjectionToken, inject, Injectable, makeEnvironmentProviders } from '@angular/core';
3
3
  import { HttpClient, HttpHeaders, HttpContext, HttpContextToken } from '@angular/common/http';
4
4
  import { BehaviorSubject, tap, catchError, throwError } from 'rxjs';
5
+ import { Haptics, ImpactStyle, NotificationType } from '@capacitor/haptics';
6
+ import * as i1 from '@ionic/angular';
5
7
 
6
8
  const APP_CONFIG_TOKEN = new InjectionToken('APP_CONFIG');
7
9
 
@@ -130,8 +132,199 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImpor
130
132
  const RETRY_COUNT = new HttpContextToken(() => 3);
131
133
  const RETRY_DELAY = new HttpContextToken(() => 5000);
132
134
 
135
+ var HapticPattern;
136
+ (function (HapticPattern) {
137
+ HapticPattern["Light"] = "light";
138
+ HapticPattern["Medium"] = "medium";
139
+ HapticPattern["Heavy"] = "heavy";
140
+ HapticPattern["Success"] = "success";
141
+ HapticPattern["Warning"] = "warning";
142
+ HapticPattern["Error"] = "error";
143
+ HapticPattern["Selection"] = "selection";
144
+ })(HapticPattern || (HapticPattern = {}));
145
+ class HapticsService {
146
+ constructor(platform) {
147
+ this.platform = platform;
148
+ this.options = {
149
+ enabled: true,
150
+ fallbackToVibration: true
151
+ };
152
+ }
153
+ /**
154
+ * Configure haptic feedback options
155
+ */
156
+ configure(options) {
157
+ this.options = { ...this.options, ...options };
158
+ }
159
+ /**
160
+ * Play haptic feedback based on pattern
161
+ */
162
+ async play(pattern) {
163
+ if (!this.options.enabled) {
164
+ return;
165
+ }
166
+ try {
167
+ switch (pattern) {
168
+ case HapticPattern.Light:
169
+ await Haptics.impact({ style: ImpactStyle.Light });
170
+ break;
171
+ case HapticPattern.Medium:
172
+ await Haptics.impact({ style: ImpactStyle.Medium });
173
+ break;
174
+ case HapticPattern.Heavy:
175
+ await Haptics.impact({ style: ImpactStyle.Heavy });
176
+ break;
177
+ case HapticPattern.Success:
178
+ await Haptics.notification({ type: NotificationType.Success });
179
+ break;
180
+ case HapticPattern.Warning:
181
+ await Haptics.notification({ type: NotificationType.Warning });
182
+ break;
183
+ case HapticPattern.Error:
184
+ await Haptics.notification({ type: NotificationType.Error });
185
+ break;
186
+ case HapticPattern.Selection:
187
+ await Haptics.selectionStart();
188
+ break;
189
+ default:
190
+ await Haptics.impact({ style: ImpactStyle.Light });
191
+ }
192
+ }
193
+ catch (error) {
194
+ console.warn('Haptic feedback failed:', error);
195
+ // Fallback to vibration if haptics are not supported
196
+ if (this.options.fallbackToVibration && this.platform.is('mobile')) {
197
+ this.vibrate(pattern);
198
+ }
199
+ }
200
+ }
201
+ /**
202
+ * Play product selection haptic feedback
203
+ */
204
+ async light() {
205
+ await this.play(HapticPattern.Light);
206
+ }
207
+ /**
208
+ * Play product add to cart haptic feedback
209
+ */
210
+ async medium() {
211
+ await this.play(HapticPattern.Medium);
212
+ }
213
+ /**
214
+ * Play order submission haptic feedback
215
+ */
216
+ async heavy() {
217
+ await this.play(HapticPattern.Heavy);
218
+ }
219
+ /**
220
+ * Play order success haptic feedback
221
+ */
222
+ async success() {
223
+ await this.play(HapticPattern.Success);
224
+ }
225
+ /**
226
+ * Play order error haptic feedback
227
+ */
228
+ async orderError() {
229
+ await this.play(HapticPattern.Error);
230
+ }
231
+ /**
232
+ * Play button interaction haptic feedback
233
+ */
234
+ async buttonInteraction() {
235
+ await this.play(HapticPattern.Selection);
236
+ }
237
+ /**
238
+ * Play custom haptic pattern
239
+ */
240
+ async customImpact(style) {
241
+ if (!this.options.enabled) {
242
+ return;
243
+ }
244
+ try {
245
+ await Haptics.impact({ style });
246
+ }
247
+ catch (error) {
248
+ console.warn('Custom haptic impact failed:', error);
249
+ }
250
+ }
251
+ /**
252
+ * Play custom notification haptic
253
+ */
254
+ async customNotification(type) {
255
+ if (!this.options.enabled) {
256
+ return;
257
+ }
258
+ try {
259
+ await Haptics.notification({ type });
260
+ }
261
+ catch (error) {
262
+ console.warn('Custom haptic notification failed:', error);
263
+ }
264
+ }
265
+ /**
266
+ * Check if haptics are available on the device
267
+ */
268
+ async isAvailable() {
269
+ try {
270
+ // Try to perform a test haptic
271
+ await Haptics.impact({ style: ImpactStyle.Light });
272
+ return true;
273
+ }
274
+ catch (error) {
275
+ return false;
276
+ }
277
+ }
278
+ /**
279
+ * Disable haptic feedback
280
+ */
281
+ disable() {
282
+ this.options.enabled = false;
283
+ }
284
+ /**
285
+ * Enable haptic feedback
286
+ */
287
+ enable() {
288
+ this.options.enabled = true;
289
+ }
290
+ /**
291
+ * Fallback vibration for unsupported devices
292
+ */
293
+ vibrate(pattern) {
294
+ if (!navigator.vibrate) {
295
+ return;
296
+ }
297
+ const vibrationPatterns = {
298
+ [HapticPattern.Light]: 50,
299
+ [HapticPattern.Medium]: 100,
300
+ [HapticPattern.Heavy]: 200,
301
+ [HapticPattern.Success]: [100, 50, 100],
302
+ [HapticPattern.Warning]: [150, 100, 150],
303
+ [HapticPattern.Error]: [200, 100, 200, 100, 200],
304
+ [HapticPattern.Selection]: 25
305
+ };
306
+ const vibrationPattern = vibrationPatterns[pattern];
307
+ if (Array.isArray(vibrationPattern)) {
308
+ navigator.vibrate(vibrationPattern);
309
+ }
310
+ else {
311
+ navigator.vibrate(vibrationPattern);
312
+ }
313
+ }
314
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: HapticsService, deps: [{ token: i1.Platform }], target: i0.ɵɵFactoryTarget.Injectable }); }
315
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: HapticsService, providedIn: 'root' }); }
316
+ }
317
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: HapticsService, decorators: [{
318
+ type: Injectable,
319
+ args: [{
320
+ providedIn: 'root'
321
+ }]
322
+ }], ctorParameters: () => [{ type: i1.Platform }] });
323
+
133
324
  const provideUniversalZoneIonic = () => {
134
- const providers = [];
325
+ const providers = [
326
+ HapticsService
327
+ ];
135
328
  return makeEnvironmentProviders(providers);
136
329
  };
137
330
 
@@ -143,5 +336,5 @@ const provideUniversalZoneIonic = () => {
143
336
  * Generated bundle index. Do not edit.
144
337
  */
145
338
 
146
- export { APP_CONFIG_TOKEN, BaseHttpService, RETRY_COUNT, RETRY_DELAY, provideUniversalZoneIonic };
339
+ export { APP_CONFIG_TOKEN, BaseHttpService, HapticPattern, HapticsService, RETRY_COUNT, RETRY_DELAY, provideUniversalZoneIonic };
147
340
  //# sourceMappingURL=ngx-ionic-zone.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngx-ionic-zone.mjs","sources":["../../../projects/ngx-ionic-zone/shared/app-config.ts","../../../projects/ngx-ionic-zone/shared/base-http.service.ts","../../../projects/ngx-ionic-zone/shared/uz-ionic.module.ts","../../../projects/ngx-ionic-zone/public-api.ts","../../../projects/ngx-ionic-zone/ngx-ionic-zone.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const APP_CONFIG_TOKEN = new InjectionToken<IAppConfig>('APP_CONFIG');\r\n\r\nexport interface IAppConfig {\r\n baseUrl: string;\r\n baseApiUrl: string;\r\n ping?: IAppConfigPing;\r\n http?: IAppConfigHttp;\r\n}\r\n\r\nexport interface IAppConfigPing {\r\n url?: string;\r\n interval: number;\r\n}\r\n\r\nexport interface IAppConfigHttp {\r\n useNativeHttp: boolean;\r\n}","import { inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpContext, HttpContextToken } from '@angular/common/http';\n\n// import { CapacitorHttp } from '@capacitor/core';\n\nimport { BehaviorSubject, catchError, tap, throwError } from 'rxjs';\nimport { APP_CONFIG_TOKEN, IAppConfig } from './app-config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseHttpService {\n private _httpInProgressRequest = new BehaviorSubject<HttpParams>(null);\n\n protected http: HttpClient;\n protected config: IAppConfig;\n\n httpInProgressRequest$ = this._httpInProgressRequest.asObservable();\n\n constructor() {\n this.http = inject(HttpClient);\n this.config = inject(APP_CONFIG_TOKEN);\n }\n\n protected getDataRx<T>(args: HttpParams) {\n this._httpInProgressRequest.next(args);\n\n if (!args.overrideUrl) {\n args.url = `${this.config.baseApiUrl + args.url}`;\n }\n args.body = args.body || {};\n\n for (let prop in args.body) {\n if (args.body.hasOwnProperty(prop) && args.body[prop]) {\n if (args.url.includes('?')) {\n args.url += '&';\n } else {\n args.url += '?';\n }\n args.url += `${prop}=${args.body[prop]}`;\n }\n }\n\n // if(!this.config.http?.useNativeHttp) {\n let headers = new HttpHeaders();\n for (let prop in args.headers) {\n if (args.headers.hasOwnProperty(prop) && args.headers[prop]) {\n headers = headers.set(prop, args.headers[prop]);\n }\n }\n\n let context = new HttpContext();\n if(args.retryCount != null) {\n context.set(RETRY_COUNT, args.retryCount);\n }\n \n if(args.retryDelay != null) {\n context.set(RETRY_DELAY, args.retryCount);\n }\n \n return this.http.get<T>(args.url, { headers: headers, context: context })\n .pipe(\n tap(() => this._httpInProgressRequest.next(null)),\n catchError((error) => {\n this._httpInProgressRequest.next(null);\n \n //pass error to the caller\n return throwError(() => error);\n }));\n // }\n \n // return new Observable<T>((observer) => {\n // CapacitorHttp.get({\n // url: args.url,\n // headers: args.headers\n // }).then(response => {\n // observer.next(<T>response.data);\n // observer.complete();\n // }).catch(error => {\n // observer.error(error);\n // });\n // });\n }\n\n protected postDataRx<T>(args: HttpParams) {\n this._httpInProgressRequest.next(args);\n\n let newUrl;\n if (!args.overrideUrl) {\n newUrl = `${this.config.baseApiUrl + args.url}`;\n } else {\n newUrl = args.url;\n }\n\n args.url = newUrl;\n\n let context = new HttpContext();\n if(args.retryCount != null) {\n context.set(RETRY_COUNT, args.retryCount);\n }\n\n if(args.retryDelay != null) {\n context.set(RETRY_DELAY, args.retryCount);\n }\n\n console.log('postDataRx', args);\n let body = args.body;\n return this.http.post<T>(args.url, body, { headers: new HttpHeaders(args.headers), context: context })\n .pipe(\n tap(() => this._httpInProgressRequest.next(null)),\n catchError((error) => {\n this._httpInProgressRequest.next(null);\n\n //pass error to the caller\n return throwError(() => error);\n })\n );\n }\n\n protected async handleError(e: HttpErrorResponse, args: HttpParams) {\n switch (e.status) {\n // case 401:\n // const u = await this.userSettingSvc.getCurrentUser();\n // if(u) {\n // //TODO: check for token expiration...\n // //kickout...\n // this.pubsubSvc.publishEvent(UserConstant.EVENT_USER_LOGGEDOUT, { clearCache: true, displayLoginDialog: true });\n // }\n // break;\n default:\n if (!args.errorCallback) {\n let msg;\n //the error might be thrown by e.g a plugin wasn't install properly. In that case text() will not be available\n if (e.message) {\n msg = e.message;\n } else {\n msg = e.error.toString();\n }\n // setTimeout(async () => {\n // await this.helperSvc.alert(msg);\n // });\n } else {\n args.errorCallback(e, args);\n }\n break;\n }\n }\n}\n\nexport interface HttpParams {\n url: string;\n body?: any;\n errorCallback?;\n overrideUrl?: boolean;\n headers?: { [key: string]: string };\n retryCount?: number;\n retryDelay?: number;\n}\n\nexport interface ApiResponse<T> {\n statusCode: number;\n message: any;\n data: T;\n exception: any;\n}\n\n\nexport const RETRY_COUNT = new HttpContextToken(() => 3);\nexport const RETRY_DELAY = new HttpContextToken(() => 5000);","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from \"@angular/core\";\r\n\r\nexport const provideUniversalZoneIonic = (): EnvironmentProviders => {\r\n const providers: Provider[] = [\r\n ];\r\n\r\n return makeEnvironmentProviders(providers);\r\n};\r\n","/*\r\n * Public API Surface of ngx-ionic-zone\r\n */\r\n\r\nexport * from './shared/base-http.service';\r\nexport * from './shared/uz-ionic.module';\r\nexport * from './shared/app-config';\r\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":"ngx-ionic-zone.mjs","sources":["../../../projects/ngx-ionic-zone/shared/app-config.ts","../../../projects/ngx-ionic-zone/shared/base-http.service.ts","../../../projects/ngx-ionic-zone/shared/haptics.service.ts","../../../projects/ngx-ionic-zone/shared/uz-ionic.provider.ts","../../../projects/ngx-ionic-zone/public-api.ts","../../../projects/ngx-ionic-zone/ngx-ionic-zone.ts"],"sourcesContent":["import { InjectionToken } from \"@angular/core\";\r\n\r\nexport const APP_CONFIG_TOKEN = new InjectionToken<IAppConfig>('APP_CONFIG');\r\n\r\nexport interface IAppConfig {\r\n baseUrl: string;\r\n baseApiUrl: string;\r\n ping?: IAppConfigPing;\r\n http?: IAppConfigHttp;\r\n}\r\n\r\nexport interface IAppConfigPing {\r\n url?: string;\r\n interval: number;\r\n}\r\n\r\nexport interface IAppConfigHttp {\r\n useNativeHttp: boolean;\r\n}","import { inject, Injectable } from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpErrorResponse, HttpContext, HttpContextToken } from '@angular/common/http';\n\n// import { CapacitorHttp } from '@capacitor/core';\n\nimport { BehaviorSubject, catchError, tap, throwError } from 'rxjs';\nimport { APP_CONFIG_TOKEN, IAppConfig } from './app-config';\n\n@Injectable({\n providedIn: 'root',\n})\nexport class BaseHttpService {\n private _httpInProgressRequest = new BehaviorSubject<HttpParams>(null);\n\n protected http: HttpClient;\n protected config: IAppConfig;\n\n httpInProgressRequest$ = this._httpInProgressRequest.asObservable();\n\n constructor() {\n this.http = inject(HttpClient);\n this.config = inject(APP_CONFIG_TOKEN);\n }\n\n protected getDataRx<T>(args: HttpParams) {\n this._httpInProgressRequest.next(args);\n\n if (!args.overrideUrl) {\n args.url = `${this.config.baseApiUrl + args.url}`;\n }\n args.body = args.body || {};\n\n for (let prop in args.body) {\n if (args.body.hasOwnProperty(prop) && args.body[prop]) {\n if (args.url.includes('?')) {\n args.url += '&';\n } else {\n args.url += '?';\n }\n args.url += `${prop}=${args.body[prop]}`;\n }\n }\n\n // if(!this.config.http?.useNativeHttp) {\n let headers = new HttpHeaders();\n for (let prop in args.headers) {\n if (args.headers.hasOwnProperty(prop) && args.headers[prop]) {\n headers = headers.set(prop, args.headers[prop]);\n }\n }\n\n let context = new HttpContext();\n if(args.retryCount != null) {\n context.set(RETRY_COUNT, args.retryCount);\n }\n \n if(args.retryDelay != null) {\n context.set(RETRY_DELAY, args.retryCount);\n }\n \n return this.http.get<T>(args.url, { headers: headers, context: context })\n .pipe(\n tap(() => this._httpInProgressRequest.next(null)),\n catchError((error) => {\n this._httpInProgressRequest.next(null);\n \n //pass error to the caller\n return throwError(() => error);\n }));\n // }\n \n // return new Observable<T>((observer) => {\n // CapacitorHttp.get({\n // url: args.url,\n // headers: args.headers\n // }).then(response => {\n // observer.next(<T>response.data);\n // observer.complete();\n // }).catch(error => {\n // observer.error(error);\n // });\n // });\n }\n\n protected postDataRx<T>(args: HttpParams) {\n this._httpInProgressRequest.next(args);\n\n let newUrl;\n if (!args.overrideUrl) {\n newUrl = `${this.config.baseApiUrl + args.url}`;\n } else {\n newUrl = args.url;\n }\n\n args.url = newUrl;\n\n let context = new HttpContext();\n if(args.retryCount != null) {\n context.set(RETRY_COUNT, args.retryCount);\n }\n\n if(args.retryDelay != null) {\n context.set(RETRY_DELAY, args.retryCount);\n }\n\n console.log('postDataRx', args);\n let body = args.body;\n return this.http.post<T>(args.url, body, { headers: new HttpHeaders(args.headers), context: context })\n .pipe(\n tap(() => this._httpInProgressRequest.next(null)),\n catchError((error) => {\n this._httpInProgressRequest.next(null);\n\n //pass error to the caller\n return throwError(() => error);\n })\n );\n }\n\n protected async handleError(e: HttpErrorResponse, args: HttpParams) {\n switch (e.status) {\n // case 401:\n // const u = await this.userSettingSvc.getCurrentUser();\n // if(u) {\n // //TODO: check for token expiration...\n // //kickout...\n // this.pubsubSvc.publishEvent(UserConstant.EVENT_USER_LOGGEDOUT, { clearCache: true, displayLoginDialog: true });\n // }\n // break;\n default:\n if (!args.errorCallback) {\n let msg;\n //the error might be thrown by e.g a plugin wasn't install properly. In that case text() will not be available\n if (e.message) {\n msg = e.message;\n } else {\n msg = e.error.toString();\n }\n // setTimeout(async () => {\n // await this.helperSvc.alert(msg);\n // });\n } else {\n args.errorCallback(e, args);\n }\n break;\n }\n }\n}\n\nexport interface HttpParams {\n url: string;\n body?: any;\n errorCallback?;\n overrideUrl?: boolean;\n headers?: { [key: string]: string };\n retryCount?: number;\n retryDelay?: number;\n}\n\nexport interface ApiResponse<T> {\n statusCode: number;\n message: any;\n data: T;\n exception: any;\n}\n\n\nexport const RETRY_COUNT = new HttpContextToken(() => 3);\nexport const RETRY_DELAY = new HttpContextToken(() => 5000);","import { Injectable } from '@angular/core';\nimport { Haptics, ImpactStyle, NotificationType } from '@capacitor/haptics';\nimport { Platform } from '@ionic/angular';\n\nexport interface HapticOptions {\n /**\n * Enable or disable haptic feedback\n */\n enabled?: boolean;\n /**\n * Fallback to vibration on unsupported devices\n */\n fallbackToVibration?: boolean;\n}\n\nexport enum HapticPattern {\n Light = 'light',\n Medium = 'medium',\n Heavy = 'heavy',\n Success = 'success',\n Warning = 'warning',\n Error = 'error',\n Selection = 'selection'\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class HapticsService {\n private options: HapticOptions = {\n enabled: true,\n fallbackToVibration: true\n };\n\n constructor(private platform: Platform) {}\n\n /**\n * Configure haptic feedback options\n */\n configure(options: Partial<HapticOptions>): void {\n this.options = { ...this.options, ...options };\n }\n\n /**\n * Play haptic feedback based on pattern\n */\n async play(pattern: HapticPattern): Promise<void> {\n if (!this.options.enabled) {\n return;\n }\n\n try {\n switch (pattern) {\n case HapticPattern.Light:\n await Haptics.impact({ style: ImpactStyle.Light });\n break;\n \n case HapticPattern.Medium:\n await Haptics.impact({ style: ImpactStyle.Medium });\n break;\n \n case HapticPattern.Heavy:\n await Haptics.impact({ style: ImpactStyle.Heavy });\n break;\n \n case HapticPattern.Success:\n await Haptics.notification({ type: NotificationType.Success });\n break;\n \n case HapticPattern.Warning:\n await Haptics.notification({ type: NotificationType.Warning });\n break;\n \n case HapticPattern.Error:\n await Haptics.notification({ type: NotificationType.Error });\n break;\n \n case HapticPattern.Selection:\n await Haptics.selectionStart();\n break;\n \n default:\n await Haptics.impact({ style: ImpactStyle.Light });\n }\n } catch (error) {\n console.warn('Haptic feedback failed:', error);\n \n // Fallback to vibration if haptics are not supported\n if (this.options.fallbackToVibration && this.platform.is('mobile')) {\n this.vibrate(pattern);\n }\n }\n }\n\n /**\n * Play product selection haptic feedback\n */\n async light(): Promise<void> {\n await this.play(HapticPattern.Light);\n }\n\n /**\n * Play product add to cart haptic feedback\n */\n async medium(): Promise<void> {\n await this.play(HapticPattern.Medium);\n }\n\n /**\n * Play order submission haptic feedback\n */\n async heavy(): Promise<void> {\n await this.play(HapticPattern.Heavy);\n }\n\n /**\n * Play order success haptic feedback\n */\n async success(): Promise<void> {\n await this.play(HapticPattern.Success);\n }\n\n /**\n * Play order error haptic feedback\n */\n async orderError(): Promise<void> {\n await this.play(HapticPattern.Error);\n }\n\n /**\n * Play button interaction haptic feedback\n */\n async buttonInteraction(): Promise<void> {\n await this.play(HapticPattern.Selection);\n }\n\n /**\n * Play custom haptic pattern\n */\n async customImpact(style: ImpactStyle): Promise<void> {\n if (!this.options.enabled) {\n return;\n }\n\n try {\n await Haptics.impact({ style });\n } catch (error) {\n console.warn('Custom haptic impact failed:', error);\n }\n }\n\n /**\n * Play custom notification haptic\n */\n async customNotification(type: NotificationType): Promise<void> {\n if (!this.options.enabled) {\n return;\n }\n\n try {\n await Haptics.notification({ type });\n } catch (error) {\n console.warn('Custom haptic notification failed:', error);\n }\n }\n\n /**\n * Check if haptics are available on the device\n */\n async isAvailable(): Promise<boolean> {\n try {\n // Try to perform a test haptic\n await Haptics.impact({ style: ImpactStyle.Light });\n return true;\n } catch (error) {\n return false;\n }\n }\n\n /**\n * Disable haptic feedback\n */\n disable(): void {\n this.options.enabled = false;\n }\n\n /**\n * Enable haptic feedback\n */\n enable(): void {\n this.options.enabled = true;\n }\n\n /**\n * Fallback vibration for unsupported devices\n */\n private vibrate(pattern: HapticPattern): void {\n if (!navigator.vibrate) {\n return;\n }\n\n const vibrationPatterns: Record<HapticPattern, number | number[]> = {\n [HapticPattern.Light]: 50,\n [HapticPattern.Medium]: 100,\n [HapticPattern.Heavy]: 200,\n [HapticPattern.Success]: [100, 50, 100],\n [HapticPattern.Warning]: [150, 100, 150],\n [HapticPattern.Error]: [200, 100, 200, 100, 200],\n [HapticPattern.Selection]: 25\n };\n\n const vibrationPattern = vibrationPatterns[pattern];\n if (Array.isArray(vibrationPattern)) {\n navigator.vibrate(vibrationPattern);\n } else {\n navigator.vibrate(vibrationPattern);\n }\n }\n}\n","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from \"@angular/core\";\n\nimport { HapticsService } from \"./haptics.service\";\n\nexport const provideUniversalZoneIonic = (): EnvironmentProviders => {\n const providers: Provider[] = [\n HapticsService\n ];\n\n return makeEnvironmentProviders(providers);\n};\n","/*\r\n * Public API Surface of ngx-ionic-zone\r\n */\r\n\r\nexport * from './shared/base-http.service';\r\nexport * from './shared/uz-ionic.provider';\r\nexport * from './shared/app-config';\r\nexport * from './shared/haptics.service';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ngx-ionic-zone",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^19.0.0",
6
6
  "@angular/core": "^19.0.0",
package/public-api.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './shared/base-http.service';
2
- export * from './shared/uz-ionic.module';
2
+ export * from './shared/uz-ionic.provider';
3
3
  export * from './shared/app-config';
4
+ export * from './shared/haptics.service';
@@ -0,0 +1,85 @@
1
+ import { ImpactStyle, NotificationType } from '@capacitor/haptics';
2
+ import { Platform } from '@ionic/angular';
3
+ import * as i0 from "@angular/core";
4
+ export interface HapticOptions {
5
+ /**
6
+ * Enable or disable haptic feedback
7
+ */
8
+ enabled?: boolean;
9
+ /**
10
+ * Fallback to vibration on unsupported devices
11
+ */
12
+ fallbackToVibration?: boolean;
13
+ }
14
+ export declare enum HapticPattern {
15
+ Light = "light",
16
+ Medium = "medium",
17
+ Heavy = "heavy",
18
+ Success = "success",
19
+ Warning = "warning",
20
+ Error = "error",
21
+ Selection = "selection"
22
+ }
23
+ export declare class HapticsService {
24
+ private platform;
25
+ private options;
26
+ constructor(platform: Platform);
27
+ /**
28
+ * Configure haptic feedback options
29
+ */
30
+ configure(options: Partial<HapticOptions>): void;
31
+ /**
32
+ * Play haptic feedback based on pattern
33
+ */
34
+ play(pattern: HapticPattern): Promise<void>;
35
+ /**
36
+ * Play product selection haptic feedback
37
+ */
38
+ light(): Promise<void>;
39
+ /**
40
+ * Play product add to cart haptic feedback
41
+ */
42
+ medium(): Promise<void>;
43
+ /**
44
+ * Play order submission haptic feedback
45
+ */
46
+ heavy(): Promise<void>;
47
+ /**
48
+ * Play order success haptic feedback
49
+ */
50
+ success(): Promise<void>;
51
+ /**
52
+ * Play order error haptic feedback
53
+ */
54
+ orderError(): Promise<void>;
55
+ /**
56
+ * Play button interaction haptic feedback
57
+ */
58
+ buttonInteraction(): Promise<void>;
59
+ /**
60
+ * Play custom haptic pattern
61
+ */
62
+ customImpact(style: ImpactStyle): Promise<void>;
63
+ /**
64
+ * Play custom notification haptic
65
+ */
66
+ customNotification(type: NotificationType): Promise<void>;
67
+ /**
68
+ * Check if haptics are available on the device
69
+ */
70
+ isAvailable(): Promise<boolean>;
71
+ /**
72
+ * Disable haptic feedback
73
+ */
74
+ disable(): void;
75
+ /**
76
+ * Enable haptic feedback
77
+ */
78
+ enable(): void;
79
+ /**
80
+ * Fallback vibration for unsupported devices
81
+ */
82
+ private vibrate;
83
+ static ɵfac: i0.ɵɵFactoryDeclaration<HapticsService, never>;
84
+ static ɵprov: i0.ɵɵInjectableDeclaration<HapticsService>;
85
+ }