Aller au contenu
Plume Visuals
← Retour

Segment calendrier pour Power BI Date Picker Plume

Le segment de dates en calendrier : une plage en deux clics, la dernière date en un clic, les jours sans données grisés et les dates choisies par règles.

Certifié par MicrosoftCERTIFIÉ MICROSOFT • POWER BI •
Tutoriels ↓
Installer depuis Microsoft MarketplacePage officielle du visuel chez Microsoft · installation gratuite

Démo interactive

Le vrai visuel Power BI, exécuté dans votre navigateur avec les données fictives du rapport d'exemple. Les cartes et les barres réagissent au filtre comme dans un rapport.

Date Picker Plume affiche un à douze mois de calendrier et filtre le rapport par plage, date, semaine ou mois. Il répond aux demandes les plus fréquentes sur les segments de dates : ouvrir le rapport sur la dernière date disponible, des semaines qui commencent le lundi, les numéros de semaine ISO, et des jours sans données qu'on ne peut pas choisir. Il peut aussi ne laisser choisir que certaines dates (les vendredis, les fins de mois, le dernier jour ouvré) et, en premium, colorer chaque jour selon une mesure. Pour voir la tendance d'une mesure sous la période ou comparer à N-1, voyez Period Plume.

Cas d'usage

  • Rapports quotidiens qui doivent toujours s'ouvrir sur le dernier jour avec données
  • Arrêtés hebdomadaires (vendredis) ou clôtures de fin de mois, seuls jours sélectionnables
  • Commerces fermés le dimanche ou en août : jours sans ventes grisés
  • Calendrier de l'activité : chaque jour coloré selon le CA (premium)

GratuitInclus gratuitement

  • Calendrier de 1 à 12 mois (ou selon la taille), choix rapide du mois et de l'année, semaine du lundi, du dimanche ou du samedi, numéros de semaine ISO ou US
  • Plage en deux clics avec aperçu, Maj + clic pour prolonger ; une date, une semaine ou un mois entier
  • Raccourci « Dernière date » (dernier jour sélectionnable avec données) et 12 raccourcis : hier, 7 et 30 jours, semaine, mois, trimestre, cumul annuel…
  • Présélection sans DAX à l'ouverture (dernière date, N derniers jours, mois en cours, cumul annuel…), une fois par session ou à chaque affichage : le rapport publié rouvre sur la dernière date
  • Jours sans données grisés et non sélectionnables (mesure vide ou date absente de la colonne)
  • Dates sélectionnables : jours de la semaine, fin ou début de mois, dernier ou premier jour ouvré, fins de semaine, de trimestre et d'année ; fériés et dates futures exclus
  • Jours fériés de 7 pays et vos fermetures ; champ compact qui ouvre le calendrier au clic ; bouton « Appliquer » ; durée maximale ; dates tapées au clavier
  • Clavier complet, lecteurs d'écran, contraste élevé, signets et segments synchronisés
  • Formats dynamiques : bouton fx sur les couleurs et les textes, tout réglage piloté en DAX
  • Styles Minimal et Noir et blanc, couleurs personnalisées (fond, texte, texte secondaire, traits, fond des barres, accent)

PremiumFonctions premium

  • Plusieurs dates séparées (chaque clic ajoute ou retire une date)
  • Règles avancées en français ou en anglais : « vendredi », « 2e mardi », « dernier ouvré & mois 3,6,9,12 », exclusions
  • Dégradé de couleur d'une mesure dans les cases (linéaire, par rang ou divergent), valeurs et légende
  • Raccourcis personnalisés nommés (soldes, saisons…)
  • Présélection par une mesure DAX : une date ou une plage (« 2026-01-01;2026-03-31 »)
  • Styles communs au catalogue (Néon, Journal, Graphite…), palettes et thème JSON

Utilisables sans clé pour les essayer, avec un filigrane.

Tutoriels

Commencez par la prise en main, puis piochez dans les cas pratiques. La page « Champs et réglages » décrit chaque option du volet Format.

  1. Prise en mainDébutant10 min de lectureUn segment calendrier qui s'ouvre sur la dernière date et grise les jours sans donnéesPrise en main de Date Picker Plume : table de dates, calendrier qui grise les jours sans données et sélection d'une date ou d'une plage en deux clics.
  2. Cas pratiquesIntermédiaire5 min de lectureDate Picker Plume : 8 cas pratiques (vendredis, fins de mois, dégradé…)Ouvrir sur la dernière date, n'autoriser que les vendredis ou les fins de mois, écrire des règles, colorer les jours par le CA : pas à pas.
  3. Champs et réglagesIntermédiaire16 min de lectureDate Picker Plume : tous les champs et réglages expliquésChaque zone de champ et chaque réglage du volet Format de Date Picker Plume : à quoi il sert, ses valeurs possibles et sa valeur par défaut.
  4. Bases communesBien démarrer avec les visuels PlumeInstallation, licence, styles et réglages communs à tous les visuels.

Champs à glisser dans le visuel

ChampContenu
DateColonne de dates (Calendrier[Date]), pas la hiérarchieObligatoire
Valeur (données et dégradé)Mesure : jours vides grisés ; colore le dégradé ★Facultatif
PrésélectionMesure : la date ou la plage sélectionnée à l'ouverture, ex. « 2026-01-01;2026-03-31 » (fonction ★)FacultatifPremium
InfobullesMesures supplémentairesFacultatif
Format dynamiqueMesures renommées carte.réglage (ex. title.text) : le volet Format piloté en DAXFacultatif

Il vous manque une fonction ? Nous adaptons nos visuels ou en créons sur mesure. Demander un visuel sur mesure

Un bug dans Date Picker Plume, ou une idée pour l'améliorer ? Signaler un bug · Proposer une idée

Référence technique pour assistants IA

Section destinée aux assistants IA (ChatGPT, Claude, Copilot…) : tous les champs, toutes les options du volet Format avec leurs noms internes, le format des données et des exemples DAX. Générée depuis le code du visuel, version 1.1.0.0. Vous pouvez la copier dans votre assistant pour qu'il vous guide.

Version Markdown brute (/ai/visuals/date-picker.md)
# Date Picker 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 Date Picker 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/date-picker (French: https://plumevisuals.com/fr/visuels/date-picker)
- Summary: The calendar date slicer: a range in two clicks, the latest date in one, days without data greyed out and selectable days set by rules.
- Power BI visual GUID (`visualType`): `plumeDatePicker25D54D111C2643719FC6E7ACE9CFD170`
- 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

Date Picker Plume is a Power BI custom slicer that shows a **calendar** (1 to 12 months) built from a date column and filters the report with the chosen dates. Selection modes (`selection.mode`): **`range`** (default: first click = start, the range is previewed on hover, second click = end; Shift + click extends the range, Esc cancels a range in progress), **`single`** (one date), **`week`** (click a day or a week number: the whole week, following `calendar.weekStart`), **`month`** (the whole month) and **`multiple`** ★ (each click adds or removes a date; Shift + click adds the selectable dates in between).

**New in version 1.1.0.0 (30/10/2026):** Shared slicer cards (Preselection: shortcuts such as last N days, or a range measure); short month names "Jan ’26" and smaller cells; `behavior.defaultSelection` → `preselect.shortcut`.

Days **without data** are greyed out and cannot be picked by default (`rules.noData` = `disable`; `dim` = greyed but selectable, `normal` = like the others). A date "has data" when the optional **Value** measure is not blank for that day (`rules.zeroIsEmpty` also treats 0 as empty); without a Value measure, every date present in the column has data, so a full Calendar table greys nothing out: drop a measure such as `[Revenue]` in Value to grey out the days without sales.

**Selectable dates** (card `rules`, « Dates sélectionnables »): a date can be picked only if it passes every condition: weekday toggles (`rules.mon` … `rules.sun`), position in the period (`rules.position`: `monthEnd`, `monthStart`, `lastWorkday`, `firstWorkday`, `lastDataDay` = last date with data of the month, `weekEnd`, `weekStart`, `quarterEnd`, `yearEnd`), `rules.excludeHolidays`, `rules.noFuture`, and the advanced rules ★ (`rules.expression`, see below). Other dates are faded, faded and struck through, or hidden (`rules.inactiveStyle`). A range filters every date between start and end, or only the selectable dates (`selection.rangeFilter` = `active`, the summary then reads "· 4 selectable").

**Shortcuts** (card `presets`): "Latest date" (`presets.latest`, on by default) selects the **last selectable date with data** (with Fridays only: the last Friday with data); Today, Yesterday, last 7 and 30 days, this week, last week, this month, last month, this quarter, year to date, last year, last 12 months, each one with its own toggle. They adapt to the mode (single date → days only; week → weeks; month → months; several dates → every selectable date of the period). Reference date (`presets.anchor`): `latest` (last date in the data, default) or `today`. Named custom shortcuts ★ (`presets.custom`, one per line: `Summer sales: 2026-06-24 - 2026-07-21`). Position: top, bottom or left side.

**Default selection** (card `behavior`): `preselect.shortcut` (`none` by default, `latest`, `today`, `last7`, `last30`, `thisWeek`, `thisMonth`, `lastMonth`, `ytd`) applied when the report opens without a date filter (`behavior.defaultWhen` = `noFilter`) or **every time the page is shown** (`open`): the published report then always reopens on the latest date even if another date was saved in it (a bookmark applied afterwards is respected). `behavior.apply` = `button` adds Apply / Cancel buttons ("Selection not applied").

Calendar card (`calendar`): `display` = `inline` (always visible) or `popup` (**compact field**, one line such as "Oct 6, 2026 → Oct 12, 2026 · 7 days" that opens the calendar on click: below the field when 250 px remain in the frame, otherwise as a full-frame panel; the frame is **transparent by default** in this visual (`container.transparent` = true): in compact mode it stays transparent even with a style that has a background, without border, shadow or texture unless set by hand, so the field can overlay another visual (make the frame taller, bring it to front, turn off the Power BI container background in General › Effects); with such a style, the title and the field sit on a card with the style's background, and the open calendar is opaque; with the visible calendar, the frame becomes opaque as soon as the style has a background); `months` (0 = fitted to the frame, up to 12, side by side then in rows; `maxCell` = maximum cell size, 44 px by default); `openOn` (month of the selection, of the latest date, or today's); quick month and year picker (click the month name); `weekStart` (`monday` default, `sunday`, `saturday`); `weekNumbers` with `weekRule` `iso` (ISO 8601) or `us`; weekends tinted, today outlined, days of neighbouring months, cell shape, month names long or short; `holidays` (`fr`, `frAm` = France Alsace-Moselle, `uk` = England, `us` = federal with observed days, `be`, `ch` = Geneva, `de` = national) shown as a dot under the date with the name in the tooltip, plus `holidayList` (`2026-12-24 Christmas Eve ; 2026-08-10..2026-08-21 Summer closure`).

## 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.
- Shared Style card (the same in every Plume visual): the styles `none`, `minimal` and `blackWhite`, the two Plume gradient palettes (`crest`, `crestDiverging`), "Follow report theme" and all custom colors are **free**; every other `style.preset`, the other gradient palettes and `style.themeJson` are **premium**.
- Premium features of Date Picker Plume: **several dates** (`selection.mode` = `multiple`), **advanced rules** (`rules.expression` not empty), the **heatmap** (`heatmap.show` with a Value measure; without a measure nothing is drawn and no watermark is shown), **custom shortcuts** (`presets.custom` not empty).
- Without a valid key, a premium feature in use shows **"Plume Visuals · Premium preview"** (French « Plume Visuals · Aperçu premium ») with an "Unlock →" link to the pricing page, 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 `date-picker` 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.

## Advanced rules ★ (`rules.expression`)

One rule per line (or separated by `;`). A date is selectable if it matches **at least one** line; a line starting with `-`, `sauf` or `except` **excludes** the dates it describes. Inside a line, `&`, `et`, `and` combine terms; `non`, `not`, `!` negate a term. English or French, case and accents ignored. A rule that is not understood is ignored and flagged in edit mode ("Rule not understood, ignored: …"). No code is evaluated (each term is matched by a regular expression).

| Term (EN / FR) | Dates kept |
|---|---|
| `monday` … `sunday`, `mon-fri`, `mon,wed,fri`, `fridays` / `lundi`, `lun-ven` | weekdays |
| `workday`, `business day` / `ouvré`, `jours ouvrés` | Monday to Friday except holidays |
| `weekend` / `week-end`; `holiday` / `férié` | Saturday and Sunday; holidays of the list |
| `month end`, `month start`, `end of week`, `quarter end`, `year end`… / `fin de mois`, `début de mois`… | period bounds (week per `calendar.weekStart`) |
| `last workday`, `first workday` / `dernier ouvré`, `premier ouvré` | last / first working day of the month |
| `last day with data` / `dernière date avec données` | last date with data of the month |
| `day 1,15,-1`, `day 1-10` / `jour 1,15,-1`, `le 15` | days of the month (`-1` = last day) |
| `last friday`, `2nd tuesday` / `dernier vendredi`, `2e mardi` | n-th weekday of the month |
| `month 3,6,9,12`, `month jan-mar`, `december` / `mois 3,6,9,12` | months |
| `week 1-10`, `even week`, `odd week` / `semaine paire` | week numbers (ISO or US) |
| `year 2025,2026` / `année 2026` | years |
| `with data`, `no data` / `avec données`, `sans données` | according to the Value measure |
| `past`, `future`, `today` / `passé`, `futur`, `aujourd'hui` | relative to today |
| `2026-12-24`, `2026-01-01..2026-03-31`, `after 2026-01-01`, `before 2026-06-30` / `du 01/01/2026 au 31/03/2026` | dates and ranges |

Examples: `friday` (weekly closings); `last workday & month 3,6,9,12` (quarter-end closings); `workday` plus a line `- 2026-08-10..2026-08-21` (except the summer closure); `day 1,15` (twice a month).

## Heatmap ★ (`heatmap`)

Each day with data is colored by the Value measure: `heatmap.colors` = `style` (gradient palette of the style, follows the theme and custom colors), `accent` (background to accent) or `custom` (`low`, `high`); `reverse`; `intensity` (10 to 100 %); `scale` = `linear`, `quantile` (each color holds as many days) or `diverging` (around zero); `showValues` (values in enlarged cells, black or white text by contrast); `legend` (min – max with the measure name). The domain covers every date with data, not only the months shown, so colors stay stable from month to month. The selection stays visible (accent ring). High contrast: no heatmap.

## Expected data shape

| Date (`date`) | Value (`value`, optional) | Tooltips (`tooltips`, optional) |
|---|---|---|
| 2026-09-28 | 2 410 | 58 |
| 2026-09-29 | 1 980 | 47 |
| … | … | … |

- **Date** (`date`, grouping, required): a date column, e.g. `Calendar[Date]`. Use the column itself (right-click the field › Date), not the automatic date hierarchy; date/time columns are grouped by day; a column of years is refused with a clear message.
- **Value (data and heatmap)** (`value`, one measure, optional): blank = "without data"; also colors the heatmap ★.
- **Tooltips** (`tooltips`, measures): added to the Power BI tooltip of each day (date, value, tooltips, week, holiday, status).
- 30,000 rows per data window (one row per day).

## Filter sent to the report

- Date, range, week, month: an `AdvancedFilter` on the date column, `GreaterThanOrEqual` the first day and `LessThan` the day after the last one (local midnight, like Period Plume). A date hierarchy is resolved to its source column.
- Several dates ★, or a range limited to the selectable dates: a `BasicFilter` `In` with the exact values of the column (date/time values included), 5,000 dates at most (beyond: the whole range).
- Nothing selected = filter removed. **Bookmarks** and **Sync slicers** restore the selection (`supportsSynchronizingFilterState`).

## Interactions and accessibility

- Clicking a date never scrolls the months on show (since 1.0.1.0); a filter coming from elsewhere (bookmark, synced slicer) outside the view is brought into view.
- Keyboard: ← → day, ↑ ↓ week, Page Up / Down month, Shift + Page Up / Down year, Home / End start or end of the week, Enter / Space picks (Shift = extend), Esc cancels a range, closes the quick picker or the compact calendar. Only one cell is reachable with Tab (roving focus), and the focus stays on the date after each filter.
- ARIA grid (`grid`, `row`, `gridcell`, `aria-selected`, `aria-disabled`) with a full label per date (value, holiday, without data, not selectable). High contrast: outlines instead of fills.
- Power BI context menu and tooltip on each date. Read-only on dashboard tiles. FR/EN.
- Selection summary under the calendar (`selection.summary`), date format short / medium / long, text when nothing is selected ("All dates"), typed dates (`selection.inputs`: `15/03/2026`, `2026-03-15`, day/month order from the locale), maximum range length (`selection.maxDays`: the range is clipped, "Range limited to 7 days").

## Format pane

Card order: `license` (always first), `style`, `header`, `calendar`, `selection`, `rules` (« Dates sélectionnables » / "Selectable dates"), `heatmap` ("Heatmap ★"), `presets` ("Shortcuts"), `behavior`, `values` (number format), `container` (frame), `texts`. `general.filter` is where Power BI stores the filter: never write it by hand.

## Editing a PBIP report (visual.json)

```json
{
  "visual": {
    "visualType": "plumeDatePicker25D54D111C2643719FC6E7ACE9CFD170",
    "query": { "queryState": {
      "date":  { "projections": [ { "field": { "Column": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Date" } }, "queryRef": "Sales.Date", "nativeQueryRef": "Date" } ] },
      "value": { "projections": [ { "field": { "Measure": { "Expression": { "SourceRef": { "Entity": "Sales" } }, "Property": "Revenue" } }, "queryRef": "Sales.Revenue", "nativeQueryRef": "Revenue" } ] }
    } },
    "objects": {
      "selection": [ { "properties": { "mode": { "expr": { "Literal": { "Value": "'single'" } } } } } ],
      "rules":     [ { "properties": { "mon": { "expr": { "Literal": { "Value": "false" } } }, "sat": { "expr": { "Literal": { "Value": "false" } } }, "sun": { "expr": { "Literal": { "Value": "false" } } } } } ],
      "behavior":  [ { "properties": { "defaultSelection": { "expr": { "Literal": { "Value": "'latest'" } } }, "defaultWhen": { "expr": { "Literal": { "Value": "'open'" } } } } } ],
      "calendar":  [ { "properties": { "holidays": { "expr": { "Literal": { "Value": "'uk'" } } }, "months": { "expr": { "Literal": { "Value": "2D" } } } } } ]
    }
  }
}
```

## Styles and theme JSON

Same Style card as every Plume visual (`style.preset`, `style.themeJson`, palettes, custom colors); see the theme JSON tutorial https://plumevisuals.com/ai/tutorials/en/themes-json.md. The heatmap uses the gradient palette of the style (`style.palette`), the diverging scale the diverging palette.

## Common pitfalls

- Nothing is greyed out: the Date column comes from a full Calendar table and no Value measure is set; add a measure in Value.
- The calendar shows years only, or an error: the date hierarchy or a Year column was dropped instead of the date column.
- "Latest date" picks an older day: the latest days are not selectable (rules, future dates, holidays) or have a blank Value.
- The report does not open on the latest date: `preselect.shortcut` is `none`, or `defaultWhen` is `noFilter` while a date filter was saved in the report; use `open`.
- Watermark visible: several dates, advanced rules, heatmap with a measure, custom shortcuts 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)

Fiscal calendars (4-4-5) and shifted fiscal years, a second comparison period (use Period Plume for year-over-year), a trend timeline under the dates (Period Plume), relative date filters that move by themselves (shortcuts send fixed dates; Period Plume sends relative filters), time-of-day selection, several independent ranges, drawing outside the visual's frame.

## 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 |
|---|---|---|---|---|---|
| `date` | Date | Date | column | 1 | A date column (e.g. Calendar[Date]), not the date hierarchy |
| `value` | Value (data and heatmap) | Valeur (données et dégradé) | measure | 1 | Optional measure: days where it is blank are greyed out; it also colors the calendar (heatmap) |
| `tooltips` | Tooltips | Infobulles | measure | several |  |
| `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 = `date` (one row per combination), 30,000 rows per data window (more fetched automatically); measures = `value`, `tooltips`, `preselect`, `format`.
Capabilities: supportsKeyboardFocus, supportsMultiVisualSelection, supportsLandingPage, supportsEmptyDataView, supportsSynchronizingFilterState.
Network access: none (no privileges requested, no external request).

## Format pane options (139)

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

### Calendar / Calendrier (`calendar`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `calendar.display` | Display as | Affichage | dropdown | enumeration | `inline` | `inline` Visible calendar; `popup` Compact field (calendar on click) | Compact field: a one-line box showing the selection; the calendar opens on click, inside the visual's frame (make the frame taller and turn off its background so it opens over the visual below). |
| `calendar.months` | Number of months (0 = fit the size) | Nombre de mois (0 = selon la taille) | number | integer | `0` | 0 to 12 |  |
| `calendar.weekStart` | First day of the week | Premier jour de la semaine | dropdown | enumeration | `monday` | `monday` Monday; `sunday` Sunday; `saturday` Saturday |  |
| `calendar.weekNumbers` | Week numbers | Numéros de semaine | toggle | bool | `false` | true / false |  |
| `calendar.weekRule` | Week numbering | Numérotation des semaines | dropdown | enumeration | `iso` | `iso` ISO 8601 (Europe); `us` Week containing January 1 (US) |  |
| `calendar.outsideDays` | Days of adjacent months | Jours des mois voisins | toggle | bool | `false` | true / false |  |
| `calendar.today` | Highlight today | Mettre en évidence aujourd'hui | toggle | bool | `true` | true / false |  |
| `calendar.weekends` | Shade weekends | Teinter les week-ends | toggle | bool | `true` | true / false |  |
| `calendar.holidays` | Public holidays | Jours fériés | dropdown | enumeration | `none` | `none` None; `fr` France; `frAm` France (Alsace-Moselle); `uk` United Kingdom (England); `us` United States (federal); `be` Belgium; `ch` Switzerland (Geneva); `de` Germany (national) |  |
| `calendar.holidayList` | Extra holidays or closures | Jours fériés ou fermetures en plus | textarea | text | (empty) |  | One date (or range yyyy-mm-dd..yyyy-mm-dd) per line or separated by ;, followed by an optional label. Counted as holidays. |
| `calendar.cellShape` | Cell shape | Forme des cases | dropdown | enumeration | `rounded` | `rounded` Rounded; `square` Square; `circle` Circle |  |
| `calendar.maxCell` | Maximum cell size (px) | Taille maximale d'une case (px) | number | integer | `44` | 14 to 120 | Small values (14 to 24 px): compact calendar, more months in the same frame. |
| `calendar.monthFormat` | Month names | Nom des mois | dropdown | enumeration | `long` | `long` Long (October 2026); `short` Short (Oct '26) |  |
| `calendar.jump` | Quick month and year picker | Choix rapide du mois et de l'année | toggle | bool | `true` | true / false | Clicking the month name opens a grid of months and years. |
| `calendar.openOn` | Month shown on open | Mois affiché à l'ouverture | dropdown | enumeration | `selection` | `selection` The selection's (else latest date); `latest` The latest date in the data; `today` Today's |  |

### Selection / Sélection (`selection`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `selection.mode` | Mode | Mode | dropdown | enumeration | `range` | `range` Range (two clicks); `single` Single date; `week` Whole week; `month` Whole month; `multiple` Several dates ★ | Range: first click = start, second click = end (Shift + click extends). Several dates: each click adds or removes a date, Shift + click adds the selectable dates in between. |
| `selection.rangeFilter` | A range filters | Une plage filtre | dropdown | enumeration | `between` | `between` Every date between start and end; `active` Only the selectable dates | Visible when `selection.mode` = `range` or `week` or `month`. With rules (e.g. Fridays only), "Only the selectable dates" filters the Fridays in the range and nothing else. |
| `selection.maxDays` | Maximum range length (days, 0 = no limit) | Durée maximale d'une plage (jours, 0 = sans limite) | number | integer | `0` | 0 to 3660 | Visible when `selection.mode` = `range` |
| `selection.summary` | Selection summary | Résumé de la sélection | toggle | bool | `true` | true / false |  |
| `selection.inputs` | Typed dates (From / To) | Saisie des dates au clavier (Du / Au) | toggle | bool | `false` | true / false |  |
| `selection.dateFormat` | Date format | Format des dates | dropdown | enumeration | `medium` | `short` Short (10/06/2026); `medium` Medium (Oct 6, 2026); `long` Long (Tue, October 6, 2026) |  |
| `selection.fromLabel` | "From" label | Libellé « Du » | text | text | (empty) |  | Visible when `selection.inputs` = `true` |
| `selection.toLabel` | "To" label | Libellé « Au » | text | text | (empty) |  | Visible when `selection.inputs` = `true` |
| `selection.emptyText` | Text when nothing is selected | Texte sans sélection | text | text | (empty) |  |  |

### Selectable dates / Dates sélectionnables (`rules`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `rules.noData` | Dates without data | Dates sans données | dropdown | enumeration | `disable` | `disable` Greyed out, not selectable; `dim` Greyed out but selectable; `normal` Like the others | A date has "no data" when it is not in the column, or when the Value measure is blank on it. |
| `rules.zeroIsEmpty` | Value equal to 0 = no data | Valeur égale à 0 = sans données | toggle | bool | `false` | true / false |  |
| `rules.mon` | Monday | Lundi | toggle | bool | `true` | true / false |  |
| `rules.tue` | Tuesday | Mardi | toggle | bool | `true` | true / false |  |
| `rules.wed` | Wednesday | Mercredi | toggle | bool | `true` | true / false |  |
| `rules.thu` | Thursday | Jeudi | toggle | bool | `true` | true / false |  |
| `rules.fri` | Friday | Vendredi | toggle | bool | `true` | true / false |  |
| `rules.sat` | Saturday | Samedi | toggle | bool | `true` | true / false |  |
| `rules.sun` | Sunday | Dimanche | toggle | bool | `true` | true / false |  |
| `rules.position` | Position in the period | Position dans la période | dropdown | enumeration | `any` | `any` Any date; `monthEnd` Last day of the month; `monthStart` First day of the month; `lastWorkday` Last working day of the month; `firstWorkday` First working day of the month; `lastDataDay` Last date with data in the month; `weekEnd` Last day of the week; `weekStart` First day of the week; `quarterEnd` Last day of the quarter; `yearEnd` Last day of the year |  |
| `rules.excludeHolidays` | Grey out public holidays | Griser les jours fériés | toggle | bool | `false` | true / false |  |
| `rules.noFuture` | Grey out future dates | Griser les dates futures | toggle | bool | `false` | true / false |  |
| `rules.expression` | Advanced rules ★ | Règles avancées ★ | textarea | text | (empty) |  | One rule per line: a date is selectable when it matches any line; a line starting with "-" excludes. Terms: monday…sunday, mon-fri, workday, weekend, holiday, month end, month start, last workday, first workday, week end, quarter end, year end, day 1,15,-1, last friday, 2nd tuesday, month 1,4,7,10, even week, year 2026, with data, past, future, 2026-01-01..2026-03-31; "&" to combine, "not" to negate. See the tutorial. |
| `rules.inactiveStyle` | Look of non-selectable dates | Aspect des dates non sélectionnables | dropdown | enumeration | `faded` | `faded` Faded; `struck` Faded and struck through; `hidden` Hidden (empty cell) |  |

### Heatmap ★ / Dégradé de couleur ★ (`heatmap`, Format pane)

This card controls premium features (★): they work without a license key but show the watermark while in use.

The card header toggle is `heatmap.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `heatmap.show` | Show ★ | Afficher ★ | toggle | bool | `false` | true / false | Colors each cell by the Value measure. |
| `heatmap.colors` | Colors | Couleurs | dropdown | enumeration | `style` | `style` Gradient palette (style); `accent` From background to accent; `custom` Chosen start and end |  |
| `heatmap.low` | Low values color | Couleur des valeurs basses | color | fill | (empty) | hex color | Visible when `heatmap.colors` = `custom` |
| `heatmap.high` | High values color | Couleur des valeurs hautes | color | fill | (empty) | hex color | Visible when `heatmap.colors` = `custom` |
| `heatmap.scale` | Scale | Échelle | dropdown | enumeration | `linear` | `linear` Linear; `quantile` By rank (quantiles); `diverging` Distance from zero (diverging) |  |
| `heatmap.reverse` | Reverse | Inverser | toggle | bool | `false` | true / false |  |
| `heatmap.intensity` | Intensity (%) | Intensité (%) | number | integer | `100` | 10 to 100 |  |
| `heatmap.showValues` | Value in the cells | Valeur dans les cases | toggle | bool | `false` | true / false |  |
| `heatmap.legend` | Legend (min – max) | Légende (min – max) | toggle | bool | `true` | true / false |  |

### Shortcuts / Raccourcis (`presets`, Format pane)

The card header toggle is `presets.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `presets.show` | Show | Afficher | toggle | bool | `true` | true / false |  |
| `presets.latest` | Latest date | Dernière date | toggle | bool | `true` | true / false |  |
| `presets.today` | Today | Aujourd'hui | toggle | bool | `false` | true / false |  |
| `presets.yesterday` | Yesterday | Hier | toggle | bool | `false` | true / false |  |
| `presets.last7` | Last 7 days | 7 derniers jours | toggle | bool | `true` | true / false |  |
| `presets.last30` | Last 30 days | 30 derniers jours | toggle | bool | `false` | true / false |  |
| `presets.thisWeek` | This week | Semaine en cours | toggle | bool | `false` | true / false |  |
| `presets.lastWeek` | Last week | Semaine dernière | toggle | bool | `false` | true / false |  |
| `presets.thisMonth` | Month to date | Mois en cours | toggle | bool | `true` | true / false |  |
| `presets.lastMonth` | Last month | Mois dernier | toggle | bool | `false` | true / false |  |
| `presets.thisQuarter` | Quarter to date | Trimestre en cours | toggle | bool | `false` | true / false |  |
| `presets.ytd` | Year to date | Cumul annuel | toggle | bool | `true` | true / false |  |
| `presets.lastYear` | Last year | Année dernière | toggle | bool | `false` | true / false |  |
| `presets.last12m` | Last 12 months | 12 mois glissants | toggle | bool | `false` | true / false |  |
| `presets.anchor` | Shortcuts reference date | Date de référence des raccourcis | dropdown | enumeration | `latest` | `latest` Latest date in the data; `today` Today | "Last 7 days" counts back from this date. Latest date = last selectable date with data. |
| `presets.custom` | Custom shortcuts ★ | Raccourcis personnalisés ★ | textarea | text | (empty) |  | One per line or separated by ; — "Label: start - end" (yyyy-mm-dd or dd/mm/yyyy). |
| `presets.position` | Position | Position | dropdown | enumeration | `top` | `top` Top; `bottom` Bottom; `side` Left side |  |

### Behavior / Comportement (`behavior`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `behavior.apply` | Apply the filter | Appliquer le filtre | dropdown | enumeration | `instant` | `instant` As soon as selected; `button` With an "Apply" button |  |

### Number format / Format des nombres (`values`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `values.units` | Display units | Unités | dropdown | enumeration | `auto` | `auto` Auto; `none` None; `k` Thousands; `m` Millions; `b` Billions |  |
| `values.decimals` | Decimals (-1 = auto) | Décimales (-1 = auto) | number | integer | `-1` | -1 to 6 |  |
| `values.prefix` | Prefix | Préfixe | text | text | (empty) |  |  |
| `values.suffix` | Suffix (e.g. €) | Suffixe (ex. €) | text | text | (empty) |  |  |

### Preselection / Présélection (`preselect`, Format pane)

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `preselect.shortcut` | Shortcut (no DAX) | Raccourci (sans DAX) | dropdown | enumeration | `none` | `none` None (measure only); `today` Today; `latest` Latest date in the data; `last7` Last 7 days; `last30` Last 30 days; `lastN` Last N days; `thisWeek` This week; `thisMonth` This month; `lastMonth` Previous month; `ytd` Year to date (YTD); `last12m` Last 12 months | Drop in "Preselection" a measure that returns a date or a range ("2026-01-01;2026-03-31", ISO dates), or pick a shortcut below (free). Measure: premium feature ★. |
| `preselect.days` | N (days) | N (jours) | number | integer | `30` | 1 to 3660 | Visible when `preselect.shortcut` = `lastN` |
| `preselect.when` | Apply | Appliquer | dropdown | enumeration | `session` | `session` Once per session; `always` Reapply on every display |  |
| `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 |  |

### Tooltips / Infobulles (`tooltip`, Format pane)

The card header toggle is `tooltip.show`.

| Option ID | Label (EN) | Label (FR) | Control | Type | Default | Allowed values | Notes |
|---|---|---|---|---|---|---|---|
| `tooltip.show` | Show | Afficher | toggle | bool | `true` | true / false | Tooltip on hover (with the fields of the "Tooltips" well and report page tooltips). |

### 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 | `true` | 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)

- `general`: `general.filter` (filter), used by Power BI to store the filter applied by the visual.