@snksergio/design-system 0.63.0 → 0.64.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -703,7 +703,8 @@ tableRef.current?.collapseAllTree(); // tree-data: recolhe todos os nós (n
703
703
  - `enableExport?` (false) — `true` = dropdown Exportar com CSV default; objeto `{ formats?, items? }` pra formatos custom
704
704
  - `enableFullscreen?` (false) — botão ⤢ na toolbar (entre Filtros e Configurações) que expande a tabela pra viewport inteira; Esc volta
705
705
  - `moreMenu?` — `{ items: DataTableMoreMenuItem[] }` — MoreMenu (⋯) no canto direito
706
- - `customLeft?` — ReactNode livre após search/refresh (controls custom)
706
+ - `customLeft?` — **ReactNode livre**, entre o refresh e a busca (mesma posição das `actions`, e antes delas quando as duas vêm juntas). É o único caminho pra um **componente** no toolbar: `actions` só aceita `ToolbarAction[]`, cujos kinds são `button`/`dropdown`/`input` e nenhum recebe componente. Use pra `DatePicker` de período, `Select` composto, segmented custom. ⚠️ Era **inerte** até 2026-09-16 (declarada, documentada, lida por nada — o TS aceitava e nada renderizava); gate: `datatable-toolbar-slots.test.tsx`
707
+ - `customActions?` — ⛔ **@deprecated e sem efeito** — nunca foi lida. Use `customLeft` (componente) ou `moreMenu.items` (itens de menu)
707
708
  - `viewToggle?` — override/esconde o segmented table/kanban auto-renderizado
708
709
 
709
710
  > Bulk actions vão em `selectionConfig.actions` (não no toolbar). Preset views vão na prop
@@ -27,7 +27,7 @@ Em `< md`: o `refresh` some (o menu Configurações cobre o resto).
27
27
  | `refresh` | Botão atualizar (`<ToolbarToolButton>`) |
28
28
  | `search` | Campo de busca (`<ToolbarSearch>`) |
29
29
  | `filter` | Filtro simples: use `<ToolbarFilterButton onClick isActive hasIndicator />` (funil, icon-only — **mesmo botão** no DataTable e DataList) → abre `<ToolbarSimpleFilterDrawer>` |
30
- | `actions` | Ações custom: `<ToolbarActions actions={[...]} />` (`button`/`dropdown`/`input`). Inline no desktop; **colapsam no ⋯ no mobile** (passe `extraItems` p/ absorver o ⋯ existente) |
30
+ | `actions` | Ações custom: `<ToolbarActions actions={[...]} />` (`button`/`dropdown`/`input`). Inline no desktop; **colapsam no ⋯ no mobile** (passe `extraItems` p/ absorver o ⋯ existente).<br><br>⚠️ **Este slot aceita qualquer nó** — `<ToolbarActions>` é só o uso comum. Pra um **componente** (um `DatePicker mode="range"` de período, um `Select` composto), passe-o direto aqui. Pelo `DataTable` o caminho é a prop `toolbar.customLeft`, que cai neste mesmo slot antes das `actions` — ela era **inerte até a v0.64.0** (declarada e lida por nada) |
31
31
  | `settings` | Configurações: sliders → drill-down (`<ToolbarSettingsMenu>` com Ordenação · Colunas · Filtros avançados · Densidade) |
32
32
  | `more` | Menu "⋯" (`<MoreMenu>`) — export + ações |
33
33
  | `bulkBar` | Substitui a toolbar inteira pela barra de ações em massa |
@@ -131,6 +131,13 @@ sem passar pela entrevista guiada** (é justamente aí que o erro aparece):
131
131
  (`defaultViews`, ex.: "Ativos", "Pendentes"; `allowCreateView={false}` se forem fixas).
132
132
  2. **X não é coluna, pequeno e simples** (período/mês, um toggle) → `toolbar.actions`
133
133
  (máx ~2, label curta). Período que afeta a página toda → `PageHeader.actions` (dropdown).
134
+ **Precisa de um COMPONENTE na barra** (um `DatePicker mode="range"` de período)? →
135
+ `toolbar.customLeft` do `data-table`, que renderiza entre o refresh e a busca —
136
+ `toolbar.actions` não serve, seus kinds são `button/dropdown/input` e nenhum recebe
137
+ componente. ⚠️ **Exige o DS `0.64.0` ou mais novo**: em `0.63.0` e anteriores a
138
+ prop existe no tipo, o TS aceita e **nada renderiza** (era declarada e lida por nada).
139
+ Confira sua versão antes de prometer o controle — e note que o `data-list` **não tem**
140
+ esse slot, só `toolbarActions`.
134
141
  3. **Muitos filtros, ou muito grandes** → drawer "Filtros" **nativo** do `data-table` + chips
135
142
  pré-aplicados. Nunca empilhar selects soltos.
136
143
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "pacote": "@snksergio/design-system",
3
- "versao": "0.63.0",
4
- "commit": "d9db4cd",
5
- "gerado": "2026-09-15",
3
+ "versao": "0.64.0",
4
+ "commit": "cb0a1bf",
5
+ "gerado": "2026-09-16",
6
6
  "conteudo": {
7
7
  "roteiros": [
8
8
  "app-builder",
@@ -90,6 +90,12 @@ em lote ("CNPJ sem copyable"). Critério completo e limites: `generate.md` item
90
90
  > `filterType`. Quer abrir já filtrado? **pré-aplique** (`defaultViews`/`presetView`
91
91
  > ou `filterModel`) → abre com o **chip aplicado**, editável, reativo. Pode pré-setar
92
92
  > **vários** (id/período/status/…), sem campos.
93
+ > - **Componente na barra → `toolbar.customLeft`, não `actions`.** Os kinds de
94
+ > `ToolbarAction` são `button`/`dropdown`/`input` e nenhum recebe componente; pra um
95
+ > `DatePicker mode="range"` de período use `customLeft`, que renderiza entre o refresh e
96
+ > a busca. ⚠️ **Exige o DS `0.64.0` ou mais novo** — em `0.63.0` e anteriores a
97
+ > prop existe no tipo, o TS aceita e **nada renderiza**. Confira a versão antes de
98
+ > prometer o controle.
93
99
  > - **toolbar.actions é SÓ pra caso pequeno e simples que NÃO reage com coluna** (ex.:
94
100
  > data/período, escopo) — **label curta**, **máx ~2**. Se mexe com coluna, é grande, ou
95
101
  > são muitos → **NÃO use o toolbar.**
@@ -105,7 +111,8 @@ em lote ("CNPJ sem copyable"). Critério completo e limites: `generate.md` item
105
111
  deletar direto). Pergunte o texto do confirm.
106
112
  - Seleção + ações em massa (exportar, etc.)? (`selectionConfig` + bulk actions).
107
113
  - Export: escopo (tudo / filtrado / selecionado) + formato (csv)? (`toolbar.enableExport`).
108
- - Ação custom no toolbar (ex.: seletor de período/mês, botão extra)? `toolbar.actions: ToolbarAction[]` (`button`/`dropdown`/`input`) — inline no desktop, colapsa no ⋯ no mobile. Oferecer só se o usuário pedir.
114
+ - Ação custom no toolbar (ex.: seletor de período por dropdown de meses, botão extra)? `toolbar.actions: ToolbarAction[]` (`button`/`dropdown`/`input`) — inline no desktop, colapsa no ⋯ no mobile. Oferecer só se o usuário pedir.
115
+ - **Componente** na barra (calendário de período, `Select` composto)? `toolbar.customLeft: ReactNode` — entre o refresh e a busca, antes das `actions`. É o único caminho: `ToolbarAction` não tem kind que receba componente. ⚠️ Exige o DS `0.64.0`+; antes dele a prop é inerte e falha em silêncio.
109
116
 
110
117
  ## Fase 4 — Views, paginação & densidade
111
118
 
@@ -132,6 +132,11 @@ refresh · busca · filtro(drawer) · ⋯. Sem colunas/toggle de visão.
132
132
  > - **Filtro por campo** (status/categoria/tipo/data…) → declare em `filterFields`. Quer
133
133
  > abrir já filtrado? **pré-aplique** via `views` ou `filterModel` → abre com o **chip
134
134
  > aplicado**, editável, reativo. Pode pré-setar **vários** de uma vez.
135
+ > - ⛔ **O `data-list` NÃO tem slot pra componente no toolbar.** O `data-table` ganhou
136
+ > `toolbar.customLeft` (`0.64.0`+); o `data-list` só tem `toolbarActions`, cujos kinds são
137
+ > `button`/`dropdown`/`input`. Seletor de período com calendário numa lista vai **fora**
138
+ > do componente (`PageHeader` ou linha própria). Não tente `customLeft` aqui — não
139
+ > existe e o TS reprova.
135
140
  > - **toolbarActions é SÓ pra caso pequeno e simples que NÃO reage com campo** (ex.:
136
141
  > data/período, escopo) — **label curta**, **máx ~2**. Se mexe com os campos, é grande,
137
142
  > ou são muitos → **NÃO use o toolbar.**
@@ -12416,7 +12416,10 @@ function DataTableInternal(props, ref) {
12416
12416
  }
12417
12417
  )
12418
12418
  ) : void 0,
12419
- actions: toolbarConfig.actions && toolbarConfig.actions.length > 0 ? /* @__PURE__ */ jsx(ToolbarActions, { actions: toolbarConfig.actions }) : void 0,
12419
+ actions: toolbarConfig.customLeft || toolbarConfig.actions && toolbarConfig.actions.length > 0 ? /* @__PURE__ */ jsxs(Fragment, { children: [
12420
+ toolbarConfig.customLeft,
12421
+ toolbarConfig.actions && toolbarConfig.actions.length > 0 ? /* @__PURE__ */ jsx(ToolbarActions, { actions: toolbarConfig.actions }) : null
12422
+ ] }) : void 0,
12420
12423
  fullscreen: enableFullscreen ? /* @__PURE__ */ jsx(
12421
12424
  ToolbarToolButton,
12422
12425
  {
@@ -13167,4 +13170,4 @@ export {
13167
13170
  DEFAULT_FILTER_OPERATORS as y,
13168
13171
  DataTableActionsCell as z
13169
13172
  };
13170
- //# sourceMappingURL=panel-B-liPlxr.mjs.map
13173
+ //# sourceMappingURL=panel-CN0ChoHM.mjs.map