Text search slicer for Power BI Text Plume
The free-text search slicer: type a few letters or paste a list, in one column or several, accents ignored, and the report filters.
Text Plume is a search box that filters the report: drop one or several columns in “Fields to search”, type, and only the matching values remain. It covers the most requested search features in Power BI: ignore accents (Rosch finds Rösch), “ends with”, pick the column to search with chips under the box, and get the typed text back when a bookmark is recalled. When it gives exactly the same result, it sends a real Power BI condition (contains, starts with) that holds beyond the loaded rows. With premium, it takes a list pasted from Excel, * and ? wildcards, exclusion and a search across all columns at once. To tick values in a list instead, see Basic Slicer Plume.
Use cases
- Find an order, a customer or a product code by typing a few letters
- Filter the whole report on a list of codes copied from Excel (premium)
- Search a name in both Customer and City, without a concatenated column (premium)
- Names with accents, or codes like FR-*-2026 (wildcards with premium)
FreeIncluded for free
- One-line search box: contains, starts with, ends with, is exactly or word start; case and accents ignored (Rosch finds Rösch), match case as an option
- Filters as you type (adjustable delay) or with Enter and a “Filter” button; clear button, custom placeholder, minimum characters
- Two fields: chips under the box pick the column to search, and the text follows when you switch
- Suggestions under the box with the matching part highlighted, keyboard navigation
- Information line: values found, terms not found, warnings; “m of n” count in the header
- Smart filter: a native Power BI condition (contains, starts with, is) when it gives exactly the same result, with no row limit; otherwise the list of matching values
- The typed text is saved with the filter: bookmarks and page changes bring it back as it was
- Sync slicers (one field), context menu, screen readers, high contrast, English and French
- "Also search in" field (e.g. postal code); hyphens, spaces and apostrophes treated alike
- Dynamic formats: fx button on colors and texts, any option driven by DAX
- Minimal and Black & White styles, custom colors (background, text, secondary text, lines, accent)
PremiumPremium features
- Lists: several terms separated by ; or one per line, any of them (OR) or all of them (AND); paste a column from Excel
- Wildcards * (any characters) and ? (one character), e.g. FR-*-2026
- Exclusion with -term or !term, e.g. Paris; -North
- Regular expressions
- Search all fields at once (“All fields” chip): keeps the rows where any column matches; 3 to 6 fields
- Preselection: a DAX measure gives the search text when the report opens
- Catalog-wide styles (Neon, Newspaper, Graphite…), palettes and theme JSON
Usable without a key to try them, with a watermark.
Tutorials
Start with Getting started, then pick from the how-to guides. The Fields and settings page describes every option of the Format pane.
- Getting startedBeginner9 min readA search box that filters the report: getting started with Text PlumeGet started with Text Plume: type a few letters to filter the report, accents ignored, highlighted suggestions, and pick the column to search with chips.
- How-to guidesIntermediate6 min readText Plume: 9 how-to guides (pasted list, wildcards, bookmarks…)Filter on a list pasted from Excel, use wildcards, exclude values, search every column at once and keep the typed text in a bookmark with Text Plume.
- Fields and settingsIntermediate13 min readText Plume: every field and setting explainedEvery field well and every Format pane setting in Text Plume: search, input, fields, suggestions and results, with the values they accept and their defaults.
- BasicsGetting started with Plume visualsInstallation, license, styles and the settings shared by every visual.
Fields to drop into the visual
| Field | Content | |
|---|---|---|
| Fields to search | 1 or 2 columns (3 to 6: ★): text, numbers or dates | Required |
| Also search in | Up to 2 columns (postal code, reference): the filter applies to the searched field | Optional |
| Preselection | Measure: the search text when the report opens (premium ★) | OptionalPremium |
| Dynamic format | Measures renamed card.setting (e.g. title.text): the Format pane driven by DAX | Optional |
Missing a feature? We adapt our visuals or build custom ones. Request a custom visual
Found a bug in Text Plume, or have an idea to improve it? Report a bug · Suggest an idea
Technical reference for AI assistants
This section is meant for AI assistants (ChatGPT, Claude, Copilot…): every field, every Format pane option with its internal name, the expected data shape and DAX examples. Generated from the visual's code, version 1.1.0.0. Paste it into your assistant so it can guide you.
Raw Markdown version (/ai/visuals/text-slicer.md)# Text Plume: technical reference for AI assistants
> Power BI custom visual by Plume Studio (Plume Visuals). Visual version **1.1.0.0**. This page is generated from the visual's source code at each site build: field names, option names and defaults are exact for this version.
Use it to help someone build a report with Text Plume: which fields to drag, how to shape the data, which Format pane option to change, or how to write the visual's settings in a PBIP `visual.json` file.
- Product page: https://plumevisuals.com/en/visuals/text-slicer (French: https://plumevisuals.com/fr/visuels/text-slicer)
- Summary: The free-text search slicer: type a few letters or paste a list, in one column or several, accents ignored, and the report filters.
- Power BI visual GUID (`visualType`): `plumeTextSlicer2FFF2CD495324564B38C02E87A8C23B5`
- Power BI visuals API: 5.11.1
- Support: https://plumevisuals.com/support · contact@plumevisuals.com
- Index of everything on the site for AI assistants: https://plumevisuals.com/llms.txt
## What the visual does
Text Plume (version 1.1.0.0) is a Power BI custom slicer with a **free-text search box**: the user types (or pastes) some text and the visual filters the report with the values of the **Fields to search** columns (`fields`, 1 to 6 columns, same table or related tables) that match. Text, number, date and boolean columns are accepted; numbers and dates are compared with their displayed label. Up to 100,000 rows are loaded (`fetchMoreData`, 30,000 rows per data window).
**New in version 1.1.0.0 (30/10/2026):** Shared slicer cards (Preselection: the measure becomes the searched text); **"Also search in"** field (up to 2 columns) and search that treats dashes, spaces and apostrophes as equal.
**Matching** (`search.match`): `contains` (default), `starts`, `ends` ("ends with", done by the visual: there is no such Power BI operator), `exact`, `words` (start of any word of the value) and `regex` ★. Case is ignored unless `search.caseSensitive`; accents are ignored by default (`search.ignoreAccents`: "Rosch" finds "Rösch", "peri" finds "Périgueux"). `search.minChars` (1 by default) shows "Type at least n characters" until enough letters are typed (Enter or the Filter button override it).
**Search syntax** in the box:
- Several **terms** separated by `input.separator`: `auto` (default: `;`, line break, tab or `|`; in regex mode `|` is not a separator), `semicolon`, `newline`, `comma` (comma or line break), `none` (the whole text is one term). A term in double quotes (`"a; b"`) is kept whole and taken literally (no wildcards); `""` inside quotes is a literal quote. Duplicates are removed. Terms are combined with `input.combine` = `any` (OR, default) or `all` (AND). Several terms are ★.
- **Wildcards** ★ (`search.wildcards`, on by default): `*` = any characters, `?` = one character (`FR-*-2026`, `Dup?nt`).
- **Exclusion** ★ (`search.exclude`, on by default): a term starting with `-` or `!` removes the values it matches (`Paris; -North`, `-web` alone = everything except Web).
**Input** (card `input`): one-line box (`input.height`, 24 to 64 px, 34 by default) with a magnifier, a clear (×) button (`input.showClear`) and a placeholder (`input.placeholder`; empty = "Search in <field>…" / "Search all fields…"); or **several lines** ★ (`input.multiline`, `input.rows` visible lines, 4 by default) to paste a list, applied with Ctrl + Enter or the Filter button. Pasting a column copied from Excel into the one-line box turns line breaks into `; `. `input.applyOn` = `typing` (default, `input.delay` 400 ms after the last key) or `enter` (Enter or the "Filter" button, `input.button`; "Press Enter to filter" under the box, button highlighted while the text is not applied).
**Several fields** (card `fields`): `fields.mode` = `pick` (default: **chips** under the box pick the column searched, ← → on the keyboard; the typed text is applied again when the chip changes) or `all` ★ (no chips: a row is kept when **any** column matches; with several terms, each term may be found in a different column; exclusions apply to every column). In `pick` mode, the "All fields" chip ★ (`fields.allChip`, on by default; label `fields.allLabel`) does the same search across all columns; `fields.start` = chip selected on open (1 = first column, default; 0 = All fields).
**Suggestions** (card `suggest`): a list under the box for the term being typed (values that start with it first), matching part highlighted (`suggest.highlight`), column name shown when searching all fields, `suggest.max` (8 by default). ↓ ↑ Enter or click: the value replaces the term (quoted if needed) and filters. Esc closes the list.
**Results** (card `results`): information line under the box (`results.info`): "12 value(s) found · 3 terms · 2 not found: X, Y" (full list in the tooltip), warnings ("Search limited to the first N rows loaded", "Invalid regular expression": box in red, nothing sent). Header (card `header`): title (field names joined with " · " when empty), count "12 values" (or "n rows" across all fields) then "3 of 12" once filtered (`header.showCount`), "Clear" button (`header.showClear`). `results.noMatch` = `empty` (default: the report shows nothing, like Power BI) or `ignore` (no filter, the line says so). `results.blankLabel` = label of blank values ("(Blank)" when empty).
## Free vs premium (★)
- Every feature works without a key and nothing is ever blocked. Free features never show a watermark, and the visual inserted with its default settings never shows one. The watermark appears only when a premium feature is **actually used**.
- Shared Style card (the same in every Plume visual): the styles `none`, `minimal` and `blackWhite`, "Follow report theme" and all custom colors are **free**; every other `style.preset`, the extra palettes and `style.themeJson` are **premium**.
- Premium features of Text Plume: **several terms** (two terms or more in the text, including a pasted list; `input.multiline` itself only triggers the watermark with several terms), **wildcards** (a term that contains `*` or `?` while `search.wildcards` is on), **exclusion** (a `-term` / `!term` while `search.exclude` is on), **regular expressions** (`search.match` = `regex` with some text typed), **search all fields** (`fields.mode` = `all`, or the "All fields" chip selected, with 2 fields or more), **3 to 6 columns** in Fields to search. One term with `contains`, `starts`, `ends`, `exact` or `words`, on 1 or 2 columns with chips, is free.
- Without a valid key, a premium feature in use shows **"Plume Visuals · Premium preview"** (French « Plume Visuals · Aperçu premium »): a badge with an "Unlock →" link in edit mode, a tiled pattern across the visual in reading mode (the box stays usable), until a key is pasted in **Format › Plume Studio License › License key** (`license.key`), the first card of the Format pane. The landing page never shows the watermark.
- Accepted keys: `PLUM1.` keys covering `text-slicer` or the whole catalog, checked offline (Ed25519). Licenses last one year (one-time payment, no automatic renewal), per slicer: 19 € personal, 49 € SME, 149 € enterprise per year, or the full catalog pack.
## Expected data shape
| Fields to search (`fields`, 1 to 6 columns) | Dynamic format (`format`, optional) |
|---|---|
| `Orders[Order]` (FR-1042-2026…), or `Orders[Customer]` then `Orders[City]` for chips | measures named `card.setting` |
- **Fields to search** (`fields`, grouping, required): real columns, not measures. One row per combination of the columns is enough (the visual groups identical values); one row per order works too.
- **Dynamic format** (`format`, measures): measures named `card.setting` (e.g. `input.placeholder`, `header.title`) drive Format pane options with DAX.
- No measure is needed and there is **no Tooltips well**.
## Filter sent to the report
- **One column, at most 2 terms, `contains` / `starts` / `exact`, wildcards only at the start or end of a term, case ignored** → an `AdvancedFilter` (`Contains`, `StartsWith`, `Is`, and `DoesNotContain`, `DoesNotStartWith`, `IsNot` for exclusions; `And` / `Or`). No row limit: the condition holds beyond the loaded rows. Power BI compares ignoring case but **respecting accents**, so with `results.method` = `auto` (default) the condition is sent only when it gives exactly the same values as the visual's accent-insensitive search; otherwise the list below.
- **Every other case on one column** (accents that change the result, wildcards in the middle, `?`, `ends`, `words`, `regex`, more than 2 terms, number / date / boolean column, `search.caseSensitive`) → a `BasicFilter` `In` with the matching values found in the loaded rows ("Search limited to the first N rows loaded" when the data is truncated).
- **All fields at once** → a `TupleFilter` `In` with the matching combinations of the columns (OR across columns), limited to the loaded rows.
- **Nothing matches** → the condition itself, or a filter that keeps nothing (`x = v AND x ≠ v`); `results.noMatch` = `ignore` sends no filter.
- `results.method` = `condition` forces the condition whenever it is possible (even if Power BI then finds slightly fewer values because of accents); `values` always sends the list.
- **Restoring**: the typed text, the selected chip and a signature of the filter are saved in the hidden `state` object (`text`, `field`, `sig`, properties with `filterState`, so **bookmarks keep them**). When the signature matches, the text comes back exactly as typed; otherwise it is rebuilt from the filter (condition → terms such as `lyon; -x`; list → values joined with `; `, compared literally until the next edit; tuples → "Restored filter (n values)"). A bookmark without a filter empties the box. A filter of the visual it cannot read is removed once.
- **Sync slicers**: `supportsSynchronizingFilterState`. Power BI turns off slicer sync for a visual with more than one field, so with 2 columns or more the slicer is not synced.
## Interactions and accessibility
- The box keeps the focus and the caret while the report updates. Keyboard: ↓ ↑ in the suggestions, Enter picks a suggestion or applies the text (Ctrl + Enter on several lines), Esc closes the suggestions, ← → move between chips.
- ARIA combobox (`aria-expanded`, `aria-activedescendant`), chips as a `radiogroup`, screen-reader announcements ("n result(s)", "Search cleared"). High contrast supported.
- Cross-filtering: other slicers and visuals filter the values offered (suggestions, counts); the visual is not filtered by its own filter. No highlighting.
- Power BI context menu. Read-only (input disabled) on dashboard tiles. FR/EN (`texts.language`).
## Format pane
Card order: `license` (always first), `style`, `header`, `search`, `input`, `fields`, `suggest`, `results`, `container` (frame), `texts`. `general.filter` is where Power BI stores the filter and `state` holds the typed text: never write them by hand.
## Editing a PBIP report (visual.json)
`visualType` is the visual GUID, `queryState` keys are the data role names (several projections in `fields` for chips), `objects` keys are the option IDs.
```json
{
"visual": {
"visualType": "plumeTextSlicer2FFF2CD495324564B38C02E87A8C23B5",
"query": { "queryState": {
"fields": { "projections": [
{ "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Orders" } }, "Property": "Customer" } }, "queryRef": "Orders.Customer", "nativeQueryRef": "Customer" },
{ "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Orders" } }, "Property": "City" } }, "queryRef": "Orders.City", "nativeQueryRef": "City" } ] }
} },
"objects": {
"search": [ { "properties": { "match": { "expr": { "Literal": { "Value": "'starts'" } } } } } ],
"input": [ { "properties": { "applyOn": { "expr": { "Literal": { "Value": "'enter'" } } },
"placeholder": { "expr": { "Literal": { "Value": "'Customer or city…'" } } } } } ],
"fields": [ { "properties": { "allChip": { "expr": { "Literal": { "Value": "false" } } } } } ],
"suggest": [ { "properties": { "max": { "expr": { "Literal": { "Value": "12D" } } } } } ]
}
}
}
```
## Styles and theme JSON
Same Style card as every Plume visual (`style.preset`, `style.themeJson`, palettes, custom colors: background, text, secondary text, lines, accent); see the theme JSON tutorial https://plumevisuals.com/ai/tutorials/en/themes-json.md. The accent colors the box border when focused, the Filter button while the text is not applied, the outline of the suggestion selected with the keyboard and the highlight of the matching part.
## Common pitfalls
- The report is empty and the line reads "No value matches": the selected chip is not the column that holds the text, or a typo; `results.noMatch` = `ignore` keeps the report whole.
- Nothing happens while typing: `input.applyOn` = `enter`; press Enter or click Filter.
- "Rosch" does not find "Rösch": `search.ignoreAccents` was turned off.
- "Search limited to the first N rows loaded": the search goes through the list of values on a model with more than 100,000 rows; a single-term `contains` / `starts` / `exact` search on one text column has no limit.
- Sync slicers has no effect: the visual has 2 columns or more (Power BI limitation).
- Searching for a literal `*` or `?`, or a value containing `;`: put the term in double quotes.
- Watermark visible: several terms, a wildcard, an exclusion, a regular expression, all fields at once, 3 columns or more, or a premium style, without a valid key.
- The visual makes no network request: data and license key stay in the report.
## Features that do NOT exist (do not suggest them)
Numeric or date operators in the box (`>600`, `4-5`, `2025`: use Range Plume, Period Plume or Date Picker Plume), a field prefix in the text (`city:paris`), search history, a button that turns the whole list into an exclusion, a preselected text on open, ticking values in a list (use Basic Slicer Plume or Bar Slicer Plume), a Tooltips well, drawing outside the visual's frame, cross-report filtering.
## Data fields (wells)
Internal name = data role name (PBIP `queryState` key). Labels as shown in Power BI (English / French). ★ = premium.
| Internal name | Label (EN) | Label (FR) | Kind | Max fields | Description |
|---|---|---|---|---|---|
| `fields` | Fields to search | Champs à rechercher | column | 6 | One or several columns (same table or related tables). With several columns, choose the column to search under the box, or search all of them at once. |
| `searchAlso` | Also search in | Rechercher aussi dans | column | 2 | Optional columns searched too (e.g. postal code); the filter still applies to the field (e.g. city) |
| `preselect` | Preselection | Présélection | measure | 1 | Optional measure returning the value(s) selected when the report opens, e.g. "Paris;Lyon" or "2026-01-01;2026-03-31" |
| `format` | Dynamic format | Format dynamique | measure | several | Measures named card.setting (e.g. title.fontSize): drive any Format option with DAX |
Data view: categorical, categories = `fields` + `searchAlso` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `preselect`, `format`.
Capabilities: supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView, supportsSynchronizingFilterState.
Network access: none (no privileges requested, no external request).
## Format pane options (96)
Columns: option ID (`object.property`), labels EN / FR as shown in Power BI, control type, PBIP literal type, default value, allowed values, notes.
### Plume Studio License / Licence Plume Studio (`license`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `license.buy` | Get a license | Obtenir une licence | info | text | `plumevisuals.com` | | |
| `license.key` | License key | Clé de licence | text | text | (empty) | | Paste the key received after purchase on plumevisuals.com (starts with PLUM1.). Checked offline. |
| `license.showOwner` | Show license holder (edit mode) | Afficher le titulaire (mode édition) | toggle | bool | `true` | true / false | |
### Style (`style`, Format pane)
**Style**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.preset` | Style | Style | dropdown | enumeration | `none` | `none` None; `minimal` Minimal; `blackWhite` Black & White; `press` Newspaper ★; `vintage` Vintage (antique plate) ★; `earth` Earth ★; `nordic` Nordic ★; `executive` Executive ★; `accessible` Accessible (high legibility) ★; `pastel` Pastel ★; `bauhaus` Bauhaus (pop) ★; `climate` Climate ★; `blueprint` Blueprint ★; `unknownPleasures` Unknown Pleasures ★; `dark` Graphite (dark) ★; `neon` Neon ★; `terminal` Terminal (Matrix) ★; `infographic` Infographic ★; `cockpit` Cockpit (HUD) ★; `hologram` Hologram ★ | Complete look shared by all Plume visuals: colors, three palettes, fonts, frame, table header, marks and effects. Customize colors below. |
| `style.themeJson` | Theme JSON ★ | Thème JSON ★ | textarea | text | (empty) | | Paste a JSON theme: see the 'JSON themes' tutorial on plumevisuals.com |
| `style.followTheme` | Follow report theme | Suivre le thème du rapport | toggle | bool | `false` | true / false | Text, background, accent and data colors come from the Power BI report theme. |
**Custom colors / Couleurs personnalisées**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.customColors` | Customize colors | Personnaliser les couleurs | toggle | bool | `false` | true / false | Start from the style and pick your own colors. A color left empty keeps the style's color. |
| `style.colorBackground` | Background | Fond | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorText` | Text | Texte | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorMuted` | Secondary text | Texte secondaire | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorGrid` | Lines and grid | Traits et grille | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorTrack` | Bar track | Fond des barres | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorAccent` | Accent | Accent | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorPositive` | Favorable | Favorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.colorNegative` | Unfavorable | Défavorable | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series1` | Series 1 | Série 1 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series2` | Series 2 | Série 2 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series3` | Series 3 | Série 3 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series4` | Series 4 | Série 4 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series5` | Series 5 | Série 5 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series6` | Series 6 | Série 6 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series7` | Series 7 | Série 7 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.series8` | Series 8 | Série 8 | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.palette` | Gradient palette | Palette du dégradé | dropdown | enumeration | `auto` | `auto` Style or theme palette; `crest` Plume (sequential); `crestDiverging` Plume (diverging); `viridis` Viridis ★; `magma` Magma ★; `inferno` Inferno ★; `cividis` Cividis (colorblind-safe) ★; `warmingStripes` Warming stripes ★; `rdYlBu` Red–Yellow–Blue ★; `brBG` Brown–Teal (drought) ★; `spectral` Spectral ★; `blues` Blues ★; `reds` Reds ★; `grays` Grays ★; `press` Press (ink and paper) ★; `nordic` Nordic ★; `earth` Earth (ochre to umber) ★; `pastel` Pastel ★; `okabeIto` Okabe-Ito (colorblind-safe) ★ | Visible when `style.customColors` = `true`. Gradient from the catalog (Viridis, Magma…). The start, middle and end colors below replace it. |
| `style.scaleLow` | Gradient: start | Dégradé : début | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleMid` | Gradient: middle (diverging) | Dégradé : milieu (écarts) | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
| `style.scaleHigh` | Gradient: end | Dégradé : fin | color | fill | (empty) | hex color | Visible when `style.customColors` = `true` |
**Text / Texte**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.fontFamily` | Font | Police | font | formatting | `Segoe UI, wf_segoe-ui_normal, helvetica, arial, sans-serif` | | |
| `style.fontSize` | Text size | Taille du texte | number | formatting | `12` | 8 to 28 | |
| `style.density` | Density | Densité | dropdown | enumeration | `normal` | `compact` Compact; `normal` Normal; `comfortable` Comfortable | |
**Animations**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `style.animate` | Animations | Animations | toggle | bool | `true` | true / false | Smooth transitions when data changes. Automatically disabled when the system asks to reduce motion. |
### Header / En-tête (`header`, Format pane)
The card header toggle is `header.show`.
**Title / Titre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `header.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `header.title` | Text | Texte | text | text | (empty) | | Leave empty to use the field name. |
| `header.fontSize` | Size | Taille | number | formatting | `14` | 7 to 36 | |
| `header.bold` | Bold | Gras | toggle | bool | `true` | true / false | |
| `header.italic` | Italic | Italique | toggle | bool | `false` | true / false | |
| `header.underline` | Underline | Souligné | toggle | bool | `false` | true / false | |
| `header.color` | Color (empty = text) | Couleur (vide = texte) | color | fill | (empty) | hex color | |
| `header.bgColor` | Background color | Couleur d'arrière-plan | color | fill | (empty) | hex color | |
| `header.align` | Horizontal alignment | Alignement horizontal | dropdown | enumeration | `left` | `left` Left; `center` Center; `right` Right | |
| `header.wrap` | Text wrap | Retour automatique à la ligne | toggle | bool | `true` | true / false | A long title goes on two lines instead of being cut. |
**Divider / Séparateur**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `header.divider` | Show divider | Afficher le séparateur | toggle | bool | `false` | true / false | |
| `header.dividerColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `header.divider` = `true` |
| `header.dividerStyle` | Line style | Style de trait | dropdown | enumeration | `solid` | `solid` Solid; `dashed` Dashed; `dotted` Dotted | Visible when `header.divider` = `true` |
| `header.dividerWidth` | Width | Épaisseur | number | integer | `1` | 1 to 6 | Visible when `header.divider` = `true` |
**Count and Clear button / Décompte et bouton Effacer**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `header.showCount` | Show value / selection count | Afficher le nombre de valeurs / sélection | toggle | bool | `true` | true / false | |
| `header.showClear` | "Clear" button | Bouton « Effacer » | toggle | bool | `true` | true / false | |
| `header.clearLabel` | Clear button label | Libellé du bouton Effacer | text | text | (empty) | | Visible when `header.showClear` = `true` |
### Search / Recherche (`search`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `search.match` | Matching | Correspondance | dropdown | enumeration | `contains` | `contains` Contains; `starts` Starts with; `ends` Ends with; `exact` Is exactly; `words` Word start; `regex` Regular expression ★ | How each term is compared with the values. Case is ignored, like everywhere in Power BI. |
| `search.wildcards` | Wildcards * and ? ★ | Jokers * et ? ★ | toggle | bool | `true` | true / false | * = any characters, ? = one character (e.g. FR-*-2026, Dup?nt). Put a term in "quotes" to search a literal * or ?. |
| `search.ignoreAccents` | Ignore accents (é = e) | Ignorer les accents (é = e) | toggle | bool | `true` | true / false | |
| `search.loose` | Hyphens, spaces and apostrophes alike | Tirets, espaces et apostrophes équivalents | toggle | bool | `true` | true / false | "Saint Emilion" finds "Saint-Émilion", "l'Isle" finds "l’Isle". The filter is then sent as a list of values when a Power BI condition would not give the same result. |
| `search.caseSensitive` | Match case | Respecter la casse | toggle | bool | `false` | true / false | Distinguishes "Paris" from "PARIS". The filter is then always sent as a list of values. |
| `search.exclude` | Exclude with "-" or "!" (-test, !test) ★ | Exclure avec « - » ou « ! » (-test, !test) ★ | toggle | bool | `true` | true / false | A term starting with - or ! removes the values that match it (e.g. Paris; -Nord; !Sud). |
| `search.minChars` | Minimum characters | Caractères minimum | number | integer | `1` | 1 to 10 | |
### Input / Saisie (`input`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `input.placeholder` | Placeholder | Texte indicatif | text | text | (empty) | | Leave empty for "Search in <field>…". |
| `input.multiline` | Multiple lines (paste a list) ★ | Plusieurs lignes (coller une liste) ★ | toggle | bool | `false` | true / false | A text box to paste or type a list: one value per line or separated by ; (a column copied from Excel works). |
| `input.rows` | Visible lines | Lignes visibles | number | integer | `4` | 2 to 20 | Visible when `input.multiline` = `true` |
| `input.separator` | Term separator | Séparateur des termes | dropdown | enumeration | `auto` | `auto` ; or line break; `semicolon` Semicolon (;); `newline` Line break; `comma` Comma (,) or line break; `none` None (whole text) | Several terms = several searches (a list ★). A term in "quotes" keeps its separators. |
| `input.combine` | Several terms | Plusieurs termes | dropdown | enumeration | `any` | `any` Any of them (OR); `all` All of them (AND) | |
| `input.applyOn` | Filter | Filtrer | dropdown | enumeration | `typing` | `typing` As you type; `enter` With Enter or the button | With several lines, Ctrl + Enter filters. |
| `input.delay` | Delay after typing (ms) | Délai après la frappe (ms) | number | integer | `400` | 0 to 3000 | Visible when `input.applyOn` = `typing` |
| `input.button` | "Filter" button | Bouton « Filtrer » | toggle | bool | `true` | true / false | Shown when filtering with Enter, or with several lines. |
| `input.showClear` | Clear (×) button | Croix d'effacement | toggle | bool | `true` | true / false | |
| `input.height` | Box height (px) | Hauteur de la zone (px) | number | integer | `34` | 24 to 64 | Visible when `input.multiline` = `false` |
### Fields / Champs (`fields`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `fields.mode` | With several fields | Avec plusieurs champs | dropdown | enumeration | `pick` | `pick` Pick the field (chips under the box); `all` Search all fields ★ | Up to 2 fields free, 3 to 6 fields ★. Searching all fields at once keeps the rows where any field matches. |
| `fields.allChip` | "All fields" chip ★ | Puce « Tous les champs » ★ | toggle | bool | `true` | true / false | Visible when `fields.mode` = `pick` |
| `fields.allLabel` | "All fields" label | Libellé « Tous les champs » | text | text | (empty) | | Visible when `fields.mode` = `pick` |
| `fields.start` | Field picked on open (0 = all) | Champ choisi à l'ouverture (0 = tous) | number | integer | `1` | 0 to 6 | Visible when `fields.mode` = `pick` |
| `fields.alsoShow` | "Also search in" value in suggestions | Valeur du champ « Rechercher aussi dans » dans les suggestions | toggle | bool | `true` | true / false | Drop for example the postal code in "Also search in": typing 33 finds the cities of Gironde, and the filter applies to the city. |
### Suggestions (`suggest`, Format pane)
The card header toggle is `suggest.show`.
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `suggest.show` | Show | Afficher | toggle | bool | `true` | true / false | |
| `suggest.max` | Maximum count | Nombre maximum | number | integer | `8` | 1 to 30 | |
| `suggest.highlight` | Highlight matches | Surligner le texte trouvé | toggle | bool | `true` | true / false | |
### Results / Résultats (`results`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `results.info` | Information line | Ligne d'information | toggle | bool | `true` | true / false | Under the box: number of values found, terms not found, warnings. |
| `results.noMatch` | When nothing matches | Si rien ne correspond | dropdown | enumeration | `empty` | `empty` Show nothing (like Power BI); `ignore` Do not filter | |
| `results.method` | Filter sent | Filtre envoyé | dropdown | enumeration | `auto` | `auto` Automatic; `condition` Condition (contains, starts with…); `values` List of matching values | Automatic: a Power BI condition when it gives exactly the same result (no row limit), otherwise the list of matching values. |
| `results.blankLabel` | Blank label | Libellé des vides | text | text | (empty) | | |
### Preselection / Présélection (`preselect`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `preselect.when` | Apply | Appliquer | dropdown | enumeration | `session` | `session` Once per session; `always` Reapply on every display | Drop in "Preselection" a measure that returns a value or a list ("Paris;Lyon"): the slicer selects it when the report opens. Premium feature ★. |
| `preselect.force` | Force | Forcer | toggle | bool | `false` | true / false | Replaces an existing selection: saved in the report, recalled by a bookmark or by persistent filters. Otherwise it is kept. |
| `preselect.separator` | Value separator | Séparateur des valeurs | text | text | `;` | | |
| `preselect.warn` | Report values not found (edit mode) | Signaler les valeurs introuvables (mode édition) | toggle | bool | `true` | true / false | |
### Frame / Cadre (`container`, Format pane)
**Background / Arrière-plan**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.bgShow` | Background | Arrière-plan | toggle | bool | `false` | true / false | |
| `container.bgColor` | Color | Couleur | color | fill | `#FFFFFF` | hex color | Visible when `container.bgShow` = `true` |
| `container.bgColor2` | Gradient end (optional) | Fin du dégradé (optionnel) | color | fill | (empty) | hex color | Visible when `container.bgShow` = `true` |
| `container.bgTransparency` | Transparency (%) | Transparence (%) | slider | numeric | `0` | 0 to 100 | Visible when `container.bgShow` = `true` |
| `container.transparent` | Transparent background | Fond transparent | toggle | bool | `false` | true / false | The visual lets what is behind it show through (useful for a dropdown placed over another visual). |
**Border / Bordure**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.border` | Border | Bordure | toggle | bool | `true` | true / false | |
| `container.borderColor` | Color (empty = lines) | Couleur (vide = traits) | color | fill | (empty) | hex color | Visible when `container.border` = `true` |
| `container.borderWidth` | Width | Épaisseur | number | integer | `1` | 0 to 6 | Visible when `container.border` = `true` |
| `container.radius` | Rounded corners | Coins arrondis | number | integer | `8` | 0 to 24 | |
**Shadow / Ombre**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.shadow` | Shadow | Ombre | toggle | bool | `false` | true / false | |
| `container.shadowColor` | Color (empty = soft) | Couleur (vide = douce) | color | fill | (empty) | hex color | Visible when `container.shadow` = `true` |
| `container.shadowSize` | Blur (px) | Flou (px) | number | integer | `12` | 0 to 40 | Visible when `container.shadow` = `true` |
**Spacing / Marges**
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `container.padding` | Inner padding | Marge intérieure | number | integer | `10` | 0 to 40 | |
### Language and numbers / Langue et nombres (`texts`, Format pane)
| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `texts.language` | Interface language | Langue de l'interface | dropdown | enumeration | `auto` | `auto` Same as Power BI; `fr` French; `en` English | |
| `texts.numberLocale` | Number format locale (e.g. en-GB) | Format des nombres (ex. fr-FR) | text | text | (empty) | | Thousands and decimal separators. Empty: same as Power BI. |
### Other objects (not in the Format pane cards above)
- `state`: `state.text` (text), `state.field` (integer), `state.sig` (text), internal state saved by the visual in edit mode (column widths, positions of dragged annotations); leave it alone.
- `general`: `general.filter` (filter), used by Power BI to store the filter applied by the visual.