origam 2.33.0 → 2.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -18,6 +18,14 @@ This project follows [Semantic Versioning](https://semver.org).
18
18
 
19
19
  ## [Unreleased]
20
20
 
21
+ ## [2.34.0] - 2026-10-19
22
+
23
+ ### Added — `OrigamCommandPalette` : prop `filter` pour afficher des résultats classés en externe (#1184)
24
+
25
+ - Nouvelle prop `filter` : `true` (défaut, comportement inchangé : correspondance floue intégrée et tri par score), `false` (les `commands` sont affichées telles quelles, dans l'ordre fourni) ou une fonction `(commands, query) => commands` dont le résultat est affiché dans son ordre.
26
+ - Destinée à la recherche serveur ou plein texte alimentée par l'événement `query` : un résultat trouvé dans le corps d'un document n'est plus masqué parce que la requête n'est pas une sous-séquence de son libellé, et le classement du moteur est conservé.
27
+ - Avec `filter=false` ou une fonction, une liste `commands` vide reste vide : elle ne retombe plus sur le registre `useCommand()` (le repli est conservé avec `filter=true`).
28
+
21
29
  ## [2.33.0] - 2026-10-18
22
30
 
23
31
  ### Added — `OrigamCommandPalette` : icônes de recherche et de chargement personnalisables (#1183)
@@ -191,6 +191,7 @@ const props = defineProps({
191
191
  modelValue: { type: Boolean, required: false, default: false },
192
192
  hotkey: { type: [Array, null], required: false, default: () => COMMAND_PALETTE_DEFAULT_HOTKEY },
193
193
  commands: { type: Array, required: false },
194
+ filter: { type: [Boolean, Function], required: false, default: true },
194
195
  placeholder: { type: String, required: false, default: "origam.command_palette.placeholder" },
195
196
  emptyText: { type: String, required: false, default: "origam.command_palette.empty_text" },
196
197
  maxHeight: { type: [Number, String], required: false, default: COMMAND_PALETTE_DEFAULT_MAX_HEIGHT },
@@ -260,11 +261,17 @@ if (IN_BROWSER) {
260
261
  }, { immediate: true });
261
262
  }
262
263
  const sourceCommands = computed(() => {
263
- if (props.commands && props.commands.length > 0) return props.commands;
264
+ if (props.commands && (props.commands.length > 0 || props.filter !== true)) return props.commands;
264
265
  return registryCommands.value;
265
266
  });
266
267
  const query = ref("");
267
268
  const filtered = computed(() => {
269
+ if (typeof props.filter === "function") {
270
+ return props.filter(sourceCommands.value, query.value).map((item) => ({ item, score: 0 }));
271
+ }
272
+ if (props.filter === false) {
273
+ return sourceCommands.value.map((item) => ({ item, score: 0 }));
274
+ }
268
275
  return fuzzyMatch(sourceCommands.value, query.value, (cmd) => ({
269
276
  label: cmd.label,
270
277
  haystack: [
@@ -1,4 +1,5 @@
1
1
  import type { ICommand } from './command.interface';
2
+ import type { TCommandPaletteFilter } from '../../types/CommandPalette/command-palette.type';
2
3
  import type { IAttachProps } from '../Commons/attach.interface';
3
4
  import type { ICommonsComponentProps } from '../Commons/commons.interface';
4
5
  import type { ITypographyProps } from '../Commons/typography.interface';
@@ -27,6 +28,17 @@ export interface ICommandPaletteProps extends ICommonsComponentProps, Pick<ITypo
27
28
  * registered via the `useCommand()` global registry instead.
28
29
  */
29
30
  commands?: ReadonlyArray<ICommand>;
31
+ /*********************************************************
32
+ * filter (#1184)
33
+ *
34
+ * @description
35
+ * Comment `commands` est filtré selon la requête. `true` (défaut) : fuzzy match intégré, qui garde les sous-séquences et re-trie par score.
36
+ * @description
37
+ * `false` : `commands` affichées telles quelles, dans l'ordre fourni (liste déjà filtrée/classée par un serveur ou un moteur plein-texte, alimentée via l'event `query`).
38
+ * @description
39
+ * Fonction `(commands, query) => commands` : affiche ce qu'elle renvoie, dans son ordre. Dans les deux modes non défaut, la liste est plate (sans en-tête de groupe) tant que la requête est non vide, aucun match n'est surligné, et `commands` est honorée même vide (pas de repli sur le registre `useCommand()`).
40
+ ********************************************************/
41
+ filter?: TCommandPaletteFilter;
30
42
  /** Placeholder of the search input (already-translated string). */
31
43
  placeholder?: string;
32
44
  /** Empty-state message when no command matches the query. */
@@ -1,3 +1,4 @@
1
+ import type { ICommand } from '../../interfaces/CommandPalette/command.interface';
1
2
  import OrigamCommandPalette from '../../components/CommandPalette/OrigamCommandPalette.vue';
2
3
  export type TOrigamCommandPalette = InstanceType<typeof OrigamCommandPalette>;
3
4
  /**
@@ -5,3 +6,13 @@ export type TOrigamCommandPalette = InstanceType<typeof OrigamCommandPalette>;
5
6
  * accepted by `useHotkey` (e.g. `['meta', 'k']`).
6
7
  */
7
8
  export type TCommandPaletteHotkeyCombination = ReadonlyArray<string>;
9
+ /*********************************************************
10
+ * Filter de OrigamCommandPalette (#1184)
11
+ *
12
+ * @description
13
+ * `TCommandPaletteFilterFn` : reçoit les commandes et la requête brute (non trimée), renvoie les commandes à afficher, dans l'ordre d'affichage.
14
+ * @description
15
+ * `TCommandPaletteFilter` (prop `filter`) : `true` = fuzzy match intégré (filtre par sous-séquence + tri par score), `false` = `commands` affichées telles quelles et dans l'ordre fourni, fonction = son résultat est affiché dans son ordre.
16
+ ********************************************************/
17
+ export type TCommandPaletteFilterFn = (commands: ReadonlyArray<ICommand>, query: string) => ReadonlyArray<ICommand>;
18
+ export type TCommandPaletteFilter = boolean | TCommandPaletteFilterFn;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "origam",
3
- "version": "2.33.0",
3
+ "version": "2.34.0",
4
4
  "type": "module",
5
5
  "description": "origam — a Vue 3 design system with multi-theme design tokens, CSS-first components and TypeScript types.",
6
6
  "keywords": [