|
4 | 4 | @switch (field.kind) {
|
5 | 5 | <!--TEXT-->
|
6 | 6 | @case ('TEXT') {
|
7 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 7 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
8 | 8 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
9 | 9 | <input
|
10 | 10 | matInput
|
11 | 11 | type="text"
|
12 | 12 | [formControlName]="field.name"
|
13 | 13 | [attr.minlength]="field.minLength"
|
14 | 14 | [attr.maxlength]="field.maxLength"
|
15 |
| - [placeholder]="!isDefaultLocale && data[field.name]" |
| 15 | + [placeholder]="!isDefaultLocale() && data[field.name]" |
16 | 16 | autocomplete="off" />
|
17 |
| - <!--<span matTextPrefix *ngIf="field.translatable && !isDefaultLocale"> |
18 |
| - <mat-slide-toggle [checked]="form.controls[field.name].enabled" (change)="markFiledAvailable($event, field)" /> |
19 |
| - </span>--> |
20 | 17 | @if (field.translatable) {
|
21 |
| - <mat-icon matIconSuffix matTooltip="The field is translatable">language</mat-icon> |
| 18 | + <button |
| 19 | + [matMenuTriggerFor]="tMenu" |
| 20 | + [disabled]="isDefaultLocale()" |
| 21 | + mat-icon-button |
| 22 | + matSuffix |
| 23 | + matTooltip="Translate the field with AI"> |
| 24 | + <mat-icon>translate</mat-icon> |
| 25 | + <mat-menu #tMenu="matMenu"> |
| 26 | + @for (locale of availableLocales(); track locale.id) { |
| 27 | + @if (locale.id !== selectedLocaleId()) { |
| 28 | + <button mat-menu-item (click)="translate(field.name, locale.id, selectedLocaleId())"> |
| 29 | + Translate from <b>{{ locale.name }}</b> to <b>{{ selectedLocale().name }}</b> |
| 30 | + </button> |
| 31 | + } |
| 32 | + } |
| 33 | + </mat-menu> |
| 34 | + </button> |
22 | 35 | }
|
23 | 36 | @if (field.description) {
|
24 | 37 | <mat-hint>{{ field.description }}</mat-hint>
|
|
33 | 46 | }
|
34 | 47 | <!--TEXTAREA-->
|
35 | 48 | @case ('TEXTAREA') {
|
36 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 49 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
37 | 50 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
38 | 51 | <textarea
|
39 | 52 | matInput
|
|
43 | 56 | [formControlName]="field.name"
|
44 | 57 | [attr.minLength]="field.minLength"
|
45 | 58 | [attr.maxlength]="field.maxLength"
|
46 |
| - [placeholder]="!isDefaultLocale && data[field.name]" |
| 59 | + [placeholder]="!isDefaultLocale() && data[field.name]" |
47 | 60 | autocomplete="off"></textarea>
|
48 | 61 | @if (field.translatable) {
|
49 |
| - <mat-icon matIconSuffix matTooltip="The field is translatable">language</mat-icon> |
| 62 | + <button |
| 63 | + [matMenuTriggerFor]="tMenu" |
| 64 | + [disabled]="isDefaultLocale()" |
| 65 | + mat-icon-button |
| 66 | + matSuffix |
| 67 | + matTooltip="Translate the field with AI"> |
| 68 | + <mat-icon>translate</mat-icon> |
| 69 | + <mat-menu #tMenu="matMenu"> |
| 70 | + @for (locale of availableLocales(); track locale.id) { |
| 71 | + @if (locale.id !== selectedLocaleId()) { |
| 72 | + <button mat-menu-item (click)="translate(field.name, locale.id, selectedLocaleId())"> |
| 73 | + Translate from <b>{{ locale.name }}</b> to <b>{{ selectedLocale().name }}</b> |
| 74 | + </button> |
| 75 | + } |
| 76 | + } |
| 77 | + </mat-menu> |
| 78 | + </button> |
50 | 79 | }
|
51 | 80 | @if (field.description) {
|
52 | 81 | <mat-hint>{{ field.description }}</mat-hint>
|
|
96 | 125 | }
|
97 | 126 | <!--NUMBER-->
|
98 | 127 | @case ('NUMBER') {
|
99 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 128 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
100 | 129 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
101 | 130 | <input
|
102 | 131 | matInput
|
103 | 132 | type="number"
|
104 | 133 | [formControlName]="field.name"
|
105 | 134 | [attr.min]="field.minValue"
|
106 | 135 | [attr.max]="field.maxValue"
|
107 |
| - [placeholder]="!isDefaultLocale && data[field.name]" |
| 136 | + [placeholder]="!isDefaultLocale() && data[field.name]" |
108 | 137 | autocomplete="off" />
|
109 | 138 | @if (field.translatable) {
|
110 | 139 | <mat-icon matIconSuffix matTooltip="The field is translatable">language</mat-icon>
|
|
119 | 148 | }
|
120 | 149 | <!--COLOR-->
|
121 | 150 | @case ('COLOR') {
|
122 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 151 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
123 | 152 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
124 | 153 | <input
|
125 | 154 | matInput
|
126 | 155 | type="color"
|
127 | 156 | [formControlName]="field.name"
|
128 | 157 | [attr.min]="field.minValue"
|
129 | 158 | [attr.max]="field.maxValue"
|
130 |
| - [placeholder]="!isDefaultLocale && data[field.name]" |
| 159 | + [placeholder]="!isDefaultLocale() && data[field.name]" |
131 | 160 | autocomplete="off" />
|
132 | 161 | @if (field.translatable) {
|
133 | 162 | <mat-icon matIconSuffix matTooltip="The field is translatable">language</mat-icon>
|
|
142 | 171 | }
|
143 | 172 | <!--DATE-->
|
144 | 173 | @case ('DATE') {
|
145 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 174 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
146 | 175 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
147 | 176 | <input
|
148 | 177 | matInput
|
149 | 178 | type="date"
|
150 | 179 | [formControlName]="field.name"
|
151 |
| - [placeholder]="!isDefaultLocale && data[field.name]" |
| 180 | + [placeholder]="!isDefaultLocale() && data[field.name]" |
152 | 181 | autocomplete="off" />
|
153 | 182 | @if (field.translatable) {
|
154 | 183 | <mat-icon matIconSuffix matTooltip="The field is translatable">language</mat-icon>
|
|
163 | 192 | }
|
164 | 193 | <!--DATE TIME-->
|
165 | 194 | @case ('DATETIME') {
|
166 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 195 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
167 | 196 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
168 | 197 | <input
|
169 | 198 | matInput
|
170 | 199 | type="datetime-local"
|
171 | 200 | [formControlName]="field.name"
|
172 |
| - [placeholder]="!isDefaultLocale && data[field.name]" |
| 201 | + [placeholder]="!isDefaultLocale() && data[field.name]" |
173 | 202 | autocomplete="off" />
|
174 | 203 | @if (field.translatable) {
|
175 | 204 | <mat-icon matIconSuffix matTooltip="The field is translatable">language</mat-icon>
|
|
202 | 231 | }
|
203 | 232 | <!--OPTION-->
|
204 | 233 | @case ('OPTION') {
|
205 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 234 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
206 | 235 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
207 | 236 | <mat-select [formControlName]="field.name">
|
208 | 237 | @if (!field.required) {
|
|
234 | 263 | }
|
235 | 264 | <!--OPTIONS-->
|
236 | 265 | @case ('OPTIONS') {
|
237 |
| - <mat-form-field [floatLabel]="isDefaultLocale ? 'auto' : 'always'"> |
| 266 | + <mat-form-field [floatLabel]="isDefaultLocale() ? 'auto' : 'always'"> |
238 | 267 | <mat-label>{{ field.displayName || field.name }}</mat-label>
|
239 | 268 | <mat-select [formControlName]="field.name" multiple>
|
240 | 269 | <!--Handle source not defined in previous versions-->
|
|
264 | 293 | <!--LINK-->
|
265 | 294 | @case ('LINK') {
|
266 | 295 | @if (form.controls[field.name]; as control) {
|
267 |
| - <ll-link-select [form]="control" [component]="field" [documents]="documents" [default]="!isDefaultLocale && data[field.name]" /> |
| 296 | + <ll-link-select |
| 297 | + [form]="control" |
| 298 | + [component]="field" |
| 299 | + [documents]="documents" |
| 300 | + [default]="!isDefaultLocale() && data[field.name]" /> |
268 | 301 | }
|
269 | 302 | }
|
270 | 303 | <!--REFERENCE-->
|
|
318 | 351 | {{ sch.displayName }} <span class="schema-id">#{{ sch.id }}</span>
|
319 | 352 | @if (sch.previewField) {
|
320 | 353 | <div matListItemLine>
|
321 |
| - {{ previewText(item, sch, locale) }} |
| 354 | + {{ previewText(item, sch, selectedLocaleId()) }} |
322 | 355 | </div>
|
323 | 356 | }
|
324 | 357 | </div>
|
|
371 | 404 | {{ sch.displayName }} <span class="schema-id">#{{ sch.id }}</span>
|
372 | 405 | @if (sch.previewField) {
|
373 | 406 | <div matListItemLine>
|
374 |
| - {{ previewText(item, sch, locale) }} |
| 407 | + {{ previewText(item, sch, selectedLocaleId()) }} |
375 | 408 | </div>
|
376 | 409 | }
|
377 | 410 | </div>
|
|
434 | 467 | <mat-expansion-panel-header>
|
435 | 468 | <mat-panel-title>EditDocumentSchema Form => {{ form?.valid }}</mat-panel-title>
|
436 | 469 | </mat-expansion-panel-header>
|
437 |
| - <pre>isDefaultLocale = {{ isDefaultLocale }}</pre> |
| 470 | + <pre>isDefaultLocale = {{ isDefaultLocale() }}</pre> |
438 | 471 | <pre>{{ form.value | json }}</pre>
|
439 | 472 | <pre>{{ form.errors | json }}</pre>
|
440 | 473 | </mat-expansion-panel>
|
|
0 commit comments