Skip to content

Commit

Permalink
Fix chipKeyResolver pour critères non string
Browse files Browse the repository at this point in the history
  • Loading branch information
JabX committed Sep 17, 2024
1 parent 4623fd8 commit d1d911c
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 10 deletions.
4 changes: 2 additions & 2 deletions packages/collections/src/search/advanced-search.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -47,15 +47,15 @@ export interface AdvancedSearchProps<T, P extends ListBaseProps<T> = ListProps<T
* @param value La valeur du champ affiché (filtre: `field.value`, facet : `facetItem.code`)
* @returns Le libellé à utiliser, ou `undefined` s'il faut garder le libellé existant.
*/
chipKeyResolver?: (type: "facet" | "filter", code: string, value: string) => Promise<string | undefined>;
chipKeyResolver?: (type: "facet" | "filter", code: string, value: unknown) => Promise<string | undefined>;
/**
* Passe le style retourné par cette fonction aux chips.
* @param type Le type du chip affiché (`filter`, `facet`, `sort` ou `group`)
* @param code Le code du champ affiché (filtre : `field.$field.label`, facet : `facetOutput.code`, sort : `store.sortBy`, group : `store.groupingKey`)
* @param values Les valeurs du champ affiché (filtre: `field.value`, facet : `facetItem.code`, inexistant pour sort en group)
* @returns L'objet de theme, qui sera fusionné avec le theme existant.
*/
chipThemer?: (type: ChipType, code: string, values?: string[]) => ChipCss;
chipThemer?: (type: ChipType, code: string, values?: unknown[]) => ChipCss;
/** Composant personnalisés pour affichage d'une facette en particulier. */
customFacetComponents?: {[facet: string]: ElementType<FacetProps>};
/** Facettes pliées par défaut. */
Expand Down
10 changes: 5 additions & 5 deletions packages/collections/src/search/chip.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ export interface SearchChipProps {
* @param value La valeur du champ affiché (filtre: `field.value`, facet : `facetItem.code`)
* @returns Le libellé à utiliser, ou `undefined` s'il faut garder le libellé existant.
*/
keyResolver?: (type: "facet" | "filter", code: string, value: string) => Promise<string | undefined>;
keyResolver?: (type: "facet" | "filter", code: string, value: unknown) => Promise<string | undefined>;
/** Appelé au clic sur la suppression. */
onDeleteClick?: () => void;
/** Préfixe i18n pour les libellés. Par défaut : "focus". */
Expand All @@ -41,13 +41,13 @@ export interface SearchChipProps {
* @param values Les valeurs du champ affiché (filtre: `field.value`, facet : `facetItem.code`, inexistant pour sort en group)
* @returns L'objet de theme, qui sera fusionné avec le theme existant.
*/
themer?: (type: ChipType, code: string, values?: string[]) => ChipCss;
themer?: (type: ChipType, code: string, values?: unknown[]) => ChipCss;
/** Type du chip affiché (`filter`, `facet`, `sort` ou `group`). */
type: ChipType;
/** Opérateur à utiliser entre les différentes valeurs. */
valueOperator?: "and" | "or";
/** Valeurs et libellés des champs affichés (filtre: `field.value`, facet : `facetItem.code`, inexistant pour sort en group). */
values?: {code: string; label?: string; invert?: boolean}[];
values?: {code: unknown; label?: string; invert?: boolean}[];
}

/** Chip avec un keyResolver. */
Expand All @@ -66,10 +66,10 @@ export function SearchChip(props: SearchChipProps) {
valueOperator = "or",
values
} = props;
const [valueLabels] = useState(() => observable.map<string, string>());
const [valueLabels] = useState(() => observable.map<unknown, string>());

useEffect(() => {
valueLabels.replace(values?.map(value => [value.code, value.label ?? value.code]) ?? {});
valueLabels.replace(values?.map(value => [value.code, value.label ?? `${value.code as any}`]) ?? {});
if (keyResolver && values && (type === "facet" || type === "filter")) {
values.forEach(value => {
keyResolver(type, code, value.code).then(newValueLabel => {
Expand Down
5 changes: 2 additions & 3 deletions packages/collections/src/search/summary.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@ export interface SummaryProps<T> {
* @param value La valeur du champ affiché (filtre: `field.value`, facet : `facetItem.code`)
* @returns Le libellé à utiliser, ou `undefined` s'il faut garder le libellé existant.
*/
chipKeyResolver?: (type: "facet" | "filter", code: string, value: string) => Promise<string | undefined>;
chipKeyResolver?: (type: "facet" | "filter", code: string, value: unknown) => Promise<string | undefined>;
/**
* Passe le style retourné par cette fonction aux chips.
* @param type Le type du chip affiché (`filter`, `facet`, `sort` ou `group`)
* @param code Le code du champ affiché (filtre : `field.$field.label`, facet : `facetOutput.code`, sort : `store.sortBy`, group : `store.groupingKey`)
* @param values Les valeurs du champ affiché (filtre: `field.value`, facet : `facetItem.code`, inexistant pour sort en group)
* @returns L'objet de theme, qui sera fusionné avec le theme existant.
*/
chipThemer?: (type: ChipType, code: string, values?: string[]) => ChipCss;
chipThemer?: (type: ChipType, code: string, values?: unknown[]) => ChipCss;
/** Handler pour le bouton d'export. */
exportAction?: () => void;
/** Masque les critères de recherche. */
Expand Down Expand Up @@ -97,7 +97,6 @@ export function Summary<T>({
for (const criteriaKey in props.store.flatCriteria) {
const {label, domain} = (props.store.criteria[criteriaKey] as FormEntityField).$field;
const value = (props.store.flatCriteria as any)[criteriaKey];
// eslint-disable-next-line @typescript-eslint/prefer-optional-chain
if (!props.hideCriteria || !props.hideCriteria.includes(criteriaKey)) {
topicList.push({
type: "filter",
Expand Down

0 comments on commit d1d911c

Please sign in to comment.