- Fuzzy search powered by fuse.js
- Run actions conditionally
- Super simple API, just define your actions and it just works!
- Advanced conditional actions - decide whether to run your action based on the current state of your command palette
- Access to
paletteStore
, update your update palette store from anywhere to make updates to your command-palette. - Keyboard shortcuts - define keyboard shortcuts for your actions!
and more
Install svelte-command-palette with npm
npm install svelte-command-palette
<script> import CommandPalette, { defineActions, createStoreMethods } from 'svelte-command-palette' // define actions using the defineActions API const paletteMethods = createStoreMethods(); const actions = defineActions([ { title: "Open Svelte Command Palette on github", subTitle: "This opens github in a new tab!", onRun: ({ action, storeProps, storeMethods }) => { window.open("https://github.com/rohitpotato/svelte-command-palette") }, shortcut: "Space k" } ]) </script> // render your command palette at the root of your application, say _layout.svelte <button on:click={() => paletteMethods.openPalette()}>Open Command Palette</button> <CommandPalette commands={actions}>
The <CommandPalette />
component accepts the following optional properties for styling:
Property | Type | Default | Description |
---|---|---|---|
unstyled | boolean | false | When true , the default styles are not applied to the modal elements. |
placeholder | string | "Search for actions" | Placeholder for the command palette input |
overlayClass | string | null | null | Class name for the palette overlay. |
paletteWrapperInnerClass | string | null | null | Class name for the cmd palette wrapper element. |
inputClass | string | null | null | Class name for the cmd palette input. |
resultsContainerClass | string | null | null | Class name for the results container. |
resultContainerClass | string | null | null | Class name for the result item container. |
optionSelectedClass | string | null | null | Class name for the currently selected result item. |
titleClass | string | null | null | Class name for the result title. |
subtitleClass | string | null | null | Class name for the result subtitle. |
descriptionClass | string | null | null | Class name for the result description. |
keyboardButtonClass | string | null | null | Class name for the keyboard shortcuts. |
overlayStyle | Record<string, string | number> | {} | Style properties of the overlay. |
paletteWrapperInnerStyle | Record<string, string | number> | {} | Style properties of the command palette wrapper element. |
inputStyle | Record<string, string | number> | {} | Style properties of cmd palette input. |
resultsContainerStyle | Record<string, string | number> | {} | Style properties of results container. |
resultContainerStyle | Record<string, string | number> | {} | Style properties result item container. |
titleStyle | Record<string, string | number> | {} | Style properties for result item title. |
subtitleStyle | Record<string, string | number> | {} | Style properties for result item subtitle. |
descriptionStyle | Record<string, string | number> | {} | Style properties for result item description. |
optionSelectedStyle | Record<string, string | number> | {} | Style properties selected result item. |
keyboardButtonStyle | Record<string, string | number> | {} | Style properties for the keyboard shortcut. |
actionId?: ActionId; canActionRun?: (args: onRunParams) => boolean; title: string; description?: string; subTitle?: string; onRun?: (args: onRunParams) => void; keywords?: Array<string>; shortcut?: string;
Get palette methods from createStoreMethods
.
import { createStoreMethods } from 'svelte-command-palette` const methods = createStoreMethods(); method.openPalette();
togglePalette: () => void; getAllCalledActions: () => ActionId[]; storeCalledAction: (id: ActionId) => void; revertLastAction: (id: ActionId) => void; resetActionLog: () => void; openPalette: () => void; closePalette: () => void; resetPaletteStore: () => void;