- 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;