@idea-ionic/uncommon 8.10.2 → 8.11.0
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.
|
@@ -1,7 +1,5 @@
|
|
|
1
|
-
import * as i1$1 from '@angular/common';
|
|
2
|
-
import { CommonModule } from '@angular/common';
|
|
3
1
|
import * as i0 from '@angular/core';
|
|
4
|
-
import {
|
|
2
|
+
import { output, input, viewChild, Input, ChangeDetectionStrategy, Component, inject, Injectable, ChangeDetectorRef } from '@angular/core';
|
|
5
3
|
import * as i1 from '@angular/forms';
|
|
6
4
|
import { FormsModule } from '@angular/forms';
|
|
7
5
|
import { IonText, IonList, IonInput, IonItem, IonAccordion, IonAccordionGroup, Platform, IonButton, IonIcon, IonLabel, IonSpinner, IonCardContent, IonCard, PopoverController, IonAvatar, IonContent, IonGrid, IonRow, IonCol, AlertController, ModalController, IonFooter, IonButtons, IonTitle, IonToolbar, IonHeader, IonCardTitle, IonCardHeader, IonImg, IonTextarea, IonListHeader, IonFab, IonFabButton, IonBadge, IonSegmentButton, IonSegment } from '@ionic/angular/standalone';
|
|
@@ -14,47 +12,78 @@ import { Camera, CameraResultType, CameraSource } from '@capacitor/camera';
|
|
|
14
12
|
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
|
15
13
|
import { Observable } from 'rxjs';
|
|
16
14
|
import { Network } from '@capacitor/network';
|
|
15
|
+
import * as i1$1 from '@angular/common';
|
|
16
|
+
import { CommonModule } from '@angular/common';
|
|
17
17
|
import { ActivatedRoute } from '@angular/router';
|
|
18
18
|
import { PushNotifications } from '@capacitor/push-notifications';
|
|
19
19
|
|
|
20
20
|
class IDEAAddressComponent {
|
|
21
21
|
constructor() {
|
|
22
|
-
this.addressChange =
|
|
22
|
+
this.addressChange = output();
|
|
23
23
|
/**
|
|
24
24
|
* If true, show the field `contact`.
|
|
25
25
|
*/
|
|
26
|
-
this.showContact = false
|
|
26
|
+
this.showContact = input(false, /* @ts-ignore */
|
|
27
|
+
...(ngDevMode ? [{ debugName: "showContact" }] : /* istanbul ignore next */ []));
|
|
27
28
|
/**
|
|
28
29
|
* If true, show the field `address2`.
|
|
29
30
|
*/
|
|
30
|
-
this.showAddress2 = false
|
|
31
|
+
this.showAddress2 = input(false, /* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [{ debugName: "showAddress2" }] : /* istanbul ignore next */ []));
|
|
31
33
|
/**
|
|
32
34
|
* If true, show the field `phone`.
|
|
33
35
|
*/
|
|
34
|
-
this.showPhone = false
|
|
36
|
+
this.showPhone = input(false, /* @ts-ignore */
|
|
37
|
+
...(ngDevMode ? [{ debugName: "showPhone" }] : /* istanbul ignore next */ []));
|
|
35
38
|
/**
|
|
36
39
|
* If true, show the field `email`.
|
|
37
40
|
*/
|
|
38
|
-
this.showEmail = false
|
|
41
|
+
this.showEmail = input(false, /* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [{ debugName: "showEmail" }] : /* istanbul ignore next */ []));
|
|
39
43
|
/**
|
|
40
44
|
* Whether the fields are editable or disabled.
|
|
41
45
|
*/
|
|
42
|
-
this.editMode = true
|
|
46
|
+
this.editMode = input(true, /* @ts-ignore */
|
|
47
|
+
...(ngDevMode ? [{ debugName: "editMode" }] : /* istanbul ignore next */ []));
|
|
43
48
|
/**
|
|
44
49
|
* If true, show obligatory dots.
|
|
45
50
|
*/
|
|
46
|
-
this.obligatory = false
|
|
51
|
+
this.obligatory = input(false, /* @ts-ignore */
|
|
52
|
+
...(ngDevMode ? [{ debugName: "obligatory" }] : /* istanbul ignore next */ []));
|
|
53
|
+
/**
|
|
54
|
+
* The lines attribute of the item.
|
|
55
|
+
*/
|
|
56
|
+
this.lines = input(/* @ts-ignore */
|
|
57
|
+
...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
58
|
+
/**
|
|
59
|
+
* The color for the component.
|
|
60
|
+
*/
|
|
61
|
+
this.color = input(/* @ts-ignore */
|
|
62
|
+
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
63
|
+
/**
|
|
64
|
+
* The label to show for the field; if not set, it has a default value.
|
|
65
|
+
*/
|
|
66
|
+
this.label = input(/* @ts-ignore */
|
|
67
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
68
|
+
/**
|
|
69
|
+
* The placeholder to show for the field.
|
|
70
|
+
*/
|
|
71
|
+
this.placeholder = input(/* @ts-ignore */
|
|
72
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
47
73
|
/**
|
|
48
74
|
* To toggle the detailed view.
|
|
49
75
|
*/
|
|
50
|
-
this.openByDefault = false
|
|
76
|
+
this.openByDefault = input(false, /* @ts-ignore */
|
|
77
|
+
...(ngDevMode ? [{ debugName: "openByDefault" }] : /* istanbul ignore next */ []));
|
|
51
78
|
this.Countries = Countries;
|
|
79
|
+
this.accordion = viewChild('accordion', /* @ts-ignore */
|
|
80
|
+
...(ngDevMode ? [{ debugName: "accordion" }] : /* istanbul ignore next */ []));
|
|
52
81
|
}
|
|
53
82
|
ngOnInit() {
|
|
54
83
|
this.countriesSuggestions = Object.keys(Countries).map(k => new Suggestion({ value: Countries[k], name: k }));
|
|
55
84
|
}
|
|
56
85
|
isCollapsed() {
|
|
57
|
-
return this.accordion?.value !== 'open';
|
|
86
|
+
return this.accordion()?.value !== 'open';
|
|
58
87
|
}
|
|
59
88
|
getCountryName(countryCode) {
|
|
60
89
|
if (!countryCode)
|
|
@@ -68,32 +97,32 @@ class IDEAAddressComponent {
|
|
|
68
97
|
this.address.country = suggestion.value;
|
|
69
98
|
this.addressChange.emit(this.address);
|
|
70
99
|
}
|
|
71
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
72
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
100
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAddressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
101
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAAddressComponent, isStandalone: true, selector: "idea-address", inputs: { address: { classPropertyName: "address", publicName: "address", isSignal: false, isRequired: false, transformFunction: null }, showContact: { classPropertyName: "showContact", publicName: "showContact", isSignal: true, isRequired: false, transformFunction: null }, showAddress2: { classPropertyName: "showAddress2", publicName: "showAddress2", isSignal: true, isRequired: false, transformFunction: null }, showPhone: { classPropertyName: "showPhone", publicName: "showPhone", isSignal: true, isRequired: false, transformFunction: null }, showEmail: { classPropertyName: "showEmail", publicName: "showEmail", isSignal: true, isRequired: false, transformFunction: null }, editMode: { classPropertyName: "editMode", publicName: "editMode", isSignal: true, isRequired: false, transformFunction: null }, obligatory: { classPropertyName: "obligatory", publicName: "obligatory", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, openByDefault: { classPropertyName: "openByDefault", publicName: "openByDefault", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { addressChange: "addressChange" }, viewQueries: [{ propertyName: "accordion", first: true, predicate: ["accordion"], descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
73
102
|
@if (address) {
|
|
74
103
|
<ion-accordion-group #accordion>
|
|
75
104
|
<ion-accordion value="open">
|
|
76
|
-
<ion-item slot="header" button [color]="color" [lines]="lines">
|
|
105
|
+
<ion-item slot="header" button [color]="color()" [lines]="lines()">
|
|
77
106
|
@if (isCollapsed()) {
|
|
78
107
|
<ion-input
|
|
79
108
|
readonly
|
|
80
109
|
[labelPlacement]="isCollapsed() ? 'stacked' : ''"
|
|
81
|
-
[label]="label || ('IDEA_UNCOMMON.ADDRESS.COMPLETE_ADDRESS' | translate)"
|
|
110
|
+
[label]="label() || ('IDEA_UNCOMMON.ADDRESS.COMPLETE_ADDRESS' | translate)"
|
|
82
111
|
[title]="'IDEA_UNCOMMON.ADDRESS.COMPLETE_ADDRESS_HINT' | translate"
|
|
83
|
-
[placeholder]="placeholder"
|
|
112
|
+
[placeholder]="placeholder()"
|
|
84
113
|
[value]="address.getFullAddress()"
|
|
85
114
|
(ionChange)="addressChange.emit(address)"
|
|
86
115
|
/>
|
|
87
116
|
}
|
|
88
117
|
</ion-item>
|
|
89
118
|
<ion-list slot="content">
|
|
90
|
-
@if (showContact) {
|
|
91
|
-
<ion-item [color]="color">
|
|
119
|
+
@if (showContact()) {
|
|
120
|
+
<ion-item [color]="color()">
|
|
92
121
|
<ion-input
|
|
93
122
|
autocomplete="new"
|
|
94
123
|
labelPlacement="stacked"
|
|
95
124
|
[label]="'IDEA_UNCOMMON.ADDRESS.CONTACT' | translate"
|
|
96
|
-
[disabled]="!editMode"
|
|
125
|
+
[disabled]="!editMode()"
|
|
97
126
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.CONTACT_HINT' | translate"
|
|
98
127
|
[title]="'IDEA_UNCOMMON.ADDRESS.CONTACT_HINT' | translate"
|
|
99
128
|
[(ngModel)]="address.contact"
|
|
@@ -101,13 +130,13 @@ class IDEAAddressComponent {
|
|
|
101
130
|
/>
|
|
102
131
|
</ion-item>
|
|
103
132
|
}
|
|
104
|
-
@if (showEmail) {
|
|
105
|
-
<ion-item [color]="color">
|
|
133
|
+
@if (showEmail()) {
|
|
134
|
+
<ion-item [color]="color()">
|
|
106
135
|
<ion-input
|
|
107
136
|
autocomplete="new"
|
|
108
137
|
labelPlacement="stacked"
|
|
109
138
|
[label]="'IDEA_UNCOMMON.ADDRESS.EMAIL' | translate"
|
|
110
|
-
[disabled]="!editMode"
|
|
139
|
+
[disabled]="!editMode()"
|
|
111
140
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.EMAIL_HINT' | translate"
|
|
112
141
|
[title]="'IDEA_UNCOMMON.ADDRESS.EMAIL_HINT' | translate"
|
|
113
142
|
[(ngModel)]="address.email"
|
|
@@ -115,13 +144,13 @@ class IDEAAddressComponent {
|
|
|
115
144
|
/>
|
|
116
145
|
</ion-item>
|
|
117
146
|
}
|
|
118
|
-
@if (showPhone) {
|
|
119
|
-
<ion-item [color]="color">
|
|
147
|
+
@if (showPhone()) {
|
|
148
|
+
<ion-item [color]="color()">
|
|
120
149
|
<ion-input
|
|
121
150
|
autocomplete="new"
|
|
122
151
|
labelPlacement="stacked"
|
|
123
152
|
[label]="'IDEA_UNCOMMON.ADDRESS.PHONE' | translate"
|
|
124
|
-
[disabled]="!editMode"
|
|
153
|
+
[disabled]="!editMode()"
|
|
125
154
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.PHONE_HINT' | translate"
|
|
126
155
|
[title]="'IDEA_UNCOMMON.ADDRESS.PHONE_HINT' | translate"
|
|
127
156
|
[(ngModel)]="address.phone"
|
|
@@ -129,11 +158,11 @@ class IDEAAddressComponent {
|
|
|
129
158
|
/>
|
|
130
159
|
</ion-item>
|
|
131
160
|
}
|
|
132
|
-
<ion-item [color]="color">
|
|
161
|
+
<ion-item [color]="color()">
|
|
133
162
|
<ion-input
|
|
134
163
|
autocomplete="new"
|
|
135
164
|
labelPlacement="stacked"
|
|
136
|
-
[disabled]="!editMode"
|
|
165
|
+
[disabled]="!editMode()"
|
|
137
166
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.ADDRESS_HINT' | translate"
|
|
138
167
|
[title]="'IDEA_UNCOMMON.ADDRESS.ADDRESS_HINT' | translate"
|
|
139
168
|
[(ngModel)]="address.address"
|
|
@@ -141,19 +170,19 @@ class IDEAAddressComponent {
|
|
|
141
170
|
>
|
|
142
171
|
<div slot="label">
|
|
143
172
|
{{ 'IDEA_UNCOMMON.ADDRESS.ADDRESS' | translate }}
|
|
144
|
-
@if (editMode && obligatory) {
|
|
173
|
+
@if (editMode() && obligatory()) {
|
|
145
174
|
<ion-text class="obligatoryDot" />
|
|
146
175
|
}
|
|
147
176
|
</div>
|
|
148
177
|
</ion-input>
|
|
149
178
|
</ion-item>
|
|
150
|
-
@if (showAddress2) {
|
|
151
|
-
<ion-item [color]="color">
|
|
179
|
+
@if (showAddress2()) {
|
|
180
|
+
<ion-item [color]="color()">
|
|
152
181
|
<ion-input
|
|
153
182
|
autocomplete="new"
|
|
154
183
|
labelPlacement="stacked"
|
|
155
184
|
[label]="'IDEA_UNCOMMON.ADDRESS.ADDRESS2' | translate"
|
|
156
|
-
[disabled]="!editMode"
|
|
185
|
+
[disabled]="!editMode()"
|
|
157
186
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.ADDRESS2_HINT' | translate"
|
|
158
187
|
[title]="'IDEA_UNCOMMON.ADDRESS.ADDRESS2_HINT' | translate"
|
|
159
188
|
[(ngModel)]="address.address2"
|
|
@@ -161,22 +190,22 @@ class IDEAAddressComponent {
|
|
|
161
190
|
/>
|
|
162
191
|
</ion-item>
|
|
163
192
|
}
|
|
164
|
-
<ion-item [color]="color">
|
|
193
|
+
<ion-item [color]="color()">
|
|
165
194
|
<ion-input
|
|
166
195
|
autocomplete="new"
|
|
167
196
|
labelPlacement="stacked"
|
|
168
197
|
[label]="'IDEA_UNCOMMON.ADDRESS.POSTCODE' | translate"
|
|
169
|
-
[disabled]="!editMode"
|
|
198
|
+
[disabled]="!editMode()"
|
|
170
199
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.POSTCODE_HINT' | translate"
|
|
171
200
|
[title]="'IDEA_UNCOMMON.ADDRESS.POSTCODE_HINT' | translate"
|
|
172
201
|
[(ngModel)]="address.postcode"
|
|
173
202
|
(ionChange)="addressChange.emit(address)"
|
|
174
203
|
/>
|
|
175
204
|
</ion-item>
|
|
176
|
-
<ion-item [color]="color">
|
|
205
|
+
<ion-item [color]="color()">
|
|
177
206
|
<ion-input
|
|
178
207
|
autocomplete="new"
|
|
179
|
-
[disabled]="!editMode"
|
|
208
|
+
[disabled]="!editMode()"
|
|
180
209
|
labelPlacement="stacked"
|
|
181
210
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.CITY_HINT' | translate"
|
|
182
211
|
[title]="'IDEA_UNCOMMON.ADDRESS.CITY_HINT' | translate"
|
|
@@ -185,18 +214,18 @@ class IDEAAddressComponent {
|
|
|
185
214
|
>
|
|
186
215
|
<div slot="label">
|
|
187
216
|
{{ 'IDEA_UNCOMMON.ADDRESS.CITY' | translate }}
|
|
188
|
-
@if (editMode && obligatory) {
|
|
217
|
+
@if (editMode() && obligatory()) {
|
|
189
218
|
<ion-text class="obligatoryDot" />
|
|
190
219
|
}
|
|
191
220
|
</div>
|
|
192
221
|
</ion-input>
|
|
193
222
|
</ion-item>
|
|
194
|
-
<ion-item [color]="color">
|
|
223
|
+
<ion-item [color]="color()">
|
|
195
224
|
<ion-input
|
|
196
225
|
autocomplete="new"
|
|
197
226
|
labelPlacement="stacked"
|
|
198
227
|
[label]="'IDEA_UNCOMMON.ADDRESS.PROVINCE' | translate"
|
|
199
|
-
[disabled]="!editMode"
|
|
228
|
+
[disabled]="!editMode()"
|
|
200
229
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.PROVINCE_HINT' | translate"
|
|
201
230
|
[title]="'IDEA_UNCOMMON.ADDRESS.PROVINCE_HINT' | translate"
|
|
202
231
|
[(ngModel)]="address.province"
|
|
@@ -204,28 +233,27 @@ class IDEAAddressComponent {
|
|
|
204
233
|
/>
|
|
205
234
|
</ion-item>
|
|
206
235
|
<idea-select
|
|
207
|
-
[color]="color"
|
|
236
|
+
[color]="color()"
|
|
208
237
|
[data]="countriesSuggestions"
|
|
209
238
|
[label]="'IDEA_UNCOMMON.ADDRESS.COUNTRY' | translate"
|
|
210
|
-
[lines]="editMode ? lines : null"
|
|
239
|
+
[lines]="editMode() ? lines() : null"
|
|
211
240
|
[description]="getCountryName(address.country)"
|
|
212
241
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.COUNTRY_HINT' | translate"
|
|
213
242
|
[searchPlaceholder]="'IDEA_UNCOMMON.ADDRESS.COUNTRY_HINT' | translate"
|
|
214
243
|
[hideIdFromUI]="true"
|
|
215
244
|
[avoidAutoSelection]="true"
|
|
216
|
-
[disabled]="!editMode"
|
|
245
|
+
[disabled]="!editMode()"
|
|
217
246
|
(select)="setCountryFromSuggestion($event)"
|
|
218
247
|
/>
|
|
219
248
|
</ion-list>
|
|
220
249
|
</ion-accordion>
|
|
221
250
|
</ion-accordion-group>
|
|
222
251
|
}
|
|
223
|
-
`, isInline: true, styles: ["ion-item[slot=header] ion-input{--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent}ion-list[slot=content]{padding-top:0;padding-left:20px}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
252
|
+
`, isInline: true, styles: ["ion-item[slot=header] ion-input{--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent}ion-list[slot=content]{padding-top:0;padding-left:20px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IDEASelectComponent, selector: "idea-select", inputs: ["description", "data", "dataProvider", "label", "icon", "iconColor", "placeholder", "searchPlaceholder", "noElementsFoundText", "disabled", "tappableWhenDisabled", "obligatory", "lines", "color", "allowUnlistedValues", "allowUnlistedValuesPrefix", "sortData", "clearValueAfterSelection", "hideIdFromUI", "hideClearButton", "mustChoose", "category1", "category2", "showCategoriesFilters", "avoidAutoSelection"], outputs: ["select", "iconSelect", "selectWhenDisabled"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonAccordion, selector: "ion-accordion", inputs: ["disabled", "mode", "readonly", "toggleIcon", "toggleIconSlot", "value"] }, { kind: "component", type: IonAccordionGroup, selector: "ion-accordion-group", inputs: ["animated", "disabled", "expand", "mode", "multiple", "readonly", "value"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
224
253
|
}
|
|
225
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
254
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAddressComponent, decorators: [{
|
|
226
255
|
type: Component,
|
|
227
256
|
args: [{ selector: 'idea-address', imports: [
|
|
228
|
-
CommonModule,
|
|
229
257
|
FormsModule,
|
|
230
258
|
IDEATranslatePipe,
|
|
231
259
|
IDEASelectComponent,
|
|
@@ -235,31 +263,31 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
235
263
|
IonItem,
|
|
236
264
|
IonAccordion,
|
|
237
265
|
IonAccordionGroup
|
|
238
|
-
], template: `
|
|
266
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
239
267
|
@if (address) {
|
|
240
268
|
<ion-accordion-group #accordion>
|
|
241
269
|
<ion-accordion value="open">
|
|
242
|
-
<ion-item slot="header" button [color]="color" [lines]="lines">
|
|
270
|
+
<ion-item slot="header" button [color]="color()" [lines]="lines()">
|
|
243
271
|
@if (isCollapsed()) {
|
|
244
272
|
<ion-input
|
|
245
273
|
readonly
|
|
246
274
|
[labelPlacement]="isCollapsed() ? 'stacked' : ''"
|
|
247
|
-
[label]="label || ('IDEA_UNCOMMON.ADDRESS.COMPLETE_ADDRESS' | translate)"
|
|
275
|
+
[label]="label() || ('IDEA_UNCOMMON.ADDRESS.COMPLETE_ADDRESS' | translate)"
|
|
248
276
|
[title]="'IDEA_UNCOMMON.ADDRESS.COMPLETE_ADDRESS_HINT' | translate"
|
|
249
|
-
[placeholder]="placeholder"
|
|
277
|
+
[placeholder]="placeholder()"
|
|
250
278
|
[value]="address.getFullAddress()"
|
|
251
279
|
(ionChange)="addressChange.emit(address)"
|
|
252
280
|
/>
|
|
253
281
|
}
|
|
254
282
|
</ion-item>
|
|
255
283
|
<ion-list slot="content">
|
|
256
|
-
@if (showContact) {
|
|
257
|
-
<ion-item [color]="color">
|
|
284
|
+
@if (showContact()) {
|
|
285
|
+
<ion-item [color]="color()">
|
|
258
286
|
<ion-input
|
|
259
287
|
autocomplete="new"
|
|
260
288
|
labelPlacement="stacked"
|
|
261
289
|
[label]="'IDEA_UNCOMMON.ADDRESS.CONTACT' | translate"
|
|
262
|
-
[disabled]="!editMode"
|
|
290
|
+
[disabled]="!editMode()"
|
|
263
291
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.CONTACT_HINT' | translate"
|
|
264
292
|
[title]="'IDEA_UNCOMMON.ADDRESS.CONTACT_HINT' | translate"
|
|
265
293
|
[(ngModel)]="address.contact"
|
|
@@ -267,13 +295,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
267
295
|
/>
|
|
268
296
|
</ion-item>
|
|
269
297
|
}
|
|
270
|
-
@if (showEmail) {
|
|
271
|
-
<ion-item [color]="color">
|
|
298
|
+
@if (showEmail()) {
|
|
299
|
+
<ion-item [color]="color()">
|
|
272
300
|
<ion-input
|
|
273
301
|
autocomplete="new"
|
|
274
302
|
labelPlacement="stacked"
|
|
275
303
|
[label]="'IDEA_UNCOMMON.ADDRESS.EMAIL' | translate"
|
|
276
|
-
[disabled]="!editMode"
|
|
304
|
+
[disabled]="!editMode()"
|
|
277
305
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.EMAIL_HINT' | translate"
|
|
278
306
|
[title]="'IDEA_UNCOMMON.ADDRESS.EMAIL_HINT' | translate"
|
|
279
307
|
[(ngModel)]="address.email"
|
|
@@ -281,13 +309,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
281
309
|
/>
|
|
282
310
|
</ion-item>
|
|
283
311
|
}
|
|
284
|
-
@if (showPhone) {
|
|
285
|
-
<ion-item [color]="color">
|
|
312
|
+
@if (showPhone()) {
|
|
313
|
+
<ion-item [color]="color()">
|
|
286
314
|
<ion-input
|
|
287
315
|
autocomplete="new"
|
|
288
316
|
labelPlacement="stacked"
|
|
289
317
|
[label]="'IDEA_UNCOMMON.ADDRESS.PHONE' | translate"
|
|
290
|
-
[disabled]="!editMode"
|
|
318
|
+
[disabled]="!editMode()"
|
|
291
319
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.PHONE_HINT' | translate"
|
|
292
320
|
[title]="'IDEA_UNCOMMON.ADDRESS.PHONE_HINT' | translate"
|
|
293
321
|
[(ngModel)]="address.phone"
|
|
@@ -295,11 +323,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
295
323
|
/>
|
|
296
324
|
</ion-item>
|
|
297
325
|
}
|
|
298
|
-
<ion-item [color]="color">
|
|
326
|
+
<ion-item [color]="color()">
|
|
299
327
|
<ion-input
|
|
300
328
|
autocomplete="new"
|
|
301
329
|
labelPlacement="stacked"
|
|
302
|
-
[disabled]="!editMode"
|
|
330
|
+
[disabled]="!editMode()"
|
|
303
331
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.ADDRESS_HINT' | translate"
|
|
304
332
|
[title]="'IDEA_UNCOMMON.ADDRESS.ADDRESS_HINT' | translate"
|
|
305
333
|
[(ngModel)]="address.address"
|
|
@@ -307,19 +335,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
307
335
|
>
|
|
308
336
|
<div slot="label">
|
|
309
337
|
{{ 'IDEA_UNCOMMON.ADDRESS.ADDRESS' | translate }}
|
|
310
|
-
@if (editMode && obligatory) {
|
|
338
|
+
@if (editMode() && obligatory()) {
|
|
311
339
|
<ion-text class="obligatoryDot" />
|
|
312
340
|
}
|
|
313
341
|
</div>
|
|
314
342
|
</ion-input>
|
|
315
343
|
</ion-item>
|
|
316
|
-
@if (showAddress2) {
|
|
317
|
-
<ion-item [color]="color">
|
|
344
|
+
@if (showAddress2()) {
|
|
345
|
+
<ion-item [color]="color()">
|
|
318
346
|
<ion-input
|
|
319
347
|
autocomplete="new"
|
|
320
348
|
labelPlacement="stacked"
|
|
321
349
|
[label]="'IDEA_UNCOMMON.ADDRESS.ADDRESS2' | translate"
|
|
322
|
-
[disabled]="!editMode"
|
|
350
|
+
[disabled]="!editMode()"
|
|
323
351
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.ADDRESS2_HINT' | translate"
|
|
324
352
|
[title]="'IDEA_UNCOMMON.ADDRESS.ADDRESS2_HINT' | translate"
|
|
325
353
|
[(ngModel)]="address.address2"
|
|
@@ -327,22 +355,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
327
355
|
/>
|
|
328
356
|
</ion-item>
|
|
329
357
|
}
|
|
330
|
-
<ion-item [color]="color">
|
|
358
|
+
<ion-item [color]="color()">
|
|
331
359
|
<ion-input
|
|
332
360
|
autocomplete="new"
|
|
333
361
|
labelPlacement="stacked"
|
|
334
362
|
[label]="'IDEA_UNCOMMON.ADDRESS.POSTCODE' | translate"
|
|
335
|
-
[disabled]="!editMode"
|
|
363
|
+
[disabled]="!editMode()"
|
|
336
364
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.POSTCODE_HINT' | translate"
|
|
337
365
|
[title]="'IDEA_UNCOMMON.ADDRESS.POSTCODE_HINT' | translate"
|
|
338
366
|
[(ngModel)]="address.postcode"
|
|
339
367
|
(ionChange)="addressChange.emit(address)"
|
|
340
368
|
/>
|
|
341
369
|
</ion-item>
|
|
342
|
-
<ion-item [color]="color">
|
|
370
|
+
<ion-item [color]="color()">
|
|
343
371
|
<ion-input
|
|
344
372
|
autocomplete="new"
|
|
345
|
-
[disabled]="!editMode"
|
|
373
|
+
[disabled]="!editMode()"
|
|
346
374
|
labelPlacement="stacked"
|
|
347
375
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.CITY_HINT' | translate"
|
|
348
376
|
[title]="'IDEA_UNCOMMON.ADDRESS.CITY_HINT' | translate"
|
|
@@ -351,18 +379,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
351
379
|
>
|
|
352
380
|
<div slot="label">
|
|
353
381
|
{{ 'IDEA_UNCOMMON.ADDRESS.CITY' | translate }}
|
|
354
|
-
@if (editMode && obligatory) {
|
|
382
|
+
@if (editMode() && obligatory()) {
|
|
355
383
|
<ion-text class="obligatoryDot" />
|
|
356
384
|
}
|
|
357
385
|
</div>
|
|
358
386
|
</ion-input>
|
|
359
387
|
</ion-item>
|
|
360
|
-
<ion-item [color]="color">
|
|
388
|
+
<ion-item [color]="color()">
|
|
361
389
|
<ion-input
|
|
362
390
|
autocomplete="new"
|
|
363
391
|
labelPlacement="stacked"
|
|
364
392
|
[label]="'IDEA_UNCOMMON.ADDRESS.PROVINCE' | translate"
|
|
365
|
-
[disabled]="!editMode"
|
|
393
|
+
[disabled]="!editMode()"
|
|
366
394
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.PROVINCE_HINT' | translate"
|
|
367
395
|
[title]="'IDEA_UNCOMMON.ADDRESS.PROVINCE_HINT' | translate"
|
|
368
396
|
[(ngModel)]="address.province"
|
|
@@ -370,16 +398,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
370
398
|
/>
|
|
371
399
|
</ion-item>
|
|
372
400
|
<idea-select
|
|
373
|
-
[color]="color"
|
|
401
|
+
[color]="color()"
|
|
374
402
|
[data]="countriesSuggestions"
|
|
375
403
|
[label]="'IDEA_UNCOMMON.ADDRESS.COUNTRY' | translate"
|
|
376
|
-
[lines]="editMode ? lines : null"
|
|
404
|
+
[lines]="editMode() ? lines() : null"
|
|
377
405
|
[description]="getCountryName(address.country)"
|
|
378
406
|
[placeholder]="'IDEA_UNCOMMON.ADDRESS.COUNTRY_HINT' | translate"
|
|
379
407
|
[searchPlaceholder]="'IDEA_UNCOMMON.ADDRESS.COUNTRY_HINT' | translate"
|
|
380
408
|
[hideIdFromUI]="true"
|
|
381
409
|
[avoidAutoSelection]="true"
|
|
382
|
-
[disabled]="!editMode"
|
|
410
|
+
[disabled]="!editMode()"
|
|
383
411
|
(select)="setCountryFromSuggestion($event)"
|
|
384
412
|
/>
|
|
385
413
|
</ion-list>
|
|
@@ -389,34 +417,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
389
417
|
`, styles: ["ion-item[slot=header] ion-input{--highlight-color-focused: transparent;--highlight-color-valid: transparent;--highlight-color-invalid: transparent}ion-list[slot=content]{padding-top:0;padding-left:20px}\n"] }]
|
|
390
418
|
}], propDecorators: { address: [{
|
|
391
419
|
type: Input
|
|
392
|
-
}], addressChange: [{
|
|
393
|
-
type: Output
|
|
394
|
-
}], showContact: [{
|
|
395
|
-
type: Input
|
|
396
|
-
}], showAddress2: [{
|
|
397
|
-
type: Input
|
|
398
|
-
}], showPhone: [{
|
|
399
|
-
type: Input
|
|
400
|
-
}], showEmail: [{
|
|
401
|
-
type: Input
|
|
402
|
-
}], editMode: [{
|
|
403
|
-
type: Input
|
|
404
|
-
}], obligatory: [{
|
|
405
|
-
type: Input
|
|
406
|
-
}], lines: [{
|
|
407
|
-
type: Input
|
|
408
|
-
}], color: [{
|
|
409
|
-
type: Input
|
|
410
|
-
}], label: [{
|
|
411
|
-
type: Input
|
|
412
|
-
}], placeholder: [{
|
|
413
|
-
type: Input
|
|
414
|
-
}], openByDefault: [{
|
|
415
|
-
type: Input
|
|
416
|
-
}], accordion: [{
|
|
417
|
-
type: ViewChild,
|
|
418
|
-
args: ['accordion']
|
|
419
|
-
}] } });
|
|
420
|
+
}], addressChange: [{ type: i0.Output, args: ["addressChange"] }], showContact: [{ type: i0.Input, args: [{ isSignal: true, alias: "showContact", required: false }] }], showAddress2: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAddress2", required: false }] }], showPhone: [{ type: i0.Input, args: [{ isSignal: true, alias: "showPhone", required: false }] }], showEmail: [{ type: i0.Input, args: [{ isSignal: true, alias: "showEmail", required: false }] }], editMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "editMode", required: false }] }], obligatory: [{ type: i0.Input, args: [{ isSignal: true, alias: "obligatory", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], openByDefault: [{ type: i0.Input, args: [{ isSignal: true, alias: "openByDefault", required: false }] }], accordion: [{ type: i0.ViewChild, args: ['accordion', { isSignal: true }] }] } });
|
|
420
421
|
|
|
421
422
|
class IDEAErrorReportingService {
|
|
422
423
|
constructor() {
|
|
@@ -473,10 +474,10 @@ class IDEAErrorReportingService {
|
|
|
473
474
|
userAgent: navigator.userAgent
|
|
474
475
|
});
|
|
475
476
|
}
|
|
476
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
477
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
477
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAErrorReportingService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
478
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAErrorReportingService, providedIn: 'root' }); }
|
|
478
479
|
}
|
|
479
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
480
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAErrorReportingService, decorators: [{
|
|
480
481
|
type: Injectable,
|
|
481
482
|
args: [{ providedIn: 'root' }]
|
|
482
483
|
}], ctorParameters: () => [] });
|
|
@@ -520,10 +521,10 @@ class IDEATinCanService {
|
|
|
520
521
|
clear() {
|
|
521
522
|
this.data = {};
|
|
522
523
|
}
|
|
523
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
524
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
524
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEATinCanService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
525
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEATinCanService, providedIn: 'root' }); }
|
|
525
526
|
}
|
|
526
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
527
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEATinCanService, decorators: [{
|
|
527
528
|
type: Injectable,
|
|
528
529
|
args: [{ providedIn: 'root' }]
|
|
529
530
|
}], ctorParameters: () => [] });
|
|
@@ -579,10 +580,10 @@ class IDEAOfflineService {
|
|
|
579
580
|
this._isOffline = !status.connected;
|
|
580
581
|
return status.connected;
|
|
581
582
|
}
|
|
582
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
583
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
583
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
584
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineService, providedIn: 'root' }); }
|
|
584
585
|
}
|
|
585
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
586
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineService, decorators: [{
|
|
586
587
|
type: Injectable,
|
|
587
588
|
args: [{ providedIn: 'root' }]
|
|
588
589
|
}], ctorParameters: () => [] });
|
|
@@ -974,10 +975,10 @@ class IDEAAWSAPIService {
|
|
|
974
975
|
deleteResource(resource, options) {
|
|
975
976
|
return this.request(resource, 'DELETE', options);
|
|
976
977
|
}
|
|
977
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
978
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
978
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAWSAPIService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
979
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAWSAPIService, providedIn: 'root' }); }
|
|
979
980
|
}
|
|
980
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
981
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAWSAPIService, decorators: [{
|
|
981
982
|
type: Injectable,
|
|
982
983
|
args: [{ providedIn: 'root' }]
|
|
983
984
|
}], ctorParameters: () => [] });
|
|
@@ -1021,27 +1022,34 @@ class IDEAOldAttachmentsComponent {
|
|
|
1021
1022
|
/**
|
|
1022
1023
|
* The team from which we want to load the resources. Default: try to guess current team.
|
|
1023
1024
|
*/
|
|
1025
|
+
// TODO: Skipped for migration because:
|
|
1026
|
+
// Your application code writes to the input. This prevents migration.
|
|
1024
1027
|
this.team = null;
|
|
1025
1028
|
/**
|
|
1026
1029
|
* The path to the online API resource, as an array. Don't include the team. E.g. `['entities', entityId]`.
|
|
1027
1030
|
*/
|
|
1028
|
-
this.pathResource = []
|
|
1031
|
+
this.pathResource = input([], /* @ts-ignore */
|
|
1032
|
+
...(ngDevMode ? [{ debugName: "pathResource" }] : /* istanbul ignore next */ []));
|
|
1029
1033
|
/**
|
|
1030
1034
|
* The array in which we want to add/remove attachments.
|
|
1031
1035
|
*/
|
|
1032
|
-
this.attachments = null
|
|
1036
|
+
this.attachments = input(null, /* @ts-ignore */
|
|
1037
|
+
...(ngDevMode ? [{ debugName: "attachments" }] : /* istanbul ignore next */ []));
|
|
1033
1038
|
/**
|
|
1034
1039
|
* Regulate the mode (view/edit).
|
|
1035
1040
|
*/
|
|
1041
|
+
// TODO: Skipped for migration because: This input is used in a control flow expression (e.g. `@if` or `*ngIf`) and migrating would break narrowing currently.
|
|
1036
1042
|
this.editMode = false;
|
|
1037
1043
|
/**
|
|
1038
1044
|
* Show errors as reported from the parent component.
|
|
1039
1045
|
*/
|
|
1040
|
-
this.errors = new Set()
|
|
1046
|
+
this.errors = input(new Set(), /* @ts-ignore */
|
|
1047
|
+
...(ngDevMode ? [{ debugName: "errors" }] : /* istanbul ignore next */ []));
|
|
1041
1048
|
/**
|
|
1042
1049
|
* The lines attribute of the item.
|
|
1043
1050
|
*/
|
|
1044
|
-
this.lines = 'none'
|
|
1051
|
+
this.lines = input('none', /* @ts-ignore */
|
|
1052
|
+
...(ngDevMode ? [{ debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
1045
1053
|
/**
|
|
1046
1054
|
* Stack of errors from the last upload.
|
|
1047
1055
|
*/
|
|
@@ -1051,14 +1059,15 @@ class IDEAOldAttachmentsComponent {
|
|
|
1051
1059
|
// if the team isn't specified, try to guess it in the usual IDEA's paths
|
|
1052
1060
|
this.team = this.team || this._tc.get('membership').teamId || this._tc.get('teamId');
|
|
1053
1061
|
this.requestURL = `teams/${this.team}/`;
|
|
1054
|
-
|
|
1055
|
-
|
|
1062
|
+
const pathResource = this.pathResource();
|
|
1063
|
+
if (pathResource && pathResource.length)
|
|
1064
|
+
this.requestURL = this.requestURL.concat(pathResource.filter(x => x).join('/'));
|
|
1056
1065
|
}
|
|
1057
1066
|
isCapacitor() {
|
|
1058
1067
|
return this._platform.is('capacitor');
|
|
1059
1068
|
}
|
|
1060
1069
|
hasFieldAnError(field) {
|
|
1061
|
-
return this.errors.has(field);
|
|
1070
|
+
return this.errors().has(field);
|
|
1062
1071
|
}
|
|
1063
1072
|
browseFiles() {
|
|
1064
1073
|
document.getElementById('attachmentPicker').click();
|
|
@@ -1102,7 +1111,7 @@ class IDEAOldAttachmentsComponent {
|
|
|
1102
1111
|
content = await heic2any({ blob: content, toType: 'image/jpeg' });
|
|
1103
1112
|
}
|
|
1104
1113
|
const attachment = new Attachment({ name, format });
|
|
1105
|
-
this.attachments.push(attachment);
|
|
1114
|
+
this.attachments().push(attachment);
|
|
1106
1115
|
try {
|
|
1107
1116
|
const signedURL = await this._api.patchResource(this.requestURL, {
|
|
1108
1117
|
body: { action: 'ATTACHMENTS_PUT', attachmentId: attachment.attachmentId }
|
|
@@ -1117,9 +1126,9 @@ class IDEAOldAttachmentsComponent {
|
|
|
1117
1126
|
}
|
|
1118
1127
|
}
|
|
1119
1128
|
removeAttachment(attachment) {
|
|
1120
|
-
const index = this.attachments.indexOf(attachment);
|
|
1129
|
+
const index = this.attachments().indexOf(attachment);
|
|
1121
1130
|
if (index !== -1)
|
|
1122
|
-
this.attachments.splice(index, 1);
|
|
1131
|
+
this.attachments().splice(index, 1);
|
|
1123
1132
|
}
|
|
1124
1133
|
async openAttachment(attachment) {
|
|
1125
1134
|
try {
|
|
@@ -1148,14 +1157,14 @@ class IDEAOldAttachmentsComponent {
|
|
|
1148
1157
|
return 'help';
|
|
1149
1158
|
}
|
|
1150
1159
|
}
|
|
1151
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1152
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1153
|
-
@for (att of attachments; track att; let index = $index; let odd = $odd) {
|
|
1160
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOldAttachmentsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1161
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAOldAttachmentsComponent, isStandalone: true, selector: "idea-old-attachments", inputs: { team: { classPropertyName: "team", publicName: "team", isSignal: false, isRequired: false, transformFunction: null }, pathResource: { classPropertyName: "pathResource", publicName: "pathResource", isSignal: true, isRequired: false, transformFunction: null }, attachments: { classPropertyName: "attachments", publicName: "attachments", isSignal: true, isRequired: false, transformFunction: null }, editMode: { classPropertyName: "editMode", publicName: "editMode", isSignal: false, isRequired: false, transformFunction: null }, errors: { classPropertyName: "errors", publicName: "errors", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
1162
|
+
@for (att of attachments(); track att; let index = $index; let odd = $odd) {
|
|
1154
1163
|
<ion-item
|
|
1155
1164
|
class="attachments"
|
|
1156
1165
|
[class.fieldHasError]="hasFieldAnError('attachments[' + index + '].attachmentId')"
|
|
1157
1166
|
[class.odd]="odd"
|
|
1158
|
-
[lines]="lines"
|
|
1167
|
+
[lines]="lines()"
|
|
1159
1168
|
>
|
|
1160
1169
|
@if (att.attachmentId && _offline.isOnline()) {
|
|
1161
1170
|
<ion-button fill="clear" size="small" slot="start" (click)="openAttachment(att)">
|
|
@@ -1196,7 +1205,7 @@ class IDEAOldAttachmentsComponent {
|
|
|
1196
1205
|
</ion-item>
|
|
1197
1206
|
}
|
|
1198
1207
|
<!----->
|
|
1199
|
-
@if (!editMode && !attachments?.length) {
|
|
1208
|
+
@if (!editMode && !attachments()?.length) {
|
|
1200
1209
|
<ion-item lines="none" class="noAttachments">
|
|
1201
1210
|
<ion-label>
|
|
1202
1211
|
{{ 'IDEA_TEAMS.ATTACHMENTS.NO_ATTACHMENT' | translate }}
|
|
@@ -1207,7 +1216,7 @@ class IDEAOldAttachmentsComponent {
|
|
|
1207
1216
|
@if (editMode) {
|
|
1208
1217
|
<div>
|
|
1209
1218
|
@for (err of uploadErrors; track err) {
|
|
1210
|
-
<ion-item class="attachments" [lines]="lines">
|
|
1219
|
+
<ion-item class="attachments" [lines]="lines()">
|
|
1211
1220
|
<ion-icon name="alert-circle" slot="start" color="danger" />
|
|
1212
1221
|
<ion-label color="danger">
|
|
1213
1222
|
{{ err }}
|
|
@@ -1247,17 +1256,17 @@ class IDEAOldAttachmentsComponent {
|
|
|
1247
1256
|
}
|
|
1248
1257
|
</ion-item>
|
|
1249
1258
|
}
|
|
1250
|
-
`, isInline: true, styles: [".attachments ion-button[slot=start],.attachments ion-icon[slot=start]{margin-right:10px}.attachments .loadingWarning{font-style:italic;font-size:.8em;color:var(--ion-color-medium)}.noAttachments{font-style:italic}.selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { 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: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }] }); }
|
|
1259
|
+
`, isInline: true, styles: [".attachments ion-button[slot=start],.attachments ion-icon[slot=start]{margin-right:10px}.attachments .loadingWarning{font-style:italic;font-size:.8em;color:var(--ion-color-medium)}.noAttachments{font-style:italic}.selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { 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: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1251
1260
|
}
|
|
1252
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1261
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOldAttachmentsComponent, decorators: [{
|
|
1253
1262
|
type: Component,
|
|
1254
|
-
args: [{ selector: 'idea-old-attachments', imports: [FormsModule, IDEATranslatePipe, IonItem, IonButton, IonIcon, IonInput, IonLabel, IonSpinner], template: `
|
|
1255
|
-
@for (att of attachments; track att; let index = $index; let odd = $odd) {
|
|
1263
|
+
args: [{ selector: 'idea-old-attachments', imports: [FormsModule, IDEATranslatePipe, IonItem, IonButton, IonIcon, IonInput, IonLabel, IonSpinner], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
1264
|
+
@for (att of attachments(); track att; let index = $index; let odd = $odd) {
|
|
1256
1265
|
<ion-item
|
|
1257
1266
|
class="attachments"
|
|
1258
1267
|
[class.fieldHasError]="hasFieldAnError('attachments[' + index + '].attachmentId')"
|
|
1259
1268
|
[class.odd]="odd"
|
|
1260
|
-
[lines]="lines"
|
|
1269
|
+
[lines]="lines()"
|
|
1261
1270
|
>
|
|
1262
1271
|
@if (att.attachmentId && _offline.isOnline()) {
|
|
1263
1272
|
<ion-button fill="clear" size="small" slot="start" (click)="openAttachment(att)">
|
|
@@ -1298,7 +1307,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1298
1307
|
</ion-item>
|
|
1299
1308
|
}
|
|
1300
1309
|
<!----->
|
|
1301
|
-
@if (!editMode && !attachments?.length) {
|
|
1310
|
+
@if (!editMode && !attachments()?.length) {
|
|
1302
1311
|
<ion-item lines="none" class="noAttachments">
|
|
1303
1312
|
<ion-label>
|
|
1304
1313
|
{{ 'IDEA_TEAMS.ATTACHMENTS.NO_ATTACHMENT' | translate }}
|
|
@@ -1309,7 +1318,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1309
1318
|
@if (editMode) {
|
|
1310
1319
|
<div>
|
|
1311
1320
|
@for (err of uploadErrors; track err) {
|
|
1312
|
-
<ion-item class="attachments" [lines]="lines">
|
|
1321
|
+
<ion-item class="attachments" [lines]="lines()">
|
|
1313
1322
|
<ion-icon name="alert-circle" slot="start" color="danger" />
|
|
1314
1323
|
<ion-label color="danger">
|
|
1315
1324
|
{{ err }}
|
|
@@ -1352,17 +1361,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1352
1361
|
`, styles: [".attachments ion-button[slot=start],.attachments ion-icon[slot=start]{margin-right:10px}.attachments .loadingWarning{font-style:italic;font-size:.8em;color:var(--ion-color-medium)}.noAttachments{font-style:italic}.selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.selectable{cursor:pointer}\n"] }]
|
|
1353
1362
|
}], propDecorators: { team: [{
|
|
1354
1363
|
type: Input
|
|
1355
|
-
}], pathResource: [{
|
|
1356
|
-
type: Input
|
|
1357
|
-
}], attachments: [{
|
|
1358
|
-
type: Input
|
|
1359
|
-
}], editMode: [{
|
|
1364
|
+
}], pathResource: [{ type: i0.Input, args: [{ isSignal: true, alias: "pathResource", required: false }] }], attachments: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachments", required: false }] }], editMode: [{
|
|
1360
1365
|
type: Input
|
|
1361
|
-
}], errors: [{
|
|
1362
|
-
type: Input
|
|
1363
|
-
}], lines: [{
|
|
1364
|
-
type: Input
|
|
1365
|
-
}] } });
|
|
1366
|
+
}], errors: [{ type: i0.Input, args: [{ isSignal: true, alias: "errors", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }] } });
|
|
1366
1367
|
/**
|
|
1367
1368
|
* The possibile file types (formats).
|
|
1368
1369
|
*/
|
|
@@ -1383,6 +1384,7 @@ class IDEAAnnouncementComponent {
|
|
|
1383
1384
|
this._env = inject(IDEAEnvironment);
|
|
1384
1385
|
this._tc = inject(IDEATinCanService);
|
|
1385
1386
|
this._storage = inject(IDEAStorageService);
|
|
1387
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
1386
1388
|
this.storageKey = (this._env.idea.project || 'app').concat('_LAST_ANNOUNCEMENT');
|
|
1387
1389
|
this.color = 'dark';
|
|
1388
1390
|
}
|
|
@@ -1393,14 +1395,16 @@ class IDEAAnnouncementComponent {
|
|
|
1393
1395
|
const lastRead = await this._storage.get(this.storageKey);
|
|
1394
1396
|
if (!lastRead || this.announcement.content !== lastRead)
|
|
1395
1397
|
this.htmlContent = mdToHtml(this.announcement.content);
|
|
1398
|
+
this._cdr.markForCheck();
|
|
1396
1399
|
}
|
|
1397
1400
|
}
|
|
1398
1401
|
async markAsRead() {
|
|
1399
1402
|
await this._storage.set(this.storageKey, this.announcement.content);
|
|
1400
1403
|
this.htmlContent = null;
|
|
1404
|
+
this._cdr.markForCheck();
|
|
1401
1405
|
}
|
|
1402
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1403
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1406
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAnnouncementComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1407
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAAnnouncementComponent, isStandalone: true, selector: "idea-announcement", inputs: { color: "color" }, ngImport: i0, template: `
|
|
1404
1408
|
@if (htmlContent) {
|
|
1405
1409
|
<ion-card class="announcementCard" [color]="color">
|
|
1406
1410
|
<ion-card-content>
|
|
@@ -1413,13 +1417,14 @@ class IDEAAnnouncementComponent {
|
|
|
1413
1417
|
</ion-card-content>
|
|
1414
1418
|
</ion-card>
|
|
1415
1419
|
}
|
|
1416
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
1420
|
+
`, isInline: true, dependencies: [{ 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: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1417
1421
|
}
|
|
1418
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1422
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAnnouncementComponent, decorators: [{
|
|
1419
1423
|
type: Component,
|
|
1420
1424
|
args: [{
|
|
1421
1425
|
selector: 'idea-announcement',
|
|
1422
|
-
imports: [
|
|
1426
|
+
imports: [IDEATranslatePipe, IonButton, IonCardContent, IonCard],
|
|
1427
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1423
1428
|
template: `
|
|
1424
1429
|
@if (htmlContent) {
|
|
1425
1430
|
<ion-card class="announcementCard" [color]="color">
|
|
@@ -1447,21 +1452,67 @@ class IDEAColorPickerComponent {
|
|
|
1447
1452
|
/**
|
|
1448
1453
|
* The pickable colors.
|
|
1449
1454
|
*/
|
|
1450
|
-
this.colors = COLORS
|
|
1455
|
+
this.colors = input(COLORS, /* @ts-ignore */
|
|
1456
|
+
...(ngDevMode ? [{ debugName: "colors" }] : /* istanbul ignore next */ []));
|
|
1457
|
+
/**
|
|
1458
|
+
* The current color.
|
|
1459
|
+
*/
|
|
1460
|
+
this.current = input(/* @ts-ignore */
|
|
1461
|
+
...(ngDevMode ? [undefined, { debugName: "current" }] : /* istanbul ignore next */ []));
|
|
1462
|
+
/**
|
|
1463
|
+
* The label for the field.
|
|
1464
|
+
*/
|
|
1465
|
+
this.label = input(/* @ts-ignore */
|
|
1466
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
1467
|
+
/**
|
|
1468
|
+
* A placeholder for the field.
|
|
1469
|
+
*/
|
|
1470
|
+
this.placeholder = input(/* @ts-ignore */
|
|
1471
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
1472
|
+
/**
|
|
1473
|
+
* The icon for the field.
|
|
1474
|
+
*/
|
|
1475
|
+
this.icon = input(/* @ts-ignore */
|
|
1476
|
+
...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
1477
|
+
/**
|
|
1478
|
+
* The color of the icon.
|
|
1479
|
+
*/
|
|
1480
|
+
this.iconColor = input(/* @ts-ignore */
|
|
1481
|
+
...(ngDevMode ? [undefined, { debugName: "iconColor" }] : /* istanbul ignore next */ []));
|
|
1482
|
+
/**
|
|
1483
|
+
* If true, the component is disabled.
|
|
1484
|
+
*/
|
|
1485
|
+
this.disabled = input(/* @ts-ignore */
|
|
1486
|
+
...(ngDevMode ? [undefined, { debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
1487
|
+
/**
|
|
1488
|
+
* If true, the obligatory dot is shown.
|
|
1489
|
+
*/
|
|
1490
|
+
this.obligatory = input(/* @ts-ignore */
|
|
1491
|
+
...(ngDevMode ? [undefined, { debugName: "obligatory" }] : /* istanbul ignore next */ []));
|
|
1492
|
+
/**
|
|
1493
|
+
* Lines preferences for the item.
|
|
1494
|
+
*/
|
|
1495
|
+
this.lines = input(/* @ts-ignore */
|
|
1496
|
+
...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
1497
|
+
/**
|
|
1498
|
+
* The color for the component.
|
|
1499
|
+
*/
|
|
1500
|
+
this.color = input(/* @ts-ignore */
|
|
1501
|
+
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
1451
1502
|
/**
|
|
1452
1503
|
* On select event.
|
|
1453
1504
|
*/
|
|
1454
|
-
this.select =
|
|
1505
|
+
this.select = output();
|
|
1455
1506
|
/**
|
|
1456
1507
|
* Icon select.
|
|
1457
1508
|
*/
|
|
1458
|
-
this.iconSelect =
|
|
1509
|
+
this.iconSelect = output();
|
|
1459
1510
|
this._popover = inject(PopoverController);
|
|
1460
1511
|
}
|
|
1461
1512
|
async openPalette(event) {
|
|
1462
|
-
if (this.disabled)
|
|
1513
|
+
if (this.disabled())
|
|
1463
1514
|
return;
|
|
1464
|
-
const componentProps = { colors: this.colors, current: this.current };
|
|
1515
|
+
const componentProps = { colors: this.colors(), current: this.current() };
|
|
1465
1516
|
const popover = await this._popover.create({ component: ColorsPaletteComponent, componentProps, event });
|
|
1466
1517
|
popover.onDidDismiss().then(res => {
|
|
1467
1518
|
if (res && res.data)
|
|
@@ -1474,109 +1525,95 @@ class IDEAColorPickerComponent {
|
|
|
1474
1525
|
event.stopPropagation();
|
|
1475
1526
|
this.iconSelect.emit(event);
|
|
1476
1527
|
}
|
|
1477
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1478
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1528
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAColorPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1529
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAColorPickerComponent, isStandalone: true, selector: "idea-color-picker", inputs: { colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, obligatory: { classPropertyName: "obligatory", publicName: "obligatory", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "select", iconSelect: "iconSelect" }, ngImport: i0, template: `
|
|
1479
1530
|
<ion-item
|
|
1480
1531
|
class="colorPickerItem"
|
|
1481
|
-
[color]="color"
|
|
1482
|
-
[lines]="lines"
|
|
1483
|
-
[button]="!disabled"
|
|
1484
|
-
[title]="placeholder || ''"
|
|
1485
|
-
[class.withLabel]="label"
|
|
1532
|
+
[color]="color()"
|
|
1533
|
+
[lines]="lines()"
|
|
1534
|
+
[button]="!disabled()"
|
|
1535
|
+
[title]="placeholder() || ''"
|
|
1536
|
+
[class.withLabel]="label()"
|
|
1486
1537
|
(click)="openPalette($event)"
|
|
1487
1538
|
>
|
|
1488
|
-
@if (icon) {
|
|
1489
|
-
<ion-button fill="clear" slot="start" [color]="iconColor" (click)="doIconSelect($event)">
|
|
1490
|
-
<ion-icon [name]="icon" slot="icon-only" />
|
|
1539
|
+
@if (icon()) {
|
|
1540
|
+
<ion-button fill="clear" slot="start" [color]="iconColor()" (click)="doIconSelect($event)">
|
|
1541
|
+
<ion-icon [name]="icon()" slot="icon-only" />
|
|
1491
1542
|
</ion-button>
|
|
1492
1543
|
}
|
|
1493
|
-
@if (label) {
|
|
1494
|
-
<ion-label [class.selectable]="!disabled">
|
|
1495
|
-
{{ label }}
|
|
1496
|
-
@if (obligatory && !disabled) {
|
|
1544
|
+
@if (label()) {
|
|
1545
|
+
<ion-label [class.selectable]="!disabled()">
|
|
1546
|
+
{{ label() }}
|
|
1547
|
+
@if (obligatory() && !disabled()) {
|
|
1497
1548
|
<ion-text class="obligatoryDot" />
|
|
1498
1549
|
}
|
|
1499
1550
|
</ion-label>
|
|
1500
1551
|
}
|
|
1501
|
-
<ion-avatar slot="end" class="colorCircle" [style.background-color]="current" />
|
|
1502
|
-
@if (!disabled) {
|
|
1503
|
-
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
1552
|
+
<ion-avatar slot="end" class="colorCircle" [style.background-color]="current()" />
|
|
1553
|
+
@if (!disabled()) {
|
|
1554
|
+
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled()" />
|
|
1504
1555
|
}
|
|
1505
1556
|
</ion-item>
|
|
1506
|
-
`, isInline: true, styles: [".colorPickerItem{min-height:48px;height:auto}.colorPickerItem .placeholder{color:var(--ion-color-medium)}.colorPickerItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.selectItem.withLabel{min-height:58px;height:auto}.selectItem.withLabel .selectIcon{padding-top:25px}.selectItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}ion-avatar.colorCircle{width:20px;height:20px}\n"], dependencies: [{ kind: "
|
|
1557
|
+
`, isInline: true, styles: [".colorPickerItem{min-height:48px;height:auto}.colorPickerItem .placeholder{color:var(--ion-color-medium)}.colorPickerItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.selectItem.withLabel{min-height:58px;height:auto}.selectItem.withLabel .selectIcon{padding-top:25px}.selectItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}ion-avatar.colorCircle{width:20px;height:20px}\n"], dependencies: [{ kind: "component", type: IonAvatar, selector: "ion-avatar" }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1507
1558
|
}
|
|
1508
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1559
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAColorPickerComponent, decorators: [{
|
|
1509
1560
|
type: Component,
|
|
1510
|
-
args: [{ selector: 'idea-color-picker', imports: [
|
|
1561
|
+
args: [{ selector: 'idea-color-picker', imports: [IonAvatar, IonText, IonLabel, IonIcon, IonButton, IonItem], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
1511
1562
|
<ion-item
|
|
1512
1563
|
class="colorPickerItem"
|
|
1513
|
-
[color]="color"
|
|
1514
|
-
[lines]="lines"
|
|
1515
|
-
[button]="!disabled"
|
|
1516
|
-
[title]="placeholder || ''"
|
|
1517
|
-
[class.withLabel]="label"
|
|
1564
|
+
[color]="color()"
|
|
1565
|
+
[lines]="lines()"
|
|
1566
|
+
[button]="!disabled()"
|
|
1567
|
+
[title]="placeholder() || ''"
|
|
1568
|
+
[class.withLabel]="label()"
|
|
1518
1569
|
(click)="openPalette($event)"
|
|
1519
1570
|
>
|
|
1520
|
-
@if (icon) {
|
|
1521
|
-
<ion-button fill="clear" slot="start" [color]="iconColor" (click)="doIconSelect($event)">
|
|
1522
|
-
<ion-icon [name]="icon" slot="icon-only" />
|
|
1571
|
+
@if (icon()) {
|
|
1572
|
+
<ion-button fill="clear" slot="start" [color]="iconColor()" (click)="doIconSelect($event)">
|
|
1573
|
+
<ion-icon [name]="icon()" slot="icon-only" />
|
|
1523
1574
|
</ion-button>
|
|
1524
1575
|
}
|
|
1525
|
-
@if (label) {
|
|
1526
|
-
<ion-label [class.selectable]="!disabled">
|
|
1527
|
-
{{ label }}
|
|
1528
|
-
@if (obligatory && !disabled) {
|
|
1576
|
+
@if (label()) {
|
|
1577
|
+
<ion-label [class.selectable]="!disabled()">
|
|
1578
|
+
{{ label() }}
|
|
1579
|
+
@if (obligatory() && !disabled()) {
|
|
1529
1580
|
<ion-text class="obligatoryDot" />
|
|
1530
1581
|
}
|
|
1531
1582
|
</ion-label>
|
|
1532
1583
|
}
|
|
1533
|
-
<ion-avatar slot="end" class="colorCircle" [style.background-color]="current" />
|
|
1534
|
-
@if (!disabled) {
|
|
1535
|
-
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
1584
|
+
<ion-avatar slot="end" class="colorCircle" [style.background-color]="current()" />
|
|
1585
|
+
@if (!disabled()) {
|
|
1586
|
+
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled()" />
|
|
1536
1587
|
}
|
|
1537
1588
|
</ion-item>
|
|
1538
1589
|
`, styles: [".colorPickerItem{min-height:48px;height:auto}.colorPickerItem .placeholder{color:var(--ion-color-medium)}.colorPickerItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.selectItem.withLabel{min-height:58px;height:auto}.selectItem.withLabel .selectIcon{padding-top:25px}.selectItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}ion-avatar.colorCircle{width:20px;height:20px}\n"] }]
|
|
1539
|
-
}], propDecorators: { colors: [{
|
|
1540
|
-
type: Input
|
|
1541
|
-
}], current: [{
|
|
1542
|
-
type: Input
|
|
1543
|
-
}], label: [{
|
|
1544
|
-
type: Input
|
|
1545
|
-
}], placeholder: [{
|
|
1546
|
-
type: Input
|
|
1547
|
-
}], icon: [{
|
|
1548
|
-
type: Input
|
|
1549
|
-
}], iconColor: [{
|
|
1550
|
-
type: Input
|
|
1551
|
-
}], disabled: [{
|
|
1552
|
-
type: Input
|
|
1553
|
-
}], obligatory: [{
|
|
1554
|
-
type: Input
|
|
1555
|
-
}], lines: [{
|
|
1556
|
-
type: Input
|
|
1557
|
-
}], color: [{
|
|
1558
|
-
type: Input
|
|
1559
|
-
}], select: [{
|
|
1560
|
-
type: Output
|
|
1561
|
-
}], iconSelect: [{
|
|
1562
|
-
type: Output
|
|
1563
|
-
}] } });
|
|
1590
|
+
}], propDecorators: { colors: [{ type: i0.Input, args: [{ isSignal: true, alias: "colors", required: false }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], obligatory: [{ type: i0.Input, args: [{ isSignal: true, alias: "obligatory", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], select: [{ type: i0.Output, args: ["select"] }], iconSelect: [{ type: i0.Output, args: ["iconSelect"] }] } });
|
|
1564
1591
|
/**
|
|
1565
1592
|
* Component to open in a popover for displaying the colors available.
|
|
1566
1593
|
*/
|
|
1567
1594
|
class ColorsPaletteComponent {
|
|
1568
1595
|
constructor() {
|
|
1569
1596
|
this._popover = inject(PopoverController);
|
|
1597
|
+
/**
|
|
1598
|
+
* The pickable colors.
|
|
1599
|
+
*/
|
|
1600
|
+
this.colors = input(/* @ts-ignore */
|
|
1601
|
+
...(ngDevMode ? [undefined, { debugName: "colors" }] : /* istanbul ignore next */ []));
|
|
1602
|
+
/**
|
|
1603
|
+
* The current color.
|
|
1604
|
+
*/
|
|
1605
|
+
this.current = input(/* @ts-ignore */
|
|
1606
|
+
...(ngDevMode ? [undefined, { debugName: "current" }] : /* istanbul ignore next */ []));
|
|
1570
1607
|
}
|
|
1571
1608
|
pick(color) {
|
|
1572
1609
|
this._popover.dismiss(color);
|
|
1573
1610
|
}
|
|
1574
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1575
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1611
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ColorsPaletteComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1612
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: ColorsPaletteComponent, isStandalone: true, selector: "idea-colors-palette", inputs: { colors: { classPropertyName: "colors", publicName: "colors", isSignal: true, isRequired: false, transformFunction: null }, current: { classPropertyName: "current", publicName: "current", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
1576
1613
|
<ion-content>
|
|
1577
1614
|
<ion-grid>
|
|
1578
1615
|
<ion-row>
|
|
1579
|
-
@for (c of colors; track c) {
|
|
1616
|
+
@for (c of colors(); track c) {
|
|
1580
1617
|
<ion-col [size]="2">
|
|
1581
1618
|
<ion-avatar
|
|
1582
1619
|
class="colorCircle tappable"
|
|
@@ -1584,7 +1621,7 @@ class ColorsPaletteComponent {
|
|
|
1584
1621
|
[title]="c.name || c.hex"
|
|
1585
1622
|
(click)="pick(c.hex)"
|
|
1586
1623
|
>
|
|
1587
|
-
@if (c.hex === current) {
|
|
1624
|
+
@if (c.hex === current()) {
|
|
1588
1625
|
<ion-icon name="checkmark" />
|
|
1589
1626
|
}
|
|
1590
1627
|
</ion-avatar>
|
|
@@ -1593,15 +1630,15 @@ class ColorsPaletteComponent {
|
|
|
1593
1630
|
</ion-row>
|
|
1594
1631
|
</ion-grid>
|
|
1595
1632
|
</ion-content>
|
|
1596
|
-
`, isInline: true, styles: ["ion-content{--background: var(--ion-color-white)}ion-avatar.colorCircle{width:20px;height:20px}.tappable{cursor:pointer}ion-avatar.colorCircle ion-icon{color:#fff;font-size:1.2em}\n"], dependencies: [{ kind: "
|
|
1633
|
+
`, isInline: true, styles: ["ion-content{--background: var(--ion-color-white)}ion-avatar.colorCircle{width:20px;height:20px}.tappable{cursor:pointer}ion-avatar.colorCircle ion-icon{color:#fff;font-size:1.2em}\n"], dependencies: [{ kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonAvatar, selector: "ion-avatar" }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1597
1634
|
}
|
|
1598
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1635
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: ColorsPaletteComponent, decorators: [{
|
|
1599
1636
|
type: Component,
|
|
1600
|
-
args: [{ selector: 'idea-colors-palette', imports: [
|
|
1637
|
+
args: [{ selector: 'idea-colors-palette', imports: [IonContent, IonGrid, IonRow, IonCol, IonAvatar, IonIcon], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
1601
1638
|
<ion-content>
|
|
1602
1639
|
<ion-grid>
|
|
1603
1640
|
<ion-row>
|
|
1604
|
-
@for (c of colors; track c) {
|
|
1641
|
+
@for (c of colors(); track c) {
|
|
1605
1642
|
<ion-col [size]="2">
|
|
1606
1643
|
<ion-avatar
|
|
1607
1644
|
class="colorCircle tappable"
|
|
@@ -1609,7 +1646,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1609
1646
|
[title]="c.name || c.hex"
|
|
1610
1647
|
(click)="pick(c.hex)"
|
|
1611
1648
|
>
|
|
1612
|
-
@if (c.hex === current) {
|
|
1649
|
+
@if (c.hex === current()) {
|
|
1613
1650
|
<ion-icon name="checkmark" />
|
|
1614
1651
|
}
|
|
1615
1652
|
</ion-avatar>
|
|
@@ -1619,11 +1656,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1619
1656
|
</ion-grid>
|
|
1620
1657
|
</ion-content>
|
|
1621
1658
|
`, styles: ["ion-content{--background: var(--ion-color-white)}ion-avatar.colorCircle{width:20px;height:20px}.tappable{cursor:pointer}ion-avatar.colorCircle ion-icon{color:#fff;font-size:1.2em}\n"] }]
|
|
1622
|
-
}], propDecorators: { colors: [{
|
|
1623
|
-
type: Input
|
|
1624
|
-
}], current: [{
|
|
1625
|
-
type: Input
|
|
1626
|
-
}] } });
|
|
1659
|
+
}], propDecorators: { colors: [{ type: i0.Input, args: [{ isSignal: true, alias: "colors", required: false }] }], current: [{ type: i0.Input, args: [{ isSignal: true, alias: "current", required: false }] }] } });
|
|
1627
1660
|
|
|
1628
1661
|
class IDEAContactsComponent {
|
|
1629
1662
|
constructor() {
|
|
@@ -1632,27 +1665,42 @@ class IDEAContactsComponent {
|
|
|
1632
1665
|
/**
|
|
1633
1666
|
* The contacts to manage.
|
|
1634
1667
|
*/
|
|
1635
|
-
this.contacts = new Contacts()
|
|
1668
|
+
this.contacts = input(new Contacts(), /* @ts-ignore */
|
|
1669
|
+
...(ngDevMode ? [{ debugName: "contacts" }] : /* istanbul ignore next */ []));
|
|
1636
1670
|
/**
|
|
1637
1671
|
* If true, show the field `name`.
|
|
1638
1672
|
*/
|
|
1639
|
-
this.showName = false
|
|
1673
|
+
this.showName = input(false, /* @ts-ignore */
|
|
1674
|
+
...(ngDevMode ? [{ debugName: "showName" }] : /* istanbul ignore next */ []));
|
|
1640
1675
|
/**
|
|
1641
1676
|
* Whether the fields are editable or disabled.
|
|
1642
1677
|
*/
|
|
1643
|
-
this.editMode = true
|
|
1678
|
+
this.editMode = input(true, /* @ts-ignore */
|
|
1679
|
+
...(ngDevMode ? [{ debugName: "editMode" }] : /* istanbul ignore next */ []));
|
|
1680
|
+
/**
|
|
1681
|
+
* The lines attribute of the item.
|
|
1682
|
+
*/
|
|
1683
|
+
this.lines = input(/* @ts-ignore */
|
|
1684
|
+
...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
1685
|
+
/**
|
|
1686
|
+
* The color for the component.
|
|
1687
|
+
*/
|
|
1688
|
+
this.color = input(/* @ts-ignore */
|
|
1689
|
+
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
1644
1690
|
}
|
|
1645
1691
|
sendEmail() {
|
|
1646
|
-
|
|
1692
|
+
const contacts = this.contacts();
|
|
1693
|
+
if (!contacts.email)
|
|
1647
1694
|
return;
|
|
1648
|
-
const url = `mailto:${
|
|
1649
|
-
this.preExternalAction(
|
|
1695
|
+
const url = `mailto:${contacts.email}`;
|
|
1696
|
+
this.preExternalAction(contacts.email, () => window.open(url, '_system'));
|
|
1650
1697
|
}
|
|
1651
1698
|
call() {
|
|
1652
|
-
|
|
1699
|
+
const contacts = this.contacts();
|
|
1700
|
+
if (!contacts.phone)
|
|
1653
1701
|
return;
|
|
1654
|
-
const url = `tel:${
|
|
1655
|
-
this.preExternalAction(
|
|
1702
|
+
const url = `tel:${contacts.phone}`;
|
|
1703
|
+
this.preExternalAction(contacts.phone, () => window.open(url, '_system'));
|
|
1656
1704
|
}
|
|
1657
1705
|
preExternalAction(message, cb) {
|
|
1658
1706
|
const header = this._translate._('COMMON.DO_YOU_WANT_TO_PROCEED');
|
|
@@ -1663,33 +1711,33 @@ class IDEAContactsComponent {
|
|
|
1663
1711
|
const cssClass = 'selectableAlertMessage';
|
|
1664
1712
|
this._alert.create({ header, message, buttons, cssClass }).then(alert => alert.present());
|
|
1665
1713
|
}
|
|
1666
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1667
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1714
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAContactsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1715
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAContactsComponent, isStandalone: true, selector: "idea-contacts", inputs: { contacts: { classPropertyName: "contacts", publicName: "contacts", isSignal: true, isRequired: false, transformFunction: null }, showName: { classPropertyName: "showName", publicName: "showName", isSignal: true, isRequired: false, transformFunction: null }, editMode: { classPropertyName: "editMode", publicName: "editMode", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
1668
1716
|
<div class="contacts">
|
|
1669
|
-
@if (showName) {
|
|
1670
|
-
<ion-item [lines]="lines" [color]="color">
|
|
1717
|
+
@if (showName()) {
|
|
1718
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
1671
1719
|
<ion-input
|
|
1672
1720
|
autocomplete="new"
|
|
1673
1721
|
labelPlacement="stacked"
|
|
1674
1722
|
[label]="'IDEA_UNCOMMON.CONTACTS.NAME' | translate"
|
|
1675
|
-
[disabled]="!editMode"
|
|
1723
|
+
[disabled]="!editMode()"
|
|
1676
1724
|
[placeholder]="'IDEA_UNCOMMON.CONTACTS.NAME_HINT' | translate"
|
|
1677
1725
|
[title]="'IDEA_UNCOMMON.CONTACTS.NAME_HINT' | translate"
|
|
1678
|
-
[(ngModel)]="contacts.name"
|
|
1726
|
+
[(ngModel)]="contacts().name"
|
|
1679
1727
|
/>
|
|
1680
1728
|
</ion-item>
|
|
1681
1729
|
}
|
|
1682
|
-
<ion-item [lines]="lines" [color]="color">
|
|
1730
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
1683
1731
|
<ion-input
|
|
1684
1732
|
autocomplete="new"
|
|
1685
1733
|
labelPlacement="stacked"
|
|
1686
1734
|
[label]="'IDEA_UNCOMMON.CONTACTS.PHONE' | translate"
|
|
1687
|
-
[disabled]="!editMode"
|
|
1735
|
+
[disabled]="!editMode()"
|
|
1688
1736
|
[placeholder]="'IDEA_UNCOMMON.CONTACTS.PHONE_HINT' | translate"
|
|
1689
1737
|
[title]="'IDEA_UNCOMMON.CONTACTS.PHONE_HINT' | translate"
|
|
1690
|
-
[(ngModel)]="contacts.phone"
|
|
1738
|
+
[(ngModel)]="contacts().phone"
|
|
1691
1739
|
/>
|
|
1692
|
-
@if (!editMode) {
|
|
1740
|
+
@if (!editMode()) {
|
|
1693
1741
|
<ion-button
|
|
1694
1742
|
slot="end"
|
|
1695
1743
|
fill="clear"
|
|
@@ -1702,17 +1750,17 @@ class IDEAContactsComponent {
|
|
|
1702
1750
|
</ion-button>
|
|
1703
1751
|
}
|
|
1704
1752
|
</ion-item>
|
|
1705
|
-
<ion-item [lines]="lines" [color]="color">
|
|
1753
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
1706
1754
|
<ion-input
|
|
1707
1755
|
autocomplete="new"
|
|
1708
1756
|
labelPlacement="stacked"
|
|
1709
1757
|
[label]="'IDEA_UNCOMMON.CONTACTS.EMAIL' | translate"
|
|
1710
|
-
[disabled]="!editMode"
|
|
1758
|
+
[disabled]="!editMode()"
|
|
1711
1759
|
[placeholder]="'IDEA_UNCOMMON.CONTACTS.EMAIL_HINT' | translate"
|
|
1712
1760
|
[title]="'IDEA_UNCOMMON.CONTACTS.EMAIL_HINT' | translate"
|
|
1713
|
-
[(ngModel)]="contacts.email"
|
|
1761
|
+
[(ngModel)]="contacts().email"
|
|
1714
1762
|
/>
|
|
1715
|
-
@if (!editMode) {
|
|
1763
|
+
@if (!editMode()) {
|
|
1716
1764
|
<ion-button
|
|
1717
1765
|
slot="end"
|
|
1718
1766
|
fill="clear"
|
|
@@ -1726,36 +1774,36 @@ class IDEAContactsComponent {
|
|
|
1726
1774
|
}
|
|
1727
1775
|
</ion-item>
|
|
1728
1776
|
</div>
|
|
1729
|
-
`, isInline: true, styles: [".marginTop{margin-top:14px}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
1777
|
+
`, isInline: true, styles: [".marginTop{margin-top:14px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1730
1778
|
}
|
|
1731
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1779
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAContactsComponent, decorators: [{
|
|
1732
1780
|
type: Component,
|
|
1733
|
-
args: [{ selector: 'idea-contacts', imports: [
|
|
1781
|
+
args: [{ selector: 'idea-contacts', imports: [FormsModule, IDEATranslatePipe, IonInput, IonIcon, IonButton, IonItem], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
1734
1782
|
<div class="contacts">
|
|
1735
|
-
@if (showName) {
|
|
1736
|
-
<ion-item [lines]="lines" [color]="color">
|
|
1783
|
+
@if (showName()) {
|
|
1784
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
1737
1785
|
<ion-input
|
|
1738
1786
|
autocomplete="new"
|
|
1739
1787
|
labelPlacement="stacked"
|
|
1740
1788
|
[label]="'IDEA_UNCOMMON.CONTACTS.NAME' | translate"
|
|
1741
|
-
[disabled]="!editMode"
|
|
1789
|
+
[disabled]="!editMode()"
|
|
1742
1790
|
[placeholder]="'IDEA_UNCOMMON.CONTACTS.NAME_HINT' | translate"
|
|
1743
1791
|
[title]="'IDEA_UNCOMMON.CONTACTS.NAME_HINT' | translate"
|
|
1744
|
-
[(ngModel)]="contacts.name"
|
|
1792
|
+
[(ngModel)]="contacts().name"
|
|
1745
1793
|
/>
|
|
1746
1794
|
</ion-item>
|
|
1747
1795
|
}
|
|
1748
|
-
<ion-item [lines]="lines" [color]="color">
|
|
1796
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
1749
1797
|
<ion-input
|
|
1750
1798
|
autocomplete="new"
|
|
1751
1799
|
labelPlacement="stacked"
|
|
1752
1800
|
[label]="'IDEA_UNCOMMON.CONTACTS.PHONE' | translate"
|
|
1753
|
-
[disabled]="!editMode"
|
|
1801
|
+
[disabled]="!editMode()"
|
|
1754
1802
|
[placeholder]="'IDEA_UNCOMMON.CONTACTS.PHONE_HINT' | translate"
|
|
1755
1803
|
[title]="'IDEA_UNCOMMON.CONTACTS.PHONE_HINT' | translate"
|
|
1756
|
-
[(ngModel)]="contacts.phone"
|
|
1804
|
+
[(ngModel)]="contacts().phone"
|
|
1757
1805
|
/>
|
|
1758
|
-
@if (!editMode) {
|
|
1806
|
+
@if (!editMode()) {
|
|
1759
1807
|
<ion-button
|
|
1760
1808
|
slot="end"
|
|
1761
1809
|
fill="clear"
|
|
@@ -1768,17 +1816,17 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1768
1816
|
</ion-button>
|
|
1769
1817
|
}
|
|
1770
1818
|
</ion-item>
|
|
1771
|
-
<ion-item [lines]="lines" [color]="color">
|
|
1819
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
1772
1820
|
<ion-input
|
|
1773
1821
|
autocomplete="new"
|
|
1774
1822
|
labelPlacement="stacked"
|
|
1775
1823
|
[label]="'IDEA_UNCOMMON.CONTACTS.EMAIL' | translate"
|
|
1776
|
-
[disabled]="!editMode"
|
|
1824
|
+
[disabled]="!editMode()"
|
|
1777
1825
|
[placeholder]="'IDEA_UNCOMMON.CONTACTS.EMAIL_HINT' | translate"
|
|
1778
1826
|
[title]="'IDEA_UNCOMMON.CONTACTS.EMAIL_HINT' | translate"
|
|
1779
|
-
[(ngModel)]="contacts.email"
|
|
1827
|
+
[(ngModel)]="contacts().email"
|
|
1780
1828
|
/>
|
|
1781
|
-
@if (!editMode) {
|
|
1829
|
+
@if (!editMode()) {
|
|
1782
1830
|
<ion-button
|
|
1783
1831
|
slot="end"
|
|
1784
1832
|
fill="clear"
|
|
@@ -1793,17 +1841,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1793
1841
|
</ion-item>
|
|
1794
1842
|
</div>
|
|
1795
1843
|
`, styles: [".marginTop{margin-top:14px}\n"] }]
|
|
1796
|
-
}], propDecorators: { contacts: [{
|
|
1797
|
-
type: Input
|
|
1798
|
-
}], showName: [{
|
|
1799
|
-
type: Input
|
|
1800
|
-
}], editMode: [{
|
|
1801
|
-
type: Input
|
|
1802
|
-
}], lines: [{
|
|
1803
|
-
type: Input
|
|
1804
|
-
}], color: [{
|
|
1805
|
-
type: Input
|
|
1806
|
-
}] } });
|
|
1844
|
+
}], propDecorators: { contacts: [{ type: i0.Input, args: [{ isSignal: true, alias: "contacts", required: false }] }], showName: [{ type: i0.Input, args: [{ isSignal: true, alias: "showName", required: false }] }], editMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "editMode", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }] } });
|
|
1807
1845
|
|
|
1808
1846
|
/**
|
|
1809
1847
|
* A random sunday, used as reference to calculate the week days.
|
|
@@ -1814,19 +1852,32 @@ class IDEACalendarPickerComponent {
|
|
|
1814
1852
|
this._modal = inject(ModalController);
|
|
1815
1853
|
this._alert = inject(AlertController);
|
|
1816
1854
|
this._translate = inject(IDEATranslationsService);
|
|
1817
|
-
this.
|
|
1818
|
-
|
|
1819
|
-
this.
|
|
1855
|
+
this.inputDate = input(/* @ts-ignore */
|
|
1856
|
+
...(ngDevMode ? [undefined, { debugName: "inputDate" }] : /* istanbul ignore next */ []));
|
|
1857
|
+
this.timePicker = input(false, /* @ts-ignore */
|
|
1858
|
+
...(ngDevMode ? [{ debugName: "timePicker" }] : /* istanbul ignore next */ []));
|
|
1859
|
+
this.manualTimePicker = input(false, /* @ts-ignore */
|
|
1860
|
+
...(ngDevMode ? [{ debugName: "manualTimePicker" }] : /* istanbul ignore next */ []));
|
|
1861
|
+
this.title = input(/* @ts-ignore */
|
|
1862
|
+
...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
|
|
1863
|
+
this.hideClearButton = input(false, /* @ts-ignore */
|
|
1864
|
+
...(ngDevMode ? [{ debugName: "hideClearButton" }] : /* istanbul ignore next */ []));
|
|
1865
|
+
this.min = input(/* @ts-ignore */
|
|
1866
|
+
...(ngDevMode ? [undefined, { debugName: "min" }] : /* istanbul ignore next */ []));
|
|
1867
|
+
this.max = input(/* @ts-ignore */
|
|
1868
|
+
...(ngDevMode ? [undefined, { debugName: "max" }] : /* istanbul ignore next */ []));
|
|
1820
1869
|
}
|
|
1821
1870
|
ngOnInit() {
|
|
1822
1871
|
this.today = new Date();
|
|
1823
|
-
|
|
1872
|
+
const inputDate = this.inputDate();
|
|
1873
|
+
this.refDate = inputDate ? new Date(inputDate) : new Date(this.today);
|
|
1824
1874
|
this.selectedDate = new Date(this.refDate);
|
|
1825
1875
|
this.hour = 12; // to endure timezones
|
|
1826
1876
|
this.minute = 0;
|
|
1827
|
-
|
|
1877
|
+
const manualTimePicker = this.manualTimePicker();
|
|
1878
|
+
if (this.timePicker() || manualTimePicker) {
|
|
1828
1879
|
this.hour = this.selectedDate.getHours();
|
|
1829
|
-
if (
|
|
1880
|
+
if (manualTimePicker)
|
|
1830
1881
|
this.minute = this.selectedDate.getMinutes();
|
|
1831
1882
|
else {
|
|
1832
1883
|
// round the minutes a multiple of 5
|
|
@@ -1845,10 +1896,12 @@ class IDEACalendarPickerComponent {
|
|
|
1845
1896
|
this.weekDays.push(refDateForWeekDays.toLocaleDateString(this._translate.getCurrentLang(), { weekday: 'short' }));
|
|
1846
1897
|
refDateForWeekDays.setDate(refDateForWeekDays.getDate() + 1);
|
|
1847
1898
|
}
|
|
1848
|
-
|
|
1849
|
-
|
|
1850
|
-
|
|
1851
|
-
|
|
1899
|
+
const min = this.min();
|
|
1900
|
+
if (min)
|
|
1901
|
+
this.dateMin = new Date(min);
|
|
1902
|
+
const max = this.max();
|
|
1903
|
+
if (max)
|
|
1904
|
+
this.dateMax = new Date(max);
|
|
1852
1905
|
}
|
|
1853
1906
|
getLocalisedDay(date) {
|
|
1854
1907
|
let n = date.getDay();
|
|
@@ -1972,10 +2025,10 @@ class IDEACalendarPickerComponent {
|
|
|
1972
2025
|
close() {
|
|
1973
2026
|
this._modal.dismiss();
|
|
1974
2027
|
}
|
|
1975
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1976
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: IDEACalendarPickerComponent, isStandalone: true, selector: "idea-calendar-picker", inputs: { inputDate: "inputDate", timePicker: "timePicker", manualTimePicker: "manualTimePicker", title: "title", hideClearButton: "hideClearButton", min: "min", max: "max" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n @if (!hideClearButton) {\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.RESET' | translate\" (click)=\"save(true)\">\n <ion-icon slot=\"icon-only\" name=\"arrow-undo\" />\n </ion-button>\n }\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid fixed class=\"ion-no-padding\">\n <ion-row>\n <h1 class=\"headerLabel\">{{ 'IDEA_UNCOMMON.CALENDAR.SET_DATE' | translate }}</h1>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\">\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"5\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\">\n <ion-input\n type=\"text\"\n [placeholder]=\"'IDEA_UNCOMMON.CALENDAR.YEAR' | translate\"\n [value]=\"refDate.getFullYear()\"\n (ionFocus)=\"$event.target.value = ''\"\n (ionChange)=\"setYear($event?.target?.value)\"\n >\n </ion-input>\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"7\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\" (click)=\"showMonths()\">\n {{ refDate | dateLocale: 'MMMM' }}\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\" class=\"headerLabel\">\n @for (ddd of weekDays; track ddd) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n {{ ddd }}\n </ion-col>\n }\n </ion-row>\n @for (row of calendarGrid; track row; let i = $index) {\n <ion-row class=\"ion-align-items-center\">\n @for (col of row; track col; let j = $index) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"\n isSameDay(calendarGrid[i][j], today) || isSameDay(calendarGrid[i][j], selectedDate)\n ? 'primary'\n : isSameMonth(calendarGrid[i][j], refDate)\n ? 'dark'\n : 'medium'\n \"\n [fill]=\"\n isSameDay(calendarGrid[i][j], selectedDate)\n ? 'solid'\n : isSameDay(calendarGrid[i][j], today)\n ? 'outline'\n : 'clear'\n \"\n [disabled]=\"!isDateSelectable(calendarGrid[i][j])\"\n (click)=\"selectDate(calendarGrid[i][j])\"\n >\n {{ calendarGrid[i][j] | date: 'd' }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n }\n @if (timePicker || manualTimePicker) {\n <ion-row>\n <h1 class=\"headerLabel\">\n {{ 'IDEA_UNCOMMON.CALENDAR.SET_TIME' | translate }}\n </h1>\n </ion-row>\n }\n @if (timePicker) {\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-no-padding\" [size]=\"7\">\n <ion-row>\n @for (hour of hours; track hour) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"2\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameHour(hour) ? 'primary' : 'dark'\"\n [fill]=\"isSameHour(hour) ? 'solid' : 'clear'\"\n (click)=\"selectHour(hour)\"\n >\n {{ hour }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"1\"> : </ion-col>\n <ion-col class=\"ion-no-padding\" [size]=\"4\">\n <ion-row>\n @for (minute of minutes; track minute) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"4\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameMinute(minute) ? 'primary' : 'dark'\"\n [fill]=\"isSameMinute(minute) ? 'solid' : 'clear'\"\n (click)=\"selectMinute(minute)\"\n >\n {{ minute }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n </ion-row>\n }\n @if (manualTimePicker) {\n <ion-row class=\"ion-align-items-center manualTimePicker\">\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <input type=\"number\" min=\"0\" max=\"23\" [value]=\"hour\" (change)=\"selectHour($event.target.value)\" />\n <span>:</span>\n <input type=\"number\" min=\"0\" max=\"59\" [value]=\"minute\" (change)=\"selectMinute($event.target.value)\" />\n </ion-col>\n </ion-row>\n }\n </ion-grid>\n</ion-content>\n<ion-footer>\n <ion-toolbar color=\"ideaToolbar\" class=\"tappable\" (click)=\"save()\">\n <ion-title class=\"ion-text-center\">\n <ion-icon name=\"checkmark\" />\n </ion-title>\n </ion-toolbar>\n</ion-footer>\n", styles: ["ion-content{--background: var(--ion-color-white)}h1{margin:10px}.headerLabel{font-size:.7em;font-weight:700;text-transform:uppercase}ion-col,ion-button{font-size:.95em}ion-button{margin:3px 0}ion-footer ion-toolbar{--min-height: 40px}.tappable{cursor:pointer}.manualTimePicker{padding:20px}.manualTimePicker input[type=number],.manualTimePicker span{font-size:2.5em}.manualTimePicker input[type=number]{border:none;border-bottom:2px solid var(--ion-color-dark);text-align:center}.manualTimePicker span{padding-left:4px;padding-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: IDEALocalizedDatePipe, name: "dateLocale" }] }); }
|
|
2028
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEACalendarPickerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2029
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEACalendarPickerComponent, isStandalone: true, selector: "idea-calendar-picker", inputs: { inputDate: { classPropertyName: "inputDate", publicName: "inputDate", isSignal: true, isRequired: false, transformFunction: null }, timePicker: { classPropertyName: "timePicker", publicName: "timePicker", isSignal: true, isRequired: false, transformFunction: null }, manualTimePicker: { classPropertyName: "manualTimePicker", publicName: "manualTimePicker", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, hideClearButton: { classPropertyName: "hideClearButton", publicName: "hideClearButton", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-title>{{ title() }}</ion-title>\n <ion-buttons slot=\"end\">\n @if (!hideClearButton()) {\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.RESET' | translate\" (click)=\"save(true)\">\n <ion-icon slot=\"icon-only\" name=\"arrow-undo\" />\n </ion-button>\n }\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid fixed class=\"ion-no-padding\">\n <ion-row>\n <h1 class=\"headerLabel\">{{ 'IDEA_UNCOMMON.CALENDAR.SET_DATE' | translate }}</h1>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\">\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"5\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\">\n <ion-input\n type=\"text\"\n [placeholder]=\"'IDEA_UNCOMMON.CALENDAR.YEAR' | translate\"\n [value]=\"refDate.getFullYear()\"\n (ionFocus)=\"$event.target.value = ''\"\n (ionChange)=\"setYear($event?.target?.value)\"\n >\n </ion-input>\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"7\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\" (click)=\"showMonths()\">\n {{ refDate | dateLocale: 'MMMM' }}\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\" class=\"headerLabel\">\n @for (ddd of weekDays; track ddd) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n {{ ddd }}\n </ion-col>\n }\n </ion-row>\n @for (row of calendarGrid; track row; let i = $index) {\n <ion-row class=\"ion-align-items-center\">\n @for (col of row; track col; let j = $index) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"\n isSameDay(calendarGrid[i][j], today) || isSameDay(calendarGrid[i][j], selectedDate)\n ? 'primary'\n : isSameMonth(calendarGrid[i][j], refDate)\n ? 'dark'\n : 'medium'\n \"\n [fill]=\"\n isSameDay(calendarGrid[i][j], selectedDate)\n ? 'solid'\n : isSameDay(calendarGrid[i][j], today)\n ? 'outline'\n : 'clear'\n \"\n [disabled]=\"!isDateSelectable(calendarGrid[i][j])\"\n (click)=\"selectDate(calendarGrid[i][j])\"\n >\n {{ calendarGrid[i][j] | date: 'd' }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n }\n @if (timePicker() || manualTimePicker()) {\n <ion-row>\n <h1 class=\"headerLabel\">\n {{ 'IDEA_UNCOMMON.CALENDAR.SET_TIME' | translate }}\n </h1>\n </ion-row>\n }\n @if (timePicker()) {\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-no-padding\" [size]=\"7\">\n <ion-row>\n @for (hour of hours; track hour) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"2\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameHour(hour) ? 'primary' : 'dark'\"\n [fill]=\"isSameHour(hour) ? 'solid' : 'clear'\"\n (click)=\"selectHour(hour)\"\n >\n {{ hour }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"1\"> : </ion-col>\n <ion-col class=\"ion-no-padding\" [size]=\"4\">\n <ion-row>\n @for (minute of minutes; track minute) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"4\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameMinute(minute) ? 'primary' : 'dark'\"\n [fill]=\"isSameMinute(minute) ? 'solid' : 'clear'\"\n (click)=\"selectMinute(minute)\"\n >\n {{ minute }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n </ion-row>\n }\n @if (manualTimePicker()) {\n <ion-row class=\"ion-align-items-center manualTimePicker\">\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <input type=\"number\" min=\"0\" max=\"23\" [value]=\"hour\" (change)=\"selectHour($event.target.value)\" />\n <span>:</span>\n <input type=\"number\" min=\"0\" max=\"59\" [value]=\"minute\" (change)=\"selectMinute($event.target.value)\" />\n </ion-col>\n </ion-row>\n }\n </ion-grid>\n</ion-content>\n<ion-footer>\n <ion-toolbar color=\"ideaToolbar\" class=\"tappable\" (click)=\"save()\">\n <ion-title class=\"ion-text-center\">\n <ion-icon name=\"checkmark\" />\n </ion-title>\n </ion-toolbar>\n</ion-footer>\n", styles: ["ion-content{--background: var(--ion-color-white)}h1{margin:10px}.headerLabel{font-size:.7em;font-weight:700;text-transform:uppercase}ion-col,ion-button{font-size:.95em}ion-button{margin:3px 0}ion-footer ion-toolbar{--min-height: 40px}.tappable{cursor:pointer}.manualTimePicker{padding:20px}.manualTimePicker input[type=number],.manualTimePicker span{font-size:2.5em}.manualTimePicker input[type=number]{border:none;border-bottom:2px solid var(--ion-color-dark);text-align:center}.manualTimePicker span{padding-left:4px;padding-right:4px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "component", type: IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "pipe", type: i1$1.DatePipe, name: "date" }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: IDEALocalizedDatePipe, name: "dateLocale" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
1977
2030
|
}
|
|
1978
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2031
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEACalendarPickerComponent, decorators: [{
|
|
1979
2032
|
type: Component,
|
|
1980
2033
|
args: [{ selector: 'idea-calendar-picker', imports: [
|
|
1981
2034
|
CommonModule,
|
|
@@ -1994,58 +2047,97 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
1994
2047
|
IonTitle,
|
|
1995
2048
|
IonToolbar,
|
|
1996
2049
|
IonHeader
|
|
1997
|
-
], template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n @if (!hideClearButton) {\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.RESET' | translate\" (click)=\"save(true)\">\n <ion-icon slot=\"icon-only\" name=\"arrow-undo\" />\n </ion-button>\n }\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid fixed class=\"ion-no-padding\">\n <ion-row>\n <h1 class=\"headerLabel\">{{ 'IDEA_UNCOMMON.CALENDAR.SET_DATE' | translate }}</h1>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\">\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"5\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\">\n <ion-input\n type=\"text\"\n [placeholder]=\"'IDEA_UNCOMMON.CALENDAR.YEAR' | translate\"\n [value]=\"refDate.getFullYear()\"\n (ionFocus)=\"$event.target.value = ''\"\n (ionChange)=\"setYear($event?.target?.value)\"\n >\n </ion-input>\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"7\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\" (click)=\"showMonths()\">\n {{ refDate | dateLocale: 'MMMM' }}\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\" class=\"headerLabel\">\n @for (ddd of weekDays; track ddd) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n {{ ddd }}\n </ion-col>\n }\n </ion-row>\n @for (row of calendarGrid; track row; let i = $index) {\n <ion-row class=\"ion-align-items-center\">\n @for (col of row; track col; let j = $index) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"\n isSameDay(calendarGrid[i][j], today) || isSameDay(calendarGrid[i][j], selectedDate)\n ? 'primary'\n : isSameMonth(calendarGrid[i][j], refDate)\n ? 'dark'\n : 'medium'\n \"\n [fill]=\"\n isSameDay(calendarGrid[i][j], selectedDate)\n ? 'solid'\n : isSameDay(calendarGrid[i][j], today)\n ? 'outline'\n : 'clear'\n \"\n [disabled]=\"!isDateSelectable(calendarGrid[i][j])\"\n (click)=\"selectDate(calendarGrid[i][j])\"\n >\n {{ calendarGrid[i][j] | date: 'd' }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n }\n @if (timePicker || manualTimePicker) {\n <ion-row>\n <h1 class=\"headerLabel\">\n {{ 'IDEA_UNCOMMON.CALENDAR.SET_TIME' | translate }}\n </h1>\n </ion-row>\n }\n @if (timePicker) {\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-no-padding\" [size]=\"7\">\n <ion-row>\n @for (hour of hours; track hour) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"2\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameHour(hour) ? 'primary' : 'dark'\"\n [fill]=\"isSameHour(hour) ? 'solid' : 'clear'\"\n (click)=\"selectHour(hour)\"\n >\n {{ hour }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"1\"> : </ion-col>\n <ion-col class=\"ion-no-padding\" [size]=\"4\">\n <ion-row>\n @for (minute of minutes; track minute) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"4\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameMinute(minute) ? 'primary' : 'dark'\"\n [fill]=\"isSameMinute(minute) ? 'solid' : 'clear'\"\n (click)=\"selectMinute(minute)\"\n >\n {{ minute }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n </ion-row>\n }\n @if (manualTimePicker) {\n <ion-row class=\"ion-align-items-center manualTimePicker\">\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <input type=\"number\" min=\"0\" max=\"23\" [value]=\"hour\" (change)=\"selectHour($event.target.value)\" />\n <span>:</span>\n <input type=\"number\" min=\"0\" max=\"59\" [value]=\"minute\" (change)=\"selectMinute($event.target.value)\" />\n </ion-col>\n </ion-row>\n }\n </ion-grid>\n</ion-content>\n<ion-footer>\n <ion-toolbar color=\"ideaToolbar\" class=\"tappable\" (click)=\"save()\">\n <ion-title class=\"ion-text-center\">\n <ion-icon name=\"checkmark\" />\n </ion-title>\n </ion-toolbar>\n</ion-footer>\n", styles: ["ion-content{--background: var(--ion-color-white)}h1{margin:10px}.headerLabel{font-size:.7em;font-weight:700;text-transform:uppercase}ion-col,ion-button{font-size:.95em}ion-button{margin:3px 0}ion-footer ion-toolbar{--min-height: 40px}.tappable{cursor:pointer}.manualTimePicker{padding:20px}.manualTimePicker input[type=number],.manualTimePicker span{font-size:2.5em}.manualTimePicker input[type=number]{border:none;border-bottom:2px solid var(--ion-color-dark);text-align:center}.manualTimePicker span{padding-left:4px;padding-right:4px}\n"] }]
|
|
1998
|
-
}], propDecorators: { inputDate: [{
|
|
1999
|
-
type: Input
|
|
2000
|
-
}], timePicker: [{
|
|
2001
|
-
type: Input
|
|
2002
|
-
}], manualTimePicker: [{
|
|
2003
|
-
type: Input
|
|
2004
|
-
}], title: [{
|
|
2005
|
-
type: Input
|
|
2006
|
-
}], hideClearButton: [{
|
|
2007
|
-
type: Input
|
|
2008
|
-
}], min: [{
|
|
2009
|
-
type: Input
|
|
2010
|
-
}], max: [{
|
|
2011
|
-
type: Input
|
|
2012
|
-
}] } });
|
|
2050
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-title>{{ title() }}</ion-title>\n <ion-buttons slot=\"end\">\n @if (!hideClearButton()) {\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.RESET' | translate\" (click)=\"save(true)\">\n <ion-icon slot=\"icon-only\" name=\"arrow-undo\" />\n </ion-button>\n }\n <ion-button [title]=\"'IDEA_UNCOMMON.CALENDAR.CLOSE_WITHOUT_SAVING' | translate\" (click)=\"close()\">\n <ion-icon slot=\"icon-only\" name=\"close\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid fixed class=\"ion-no-padding\">\n <ion-row>\n <h1 class=\"headerLabel\">{{ 'IDEA_UNCOMMON.CALENDAR.SET_DATE' | translate }}</h1>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\">\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"5\">\n <ion-row class=\"ion-align-items-center ion-justify-content-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\">\n <ion-input\n type=\"text\"\n [placeholder]=\"'IDEA_UNCOMMON.CALENDAR.YEAR' | translate\"\n [value]=\"refDate.getFullYear()\"\n (ionFocus)=\"$event.target.value = ''\"\n (ionChange)=\"setYear($event?.target?.value)\"\n >\n </ion-input>\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addYears(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"7\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(-1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-back\" />\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding tappable\" [size]=\"6\" (click)=\"showMonths()\">\n {{ refDate | dateLocale: 'MMMM' }}\n </ion-col>\n <ion-col class=\"ion-text-left ion-no-padding\" [size]=\"3\">\n <ion-button fill=\"clear\" color=\"dark\" (click)=\"addMonths(+1)\">\n <ion-icon slot=\"icon-only\" name=\"chevron-forward\" />\n </ion-button>\n </ion-col>\n </ion-row>\n </ion-col>\n </ion-row>\n <ion-row style=\"margin-bottom: 8px\" class=\"headerLabel\">\n @for (ddd of weekDays; track ddd) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n {{ ddd }}\n </ion-col>\n }\n </ion-row>\n @for (row of calendarGrid; track row; let i = $index) {\n <ion-row class=\"ion-align-items-center\">\n @for (col of row; track col; let j = $index) {\n <ion-col class=\"ion-text-center ion-no-padding\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"\n isSameDay(calendarGrid[i][j], today) || isSameDay(calendarGrid[i][j], selectedDate)\n ? 'primary'\n : isSameMonth(calendarGrid[i][j], refDate)\n ? 'dark'\n : 'medium'\n \"\n [fill]=\"\n isSameDay(calendarGrid[i][j], selectedDate)\n ? 'solid'\n : isSameDay(calendarGrid[i][j], today)\n ? 'outline'\n : 'clear'\n \"\n [disabled]=\"!isDateSelectable(calendarGrid[i][j])\"\n (click)=\"selectDate(calendarGrid[i][j])\"\n >\n {{ calendarGrid[i][j] | date: 'd' }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n }\n @if (timePicker() || manualTimePicker()) {\n <ion-row>\n <h1 class=\"headerLabel\">\n {{ 'IDEA_UNCOMMON.CALENDAR.SET_TIME' | translate }}\n </h1>\n </ion-row>\n }\n @if (timePicker()) {\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-no-padding\" [size]=\"7\">\n <ion-row>\n @for (hour of hours; track hour) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"2\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameHour(hour) ? 'primary' : 'dark'\"\n [fill]=\"isSameHour(hour) ? 'solid' : 'clear'\"\n (click)=\"selectHour(hour)\"\n >\n {{ hour }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"1\"> : </ion-col>\n <ion-col class=\"ion-no-padding\" [size]=\"4\">\n <ion-row>\n @for (minute of minutes; track minute) {\n <ion-col class=\"ion-text-center ion-no-padding\" [size]=\"4\">\n <ion-button\n size=\"small\"\n shape=\"round\"\n [color]=\"isSameMinute(minute) ? 'primary' : 'dark'\"\n [fill]=\"isSameMinute(minute) ? 'solid' : 'clear'\"\n (click)=\"selectMinute(minute)\"\n >\n {{ minute }}\n </ion-button>\n </ion-col>\n }\n </ion-row>\n </ion-col>\n </ion-row>\n }\n @if (manualTimePicker()) {\n <ion-row class=\"ion-align-items-center manualTimePicker\">\n <ion-col class=\"ion-text-center\" [size]=\"12\">\n <input type=\"number\" min=\"0\" max=\"23\" [value]=\"hour\" (change)=\"selectHour($event.target.value)\" />\n <span>:</span>\n <input type=\"number\" min=\"0\" max=\"59\" [value]=\"minute\" (change)=\"selectMinute($event.target.value)\" />\n </ion-col>\n </ion-row>\n }\n </ion-grid>\n</ion-content>\n<ion-footer>\n <ion-toolbar color=\"ideaToolbar\" class=\"tappable\" (click)=\"save()\">\n <ion-title class=\"ion-text-center\">\n <ion-icon name=\"checkmark\" />\n </ion-title>\n </ion-toolbar>\n</ion-footer>\n", styles: ["ion-content{--background: var(--ion-color-white)}h1{margin:10px}.headerLabel{font-size:.7em;font-weight:700;text-transform:uppercase}ion-col,ion-button{font-size:.95em}ion-button{margin:3px 0}ion-footer ion-toolbar{--min-height: 40px}.tappable{cursor:pointer}.manualTimePicker{padding:20px}.manualTimePicker input[type=number],.manualTimePicker span{font-size:2.5em}.manualTimePicker input[type=number]{border:none;border-bottom:2px solid var(--ion-color-dark);text-align:center}.manualTimePicker span{padding-left:4px;padding-right:4px}\n"] }]
|
|
2051
|
+
}], propDecorators: { inputDate: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputDate", required: false }] }], timePicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "timePicker", required: false }] }], manualTimePicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "manualTimePicker", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], hideClearButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideClearButton", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }] } });
|
|
2013
2052
|
|
|
2014
2053
|
class IDEADateTimeComponent {
|
|
2015
2054
|
constructor() {
|
|
2016
2055
|
this._modal = inject(ModalController);
|
|
2017
2056
|
this._translate = inject(IDEATranslationsService);
|
|
2057
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
2058
|
+
/**
|
|
2059
|
+
* The date to show/pick.
|
|
2060
|
+
*/
|
|
2061
|
+
this.date = input(/* @ts-ignore */
|
|
2062
|
+
...(ngDevMode ? [undefined, { debugName: "date" }] : /* istanbul ignore next */ []));
|
|
2018
2063
|
/**
|
|
2019
2064
|
* Whether to show the time picker (datetime) or not (date).
|
|
2020
2065
|
*/
|
|
2021
|
-
this.timePicker = false
|
|
2066
|
+
this.timePicker = input(false, /* @ts-ignore */
|
|
2067
|
+
...(ngDevMode ? [{ debugName: "timePicker" }] : /* istanbul ignore next */ []));
|
|
2022
2068
|
/**
|
|
2023
2069
|
* Whether to show the MANUAL time picker (datetime) or not (date).
|
|
2024
2070
|
*/
|
|
2025
|
-
this.manualTimePicker = false
|
|
2071
|
+
this.manualTimePicker = input(false, /* @ts-ignore */
|
|
2072
|
+
...(ngDevMode ? [{ debugName: "manualTimePicker" }] : /* istanbul ignore next */ []));
|
|
2026
2073
|
/**
|
|
2027
2074
|
* Whether to use the `epochISOString` format instead of `epochDateTime`.
|
|
2028
2075
|
*/
|
|
2029
|
-
this.useISOFormat = false
|
|
2076
|
+
this.useISOFormat = input(false, /* @ts-ignore */
|
|
2077
|
+
...(ngDevMode ? [{ debugName: "useISOFormat" }] : /* istanbul ignore next */ []));
|
|
2078
|
+
/**
|
|
2079
|
+
* The label for the field.
|
|
2080
|
+
*/
|
|
2081
|
+
this.label = input(/* @ts-ignore */
|
|
2082
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
2083
|
+
/**
|
|
2084
|
+
* The icon for the field.
|
|
2085
|
+
*/
|
|
2086
|
+
this.icon = input(/* @ts-ignore */
|
|
2087
|
+
...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
2088
|
+
/**
|
|
2089
|
+
* The color of the icon.
|
|
2090
|
+
*/
|
|
2091
|
+
this.iconColor = input(/* @ts-ignore */
|
|
2092
|
+
...(ngDevMode ? [undefined, { debugName: "iconColor" }] : /* istanbul ignore next */ []));
|
|
2093
|
+
/**
|
|
2094
|
+
* Lines preferences for the item.
|
|
2095
|
+
*/
|
|
2096
|
+
this.lines = input(/* @ts-ignore */
|
|
2097
|
+
...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
2098
|
+
/**
|
|
2099
|
+
* The color for the component.
|
|
2100
|
+
*/
|
|
2101
|
+
this.color = input(/* @ts-ignore */
|
|
2102
|
+
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
2103
|
+
/**
|
|
2104
|
+
* A placeholder for the field.
|
|
2105
|
+
*/
|
|
2106
|
+
this.placeholder = input(/* @ts-ignore */
|
|
2107
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
2030
2108
|
/**
|
|
2031
2109
|
* If true, the component is disabled.
|
|
2032
2110
|
*/
|
|
2033
|
-
this.disabled = false
|
|
2111
|
+
this.disabled = input(false, /* @ts-ignore */
|
|
2112
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
2034
2113
|
/**
|
|
2035
2114
|
* If true, the obligatory dot is shown.
|
|
2036
2115
|
*/
|
|
2037
|
-
this.obligatory = false
|
|
2116
|
+
this.obligatory = input(false, /* @ts-ignore */
|
|
2117
|
+
...(ngDevMode ? [{ debugName: "obligatory" }] : /* istanbul ignore next */ []));
|
|
2038
2118
|
/**
|
|
2039
2119
|
* If true, hidew the clear button in the header.
|
|
2040
2120
|
*/
|
|
2041
|
-
this.hideClearButton = false
|
|
2042
|
-
|
|
2043
|
-
|
|
2121
|
+
this.hideClearButton = input(false, /* @ts-ignore */
|
|
2122
|
+
...(ngDevMode ? [{ debugName: "hideClearButton" }] : /* istanbul ignore next */ []));
|
|
2123
|
+
/**
|
|
2124
|
+
* If set, is the minimum date selectable.
|
|
2125
|
+
*/
|
|
2126
|
+
this.min = input(/* @ts-ignore */
|
|
2127
|
+
...(ngDevMode ? [undefined, { debugName: "min" }] : /* istanbul ignore next */ []));
|
|
2128
|
+
/**
|
|
2129
|
+
* If set, is the maximum date selectable.
|
|
2130
|
+
*/
|
|
2131
|
+
this.max = input(/* @ts-ignore */
|
|
2132
|
+
...(ngDevMode ? [undefined, { debugName: "max" }] : /* istanbul ignore next */ []));
|
|
2133
|
+
this.dateChange = output();
|
|
2134
|
+
this.iconSelect = output();
|
|
2044
2135
|
this.isOpening = false;
|
|
2045
2136
|
}
|
|
2046
2137
|
ngOnInit() {
|
|
2047
2138
|
this.langChangeSubscription = this._translate.onLangChange.subscribe(() => {
|
|
2048
|
-
this.valueToDisplay = this.getValueToDisplay(this.date);
|
|
2139
|
+
this.valueToDisplay = this.getValueToDisplay(this.date());
|
|
2140
|
+
this._cdr.markForCheck();
|
|
2049
2141
|
});
|
|
2050
2142
|
}
|
|
2051
2143
|
ngOnDestroy() {
|
|
@@ -2054,22 +2146,22 @@ class IDEADateTimeComponent {
|
|
|
2054
2146
|
}
|
|
2055
2147
|
ngOnChanges(changes) {
|
|
2056
2148
|
if (changes.date || changes.timePicker)
|
|
2057
|
-
this.valueToDisplay = this.getValueToDisplay(this.date);
|
|
2149
|
+
this.valueToDisplay = this.getValueToDisplay(this.date());
|
|
2058
2150
|
}
|
|
2059
2151
|
async openCalendarPicker() {
|
|
2060
|
-
if (this.disabled || this.isOpening)
|
|
2152
|
+
if (this.disabled() || this.isOpening)
|
|
2061
2153
|
return;
|
|
2062
2154
|
this.isOpening = true;
|
|
2063
2155
|
const modal = await this._modal.create({
|
|
2064
2156
|
component: IDEACalendarPickerComponent,
|
|
2065
2157
|
componentProps: {
|
|
2066
|
-
inputDate: this.date,
|
|
2067
|
-
title: this.label,
|
|
2068
|
-
timePicker: this.timePicker,
|
|
2069
|
-
manualTimePicker: this.manualTimePicker,
|
|
2070
|
-
hideClearButton: this.hideClearButton,
|
|
2071
|
-
min: this.min,
|
|
2072
|
-
max: this.max
|
|
2158
|
+
inputDate: this.date(),
|
|
2159
|
+
title: this.label(),
|
|
2160
|
+
timePicker: this.timePicker(),
|
|
2161
|
+
manualTimePicker: this.manualTimePicker(),
|
|
2162
|
+
hideClearButton: this.hideClearButton(),
|
|
2163
|
+
min: this.min(),
|
|
2164
|
+
max: this.max()
|
|
2073
2165
|
}
|
|
2074
2166
|
});
|
|
2075
2167
|
modal.onDidDismiss().then(({ data }) => {
|
|
@@ -2086,148 +2178,149 @@ class IDEADateTimeComponent {
|
|
|
2086
2178
|
getValueToDisplay(date) {
|
|
2087
2179
|
return !date
|
|
2088
2180
|
? ''
|
|
2089
|
-
: this._translate.formatDate(date, this.timePicker || this.manualTimePicker ? 'd MMM yyyy, HH:mm' : 'mediumDate');
|
|
2181
|
+
: this._translate.formatDate(date, this.timePicker() || this.manualTimePicker() ? 'd MMM yyyy, HH:mm' : 'mediumDate');
|
|
2090
2182
|
}
|
|
2091
2183
|
doSelect(date) {
|
|
2092
|
-
this.dateChange.emit(date ? (this.useISOFormat ? date.toISOString() : date.valueOf()) : null);
|
|
2184
|
+
this.dateChange.emit(date ? (this.useISOFormat() ? date.toISOString() : date.valueOf()) : null);
|
|
2093
2185
|
}
|
|
2094
2186
|
doIconSelect(event) {
|
|
2095
2187
|
if (event)
|
|
2096
2188
|
event.stopPropagation();
|
|
2097
2189
|
this.iconSelect.emit();
|
|
2098
2190
|
}
|
|
2099
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2100
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2191
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEADateTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2192
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEADateTimeComponent, isStandalone: true, selector: "idea-date-time", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: false, transformFunction: null }, timePicker: { classPropertyName: "timePicker", publicName: "timePicker", isSignal: true, isRequired: false, transformFunction: null }, manualTimePicker: { classPropertyName: "manualTimePicker", publicName: "manualTimePicker", isSignal: true, isRequired: false, transformFunction: null }, useISOFormat: { classPropertyName: "useISOFormat", publicName: "useISOFormat", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, obligatory: { classPropertyName: "obligatory", publicName: "obligatory", isSignal: true, isRequired: false, transformFunction: null }, hideClearButton: { classPropertyName: "hideClearButton", publicName: "hideClearButton", isSignal: true, isRequired: false, transformFunction: null }, min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, max: { classPropertyName: "max", publicName: "max", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { dateChange: "dateChange", iconSelect: "iconSelect" }, usesOnChanges: true, ngImport: i0, template: `
|
|
2101
2193
|
<ion-item
|
|
2102
2194
|
class="dateTimeItem"
|
|
2103
|
-
[color]="color"
|
|
2104
|
-
[lines]="lines"
|
|
2105
|
-
[title]="placeholder || label || ''"
|
|
2106
|
-
[button]="!disabled"
|
|
2195
|
+
[color]="color()"
|
|
2196
|
+
[lines]="lines()"
|
|
2197
|
+
[title]="placeholder() || label() || ''"
|
|
2198
|
+
[button]="!disabled()"
|
|
2107
2199
|
[disabled]="isOpening"
|
|
2108
|
-
[class.withLabel]="label"
|
|
2200
|
+
[class.withLabel]="label()"
|
|
2109
2201
|
(click)="openCalendarPicker()"
|
|
2110
2202
|
>
|
|
2111
|
-
@if (icon) {
|
|
2203
|
+
@if (icon()) {
|
|
2112
2204
|
<ion-button
|
|
2113
2205
|
fill="clear"
|
|
2114
2206
|
slot="start"
|
|
2115
|
-
[color]="iconColor"
|
|
2116
|
-
[class.marginTop]="label"
|
|
2207
|
+
[color]="iconColor()"
|
|
2208
|
+
[class.marginTop]="label()"
|
|
2117
2209
|
(click)="doIconSelect($event)"
|
|
2118
2210
|
>
|
|
2119
|
-
<ion-icon [icon]="icon" slot="icon-only" />
|
|
2211
|
+
<ion-icon [icon]="icon()" slot="icon-only" />
|
|
2120
2212
|
</ion-button>
|
|
2121
2213
|
}
|
|
2122
|
-
@if (label) {
|
|
2123
|
-
<ion-label position="stacked" [class.selectable]="!disabled">
|
|
2124
|
-
{{ label }}
|
|
2125
|
-
@if (obligatory && !disabled) {
|
|
2214
|
+
@if (label()) {
|
|
2215
|
+
<ion-label position="stacked" [class.selectable]="!disabled()">
|
|
2216
|
+
{{ label() }}
|
|
2217
|
+
@if (obligatory() && !disabled()) {
|
|
2126
2218
|
<ion-text class="obligatoryDot" />
|
|
2127
2219
|
}
|
|
2128
2220
|
</ion-label>
|
|
2129
2221
|
}
|
|
2130
|
-
<ion-label class="value" [class.selectable]="!disabled">
|
|
2131
|
-
@if (!valueToDisplay && !disabled) {
|
|
2132
|
-
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
2133
|
-
{{ placeholder }}
|
|
2222
|
+
<ion-label class="value" [class.selectable]="!disabled()">
|
|
2223
|
+
@if (!valueToDisplay && !disabled()) {
|
|
2224
|
+
<ion-text class="placeholder" [class.selectable]="!disabled()">
|
|
2225
|
+
{{ placeholder() }}
|
|
2134
2226
|
</ion-text>
|
|
2135
2227
|
}
|
|
2136
2228
|
{{ valueToDisplay }}
|
|
2137
2229
|
</ion-label>
|
|
2138
|
-
@if (!disabled) {
|
|
2139
|
-
<ion-icon slot="end" icon="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
2230
|
+
@if (!disabled()) {
|
|
2231
|
+
<ion-icon slot="end" icon="caret-down" class="selectIcon" [class.selectable]="!disabled()" />
|
|
2140
2232
|
}
|
|
2141
2233
|
</ion-item>
|
|
2142
|
-
`, isInline: true, styles: [".dateTimeItem{min-height:48px;height:auto}.dateTimeItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.dateTimeItem .placeholder{color:var(--ion-color-medium)}.dateTimeItem .value{white-space:nowrap}.dateTimeItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.dateTimeItem.withLabel{min-height:58px;height:auto}.dateTimeItem.withLabel .selectIcon{padding-top:25px}.dateTimeItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "
|
|
2234
|
+
`, isInline: true, styles: [".dateTimeItem{min-height:48px;height:auto}.dateTimeItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.dateTimeItem .placeholder{color:var(--ion-color-medium)}.dateTimeItem .value{white-space:nowrap}.dateTimeItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.dateTimeItem.withLabel{min-height:58px;height:auto}.dateTimeItem.withLabel .selectIcon{padding-top:25px}.dateTimeItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2143
2235
|
}
|
|
2144
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2236
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEADateTimeComponent, decorators: [{
|
|
2145
2237
|
type: Component,
|
|
2146
|
-
args: [{ selector: 'idea-date-time', imports: [
|
|
2238
|
+
args: [{ selector: 'idea-date-time', imports: [IonText, IonLabel, IonIcon, IonButton, IonItem], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
2147
2239
|
<ion-item
|
|
2148
2240
|
class="dateTimeItem"
|
|
2149
|
-
[color]="color"
|
|
2150
|
-
[lines]="lines"
|
|
2151
|
-
[title]="placeholder || label || ''"
|
|
2152
|
-
[button]="!disabled"
|
|
2241
|
+
[color]="color()"
|
|
2242
|
+
[lines]="lines()"
|
|
2243
|
+
[title]="placeholder() || label() || ''"
|
|
2244
|
+
[button]="!disabled()"
|
|
2153
2245
|
[disabled]="isOpening"
|
|
2154
|
-
[class.withLabel]="label"
|
|
2246
|
+
[class.withLabel]="label()"
|
|
2155
2247
|
(click)="openCalendarPicker()"
|
|
2156
2248
|
>
|
|
2157
|
-
@if (icon) {
|
|
2249
|
+
@if (icon()) {
|
|
2158
2250
|
<ion-button
|
|
2159
2251
|
fill="clear"
|
|
2160
2252
|
slot="start"
|
|
2161
|
-
[color]="iconColor"
|
|
2162
|
-
[class.marginTop]="label"
|
|
2253
|
+
[color]="iconColor()"
|
|
2254
|
+
[class.marginTop]="label()"
|
|
2163
2255
|
(click)="doIconSelect($event)"
|
|
2164
2256
|
>
|
|
2165
|
-
<ion-icon [icon]="icon" slot="icon-only" />
|
|
2257
|
+
<ion-icon [icon]="icon()" slot="icon-only" />
|
|
2166
2258
|
</ion-button>
|
|
2167
2259
|
}
|
|
2168
|
-
@if (label) {
|
|
2169
|
-
<ion-label position="stacked" [class.selectable]="!disabled">
|
|
2170
|
-
{{ label }}
|
|
2171
|
-
@if (obligatory && !disabled) {
|
|
2260
|
+
@if (label()) {
|
|
2261
|
+
<ion-label position="stacked" [class.selectable]="!disabled()">
|
|
2262
|
+
{{ label() }}
|
|
2263
|
+
@if (obligatory() && !disabled()) {
|
|
2172
2264
|
<ion-text class="obligatoryDot" />
|
|
2173
2265
|
}
|
|
2174
2266
|
</ion-label>
|
|
2175
2267
|
}
|
|
2176
|
-
<ion-label class="value" [class.selectable]="!disabled">
|
|
2177
|
-
@if (!valueToDisplay && !disabled) {
|
|
2178
|
-
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
2179
|
-
{{ placeholder }}
|
|
2268
|
+
<ion-label class="value" [class.selectable]="!disabled()">
|
|
2269
|
+
@if (!valueToDisplay && !disabled()) {
|
|
2270
|
+
<ion-text class="placeholder" [class.selectable]="!disabled()">
|
|
2271
|
+
{{ placeholder() }}
|
|
2180
2272
|
</ion-text>
|
|
2181
2273
|
}
|
|
2182
2274
|
{{ valueToDisplay }}
|
|
2183
2275
|
</ion-label>
|
|
2184
|
-
@if (!disabled) {
|
|
2185
|
-
<ion-icon slot="end" icon="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
2276
|
+
@if (!disabled()) {
|
|
2277
|
+
<ion-icon slot="end" icon="caret-down" class="selectIcon" [class.selectable]="!disabled()" />
|
|
2186
2278
|
}
|
|
2187
2279
|
</ion-item>
|
|
2188
2280
|
`, styles: [".dateTimeItem{min-height:48px;height:auto}.dateTimeItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.dateTimeItem .placeholder{color:var(--ion-color-medium)}.dateTimeItem .value{white-space:nowrap}.dateTimeItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.dateTimeItem.withLabel{min-height:58px;height:auto}.dateTimeItem.withLabel .selectIcon{padding-top:25px}.dateTimeItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"] }]
|
|
2189
|
-
}], propDecorators: { date: [{
|
|
2190
|
-
type: Input
|
|
2191
|
-
}], timePicker: [{
|
|
2192
|
-
type: Input
|
|
2193
|
-
}], manualTimePicker: [{
|
|
2194
|
-
type: Input
|
|
2195
|
-
}], useISOFormat: [{
|
|
2196
|
-
type: Input
|
|
2197
|
-
}], label: [{
|
|
2198
|
-
type: Input
|
|
2199
|
-
}], icon: [{
|
|
2200
|
-
type: Input
|
|
2201
|
-
}], iconColor: [{
|
|
2202
|
-
type: Input
|
|
2203
|
-
}], lines: [{
|
|
2204
|
-
type: Input
|
|
2205
|
-
}], color: [{
|
|
2206
|
-
type: Input
|
|
2207
|
-
}], placeholder: [{
|
|
2208
|
-
type: Input
|
|
2209
|
-
}], disabled: [{
|
|
2210
|
-
type: Input
|
|
2211
|
-
}], obligatory: [{
|
|
2212
|
-
type: Input
|
|
2213
|
-
}], hideClearButton: [{
|
|
2214
|
-
type: Input
|
|
2215
|
-
}], min: [{
|
|
2216
|
-
type: Input
|
|
2217
|
-
}], max: [{
|
|
2218
|
-
type: Input
|
|
2219
|
-
}], dateChange: [{
|
|
2220
|
-
type: Output
|
|
2221
|
-
}], iconSelect: [{
|
|
2222
|
-
type: Output
|
|
2223
|
-
}] } });
|
|
2281
|
+
}], propDecorators: { date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: false }] }], timePicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "timePicker", required: false }] }], manualTimePicker: [{ type: i0.Input, args: [{ isSignal: true, alias: "manualTimePicker", required: false }] }], useISOFormat: [{ type: i0.Input, args: [{ isSignal: true, alias: "useISOFormat", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], obligatory: [{ type: i0.Input, args: [{ isSignal: true, alias: "obligatory", required: false }] }], hideClearButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideClearButton", required: false }] }], min: [{ type: i0.Input, args: [{ isSignal: true, alias: "min", required: false }] }], max: [{ type: i0.Input, args: [{ isSignal: true, alias: "max", required: false }] }], dateChange: [{ type: i0.Output, args: ["dateChange"] }], iconSelect: [{ type: i0.Output, args: ["iconSelect"] }] } });
|
|
2224
2282
|
|
|
2225
2283
|
class IDEADurationComponent {
|
|
2226
2284
|
constructor() {
|
|
2285
|
+
/**
|
|
2286
|
+
* The title (hint) for the field.
|
|
2287
|
+
*/
|
|
2288
|
+
this.title = input(/* @ts-ignore */
|
|
2289
|
+
...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
|
|
2290
|
+
/**
|
|
2291
|
+
* If true, the component is disabled.
|
|
2292
|
+
*/
|
|
2293
|
+
this.disabled = input(/* @ts-ignore */
|
|
2294
|
+
...(ngDevMode ? [undefined, { debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
2295
|
+
/**
|
|
2296
|
+
* If true, the obligatory dot is shown.
|
|
2297
|
+
*/
|
|
2298
|
+
this.obligatory = input(/* @ts-ignore */
|
|
2299
|
+
...(ngDevMode ? [undefined, { debugName: "obligatory" }] : /* istanbul ignore next */ []));
|
|
2300
|
+
/**
|
|
2301
|
+
* Lines preferences for the item.
|
|
2302
|
+
*/
|
|
2303
|
+
this.lines = input(/* @ts-ignore */
|
|
2304
|
+
...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
2305
|
+
/**
|
|
2306
|
+
* The color for the component.
|
|
2307
|
+
*/
|
|
2308
|
+
this.color = input(/* @ts-ignore */
|
|
2309
|
+
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
2310
|
+
/**
|
|
2311
|
+
* Whether to show or hide the seconds input.
|
|
2312
|
+
*/
|
|
2313
|
+
this.hideSeconds = input(/* @ts-ignore */
|
|
2314
|
+
...(ngDevMode ? [undefined, { debugName: "hideSeconds" }] : /* istanbul ignore next */ []));
|
|
2315
|
+
/**
|
|
2316
|
+
* Whether to show a shortened version of the labels.
|
|
2317
|
+
*/
|
|
2318
|
+
this.shortLabels = input(/* @ts-ignore */
|
|
2319
|
+
...(ngDevMode ? [undefined, { debugName: "shortLabels" }] : /* istanbul ignore next */ []));
|
|
2227
2320
|
/**
|
|
2228
2321
|
* On change event. It emits a number of seconds representing the duration.
|
|
2229
2322
|
*/
|
|
2230
|
-
this.set =
|
|
2323
|
+
this.set = output();
|
|
2231
2324
|
this.default = this.hours = this.minutes = this.seconds = 0;
|
|
2232
2325
|
}
|
|
2233
2326
|
ngOnChanges(changes) {
|
|
@@ -2238,7 +2331,7 @@ class IDEADurationComponent {
|
|
|
2238
2331
|
refDate.setSeconds(refDate.getSeconds() + this.default);
|
|
2239
2332
|
this.hours = refDate.getHours();
|
|
2240
2333
|
this.minutes = refDate.getMinutes();
|
|
2241
|
-
this.seconds = this.hideSeconds ? 0 : refDate.getSeconds();
|
|
2334
|
+
this.seconds = this.hideSeconds() ? 0 : refDate.getSeconds();
|
|
2242
2335
|
}
|
|
2243
2336
|
}
|
|
2244
2337
|
/**
|
|
@@ -2256,7 +2349,7 @@ class IDEADurationComponent {
|
|
|
2256
2349
|
break;
|
|
2257
2350
|
case 'seconds':
|
|
2258
2351
|
const ss = Number(this.seconds) || 0;
|
|
2259
|
-
if (this.hideSeconds)
|
|
2352
|
+
if (this.hideSeconds())
|
|
2260
2353
|
this.seconds = 0;
|
|
2261
2354
|
else
|
|
2262
2355
|
this.seconds = ss > 59 ? 59 : ss < 0 ? 0 : ss;
|
|
@@ -2264,16 +2357,16 @@ class IDEADurationComponent {
|
|
|
2264
2357
|
}
|
|
2265
2358
|
this.set.emit(this.hours * 3600 + this.minutes * 60 + this.seconds);
|
|
2266
2359
|
}
|
|
2267
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2268
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2269
|
-
<ion-item class="durationItem" [lines]="lines" [color]="color" [title]="title || label">
|
|
2360
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEADurationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2361
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEADurationComponent, isStandalone: true, selector: "idea-duration", inputs: { default: { classPropertyName: "default", publicName: "default", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: false, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, obligatory: { classPropertyName: "obligatory", publicName: "obligatory", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, hideSeconds: { classPropertyName: "hideSeconds", publicName: "hideSeconds", isSignal: true, isRequired: false, transformFunction: null }, shortLabels: { classPropertyName: "shortLabels", publicName: "shortLabels", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { set: "set" }, usesOnChanges: true, ngImport: i0, template: `
|
|
2362
|
+
<ion-item class="durationItem" [lines]="lines()" [color]="color()" [title]="title() || label">
|
|
2270
2363
|
@if (icon) {
|
|
2271
2364
|
<ion-icon slot="start" [name]="icon" />
|
|
2272
2365
|
}
|
|
2273
2366
|
@if (!icon && label) {
|
|
2274
2367
|
<ion-label position="stacked">
|
|
2275
2368
|
{{ label }}
|
|
2276
|
-
@if (obligatory && !disabled) {
|
|
2369
|
+
@if (obligatory() && !disabled()) {
|
|
2277
2370
|
<ion-text class="obligatoryDot" />
|
|
2278
2371
|
}
|
|
2279
2372
|
</ion-label>
|
|
@@ -2284,58 +2377,60 @@ class IDEADurationComponent {
|
|
|
2284
2377
|
min="0"
|
|
2285
2378
|
max="23"
|
|
2286
2379
|
inputmode="numeric"
|
|
2287
|
-
[disabled]="disabled"
|
|
2380
|
+
[disabled]="disabled()"
|
|
2288
2381
|
[(ngModel)]="hours"
|
|
2289
2382
|
(ionChange)="setDuration('hours')"
|
|
2290
2383
|
/>
|
|
2291
2384
|
<ion-text>{{
|
|
2292
|
-
((shortLabels ? 'IDEA_UNCOMMON.DURATION.HH' : 'IDEA_UNCOMMON.DURATION.HOURS') | translate).toLowerCase()
|
|
2385
|
+
((shortLabels() ? 'IDEA_UNCOMMON.DURATION.HH' : 'IDEA_UNCOMMON.DURATION.HOURS') | translate).toLowerCase()
|
|
2293
2386
|
}}</ion-text>
|
|
2294
2387
|
<ion-input
|
|
2295
2388
|
type="number"
|
|
2296
2389
|
min="0"
|
|
2297
2390
|
max="59"
|
|
2298
2391
|
inputmode="numeric"
|
|
2299
|
-
[disabled]="disabled"
|
|
2392
|
+
[disabled]="disabled()"
|
|
2300
2393
|
[(ngModel)]="minutes"
|
|
2301
2394
|
(ionChange)="setDuration('minutes')"
|
|
2302
2395
|
/>
|
|
2303
2396
|
<ion-text>{{
|
|
2304
|
-
((shortLabels ? 'IDEA_UNCOMMON.DURATION.MM' : 'IDEA_UNCOMMON.DURATION.MINUTES') | translate).toLowerCase()
|
|
2397
|
+
((shortLabels() ? 'IDEA_UNCOMMON.DURATION.MM' : 'IDEA_UNCOMMON.DURATION.MINUTES') | translate).toLowerCase()
|
|
2305
2398
|
}}</ion-text>
|
|
2306
|
-
@if (!hideSeconds) {
|
|
2399
|
+
@if (!hideSeconds()) {
|
|
2307
2400
|
<ion-input
|
|
2308
2401
|
type="number"
|
|
2309
2402
|
min="0"
|
|
2310
2403
|
max="59"
|
|
2311
2404
|
inputmode="numeric"
|
|
2312
|
-
[disabled]="disabled"
|
|
2405
|
+
[disabled]="disabled()"
|
|
2313
2406
|
[(ngModel)]="seconds"
|
|
2314
2407
|
(ionChange)="setDuration('seconds')"
|
|
2315
2408
|
/>
|
|
2316
2409
|
}
|
|
2317
|
-
@if (!hideSeconds) {
|
|
2410
|
+
@if (!hideSeconds()) {
|
|
2318
2411
|
<ion-text>
|
|
2319
2412
|
{{
|
|
2320
|
-
(
|
|
2413
|
+
(
|
|
2414
|
+
(shortLabels() ? 'IDEA_UNCOMMON.DURATION.SS' : 'IDEA_UNCOMMON.DURATION.SECONDS') | translate
|
|
2415
|
+
).toLowerCase()
|
|
2321
2416
|
}}
|
|
2322
2417
|
</ion-text>
|
|
2323
2418
|
}
|
|
2324
2419
|
</ion-label>
|
|
2325
2420
|
</ion-item>
|
|
2326
|
-
`, isInline: true, styles: [".durationItem .value{max-width:none;width:100%;pointer-events:all}.durationItem .value ion-input{display:inline-block;max-width:35px;text-align:right}.durationItem .value ion-text{margin-left:10px;margin-right:20px;font-size:.8em}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "ngmodule", type:
|
|
2421
|
+
`, isInline: true, styles: [".durationItem .value{max-width:none;width:100%;pointer-events:all}.durationItem .value ion-input{display:inline-block;max-width:35px;text-align:right}.durationItem .value ion-text{margin-left:10px;margin-right:20px;font-size:.8em}\n"], dependencies: [{ kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2327
2422
|
}
|
|
2328
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2423
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEADurationComponent, decorators: [{
|
|
2329
2424
|
type: Component,
|
|
2330
|
-
args: [{ selector: 'idea-duration', imports: [IonText, IonLabel, IonIcon, IonItem,
|
|
2331
|
-
<ion-item class="durationItem" [lines]="lines" [color]="color" [title]="title || label">
|
|
2425
|
+
args: [{ selector: 'idea-duration', imports: [IonText, IonLabel, IonIcon, IonItem, FormsModule, IDEATranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
2426
|
+
<ion-item class="durationItem" [lines]="lines()" [color]="color()" [title]="title() || label">
|
|
2332
2427
|
@if (icon) {
|
|
2333
2428
|
<ion-icon slot="start" [name]="icon" />
|
|
2334
2429
|
}
|
|
2335
2430
|
@if (!icon && label) {
|
|
2336
2431
|
<ion-label position="stacked">
|
|
2337
2432
|
{{ label }}
|
|
2338
|
-
@if (obligatory && !disabled) {
|
|
2433
|
+
@if (obligatory() && !disabled()) {
|
|
2339
2434
|
<ion-text class="obligatoryDot" />
|
|
2340
2435
|
}
|
|
2341
2436
|
</ion-label>
|
|
@@ -2346,40 +2441,42 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2346
2441
|
min="0"
|
|
2347
2442
|
max="23"
|
|
2348
2443
|
inputmode="numeric"
|
|
2349
|
-
[disabled]="disabled"
|
|
2444
|
+
[disabled]="disabled()"
|
|
2350
2445
|
[(ngModel)]="hours"
|
|
2351
2446
|
(ionChange)="setDuration('hours')"
|
|
2352
2447
|
/>
|
|
2353
2448
|
<ion-text>{{
|
|
2354
|
-
((shortLabels ? 'IDEA_UNCOMMON.DURATION.HH' : 'IDEA_UNCOMMON.DURATION.HOURS') | translate).toLowerCase()
|
|
2449
|
+
((shortLabels() ? 'IDEA_UNCOMMON.DURATION.HH' : 'IDEA_UNCOMMON.DURATION.HOURS') | translate).toLowerCase()
|
|
2355
2450
|
}}</ion-text>
|
|
2356
2451
|
<ion-input
|
|
2357
2452
|
type="number"
|
|
2358
2453
|
min="0"
|
|
2359
2454
|
max="59"
|
|
2360
2455
|
inputmode="numeric"
|
|
2361
|
-
[disabled]="disabled"
|
|
2456
|
+
[disabled]="disabled()"
|
|
2362
2457
|
[(ngModel)]="minutes"
|
|
2363
2458
|
(ionChange)="setDuration('minutes')"
|
|
2364
2459
|
/>
|
|
2365
2460
|
<ion-text>{{
|
|
2366
|
-
((shortLabels ? 'IDEA_UNCOMMON.DURATION.MM' : 'IDEA_UNCOMMON.DURATION.MINUTES') | translate).toLowerCase()
|
|
2461
|
+
((shortLabels() ? 'IDEA_UNCOMMON.DURATION.MM' : 'IDEA_UNCOMMON.DURATION.MINUTES') | translate).toLowerCase()
|
|
2367
2462
|
}}</ion-text>
|
|
2368
|
-
@if (!hideSeconds) {
|
|
2463
|
+
@if (!hideSeconds()) {
|
|
2369
2464
|
<ion-input
|
|
2370
2465
|
type="number"
|
|
2371
2466
|
min="0"
|
|
2372
2467
|
max="59"
|
|
2373
2468
|
inputmode="numeric"
|
|
2374
|
-
[disabled]="disabled"
|
|
2469
|
+
[disabled]="disabled()"
|
|
2375
2470
|
[(ngModel)]="seconds"
|
|
2376
2471
|
(ionChange)="setDuration('seconds')"
|
|
2377
2472
|
/>
|
|
2378
2473
|
}
|
|
2379
|
-
@if (!hideSeconds) {
|
|
2474
|
+
@if (!hideSeconds()) {
|
|
2380
2475
|
<ion-text>
|
|
2381
2476
|
{{
|
|
2382
|
-
(
|
|
2477
|
+
(
|
|
2478
|
+
(shortLabels() ? 'IDEA_UNCOMMON.DURATION.SS' : 'IDEA_UNCOMMON.DURATION.SECONDS') | translate
|
|
2479
|
+
).toLowerCase()
|
|
2383
2480
|
}}
|
|
2384
2481
|
</ion-text>
|
|
2385
2482
|
}
|
|
@@ -2392,23 +2489,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2392
2489
|
type: Input
|
|
2393
2490
|
}], icon: [{
|
|
2394
2491
|
type: Input
|
|
2395
|
-
}], title: [{
|
|
2396
|
-
type: Input
|
|
2397
|
-
}], disabled: [{
|
|
2398
|
-
type: Input
|
|
2399
|
-
}], obligatory: [{
|
|
2400
|
-
type: Input
|
|
2401
|
-
}], lines: [{
|
|
2402
|
-
type: Input
|
|
2403
|
-
}], color: [{
|
|
2404
|
-
type: Input
|
|
2405
|
-
}], hideSeconds: [{
|
|
2406
|
-
type: Input
|
|
2407
|
-
}], shortLabels: [{
|
|
2408
|
-
type: Input
|
|
2409
|
-
}], set: [{
|
|
2410
|
-
type: Output
|
|
2411
|
-
}] } });
|
|
2492
|
+
}], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], obligatory: [{ type: i0.Input, args: [{ isSignal: true, alias: "obligatory", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], hideSeconds: [{ type: i0.Input, args: [{ isSignal: true, alias: "hideSeconds", required: false }] }], shortLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortLabels", required: false }] }], set: [{ type: i0.Output, args: ["set"] }] } });
|
|
2412
2493
|
|
|
2413
2494
|
class IDEAEchoPage {
|
|
2414
2495
|
constructor() {
|
|
@@ -2547,8 +2628,8 @@ class IDEAEchoPage {
|
|
|
2547
2628
|
this._loading.hide();
|
|
2548
2629
|
}
|
|
2549
2630
|
}
|
|
2550
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2551
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2631
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAEchoPage, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2632
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAEchoPage, isStandalone: true, selector: "idea-echo", ngImport: i0, template: `
|
|
2552
2633
|
<ion-content>
|
|
2553
2634
|
<div class="flexBox">
|
|
2554
2635
|
<ion-card class="echoCard maxWidthContainer">
|
|
@@ -2577,21 +2658,11 @@ class IDEAEchoPage {
|
|
|
2577
2658
|
</ion-card>
|
|
2578
2659
|
</div>
|
|
2579
2660
|
</ion-content>
|
|
2580
|
-
`, isInline: true, styles: [".echoCard{min-width:300px;padding:30px 20px;text-align:center}.echoCard ion-img{width:80px;display:block;margin:0 auto}.echoCard ion-icon{font-size:1.8em}.echoCard ion-card-content{margin-bottom:20px;font-size:1.2em}.echoCard ion-card-content p.youCanCloseMe{margin-top:12px}\n"], dependencies: [{ kind: "
|
|
2661
|
+
`, isInline: true, styles: [".echoCard{min-width:300px;padding:30px 20px;text-align:center}.echoCard ion-img{width:80px;display:block;margin:0 auto}.echoCard ion-icon{font-size:1.8em}.echoCard ion-card-content{margin-bottom:20px;font-size:1.2em}.echoCard ion-card-content p.youCanCloseMe{margin-top:12px}\n"], dependencies: [{ kind: "component", type: IonCardContent, selector: "ion-card-content", inputs: ["mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonCardTitle, selector: "ion-card-title", inputs: ["color", "mode"] }, { kind: "component", type: IonCardHeader, selector: "ion-card-header", inputs: ["color", "mode", "translucent"] }, { kind: "component", type: IonImg, selector: "ion-img", inputs: ["alt", "src"] }, { kind: "component", type: IonCard, selector: "ion-card", inputs: ["button", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2581
2662
|
}
|
|
2582
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2663
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAEchoPage, decorators: [{
|
|
2583
2664
|
type: Component,
|
|
2584
|
-
args: [{ selector: 'idea-echo', imports: [
|
|
2585
|
-
CommonModule,
|
|
2586
|
-
IDEATranslatePipe,
|
|
2587
|
-
IonCardContent,
|
|
2588
|
-
IonIcon,
|
|
2589
|
-
IonCardTitle,
|
|
2590
|
-
IonCardHeader,
|
|
2591
|
-
IonImg,
|
|
2592
|
-
IonCard,
|
|
2593
|
-
IonContent
|
|
2594
|
-
], template: `
|
|
2665
|
+
args: [{ selector: 'idea-echo', imports: [IDEATranslatePipe, IonCardContent, IonIcon, IonCardTitle, IonCardHeader, IonImg, IonCard, IonContent], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
2595
2666
|
<ion-content>
|
|
2596
2667
|
<div class="flexBox">
|
|
2597
2668
|
<ion-card class="echoCard maxWidthContainer">
|
|
@@ -2640,18 +2711,18 @@ const ideaEchoRoutes = [
|
|
|
2640
2711
|
];
|
|
2641
2712
|
|
|
2642
2713
|
class IDEAMDEToolbarComponent {
|
|
2643
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2644
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
2714
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAMDEToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2715
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.2", type: IDEAMDEToolbarComponent, isStandalone: true, selector: "idea-mde-toolbar", ngImport: i0, template: `
|
|
2645
2716
|
<div class="mdeToolbar">
|
|
2646
2717
|
<b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>
|
|
2647
2718
|
<i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>
|
|
2648
2719
|
~{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.STRIKE' | translate }}~
|
|
2649
2720
|
</div>
|
|
2650
|
-
`, isInline: true, styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar b,.mdeToolbar i{padding-right:5px}\n"], dependencies: [{ kind: "
|
|
2721
|
+
`, isInline: true, styles: [".mdeToolbar{text-align:right;color:#aaa;padding:5px 0;font-size:.9em}.mdeToolbar b,.mdeToolbar i{padding-right:5px}\n"], dependencies: [{ kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2651
2722
|
}
|
|
2652
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2723
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAMDEToolbarComponent, decorators: [{
|
|
2653
2724
|
type: Component,
|
|
2654
|
-
args: [{ selector: 'idea-mde-toolbar', imports: [
|
|
2725
|
+
args: [{ selector: 'idea-mde-toolbar', imports: [IDEATranslatePipe], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
2655
2726
|
<div class="mdeToolbar">
|
|
2656
2727
|
<b>**{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.BOLD' | translate }}**</b>
|
|
2657
2728
|
<i>*{{ 'IDEA_UNCOMMON.MDE.TOOLBAR.ITALIC' | translate }}*</i>
|
|
@@ -2663,11 +2734,26 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2663
2734
|
class IDEAMDEComponent {
|
|
2664
2735
|
constructor() {
|
|
2665
2736
|
this._modal = inject(ModalController);
|
|
2737
|
+
/**
|
|
2738
|
+
* The title of the modal.
|
|
2739
|
+
*/
|
|
2740
|
+
this.title = input(/* @ts-ignore */
|
|
2741
|
+
...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
|
|
2742
|
+
/**
|
|
2743
|
+
* If set, will customize the initial value of the editor.
|
|
2744
|
+
*/
|
|
2745
|
+
this.initialValue = input(/* @ts-ignore */
|
|
2746
|
+
...(ngDevMode ? [undefined, { debugName: "initialValue" }] : /* istanbul ignore next */ []));
|
|
2747
|
+
/**
|
|
2748
|
+
* Custom placeholder that should be displayed.
|
|
2749
|
+
*/
|
|
2750
|
+
this.placeholder = input(/* @ts-ignore */
|
|
2751
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
2666
2752
|
}
|
|
2667
2753
|
ngOnInit() {
|
|
2668
2754
|
this.id = this.id || 'mde';
|
|
2669
2755
|
this.variables = this.variables || new Array();
|
|
2670
|
-
this.value = this.initialValue;
|
|
2756
|
+
this.value = this.initialValue();
|
|
2671
2757
|
}
|
|
2672
2758
|
close() {
|
|
2673
2759
|
this._modal.dismiss();
|
|
@@ -2675,8 +2761,8 @@ class IDEAMDEComponent {
|
|
|
2675
2761
|
confirm() {
|
|
2676
2762
|
this._modal.dismiss(this.value);
|
|
2677
2763
|
}
|
|
2678
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
2679
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
2764
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAMDEComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2765
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAMDEComponent, isStandalone: true, selector: "idea-mde", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: false, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: false, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: false, isRequired: false, transformFunction: null }, variables: { classPropertyName: "variables", publicName: "variables", isSignal: false, isRequired: false, transformFunction: null }, initialValue: { classPropertyName: "initialValue", publicName: "initialValue", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
2680
2766
|
<ion-header>
|
|
2681
2767
|
<ion-toolbar color="ideaToolbar">
|
|
2682
2768
|
<ion-buttons slot="start">
|
|
@@ -2685,7 +2771,7 @@ class IDEAMDEComponent {
|
|
|
2685
2771
|
</ion-button>
|
|
2686
2772
|
</ion-buttons>
|
|
2687
2773
|
<ion-title>
|
|
2688
|
-
{{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
|
|
2774
|
+
{{ title() || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
|
|
2689
2775
|
</ion-title>
|
|
2690
2776
|
<ion-buttons slot="end">
|
|
2691
2777
|
<ion-button [title]="'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate" (click)="confirm()">
|
|
@@ -2715,15 +2801,14 @@ class IDEAMDEComponent {
|
|
|
2715
2801
|
}
|
|
2716
2802
|
</p>
|
|
2717
2803
|
}
|
|
2718
|
-
<ion-textarea rows="12" [id]="id" [placeholder]="placeholder" [(ngModel)]="value" />
|
|
2804
|
+
<ion-textarea rows="12" [id]="id" [placeholder]="placeholder()" [(ngModel)]="value" />
|
|
2719
2805
|
<idea-mde-toolbar />
|
|
2720
2806
|
</ion-content>
|
|
2721
|
-
`, isInline: true, styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
2807
|
+
`, isInline: true, styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: IDEAMDEToolbarComponent, selector: "idea-mde-toolbar" }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2722
2808
|
}
|
|
2723
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
2809
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAMDEComponent, decorators: [{
|
|
2724
2810
|
type: Component,
|
|
2725
2811
|
args: [{ selector: 'idea-mde', imports: [
|
|
2726
|
-
CommonModule,
|
|
2727
2812
|
FormsModule,
|
|
2728
2813
|
IDEATranslatePipe,
|
|
2729
2814
|
IDEAMDEToolbarComponent,
|
|
@@ -2736,7 +2821,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2736
2821
|
IonButtons,
|
|
2737
2822
|
IonToolbar,
|
|
2738
2823
|
IonHeader
|
|
2739
|
-
], template: `
|
|
2824
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
2740
2825
|
<ion-header>
|
|
2741
2826
|
<ion-toolbar color="ideaToolbar">
|
|
2742
2827
|
<ion-buttons slot="start">
|
|
@@ -2745,7 +2830,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2745
2830
|
</ion-button>
|
|
2746
2831
|
</ion-buttons>
|
|
2747
2832
|
<ion-title>
|
|
2748
|
-
{{ title || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
|
|
2833
|
+
{{ title() || ('IDEA_UNCOMMON.MDE.TITLE' | translate) }}
|
|
2749
2834
|
</ion-title>
|
|
2750
2835
|
<ion-buttons slot="end">
|
|
2751
2836
|
<ion-button [title]="'IDEA_UNCOMMON.MDE.SAVE_AND_CLOSE' | translate" (click)="confirm()">
|
|
@@ -2775,25 +2860,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
2775
2860
|
}
|
|
2776
2861
|
</p>
|
|
2777
2862
|
}
|
|
2778
|
-
<ion-textarea rows="12" [id]="id" [placeholder]="placeholder" [(ngModel)]="value" />
|
|
2863
|
+
<ion-textarea rows="12" [id]="id" [placeholder]="placeholder()" [(ngModel)]="value" />
|
|
2779
2864
|
<idea-mde-toolbar />
|
|
2780
2865
|
</ion-content>
|
|
2781
2866
|
`, styles: ["ion-content{--ion-background-color: #f4f4f4}h2.header{margin:0;font-size:.7em;font-weight:700;text-transform:uppercase}.description{margin-top:5px;margin-bottom:20px;font-size:.9em}.variables{margin:10px 5px;font-size:.8em}ion-textarea{--background: var(--ion-color-white);padding:10px}\n"] }]
|
|
2782
2867
|
}], propDecorators: { id: [{
|
|
2783
2868
|
type: Input
|
|
2784
|
-
}], title: [{
|
|
2785
|
-
type: Input
|
|
2786
|
-
}], header: [{
|
|
2869
|
+
}], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }], header: [{
|
|
2787
2870
|
type: Input
|
|
2788
2871
|
}], description: [{
|
|
2789
2872
|
type: Input
|
|
2790
2873
|
}], variables: [{
|
|
2791
2874
|
type: Input
|
|
2792
|
-
}], initialValue: [{
|
|
2793
|
-
type: Input
|
|
2794
|
-
}], placeholder: [{
|
|
2795
|
-
type: Input
|
|
2796
|
-
}] } });
|
|
2875
|
+
}], initialValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "initialValue", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }] } });
|
|
2797
2876
|
|
|
2798
2877
|
/**
|
|
2799
2878
|
* After how much time we need to request a synchronisation to keep the contents up-to-date.
|
|
@@ -3249,10 +3328,10 @@ class IDEAOfflineDataService {
|
|
|
3249
3328
|
forceFullSync() {
|
|
3250
3329
|
this._storage.clear().then(() => this.synchronize(true));
|
|
3251
3330
|
}
|
|
3252
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3253
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
3331
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineDataService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3332
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineDataService, providedIn: 'root' }); }
|
|
3254
3333
|
}
|
|
3255
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3334
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineDataService, decorators: [{
|
|
3256
3335
|
type: Injectable,
|
|
3257
3336
|
args: [{ providedIn: 'root' }]
|
|
3258
3337
|
}], ctorParameters: () => [] });
|
|
@@ -3273,52 +3352,56 @@ class CacheableResource {
|
|
|
3273
3352
|
class IDEACacheableResourceComponent {
|
|
3274
3353
|
constructor() {
|
|
3275
3354
|
this._offline = inject(IDEAOfflineDataService);
|
|
3355
|
+
/**
|
|
3356
|
+
* The resouece to manage.
|
|
3357
|
+
*/
|
|
3358
|
+
this.resource = input(/* @ts-ignore */
|
|
3359
|
+
...(ngDevMode ? [undefined, { debugName: "resource" }] : /* istanbul ignore next */ []));
|
|
3276
3360
|
}
|
|
3277
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3278
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3361
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEACacheableResourceComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3362
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEACacheableResourceComponent, isStandalone: true, selector: "idea-cacheable-resource", inputs: { resource: { classPropertyName: "resource", publicName: "resource", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
3279
3363
|
<ion-item class="cacheableResourceItem">
|
|
3280
|
-
<ion-label>{{ resource.description }}</ion-label>
|
|
3281
|
-
@if (resource.error) {
|
|
3364
|
+
<ion-label>{{ resource().description }}</ion-label>
|
|
3365
|
+
@if (resource().error) {
|
|
3282
3366
|
<ion-icon slot="end" name="alert-circle" color="danger" />
|
|
3283
3367
|
}
|
|
3284
|
-
@if (!resource.error && _offline.synchronizing && resource.synchronizing) {
|
|
3368
|
+
@if (!resource().error && _offline.synchronizing && resource().synchronizing) {
|
|
3285
3369
|
<ion-spinner slot="end" name="dots" />
|
|
3286
3370
|
}
|
|
3287
|
-
@if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {
|
|
3371
|
+
@if (!resource().error && !resource().synchronizing && !_offline.requiresManualConfirmation) {
|
|
3288
3372
|
<ion-icon slot="end" name="checkmark" color="success" />
|
|
3289
3373
|
}
|
|
3290
|
-
@if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {
|
|
3374
|
+
@if (!resource().error && !resource().synchronizing && _offline.requiresManualConfirmation) {
|
|
3291
3375
|
<ion-icon slot="end" name="pause" color="dark" />
|
|
3292
3376
|
}
|
|
3293
3377
|
</ion-item>
|
|
3294
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
3378
|
+
`, isInline: true, dependencies: [{ kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3295
3379
|
}
|
|
3296
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEACacheableResourceComponent, decorators: [{
|
|
3297
3381
|
type: Component,
|
|
3298
3382
|
args: [{
|
|
3299
3383
|
selector: 'idea-cacheable-resource',
|
|
3300
|
-
imports: [
|
|
3384
|
+
imports: [IonSpinner, IonIcon, IonLabel, IonItem],
|
|
3385
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3301
3386
|
template: `
|
|
3302
3387
|
<ion-item class="cacheableResourceItem">
|
|
3303
|
-
<ion-label>{{ resource.description }}</ion-label>
|
|
3304
|
-
@if (resource.error) {
|
|
3388
|
+
<ion-label>{{ resource().description }}</ion-label>
|
|
3389
|
+
@if (resource().error) {
|
|
3305
3390
|
<ion-icon slot="end" name="alert-circle" color="danger" />
|
|
3306
3391
|
}
|
|
3307
|
-
@if (!resource.error && _offline.synchronizing && resource.synchronizing) {
|
|
3392
|
+
@if (!resource().error && _offline.synchronizing && resource().synchronizing) {
|
|
3308
3393
|
<ion-spinner slot="end" name="dots" />
|
|
3309
3394
|
}
|
|
3310
|
-
@if (!resource.error && !resource.synchronizing && !_offline.requiresManualConfirmation) {
|
|
3395
|
+
@if (!resource().error && !resource().synchronizing && !_offline.requiresManualConfirmation) {
|
|
3311
3396
|
<ion-icon slot="end" name="checkmark" color="success" />
|
|
3312
3397
|
}
|
|
3313
|
-
@if (!resource.error && !resource.synchronizing && _offline.requiresManualConfirmation) {
|
|
3398
|
+
@if (!resource().error && !resource().synchronizing && _offline.requiresManualConfirmation) {
|
|
3314
3399
|
<ion-icon slot="end" name="pause" color="dark" />
|
|
3315
3400
|
}
|
|
3316
3401
|
</ion-item>
|
|
3317
3402
|
`
|
|
3318
3403
|
}]
|
|
3319
|
-
}], propDecorators: { resource: [{
|
|
3320
|
-
type: Input
|
|
3321
|
-
}] } });
|
|
3404
|
+
}], propDecorators: { resource: [{ type: i0.Input, args: [{ isSignal: true, alias: "resource", required: false }] }] } });
|
|
3322
3405
|
|
|
3323
3406
|
class IDEAOfflineManagerComponent {
|
|
3324
3407
|
constructor() {
|
|
@@ -3387,10 +3470,10 @@ class IDEAOfflineManagerComponent {
|
|
|
3387
3470
|
close() {
|
|
3388
3471
|
this._modal.dismiss();
|
|
3389
3472
|
}
|
|
3390
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3391
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3473
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineManagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3474
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAOfflineManagerComponent, isStandalone: true, selector: "idea-offline-manager", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IDEACacheableResourceComponent, selector: "idea-cacheable-resource", inputs: ["resource"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: IDEALocalizedDatePipe, name: "dateLocale" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3392
3475
|
}
|
|
3393
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3476
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineManagerComponent, decorators: [{
|
|
3394
3477
|
type: Component,
|
|
3395
3478
|
args: [{ selector: 'idea-offline-manager', imports: [
|
|
3396
3479
|
CommonModule,
|
|
@@ -3410,7 +3493,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3410
3493
|
IonButton,
|
|
3411
3494
|
IonToolbar,
|
|
3412
3495
|
IonHeader
|
|
3413
|
-
], template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"] }]
|
|
3496
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"] }]
|
|
3414
3497
|
}] });
|
|
3415
3498
|
|
|
3416
3499
|
class IDEAOfflineIndicatorComponent {
|
|
@@ -3423,15 +3506,18 @@ class IDEAOfflineIndicatorComponent {
|
|
|
3423
3506
|
/**
|
|
3424
3507
|
* Vertical position.
|
|
3425
3508
|
*/
|
|
3426
|
-
this.vertical = 'bottom'
|
|
3509
|
+
this.vertical = input('bottom', /* @ts-ignore */
|
|
3510
|
+
...(ngDevMode ? [{ debugName: "vertical" }] : /* istanbul ignore next */ []));
|
|
3427
3511
|
/**
|
|
3428
3512
|
* Horizontal position.
|
|
3429
3513
|
*/
|
|
3430
|
-
this.horizontal = 'start'
|
|
3514
|
+
this.horizontal = input('start', /* @ts-ignore */
|
|
3515
|
+
...(ngDevMode ? [{ debugName: "horizontal" }] : /* istanbul ignore next */ []));
|
|
3431
3516
|
/**
|
|
3432
3517
|
* Whether it is positionated on an edge.
|
|
3433
3518
|
*/
|
|
3434
|
-
this.edge = false
|
|
3519
|
+
this.edge = input(false, /* @ts-ignore */
|
|
3520
|
+
...(ngDevMode ? [{ debugName: "edge" }] : /* istanbul ignore next */ []));
|
|
3435
3521
|
}
|
|
3436
3522
|
async showStatus() {
|
|
3437
3523
|
if (this._offline.isOffline()) {
|
|
@@ -3450,12 +3536,12 @@ class IDEAOfflineIndicatorComponent {
|
|
|
3450
3536
|
modal.present();
|
|
3451
3537
|
}
|
|
3452
3538
|
}
|
|
3453
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3454
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3539
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineIndicatorComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3540
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAOfflineIndicatorComponent, isStandalone: true, selector: "idea-offline-indicator", inputs: { vertical: { classPropertyName: "vertical", publicName: "vertical", isSignal: true, isRequired: false, transformFunction: null }, horizontal: { classPropertyName: "horizontal", publicName: "horizontal", isSignal: true, isRequired: false, transformFunction: null }, edge: { classPropertyName: "edge", publicName: "edge", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
3455
3541
|
@if (
|
|
3456
3542
|
_platform.is('mobile') && (_offline.isOffline() || _offline.synchronizing || _offline.requiresManualConfirmation)
|
|
3457
3543
|
) {
|
|
3458
|
-
<ion-fab [vertical]="vertical" [horizontal]="horizontal" [edge]="edge">
|
|
3544
|
+
<ion-fab [vertical]="vertical()" [horizontal]="horizontal()" [edge]="edge()">
|
|
3459
3545
|
<ion-fab-button color="dark" size="small" (click)="showStatus()">
|
|
3460
3546
|
<!-- OFFLINE -->
|
|
3461
3547
|
@if (_offline.isOffline()) {
|
|
@@ -3472,18 +3558,19 @@ class IDEAOfflineIndicatorComponent {
|
|
|
3472
3558
|
</ion-fab-button>
|
|
3473
3559
|
</ion-fab>
|
|
3474
3560
|
}
|
|
3475
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
3561
|
+
`, isInline: true, dependencies: [{ kind: "component", type: IonFab, selector: "ion-fab", inputs: ["activated", "edge", "horizontal", "vertical"] }, { kind: "component", type: IonFabButton, selector: "ion-fab-button", inputs: ["activated", "closeIcon", "color", "disabled", "download", "href", "mode", "rel", "routerAnimation", "routerDirection", "show", "size", "target", "translucent", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3476
3562
|
}
|
|
3477
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3563
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAOfflineIndicatorComponent, decorators: [{
|
|
3478
3564
|
type: Component,
|
|
3479
3565
|
args: [{
|
|
3480
3566
|
selector: 'idea-offline-indicator',
|
|
3481
|
-
imports: [
|
|
3567
|
+
imports: [IonFab, IonFabButton, IonIcon],
|
|
3568
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3482
3569
|
template: `
|
|
3483
3570
|
@if (
|
|
3484
3571
|
_platform.is('mobile') && (_offline.isOffline() || _offline.synchronizing || _offline.requiresManualConfirmation)
|
|
3485
3572
|
) {
|
|
3486
|
-
<ion-fab [vertical]="vertical" [horizontal]="horizontal" [edge]="edge">
|
|
3573
|
+
<ion-fab [vertical]="vertical()" [horizontal]="horizontal()" [edge]="edge()">
|
|
3487
3574
|
<ion-fab-button color="dark" size="small" (click)="showStatus()">
|
|
3488
3575
|
<!-- OFFLINE -->
|
|
3489
3576
|
@if (_offline.isOffline()) {
|
|
@@ -3502,13 +3589,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3502
3589
|
}
|
|
3503
3590
|
`
|
|
3504
3591
|
}]
|
|
3505
|
-
}], propDecorators: { vertical: [{
|
|
3506
|
-
type: Input
|
|
3507
|
-
}], horizontal: [{
|
|
3508
|
-
type: Input
|
|
3509
|
-
}], edge: [{
|
|
3510
|
-
type: Input
|
|
3511
|
-
}] } });
|
|
3592
|
+
}], propDecorators: { vertical: [{ type: i0.Input, args: [{ isSignal: true, alias: "vertical", required: false }] }], horizontal: [{ type: i0.Input, args: [{ isSignal: true, alias: "horizontal", required: false }] }], edge: [{ type: i0.Input, args: [{ isSignal: true, alias: "edge", required: false }] }] } });
|
|
3512
3593
|
|
|
3513
3594
|
class IDEASentimentComponent {
|
|
3514
3595
|
constructor() {
|
|
@@ -3516,10 +3597,25 @@ class IDEASentimentComponent {
|
|
|
3516
3597
|
this._API = inject(IDEAAWSAPIService);
|
|
3517
3598
|
this._translate = inject(IDEATranslationsService);
|
|
3518
3599
|
this._offline = inject(IDEAOfflineService);
|
|
3600
|
+
/**
|
|
3601
|
+
* The input text.
|
|
3602
|
+
*/
|
|
3603
|
+
this.text = input(/* @ts-ignore */
|
|
3604
|
+
...(ngDevMode ? [undefined, { debugName: "text" }] : /* istanbul ignore next */ []));
|
|
3605
|
+
/**
|
|
3606
|
+
* Lines preferences for the item.
|
|
3607
|
+
*/
|
|
3608
|
+
this.lines = input(/* @ts-ignore */
|
|
3609
|
+
...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
3610
|
+
/**
|
|
3611
|
+
* The color for the component.
|
|
3612
|
+
*/
|
|
3613
|
+
this.color = input(/* @ts-ignore */
|
|
3614
|
+
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
3519
3615
|
/**
|
|
3520
3616
|
* Triggers when the sentiment change.
|
|
3521
3617
|
*/
|
|
3522
|
-
this.change =
|
|
3618
|
+
this.change = output();
|
|
3523
3619
|
}
|
|
3524
3620
|
ngOnChanges(changes) {
|
|
3525
3621
|
if (changes.text.previousValue !== changes.text.currentValue)
|
|
@@ -3532,7 +3628,7 @@ class IDEASentimentComponent {
|
|
|
3532
3628
|
try {
|
|
3533
3629
|
const { sentiment } = await this._API.postResource('sentiment', {
|
|
3534
3630
|
idea: true,
|
|
3535
|
-
body: { project: this._env.idea.project, language: this._translate.getCurrentLang(), text: this.text }
|
|
3631
|
+
body: { project: this._env.idea.project, language: this._translate.getCurrentLang(), text: this.text() }
|
|
3536
3632
|
});
|
|
3537
3633
|
this.sentiment = sentiment;
|
|
3538
3634
|
this.change.emit(this.sentiment);
|
|
@@ -3557,10 +3653,10 @@ class IDEASentimentComponent {
|
|
|
3557
3653
|
return 'light';
|
|
3558
3654
|
}
|
|
3559
3655
|
}
|
|
3560
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3561
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
3562
|
-
@if (text && _offline.isOnline()) {
|
|
3563
|
-
<ion-item [lines]="lines" [color]="color">
|
|
3656
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEASentimentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3657
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEASentimentComponent, isStandalone: true, selector: "idea-sentiment", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, usesOnChanges: true, ngImport: i0, template: `
|
|
3658
|
+
@if (text() && _offline.isOnline()) {
|
|
3659
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
3564
3660
|
@if (!sentiment) {
|
|
3565
3661
|
<ion-spinner slot="end" size="small" />
|
|
3566
3662
|
}
|
|
@@ -3576,16 +3672,17 @@ class IDEASentimentComponent {
|
|
|
3576
3672
|
}
|
|
3577
3673
|
</ion-item>
|
|
3578
3674
|
}
|
|
3579
|
-
`, isInline: true, dependencies: [{ kind: "
|
|
3675
|
+
`, isInline: true, dependencies: [{ kind: "component", type: IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3580
3676
|
}
|
|
3581
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3677
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEASentimentComponent, decorators: [{
|
|
3582
3678
|
type: Component,
|
|
3583
3679
|
args: [{
|
|
3584
3680
|
selector: 'idea-sentiment',
|
|
3585
|
-
imports: [
|
|
3681
|
+
imports: [IDEATranslatePipe, IonBadge, IonSpinner, IonItem],
|
|
3682
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3586
3683
|
template: `
|
|
3587
|
-
@if (text && _offline.isOnline()) {
|
|
3588
|
-
<ion-item [lines]="lines" [color]="color">
|
|
3684
|
+
@if (text() && _offline.isOnline()) {
|
|
3685
|
+
<ion-item [lines]="lines()" [color]="color()">
|
|
3589
3686
|
@if (!sentiment) {
|
|
3590
3687
|
<ion-spinner slot="end" size="small" />
|
|
3591
3688
|
}
|
|
@@ -3603,31 +3700,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3603
3700
|
}
|
|
3604
3701
|
`
|
|
3605
3702
|
}]
|
|
3606
|
-
}], propDecorators: { text: [{
|
|
3607
|
-
type: Input
|
|
3608
|
-
}], lines: [{
|
|
3609
|
-
type: Input
|
|
3610
|
-
}], color: [{
|
|
3611
|
-
type: Input
|
|
3612
|
-
}], change: [{
|
|
3613
|
-
type: Output
|
|
3614
|
-
}] } });
|
|
3703
|
+
}], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], change: [{ type: i0.Output, args: ["change"] }] } });
|
|
3615
3704
|
|
|
3616
3705
|
class IDEAFromTimeToTimeComponent {
|
|
3617
3706
|
constructor() {
|
|
3618
3707
|
this._modal = inject(ModalController);
|
|
3619
3708
|
this._translate = inject(IDEATranslationsService);
|
|
3709
|
+
/**
|
|
3710
|
+
* The time interval to set.
|
|
3711
|
+
*/
|
|
3712
|
+
this.timeInterval = input(/* @ts-ignore */
|
|
3713
|
+
...(ngDevMode ? [undefined, { debugName: "timeInterval" }] : /* istanbul ignore next */ []));
|
|
3620
3714
|
/**
|
|
3621
3715
|
* Whether we should start picking the time displaying the afternoon (PM) or the morning (AM, default).
|
|
3622
3716
|
*/
|
|
3717
|
+
// TODO: Skipped for migration because:
|
|
3718
|
+
// Your application code writes to the input. This prevents migration.
|
|
3623
3719
|
this.period = Periods.AM;
|
|
3720
|
+
/**
|
|
3721
|
+
* A time to use as lower limit for the possible choices.
|
|
3722
|
+
*/
|
|
3723
|
+
this.notEarlierThan = input(/* @ts-ignore */
|
|
3724
|
+
...(ngDevMode ? [undefined, { debugName: "notEarlierThan" }] : /* istanbul ignore next */ []));
|
|
3725
|
+
/**
|
|
3726
|
+
* A time to use as upper limit for the possible choices.
|
|
3727
|
+
*/
|
|
3728
|
+
this.notLaterThan = input(/* @ts-ignore */
|
|
3729
|
+
...(ngDevMode ? [undefined, { debugName: "notLaterThan" }] : /* istanbul ignore next */ []));
|
|
3730
|
+
/**
|
|
3731
|
+
* The title of the component.
|
|
3732
|
+
*/
|
|
3733
|
+
this.title = input(/* @ts-ignore */
|
|
3734
|
+
...(ngDevMode ? [undefined, { debugName: "title" }] : /* istanbul ignore next */ []));
|
|
3624
3735
|
this.Segments = Segments;
|
|
3625
3736
|
this.Periods = Periods;
|
|
3626
3737
|
}
|
|
3627
3738
|
ngOnInit() {
|
|
3628
3739
|
this.segment = Segments.FROM;
|
|
3629
3740
|
this.minutes = 30;
|
|
3630
|
-
this.timeIntervalWC = new TimeInterval(this.timeInterval);
|
|
3741
|
+
this.timeIntervalWC = new TimeInterval(this.timeInterval());
|
|
3631
3742
|
}
|
|
3632
3743
|
setInterval(hours, minutes) {
|
|
3633
3744
|
// adjust the hour based on the start of the interval and the settings of am/pm
|
|
@@ -3690,10 +3801,10 @@ class IDEAFromTimeToTimeComponent {
|
|
|
3690
3801
|
// adjust the hour based on the start of the interval and the settings of am/pm
|
|
3691
3802
|
hours = this.contextualizeHour(hours, minutes);
|
|
3692
3803
|
// check whether the selected time is inside the given boundaries
|
|
3693
|
-
|
|
3694
|
-
|
|
3695
|
-
|
|
3696
|
-
(!
|
|
3804
|
+
const notEarlierThan = this.notEarlierThan();
|
|
3805
|
+
const notLaterThan = this.notLaterThan();
|
|
3806
|
+
return ((!notEarlierThan || this.timeToMs(hours, minutes) >= notEarlierThan || this.timeToMs(hours, minutes) === 0) &&
|
|
3807
|
+
(!notLaterThan || this.timeToMs(hours, minutes) <= notLaterThan));
|
|
3697
3808
|
}
|
|
3698
3809
|
isHourOfOppositeMeridian(hours, minutes) {
|
|
3699
3810
|
// if the start of the interval hasn't been selected yet, skip it
|
|
@@ -3717,23 +3828,22 @@ class IDEAFromTimeToTimeComponent {
|
|
|
3717
3828
|
return refDate.toLocaleTimeString(this._translate.getCurrentLang(), dateOpts);
|
|
3718
3829
|
}
|
|
3719
3830
|
save() {
|
|
3720
|
-
this.timeInterval.load(this.timeIntervalWC);
|
|
3831
|
+
this.timeInterval().load(this.timeIntervalWC);
|
|
3721
3832
|
this._modal.dismiss(true);
|
|
3722
3833
|
}
|
|
3723
3834
|
reset() {
|
|
3724
|
-
this.timeInterval.reset();
|
|
3835
|
+
this.timeInterval().reset();
|
|
3725
3836
|
this._modal.dismiss(false);
|
|
3726
3837
|
}
|
|
3727
3838
|
close() {
|
|
3728
3839
|
this._modal.dismiss();
|
|
3729
3840
|
}
|
|
3730
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3731
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.16", type: IDEAFromTimeToTimeComponent, isStandalone: true, selector: "idea-from-time-to-time", inputs: { timeInterval: "timeInterval", period: "period", notEarlierThan: "notEarlierThan", notLaterThan: "notLaterThan", title: "title" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(timeIntervalWC.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonSegmentButton, selector: "ion-segment-button", inputs: ["contentId", "disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }] }); }
|
|
3841
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAFromTimeToTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
3842
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEAFromTimeToTimeComponent, isStandalone: true, selector: "idea-from-time-to-time", inputs: { timeInterval: { classPropertyName: "timeInterval", publicName: "timeInterval", isSignal: true, isRequired: false, transformFunction: null }, period: { classPropertyName: "period", publicName: "period", isSignal: false, isRequired: false, transformFunction: null }, notEarlierThan: { classPropertyName: "notEarlierThan", publicName: "notEarlierThan", isSignal: true, isRequired: false, transformFunction: null }, notLaterThan: { classPropertyName: "notLaterThan", publicName: "notLaterThan", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title() }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(timeIntervalWC.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $any($event?.detail?.value) || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $any($event?.detail?.value) || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"], dependencies: [{ kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonSegmentButton, selector: "ion-segment-button", inputs: ["contentId", "disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: IonRow, selector: "ion-row" }, { kind: "component", type: IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "pipe", type: IDEATranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3732
3843
|
}
|
|
3733
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
3844
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAFromTimeToTimeComponent, decorators: [{
|
|
3734
3845
|
type: Component,
|
|
3735
3846
|
args: [{ selector: 'idea-from-time-to-time', imports: [
|
|
3736
|
-
CommonModule,
|
|
3737
3847
|
IDEATranslatePipe,
|
|
3738
3848
|
IonLabel,
|
|
3739
3849
|
IonSegmentButton,
|
|
@@ -3749,18 +3859,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.16", ngImpo
|
|
|
3749
3859
|
IonButtons,
|
|
3750
3860
|
IonToolbar,
|
|
3751
3861
|
IonHeader
|
|
3752
|
-
], template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(timeIntervalWC.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"] }]
|
|
3753
|
-
}], propDecorators: { timeInterval: [{
|
|
3754
|
-
type: Input
|
|
3755
|
-
}], period: [{
|
|
3756
|
-
type: Input
|
|
3757
|
-
}], notEarlierThan: [{
|
|
3758
|
-
type: Input
|
|
3759
|
-
}], notLaterThan: [{
|
|
3760
|
-
type: Input
|
|
3761
|
-
}], title: [{
|
|
3862
|
+
], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title() }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(timeIntervalWC.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\"> </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\"> </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\"> </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $any($event?.detail?.value) || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $any($event?.detail?.value) || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"] }]
|
|
3863
|
+
}], propDecorators: { timeInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeInterval", required: false }] }], period: [{
|
|
3762
3864
|
type: Input
|
|
3763
|
-
}] } });
|
|
3865
|
+
}], notEarlierThan: [{ type: i0.Input, args: [{ isSignal: true, alias: "notEarlierThan", required: false }] }], notLaterThan: [{ type: i0.Input, args: [{ isSignal: true, alias: "notLaterThan", required: false }] }], title: [{ type: i0.Input, args: [{ isSignal: true, alias: "title", required: false }] }] } });
|
|
3764
3866
|
/**
|
|
3765
3867
|
* The two stages of the component, to pick the start and the end of the interval.
|
|
3766
3868
|
*/
|
|
@@ -3782,28 +3884,91 @@ class IDEATimeIntervalComponent {
|
|
|
3782
3884
|
constructor() {
|
|
3783
3885
|
this._modal = inject(ModalController);
|
|
3784
3886
|
this._translate = inject(IDEATranslationsService);
|
|
3887
|
+
this._cdr = inject(ChangeDetectorRef);
|
|
3888
|
+
/**
|
|
3889
|
+
* The time interval to set.
|
|
3890
|
+
*/
|
|
3891
|
+
this.timeInterval = input(/* @ts-ignore */
|
|
3892
|
+
...(ngDevMode ? [undefined, { debugName: "timeInterval" }] : /* istanbul ignore next */ []));
|
|
3785
3893
|
/**
|
|
3786
3894
|
* Whether we should start picking the time displaying the afternoon (PM) or the morning (AM, default).
|
|
3787
3895
|
*/
|
|
3788
|
-
this.period = Periods.AM
|
|
3896
|
+
this.period = input(Periods.AM, /* @ts-ignore */
|
|
3897
|
+
...(ngDevMode ? [{ debugName: "period" }] : /* istanbul ignore next */ []));
|
|
3898
|
+
/**
|
|
3899
|
+
* A time to use as lower limit for the possible choices.
|
|
3900
|
+
*/
|
|
3901
|
+
this.notEarlierThan = input(/* @ts-ignore */
|
|
3902
|
+
...(ngDevMode ? [undefined, { debugName: "notEarlierThan" }] : /* istanbul ignore next */ []));
|
|
3903
|
+
/**
|
|
3904
|
+
* A time to use as upper limit for the possible choices.
|
|
3905
|
+
*/
|
|
3906
|
+
this.notLaterThan = input(/* @ts-ignore */
|
|
3907
|
+
...(ngDevMode ? [undefined, { debugName: "notLaterThan" }] : /* istanbul ignore next */ []));
|
|
3908
|
+
/**
|
|
3909
|
+
* The label for the field.
|
|
3910
|
+
*/
|
|
3911
|
+
this.label = input(/* @ts-ignore */
|
|
3912
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
3913
|
+
/**
|
|
3914
|
+
* The icon for the field.
|
|
3915
|
+
*/
|
|
3916
|
+
this.icon = input(/* @ts-ignore */
|
|
3917
|
+
...(ngDevMode ? [undefined, { debugName: "icon" }] : /* istanbul ignore next */ []));
|
|
3918
|
+
/**
|
|
3919
|
+
* The color of the icon.
|
|
3920
|
+
*/
|
|
3921
|
+
this.iconColor = input(/* @ts-ignore */
|
|
3922
|
+
...(ngDevMode ? [undefined, { debugName: "iconColor" }] : /* istanbul ignore next */ []));
|
|
3923
|
+
/**
|
|
3924
|
+
* A placeholder for the field.
|
|
3925
|
+
*/
|
|
3926
|
+
this.placeholder = input(/* @ts-ignore */
|
|
3927
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
3928
|
+
/**
|
|
3929
|
+
* If true, the component is disabled.
|
|
3930
|
+
*/
|
|
3931
|
+
this.disabled = input(/* @ts-ignore */
|
|
3932
|
+
...(ngDevMode ? [undefined, { debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
3933
|
+
/**
|
|
3934
|
+
* If true, the field has a tappable effect when disabled.
|
|
3935
|
+
*/
|
|
3936
|
+
this.tappableWhenDisabled = input(/* @ts-ignore */
|
|
3937
|
+
...(ngDevMode ? [undefined, { debugName: "tappableWhenDisabled" }] : /* istanbul ignore next */ []));
|
|
3938
|
+
/**
|
|
3939
|
+
* If true, the obligatory dot is shown.
|
|
3940
|
+
*/
|
|
3941
|
+
this.obligatory = input(/* @ts-ignore */
|
|
3942
|
+
...(ngDevMode ? [undefined, { debugName: "obligatory" }] : /* istanbul ignore next */ []));
|
|
3943
|
+
/**
|
|
3944
|
+
* Lines preferences for the item.
|
|
3945
|
+
*/
|
|
3946
|
+
this.lines = input(/* @ts-ignore */
|
|
3947
|
+
...(ngDevMode ? [undefined, { debugName: "lines" }] : /* istanbul ignore next */ []));
|
|
3948
|
+
/**
|
|
3949
|
+
* The color for the component.
|
|
3950
|
+
*/
|
|
3951
|
+
this.color = input(/* @ts-ignore */
|
|
3952
|
+
...(ngDevMode ? [undefined, { debugName: "color" }] : /* istanbul ignore next */ []));
|
|
3789
3953
|
/**
|
|
3790
3954
|
* On select event.
|
|
3791
3955
|
*/
|
|
3792
|
-
this.select =
|
|
3956
|
+
this.select = output();
|
|
3793
3957
|
/**
|
|
3794
3958
|
* Icon select.
|
|
3795
3959
|
*/
|
|
3796
|
-
this.iconSelect =
|
|
3960
|
+
this.iconSelect = output();
|
|
3797
3961
|
/**
|
|
3798
3962
|
* On select (with the field disabled) event.
|
|
3799
3963
|
*/
|
|
3800
|
-
this.selectWhenDisabled =
|
|
3964
|
+
this.selectWhenDisabled = output();
|
|
3801
3965
|
this.isOpening = false;
|
|
3802
3966
|
}
|
|
3803
3967
|
ngOnInit() {
|
|
3804
3968
|
// when the language changes, set the locale
|
|
3805
3969
|
this.langChangeSubscription = this._translate.onLangChange.subscribe(() => {
|
|
3806
|
-
this.valueToDisplay = this.getValueToDisplay(this.timeInterval);
|
|
3970
|
+
this.valueToDisplay = this.getValueToDisplay(this.timeInterval());
|
|
3971
|
+
this._cdr.markForCheck();
|
|
3807
3972
|
});
|
|
3808
3973
|
}
|
|
3809
3974
|
ngOnDestroy() {
|
|
@@ -3828,25 +3993,26 @@ class IDEATimeIntervalComponent {
|
|
|
3828
3993
|
const modal = await this._modal.create({
|
|
3829
3994
|
component: IDEAFromTimeToTimeComponent,
|
|
3830
3995
|
componentProps: {
|
|
3831
|
-
timeInterval: this.timeInterval,
|
|
3832
|
-
period: this.period,
|
|
3833
|
-
notEarlierThan: this.notEarlierThan,
|
|
3834
|
-
notLaterThan: this.notLaterThan,
|
|
3835
|
-
title: this.label
|
|
3996
|
+
timeInterval: this.timeInterval(),
|
|
3997
|
+
period: this.period(),
|
|
3998
|
+
notEarlierThan: this.notEarlierThan(),
|
|
3999
|
+
notLaterThan: this.notLaterThan(),
|
|
4000
|
+
title: this.label()
|
|
3836
4001
|
}
|
|
3837
4002
|
});
|
|
3838
4003
|
modal.onDidDismiss().then((res) => {
|
|
3839
4004
|
// if the content changed, update the internal values and notify the parent component
|
|
3840
4005
|
if (res.data === true || res.data === false) {
|
|
3841
|
-
this.valueToDisplay = this.getValueToDisplay(this.timeInterval);
|
|
4006
|
+
this.valueToDisplay = this.getValueToDisplay(this.timeInterval());
|
|
3842
4007
|
this.select.emit();
|
|
4008
|
+
this._cdr.markForCheck();
|
|
3843
4009
|
}
|
|
3844
4010
|
});
|
|
3845
4011
|
modal.present();
|
|
3846
4012
|
this.isOpening = false;
|
|
3847
4013
|
}
|
|
3848
4014
|
doSelectWhenDisabled() {
|
|
3849
|
-
if (this.disabled)
|
|
4015
|
+
if (this.disabled())
|
|
3850
4016
|
this.selectWhenDisabled.emit();
|
|
3851
4017
|
}
|
|
3852
4018
|
doIconSelect(event) {
|
|
@@ -3854,129 +4020,97 @@ class IDEATimeIntervalComponent {
|
|
|
3854
4020
|
event.stopPropagation();
|
|
3855
4021
|
this.iconSelect.emit(event);
|
|
3856
4022
|
}
|
|
3857
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
3858
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
4023
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEATimeIntervalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
4024
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.2", type: IDEATimeIntervalComponent, isStandalone: true, selector: "idea-time-interval", inputs: { timeInterval: { classPropertyName: "timeInterval", publicName: "timeInterval", isSignal: true, isRequired: false, transformFunction: null }, period: { classPropertyName: "period", publicName: "period", isSignal: true, isRequired: false, transformFunction: null }, notEarlierThan: { classPropertyName: "notEarlierThan", publicName: "notEarlierThan", isSignal: true, isRequired: false, transformFunction: null }, notLaterThan: { classPropertyName: "notLaterThan", publicName: "notLaterThan", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconColor: { classPropertyName: "iconColor", publicName: "iconColor", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, tappableWhenDisabled: { classPropertyName: "tappableWhenDisabled", publicName: "tappableWhenDisabled", isSignal: true, isRequired: false, transformFunction: null }, obligatory: { classPropertyName: "obligatory", publicName: "obligatory", isSignal: true, isRequired: false, transformFunction: null }, lines: { classPropertyName: "lines", publicName: "lines", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { select: "select", iconSelect: "iconSelect", selectWhenDisabled: "selectWhenDisabled" }, usesOnChanges: true, ngImport: i0, template: `
|
|
3859
4025
|
<ion-item
|
|
3860
4026
|
class="timeIntervalItem"
|
|
3861
|
-
[color]="color"
|
|
3862
|
-
[lines]="lines"
|
|
3863
|
-
[button]="!disabled"
|
|
4027
|
+
[color]="color()"
|
|
4028
|
+
[lines]="lines()"
|
|
4029
|
+
[button]="!disabled()"
|
|
3864
4030
|
[disabled]="isOpening"
|
|
3865
|
-
[title]="placeholder || valueToDisplay || ''"
|
|
3866
|
-
[class.withLabel]="label"
|
|
3867
|
-
(click)="disabled ? doSelectWhenDisabled() : pickTimeInterval()"
|
|
4031
|
+
[title]="placeholder() || valueToDisplay || ''"
|
|
4032
|
+
[class.withLabel]="label()"
|
|
4033
|
+
(click)="disabled() ? doSelectWhenDisabled() : pickTimeInterval()"
|
|
3868
4034
|
>
|
|
3869
|
-
@if (icon) {
|
|
4035
|
+
@if (icon()) {
|
|
3870
4036
|
<ion-button
|
|
3871
4037
|
fill="clear"
|
|
3872
4038
|
slot="start"
|
|
3873
|
-
[color]="iconColor"
|
|
3874
|
-
[class.marginTop]="label"
|
|
4039
|
+
[color]="iconColor()"
|
|
4040
|
+
[class.marginTop]="label()"
|
|
3875
4041
|
(click)="doIconSelect($event)"
|
|
3876
4042
|
>
|
|
3877
|
-
<ion-icon [name]="icon" slot="icon-only" />
|
|
4043
|
+
<ion-icon [name]="icon()" slot="icon-only" />
|
|
3878
4044
|
</ion-button>
|
|
3879
4045
|
}
|
|
3880
|
-
@if (label) {
|
|
3881
|
-
<ion-label position="stacked" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
3882
|
-
{{ label }}
|
|
3883
|
-
@if (obligatory && !disabled) {
|
|
4046
|
+
@if (label()) {
|
|
4047
|
+
<ion-label position="stacked" [class.selectable]="!disabled() || tappableWhenDisabled()">
|
|
4048
|
+
{{ label() }}
|
|
4049
|
+
@if (obligatory() && !disabled()) {
|
|
3884
4050
|
<ion-text class="obligatoryDot" />
|
|
3885
4051
|
}
|
|
3886
4052
|
</ion-label>
|
|
3887
4053
|
}
|
|
3888
|
-
<ion-label class="description" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
3889
|
-
@if (!valueToDisplay && !disabled) {
|
|
3890
|
-
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
3891
|
-
{{ placeholder }}
|
|
4054
|
+
<ion-label class="description" [class.selectable]="!disabled() || tappableWhenDisabled()">
|
|
4055
|
+
@if (!valueToDisplay && !disabled()) {
|
|
4056
|
+
<ion-text class="placeholder" [class.selectable]="!disabled()">
|
|
4057
|
+
{{ placeholder() }}
|
|
3892
4058
|
</ion-text>
|
|
3893
4059
|
}
|
|
3894
4060
|
{{ valueToDisplay }}
|
|
3895
4061
|
</ion-label>
|
|
3896
|
-
@if (!disabled) {
|
|
3897
|
-
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
4062
|
+
@if (!disabled()) {
|
|
4063
|
+
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled()" />
|
|
3898
4064
|
}
|
|
3899
4065
|
</ion-item>
|
|
3900
|
-
`, isInline: true, styles: [".timeIntervalItem{min-height:48px;height:auto}.timeIntervalItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.timeIntervalItem .placeholder{color:var(--ion-color-medium)}.timeIntervalItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.timeIntervalItem.withLabel{min-height:58px;height:auto}.timeIntervalItem.withLabel .selectIcon{padding-top:25px}.timeIntervalItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] },
|
|
4066
|
+
`, isInline: true, styles: [".timeIntervalItem{min-height:48px;height:auto}.timeIntervalItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.timeIntervalItem .placeholder{color:var(--ion-color-medium)}.timeIntervalItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.timeIntervalItem.withLabel{min-height:58px;height:auto}.timeIntervalItem.withLabel .selectIcon{padding-top:25px}.timeIntervalItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"], dependencies: [{ kind: "component", type: IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { 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: IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
3901
4067
|
}
|
|
3902
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4068
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEATimeIntervalComponent, decorators: [{
|
|
3903
4069
|
type: Component,
|
|
3904
|
-
args: [{ selector: 'idea-time-interval', imports: [IonLabel, IonText, IonIcon, IonButton, IonItem,
|
|
4070
|
+
args: [{ selector: 'idea-time-interval', imports: [IonLabel, IonText, IonIcon, IonButton, IonItem], changeDetection: ChangeDetectionStrategy.OnPush, template: `
|
|
3905
4071
|
<ion-item
|
|
3906
4072
|
class="timeIntervalItem"
|
|
3907
|
-
[color]="color"
|
|
3908
|
-
[lines]="lines"
|
|
3909
|
-
[button]="!disabled"
|
|
4073
|
+
[color]="color()"
|
|
4074
|
+
[lines]="lines()"
|
|
4075
|
+
[button]="!disabled()"
|
|
3910
4076
|
[disabled]="isOpening"
|
|
3911
|
-
[title]="placeholder || valueToDisplay || ''"
|
|
3912
|
-
[class.withLabel]="label"
|
|
3913
|
-
(click)="disabled ? doSelectWhenDisabled() : pickTimeInterval()"
|
|
4077
|
+
[title]="placeholder() || valueToDisplay || ''"
|
|
4078
|
+
[class.withLabel]="label()"
|
|
4079
|
+
(click)="disabled() ? doSelectWhenDisabled() : pickTimeInterval()"
|
|
3914
4080
|
>
|
|
3915
|
-
@if (icon) {
|
|
4081
|
+
@if (icon()) {
|
|
3916
4082
|
<ion-button
|
|
3917
4083
|
fill="clear"
|
|
3918
4084
|
slot="start"
|
|
3919
|
-
[color]="iconColor"
|
|
3920
|
-
[class.marginTop]="label"
|
|
4085
|
+
[color]="iconColor()"
|
|
4086
|
+
[class.marginTop]="label()"
|
|
3921
4087
|
(click)="doIconSelect($event)"
|
|
3922
4088
|
>
|
|
3923
|
-
<ion-icon [name]="icon" slot="icon-only" />
|
|
4089
|
+
<ion-icon [name]="icon()" slot="icon-only" />
|
|
3924
4090
|
</ion-button>
|
|
3925
4091
|
}
|
|
3926
|
-
@if (label) {
|
|
3927
|
-
<ion-label position="stacked" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
3928
|
-
{{ label }}
|
|
3929
|
-
@if (obligatory && !disabled) {
|
|
4092
|
+
@if (label()) {
|
|
4093
|
+
<ion-label position="stacked" [class.selectable]="!disabled() || tappableWhenDisabled()">
|
|
4094
|
+
{{ label() }}
|
|
4095
|
+
@if (obligatory() && !disabled()) {
|
|
3930
4096
|
<ion-text class="obligatoryDot" />
|
|
3931
4097
|
}
|
|
3932
4098
|
</ion-label>
|
|
3933
4099
|
}
|
|
3934
|
-
<ion-label class="description" [class.selectable]="!disabled || tappableWhenDisabled">
|
|
3935
|
-
@if (!valueToDisplay && !disabled) {
|
|
3936
|
-
<ion-text class="placeholder" [class.selectable]="!disabled">
|
|
3937
|
-
{{ placeholder }}
|
|
4100
|
+
<ion-label class="description" [class.selectable]="!disabled() || tappableWhenDisabled()">
|
|
4101
|
+
@if (!valueToDisplay && !disabled()) {
|
|
4102
|
+
<ion-text class="placeholder" [class.selectable]="!disabled()">
|
|
4103
|
+
{{ placeholder() }}
|
|
3938
4104
|
</ion-text>
|
|
3939
4105
|
}
|
|
3940
4106
|
{{ valueToDisplay }}
|
|
3941
4107
|
</ion-label>
|
|
3942
|
-
@if (!disabled) {
|
|
3943
|
-
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled" />
|
|
4108
|
+
@if (!disabled()) {
|
|
4109
|
+
<ion-icon slot="end" name="caret-down" class="selectIcon" [class.selectable]="!disabled()" />
|
|
3944
4110
|
}
|
|
3945
4111
|
</ion-item>
|
|
3946
4112
|
`, styles: [".timeIntervalItem{min-height:48px;height:auto}.timeIntervalItem .description{margin:10px 0;height:20px;line-height:20px;width:100%}.timeIntervalItem .placeholder{color:var(--ion-color-medium)}.timeIntervalItem .selectIcon{margin:0;padding-left:4px;font-size:.8em;color:var(--ion-color-medium)}.timeIntervalItem.withLabel{min-height:58px;height:auto}.timeIntervalItem.withLabel .selectIcon{padding-top:25px}.timeIntervalItem.withLabel ion-button[slot=start]{margin-top:16px}.selectable{cursor:pointer}\n"] }]
|
|
3947
|
-
}], propDecorators: { timeInterval: [{
|
|
3948
|
-
type: Input
|
|
3949
|
-
}], period: [{
|
|
3950
|
-
type: Input
|
|
3951
|
-
}], notEarlierThan: [{
|
|
3952
|
-
type: Input
|
|
3953
|
-
}], notLaterThan: [{
|
|
3954
|
-
type: Input
|
|
3955
|
-
}], label: [{
|
|
3956
|
-
type: Input
|
|
3957
|
-
}], icon: [{
|
|
3958
|
-
type: Input
|
|
3959
|
-
}], iconColor: [{
|
|
3960
|
-
type: Input
|
|
3961
|
-
}], placeholder: [{
|
|
3962
|
-
type: Input
|
|
3963
|
-
}], disabled: [{
|
|
3964
|
-
type: Input
|
|
3965
|
-
}], tappableWhenDisabled: [{
|
|
3966
|
-
type: Input
|
|
3967
|
-
}], obligatory: [{
|
|
3968
|
-
type: Input
|
|
3969
|
-
}], lines: [{
|
|
3970
|
-
type: Input
|
|
3971
|
-
}], color: [{
|
|
3972
|
-
type: Input
|
|
3973
|
-
}], select: [{
|
|
3974
|
-
type: Output
|
|
3975
|
-
}], iconSelect: [{
|
|
3976
|
-
type: Output
|
|
3977
|
-
}], selectWhenDisabled: [{
|
|
3978
|
-
type: Output
|
|
3979
|
-
}] } });
|
|
4113
|
+
}], propDecorators: { timeInterval: [{ type: i0.Input, args: [{ isSignal: true, alias: "timeInterval", required: false }] }], period: [{ type: i0.Input, args: [{ isSignal: true, alias: "period", required: false }] }], notEarlierThan: [{ type: i0.Input, args: [{ isSignal: true, alias: "notEarlierThan", required: false }] }], notLaterThan: [{ type: i0.Input, args: [{ isSignal: true, alias: "notLaterThan", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconColor", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], tappableWhenDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "tappableWhenDisabled", required: false }] }], obligatory: [{ type: i0.Input, args: [{ isSignal: true, alias: "obligatory", required: false }] }], lines: [{ type: i0.Input, args: [{ isSignal: true, alias: "lines", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], select: [{ type: i0.Output, args: ["select"] }], iconSelect: [{ type: i0.Output, args: ["iconSelect"] }], selectWhenDisabled: [{ type: i0.Output, args: ["selectWhenDisabled"] }] } });
|
|
3980
4114
|
|
|
3981
4115
|
/**
|
|
3982
4116
|
* To communicate with an AWS API Gateway websocket istance.
|
|
@@ -4152,10 +4286,10 @@ class IDEAAWSAPISocketService {
|
|
|
4152
4286
|
minutesToMS(minutes) {
|
|
4153
4287
|
return minutes * 60 * 1000;
|
|
4154
4288
|
}
|
|
4155
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4156
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
4289
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAWSAPISocketService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4290
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAWSAPISocketService, providedIn: 'root' }); }
|
|
4157
4291
|
}
|
|
4158
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4292
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAAWSAPISocketService, decorators: [{
|
|
4159
4293
|
type: Injectable,
|
|
4160
4294
|
args: [{ providedIn: 'root' }]
|
|
4161
4295
|
}], ctorParameters: () => [] });
|
|
@@ -4204,10 +4338,10 @@ class IDEACachedResourcesService {
|
|
|
4204
4338
|
this.cacheKey = String(key);
|
|
4205
4339
|
await this.storage.set(this.cacheKeyIndex, key);
|
|
4206
4340
|
}
|
|
4207
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4208
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
4341
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEACachedResourcesService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4342
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEACachedResourcesService, providedIn: 'root' }); }
|
|
4209
4343
|
}
|
|
4210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEACachedResourcesService, decorators: [{
|
|
4211
4345
|
type: Injectable,
|
|
4212
4346
|
args: [{ providedIn: 'root' }]
|
|
4213
4347
|
}], ctorParameters: () => [] });
|
|
@@ -4254,10 +4388,10 @@ class IDEAPushNotificationsService {
|
|
|
4254
4388
|
if (permStatus.receive === 'granted')
|
|
4255
4389
|
PushNotifications.register();
|
|
4256
4390
|
}
|
|
4257
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4258
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
4391
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAPushNotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
4392
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAPushNotificationsService, providedIn: 'root' }); }
|
|
4259
4393
|
}
|
|
4260
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4394
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.2", ngImport: i0, type: IDEAPushNotificationsService, decorators: [{
|
|
4261
4395
|
type: Injectable,
|
|
4262
4396
|
args: [{ providedIn: 'root' }]
|
|
4263
4397
|
}], ctorParameters: () => [] });
|