geonetwork-ui 2.4.0-dev.aa5f997e → 2.4.0-dev.ac57b75b
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/libs/api/metadata-converter/src/index.mjs +1 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.mjs +5 -5
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/read-parts.mjs +30 -2
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.mjs +31 -0
- package/esm2022/libs/api/metadata-converter/src/lib/iso19139/write-parts.mjs +23 -1
- package/esm2022/libs/api/metadata-converter/src/lib/xml-utils.mjs +6 -1
- package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +21 -4
- package/esm2022/libs/common/domain/src/lib/model/record/metadata.model.mjs +1 -1
- package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
- package/esm2022/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.mjs +138 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.mjs +21 -0
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.mjs +7 -6
- package/esm2022/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.mjs +19 -9
- package/esm2022/libs/feature/editor/src/lib/components/record-form/record-form.component.mjs +2 -1
- package/esm2022/libs/feature/editor/src/lib/fields.config.mjs +12 -2
- package/esm2022/libs/feature/map/src/lib/utils/map-utils.service.mjs +10 -5
- package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +35 -7
- package/esm2022/libs/feature/search/src/lib/state/search.facade.mjs +6 -2
- package/esm2022/libs/ui/elements/src/index.mjs +2 -1
- package/esm2022/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.mjs +27 -0
- package/esm2022/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.mjs +4 -3
- package/esm2022/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.mjs +2 -2
- package/esm2022/libs/ui/elements/src/lib/metadata-info/metadata-info.component.mjs +3 -3
- package/esm2022/libs/ui/elements/src/lib/sortable-list/sortable-list.component.mjs +6 -3
- package/esm2022/libs/ui/inputs/src/lib/image-input/image-input.component.mjs +11 -5
- package/esm2022/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.mjs +3 -3
- package/esm2022/libs/ui/layout/src/lib/interactive-table/interactive-table.component.mjs +3 -3
- package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +49 -11
- package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +18 -6
- package/esm2022/translations/de.json +16 -16
- package/esm2022/translations/en.json +9 -9
- package/esm2022/translations/es.json +9 -9
- package/esm2022/translations/fr.json +18 -18
- package/esm2022/translations/it.json +9 -9
- package/esm2022/translations/nl.json +9 -9
- package/esm2022/translations/pt.json +9 -9
- package/fesm2022/geonetwork-ui.mjs +627 -253
- package/fesm2022/geonetwork-ui.mjs.map +1 -1
- package/libs/api/metadata-converter/src/index.d.ts +0 -1
- package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts +8 -1
- package/libs/api/metadata-converter/src/lib/iso19139/read-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts +5 -0
- package/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.d.ts.map +1 -0
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts +3 -1
- package/libs/api/metadata-converter/src/lib/iso19139/write-parts.d.ts.map +1 -1
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts +1 -0
- package/libs/api/metadata-converter/src/lib/xml-utils.d.ts.map +1 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +6 -1
- package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts +2 -1
- package/libs/common/domain/src/lib/model/record/metadata.model.d.ts.map +1 -1
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +8 -0
- package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts +27 -0
- package/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts +11 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.d.ts.map +1 -0
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts +3 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts +5 -1
- package/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/components/record-form/record-form.component.d.ts.map +1 -1
- package/libs/feature/editor/src/lib/fields.config.d.ts +1 -0
- package/libs/feature/editor/src/lib/fields.config.d.ts.map +1 -1
- package/libs/feature/map/src/lib/utils/map-utils.service.d.ts.map +1 -1
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +11 -3
- package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
- package/libs/feature/search/src/lib/state/search.facade.d.ts +1 -0
- package/libs/feature/search/src/lib/state/search.facade.d.ts.map +1 -1
- package/libs/ui/elements/src/index.d.ts +1 -0
- package/libs/ui/elements/src/index.d.ts.map +1 -1
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts +18 -0
- package/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.d.ts.map +1 -0
- package/libs/ui/elements/src/lib/downloads-list/downloads-list.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/record-api-form/record-api-form.component.d.ts +1 -1
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts +3 -2
- package/libs/ui/elements/src/lib/sortable-list/sortable-list.component.d.ts.map +1 -1
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts +4 -2
- package/libs/ui/inputs/src/lib/image-input/image-input.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +10 -1
- package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -1
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +6 -2
- package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/libs/api/metadata-converter/src/index.ts +0 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geo2france.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/fixtures/geocat-ch.records.ts +37 -12
- package/src/libs/api/metadata-converter/src/lib/fixtures/metawal.records.ts +5 -1
- package/src/libs/api/metadata-converter/src/lib/iso19139/iso19139.converter.ts +4 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/read-parts.ts +72 -2
- package/src/libs/api/metadata-converter/src/lib/iso19139/utils/geometry.ts +39 -0
- package/src/libs/api/metadata-converter/src/lib/iso19139/write-parts.ts +70 -1
- package/src/libs/api/metadata-converter/src/lib/xml-utils.ts +8 -0
- package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +24 -4
- package/src/libs/common/domain/src/lib/model/record/metadata.model.ts +2 -1
- package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +10 -0
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.html +3 -1
- package/src/libs/feature/editor/src/lib/components/overview-upload/overview-upload.component.ts +117 -21
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.css +0 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.html +5 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-overviews/form-field-overviews.component.ts +22 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field-temporal-extents/form-field-temporal-extents.component.ts +8 -7
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.html +6 -0
- package/src/libs/feature/editor/src/lib/components/record-form/form-field/form-field.component.ts +13 -1
- package/src/libs/feature/editor/src/lib/components/record-form/record-form.component.ts +1 -0
- package/src/libs/feature/editor/src/lib/fields.config.ts +12 -1
- package/src/libs/feature/map/src/lib/utils/map-utils.service.ts +8 -4
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +2 -1
- package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +40 -3
- package/src/libs/feature/search/src/lib/state/search.facade.ts +6 -0
- package/src/libs/ui/elements/src/index.ts +1 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.css +0 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.html +12 -0
- package/src/libs/ui/elements/src/lib/confirmation-dialog/confirmation-dialog.component.ts +37 -0
- package/src/libs/ui/elements/src/lib/markdown-editor/markdown-editor.component.html +4 -1
- package/src/libs/ui/elements/src/lib/markdown-parser/markdown-parser.component.css +2 -1
- package/src/libs/ui/elements/src/lib/metadata-info/metadata-info.component.html +12 -8
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.html +3 -1
- package/src/libs/ui/elements/src/lib/sortable-list/sortable-list.component.ts +6 -2
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.html +1 -1
- package/src/libs/ui/inputs/src/lib/image-input/image-input.component.ts +7 -2
- package/src/libs/ui/layout/src/lib/form-field-wrapper/form-field-wrapper.component.html +1 -1
- package/src/libs/ui/layout/src/lib/interactive-table/interactive-table.component.html +1 -0
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +10 -1
- package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +55 -3
- package/src/libs/ui/search/src/lib/results-table/results-table.component.html +7 -2
- package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +9 -9
- package/translations/de.json +16 -16
- package/translations/en.json +9 -9
- package/translations/es.json +9 -9
- package/translations/fr.json +18 -18
- package/translations/it.json +9 -9
- package/translations/nl.json +9 -9
- package/translations/pt.json +9 -9
- package/translations/sk.json +9 -9
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, Inject } from '@angular/core'
|
|
2
|
+
import {
|
|
3
|
+
MAT_DIALOG_DATA,
|
|
4
|
+
MatDialogModule,
|
|
5
|
+
MatDialogRef,
|
|
6
|
+
} from '@angular/material/dialog'
|
|
7
|
+
import { ButtonComponent } from '../../../../../../libs/ui/inputs/src'
|
|
8
|
+
|
|
9
|
+
export interface ConfirmationDialogData {
|
|
10
|
+
title: string
|
|
11
|
+
message: string
|
|
12
|
+
confirmText: string
|
|
13
|
+
cancelText: string
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
@Component({
|
|
17
|
+
selector: 'gn-ui-confirmation-dialog',
|
|
18
|
+
templateUrl: './confirmation-dialog.component.html',
|
|
19
|
+
styleUrls: ['./confirmation-dialog.component.css'],
|
|
20
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
21
|
+
standalone: true,
|
|
22
|
+
imports: [MatDialogModule, ButtonComponent],
|
|
23
|
+
})
|
|
24
|
+
export class ConfirmationDialogComponent {
|
|
25
|
+
constructor(
|
|
26
|
+
public dialogRef: MatDialogRef<ConfirmationDialogComponent>,
|
|
27
|
+
@Inject(MAT_DIALOG_DATA) public data: ConfirmationDialogData
|
|
28
|
+
) {}
|
|
29
|
+
|
|
30
|
+
onConfirm() {
|
|
31
|
+
this.dialogRef.close(true)
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
onCancel() {
|
|
35
|
+
this.dialogRef.close(false)
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<div class="mb-6 md-description sm:mb-4 sm:pr-16">
|
|
2
2
|
<gn-ui-content-ghost ghostClass="h-32" [showContent]="fieldReady('abstract')">
|
|
3
3
|
<gn-ui-max-lines [maxLines]="6" *ngIf="metadata.abstract">
|
|
4
|
-
<div>
|
|
4
|
+
<div class="mb-6">
|
|
5
5
|
<gn-ui-markdown-parser
|
|
6
6
|
[textContent]="metadata.abstract"
|
|
7
7
|
></gn-ui-markdown-parser>
|
|
@@ -47,19 +47,23 @@
|
|
|
47
47
|
</ng-template>
|
|
48
48
|
</ng-container>
|
|
49
49
|
<ng-container *ngIf="legalConstraints.length">
|
|
50
|
-
<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
50
|
+
<div class="mb-6">
|
|
51
|
+
<gn-ui-markdown-parser
|
|
52
|
+
*ngFor="let constraint of legalConstraints"
|
|
53
|
+
[textContent]="constraint"
|
|
54
|
+
>
|
|
55
|
+
</gn-ui-markdown-parser>
|
|
56
|
+
</div>
|
|
55
57
|
</ng-container>
|
|
56
58
|
<ng-container *ngIf="otherConstraints.length">
|
|
57
59
|
<div gnUiLinkify *ngFor="let constraint of otherConstraints">
|
|
58
60
|
<h5 translate class="font-medium text-black text-sm mb-[2px] mt-[16px]">
|
|
59
61
|
record.metadata.otherConstraints
|
|
60
62
|
</h5>
|
|
61
|
-
<
|
|
62
|
-
|
|
63
|
+
<div class="mb-6">
|
|
64
|
+
<gn-ui-markdown-parser [textContent]="constraint">
|
|
65
|
+
</gn-ui-markdown-parser>
|
|
66
|
+
</div>
|
|
63
67
|
</div>
|
|
64
68
|
</ng-container>
|
|
65
69
|
|
|
@@ -12,7 +12,9 @@
|
|
|
12
12
|
class="sortable-list flex flex-col gap-3 p-2"
|
|
13
13
|
(cdkDropListDropped)="drop($event)"
|
|
14
14
|
>
|
|
15
|
-
<ng-container
|
|
15
|
+
<ng-container
|
|
16
|
+
*ngFor="let element of elements; index as index; trackBy: trackByFn"
|
|
17
|
+
>
|
|
16
18
|
<div class="sortable-box bg-white flex items-center" cdkDrag>
|
|
17
19
|
<span
|
|
18
20
|
cdkDragHandle
|
|
@@ -18,8 +18,8 @@ import { MatIconModule } from '@angular/material/icon'
|
|
|
18
18
|
import { ButtonComponent } from '../../../../../../libs/ui/inputs/src'
|
|
19
19
|
|
|
20
20
|
type DynamicElement = {
|
|
21
|
-
component: Type<
|
|
22
|
-
inputs: Record<string,
|
|
21
|
+
component: Type<unknown>
|
|
22
|
+
inputs: Record<string, unknown>
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
@Component({
|
|
@@ -53,4 +53,8 @@ export class SortableListComponent {
|
|
|
53
53
|
this.elements = this.elements.filter((_, i) => i !== index)
|
|
54
54
|
this.elementsChange.emit(this.elements)
|
|
55
55
|
}
|
|
56
|
+
|
|
57
|
+
trackByFn(index: number) {
|
|
58
|
+
return index
|
|
59
|
+
}
|
|
56
60
|
}
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
<div class="w-full h-full flex flex-col gap-2">
|
|
52
52
|
<label
|
|
53
53
|
gnUiFilesDrop
|
|
54
|
-
class="block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4"
|
|
54
|
+
class="block flex-1 border-2 border-dashed border-gray-300 rounded-lg p-6 flex flex-col items-center justify-center gap-4 hover:cursor-pointer"
|
|
55
55
|
(dragFilesOver)="handleDragFilesOver($event)"
|
|
56
56
|
(dropFiles)="handleDropFiles($event)"
|
|
57
57
|
>
|
|
@@ -16,6 +16,7 @@ import { ButtonComponent } from '../button/button.component'
|
|
|
16
16
|
import { FilesDropDirective } from '../files-drop/files-drop.directive'
|
|
17
17
|
import { TranslateModule } from '@ngx-translate/core'
|
|
18
18
|
import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
19
|
+
import { FormControl, ReactiveFormsModule } from '@angular/forms'
|
|
19
20
|
|
|
20
21
|
@Component({
|
|
21
22
|
selector: 'gn-ui-image-input',
|
|
@@ -30,11 +31,13 @@ import { marker } from '@biesbjerg/ngx-translate-extract-marker'
|
|
|
30
31
|
FilesDropDirective,
|
|
31
32
|
MatProgressSpinnerModule,
|
|
32
33
|
TranslateModule,
|
|
34
|
+
ReactiveFormsModule,
|
|
33
35
|
],
|
|
34
36
|
})
|
|
35
37
|
export class ImageInputComponent {
|
|
38
|
+
@Input() formControl!: FormControl
|
|
36
39
|
@Input() maxSizeMB: number
|
|
37
|
-
@Input() previewUrl?:
|
|
40
|
+
@Input() previewUrl?: URL
|
|
38
41
|
@Input() altText?: string
|
|
39
42
|
@Input() uploadProgress?: number
|
|
40
43
|
@Input() uploadError?: boolean
|
|
@@ -127,7 +130,8 @@ export class ImageInputComponent {
|
|
|
127
130
|
const file = new File([blob], name)
|
|
128
131
|
this.fileChange.emit(file)
|
|
129
132
|
},
|
|
130
|
-
error: () => {
|
|
133
|
+
error: (error) => {
|
|
134
|
+
console.error(error)
|
|
131
135
|
this.downloadError = true
|
|
132
136
|
this.cd.markForCheck()
|
|
133
137
|
this.urlChange.emit(this.urlInputValue)
|
|
@@ -165,6 +169,7 @@ export class ImageInputComponent {
|
|
|
165
169
|
}
|
|
166
170
|
|
|
167
171
|
handleDelete() {
|
|
172
|
+
this.formControl.markAsDirty()
|
|
168
173
|
this.delete.emit()
|
|
169
174
|
}
|
|
170
175
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<gn-ui-button
|
|
2
|
-
type="
|
|
2
|
+
type="light"
|
|
3
3
|
[matMenuTriggerFor]="menu"
|
|
4
4
|
(buttonClick)="openMenu()"
|
|
5
5
|
data-test="record-menu-button"
|
|
@@ -9,9 +9,18 @@
|
|
|
9
9
|
<mat-menu #menu="matMenu">
|
|
10
10
|
<button
|
|
11
11
|
mat-menu-item
|
|
12
|
+
[disabled]="!canDuplicate"
|
|
12
13
|
(click)="duplicate.emit()"
|
|
13
14
|
data-test="record-menu-duplicate-button"
|
|
14
15
|
>
|
|
15
16
|
<span translate>record.action.duplicate</span>
|
|
16
17
|
</button>
|
|
18
|
+
<button
|
|
19
|
+
mat-menu-item
|
|
20
|
+
[disabled]="!canDelete"
|
|
21
|
+
(click)="openDeleteConfirmationDialog()"
|
|
22
|
+
data-test="record-menu-delete-button"
|
|
23
|
+
>
|
|
24
|
+
<span translate>record.action.delete</span>
|
|
25
|
+
</button>
|
|
17
26
|
</mat-menu>
|
|
@@ -1,22 +1,74 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Component,
|
|
3
|
+
EventEmitter,
|
|
4
|
+
Input,
|
|
5
|
+
Output,
|
|
6
|
+
ViewChild,
|
|
7
|
+
} from '@angular/core'
|
|
8
|
+
import { MatDialog, MatDialogModule } from '@angular/material/dialog'
|
|
2
9
|
import { MatIconModule } from '@angular/material/icon'
|
|
3
10
|
import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu'
|
|
11
|
+
import { ConfirmationDialogComponent } from '../../../../../../../libs/ui/elements/src'
|
|
4
12
|
import { ButtonComponent } from '../../../../../../../libs/ui/inputs/src'
|
|
5
|
-
import { TranslateModule } from '@ngx-translate/core'
|
|
13
|
+
import { TranslateModule, TranslateService } from '@ngx-translate/core'
|
|
6
14
|
|
|
7
15
|
@Component({
|
|
8
16
|
selector: 'gn-ui-action-menu',
|
|
9
17
|
templateUrl: './action-menu.component.html',
|
|
10
18
|
styleUrls: ['./action-menu.component.css'],
|
|
11
19
|
standalone: true,
|
|
12
|
-
imports: [
|
|
20
|
+
imports: [
|
|
21
|
+
MatIconModule,
|
|
22
|
+
ButtonComponent,
|
|
23
|
+
MatMenuModule,
|
|
24
|
+
MatDialogModule,
|
|
25
|
+
ConfirmationDialogComponent,
|
|
26
|
+
TranslateModule,
|
|
27
|
+
],
|
|
13
28
|
})
|
|
14
29
|
export class ActionMenuComponent {
|
|
30
|
+
@Input() canDuplicate: boolean
|
|
31
|
+
@Input() canDelete: boolean
|
|
15
32
|
@Output() duplicate = new EventEmitter<void>()
|
|
33
|
+
@Output() delete = new EventEmitter<void>()
|
|
16
34
|
|
|
17
35
|
@ViewChild(MatMenuTrigger) trigger: MatMenuTrigger
|
|
18
36
|
|
|
37
|
+
constructor(
|
|
38
|
+
public dialog: MatDialog,
|
|
39
|
+
private translateService: TranslateService
|
|
40
|
+
) {}
|
|
41
|
+
|
|
19
42
|
openMenu() {
|
|
20
43
|
this.trigger.openMenu()
|
|
21
44
|
}
|
|
45
|
+
|
|
46
|
+
openDeleteConfirmationDialog() {
|
|
47
|
+
const dialogRef = this.dialog.open(ConfirmationDialogComponent, {
|
|
48
|
+
data: {
|
|
49
|
+
title: this.translateService.instant(
|
|
50
|
+
'editor.record.delete.confirmation.title'
|
|
51
|
+
),
|
|
52
|
+
message: this.translateService.instant(
|
|
53
|
+
'editor.record.delete.confirmation.message'
|
|
54
|
+
),
|
|
55
|
+
confirmText: this.translateService.instant(
|
|
56
|
+
'editor.record.delete.confirmation.confirmText'
|
|
57
|
+
),
|
|
58
|
+
cancelText: this.translateService.instant(
|
|
59
|
+
'editor.record.delete.confirmation.cancelText'
|
|
60
|
+
),
|
|
61
|
+
},
|
|
62
|
+
restoreFocus: false,
|
|
63
|
+
})
|
|
64
|
+
|
|
65
|
+
// Manually restore focus to the menu trigger since the element that
|
|
66
|
+
// opens the dialog won't be in the DOM any more when the dialog closes.
|
|
67
|
+
dialogRef.afterClosed().subscribe((confirmed) => {
|
|
68
|
+
this.trigger.focus()
|
|
69
|
+
if (confirmed) {
|
|
70
|
+
this.delete.emit()
|
|
71
|
+
}
|
|
72
|
+
})
|
|
73
|
+
}
|
|
22
74
|
}
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
<div class="flex flex-row items-center gap-2 max-w-full">
|
|
38
38
|
<span class="overflow-hidden text-ellipsis">{{ item.title }}</span>
|
|
39
39
|
<gn-ui-badge
|
|
40
|
-
*ngIf="
|
|
40
|
+
*ngIf="hasDraft(item)"
|
|
41
41
|
[style.--gn-ui-badge-padding]="'0.4em 0.6em'"
|
|
42
42
|
[style.--gn-ui-badge-text-color]="'#3d2006'"
|
|
43
43
|
[style.--gn-ui-badge-background-color]="'#ffbc7b'"
|
|
@@ -125,7 +125,12 @@
|
|
|
125
125
|
<gn-ui-interactive-table-column>
|
|
126
126
|
<ng-template #header> </ng-template>
|
|
127
127
|
<ng-template #cell let-item>
|
|
128
|
-
<gn-ui-action-menu
|
|
128
|
+
<gn-ui-action-menu
|
|
129
|
+
[canDuplicate]="canDuplicate(item)"
|
|
130
|
+
[canDelete]="canDelete(item)"
|
|
131
|
+
(duplicate)="handleDuplicate(item)"
|
|
132
|
+
(delete)="handleDelete(item)"
|
|
133
|
+
>
|
|
129
134
|
</gn-ui-action-menu>
|
|
130
135
|
</ng-template>
|
|
131
136
|
</gn-ui-interactive-table-column>
|
|
@@ -1,13 +1,6 @@
|
|
|
1
1
|
import { CommonModule } from '@angular/common'
|
|
2
|
-
import {
|
|
3
|
-
Component,
|
|
4
|
-
EventEmitter,
|
|
5
|
-
Input,
|
|
6
|
-
Output,
|
|
7
|
-
ViewChild,
|
|
8
|
-
} from '@angular/core'
|
|
2
|
+
import { Component, EventEmitter, Input, Output } from '@angular/core'
|
|
9
3
|
import { MatIconModule } from '@angular/material/icon'
|
|
10
|
-
import { MatMenuModule, MatMenuTrigger } from '@angular/material/menu'
|
|
11
4
|
import { CatalogRecord } from '../../../../../../libs/common/domain/src/lib/model/record'
|
|
12
5
|
import {
|
|
13
6
|
FieldSort,
|
|
@@ -47,12 +40,15 @@ export class ResultsTableComponent {
|
|
|
47
40
|
@Input() records: CatalogRecord[] = []
|
|
48
41
|
@Input() selectedRecordsIdentifiers: string[] = []
|
|
49
42
|
@Input() sortOrder: SortByField = null
|
|
50
|
-
@Input()
|
|
43
|
+
@Input() hasDraft: (record: CatalogRecord) => boolean = () => false
|
|
44
|
+
@Input() canDuplicate: (record: CatalogRecord) => boolean = () => true
|
|
45
|
+
@Input() canDelete: (record: CatalogRecord) => boolean = () => true
|
|
51
46
|
|
|
52
47
|
// emits the column (field) as well as the order
|
|
53
48
|
@Output() sortByChange = new EventEmitter<[string, 'asc' | 'desc']>()
|
|
54
49
|
@Output() recordClick = new EventEmitter<CatalogRecord>()
|
|
55
50
|
@Output() duplicateRecord = new EventEmitter<CatalogRecord>()
|
|
51
|
+
@Output() deleteRecord = new EventEmitter<CatalogRecord>()
|
|
56
52
|
@Output() recordsSelectedChange = new EventEmitter<
|
|
57
53
|
[CatalogRecord[], boolean]
|
|
58
54
|
>()
|
|
@@ -103,6 +99,10 @@ export class ResultsTableComponent {
|
|
|
103
99
|
this.duplicateRecord.emit(item as CatalogRecord)
|
|
104
100
|
}
|
|
105
101
|
|
|
102
|
+
handleDelete(item: unknown) {
|
|
103
|
+
this.deleteRecord.emit(item as CatalogRecord)
|
|
104
|
+
}
|
|
105
|
+
|
|
106
106
|
setSortBy(col: string, order: 'asc' | 'desc') {
|
|
107
107
|
this.sortByChange.emit([col, order])
|
|
108
108
|
}
|
package/translations/de.json
CHANGED
|
@@ -165,21 +165,26 @@
|
|
|
165
165
|
"downloads.format.unknown": "unbekannt",
|
|
166
166
|
"downloads.wfs.featuretype.not.found": "Der Layer wurde nicht gefunden",
|
|
167
167
|
"dropFile": "Datei ablegen",
|
|
168
|
+
"editor.record.delete.confirmation.cancelText": "Stornieren",
|
|
169
|
+
"editor.record.delete.confirmation.confirmText": "Löschen",
|
|
170
|
+
"editor.record.delete.confirmation.message": "Sind Sie sicher, dass Sie diesen Datensatz löschen möchten?",
|
|
171
|
+
"editor.record.delete.confirmation.title": "Datensatz löschen?",
|
|
172
|
+
"editor.record.deleteError.body": "Der Datensatz konnte nicht gelöscht werden:",
|
|
173
|
+
"editor.record.deleteError.closeMessage": "Verstanden",
|
|
174
|
+
"editor.record.deleteError.title": "Fehler beim Löschen des Datensatzes",
|
|
168
175
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
169
176
|
"editor.record.form.bottomButtons.next": "",
|
|
170
177
|
"editor.record.form.bottomButtons.previous": "",
|
|
171
|
-
"editor.record.form.field.abstract": "",
|
|
178
|
+
"editor.record.form.field.abstract": "Kurzbeschreibung",
|
|
172
179
|
"editor.record.form.field.keywords": "Schlagwörter",
|
|
173
180
|
"editor.record.form.field.license": "Lizenz",
|
|
174
|
-
"editor.record.form.field.
|
|
175
|
-
"editor.record.form.field.
|
|
176
|
-
"editor.record.form.field.
|
|
177
|
-
"editor.record.form.field.
|
|
178
|
-
"editor.record.form.field.
|
|
179
|
-
"editor.record.form.field.
|
|
180
|
-
"editor.record.form.
|
|
181
|
-
"editor.record.form.keywords": "Schlüsselwörter",
|
|
182
|
-
"editor.record.form.license": "Lizenz",
|
|
181
|
+
"editor.record.form.field.overviews": "",
|
|
182
|
+
"editor.record.form.field.recordUpdated": "Datensatz zuletzt aktualisiert",
|
|
183
|
+
"editor.record.form.field.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
184
|
+
"editor.record.form.field.temporalExtents": "Zeitlicher Umfang",
|
|
185
|
+
"editor.record.form.field.title": "Metadaten-Titel",
|
|
186
|
+
"editor.record.form.field.uniqueIdentifier": "Eindeutige Kennung (ID)",
|
|
187
|
+
"editor.record.form.field.updateFrequency": "Aktualisierungshäufigkeit",
|
|
183
188
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
184
189
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
185
190
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -205,16 +210,10 @@
|
|
|
205
210
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
206
211
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
207
212
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
208
|
-
"editor.record.form.metadata.title": "Metadaten-Titel",
|
|
209
|
-
"editor.record.form.record.updated": "Datensatz zuletzt aktualisiert",
|
|
210
|
-
"editor.record.form.resourceUpdated": "Letztes Aktualisierungsdatum",
|
|
211
|
-
"editor.record.form.temporalExtents": "Zeitlicher Umfang",
|
|
212
213
|
"editor.record.form.temporalExtents.addDate": "Zeitpunkt",
|
|
213
214
|
"editor.record.form.temporalExtents.addRange": "Zeitraum",
|
|
214
215
|
"editor.record.form.temporalExtents.date": "Datum",
|
|
215
216
|
"editor.record.form.temporalExtents.range": "Datumsbereich",
|
|
216
|
-
"editor.record.form.unique.identifier": "Eindeutige Kennung (ID)",
|
|
217
|
-
"editor.record.form.updateFrequency": "Aktualisierungshäufigkeit",
|
|
218
217
|
"editor.record.form.updateFrequency.planned": "Die Daten sollten regelmäßig aktualisiert werden.",
|
|
219
218
|
"editor.record.loadError.body": "Der Datensatz konnte nicht geladen werden:",
|
|
220
219
|
"editor.record.loadError.closeMessage": "Verstanden",
|
|
@@ -306,6 +305,7 @@
|
|
|
306
305
|
"pagination.page": "Seite",
|
|
307
306
|
"pagination.pageOf": "von",
|
|
308
307
|
"previous": "zurück",
|
|
308
|
+
"record.action.delete": "Löschen",
|
|
309
309
|
"record.action.download": "Herunterladen",
|
|
310
310
|
"record.action.duplicate": "",
|
|
311
311
|
"record.action.view": "Anzeigen",
|
package/translations/en.json
CHANGED
|
@@ -165,21 +165,26 @@
|
|
|
165
165
|
"downloads.format.unknown": "unknown",
|
|
166
166
|
"downloads.wfs.featuretype.not.found": "The layer was not found",
|
|
167
167
|
"dropFile": "drop file",
|
|
168
|
+
"editor.record.delete.confirmation.cancelText": "Cancel",
|
|
169
|
+
"editor.record.delete.confirmation.confirmText": "Delete",
|
|
170
|
+
"editor.record.delete.confirmation.message": "Are you sure you want to delete this record?",
|
|
171
|
+
"editor.record.delete.confirmation.title": "Delete record?",
|
|
172
|
+
"editor.record.deleteError.body": "The record could not be deleted:",
|
|
173
|
+
"editor.record.deleteError.closeMessage": "Understood",
|
|
174
|
+
"editor.record.deleteError.title": "Error deleting record",
|
|
168
175
|
"editor.record.form.bottomButtons.comeBackLater": "Come back later",
|
|
169
176
|
"editor.record.form.bottomButtons.next": "Next",
|
|
170
177
|
"editor.record.form.bottomButtons.previous": "Previous",
|
|
171
178
|
"editor.record.form.field.abstract": "Abstract",
|
|
172
179
|
"editor.record.form.field.keywords": "Keywords",
|
|
173
180
|
"editor.record.form.field.license": "License",
|
|
181
|
+
"editor.record.form.field.overviews": "Overviews",
|
|
174
182
|
"editor.record.form.field.recordUpdated": "Record Updated",
|
|
175
183
|
"editor.record.form.field.resourceUpdated": "Resource Updated",
|
|
176
184
|
"editor.record.form.field.temporalExtents": "Temporal extents",
|
|
177
185
|
"editor.record.form.field.title": "Metadata title",
|
|
178
186
|
"editor.record.form.field.uniqueIdentifier": "Unique identifier",
|
|
179
187
|
"editor.record.form.field.updateFrequency": "Update frequency",
|
|
180
|
-
"editor.record.form.abstract": "Abstract",
|
|
181
|
-
"editor.record.form.keywords": "Keywords",
|
|
182
|
-
"editor.record.form.license": "License",
|
|
183
188
|
"editor.record.form.license.cc-by": "Creative Commons CC-BY",
|
|
184
189
|
"editor.record.form.license.cc-by-sa": "Creative Commons CC-BY-SA",
|
|
185
190
|
"editor.record.form.license.cc-zero": "Creative Commons CC-0",
|
|
@@ -205,16 +210,10 @@
|
|
|
205
210
|
"editor.record.form.section.dataPointOfContact.label": "Data point of contact",
|
|
206
211
|
"editor.record.form.section.geographicalCoverage.label": "Geographical coverage",
|
|
207
212
|
"editor.record.form.section.useAndAccessConditions.label": "Use and access conditions",
|
|
208
|
-
"editor.record.form.metadata.title": "Metadata title",
|
|
209
|
-
"editor.record.form.record.updated": "Record updated",
|
|
210
|
-
"editor.record.form.resourceUpdated": "Last update date",
|
|
211
|
-
"editor.record.form.temporalExtents": "Temporal extent",
|
|
212
213
|
"editor.record.form.temporalExtents.addDate": "Time instant",
|
|
213
214
|
"editor.record.form.temporalExtents.addRange": "Time period",
|
|
214
215
|
"editor.record.form.temporalExtents.date": "Date",
|
|
215
216
|
"editor.record.form.temporalExtents.range": "Date range",
|
|
216
|
-
"editor.record.form.unique.identifier": "Unique identifier",
|
|
217
|
-
"editor.record.form.updateFrequency": "Update frequency",
|
|
218
217
|
"editor.record.form.updateFrequency.planned": "The data should be updated regularly.",
|
|
219
218
|
"editor.record.loadError.body": "The record could not be loaded:",
|
|
220
219
|
"editor.record.loadError.closeMessage": "Understood",
|
|
@@ -306,6 +305,7 @@
|
|
|
306
305
|
"pagination.page": "page",
|
|
307
306
|
"pagination.pageOf": "of",
|
|
308
307
|
"previous": "previous",
|
|
308
|
+
"record.action.delete": "Delete",
|
|
309
309
|
"record.action.download": "Download",
|
|
310
310
|
"record.action.duplicate": "Duplicate",
|
|
311
311
|
"record.action.view": "View",
|
package/translations/es.json
CHANGED
|
@@ -165,21 +165,26 @@
|
|
|
165
165
|
"downloads.format.unknown": "",
|
|
166
166
|
"downloads.wfs.featuretype.not.found": "",
|
|
167
167
|
"dropFile": "",
|
|
168
|
+
"editor.record.delete.confirmation.cancelText": "",
|
|
169
|
+
"editor.record.delete.confirmation.confirmText": "",
|
|
170
|
+
"editor.record.delete.confirmation.message": "",
|
|
171
|
+
"editor.record.delete.confirmation.title": "",
|
|
172
|
+
"editor.record.deleteError.body": "",
|
|
173
|
+
"editor.record.deleteError.closeMessage": "",
|
|
174
|
+
"editor.record.deleteError.title": "",
|
|
168
175
|
"editor.record.form.bottomButtons.comeBackLater": "",
|
|
169
176
|
"editor.record.form.bottomButtons.next": "",
|
|
170
177
|
"editor.record.form.bottomButtons.previous": "",
|
|
171
178
|
"editor.record.form.field.abstract": "",
|
|
172
179
|
"editor.record.form.field.keywords": "",
|
|
173
180
|
"editor.record.form.field.license": "",
|
|
181
|
+
"editor.record.form.field.overviews": "",
|
|
174
182
|
"editor.record.form.field.recordUpdated": "",
|
|
175
183
|
"editor.record.form.field.resourceUpdated": "",
|
|
176
184
|
"editor.record.form.field.temporalExtents": "",
|
|
177
185
|
"editor.record.form.field.title": "",
|
|
178
186
|
"editor.record.form.field.uniqueIdentifier": "",
|
|
179
187
|
"editor.record.form.field.updateFrequency": "",
|
|
180
|
-
"editor.record.form.abstract": "",
|
|
181
|
-
"editor.record.form.keywords": "",
|
|
182
|
-
"editor.record.form.license": "",
|
|
183
188
|
"editor.record.form.license.cc-by": "",
|
|
184
189
|
"editor.record.form.license.cc-by-sa": "",
|
|
185
190
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -205,16 +210,10 @@
|
|
|
205
210
|
"editor.record.form.section.dataPointOfContact.label": "",
|
|
206
211
|
"editor.record.form.section.geographicalCoverage.label": "",
|
|
207
212
|
"editor.record.form.section.useAndAccessConditions.label": "",
|
|
208
|
-
"editor.record.form.metadata.title": "",
|
|
209
|
-
"editor.record.form.record.updated": "",
|
|
210
|
-
"editor.record.form.resourceUpdated": "",
|
|
211
|
-
"editor.record.form.temporalExtents": "",
|
|
212
213
|
"editor.record.form.temporalExtents.addDate": "",
|
|
213
214
|
"editor.record.form.temporalExtents.addRange": "",
|
|
214
215
|
"editor.record.form.temporalExtents.date": "",
|
|
215
216
|
"editor.record.form.temporalExtents.range": "",
|
|
216
|
-
"editor.record.form.unique.identifier": "",
|
|
217
|
-
"editor.record.form.updateFrequency": "",
|
|
218
217
|
"editor.record.form.updateFrequency.planned": "",
|
|
219
218
|
"editor.record.loadError.body": "",
|
|
220
219
|
"editor.record.loadError.closeMessage": "",
|
|
@@ -306,6 +305,7 @@
|
|
|
306
305
|
"pagination.page": "",
|
|
307
306
|
"pagination.pageOf": "",
|
|
308
307
|
"previous": "",
|
|
308
|
+
"record.action.delete": "",
|
|
309
309
|
"record.action.download": "",
|
|
310
310
|
"record.action.duplicate": "",
|
|
311
311
|
"record.action.view": "",
|
package/translations/fr.json
CHANGED
|
@@ -165,21 +165,26 @@
|
|
|
165
165
|
"downloads.format.unknown": "inconnu",
|
|
166
166
|
"downloads.wfs.featuretype.not.found": "La couche n'a pas été retrouvée",
|
|
167
167
|
"dropFile": "Faites glisser votre fichier",
|
|
168
|
+
"editor.record.delete.confirmation.cancelText": "Annuler",
|
|
169
|
+
"editor.record.delete.confirmation.confirmText": "Supprimer",
|
|
170
|
+
"editor.record.delete.confirmation.message": "Etes-vous sûr de vouloir supprimer cette fiche ?",
|
|
171
|
+
"editor.record.delete.confirmation.title": "Supprimer la fiche",
|
|
172
|
+
"editor.record.deleteError.body": "La fiche n'a pas pu être supprimée :",
|
|
173
|
+
"editor.record.deleteError.closeMessage": "Compris",
|
|
174
|
+
"editor.record.deleteError.title": "Erreur lors de la suppression",
|
|
168
175
|
"editor.record.form.bottomButtons.comeBackLater": "Revenir plus tard",
|
|
169
176
|
"editor.record.form.bottomButtons.next": "Suivant",
|
|
170
177
|
"editor.record.form.bottomButtons.previous": "Précédent",
|
|
171
178
|
"editor.record.form.field.abstract": "Résumé",
|
|
172
179
|
"editor.record.form.field.keywords": "Mots-clés",
|
|
173
180
|
"editor.record.form.field.license": "Licence",
|
|
181
|
+
"editor.record.form.field.overviews": "Aperçus",
|
|
174
182
|
"editor.record.form.field.recordUpdated": "Date de dernière révision",
|
|
175
183
|
"editor.record.form.field.resourceUpdated": "Date de dernière révision",
|
|
176
184
|
"editor.record.form.field.temporalExtents": "Étendue temporelle",
|
|
177
185
|
"editor.record.form.field.title": "Titre",
|
|
178
186
|
"editor.record.form.field.uniqueIdentifier": "Identifiant unique",
|
|
179
187
|
"editor.record.form.field.updateFrequency": "Fréquence de mise à jour",
|
|
180
|
-
"editor.record.form.abstract": "",
|
|
181
|
-
"editor.record.form.keywords": "",
|
|
182
|
-
"editor.record.form.license": "Licence",
|
|
183
188
|
"editor.record.form.license.cc-by": "",
|
|
184
189
|
"editor.record.form.license.cc-by-sa": "",
|
|
185
190
|
"editor.record.form.license.cc-zero": "",
|
|
@@ -205,26 +210,20 @@
|
|
|
205
210
|
"editor.record.form.section.dataPointOfContact.label": "Point de contact de la metadonee",
|
|
206
211
|
"editor.record.form.section.geographicalCoverage.label": "Couverture geographique",
|
|
207
212
|
"editor.record.form.section.useAndAccessConditions.label": "Conditions d'acces et usage",
|
|
208
|
-
"editor.record.form.metadata.title": "",
|
|
209
|
-
"editor.record.form.record.updated": "",
|
|
210
|
-
"editor.record.form.resourceUpdated": "Date de dernière révision",
|
|
211
|
-
"editor.record.form.temporalExtents": "Étendue temporelle",
|
|
212
213
|
"editor.record.form.temporalExtents.addDate": "Date déterminée",
|
|
213
214
|
"editor.record.form.temporalExtents.addRange": "Période de temps",
|
|
214
215
|
"editor.record.form.temporalExtents.date": "Date concernée",
|
|
215
216
|
"editor.record.form.temporalExtents.range": "Période concernée",
|
|
216
|
-
"editor.record.form.unique.identifier": "",
|
|
217
|
-
"editor.record.form.updateFrequency": "Fréquence de mise à jour",
|
|
218
217
|
"editor.record.form.updateFrequency.planned": "Ces données doivent être mise à jour régulièrement.",
|
|
219
|
-
"editor.record.loadError.body": "",
|
|
220
|
-
"editor.record.loadError.closeMessage": "",
|
|
221
|
-
"editor.record.loadError.title": "",
|
|
222
|
-
"editor.record.publish": "",
|
|
223
|
-
"editor.record.publishError.body": "",
|
|
224
|
-
"editor.record.publishError.closeMessage": "",
|
|
225
|
-
"editor.record.publishError.title": "",
|
|
226
|
-
"editor.record.publishSuccess.body": "",
|
|
227
|
-
"editor.record.publishSuccess.title": "",
|
|
218
|
+
"editor.record.loadError.body": "La fiche n'a pas pu être chargée :",
|
|
219
|
+
"editor.record.loadError.closeMessage": "Compris",
|
|
220
|
+
"editor.record.loadError.title": "Erreur lors du chargement",
|
|
221
|
+
"editor.record.publish": "Publier cette fiche",
|
|
222
|
+
"editor.record.publishError.body": "La fiche n'a pas pu être publiée :",
|
|
223
|
+
"editor.record.publishError.closeMessage": "Compris",
|
|
224
|
+
"editor.record.publishError.title": "Erreur lors de la publication",
|
|
225
|
+
"editor.record.publishSuccess.body": "La fiche a bien été publiée !",
|
|
226
|
+
"editor.record.publishSuccess.title": "Publication réussie",
|
|
228
227
|
"editor.record.saveStatus.asDraftOnly": "Brouillon enregistré - fiche non publiée",
|
|
229
228
|
"editor.record.saveStatus.draftWithChangesPending": "Brouillon enregistré - modifications en cours",
|
|
230
229
|
"editor.record.saveStatus.recordUpToDate": "La fiche publiée est à jour",
|
|
@@ -306,6 +305,7 @@
|
|
|
306
305
|
"pagination.page": "page",
|
|
307
306
|
"pagination.pageOf": "sur",
|
|
308
307
|
"previous": "précédent",
|
|
308
|
+
"record.action.delete": "Supprimer",
|
|
309
309
|
"record.action.download": "Télécharger",
|
|
310
310
|
"record.action.duplicate": "Dupliquer",
|
|
311
311
|
"record.action.view": "Voir",
|