ngx-form-draft 2.2.11 → 2.2.13
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/LICENSE +21 -21
- package/README.md +206 -206
- package/esm2020/form-draft-banner.component.mjs +84 -84
- package/esm2020/form-draft.directive.mjs +267 -267
- package/esm2020/form-draft.service.mjs +92 -92
- package/esm2020/index.mjs +4 -4
- package/esm2020/ngx-form-draft.mjs +4 -4
- package/esm2020/ngx-form-draft.module.mjs +19 -19
- package/fesm2015/ngx-form-draft.mjs +446 -446
- package/fesm2015/ngx-form-draft.mjs.map +1 -1
- package/fesm2020/ngx-form-draft.mjs +439 -439
- package/fesm2020/ngx-form-draft.mjs.map +1 -1
- package/form-draft-banner.component.d.ts +14 -14
- package/form-draft.directive.d.ts +56 -56
- package/form-draft.service.d.ts +35 -35
- package/index.d.ts +4 -4
- package/ngx-form-draft.module.d.ts +9 -9
- package/package.json +1 -1
|
@@ -1,92 +1,92 @@
|
|
|
1
|
-
import { Injectable } from '@angular/core';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
export class FormDraftService {
|
|
4
|
-
constructor() {
|
|
5
|
-
this.STORAGE_PREFIX = 'form_draft_';
|
|
6
|
-
this.MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
7
|
-
/** Registry of formId -> reset callback (used by directive to reset form + banner) */
|
|
8
|
-
this.resetRegistry = new Map();
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Register a callback to reset the form and draft UI for the given formId.
|
|
12
|
-
* Called by the directive; apps should use clearAndReset(formId) instead.
|
|
13
|
-
*/
|
|
14
|
-
registerReset(formId, resetFn) {
|
|
15
|
-
this.resetRegistry.set(formId, resetFn);
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Unregister the reset callback for the given formId.
|
|
19
|
-
* Called by the directive on destroy.
|
|
20
|
-
*/
|
|
21
|
-
unregisterReset(formId) {
|
|
22
|
-
this.resetRegistry.delete(formId);
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Clear the draft from storage and, if a directive is registered for this formId,
|
|
26
|
-
* reset the form and dismiss the draft banner in one call.
|
|
27
|
-
* Use this on form submit to clear local storage and reset the form in one line.
|
|
28
|
-
*/
|
|
29
|
-
clearAndReset(formId) {
|
|
30
|
-
this.clear(formId);
|
|
31
|
-
this.resetRegistry.get(formId)?.();
|
|
32
|
-
}
|
|
33
|
-
buildKey(formId) {
|
|
34
|
-
return `${this.STORAGE_PREFIX}${formId}`;
|
|
35
|
-
}
|
|
36
|
-
save(formId, values) {
|
|
37
|
-
try {
|
|
38
|
-
const draft = { values, savedAt: Date.now(), formId };
|
|
39
|
-
localStorage.setItem(this.buildKey(formId), JSON.stringify(draft));
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
console.warn('[FormDraft] Could not save draft:', e);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
load(formId) {
|
|
46
|
-
try {
|
|
47
|
-
const raw = localStorage.getItem(this.buildKey(formId));
|
|
48
|
-
if (!raw)
|
|
49
|
-
return null;
|
|
50
|
-
const draft = JSON.parse(raw);
|
|
51
|
-
if (Date.now() - draft.savedAt > this.MAX_AGE_MS) {
|
|
52
|
-
this.clear(formId);
|
|
53
|
-
return null;
|
|
54
|
-
}
|
|
55
|
-
return draft;
|
|
56
|
-
}
|
|
57
|
-
catch (e) {
|
|
58
|
-
console.warn('[FormDraft] Could not load draft:', e);
|
|
59
|
-
return null;
|
|
60
|
-
}
|
|
61
|
-
}
|
|
62
|
-
clear(formId) {
|
|
63
|
-
try {
|
|
64
|
-
localStorage.removeItem(this.buildKey(formId));
|
|
65
|
-
}
|
|
66
|
-
catch (e) {
|
|
67
|
-
console.warn('[FormDraft] Could not clear draft:', e);
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
formatTimestamp(timestamp) {
|
|
71
|
-
const seconds = Math.floor((Date.now() - timestamp) / 1000);
|
|
72
|
-
if (seconds < 60)
|
|
73
|
-
return 'just now';
|
|
74
|
-
const minutes = Math.floor(seconds / 60);
|
|
75
|
-
if (minutes < 60)
|
|
76
|
-
return `${minutes}m ago`;
|
|
77
|
-
const hours = Math.floor(minutes / 60);
|
|
78
|
-
if (hours < 24)
|
|
79
|
-
return `${hours}h ago`;
|
|
80
|
-
const days = Math.floor(hours / 24);
|
|
81
|
-
return `${days}d ago`;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
FormDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
-
FormDraftService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftService, providedIn: 'root' });
|
|
86
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftService, decorators: [{
|
|
87
|
-
type: Injectable,
|
|
88
|
-
args: [{
|
|
89
|
-
providedIn: 'root'
|
|
90
|
-
}]
|
|
91
|
-
}] });
|
|
92
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class FormDraftService {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.STORAGE_PREFIX = 'form_draft_';
|
|
6
|
+
this.MAX_AGE_MS = 7 * 24 * 60 * 60 * 1000;
|
|
7
|
+
/** Registry of formId -> reset callback (used by directive to reset form + banner) */
|
|
8
|
+
this.resetRegistry = new Map();
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Register a callback to reset the form and draft UI for the given formId.
|
|
12
|
+
* Called by the directive; apps should use clearAndReset(formId) instead.
|
|
13
|
+
*/
|
|
14
|
+
registerReset(formId, resetFn) {
|
|
15
|
+
this.resetRegistry.set(formId, resetFn);
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Unregister the reset callback for the given formId.
|
|
19
|
+
* Called by the directive on destroy.
|
|
20
|
+
*/
|
|
21
|
+
unregisterReset(formId) {
|
|
22
|
+
this.resetRegistry.delete(formId);
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Clear the draft from storage and, if a directive is registered for this formId,
|
|
26
|
+
* reset the form and dismiss the draft banner in one call.
|
|
27
|
+
* Use this on form submit to clear local storage and reset the form in one line.
|
|
28
|
+
*/
|
|
29
|
+
clearAndReset(formId) {
|
|
30
|
+
this.clear(formId);
|
|
31
|
+
this.resetRegistry.get(formId)?.();
|
|
32
|
+
}
|
|
33
|
+
buildKey(formId) {
|
|
34
|
+
return `${this.STORAGE_PREFIX}${formId}`;
|
|
35
|
+
}
|
|
36
|
+
save(formId, values) {
|
|
37
|
+
try {
|
|
38
|
+
const draft = { values, savedAt: Date.now(), formId };
|
|
39
|
+
localStorage.setItem(this.buildKey(formId), JSON.stringify(draft));
|
|
40
|
+
}
|
|
41
|
+
catch (e) {
|
|
42
|
+
console.warn('[FormDraft] Could not save draft:', e);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
load(formId) {
|
|
46
|
+
try {
|
|
47
|
+
const raw = localStorage.getItem(this.buildKey(formId));
|
|
48
|
+
if (!raw)
|
|
49
|
+
return null;
|
|
50
|
+
const draft = JSON.parse(raw);
|
|
51
|
+
if (Date.now() - draft.savedAt > this.MAX_AGE_MS) {
|
|
52
|
+
this.clear(formId);
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
return draft;
|
|
56
|
+
}
|
|
57
|
+
catch (e) {
|
|
58
|
+
console.warn('[FormDraft] Could not load draft:', e);
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
clear(formId) {
|
|
63
|
+
try {
|
|
64
|
+
localStorage.removeItem(this.buildKey(formId));
|
|
65
|
+
}
|
|
66
|
+
catch (e) {
|
|
67
|
+
console.warn('[FormDraft] Could not clear draft:', e);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
formatTimestamp(timestamp) {
|
|
71
|
+
const seconds = Math.floor((Date.now() - timestamp) / 1000);
|
|
72
|
+
if (seconds < 60)
|
|
73
|
+
return 'just now';
|
|
74
|
+
const minutes = Math.floor(seconds / 60);
|
|
75
|
+
if (minutes < 60)
|
|
76
|
+
return `${minutes}m ago`;
|
|
77
|
+
const hours = Math.floor(minutes / 60);
|
|
78
|
+
if (hours < 24)
|
|
79
|
+
return `${hours}h ago`;
|
|
80
|
+
const days = Math.floor(hours / 24);
|
|
81
|
+
return `${days}d ago`;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
FormDraftService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
+
FormDraftService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftService, providedIn: 'root' });
|
|
86
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: FormDraftService, decorators: [{
|
|
87
|
+
type: Injectable,
|
|
88
|
+
args: [{
|
|
89
|
+
providedIn: 'root'
|
|
90
|
+
}]
|
|
91
|
+
}] });
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1kcmFmdC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Zvcm0tZHJhZnQuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQVczQyxNQUFNLE9BQU8sZ0JBQWdCO0lBSDdCO1FBSW1CLG1CQUFjLEdBQUcsYUFBYSxDQUFDO1FBQy9CLGVBQVUsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO1FBRXRELHNGQUFzRjtRQUM5RSxrQkFBYSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO0tBNEV2RDtJQTFFQzs7O09BR0c7SUFDSCxhQUFhLENBQUMsTUFBYyxFQUFFLE9BQW1CO1FBQy9DLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLE1BQWM7UUFDNUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxhQUFhLENBQUMsTUFBYztRQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQztJQUNyQyxDQUFDO0lBRU8sUUFBUSxDQUFDLE1BQWM7UUFDN0IsT0FBTyxHQUFHLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFjLEVBQUUsTUFBMkI7UUFDOUMsSUFBSTtZQUNGLE1BQU0sS0FBSyxHQUFrQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3JFLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdEQ7SUFDSCxDQUFDO0lBRUQsSUFBSSxDQUFDLE1BQWM7UUFDakIsSUFBSTtZQUNGLE1BQU0sR0FBRyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hELElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBRXRCLE1BQU0sS0FBSyxHQUFrQixJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzdDLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEtBQUssQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRTtnQkFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztnQkFDbkIsT0FBTyxJQUFJLENBQUM7YUFDYjtZQUNELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUNBQW1DLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDckQsT0FBTyxJQUFJLENBQUM7U0FDYjtJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsTUFBYztRQUNsQixJQUFJO1lBQ0YsWUFBWSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7U0FDaEQ7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNWLE9BQU8sQ0FBQyxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDdkQ7SUFDSCxDQUFDO0lBRUQsZUFBZSxDQUFDLFNBQWlCO1FBQy9CLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7UUFDNUQsSUFBSSxPQUFPLEdBQUcsRUFBRTtZQUFFLE9BQU8sVUFBVSxDQUFDO1FBQ3BDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQ3pDLElBQUksT0FBTyxHQUFHLEVBQUU7WUFBRSxPQUFPLEdBQUcsT0FBTyxPQUFPLENBQUM7UUFDM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFDdkMsSUFBSSxLQUFLLEdBQUcsRUFBRTtZQUFFLE9BQU8sR0FBRyxLQUFLLE9BQU8sQ0FBQztRQUN2QyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsQ0FBQztRQUNwQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7NkdBaEZVLGdCQUFnQjtpSEFBaEIsZ0JBQWdCLGNBRmYsTUFBTTsyRkFFUCxnQkFBZ0I7a0JBSDVCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1EcmFmdERhdGEge1xuICB2YWx1ZXM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHNhdmVkQXQ6IG51bWJlcjtcbiAgZm9ybUlkOiBzdHJpbmc7XG59XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEZvcm1EcmFmdFNlcnZpY2Uge1xuICBwcml2YXRlIHJlYWRvbmx5IFNUT1JBR0VfUFJFRklYID0gJ2Zvcm1fZHJhZnRfJztcbiAgcHJpdmF0ZSByZWFkb25seSBNQVhfQUdFX01TID0gNyAqIDI0ICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgLyoqIFJlZ2lzdHJ5IG9mIGZvcm1JZCAtPiByZXNldCBjYWxsYmFjayAodXNlZCBieSBkaXJlY3RpdmUgdG8gcmVzZXQgZm9ybSArIGJhbm5lcikgKi9cbiAgcHJpdmF0ZSByZXNldFJlZ2lzdHJ5ID0gbmV3IE1hcDxzdHJpbmcsICgpID0+IHZvaWQ+KCk7XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgY2FsbGJhY2sgdG8gcmVzZXQgdGhlIGZvcm0gYW5kIGRyYWZ0IFVJIGZvciB0aGUgZ2l2ZW4gZm9ybUlkLlxuICAgKiBDYWxsZWQgYnkgdGhlIGRpcmVjdGl2ZTsgYXBwcyBzaG91bGQgdXNlIGNsZWFyQW5kUmVzZXQoZm9ybUlkKSBpbnN0ZWFkLlxuICAgKi9cbiAgcmVnaXN0ZXJSZXNldChmb3JtSWQ6IHN0cmluZywgcmVzZXRGbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRSZWdpc3RyeS5zZXQoZm9ybUlkLCByZXNldEZuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbnJlZ2lzdGVyIHRoZSByZXNldCBjYWxsYmFjayBmb3IgdGhlIGdpdmVuIGZvcm1JZC5cbiAgICogQ2FsbGVkIGJ5IHRoZSBkaXJlY3RpdmUgb24gZGVzdHJveS5cbiAgICovXG4gIHVucmVnaXN0ZXJSZXNldChmb3JtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucmVzZXRSZWdpc3RyeS5kZWxldGUoZm9ybUlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhciB0aGUgZHJhZnQgZnJvbSBzdG9yYWdlIGFuZCwgaWYgYSBkaXJlY3RpdmUgaXMgcmVnaXN0ZXJlZCBmb3IgdGhpcyBmb3JtSWQsXG4gICAqIHJlc2V0IHRoZSBmb3JtIGFuZCBkaXNtaXNzIHRoZSBkcmFmdCBiYW5uZXIgaW4gb25lIGNhbGwuXG4gICAqIFVzZSB0aGlzIG9uIGZvcm0gc3VibWl0IHRvIGNsZWFyIGxvY2FsIHN0b3JhZ2UgYW5kIHJlc2V0IHRoZSBmb3JtIGluIG9uZSBsaW5lLlxuICAgKi9cbiAgY2xlYXJBbmRSZXNldChmb3JtSWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuY2xlYXIoZm9ybUlkKTtcbiAgICB0aGlzLnJlc2V0UmVnaXN0cnkuZ2V0KGZvcm1JZCk/LigpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEtleShmb3JtSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuU1RPUkFHRV9QUkVGSVh9JHtmb3JtSWR9YDtcbiAgfVxuXG4gIHNhdmUoZm9ybUlkOiBzdHJpbmcsIHZhbHVlczogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkcmFmdDogRm9ybURyYWZ0RGF0YSA9IHsgdmFsdWVzLCBzYXZlZEF0OiBEYXRlLm5vdygpLCBmb3JtSWQgfTtcbiAgICAgIGxvY2FsU3RvcmFnZS5zZXRJdGVtKHRoaXMuYnVpbGRLZXkoZm9ybUlkKSwgSlNPTi5zdHJpbmdpZnkoZHJhZnQpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLndhcm4oJ1tGb3JtRHJhZnRdIENvdWxkIG5vdCBzYXZlIGRyYWZ0OicsIGUpO1xuICAgIH1cbiAgfVxuXG4gIGxvYWQoZm9ybUlkOiBzdHJpbmcpOiBGb3JtRHJhZnREYXRhIHwgbnVsbCB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJhdyA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKHRoaXMuYnVpbGRLZXkoZm9ybUlkKSk7XG4gICAgICBpZiAoIXJhdykgcmV0dXJuIG51bGw7XG5cbiAgICAgIGNvbnN0IGRyYWZ0OiBGb3JtRHJhZnREYXRhID0gSlNPTi5wYXJzZShyYXcpO1xuICAgICAgaWYgKERhdGUubm93KCkgLSBkcmFmdC5zYXZlZEF0ID4gdGhpcy5NQVhfQUdFX01TKSB7XG4gICAgICAgIHRoaXMuY2xlYXIoZm9ybUlkKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICByZXR1cm4gZHJhZnQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdbRm9ybURyYWZ0XSBDb3VsZCBub3QgbG9hZCBkcmFmdDonLCBlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFyKGZvcm1JZDogc3RyaW5nKTogdm9pZCB7XG4gICAgdHJ5IHtcbiAgICAgIGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKHRoaXMuYnVpbGRLZXkoZm9ybUlkKSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS53YXJuKCdbRm9ybURyYWZ0XSBDb3VsZCBub3QgY2xlYXIgZHJhZnQ6JywgZSk7XG4gICAgfVxuICB9XG5cbiAgZm9ybWF0VGltZXN0YW1wKHRpbWVzdGFtcDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBjb25zdCBzZWNvbmRzID0gTWF0aC5mbG9vcigoRGF0ZS5ub3coKSAtIHRpbWVzdGFtcCkgLyAxMDAwKTtcbiAgICBpZiAoc2Vjb25kcyA8IDYwKSByZXR1cm4gJ2p1c3Qgbm93JztcbiAgICBjb25zdCBtaW51dGVzID0gTWF0aC5mbG9vcihzZWNvbmRzIC8gNjApO1xuICAgIGlmIChtaW51dGVzIDwgNjApIHJldHVybiBgJHttaW51dGVzfW0gYWdvYDtcbiAgICBjb25zdCBob3VycyA9IE1hdGguZmxvb3IobWludXRlcyAvIDYwKTtcbiAgICBpZiAoaG91cnMgPCAyNCkgcmV0dXJuIGAke2hvdXJzfWggYWdvYDtcbiAgICBjb25zdCBkYXlzID0gTWF0aC5mbG9vcihob3VycyAvIDI0KTtcbiAgICByZXR1cm4gYCR7ZGF5c31kIGFnb2A7XG4gIH1cbn1cbiJdfQ==
|
package/esm2020/index.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from './form-draft.directive';
|
|
2
|
-
export * from './form-draft-banner.component';
|
|
3
|
-
export * from './form-draft.service';
|
|
4
|
-
export * from './ngx-form-draft.module';
|
|
1
|
+
export * from './form-draft.directive';
|
|
2
|
+
export * from './form-draft-banner.component';
|
|
3
|
+
export * from './form-draft.service';
|
|
4
|
+
export * from './ngx-form-draft.module';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyx3QkFBd0IsQ0FBQztBQUN2QyxjQUFjLCtCQUErQixDQUFDO0FBQzlDLGNBQWMsc0JBQXNCLENBQUM7QUFDckMsY0FBYyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZm9ybS1kcmFmdC5kaXJlY3RpdmUnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWRyYWZ0LWJhbm5lci5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9mb3JtLWRyYWZ0LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9uZ3gtZm9ybS1kcmFmdC5tb2R1bGUnO1xuIl19
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Generated bundle index. Do not edit.
|
|
3
|
-
*/
|
|
4
|
-
export * from './index';
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZvcm0tZHJhZnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmd4LWZvcm0tZHJhZnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { NgModule } from '@angular/core';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
|
-
import { FormDraftDirective } from './form-draft.directive';
|
|
4
|
-
import { FormDraftBannerComponent } from './form-draft-banner.component';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
export class NgxFormDraftModule {
|
|
7
|
-
}
|
|
8
|
-
NgxFormDraftModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
-
NgxFormDraftModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, declarations: [FormDraftDirective, FormDraftBannerComponent], imports: [CommonModule], exports: [FormDraftDirective, FormDraftBannerComponent] });
|
|
10
|
-
NgxFormDraftModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, imports: [CommonModule] });
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, decorators: [{
|
|
12
|
-
type: NgModule,
|
|
13
|
-
args: [{
|
|
14
|
-
declarations: [FormDraftDirective, FormDraftBannerComponent],
|
|
15
|
-
imports: [CommonModule],
|
|
16
|
-
exports: [FormDraftDirective, FormDraftBannerComponent],
|
|
17
|
-
}]
|
|
18
|
-
}] });
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
1
|
+
import { NgModule } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormDraftDirective } from './form-draft.directive';
|
|
4
|
+
import { FormDraftBannerComponent } from './form-draft-banner.component';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class NgxFormDraftModule {
|
|
7
|
+
}
|
|
8
|
+
NgxFormDraftModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
9
|
+
NgxFormDraftModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, declarations: [FormDraftDirective, FormDraftBannerComponent], imports: [CommonModule], exports: [FormDraftDirective, FormDraftBannerComponent] });
|
|
10
|
+
NgxFormDraftModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, imports: [CommonModule] });
|
|
11
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: NgxFormDraftModule, decorators: [{
|
|
12
|
+
type: NgModule,
|
|
13
|
+
args: [{
|
|
14
|
+
declarations: [FormDraftDirective, FormDraftBannerComponent],
|
|
15
|
+
imports: [CommonModule],
|
|
16
|
+
exports: [FormDraftDirective, FormDraftBannerComponent],
|
|
17
|
+
}]
|
|
18
|
+
}] });
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWZvcm0tZHJhZnQubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL25neC1mb3JtLWRyYWZ0Lm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUM1RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7QUFPekUsTUFBTSxPQUFPLGtCQUFrQjs7K0dBQWxCLGtCQUFrQjtnSEFBbEIsa0JBQWtCLGlCQUpkLGtCQUFrQixFQUFFLHdCQUF3QixhQUNqRCxZQUFZLGFBQ1osa0JBQWtCLEVBQUUsd0JBQXdCO2dIQUUzQyxrQkFBa0IsWUFIbkIsWUFBWTsyRkFHWCxrQkFBa0I7a0JBTDlCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLENBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLENBQUM7b0JBQzVELE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztvQkFDdkIsT0FBTyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsd0JBQXdCLENBQUM7aUJBQ3hEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3JtRHJhZnREaXJlY3RpdmUgfSBmcm9tICcuL2Zvcm0tZHJhZnQuZGlyZWN0aXZlJztcbmltcG9ydCB7IEZvcm1EcmFmdEJhbm5lckNvbXBvbmVudCB9IGZyb20gJy4vZm9ybS1kcmFmdC1iYW5uZXIuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbRm9ybURyYWZ0RGlyZWN0aXZlLCBGb3JtRHJhZnRCYW5uZXJDb21wb25lbnRdLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlXSxcbiAgZXhwb3J0czogW0Zvcm1EcmFmdERpcmVjdGl2ZSwgRm9ybURyYWZ0QmFubmVyQ29tcG9uZW50XSxcbn0pXG5leHBvcnQgY2xhc3MgTmd4Rm9ybURyYWZ0TW9kdWxlIHt9XG4iXX0=
|