feat: parámetros de solo lectura en los reportes (se ven con su valor por defecto y no se pueden cambiar; el servidor los ignora)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f71577e792
commit
a472731277
6 files changed
+27
-7
No files matched your search
@@ -60,6 +60,15 @@ describe('ReportParamField', () => {
|
||||
expect(select.value).toBe('2');
|
||||
});
|
||||
|
||||
it('un parámetro de solo lectura se ve con su valor pero no se puede cambiar', async () => {
|
||||
await show(param({ kind: 'select', label: 'Papel', options: [{ value: 'Carta', label: 'Carta' }], readOnly: true }), 'Carta');
|
||||
const select = el().querySelector('select') as HTMLSelectElement;
|
||||
expect(select.value).toBe('Carta');
|
||||
expect(select.disabled || select.hasAttribute('readonly') || select.closest('[readonly]') !== null).toBe(true);
|
||||
await show(param({ label: 'Nombre', readOnly: true }), 'fijo');
|
||||
expect(inputs()[0].readOnly).toBe(true);
|
||||
});
|
||||
|
||||
it('un rango pide desde y hasta y los emite como lista', async () => {
|
||||
await show(param({ kind: 'date', range: true }), ['2026-01-01', '2026-01-31']);
|
||||
expect(labels().join(' ')).toContain('desde / hasta');
|
||||
|
||||
@@ -24,23 +24,23 @@ const asList = (v: Value): readonly string[] => (typeof v === 'string' ? (v ===
|
||||
@case ('single') {
|
||||
@switch (p.kind) {
|
||||
@case ('number') {
|
||||
<sbo-number-field [label]="p.label" [required]="p.required" [value]="num(single())" (valueChange)="value.set($event === null ? '' : '' + $event)" />
|
||||
<sbo-number-field [label]="p.label" [required]="p.required" [readonly]="!!p.readOnly" [value]="num(single())" (valueChange)="value.set($event === null ? '' : '' + $event)" />
|
||||
}
|
||||
@case ('date') {
|
||||
<sbo-date-field [label]="p.label" [required]="p.required" [value]="single()" (valueChange)="value.set($event)" />
|
||||
<sbo-date-field [label]="p.label" [required]="p.required" [readonly]="!!p.readOnly" [value]="single()" (valueChange)="value.set($event)" />
|
||||
}
|
||||
@case ('select') {
|
||||
<sbo-select-field [label]="p.label" [required]="p.required" [options]="p.options ?? []" placeholder="" [value]="single() || null" (valueChange)="value.set($event === null ? '' : '' + $event)" />
|
||||
<sbo-select-field [label]="p.label" [required]="p.required" [readonly]="!!p.readOnly" [options]="p.options ?? []" placeholder="" [value]="single() || null" (valueChange)="value.set($event === null ? '' : '' + $event)" />
|
||||
}
|
||||
@case ('lookup') {
|
||||
@if (catalog(); as c) {
|
||||
<sbo-lookup-field [label]="p.label" [required]="p.required" [lookup]="c.lookup" resolveOnLeave [value]="single()" (valueChange)="value.set($event)" />
|
||||
<sbo-lookup-field [label]="p.label" [required]="p.required" [readonly]="!!p.readOnly" [lookup]="c.lookup" resolveOnLeave [value]="single()" (valueChange)="value.set($event)" />
|
||||
} @else {
|
||||
<sbo-text-field [label]="p.label" [required]="p.required" [value]="single()" (valueChange)="value.set($event)" />
|
||||
<sbo-text-field [label]="p.label" [required]="p.required" [readonly]="!!p.readOnly" [value]="single()" (valueChange)="value.set($event)" />
|
||||
}
|
||||
}
|
||||
@default {
|
||||
<sbo-text-field [label]="p.label" [required]="p.required" [placeholder]="p.placeholder ?? ''" [value]="single()" (valueChange)="value.set($event)" />
|
||||
<sbo-text-field [label]="p.label" [required]="p.required" [readonly]="!!p.readOnly" [placeholder]="p.placeholder ?? ''" [value]="single()" (valueChange)="value.set($event)" />
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user