Component props reference for dash_emoji_mart.

API reference

dash_emoji_mart

DashEmojiMart

DashEmojiMart wraps the emoji-mart picker (https://github.com/missive/emoji-mart) as a Dash component.

Selection is reported through two props, and callbacks may use either:

emoji.src for a custom one (the image URL). This is the 0.0.x contract and is unchanged.

shortcodes, keywords, skin, src, ...), for callbacks that need more than the glyph. Added in 0.2.0.

Both are written in a single setProps call, so a callback with both as Inputs fires once per pick rather than twice.

proptypedefaultdescription
idstringobjectThe ID used to identify this component in Dash callbacks.
autoFocusboolfalseFocus the search input when the picker mounts.
categoriesarray[]Which categories to show, in order. Empty (the default) shows all of them. e.g. ["frequent", "people", "nature"].
categoryIconsobject{}Icons for custom categories, keyed by category id. The value is inlined onto the matching entry in custom — typically an inline SVG string.
classNamestringCSS class applied to the wrapper element around the picker.
clickedOutsidenumber0Incremented once each time the user clicks outside the picker. Use it the way you would use n_clicks — for example to close a popover. "Outside" means outside the component's wrapper element, so clicking an emoji, the search box or a category tab does NOT increment it. The click that opens the picker does not increment it either. Added in 0.2.0.
customarray[]Custom emoji categories. Each entry is {id, name, emojis: [{id, name, keywords, skins: [{src}]}]}.
dynamicWidthboolfalseLet the picker's width follow its container instead of perLine.
emojiButtonColorsarray[]Background colours cycled through on emoji hover/focus.
emojiButtonRadiusstring'100%'Border radius of each emoji button. Default "100%".
emojiButtonSizenumber36Size in px of each emoji button. Default 36.
emojiSizenumber24Size in px of the emoji inside its button. Default 24.
emojiVersionnumber14Maximum Emoji version to show. Default 14.
exceptEmojisarray[]Emoji ids to hide from the grid, e.g. ["rage", "cry"]. GRID ONLY — searching still finds them, for the same reason as noCountryFlags: both filters remove the emoji from its category while SearchIndex.search reads the unfiltered emoji map. Do not rely on this to keep a specific emoji away from a user.
iconsstring'auto'Category/search icon style: "auto", "outline" or "solid".
localestring'en'UI locale, e.g. "en", "fr", "de", "ja".
maxFrequentRowsnumber4Rows reserved for frequently used emojis. Default 4.
navPositionstring'top'Category nav position: "top", "bottom" or "none".
noCountryFlagsboolfalseHide country flags from the grid. Default False. GRID ONLY — searching still finds them. This is an emoji-mart limitation, measured against 5.6.0: the filter runs while building each category and removes the emoji from category.emojis, but SearchIndex.search matches over Object.values(Data.emojis), the unfiltered map, and applies no category filter of its own. So with this on, the flags category shrinks to a small safe list while typing "united" still returns the flags of the UK, US, UAE and the UN. Not worked around here on purpose. emoji-mart loads its data into a module-global exactly once per page, so pre-filtering the data for one picker would silently change every other picker on the page and every page after it in a Dash SPA. A visible search result is better than an invisible, mount-order-dependent one.
noResultsEmojistring'cry'Emoji id shown when a search returns nothing. Default "cry".
perLinenumber9Emojis per row. Default 9.
persisted_propslist of one of 'value', 'selectedEmoji'['value']Properties whose value is persisted. Defaults to ["value"].
persistenceboolstringnumberWhether the picker's selection is persisted across browser sessions.
persistence_typeone of 'local', 'session', 'memory''local'Where persisted selections are stored: "local", "session" or "memory".
previewEmojistring'point_up'Emoji id shown in the idle preview. Default "point_up".
previewPositionstring'bottom'Preview position: "top", "bottom" or "none".
searchPositionstring'sticky'Search bar position: "sticky", "static" or "none".
selectedEmojiobjectThe full emoji-mart object for the current selection — id, name, native, unified, shortcodes, keywords, skin and (for custom emojis) src. Set alongside value on every pick. Read-only. Added in 0.2.0.
setstring'native'Emoji set: "native", "apple", "facebook", "google" or "twitter". Default "native".
skinnumber1Default skin tone, 1 (lightest) to 6 (darkest). Default 1.
skinTonePositionstring'preview'Skin-tone selector position: "preview", "search" or "none".
styleobjectInline styles applied to the wrapper element around the picker.
themestring'auto'Colour scheme: "auto", "light" or "dark".
valuestringThe selected emoji as a string: the native glyph for a standard emoji ("😀"), or the image URL for a custom one. Read this in callbacks.

Note for AI agents: This is the static, prerendered view of an interactive Dash application served because we detected a non-JS user agent. Full prose docs: