import type { Fetcher } from '../LookupField/services/api.types'; import type { WizardOption } from './MasterDocument.types'; /** * `Fetcher` de LookupField servido DESDE MEMORIA, para los pasos del wizard de * creación cuya lista ya está cargada. * * ¿Por qué existe? Compañía y centro de operación se eligen en un `LookupField` * —el usuario necesita BUSCAR, no desplegar cien opciones— pero sus listas no son * una entidad consultable: las trae el adapter (`listCompanies` / * `listOperationCenters`) y llegan al wizard como `WizardOption[]` ya resueltas, * filtradas por permiso y por la compañía elegida. No hay endpoint `/search` al * que apuntar, y montar uno sería pedir dos veces lo mismo. * * `LookupField` sólo habla con su `fetcher`, así que basta con darle uno que * responda con el array que ya tenemos. La búsqueda, el orden y la paginación se * resuelven aquí con la misma semántica que espera del backend, de modo que el * componente no distingue un caso del otro. * * ⚠️ **Alcance deliberadamente corto.** Sólo implementa lo que LookupField llega a * pedir en este uso: búsqueda por `label` con los tres operadores y filtros de * IGUALDAD (los que manda al resolver el valor controlado por su `Id`). No * implementa `__contains`, `__in`, rangos ni `orderBy` por campo arbitrario, * porque el wizard no pasa `filters` ni `orderBy`. Si algún día se pasan, esto * los ignoraría en silencio — de ahí el aviso. */ /** Campo único de etiqueta: es el que se muestra y por el que se busca. */ export declare const WIZARD_LOOKUP_LABEL_FIELD = "label"; /** Registro que ve LookupField. `Id` en PascalCase es su contrato. */ export interface WizardLookupRecord { Id: string; label: string; [key: string]: unknown; } /** * Construye el `Fetcher` que sirve `options` desde memoria. * * Conserva el ORDEN de entrada, que ya viene decidido por el adapter; ordenar * aquí alfabéticamente pisaría ese criterio (p. ej. la compañía por defecto * primero). */ export declare function crearFetcherDeOpciones(options: WizardOption[]): Fetcher; /** * Igual que `crearFetcherDeOpciones`, pero con IDENTIDAD ESTABLE mientras el * contenido no cambie. * * Importa: `fetcher` está en las dependencias de los `useCallback` de carga de * LookupField, así que un fetcher nuevo en cada render invalida esos callbacks y * vuelve a disparar la carga. Y las listas llegan como props que el host * reconstruye a su ritmo, así que no se puede depender de la identidad del array: * la clave se deriva del CONTENIDO (`id` y `label` de cada opción), el mismo * recurso que usa LookupField con sus `displayFieldsKey`. */ export declare function useWizardOptionFetcher(options: WizardOption[]): Fetcher; //# sourceMappingURL=wizardOptionLookup.d.ts.map