@sumaris-net/ngx-components 18.7.0 → 18.7.1-rc1
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/doc/changelog.md +94 -0
- package/esm2022/public_api.mjs +4 -1
- package/esm2022/src/app/admin/users/users.mjs +2 -2
- package/esm2022/src/app/core/account/account.page.mjs +1 -1
- package/esm2022/src/app/core/account/password/change-password.page.mjs +2 -2
- package/esm2022/src/app/core/form/entity/entity-metadata.component.mjs +3 -3
- package/esm2022/src/app/core/form/list/list.form.mjs +2 -2
- package/esm2022/src/app/core/form/properties/properties.form.mjs +15 -6
- package/esm2022/src/app/core/form/properties/properties.utils.mjs +9 -10
- package/esm2022/src/app/core/home/home.mjs +4 -2
- package/esm2022/src/app/core/menu/menu.component.mjs +19 -24
- package/esm2022/src/app/core/menu/menu.service.mjs +6 -3
- package/esm2022/src/app/core/menu/testing/menu-other.testing.mjs +1 -1
- package/esm2022/src/app/core/menu/testing/menu.testing.mjs +1 -1
- package/esm2022/src/app/core/register/register-confirm.page.mjs +1 -1
- package/esm2022/src/app/core/register/register.form.mjs +1 -1
- package/esm2022/src/app/core/services/model/entity.model.mjs +14 -5
- package/esm2022/src/app/core/services/platform.service.mjs +27 -10
- package/esm2022/src/app/core/settings/settings.page.mjs +1 -1
- package/esm2022/src/app/core/table/column/actions-column.component.mjs +3 -3
- package/esm2022/src/app/core/table/column/row-field.component.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table.testing.mjs +1 -1
- package/esm2022/src/app/core/table/testing/table2.testing.mjs +1 -1
- package/esm2022/src/app/shared/dates.mjs +13 -1
- package/esm2022/src/app/shared/directives/autoresize.directive.mjs +75 -0
- package/esm2022/src/app/shared/directives/directives.module.mjs +5 -4
- package/esm2022/src/app/shared/form/field.component.mjs +10 -4
- package/esm2022/src/app/shared/forms.mjs +3 -1
- package/esm2022/src/app/shared/functions.mjs +7 -1
- package/esm2022/src/app/shared/hotkeys/hotkeys.service.mjs +3 -2
- package/esm2022/src/app/shared/image/gallery/image-gallery.component.mjs +11 -4
- package/esm2022/src/app/shared/image/gallery/testing/gallery.testing.mjs +1 -1
- package/esm2022/src/app/shared/markdown/markdown.component.mjs +55 -81
- package/esm2022/src/app/shared/markdown/markdown.modal.mjs +17 -10
- package/esm2022/src/app/shared/markdown/markdown.service.mjs +7 -5
- package/esm2022/src/app/shared/markdown/markdown.utils.mjs +8 -1
- package/esm2022/src/app/shared/markdown/testing/markdown.test.mjs +16 -7
- package/esm2022/src/app/shared/material/autocomplete/material.autocomplete.mjs +71 -36
- package/esm2022/src/app/shared/material/autocomplete/testing/autocomplete.test.mjs +3 -3
- package/esm2022/src/app/shared/material/boolean/material.boolean.mjs +2 -2
- package/esm2022/src/app/shared/material/chips/material.chips.mjs +13 -5
- package/esm2022/src/app/shared/material/datetime/material.datetime.mjs +19 -9
- package/esm2022/src/app/shared/material/datetime/testing/mat-date-time.test.mjs +4 -4
- package/esm2022/src/app/shared/material/text/text-form.component.mjs +5 -4
- package/esm2022/src/app/shared/named-filter/named-filter-selector.component.mjs +3 -3
- package/esm2022/src/app/shared/named-filter/testing/named-filter-selector.testing.mjs +1 -1
- package/esm2022/src/app/shared/observables.mjs +5 -5
- package/esm2022/src/app/shared/pipes/arrays.pipe.mjs +18 -2
- package/esm2022/src/app/shared/pipes/duration.pipe.mjs +3 -12
- package/esm2022/src/app/shared/pipes/html.pipes.mjs +18 -1
- package/esm2022/src/app/shared/pipes/observable.pipes.mjs +44 -0
- package/esm2022/src/app/shared/pipes/pipes.module.mjs +28 -6
- package/esm2022/src/app/shared/pipes/string.pipes.mjs +35 -4
- package/esm2022/src/app/shared/print/print.service.mjs +305 -0
- package/esm2022/src/app/shared/rx-state/rx-state.decorators.mjs +4 -4
- package/esm2022/src/app/shared/toast/toast.testing.mjs +13 -11
- package/esm2022/src/app/shared/toast/toast.testing.module.mjs +5 -4
- package/esm2022/src/app/shared/toast/toasts.mjs +23 -33
- package/esm2022/src/app/shared/toolbar/modal-toolbar.mjs +3 -3
- package/esm2022/src/app/shared/toolbar/toolbar.mjs +7 -3
- package/esm2022/src/app/shared/upload-file/upload-file-popover.component.mjs +3 -3
- package/esm2022/src/app/shared/validator/form-error-adapter.class.mjs +2 -2
- package/esm2022/src/app/shared/validator/validators.mjs +12 -8
- package/esm2022/src/app/social/message/message.form.mjs +4 -3
- package/fesm2022/sumaris-net.ngx-components.mjs +971 -373
- package/fesm2022/sumaris-net.ngx-components.mjs.map +1 -1
- package/package.json +1 -1
- package/public_api.d.ts +3 -0
- package/src/app/core/form/properties/properties.form.d.ts +2 -0
- package/src/app/core/menu/menu.component.d.ts +3 -6
- package/src/app/core/services/model/entity.model.d.ts +5 -3
- package/src/app/core/services/platform.service.d.ts +9 -2
- package/src/app/shared/dates.d.ts +4 -0
- package/src/app/shared/directives/autoresize.directive.d.ts +20 -0
- package/src/app/shared/directives/directives.module.d.ts +4 -3
- package/src/app/shared/form/field.component.d.ts +3 -1
- package/src/app/shared/functions.d.ts +6 -0
- package/src/app/shared/image/gallery/image-gallery.component.d.ts +4 -1
- package/src/app/shared/markdown/markdown.component.d.ts +12 -7
- package/src/app/shared/markdown/markdown.modal.d.ts +9 -2
- package/src/app/shared/markdown/markdown.utils.d.ts +1 -0
- package/src/app/shared/markdown/testing/markdown.test.d.ts +4 -1
- package/src/app/shared/material/autocomplete/material.autocomplete.d.ts +2 -0
- package/src/app/shared/material/chips/material.chips.d.ts +1 -0
- package/src/app/shared/material/datetime/material.datetime.d.ts +1 -0
- package/src/app/shared/observables.d.ts +2 -2
- package/src/app/shared/pipes/arrays.pipe.d.ts +8 -0
- package/src/app/shared/pipes/html.pipes.d.ts +7 -0
- package/src/app/shared/pipes/observable.pipes.d.ts +19 -0
- package/src/app/shared/pipes/pipes.module.d.ts +5 -4
- package/src/app/shared/pipes/string.pipes.d.ts +11 -1
- package/src/app/shared/print/print.service.d.ts +94 -0
- package/src/app/shared/rx-state/rx-state.decorators.d.ts +2 -2
- package/src/app/shared/toast/toast.testing.d.ts +1 -1
- package/src/app/shared/toast/toast.testing.module.d.ts +2 -1
- package/src/app/shared/toast/toasts.d.ts +2 -3
- package/src/app/shared/toolbar/toolbar.d.ts +3 -1
- package/src/app/shared/validator/validators.d.ts +3 -1
- package/src/assets/i18n/en-US.json +3 -2
- package/src/assets/i18n/en.json +2 -1
- package/src/assets/i18n/fr.json +2 -1
- package/src/assets/manifest.json +1 -1
- package/src/theme/_mixins.scss +7 -0
- package/src/theme/_ngx-components.scss +53 -46
- package/src/theme/_ngx-components.table.scss +4 -1
- package/src/theme/_ngx-components.tabs.scss +11 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import { Toasts } from '../toast/toasts';
|
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
|
3
|
+
import { DOCUMENT } from '@angular/common';
|
|
4
|
+
import { isNil, isNilOrBlank, isNotNil, isNotNilOrBlank } from '../functions';
|
|
5
|
+
import { waitForTrue } from '../observables';
|
|
6
|
+
import { mergeMap, timer } from 'rxjs';
|
|
7
|
+
import { isChrome } from '../platforms';
|
|
8
|
+
import * as i0 from "@angular/core";
|
|
9
|
+
import * as i1 from "@ionic/angular";
|
|
10
|
+
import * as i2 from "@ngx-translate/core";
|
|
11
|
+
import * as i3 from "../storage/storage.service";
|
|
12
|
+
export const PRINT_LOADING_STORAGE_KEY_PREFIX = 'print-loading-';
|
|
13
|
+
export const PRINT_ID_QUERY_PARAM = 'print-id';
|
|
14
|
+
export class PrintService {
|
|
15
|
+
toastController;
|
|
16
|
+
translate;
|
|
17
|
+
storage;
|
|
18
|
+
document;
|
|
19
|
+
_printId = 0;
|
|
20
|
+
constructor(toastController, translate, storage, document) {
|
|
21
|
+
this.toastController = toastController;
|
|
22
|
+
this.translate = translate;
|
|
23
|
+
this.storage = storage;
|
|
24
|
+
this.document = document;
|
|
25
|
+
}
|
|
26
|
+
nextJobId() {
|
|
27
|
+
return ++this._printId;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Extracts and returns the job ID from a given URL.
|
|
31
|
+
*
|
|
32
|
+
* @param {string} [url] - The URL from which to extract the job ID. If not provided, `window.location.href` will be used.
|
|
33
|
+
* @return {number | undefined} The extracted job ID as a number, or `undefined` if the job ID is not present or invalid.
|
|
34
|
+
*/
|
|
35
|
+
getJobId(url) {
|
|
36
|
+
url = url || window.location.href;
|
|
37
|
+
const matches = url.match(/print-id=(\d+)/);
|
|
38
|
+
return matches?.[1] || undefined;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Determines whether the provided URL or the current page's URL contains
|
|
42
|
+
* a specific query parameter, indicating it's a printing-related URL.
|
|
43
|
+
*
|
|
44
|
+
* @param {string} [url] - The optional URL to check. If not provided, the current page's URL is used.
|
|
45
|
+
* @param {string} [queryParam='print-id'] - The query parameter to look for, defaulting to 'print-id'.
|
|
46
|
+
* @return {boolean} Returns true if the query parameter is found in the URL; otherwise, false.
|
|
47
|
+
*/
|
|
48
|
+
isPrintingUrl(url, queryParam = 'print-id') {
|
|
49
|
+
let query;
|
|
50
|
+
if (isNotNilOrBlank(url))
|
|
51
|
+
query = new URL(url).search;
|
|
52
|
+
query = query || window.location.search || '?';
|
|
53
|
+
return query.indexOf(queryParam) !== -1;
|
|
54
|
+
}
|
|
55
|
+
async printElement(element, opts) {
|
|
56
|
+
if (!element)
|
|
57
|
+
throw new Error("Missing required 'element' argument");
|
|
58
|
+
return this.printHTML(element.innerHTML, opts);
|
|
59
|
+
}
|
|
60
|
+
async printHTML(html, opts) {
|
|
61
|
+
if (!html)
|
|
62
|
+
throw new Error("Missing required 'html' argument");
|
|
63
|
+
// Create iframe
|
|
64
|
+
const iframe = this.createPrintIframeByHtml(html, opts);
|
|
65
|
+
return this.printIframe(iframe, opts);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Prints the content of a URL by rendering it in an iframe.
|
|
69
|
+
*
|
|
70
|
+
* @param {string} url The URL of the content to print. This parameter is required.
|
|
71
|
+
* @param {Omit<PrintOptions, 'style'>} [opts] Optional settings for printing, excluding the 'style' option.
|
|
72
|
+
* @return {Promise<number>} A promise that resolves to the ID of the print job.
|
|
73
|
+
*/
|
|
74
|
+
async printUrl(url, opts) {
|
|
75
|
+
if (isNilOrBlank(url))
|
|
76
|
+
throw new Error("Missing required 'url' argument");
|
|
77
|
+
const jobId = opts?.id ?? this.nextJobId();
|
|
78
|
+
// Create iframe
|
|
79
|
+
const iframe = this.createPrintIframeByUrl(url, { id: jobId });
|
|
80
|
+
// Launch the print job
|
|
81
|
+
return this.printIframe(iframe, opts);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Prints the content of the specified iframe element.
|
|
85
|
+
*
|
|
86
|
+
* @param {HTMLIFrameElement} iframe - The iframe element whose content needs to be printed. Must be a valid and loaded iframe element.
|
|
87
|
+
* @param {PrintOptions} [opts] - Optional parameters for the print operation, which may include options for toast messages and job configuration.
|
|
88
|
+
* @return {Promise<number>} A promise that resolves to the unique ID of the print job.
|
|
89
|
+
* @throws Will throw an error if the required 'iframe' argument is missing or invalid.
|
|
90
|
+
*/
|
|
91
|
+
async printIframe(iframe, opts) {
|
|
92
|
+
if (!iframe)
|
|
93
|
+
throw new Error("Missing required 'iframe' argument");
|
|
94
|
+
const jobId = opts?.id ?? this.nextJobId();
|
|
95
|
+
const toastId = `printing-${jobId}`;
|
|
96
|
+
const showLoadingToast = opts?.showToast !== false;
|
|
97
|
+
if (showLoadingToast)
|
|
98
|
+
await this.showToast({
|
|
99
|
+
id: toastId,
|
|
100
|
+
message: opts?.toastMessage || 'COMMON.PLEASE_WAIT',
|
|
101
|
+
duration: 0,
|
|
102
|
+
});
|
|
103
|
+
try {
|
|
104
|
+
// Wait end of iframe load
|
|
105
|
+
await this.waitIdle(iframe, { id: jobId });
|
|
106
|
+
// Print (and wait end of print)
|
|
107
|
+
await this.print(iframe);
|
|
108
|
+
return jobId;
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
console.error('[print-service] Failed to create hidden iframe', err);
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
iframe.remove();
|
|
115
|
+
if (showLoadingToast)
|
|
116
|
+
await this.toastController.dismiss(null, null, toastId);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
async markAsLoading(id) {
|
|
120
|
+
console.debug(`[print-service] Mark print job #${id} as loading`);
|
|
121
|
+
await this.storage.set(PRINT_LOADING_STORAGE_KEY_PREFIX + id, '1');
|
|
122
|
+
}
|
|
123
|
+
async markAsLoaded(id) {
|
|
124
|
+
console.debug(`[print-service] Mark print job #${id} as loaded`);
|
|
125
|
+
await this.storage.remove(PRINT_LOADING_STORAGE_KEY_PREFIX + id);
|
|
126
|
+
}
|
|
127
|
+
async isLoaded(id) {
|
|
128
|
+
const result = await this.storage.get(PRINT_LOADING_STORAGE_KEY_PREFIX + id);
|
|
129
|
+
return isNil(result);
|
|
130
|
+
}
|
|
131
|
+
async isLoading(id) {
|
|
132
|
+
return !(await this.isLoaded(id));
|
|
133
|
+
}
|
|
134
|
+
/* -- protected functions -- */
|
|
135
|
+
createPrintIframeByUrl(url, opts) {
|
|
136
|
+
// Make sure to add the job id inside the URL (e.g. to allow getJobIdFromUrl() to retrieve it)
|
|
137
|
+
if (isNotNil(opts?.id)) {
|
|
138
|
+
const newUrl = new URL(url);
|
|
139
|
+
newUrl.searchParams.set(PRINT_ID_QUERY_PARAM, '' + opts.id);
|
|
140
|
+
url = newUrl.href;
|
|
141
|
+
}
|
|
142
|
+
// Create a iframe with the given url
|
|
143
|
+
const iframe = this.document.createElement('iframe');
|
|
144
|
+
iframe.classList.add('cdk-visually-hidden');
|
|
145
|
+
iframe.style.width = '100%';
|
|
146
|
+
iframe.style.height = '100%';
|
|
147
|
+
this.document.body.appendChild(iframe);
|
|
148
|
+
iframe.src = url;
|
|
149
|
+
return iframe;
|
|
150
|
+
}
|
|
151
|
+
createPrintIframeByHtml(html, opts) {
|
|
152
|
+
if (!html)
|
|
153
|
+
throw new Error("Missing required 'html' argument");
|
|
154
|
+
const lang = this.document.documentElement?.lang || 'en';
|
|
155
|
+
// Create an empty iframe
|
|
156
|
+
const iframe = this.document.createElement('iframe');
|
|
157
|
+
iframe.classList.add('cdk-visually-hidden');
|
|
158
|
+
iframe.style.width = '100%';
|
|
159
|
+
iframe.style.height = '100%';
|
|
160
|
+
this.document.body.appendChild(iframe);
|
|
161
|
+
// Write iframe content
|
|
162
|
+
const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;
|
|
163
|
+
if (iframeDocument) {
|
|
164
|
+
iframeDocument.open();
|
|
165
|
+
iframeDocument.write(`
|
|
166
|
+
<!DOCTYPE html>
|
|
167
|
+
<html lang="${lang}" class="print-pdf">
|
|
168
|
+
<head>
|
|
169
|
+
<title>${opts?.title || ''}</title>
|
|
170
|
+
<style>
|
|
171
|
+
@media print {
|
|
172
|
+
body {
|
|
173
|
+
font-family: 'Roboto', Helvetica, Arial, sans-serif;
|
|
174
|
+
margin: 0;
|
|
175
|
+
padding: 0;
|
|
176
|
+
overflow: hidden;
|
|
177
|
+
}
|
|
178
|
+
img {
|
|
179
|
+
max-width: 100%;
|
|
180
|
+
height: auto;
|
|
181
|
+
page-break-inside: avoid;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
${opts?.inlineStyle || ''}
|
|
185
|
+
</style>
|
|
186
|
+
</head>
|
|
187
|
+
<body>
|
|
188
|
+
${html}
|
|
189
|
+
</body>
|
|
190
|
+
</html>
|
|
191
|
+
`);
|
|
192
|
+
iframeDocument.close();
|
|
193
|
+
}
|
|
194
|
+
// Set iframe style
|
|
195
|
+
// FIXME - Ignore style injection, because it failed in Firefox (e.g. on user manual) and Chrome (e.g. in privacy policy)
|
|
196
|
+
// Nothing appear in the print dialog
|
|
197
|
+
//this.applyDocumentStyleToIframe(iframe);
|
|
198
|
+
return iframe;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Applies the styles from the provided document, including external stylesheets and inline styles,
|
|
202
|
+
* to the specified iframe's document.
|
|
203
|
+
*
|
|
204
|
+
* @param {HTMLIFrameElement} iframe - The iframe to which the styles are applied.
|
|
205
|
+
* @return {void} Does not return a value.
|
|
206
|
+
*/
|
|
207
|
+
applyDocumentStyleToIframe(iframe) {
|
|
208
|
+
const iframeDocument = iframe.contentDocument || iframe.contentWindow?.document;
|
|
209
|
+
if (iframeDocument) {
|
|
210
|
+
// Récupérer tous les styles (liens CSS)
|
|
211
|
+
const links = Array.from(this.document.querySelectorAll('style,link[rel="stylesheet"]'));
|
|
212
|
+
links.forEach((element) => {
|
|
213
|
+
// Insert inline style
|
|
214
|
+
if (element.tagName === 'STYLE') {
|
|
215
|
+
const newStyle = iframeDocument.createElement('style');
|
|
216
|
+
newStyle.innerHTML = element.innerHTML;
|
|
217
|
+
iframeDocument.head.appendChild(newStyle);
|
|
218
|
+
console.debug('[print-service] Add style to iframe', newStyle);
|
|
219
|
+
}
|
|
220
|
+
// Insert link to stylesheet file
|
|
221
|
+
else if (element.tagName === 'LINK' && element.getAttribute('href')) {
|
|
222
|
+
const newLink = iframeDocument.createElement('link');
|
|
223
|
+
newLink.rel = 'stylesheet';
|
|
224
|
+
newLink.href = element.getAttribute('href');
|
|
225
|
+
iframeDocument.head.appendChild(newLink);
|
|
226
|
+
console.debug('[print-service] Add stylesheet to iframe: ', newLink.href);
|
|
227
|
+
}
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
async waitIdle(iframe, opts) {
|
|
232
|
+
// Wait job finished
|
|
233
|
+
const printId = opts?.id ?? this._printId;
|
|
234
|
+
await waitForTrue(timer(500, 500).pipe(mergeMap(() => this.isLoaded(printId))), { timeout: opts?.timeout });
|
|
235
|
+
// Wait end of iframe load
|
|
236
|
+
await new Promise((resolve, reject) => {
|
|
237
|
+
const iframeWindow = iframe.contentWindow?.window || iframe.contentWindow;
|
|
238
|
+
if (iframeWindow.document.readyState === 'complete') {
|
|
239
|
+
resolve();
|
|
240
|
+
}
|
|
241
|
+
else {
|
|
242
|
+
// Stop if timeout reached
|
|
243
|
+
if (opts?.timeout > 0) {
|
|
244
|
+
setTimeout(() => reject('timeout'), opts.timeout);
|
|
245
|
+
}
|
|
246
|
+
const readyListener = () => {
|
|
247
|
+
if (iframeWindow.document.readyState === 'complete') {
|
|
248
|
+
resolve();
|
|
249
|
+
iframeWindow.document.removeEventListener('readystatechange', readyListener);
|
|
250
|
+
}
|
|
251
|
+
};
|
|
252
|
+
iframeWindow.document.addEventListener('readystatechange', readyListener);
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Triggers the print functionality of the given iframe and resolves or rejects based on the print completion or timeout.
|
|
258
|
+
*
|
|
259
|
+
* @param {HTMLIFrameElement} iframe - The iframe element to be printed.
|
|
260
|
+
* @param {{timeout?: number}} [opts] - An optional configuration object.
|
|
261
|
+
* @param {number} [opts.timeout] - The maximum time in milliseconds to wait for the print to complete before rejecting the promise.
|
|
262
|
+
* @return {Promise<void>} A promise that resolves after the print is completed or rejects if a timeout occurs.
|
|
263
|
+
*/
|
|
264
|
+
print(iframe, opts) {
|
|
265
|
+
return new Promise((resolve, reject) => {
|
|
266
|
+
const iframeWindow = iframe.contentWindow?.window || iframe.contentWindow;
|
|
267
|
+
// Stop if timeout reached
|
|
268
|
+
if (opts?.timeout > 0) {
|
|
269
|
+
setTimeout(() => reject('timeout'), opts.timeout);
|
|
270
|
+
}
|
|
271
|
+
// On Chrome
|
|
272
|
+
if (isChrome(window)) {
|
|
273
|
+
// Wait after print event, to resolve the promise
|
|
274
|
+
const afterPrintListener = () => {
|
|
275
|
+
console.debug('[print-service] After print');
|
|
276
|
+
resolve();
|
|
277
|
+
// Remove the listener
|
|
278
|
+
iframeWindow.removeEventListener('afterprint', afterPrintListener);
|
|
279
|
+
};
|
|
280
|
+
iframeWindow.addEventListener('afterprint', afterPrintListener);
|
|
281
|
+
iframe.contentWindow.window.print();
|
|
282
|
+
}
|
|
283
|
+
// Otherwise (e.g. Firefox)
|
|
284
|
+
else {
|
|
285
|
+
iframe.contentWindow.window.print();
|
|
286
|
+
resolve();
|
|
287
|
+
}
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
async showToast(opts) {
|
|
291
|
+
if (!this.toastController)
|
|
292
|
+
throw new Error("Missing toastController in component's constructor");
|
|
293
|
+
return await Toasts.show(this.toastController, this.translate, opts);
|
|
294
|
+
}
|
|
295
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrintService, deps: [{ token: i1.ToastController }, { token: i2.TranslateService }, { token: i3.StorageService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
296
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrintService, providedIn: 'root' });
|
|
297
|
+
}
|
|
298
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PrintService, decorators: [{
|
|
299
|
+
type: Injectable,
|
|
300
|
+
args: [{ providedIn: 'root' }]
|
|
301
|
+
}], ctorParameters: () => [{ type: i1.ToastController }, { type: i2.TranslateService }, { type: i3.StorageService }, { type: Document, decorators: [{
|
|
302
|
+
type: Inject,
|
|
303
|
+
args: [DOCUMENT]
|
|
304
|
+
}] }] });
|
|
305
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJpbnQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3ByaW50L3ByaW50LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFvQixNQUFNLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUkzRCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFM0MsT0FBTyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLGVBQWUsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUM5RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDdkMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQzs7Ozs7QUFVeEMsTUFBTSxDQUFDLE1BQU0sZ0NBQWdDLEdBQUcsZ0JBQWdCLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsVUFBVSxDQUFDO0FBRy9DLE1BQU0sT0FBTyxZQUFZO0lBSVg7SUFDQTtJQUNBO0lBQ2tCO0lBTnRCLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFckIsWUFDWSxlQUFnQyxFQUNoQyxTQUEyQixFQUMzQixPQUF1QixFQUNMLFFBQWtCO1FBSHBDLG9CQUFlLEdBQWYsZUFBZSxDQUFpQjtRQUNoQyxjQUFTLEdBQVQsU0FBUyxDQUFrQjtRQUMzQixZQUFPLEdBQVAsT0FBTyxDQUFnQjtRQUNMLGFBQVEsR0FBUixRQUFRLENBQVU7SUFDN0MsQ0FBQztJQUVKLFNBQVM7UUFDUCxPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxRQUFR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UUFDakcsT0FBTyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7d0dBdlRVLFlBQVksK0dBT2IsUUFBUTs0R0FQUCxZQUFZLGNBREMsTUFBTTs7NEZBQ25CLFlBQVk7a0JBRHhCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFRN0IsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2hvd1RvYXN0T3B0aW9ucywgVG9hc3RzIH0gZnJvbSAnLi4vdG9hc3QvdG9hc3RzJztcbmltcG9ydCB7IE92ZXJsYXlFdmVudERldGFpbCB9IGZyb20gJ0Bpb25pYy9jb3JlJztcbmltcG9ydCB7IFRvYXN0Q29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IEluamVjdCwgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU3RvcmFnZVNlcnZpY2UgfSBmcm9tICcuLi9zdG9yYWdlL3N0b3JhZ2Uuc2VydmljZSc7XG5pbXBvcnQgeyBpc05pbCwgaXNOaWxPckJsYW5rLCBpc05vdE5pbCwgaXNOb3ROaWxPckJsYW5rIH0gZnJvbSAnLi4vZnVuY3Rpb25zJztcbmltcG9ydCB7IHdhaXRGb3JUcnVlIH0gZnJvbSAnLi4vb2JzZXJ2YWJsZXMnO1xuaW1wb3J0IHsgbWVyZ2VNYXAsIHRpbWVyIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBpc0Nocm9tZSB9IGZyb20gJy4uL3BsYXRmb3Jtcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJpbnRPcHRpb25zIHtcbiAgaWQ/OiBzdHJpbmcgfCBudW1iZXI7XG4gIHRpdGxlPzogc3RyaW5nO1xuICBzaG93VG9hc3Q/OiBib29sZWFuO1xuICB0b2FzdE1lc3NhZ2U/OiBzdHJpbmc7XG4gIHN0eWxlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgUFJJTlRfTE9BRElOR19TVE9SQUdFX0tFWV9QUkVGSVggPSAncHJpbnQtbG9hZGluZy0nO1xuZXhwb3J0IGNvbnN0IFBSSU5UX0lEX1FVRVJZX1BBUkFNID0gJ3ByaW50LWlkJztcblxuQEluamVjdGFibGUoeyBwcm92aWRlZEluOiAncm9vdCcgfSlcbmV4cG9ydCBjbGFzcyBQcmludFNlcnZpY2Uge1xuICBwcml2YXRlIF9wcmludElkID0gMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgdG9hc3RDb250cm9sbGVyOiBUb2FzdENvbnRyb2xsZXIsXG4gICAgcHJvdGVjdGVkIHRyYW5zbGF0ZTogVHJhbnNsYXRlU2VydmljZSxcbiAgICBwcm90ZWN0ZWQgc3RvcmFnZTogU3RvcmFnZVNlcnZpY2UsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJvdGVjdGVkIGRvY3VtZW50OiBEb2N1bWVudFxuICApIHt9XG5cbiAgbmV4dEpvYklkKCk6IG51bWJlciB7XG4gICAgcmV0dXJuICsrdGhpcy5fcHJpbnRJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0cyBhbmQgcmV0dXJucyB0aGUgam9iIElEIGZyb20gYSBnaXZlbiBVUkwuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbdXJsXSAtIFRoZSBVUkwgZnJvbSB3aGljaCB0byBleHRyYWN0IHRoZSBqb2IgSUQuIElmIG5vdCBwcm92aWRlZCwgYHdpbmRvdy5sb2NhdGlvbi5ocmVmYCB3aWxsIGJlIHVzZWQuXG4gICAqIEByZXR1cm4ge251bWJlciB8IHVuZGVmaW5lZH0gVGhlIGV4dHJhY3RlZCBqb2IgSUQgYXMgYSBudW1iZXIsIG9yIGB1bmRlZmluZWRgIGlmIHRoZSBqb2IgSUQgaXMgbm90IHByZXNlbnQgb3IgaW52YWxpZC5cbiAgICovXG4gIGdldEpvYklkKHVybD86IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgdXJsID0gdXJsIHx8IHdpbmRvdy5sb2NhdGlvbi5ocmVmO1xuICAgIGNvbnN0IG1hdGNoZXMgPSB1cmwubWF0Y2goL3ByaW50LWlkPShcXGQrKS8pO1xuICAgIHJldHVybiBtYXRjaGVzPy5bMV0gfHwgdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgVVJMIG9yIHRoZSBjdXJyZW50IHBhZ2UncyBVUkwgY29udGFpbnNcbiAgICogYSBzcGVjaWZpYyBxdWVyeSBwYXJhbWV0ZXIsIGluZGljYXRpbmcgaXQncyBhIHByaW50aW5nLXJlbGF0ZWQgVVJMLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW3VybF0gLSBUaGUgb3B0aW9uYWwgVVJMIHRvIGNoZWNrLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBjdXJyZW50IHBhZ2UncyBVUkwgaXMgdXNlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtxdWVyeVBhcmFtPSdwcmludC1pZCddIC0gVGhlIHF1ZXJ5IHBhcmFtZXRlciB0byBsb29rIGZvciwgZGVmYXVsdGluZyB0byAncHJpbnQtaWQnLlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhlIHF1ZXJ5IHBhcmFtZXRlciBpcyBmb3VuZCBpbiB0aGUgVVJMOyBvdGhlcndpc2UsIGZhbHNlLlxuICAgKi9cbiAgaXNQcmludGluZ1VybCh1cmw/OiBzdHJpbmcsIHF1ZXJ5UGFyYW06IHN0cmluZyA9ICdwcmludC1pZCcpOiBib29sZWFuIHtcbiAgICBsZXQgcXVlcnk6IHN0cmluZztcbiAgICBpZiAoaXNOb3ROaWxPckJsYW5rKHVybCkpIHF1ZXJ5ID0gbmV3IFVSTCh1cmwpLnNlYXJjaDtcbiAgICBxdWVyeSA9IHF1ZXJ5IHx8IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggfHwgJz8nO1xuICAgIHJldHVybiBxdWVyeS5pbmRleE9mKHF1ZXJ5UGFyYW0pICE9PSAtMTtcbiAgfVxuXG4gIGFzeW5jIHByaW50RWxlbWVudChlbGVtZW50OiBIVE1MRWxlbWVudCwgb3B0cz86IFByaW50T3B0aW9ucyk6IFByb21pc2U8bnVtYmVyIHwgc3RyaW5nPiB7XG4gICAgaWYgKCFlbGVtZW50KSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkICdlbGVtZW50JyBhcmd1bWVudFwiKTtcblxuICAgIHJldHVybiB0aGlzLnByaW50SFRNTChlbGVtZW50LmlubmVySFRNTCwgb3B0cyk7XG4gIH1cblxuICBhc3luYyBwcmludEhUTUwoaHRtbDogc3RyaW5nLCBvcHRzPzogUHJpbnRPcHRpb25zKTogUHJvbWlzZTxudW1iZXIgfCBzdHJpbmc+IHtcbiAgICBpZiAoIWh0bWwpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgJ2h0bWwnIGFyZ3VtZW50XCIpO1xuXG4gICAgLy8gQ3JlYXRlIGlmcmFtZVxuICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuY3JlYXRlUHJpbnRJZnJhbWVCeUh0bWwoaHRtbCwgb3B0cyk7XG5cbiAgICByZXR1cm4gdGhpcy5wcmludElmcmFtZShpZnJhbWUsIG9wdHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFByaW50cyB0aGUgY29udGVudCBvZiBhIFVSTCBieSByZW5kZXJpbmcgaXQgaW4gYW4gaWZyYW1lLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsIFRoZSBVUkwgb2YgdGhlIGNvbnRlbnQgdG8gcHJpbnQuIFRoaXMgcGFyYW1ldGVyIGlzIHJlcXVpcmVkLlxuICAgKiBAcGFyYW0ge09taXQ8UHJpbnRPcHRpb25zLCAnc3R5bGUnPn0gW29wdHNdIE9wdGlvbmFsIHNldHRpbmdzIGZvciBwcmludGluZywgZXhjbHVkaW5nIHRoZSAnc3R5bGUnIG9wdGlvbi5cbiAgICogQHJldHVybiB7UHJvbWlzZTxudW1iZXI+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgSUQgb2YgdGhlIHByaW50IGpvYi5cbiAgICovXG4gIGFzeW5jIHByaW50VXJsKHVybDogc3RyaW5nLCBvcHRzPzogT21pdDxQcmludE9wdGlvbnMsICdzdHlsZSc+KTogUHJvbWlzZTxudW1iZXIgfCBzdHJpbmc+IHtcbiAgICBpZiAoaXNOaWxPckJsYW5rKHVybCkpIHRocm93IG5ldyBFcnJvcihcIk1pc3NpbmcgcmVxdWlyZWQgJ3VybCcgYXJndW1lbnRcIik7XG5cbiAgICBjb25zdCBqb2JJZCA9IG9wdHM/LmlkID8/IHRoaXMubmV4dEpvYklkKCk7XG5cbiAgICAvLyBDcmVhdGUgaWZyYW1lXG4gICAgY29uc3QgaWZyYW1lID0gdGhpcy5jcmVhdGVQcmludElmcmFtZUJ5VXJsKHVybCwgeyBpZDogam9iSWQgfSk7XG5cbiAgICAvLyBMYXVuY2ggdGhlIHByaW50IGpvYlxuICAgIHJldHVybiB0aGlzLnByaW50SWZyYW1lKGlmcmFtZSwgb3B0cyk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnRzIHRoZSBjb250ZW50IG9mIHRoZSBzcGVjaWZpZWQgaWZyYW1lIGVsZW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7SFRNTElGcmFtZUVsZW1lbnR9IGlmcmFtZSAtIFRoZSBpZnJhbWUgZWxlbWVudCB3aG9zZSBjb250ZW50IG5lZWRzIHRvIGJlIHByaW50ZWQuIE11c3QgYmUgYSB2YWxpZCBhbmQgbG9hZGVkIGlmcmFtZSBlbGVtZW50LlxuICAgKiBAcGFyYW0ge1ByaW50T3B0aW9uc30gW29wdHNdIC0gT3B0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIHByaW50IG9wZXJhdGlvbiwgd2hpY2ggbWF5IGluY2x1ZGUgb3B0aW9ucyBmb3IgdG9hc3QgbWVzc2FnZXMgYW5kIGpvYiBjb25maWd1cmF0aW9uLlxuICAgKiBAcmV0dXJuIHtQcm9taXNlPG51bWJlcj59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSB1bmlxdWUgSUQgb2YgdGhlIHByaW50IGpvYi5cbiAgICogQHRocm93cyBXaWxsIHRocm93IGFuIGVycm9yIGlmIHRoZSByZXF1aXJlZCAnaWZyYW1lJyBhcmd1bWVudCBpcyBtaXNzaW5nIG9yIGludmFsaWQuXG4gICAqL1xuICBhc3luYyBwcmludElmcmFtZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50LCBvcHRzPzogUHJpbnRPcHRpb25zKTogUHJvbWlzZTxudW1iZXIgfCBzdHJpbmc+IHtcbiAgICBpZiAoIWlmcmFtZSkgdGhyb3cgbmV3IEVycm9yKFwiTWlzc2luZyByZXF1aXJlZCAnaWZyYW1lJyBhcmd1bWVudFwiKTtcblxuICAgIGNvbnN0IGpvYklkID0gb3B0cz8uaWQgPz8gdGhpcy5uZXh0Sm9iSWQoKTtcbiAgICBjb25zdCB0b2FzdElkID0gYHByaW50aW5nLSR7am9iSWR9YDtcbiAgICBjb25zdCBzaG93TG9hZGluZ1RvYXN0ID0gb3B0cz8uc2hvd1RvYXN0ICE9PSBmYWxzZTtcbiAgICBpZiAoc2hvd0xvYWRpbmdUb2FzdClcbiAgICAgIGF3YWl0IHRoaXMuc2hvd1RvYXN0KHtcbiAgICAgICAgaWQ6IHRvYXN0SWQsXG4gICAgICAgIG1lc3NhZ2U6IG9wdHM/LnRvYXN0TWVzc2FnZSB8fCAnQ09NTU9OLlBMRUFTRV9XQUlUJyxcbiAgICAgICAgZHVyYXRpb246IDAsXG4gICAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBXYWl0IGVuZCBvZiBpZnJhbWUgbG9hZFxuICAgICAgYXdhaXQgdGhpcy53YWl0SWRsZShpZnJhbWUsIHsgaWQ6IGpvYklkIH0pO1xuXG4gICAgICAvLyBQcmludCAoYW5kIHdhaXQgZW5kIG9mIHByaW50KVxuICAgICAgYXdhaXQgdGhpcy5wcmludChpZnJhbWUpO1xuXG4gICAgICByZXR1cm4gam9iSWQ7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdbcHJpbnQtc2VydmljZV0gRmFpbGVkIHRvIGNyZWF0ZSBoaWRkZW4gaWZyYW1lJywgZXJyKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWZyYW1lLnJlbW92ZSgpO1xuICAgICAgaWYgKHNob3dMb2FkaW5nVG9hc3QpIGF3YWl0IHRoaXMudG9hc3RDb250cm9sbGVyLmRpc21pc3MobnVsbCwgbnVsbCwgdG9hc3RJZCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgbWFya0FzTG9hZGluZyhpZDogc3RyaW5nIHwgbnVtYmVyKSB7XG4gICAgY29uc29sZS5kZWJ1ZyhgW3ByaW50LXNlcnZpY2VdIE1hcmsgcHJpbnQgam9iICMke2lkfSBhcyBsb2FkaW5nYCk7XG4gICAgYXdhaXQgdGhpcy5zdG9yYWdlLnNldChQUklOVF9MT0FESU5HX1NUT1JBR0VfS0VZX1BSRUZJWCArIGlkLCAnMScpO1xuICB9XG5cbiAgYXN5bmMgbWFya0FzTG9hZGVkKGlkOiBzdHJpbmcgfCBudW1iZXIpIHtcbiAgICBjb25zb2xlLmRlYnVnKGBbcHJpbnQtc2VydmljZV0gTWFyayBwcmludCBqb2IgIyR7aWR9IGFzIGxvYWRlZGApO1xuICAgIGF3YWl0IHRoaXMuc3RvcmFnZS5yZW1vdmUoUFJJTlRfTE9BRElOR19TVE9SQUdFX0tFWV9QUkVGSVggKyBpZCk7XG4gIH1cblxuICBhc3luYyBpc0xvYWRlZChpZDogc3RyaW5nIHwgbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5zdG9yYWdlLmdldChQUklOVF9MT0FESU5HX1NUT1JBR0VfS0VZX1BSRUZJWCArIGlkKTtcbiAgICByZXR1cm4gaXNOaWwocmVzdWx0KTtcbiAgfVxuXG4gIGFzeW5jIGlzTG9hZGluZyhpZDogc3RyaW5nIHwgbnVtYmVyKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuICEoYXdhaXQgdGhpcy5pc0xvYWRlZChpZCkpO1xuICB9XG5cbiAgLyogLS0gcHJvdGVjdGVkIGZ1bmN0aW9ucyAtLSAqL1xuXG4gIHByb3RlY3RlZCBjcmVhdGVQcmludElmcmFtZUJ5VXJsKHVybDogc3RyaW5nLCBvcHRzPzogeyBpZD86IG51bWJlciB8IHN0cmluZyB9KTogSFRNTElGcmFtZUVsZW1lbnQge1xuICAgIC8vIE1ha2Ugc3VyZSB0byBhZGQgdGhlIGpvYiBpZCBpbnNpZGUgdGhlIFVSTCAoZS5nLiB0byBhbGxvdyBnZXRKb2JJZEZyb21VcmwoKSB0byByZXRyaWV2ZSBpdClcbiAgICBpZiAoaXNOb3ROaWwob3B0cz8uaWQpKSB7XG4gICAgICBjb25zdCBuZXdVcmwgPSBuZXcgVVJMKHVybCk7XG4gICAgICBuZXdVcmwuc2VhcmNoUGFyYW1zLnNldChQUklOVF9JRF9RVUVSWV9QQVJBTSwgJycgKyBvcHRzLmlkKTtcbiAgICAgIHVybCA9IG5ld1VybC5ocmVmO1xuICAgIH1cblxuICAgIC8vIENyZWF0ZSBhIGlmcmFtZSB3aXRoIHRoZSBnaXZlbiB1cmxcbiAgICBjb25zdCBpZnJhbWUgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgIGlmcmFtZS5jbGFzc0xpc3QuYWRkKCdjZGstdmlzdWFsbHktaGlkZGVuJyk7XG4gICAgaWZyYW1lLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgIGlmcmFtZS5zdHlsZS5oZWlnaHQgPSAnMTAwJSc7XG4gICAgdGhpcy5kb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlmcmFtZSk7XG4gICAgaWZyYW1lLnNyYyA9IHVybDtcbiAgICByZXR1cm4gaWZyYW1lO1xuICB9XG5cbiAgcHJvdGVjdGVkIGNyZWF0ZVByaW50SWZyYW1lQnlIdG1sKGh0bWw6IHN0cmluZywgb3B0cz86IHsgdGl0bGU/OiBzdHJpbmc7IGlubGluZVN0eWxlPzogc3RyaW5nIH0pOiBIVE1MSUZyYW1lRWxlbWVudCB7XG4gICAgaWYgKCFodG1sKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHJlcXVpcmVkICdodG1sJyBhcmd1bWVudFwiKTtcblxuICAgIGNvbnN0IGxhbmcgPSB0aGlzLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudD8ubGFuZyB8fCAnZW4nO1xuXG4gICAgLy8gQ3JlYXRlIGFuIGVtcHR5IGlmcmFtZVxuICAgIGNvbnN0IGlmcmFtZSA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaWZyYW1lJyk7XG4gICAgaWZyYW1lLmNsYXNzTGlzdC5hZGQoJ2Nkay12aXN1YWxseS1oaWRkZW4nKTtcbiAgICBpZnJhbWUuc3R5bGUud2lkdGggPSAnMTAwJSc7XG4gICAgaWZyYW1lLnN0eWxlLmhlaWdodCA9ICcxMDAlJztcbiAgICB0aGlzLmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaWZyYW1lKTtcblxuICAgIC8vIFdyaXRlIGlmcmFtZSBjb250ZW50XG4gICAgY29uc3QgaWZyYW1lRG9jdW1lbnQgPSBpZnJhbWUuY29udGVudERvY3VtZW50IHx8IGlmcmFtZS5jb250ZW50V2luZG93Py5kb2N1bWVudDtcbiAgICBpZiAoaWZyYW1lRG9jdW1lbnQpIHtcbiAgICAgIGlmcmFtZURvY3VtZW50Lm9wZW4oKTtcbiAgICAgIGlmcmFtZURvY3VtZW50LndyaXRlKGBcbiAgICAgICAgPCFET0NUWVBFIGh0bWw+XG4gICAgICAgIDxodG1sIGxhbmc9XCIke2xhbmd9XCIgY2xhc3M9XCJwcmludC1wZGZcIj5cbiAgICAgICAgICA8aGVhZD5cbiAgICAgICAgICAgIDx0aXRsZT4ke29wdHM/LnRpdGxlIHx8ICcnfTwvdGl0bGU+XG4gICAgICAgICAgICA8c3R5bGU+XG4gICAgICAgICAgICBAbWVkaWEgcHJpbnQge1xuICAgICAgICAgICAgICBib2R5IHtcbiAgICAgICAgICAgICAgICBmb250LWZhbWlseTogJ1JvYm90bycsIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7XG4gICAgICAgICAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICAgICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgICAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpbWcge1xuICAgICAgICAgICAgICAgIG1heC13aWR0aDogMTAwJTtcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGF1dG87XG4gICAgICAgICAgICAgICAgcGFnZS1icmVhay1pbnNpZGU6IGF2b2lkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICAke29wdHM/LmlubGluZVN0eWxlIHx8ICcnfVxuICAgICAgICAgIDwvc3R5bGU+XG4gICAgICAgICAgPC9oZWFkPlxuICAgICAgICAgIDxib2R5PlxuICAgICAgICAgICAgJHtodG1sfVxuICAgICAgICAgIDwvYm9keT5cbiAgICAgICAgPC9odG1sPlxuICAgICAgYCk7XG4gICAgICBpZnJhbWVEb2N1bWVudC5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8vIFNldCBpZnJhbWUgc3R5bGVcbiAgICAvLyBGSVhNRSAtIElnbm9yZSBzdHlsZSBpbmplY3Rpb24sIGJlY2F1c2UgaXQgZmFpbGVkIGluIEZpcmVmb3ggKGUuZy4gb24gdXNlciBtYW51YWwpIGFuZCBDaHJvbWUgKGUuZy4gaW4gcHJpdmFjeSBwb2xpY3kpXG4gICAgLy8gICAgICAgICBOb3RoaW5nIGFwcGVhciBpbiB0aGUgcHJpbnQgZGlhbG9nXG4gICAgLy90aGlzLmFwcGx5RG9jdW1lbnRTdHlsZVRvSWZyYW1lKGlmcmFtZSk7XG5cbiAgICByZXR1cm4gaWZyYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEFwcGxpZXMgdGhlIHN0eWxlcyBmcm9tIHRoZSBwcm92aWRlZCBkb2N1bWVudCwgaW5jbHVkaW5nIGV4dGVybmFsIHN0eWxlc2hlZXRzIGFuZCBpbmxpbmUgc3R5bGVzLFxuICAgKiB0byB0aGUgc3BlY2lmaWVkIGlmcmFtZSdzIGRvY3VtZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxJRnJhbWVFbGVtZW50fSBpZnJhbWUgLSBUaGUgaWZyYW1lIHRvIHdoaWNoIHRoZSBzdHlsZXMgYXJlIGFwcGxpZWQuXG4gICAqIEByZXR1cm4ge3ZvaWR9IERvZXMgbm90IHJldHVybiBhIHZhbHVlLlxuICAgKi9cbiAgcHJvdGVjdGVkIGFwcGx5RG9jdW1lbnRTdHlsZVRvSWZyYW1lKGlmcmFtZTogSFRNTElGcmFtZUVsZW1lbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpZnJhbWVEb2N1bWVudCA9IGlmcmFtZS5jb250ZW50RG9jdW1lbnQgfHwgaWZyYW1lLmNvbnRlbnRXaW5kb3c/LmRvY3VtZW50O1xuICAgIGlmIChpZnJhbWVEb2N1bWVudCkge1xuICAgICAgLy8gUsOpY3Vww6lyZXIgdG91cyBsZXMgc3R5bGVzIChsaWVucyBDU1MpXG4gICAgICBjb25zdCBsaW5rcyA9IEFycmF5LmZyb20odGhpcy5kb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdzdHlsZSxsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl0nKSk7XG4gICAgICBsaW5rcy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XG4gICAgICAgIC8vIEluc2VydCBpbmxpbmUgc3R5bGVcbiAgICAgICAgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ1NUWUxFJykge1xuICAgICAgICAgIGNvbnN0IG5ld1N0eWxlID0gaWZyYW1lRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgICAgICBuZXdTdHlsZS5pbm5lckhUTUwgPSBlbGVtZW50LmlubmVySFRNTDtcbiAgICAgICAgICBpZnJhbWVEb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKG5ld1N0eWxlKTtcblxuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1twcmludC1zZXJ2aWNlXSBBZGQgc3R5bGUgdG8gaWZyYW1lJywgbmV3U3R5bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSW5zZXJ0IGxpbmsgdG8gc3R5bGVzaGVldCBmaWxlXG4gICAgICAgIGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSA9PT0gJ0xJTksnICYmIGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJykpIHtcbiAgICAgICAgICBjb25zdCBuZXdMaW5rID0gaWZyYW1lRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpO1xuICAgICAgICAgIG5ld0xpbmsucmVsID0gJ3N0eWxlc2hlZXQnO1xuICAgICAgICAgIG5ld0xpbmsuaHJlZiA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdocmVmJyk7XG4gICAgICAgICAgaWZyYW1lRG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChuZXdMaW5rKTtcblxuICAgICAgICAgIGNvbnNvbGUuZGVidWcoJ1twcmludC1zZXJ2aWNlXSBBZGQgc3R5bGVzaGVldCB0byBpZnJhbWU6ICcsIG5ld0xpbmsuaHJlZik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyB3YWl0SWRsZShpZnJhbWU6IEhUTUxJRnJhbWVFbGVtZW50LCBvcHRzPzogeyBpZD86IG51bWJlciB8IHN0cmluZzsgdGltZW91dD86IG51bWJlciB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gV2FpdCBqb2IgZmluaXNoZWRcbiAgICBjb25zdCBwcmludElkID0gb3B0cz8uaWQgPz8gdGhpcy5fcHJpbnRJZDtcbiAgICBhd2FpdCB3YWl0Rm9yVHJ1ZSh0aW1lcig1MDAsIDUwMCkucGlwZShtZXJnZU1hcCgoKSA9PiB0aGlzLmlzTG9hZGVkKHByaW50SWQpKSksIHsgdGltZW91dDogb3B0cz8udGltZW91dCB9KTtcblxuICAgIC8vIFdhaXQgZW5kIG9mIGlmcmFtZSBsb2FkXG4gICAgYXdhaXQgbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgY29uc3QgaWZyYW1lV2luZG93ID0gaWZyYW1lLmNvbnRlbnRXaW5kb3c/LndpbmRvdyB8fCBpZnJhbWUuY29udGVudFdpbmRvdztcbiAgICAgIGlmIChpZnJhbWVXaW5kb3cuZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2NvbXBsZXRlJykge1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTdG9wIGlmIHRpbWVvdXQgcmVhY2hlZFxuICAgICAgICBpZiAob3B0cz8udGltZW91dCA+IDApIHtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdCgndGltZW91dCcpLCBvcHRzLnRpbWVvdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVhZHlMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICBpZiAoaWZyYW1lV2luZG93LmRvY3VtZW50LnJlYWR5U3RhdGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICAgICAgaWZyYW1lV2luZG93LmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlYWR5c3RhdGVjaGFuZ2UnLCByZWFkeUxpc3RlbmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGlmcmFtZVdpbmRvdy5kb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdyZWFkeXN0YXRlY2hhbmdlJywgcmVhZHlMaXN0ZW5lcik7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVHJpZ2dlcnMgdGhlIHByaW50IGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGdpdmVuIGlmcmFtZSBhbmQgcmVzb2x2ZXMgb3IgcmVqZWN0cyBiYXNlZCBvbiB0aGUgcHJpbnQgY29tcGxldGlvbiBvciB0aW1lb3V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0hUTUxJRnJhbWVFbGVtZW50fSBpZnJhbWUgLSBUaGUgaWZyYW1lIGVsZW1lbnQgdG8gYmUgcHJpbnRlZC5cbiAgICogQHBhcmFtIHt7dGltZW91dD86IG51bWJlcn19IFtvcHRzXSAtIEFuIG9wdGlvbmFsIGNvbmZpZ3VyYXRpb24gb2JqZWN0LlxuICAgKiBAcGFyYW0ge251bWJlcn0gW29wdHMudGltZW91dF0gLSBUaGUgbWF4aW11bSB0aW1lIGluIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgcHJpbnQgdG8gY29tcGxldGUgYmVmb3JlIHJlamVjdGluZyB0aGUgcHJvbWlzZS5cbiAgICogQHJldHVybiB7UHJvbWlzZTx2b2lkPn0gQSBwcm9taXNlIHRoYXQgcmVzb2x2ZXMgYWZ0ZXIgdGhlIHByaW50IGlzIGNvbXBsZXRlZCBvciByZWplY3RzIGlmIGEgdGltZW91dCBvY2N1cnMuXG4gICAqL1xuICBwcm90ZWN0ZWQgcHJpbnQoaWZyYW1lOiBIVE1MSUZyYW1lRWxlbWVudCwgb3B0cz86IHsgdGltZW91dD86IG51bWJlciB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIGNvbnN0IGlmcmFtZVdpbmRvdyA9IGlmcmFtZS5jb250ZW50V2luZG93Py53aW5kb3cgfHwgaWZyYW1lLmNvbnRlbnRXaW5kb3c7XG5cbiAgICAgIC8vIFN0b3AgaWYgdGltZW91dCByZWFjaGVkXG4gICAgICBpZiAob3B0cz8udGltZW91dCA+IDApIHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QoJ3RpbWVvdXQnKSwgb3B0cy50aW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgLy8gT24gQ2hyb21lXG4gICAgICBpZiAoaXNDaHJvbWUod2luZG93KSkge1xuICAgICAgICAvLyBXYWl0IGFmdGVyIHByaW50IGV2ZW50LCB0byByZXNvbHZlIHRoZSBwcm9taXNlXG4gICAgICAgIGNvbnN0IGFmdGVyUHJpbnRMaXN0ZW5lciA9ICgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmRlYnVnKCdbcHJpbnQtc2VydmljZV0gQWZ0ZXIgcHJpbnQnKTtcblxuICAgICAgICAgIHJlc29sdmUoKTtcblxuICAgICAgICAgIC8vIFJlbW92ZSB0aGUgbGlzdGVuZXJcbiAgICAgICAgICBpZnJhbWVXaW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWZ0ZXJwcmludCcsIGFmdGVyUHJpbnRMaXN0ZW5lcik7XG4gICAgICAgIH07XG4gICAgICAgIGlmcmFtZVdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdhZnRlcnByaW50JywgYWZ0ZXJQcmludExpc3RlbmVyKTtcbiAgICAgICAgaWZyYW1lLmNvbnRlbnRXaW5kb3cud2luZG93LnByaW50KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIE90aGVyd2lzZSAoZS5nLiBGaXJlZm94KVxuICAgICAgZWxzZSB7XG4gICAgICAgIGlmcmFtZS5jb250ZW50V2luZG93LndpbmRvdy5wcmludCgpO1xuICAgICAgICByZXNvbHZlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNob3dUb2FzdDxUID0gYW55PihvcHRzOiBTaG93VG9hc3RPcHRpb25zKTogUHJvbWlzZTxPdmVybGF5RXZlbnREZXRhaWw8VD4+IHtcbiAgICBpZiAoIXRoaXMudG9hc3RDb250cm9sbGVyKSB0aHJvdyBuZXcgRXJyb3IoXCJNaXNzaW5nIHRvYXN0Q29udHJvbGxlciBpbiBjb21wb25lbnQncyBjb25zdHJ1Y3RvclwiKTtcbiAgICByZXR1cm4gYXdhaXQgVG9hc3RzLnNob3codGhpcy50b2FzdENvbnRyb2xsZXIsIHRoaXMudHJhbnNsYXRlLCBvcHRzKTtcbiAgfVxufVxuIl19
|
|
@@ -2,7 +2,7 @@ import { RxState } from '@rx-angular/state';
|
|
|
2
2
|
const STATE_VAR_NAME_KEY = '__stateName';
|
|
3
3
|
const DEFAULT_STATE_VAR_NAME = '_state';
|
|
4
4
|
let production = false;
|
|
5
|
-
export function
|
|
5
|
+
export function enableRxStateProdMode() {
|
|
6
6
|
production = true;
|
|
7
7
|
}
|
|
8
8
|
export function RxStateRegister() {
|
|
@@ -30,11 +30,11 @@ export function RxStateProperty(statePropertyName, projectValueReducer) {
|
|
|
30
30
|
const getMethodName = '_get' + key.charAt(0).toUpperCase() + key.slice(1);
|
|
31
31
|
const setMethodName = '_set' + key.charAt(0).toUpperCase() + key.slice(1);
|
|
32
32
|
const reducerMethodName = '_reduce' + key.charAt(0).toUpperCase() + key.slice(1);
|
|
33
|
-
const reducer = projectValueReducer ? `(state) => this.${reducerMethodName}(state, value)` : '() => value';
|
|
34
|
-
const getter = new Function(`return function ${getMethodName}(){\n return ${stateObj}.get('${statePropertyName}');\n}`)();
|
|
35
33
|
const checkStateExists = stateObj !== 'this' && !production
|
|
36
34
|
? `\n if (!${stateObj}) throw new Error('Missing state! Please add a RxState in class: ' + this.constructor.name);`
|
|
37
35
|
: '';
|
|
36
|
+
const reducer = projectValueReducer ? `(state) => this.${reducerMethodName}(state, value)` : '() => value';
|
|
37
|
+
const getter = new Function(`return function ${getMethodName}(){\n return ${stateObj}.get('${statePropertyName}');\n}`)();
|
|
38
38
|
const setter = new Function(`return function ${setMethodName}(value){${checkStateExists}\n ${stateObj}.set('${statePropertyName}', ${reducer});\n}`)();
|
|
39
39
|
target[getMethodName] = getter;
|
|
40
40
|
target[setMethodName] = setter;
|
|
@@ -68,4 +68,4 @@ export function RxStateSelect(statePropertyName, opts) {
|
|
|
68
68
|
});
|
|
69
69
|
};
|
|
70
70
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicngtc3RhdGUuZGVjb3JhdG9ycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3J4LXN0YXRlL3J4LXN0YXRlLmRlY29yYXRvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUF1QixPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUdqRSxNQUFNLGtCQUFrQixHQUFHLGFBQWEsQ0FBQztBQUN6QyxNQUFNLHNCQUFzQixHQUFHLFFBQVEsQ0FBQztBQUV4QyxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUM7QUFDdkIsTUFBTSxVQUFVLHFCQUFxQjtJQUNuQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZTtJQUM3QixPQUFPLFVBQVUsTUFBbUIsRUFBRSxHQUFXO1FBQy9DLFFBQVE7UUFDUiwrREFBK0Q7UUFFL0QsSUFBSSxNQUFNLENBQUMsa0JBQWtCLENBQUM7WUFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHlEQUF5RCxDQUFDLENBQUM7UUFFM0csTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7WUFDaEQsS0FBSyxFQUFFLEdBQUc7WUFDVixRQUFRLEVBQUUsS0FBSztZQUNmLFVBQVUsRUFBRSxLQUFLO1lBQ2pCLFlBQVksRUFBRSxLQUFLO1NBQ3BCLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixpQkFBOEIsRUFDOUIsbUJBQWtEO0lBRWxELE9BQU8sVUFBVSxNQUFtQixFQUFFLEdBQVc7UUFDL0MsUUFBUTtRQUNSLHVFQUF1RTtRQUV2RSxpQkFBaUIsR0FBSSxpQkFBNEIsSUFBSSxHQUFHLENBQUM7UUFDekQsTUFBTSxLQUFLLEdBQUcsTUFBTSxZQUFZLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFN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QUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUVsSixNQUFNLGFBQWEsR0FBRyxpQkFBaUIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsUUFBUSxZQUFZLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztRQUN6SSxNQUFNLE1BQU0sR0FBRyxJQUFJLFFBQVEsQ0FDekIsbUJBQW1CLGFBQWEsbUJBQW1CLElBQUksVUFBVSxJQUFJLE1BQU0sYUFBYSxvQkFBb0IsSUFBSSxNQUFNLENBQ3ZILEVBQUUsQ0FBQztRQUVKLE1BQU0sQ0FBQyxhQUFhLENBQUMsR0FBRyxNQUFNLENBQUM7UUFFL0IsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxNQUFNO1lBQ1gsVUFBVSxFQUFFLElBQUk7WUFDaEIsWUFBWSxFQUFFLEtBQUs7U0FDcEIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb2plY3RWYWx1ZVJlZHVjZXIsIFJ4U3RhdGUgfSBmcm9tICdAcngtYW5ndWxhci9zdGF0ZSc7XG5cbmRlY2xhcmUgdHlwZSBDb25zdHJ1Y3RvciA9IG5ldyAoLi4uYXJnczogYW55W10pID0+IGFueTtcbmNvbnN0IFNUQVRFX1ZBUl9OQU1FX0tFWSA9ICdfX3N0YXRlTmFtZSc7XG5jb25zdCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FID0gJ19zdGF0ZSc7XG5cbmxldCBwcm9kdWN0aW9uID0gZmFsc2U7XG5leHBvcnQgZnVuY3Rpb24gZW5hYmxlUnhTdGF0ZVByb2RNb2RlKCkge1xuICBwcm9kdWN0aW9uID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVSZWdpc3RlcigpOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvciwga2V5OiBzdHJpbmcpIHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9IEBTdGF0ZSgpICR7a2V5fWApO1xuXG4gICAgaWYgKHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldKSB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBkZWZpbmUgbW9yZSB0aGFuIG9uZSBAU3RhdGUoKSBpbiBjbGFzcyBoaWVyYXJjaHknKTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIFNUQVRFX1ZBUl9OQU1FX0tFWSwge1xuICAgICAgdmFsdWU6IGtleSxcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJ4U3RhdGVQcm9wZXJ0eTxUID0gYW55LCBLIGV4dGVuZHMga2V5b2YgVCA9IGFueSwgViBleHRlbmRzIFRbS10gPSBhbnk+KFxuICBzdGF0ZVByb3BlcnR5TmFtZT86IHN0cmluZyB8IEssXG4gIHByb2plY3RWYWx1ZVJlZHVjZXI/OiBQcm9qZWN0VmFsdWVSZWR1Y2VyPFQsIEssIFY+XG4pOiBQcm9wZXJ0eURlY29yYXRvciB7XG4gIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0OiBDb25zdHJ1Y3Rvciwga2V5OiBzdHJpbmcpIHtcbiAgICAvLyBERUJVR1xuICAgIC8vY29uc29sZS5kZWJ1ZyhgJHt0YXJnZXQuY29uc3RydWN0b3I/Lm5hbWV9IEBTdGF0ZVByb3BlcnR5KCkgJHtrZXl9YCk7XG5cbiAgICBzdGF0ZVByb3BlcnR5TmFtZSA9IChzdGF0ZVByb3BlcnR5TmFtZSBhcyBzdHJpbmcpIHx8IGtleTtcbiAgICBjb25zdCBzdGF0ZSA9IHRhcmdldCBpbnN0YW5jZW9mIFJ4U3RhdGUgPyBudWxsIDogdGFyZ2V0W1NUQVRFX1ZBUl9OQU1FX0tFWV0gfHwgREVGQVVMVF9TVEFURV9WQVJfTkFNRTtcbiAgICBjb25zdCBzdGF0ZU9iaiA9IHN0YXRlID8gYHRoaXMuJHtzdGF0ZX1gIDogYHRoaXNgO1xuXG4gICAgLy8gcHJvcGVydHkgZ2V0dGVyXG4gICAgY29uc3QgZ2V0TWV0aG9kTmFtZSA9ICdfZ2V0JyArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zbGljZSgxKTtcbiAgICBjb25zdCBzZXRNZXRob2ROYW1lID0gJ19zZXQnICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuICAgIGNvbnN0IHJlZHVjZXJNZXRob2ROYW1lID0gJ19yZWR1Y2UnICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsga2V5LnNsaWNlKDEpO1xuXG4gICAgY29uc3QgY2hlY2tTdGF0ZUV4aXN0cyA9XG4gICAgICBzdGF0ZU9iaiAhPT0gJ3RoaXMnICYmICFwcm9kdWN0aW9uXG4gICAgICAgID8gYFxcbiAgaWYgKCEke3N0YXRlT2JqfSkgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHN0YXRlISBQbGVhc2UgYWRkIGEgUnhTdGF0ZSBpbiBjbGFzczogJyArIHRoaXMuY29uc3RydWN0b3IubmFtZSk7YFxuICAgICAgICA6ICcnO1xuXG4gICAgY29uc3QgcmVkdWNlciA9IHByb2plY3RWYWx1ZVJlZHVjZXIgPyBgKHN0YXRlKSA9PiB0aGlzLiR7cmVkdWNlck1ldGhvZE5hbWV9KHN0YXRlLCB2YWx1ZSlgIDogJygpID0+IHZhbHVlJztcbiAgICBjb25zdCBnZXR0ZXIgPSBuZXcgRnVuY3Rpb24oYHJldHVybiBmdW5jdGlvbiAke2dldE1ldGhvZE5hbWV9KCl7XFxuICByZXR1cm4gJHtzdGF0ZU9ian0uZ2V0KCcke3N0YXRlUHJvcGVydHlOYW1lfScpO1xcbn1gKSgpO1xuICAgIGNvbnN0IHNldHRlciA9IG5ldyBGdW5jdGlvbihcbiAgICAgIGByZXR1cm4gZnVuY3Rpb24gJHtzZXRNZXRob2ROYW1lfSh2YWx1ZSl7JHtjaGVja1N0YXRlRXhpc3RzfVxcbiAgJHtzdGF0ZU9ian0uc2V0KCcke3N0YXRlUHJvcGVydHlOYW1lfScsICR7cmVkdWNlcn0pO1xcbn1gXG4gICAgKSgpO1xuXG4gICAgdGFyZ2V0W2dldE1ldGhvZE5hbWVdID0gZ2V0dGVyO1xuICAgIHRhcmdldFtzZXRNZXRob2ROYW1lXSA9IHNldHRlcjtcbiAgICBpZiAocHJvamVjdFZhbHVlUmVkdWNlcikgdGFyZ2V0W3JlZHVjZXJNZXRob2ROYW1lXSA9IHByb2plY3RWYWx1ZVJlZHVjZXI7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHtcbiAgICAgIGdldDogZ2V0dGVyLFxuICAgICAgc2V0OiBzZXR0ZXIsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gUnhTdGF0ZVNlbGVjdDxUID0gYW55PihzdGF0ZVByb3BlcnR5TmFtZT86IHN0cmluZyB8IGtleW9mIFQgfCAnJCcsIG9wdHM/OiB7IHN0YXRlTmFtZT86IHN0cmluZyB9KTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldDogQ29uc3RydWN0b3IsIGtleTogc3RyaW5nKSB7XG4gICAgLy8gREVCVUdcbiAgICAvL2NvbnNvbGUuZGVidWcoYCR7dGFyZ2V0LmNvbnN0cnVjdG9yPy5uYW1lfSBAUnhTdGF0ZVNlbGVjdCgpICR7a2V5fWApO1xuXG4gICAgc3RhdGVQcm9wZXJ0eU5hbWUgPSAoc3RhdGVQcm9wZXJ0eU5hbWUgYXMgc3RyaW5nKSB8fCBrZXkucmVwbGFjZSgvXFwkPyQvLCAnJyk7XG4gICAgY29uc3Qgc3RhdGUgPSB0YXJnZXQgaW5zdGFuY2VvZiBSeFN0YXRlID8gbnVsbCA6IHRhcmdldFtTVEFURV9WQVJfTkFNRV9LRVldIHx8IG9wdHM/LnN0YXRlTmFtZSB8fCBERUZBVUxUX1NUQVRFX1ZBUl9OQU1FO1xuICAgIGNvbnN0IHN0YXRlT2JqID0gc3RhdGUgPyBgdGhpcy4ke3N0YXRlfWAgOiBgdGhpc2A7XG5cbiAgICBjb25zdCBfa2V5ID0gJ18nICsga2V5O1xuXG4gICAgLy8gcHJvcGVydHkgZ2V0dGVyXG4gICAgY29uc3QgZ2V0TWV0aG9kTmFtZSA9ICdfZ2V0JyArIHN0YXRlUHJvcGVydHlOYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgKHN0YXRlUHJvcGVydHlOYW1lLmxlbmd0aCA+IDEgPyBzdGF0ZVByb3BlcnR5TmFtZS5zbGljZSgxKSA6ICcnKSArICckJztcblxuICAgIGNvbnN0IG9ic2VydmFibGVPYmogPSBzdGF0ZVByb3BlcnR5TmFtZSA9PT0gJyQnID8gYCR7c3RhdGVPYmp9LiRgIDogYCR7c3RhdGVPYmp9LnNlbGVjdCgnJHtzdGF0ZVByb3BlcnR5TmFtZS5zcGxpdCgnLicpLmpvaW4oXCInLCAnXCIpfScpYDtcbiAgICBjb25zdCBnZXR0ZXIgPSBuZXcgRnVuY3Rpb24oXG4gICAgICBgcmV0dXJuIGZ1bmN0aW9uICR7Z2V0TWV0aG9kTmFtZX0oKXtcXG4gaWYgKCF0aGlzLiR7X2tleX0pIHRoaXMuJHtfa2V5fSA9ICR7b2JzZXJ2YWJsZU9ian07XFxuICByZXR1cm4gdGhpcy4ke19rZXl9O1xcbn1gXG4gICAgKSgpO1xuXG4gICAgdGFyZ2V0W2dldE1ldGhvZE5hbWVdID0gZ2V0dGVyO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCB7XG4gICAgICBnZXQ6IGdldHRlcixcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAgIH0pO1xuICB9O1xufVxuIl19
|
|
@@ -2,51 +2,53 @@ import { Component } from '@angular/core';
|
|
|
2
2
|
import { Toasts } from './toasts';
|
|
3
3
|
import * as i0 from "@angular/core";
|
|
4
4
|
import * as i1 from "@ionic/angular";
|
|
5
|
+
import * as i2 from "@angular/forms";
|
|
5
6
|
export class ToastTestingPage {
|
|
6
7
|
injector;
|
|
7
|
-
|
|
8
|
+
options = {
|
|
8
9
|
showCloseButton: false,
|
|
10
|
+
duration: -1, // 5000, // 5s
|
|
11
|
+
header: undefined,
|
|
12
|
+
message: 'This is a message text !',
|
|
13
|
+
positionAnchor: 'header',
|
|
14
|
+
position: 'top',
|
|
9
15
|
};
|
|
10
16
|
constructor(injector) {
|
|
11
17
|
this.injector = injector;
|
|
12
18
|
}
|
|
13
19
|
showToast(opts) {
|
|
14
20
|
return Toasts.showSimple(this.injector, {
|
|
15
|
-
...this.
|
|
16
|
-
|
|
17
|
-
message: 'This is a message',
|
|
21
|
+
...this.options,
|
|
22
|
+
position: this.options.position === 'auto' ? null : this.options.position,
|
|
18
23
|
...opts,
|
|
19
24
|
});
|
|
20
25
|
}
|
|
21
26
|
showInfo(opts) {
|
|
22
27
|
return this.showToast({
|
|
23
28
|
type: 'info',
|
|
24
|
-
message: 'This is a info text !',
|
|
25
29
|
...opts,
|
|
26
30
|
});
|
|
27
31
|
}
|
|
28
32
|
showWarning(opts) {
|
|
29
33
|
return this.showToast({
|
|
30
34
|
type: 'warning',
|
|
31
|
-
message: 'This is a warning text !',
|
|
32
35
|
...opts,
|
|
33
36
|
});
|
|
34
37
|
}
|
|
35
38
|
showError(opts) {
|
|
36
39
|
return this.showToast({
|
|
37
40
|
type: 'error',
|
|
38
|
-
message: 'This is a error text !',
|
|
39
41
|
...opts,
|
|
40
42
|
});
|
|
41
43
|
}
|
|
42
44
|
toggleCloseButton() {
|
|
43
|
-
this.
|
|
45
|
+
this.options.showCloseButton = !this.options.showCloseButton;
|
|
44
46
|
}
|
|
45
47
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingPage, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Component });
|
|
46
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToastTestingPage, selector: "toast-testing", ngImport: i0, template: "<ion-toolbar color=\"primary\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"showToast()\" color=\"dark\">default</ion-button>\n\n <ion-button (click)=\"showInfo()\" color=\"secondary\">info</ion-button>\n\n <ion-button (click)=\"showWarning()\" color=\"accent\">warning</ion-button>\n\n <ion-button (click)=\"showError()\" color=\"danger\">error</ion-button>\n\n <ion-button (click)=\"showInfo({ message: 'This is <b>HTML</b> text' })\" color=\"danger\">message with HTML</ion-button>\n <br />\n\n <ion-list>\n <ion-item>\n <ion-
|
|
48
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: ToastTestingPage, selector: "toast-testing", ngImport: i0, template: "<ion-toolbar color=\"primary\" id=\"header\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"showToast()\" color=\"dark\">default</ion-button>\n\n <ion-button (click)=\"showInfo()\" color=\"secondary\">info</ion-button>\n\n <ion-button (click)=\"showWarning()\" color=\"accent\">warning</ion-button>\n\n <ion-button (click)=\"showError()\" color=\"danger\">error</ion-button>\n\n <ion-button (click)=\"showInfo({ message: 'This is <b>HTML</b> text' })\" color=\"danger\">message with HTML</ion-button>\n <br />\n\n <ion-list>\n <ion-item>\n <ion-label>Header (optional)</ion-label>\n <ion-input [(ngModel)]=\"options.header\"></ion-input>\n </ion-item>\n <ion-item>\n <ion-label>Message</ion-label>\n <ion-input [(ngModel)]=\"options.message\"></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-checkbox [(ngModel)]=\"options.showCloseButton\">\n <ion-label>Close button ?</ion-label>\n </ion-checkbox>\n </ion-item>\n\n <ion-item>\n <ion-label>Duration</ion-label>\n <ion-input [(ngModel)]=\"options.duration\"></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label>Position</ion-label>\n <ion-select [(ngModel)]=\"options.position\">\n <ion-select-option value=\"auto\">auto</ion-select-option>\n <ion-select-option value=\"top\">top</ion-select-option>\n <ion-select-option value=\"bottom\">bottom</ion-select-option>\n <ion-select-option value=\"middle\">middle</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-list>\n</ion-content>\n", dependencies: [{ kind: "component", type: i1.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: i1.IonCheckbox, selector: "ion-checkbox", inputs: ["alignment", "checked", "color", "disabled", "indeterminate", "justify", "labelPlacement", "legacy", "mode", "name", "value"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "legacy", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "counter", "counterFormatter", "detail", "detailIcon", "disabled", "download", "fill", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "shape", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonSelect, selector: "ion-select", inputs: ["cancelText", "color", "compareWith", "disabled", "expandedIcon", "fill", "interface", "interfaceOptions", "justify", "label", "labelPlacement", "legacy", "mode", "multiple", "name", "okText", "placeholder", "selectedText", "shape", "toggleIcon", "value"] }, { kind: "component", type: i1.IonSelectOption, selector: "ion-select-option", inputs: ["disabled", "value"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.BooleanValueAccessor, selector: "ion-checkbox,ion-toggle" }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "directive", type: i1.TextValueAccessor, selector: "ion-input:not([type=number]),ion-textarea,ion-searchbar,ion-range" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }] });
|
|
47
49
|
}
|
|
48
50
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingPage, decorators: [{
|
|
49
51
|
type: Component,
|
|
50
|
-
args: [{ selector: 'toast-testing', template: "<ion-toolbar color=\"primary\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"showToast()\" color=\"dark\">default</ion-button>\n\n <ion-button (click)=\"showInfo()\" color=\"secondary\">info</ion-button>\n\n <ion-button (click)=\"showWarning()\" color=\"accent\">warning</ion-button>\n\n <ion-button (click)=\"showError()\" color=\"danger\">error</ion-button>\n\n <ion-button (click)=\"showInfo({ message: 'This is <b>HTML</b> text' })\" color=\"danger\">message with HTML</ion-button>\n <br />\n\n <ion-list>\n <ion-item>\n <ion-
|
|
52
|
+
args: [{ selector: 'toast-testing', template: "<ion-toolbar color=\"primary\" id=\"header\">\n <ion-title>Toasts</ion-title>\n</ion-toolbar>\n\n<ion-content class=\"ion-padding\">\n <p>Toast examples:</p>\n\n <ion-button (click)=\"showToast()\" color=\"dark\">default</ion-button>\n\n <ion-button (click)=\"showInfo()\" color=\"secondary\">info</ion-button>\n\n <ion-button (click)=\"showWarning()\" color=\"accent\">warning</ion-button>\n\n <ion-button (click)=\"showError()\" color=\"danger\">error</ion-button>\n\n <ion-button (click)=\"showInfo({ message: 'This is <b>HTML</b> text' })\" color=\"danger\">message with HTML</ion-button>\n <br />\n\n <ion-list>\n <ion-item>\n <ion-label>Header (optional)</ion-label>\n <ion-input [(ngModel)]=\"options.header\"></ion-input>\n </ion-item>\n <ion-item>\n <ion-label>Message</ion-label>\n <ion-input [(ngModel)]=\"options.message\"></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-checkbox [(ngModel)]=\"options.showCloseButton\">\n <ion-label>Close button ?</ion-label>\n </ion-checkbox>\n </ion-item>\n\n <ion-item>\n <ion-label>Duration</ion-label>\n <ion-input [(ngModel)]=\"options.duration\"></ion-input>\n </ion-item>\n\n <ion-item>\n <ion-label>Position</ion-label>\n <ion-select [(ngModel)]=\"options.position\">\n <ion-select-option value=\"auto\">auto</ion-select-option>\n <ion-select-option value=\"top\">top</ion-select-option>\n <ion-select-option value=\"bottom\">bottom</ion-select-option>\n <ion-select-option value=\"middle\">middle</ion-select-option>\n </ion-select>\n </ion-item>\n </ion-list>\n</ion-content>\n" }]
|
|
51
53
|
}], ctorParameters: () => [{ type: i0.Injector }] });
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QudGVzdGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9hcHAvc2hhcmVkL3RvYXN0L3RvYXN0LnRlc3RpbmcudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b2FzdC90b2FzdC50ZXN0aW5nLmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBWSxNQUFNLGVBQWUsQ0FBQztBQUNwRCxPQUFPLEVBQW9CLE1BQU0sRUFBRSxNQUFNLFVBQVUsQ0FBQzs7OztBQU1wRCxNQUFNLE9BQU8sZ0JBQWdCO0lBVVA7SUFUVixPQUFPLEdBQXFCO1FBQ3BDLGVBQWUsRUFBRSxLQUFLO1FBQ3RCLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjO1FBQzVCLE1BQU0sRUFBRSxTQUFTO1FBQ2pCLE9BQU8sRUFBRSwwQkFBMEI7UUFDbkMsY0FBYyxFQUFFLFFBQVE7UUFDeEIsUUFBUSxFQUFFLEtBQUs7S0FDaEIsQ0FBQztJQUVGLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7SUFBRyxDQUFDO0lBRTFDLFNBQVMsQ0FBQyxJQUF1QjtRQUMvQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUN0QyxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ2YsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxLQUFNLE1BQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVE7WUFDbEYsR0FBRyxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVEsQ0FBQyxJQUF1QjtRQUM5QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDcEIsSUFBSSxFQUFFLE1BQU07WUFDWixHQUFHLElBQUk7U0FDUixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsV0FBVyxDQUFDLElBQXVCO1FBQ2pDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUNwQixJQUFJLEVBQUUsU0FBUztZQUNmLEdBQUcsSUFBSTtTQUNSLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxTQUFTLENBQUMsSUFBdUI7UUFDL0IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1lBQ3BCLElBQUksRUFBRSxPQUFPO1lBQ2IsR0FBRyxJQUFJO1NBQ1IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELGlCQUFpQjtRQUNmLElBQUksQ0FBQyxPQUFPLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7SUFDL0QsQ0FBQzt3R0EzQ1UsZ0JBQWdCOzRGQUFoQixnQkFBZ0IscURDUDdCLG9vREFrREE7OzRGRDNDYSxnQkFBZ0I7a0JBSjVCLFNBQVM7K0JBQ0UsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5qZWN0b3IgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNob3dUb2FzdE9wdGlvbnMsIFRvYXN0cyB9IGZyb20gJy4vdG9hc3RzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndG9hc3QtdGVzdGluZycsXG4gIHRlbXBsYXRlVXJsOiAndG9hc3QudGVzdGluZy5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RUZXN0aW5nUGFnZSB7XG4gIHByb3RlY3RlZCBvcHRpb25zOiBTaG93VG9hc3RPcHRpb25zID0ge1xuICAgIHNob3dDbG9zZUJ1dHRvbjogZmFsc2UsXG4gICAgZHVyYXRpb246IC0xLCAvLyA1MDAwLCAvLyA1c1xuICAgIGhlYWRlcjogdW5kZWZpbmVkLFxuICAgIG1lc3NhZ2U6ICdUaGlzIGlzIGEgbWVzc2FnZSB0ZXh0ICEnLFxuICAgIHBvc2l0aW9uQW5jaG9yOiAnaGVhZGVyJyxcbiAgICBwb3NpdGlvbjogJ3RvcCcsXG4gIH07XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBpbmplY3RvcjogSW5qZWN0b3IpIHt9XG5cbiAgc2hvd1RvYXN0KG9wdHM/OiBTaG93VG9hc3RPcHRpb25zKSB7XG4gICAgcmV0dXJuIFRvYXN0cy5zaG93U2ltcGxlKHRoaXMuaW5qZWN0b3IsIHtcbiAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgIHBvc2l0aW9uOiB0aGlzLm9wdGlvbnMucG9zaXRpb24gPT09ICgnYXV0bycgYXMgYW55KSA/IG51bGwgOiB0aGlzLm9wdGlvbnMucG9zaXRpb24sXG4gICAgICAuLi5vcHRzLFxuICAgIH0pO1xuICB9XG5cbiAgc2hvd0luZm8ob3B0cz86IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VG9hc3Qoe1xuICAgICAgdHlwZTogJ2luZm8nLFxuICAgICAgLi4ub3B0cyxcbiAgICB9KTtcbiAgfVxuXG4gIHNob3dXYXJuaW5nKG9wdHM/OiBTaG93VG9hc3RPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd1RvYXN0KHtcbiAgICAgIHR5cGU6ICd3YXJuaW5nJyxcbiAgICAgIC4uLm9wdHMsXG4gICAgfSk7XG4gIH1cblxuICBzaG93RXJyb3Iob3B0cz86IFNob3dUb2FzdE9wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5zaG93VG9hc3Qoe1xuICAgICAgdHlwZTogJ2Vycm9yJyxcbiAgICAgIC4uLm9wdHMsXG4gICAgfSk7XG4gIH1cblxuICB0b2dnbGVDbG9zZUJ1dHRvbigpIHtcbiAgICB0aGlzLm9wdGlvbnMuc2hvd0Nsb3NlQnV0dG9uID0gIXRoaXMub3B0aW9ucy5zaG93Q2xvc2VCdXR0b247XG4gIH1cbn1cbiIsIjxpb24tdG9vbGJhciBjb2xvcj1cInByaW1hcnlcIiBpZD1cImhlYWRlclwiPlxuICA8aW9uLXRpdGxlPlRvYXN0czwvaW9uLXRpdGxlPlxuPC9pb24tdG9vbGJhcj5cblxuPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgPHA+VG9hc3QgZXhhbXBsZXM6PC9wPlxuXG4gIDxpb24tYnV0dG9uIChjbGljayk9XCJzaG93VG9hc3QoKVwiIGNvbG9yPVwiZGFya1wiPmRlZmF1bHQ8L2lvbi1idXR0b24+XG5cbiAgPGlvbi1idXR0b24gKGNsaWNrKT1cInNob3dJbmZvKClcIiBjb2xvcj1cInNlY29uZGFyeVwiPmluZm88L2lvbi1idXR0b24+XG5cbiAgPGlvbi1idXR0b24gKGNsaWNrKT1cInNob3dXYXJuaW5nKClcIiBjb2xvcj1cImFjY2VudFwiPndhcm5pbmc8L2lvbi1idXR0b24+XG5cbiAgPGlvbi1idXR0b24gKGNsaWNrKT1cInNob3dFcnJvcigpXCIgY29sb3I9XCJkYW5nZXJcIj5lcnJvcjwvaW9uLWJ1dHRvbj5cblxuICA8aW9uLWJ1dHRvbiAoY2xpY2spPVwic2hvd0luZm8oeyBtZXNzYWdlOiAnVGhpcyBpcyA8Yj5IVE1MPC9iPiB0ZXh0JyB9KVwiIGNvbG9yPVwiZGFuZ2VyXCI+bWVzc2FnZSB3aXRoIEhUTUw8L2lvbi1idXR0b24+XG4gIDxiciAvPlxuXG4gIDxpb24tbGlzdD5cbiAgICA8aW9uLWl0ZW0+XG4gICAgICA8aW9uLWxhYmVsPkhlYWRlciAob3B0aW9uYWwpPC9pb24tbGFiZWw+XG4gICAgICA8aW9uLWlucHV0IFsobmdNb2RlbCldPVwib3B0aW9ucy5oZWFkZXJcIj48L2lvbi1pbnB1dD5cbiAgICA8L2lvbi1pdGVtPlxuICAgIDxpb24taXRlbT5cbiAgICAgIDxpb24tbGFiZWw+TWVzc2FnZTwvaW9uLWxhYmVsPlxuICAgICAgPGlvbi1pbnB1dCBbKG5nTW9kZWwpXT1cIm9wdGlvbnMubWVzc2FnZVwiPjwvaW9uLWlucHV0PlxuICAgIDwvaW9uLWl0ZW0+XG5cbiAgICA8aW9uLWl0ZW0+XG4gICAgICA8aW9uLWNoZWNrYm94IFsobmdNb2RlbCldPVwib3B0aW9ucy5zaG93Q2xvc2VCdXR0b25cIj5cbiAgICAgICAgPGlvbi1sYWJlbD5DbG9zZSBidXR0b24gPzwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tY2hlY2tib3g+XG4gICAgPC9pb24taXRlbT5cblxuICAgIDxpb24taXRlbT5cbiAgICAgIDxpb24tbGFiZWw+RHVyYXRpb248L2lvbi1sYWJlbD5cbiAgICAgIDxpb24taW5wdXQgWyhuZ01vZGVsKV09XCJvcHRpb25zLmR1cmF0aW9uXCI+PC9pb24taW5wdXQ+XG4gICAgPC9pb24taXRlbT5cblxuICAgIDxpb24taXRlbT5cbiAgICAgIDxpb24tbGFiZWw+UG9zaXRpb248L2lvbi1sYWJlbD5cbiAgICAgIDxpb24tc2VsZWN0IFsobmdNb2RlbCldPVwib3B0aW9ucy5wb3NpdGlvblwiPlxuICAgICAgICA8aW9uLXNlbGVjdC1vcHRpb24gdmFsdWU9XCJhdXRvXCI+YXV0bzwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cInRvcFwiPnRvcDwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cImJvdHRvbVwiPmJvdHRvbTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICAgIDxpb24tc2VsZWN0LW9wdGlvbiB2YWx1ZT1cIm1pZGRsZVwiPm1pZGRsZTwvaW9uLXNlbGVjdC1vcHRpb24+XG4gICAgICA8L2lvbi1zZWxlY3Q+XG4gICAgPC9pb24taXRlbT5cbiAgPC9pb24tbGlzdD5cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
|
|
@@ -4,6 +4,7 @@ import { IonicModule } from '@ionic/angular';
|
|
|
4
4
|
import { CommonModule } from '@angular/common';
|
|
5
5
|
import { TranslateModule } from '@ngx-translate/core';
|
|
6
6
|
import { ToastTestingPage } from './toast.testing';
|
|
7
|
+
import { FormsModule } from '@angular/forms';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "@ngx-translate/core";
|
|
9
10
|
import * as i2 from "@angular/router";
|
|
@@ -16,15 +17,15 @@ const routes = [
|
|
|
16
17
|
];
|
|
17
18
|
export class ToastTestingModule {
|
|
18
19
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
19
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingModule, declarations: [ToastTestingPage], imports: [CommonModule, IonicModule, i1.TranslateModule, i2.RouterModule], exports: [RouterModule, ToastTestingPage] });
|
|
20
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingModule, imports: [CommonModule, IonicModule, TranslateModule.forChild(), RouterModule.forChild(routes), RouterModule] });
|
|
20
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingModule, declarations: [ToastTestingPage], imports: [CommonModule, IonicModule, i1.TranslateModule, i2.RouterModule, FormsModule], exports: [RouterModule, ToastTestingPage] });
|
|
21
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingModule, imports: [CommonModule, IonicModule, TranslateModule.forChild(), RouterModule.forChild(routes), FormsModule, RouterModule] });
|
|
21
22
|
}
|
|
22
23
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ToastTestingModule, decorators: [{
|
|
23
24
|
type: NgModule,
|
|
24
25
|
args: [{
|
|
25
|
-
imports: [CommonModule, IonicModule, TranslateModule.forChild(), RouterModule.forChild(routes)],
|
|
26
|
+
imports: [CommonModule, IonicModule, TranslateModule.forChild(), RouterModule.forChild(routes), FormsModule],
|
|
26
27
|
declarations: [ToastTestingPage],
|
|
27
28
|
exports: [RouterModule, ToastTestingPage],
|
|
28
29
|
}]
|
|
29
30
|
}] });
|
|
30
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9hc3QudGVzdGluZy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBwL3NoYXJlZC90b2FzdC90b2FzdC50ZXN0aW5nLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxZQUFZLEVBQVUsTUFBTSxpQkFBaUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7QUFFN0MsTUFBTSxNQUFNLEdBQVc7SUFDckI7UUFDRSxJQUFJLEVBQUUsT0FBTztRQUNiLFNBQVMsRUFBRSxNQUFNO1FBQ2pCLFNBQVMsRUFBRSxnQkFBZ0I7S0FDNUI7Q0FDRixDQUFDO0FBT0YsTUFBTSxPQUFPLGtCQUFrQjt3R0FBbEIsa0JBQWtCO3lHQUFsQixrQkFBa0IsaUJBSGQsZ0JBQWdCLGFBRHJCLFlBQVksRUFBRSxXQUFXLHVDQUE2RCxXQUFXLGFBRWpHLFlBQVksRUFBRSxnQkFBZ0I7eUdBRTdCLGtCQUFrQixZQUpuQixZQUFZLEVBQUUsV0FBVyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLFdBQVcsRUFFakcsWUFBWTs7NEZBRVgsa0JBQWtCO2tCQUw5QixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsV0FBVyxDQUFDO29CQUM1RyxZQUFZLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDaEMsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGdCQUFnQixDQUFDO2lCQUMxQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUsIFJvdXRlcyB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBJb25pY01vZHVsZSB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IFRvYXN0VGVzdGluZ1BhZ2UgfSBmcm9tICcuL3RvYXN0LnRlc3RpbmcnO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmNvbnN0IHJvdXRlczogUm91dGVzID0gW1xuICB7XG4gICAgcGF0aDogJ3RvYXN0JyxcbiAgICBwYXRoTWF0Y2g6ICdmdWxsJyxcbiAgICBjb21wb25lbnQ6IFRvYXN0VGVzdGluZ1BhZ2UsXG4gIH0sXG5dO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25pY01vZHVsZSwgVHJhbnNsYXRlTW9kdWxlLmZvckNoaWxkKCksIFJvdXRlck1vZHVsZS5mb3JDaGlsZChyb3V0ZXMpLCBGb3Jtc01vZHVsZV0sXG4gIGRlY2xhcmF0aW9uczogW1RvYXN0VGVzdGluZ1BhZ2VdLFxuICBleHBvcnRzOiBbUm91dGVyTW9kdWxlLCBUb2FzdFRlc3RpbmdQYWdlXSxcbn0pXG5leHBvcnQgY2xhc3MgVG9hc3RUZXN0aW5nTW9kdWxlIHt9XG4iXX0=
|