Skip to content

Commit ff17369

Browse files
jmaGarfield-fr
andcommitted
primeng: fix first admin tests
Co-Authored-by: Johnny Mariéthoz <[email protected]> Co-Authored-by: Bertrand Zuchuat <[email protected]>
1 parent f078b89 commit ff17369

File tree

6 files changed

+43
-47
lines changed

6 files changed

+43
-47
lines changed

projects/rero/ng-core/src/lib/record/detail/detail-button/detail-button.component.html

+13-7
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,10 @@
2727
<div class="flex align-items-center gap-1 justify-content-end w-full">
2828
<ng-content select="[beforeButton]"></ng-content>
2929
@if (record() && adminMode().can) {
30-
@if (useStatus && useStatus.can && useStatus.url) {
30+
@if (useStatus() && useStatus().can && useStatus().url) {
3131
<p-button id="detail-use-button"
3232
icon="fa fa-hand-o-right"
3333
[label]="'Use'|translate"
34-
[outlined]="!isPrimaryAction('use')"
3534
(onClick)="useRecord()"
3635
translate
3736
/>
@@ -40,20 +39,27 @@
4039
<p-button id="detail-edit-button"
4140
icon="fa fa-pencil"
4241
[label]="'Edit'|translate"
43-
[outlined]="!isPrimaryAction('use')"
42+
[outlined]="useStatus()?.can"
4443
(onClick)="updateRecord(record())"
4544
translate
4645
/>
4746
}
4847
@if (deleteStatus()) {
49-
<p-button id="detail-delete-button"
50-
disabled
48+
<p-button
5149
icon="fa fa-trash"
52-
[outlined]="true"
5350
severity="danger"
54-
[label]="'Delete'|translate"
51+
class="pointer-events-auto"
52+
outlined
5553
(onClick)="deleteRecord(record())"
54+
[pTooltip]="tooltipContent"
55+
tooltipPosition="bottom"
56+
[disabled]="!deleteStatus().can"
57+
[label]="'Delete'|translate"
58+
[tooltipDisabled]="deleteStatus().can"
5659
/>
60+
<ng-template #tooltipContent>
61+
<span [innerHTML]="deleteStatus().message"></span>
62+
</ng-template>
5763
}
5864
}
5965
<ng-content select="[afterButton]"/>

projects/rero/ng-core/src/lib/record/detail/detail-button/detail-button.component.ts

-17
Original file line numberDiff line numberDiff line change
@@ -52,23 +52,6 @@ export class DetailButtonComponent {
5252
/** Delete record message event */
5353
deleteMessageEvent = output<string>();
5454

55-
/**
56-
* define if an action is the primary action for the resource
57-
* @param actionName - string: the action name to check
58-
* @return boolean
59-
*/
60-
isPrimaryAction(actionName: string): boolean {
61-
switch (actionName) {
62-
case 'edit':
63-
case 'update':
64-
return this.updateStatus() && this.updateStatus().can && (!this.useStatus() || !this.useStatus().can);
65-
case 'use':
66-
return this.useStatus() && this.useStatus().can;
67-
default:
68-
return false;
69-
}
70-
}
71-
7255
/** Use the record */
7356
useRecord(): void {
7457
this.recordEvent.emit({ action: 'use', url: this.updateStatus().url })

projects/rero/ng-core/src/lib/record/editor/formly/primeng/select/select.ts

+8-5
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1616
*/
1717
import { CommonModule } from '@angular/common';
18-
import { Component, NgModule, OnInit, Type } from '@angular/core';
18+
import { ChangeDetectorRef, Component, inject, NgModule, OnInit, Type } from '@angular/core';
1919
import { ReactiveFormsModule } from '@angular/forms';
2020
import { FieldType, FormlyFieldConfig, FormlyModule } from '@ngx-formly/core';
2121
import { FormlySelectModule as FormlyCoreSelectModule, FormlyFieldSelectProps } from '@ngx-formly/core/select';
@@ -54,8 +54,8 @@ export interface IFormlySelectFieldConfig extends FormlyFieldConfig<ISelectProps
5454
@Component({
5555
selector: 'ng-core-primeng-select',
5656
template: `
57-
<div class="flex justify-content-center">
58-
<p-dropdown
57+
@defer(when selectOptions) {
58+
<p-dropdown
5959
[appendTo]="props.appendTo"
6060
[class]="props.class"
6161
[dropdownIcon]="props.dropdownIcon"
@@ -90,7 +90,8 @@ export interface IFormlySelectFieldConfig extends FormlyFieldConfig<ISelectProps
9090
<div class="option-group"><hr></div>
9191
}
9292
</ng-template>
93-
</p-dropdown>
93+
</p-dropdown>
94+
}
9495
`,
9596
styles: `
9697
:host ::ng-deep .p-dropdown-panel .p-dropdown-items .p-dropdown-item-group {
@@ -111,6 +112,7 @@ export interface IFormlySelectFieldConfig extends FormlyFieldConfig<ISelectProps
111112
})
112113
export class SelectComponent extends FieldType<FormlyFieldConfig<ISelectProps>> implements OnInit {
113114

115+
protected cd: ChangeDetectorRef = inject(ChangeDetectorRef);
114116
/** Default properties */
115117
defaultOptions: Partial<FormlyFieldConfig<ISelectProps>> = {
116118
defaultValue: null,
@@ -131,7 +133,7 @@ export class SelectComponent extends FieldType<FormlyFieldConfig<ISelectProps>>
131133
}
132134
};
133135

134-
selectOptions: any[] = [];
136+
selectOptions: any[];
135137

136138
ngOnInit(): void {
137139
if (!isObservable(this.props.options)) {
@@ -156,6 +158,7 @@ export class SelectComponent extends FieldType<FormlyFieldConfig<ISelectProps>>
156158
} else {
157159
this.selectOptions = this.props.sort ? this.sortOptions(options) : options;
158160
}
161+
this.cd.markForCheck();
159162
});
160163
}
161164

projects/rero/ng-core/src/lib/record/search/menu-sort/menu-sort.component.html

+7-1
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,14 @@
2020
<div class="flex gap-3 align-items-center">
2121
@if (selectedOption()?.icon) {
2222
<i [ngClass]="selectedOption().icon"></i>
23+
} @else if (selectedOption()) {
24+
{{'Sort by' | translate }}&nbsp;:
25+
}
26+
@if (selectedOption()?.label) {
27+
{{ selectedOption()?.label | translate }}
28+
} @else {
29+
{{'Sort by' | translate }}&nbsp;…
2330
}
24-
{{ selectedOption()?.label | translate }}&nbsp;…
2531
<i class="fa fa-caret-down"></i>
2632
</div>
2733
</p-button>

projects/rero/ng-core/src/lib/record/search/result/record-search-result.component.html

+15-8
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
@if (useStatus && useStatus.can && useStatus.url) {
2626
<p-button
2727
[outlined]="true"
28-
severity="danger"
2928
[ariaLabel]="'Use' | translate"
3029
(onClick)="useRecord()"
30+
[title]="'Use' | translate"
3131
icon="fa fa-hand-o-right"
3232
/>
3333
}
@@ -37,7 +37,6 @@
3737
<p-button
3838
[outlined]="true"
3939
[ariaLabel]="'Edit' | translate"
40-
(onClick)="editRecord(record.id, updateStatus?.routerLink)"
4140
[routerLink]="updateStatus.routerLink || ['edit', record.id]"
4241
icon="fa fa-pencil"
4342
/>
@@ -46,12 +45,20 @@
4645
<!-- delete button -->
4746
@if (deleteStatus) {
4847
<p-button
49-
[outlined]="true"
50-
severity="danger"
51-
[ariaLabel]="'Delete' | translate"
52-
(onClick)="deleteRecord(record.id, deleteStatus?.type)"
53-
icon="fa fa-trash"
54-
/>
48+
icon="fa fa-trash"
49+
severity="danger"
50+
class="pointer-events-auto"
51+
outlined
52+
[title]="'Delete'|translate"
53+
(onClick)="deleteRecord(record.id, deleteStatus?.type)"
54+
[pTooltip]="tooltipContent"
55+
tooltipPosition="top"
56+
[disabled]="!deleteStatus.can"
57+
[tooltipDisabled]="deleteStatus.can"
58+
/>
59+
<ng-template #tooltipContent>
60+
<span [innerHTML]="deleteStatus.message"></span>
61+
</ng-template>
5562
}
5663
}
5764
</div>

projects/rero/ng-core/src/lib/record/search/result/record-search-result.component.ts

-9
Original file line numberDiff line numberDiff line change
@@ -142,15 +142,6 @@ export class RecordSearchResultComponent implements OnInit, AfterViewInit {
142142
}
143143
}
144144

145-
/**
146-
* Edit a record
147-
* @param pid - string: the pid to edit
148-
*/
149-
editRecord(pid: string, url?: string[]): void {
150-
const params = url ?? ['/', 'records', this.type, 'edit', pid];
151-
this.router.navigate(params);
152-
}
153-
154145
/**
155146
* Use a record
156147
*/

0 commit comments

Comments
 (0)