@softize/opus 8.6.8 → 8.6.9
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.
package/package.json
CHANGED
|
@@ -361,6 +361,12 @@ export function ActionFormField({ name, options: optionsProp, className }: Actio
|
|
|
361
361
|
value={(formValues[name] as string | undefined) ?? ''}
|
|
362
362
|
onChange={(v) => setValue(v)}
|
|
363
363
|
options={options}
|
|
364
|
+
// A régua do próprio Select: lista curta e conhecida se percorre com o olho;
|
|
365
|
+
// lista longa se ACHA digitando. O corte é por TAMANHO e não por call site
|
|
366
|
+
// porque o form é contract-driven — quem declara o campo não deveria precisar
|
|
367
|
+
// saber se o dicionário dele cresceu. (Veio de patch da Grand Brasil; subiu em
|
|
368
|
+
// 8.6.9 porque patch local morre calado a cada bump.)
|
|
369
|
+
searchable={options.length > 6}
|
|
364
370
|
placeholder={spec.placeholder ?? 'Selecione…'}
|
|
365
371
|
className="w-full"
|
|
366
372
|
/>
|
|
@@ -220,6 +220,16 @@ export interface ActionListProps<TInput, TItem> {
|
|
|
220
220
|
/** Ações POR LINHA (coluna final, alinhada à direita) — apresentação de quem chama,
|
|
221
221
|
* como `cells`. Cliques ali não disparam o onRowClick. Só na tabela. */
|
|
222
222
|
rowActions?: (item: TItem) => ReactNode
|
|
223
|
+
/**
|
|
224
|
+
* Conteúdo entre a toolbar e o corpo da listagem — ex.: o resumo do recorte atual
|
|
225
|
+
* ("12 itens, R$ 4.300 no período"), que precisa reagir ao filtro e por isso não cabe
|
|
226
|
+
* fora do componente.
|
|
227
|
+
*
|
|
228
|
+
* Veio de um patch que a Grand Brasil carregava sobre o pacote. Patch local é sinal:
|
|
229
|
+
* enquanto viveu assim, todo bump do Opus o descartava em silêncio e o app parava de
|
|
230
|
+
* compilar sem ninguém entender por quê. Subiu pra cá em 8.6.9.
|
|
231
|
+
*/
|
|
232
|
+
beforeContent?: ReactNode
|
|
223
233
|
/** Modo COMPOSIÇÃO: layout livre ÚNICO (sem segment); toolbar e estados seguem. */
|
|
224
234
|
children?: (items: TItem[], refetch: () => Promise<void>) => ReactNode
|
|
225
235
|
/** Estado da toolbar CONTROLADO (URL sync de quem embala). Default: interno. */
|
|
@@ -693,6 +703,7 @@ export function ActionList<TInput, TItem>({
|
|
|
693
703
|
loading: extraLoading,
|
|
694
704
|
onRowClick,
|
|
695
705
|
rowActions,
|
|
706
|
+
beforeContent,
|
|
696
707
|
children,
|
|
697
708
|
state: controlledState,
|
|
698
709
|
onStateChange,
|
|
@@ -1369,6 +1380,7 @@ export function ActionList<TInput, TItem>({
|
|
|
1369
1380
|
<TooltipProvider>
|
|
1370
1381
|
<div data-action={action.name} className="space-y-3">
|
|
1371
1382
|
{toolbar}
|
|
1383
|
+
{beforeContent}
|
|
1372
1384
|
{selectionBar}
|
|
1373
1385
|
{/* Refetch com a lista já na tela: esmaece e trava interação até chegar. */}
|
|
1374
1386
|
<div aria-busy={busy} className={cn(busy && items.length > 0 && 'pointer-events-none opacity-60')}>
|