@dcodegroup-au/dsg-vue
Version:
Front-end Vue/Tailwind DSG for UntitledUI.
32 lines (31 loc) • 1.09 kB
TypeScript
/**
* --------------------------------------------------------------------------
* DSG Vue - Table Composables / Helpers
* --------------------------------------------------------------------------
*/
export interface ScoreSortRefine {
label: string;
selected: boolean;
visible: boolean;
searchScore?: number;
[key: string]: unknown;
}
export interface ScoreSortOptions {
moveSelectedToTop?: boolean;
limit?: number;
}
/**
* Score-based filter+sort for non-API facet search.
*
* Scoring:
* - 1000 exact label match
* - 500 label contains the full search term
* - 1-100 share of space-delimited parts matched (rounded percent)
*
* Ordering: score desc, label asc as tie-break. When `moveSelectedToTop` is on
* and visible results exceed `limit`, selected refines are pinned above the rest
* (each group is still ordered by score → label).
*
* Mutates `visible` and `searchScore` on the input refines.
*/
export declare const scoreSortRefines: <T extends ScoreSortRefine>(refines: T[], searchTerm: string, options?: ScoreSortOptions) => T[];