@strategicos/ui 0.9.2 → 0.11.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.
- package/README.md +18 -2
- package/dist/components/combobox.d.ts +27 -1
- package/dist/components/combobox.d.ts.map +1 -1
- package/dist/components/combobox.js +40 -5
- package/dist/components/combobox.js.map +1 -1
- package/package.json +2 -2
- package/src/components/combobox.tsx +73 -5
- package/styles.css +6 -3
package/README.md
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# @strategicos/ui
|
|
2
2
|
|
|
3
|
-
Componentes React da Strategicos, sobre shadcn, Radix UI e Tailwind CSS v4.
|
|
3
|
+
Componentes React da Strategicos, sobre shadcn, Radix UI e Tailwind CSS v4. O tema (`@strategicos/tokens`) vem junto.
|
|
4
4
|
|
|
5
5
|
```css
|
|
6
6
|
@import "tailwindcss";
|
|
7
|
-
@import "@strategicos/tokens/theme.css";
|
|
8
7
|
@import "@strategicos/ui/styles.css";
|
|
9
8
|
```
|
|
10
9
|
|
|
@@ -64,6 +63,23 @@ Seleção de um item com busca. Pode criar e excluir opções ali mesmo:
|
|
|
64
63
|
|
|
65
64
|
`onCreate` aparece como "Criar “texto”" quando a busca não bate com nenhuma opção; o valor devolvido fica selecionado. `onRemove` põe um X em cada opção e confirma na própria linha. Erro nessas funções aparece no rodapé da lista.
|
|
66
65
|
|
|
66
|
+
Lista grande demais para vir inteira? Busque no servidor, página a página:
|
|
67
|
+
|
|
68
|
+
```tsx
|
|
69
|
+
<Combobox
|
|
70
|
+
options={pagina.map(m => ({ value: m.id, label: m.name, description: m.email }))}
|
|
71
|
+
selectedOption={atual && { value: atual.id, label: atual.name }}
|
|
72
|
+
value={membroId}
|
|
73
|
+
onValueChange={setMembroId}
|
|
74
|
+
onSearchChange={setBusca}
|
|
75
|
+
loading={carregando}
|
|
76
|
+
hasMore={temMais}
|
|
77
|
+
onLoadMore={proximaPagina}
|
|
78
|
+
/>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Com `onSearchChange`, a lista não filtra sozinha: `options` é o resultado da busca. Rolar até o fim (ou ↓ na última opção) chama `onLoadMore` enquanto houver `hasMore`. `selectedOption` dá o rótulo do gatilho quando o valor atual não está na página carregada. O debounce da busca fica com quem chama.
|
|
82
|
+
|
|
67
83
|
### Datas
|
|
68
84
|
|
|
69
85
|
Mesmos nomes e ideias do `@mantine/dates`:
|
|
@@ -29,6 +29,22 @@ export type ComboboxOption = {
|
|
|
29
29
|
* - `onRemove`: cada opção ganha um X que pede confirmação na própria linha.
|
|
30
30
|
* Se a opção excluída era a selecionada, o valor volta para `null`.
|
|
31
31
|
*
|
|
32
|
+
* - `onSearchChange`: busca no servidor. Recebe o texto digitado (e "" ao
|
|
33
|
+
* fechar com busca) e `options` passa a ser o resultado, sem filtro local.
|
|
34
|
+
* Com `hasMore`, rolar até o fim da lista (ou ↓ na última opção) chama
|
|
35
|
+
* `onLoadMore`; `loading` mostra o carregamento. Como a página carregada pode
|
|
36
|
+
* não trazer o valor atual, passe-o em `selectedOption` para o gatilho.
|
|
37
|
+
*
|
|
38
|
+
* <Combobox
|
|
39
|
+
* options={pagina.map(m => ({ value: m.id, label: m.name }))}
|
|
40
|
+
* selectedOption={atual && { value: atual.id, label: atual.name }}
|
|
41
|
+
* onSearchChange={setBusca}
|
|
42
|
+
* loading={carregando}
|
|
43
|
+
* hasMore={temMais}
|
|
44
|
+
* onLoadMore={proximaPagina}
|
|
45
|
+
* …
|
|
46
|
+
* />
|
|
47
|
+
*
|
|
32
48
|
* Erros de `onCreate`/`onRemove` (promessa rejeitada) aparecem no rodapé da
|
|
33
49
|
* lista, com a mensagem do erro.
|
|
34
50
|
*
|
|
@@ -36,7 +52,7 @@ export type ComboboxOption = {
|
|
|
36
52
|
* (com a busca vazia) para excluir a opção ativa, Esc para fechar. Dentro de
|
|
37
53
|
* um <Field>, o gatilho recebe o id e os aria-*.
|
|
38
54
|
*/
|
|
39
|
-
declare function Combobox({ options, value, onValueChange, placeholder, searchPlaceholder, emptyText, searchable, clearable, onCreate, createLabel, onRemove, removeLabel, removeConfirmLabel, size, disabled, className, wrapperClassName, contentClassName, onOpenChange, ...props }: {
|
|
55
|
+
declare function Combobox({ options, value, onValueChange, placeholder, searchPlaceholder, emptyText, searchable, clearable, onCreate, createLabel, onRemove, removeLabel, removeConfirmLabel, size, disabled, className, wrapperClassName, contentClassName, onOpenChange, onSearchChange, loading, hasMore, onLoadMore, selectedOption, ...props }: {
|
|
40
56
|
options: ComboboxOption[];
|
|
41
57
|
value: string | null;
|
|
42
58
|
onValueChange: (value: string | null) => void;
|
|
@@ -64,6 +80,16 @@ declare function Combobox({ options, value, onValueChange, placeholder, searchPl
|
|
|
64
80
|
wrapperClassName?: string;
|
|
65
81
|
contentClassName?: string;
|
|
66
82
|
onOpenChange?: (open: boolean) => void;
|
|
83
|
+
/** Busca no servidor: recebe o texto digitado e desliga o filtro local. */
|
|
84
|
+
onSearchChange?: (query: string) => void;
|
|
85
|
+
/** Busca ou próxima página em andamento. */
|
|
86
|
+
loading?: boolean;
|
|
87
|
+
/** Há mais resultados além de `options`. */
|
|
88
|
+
hasMore?: boolean;
|
|
89
|
+
/** Chamado ao chegar no fim da lista com `hasMore`. */
|
|
90
|
+
onLoadMore?: () => void;
|
|
91
|
+
/** Opção do valor atual quando ela não está em `options`. */
|
|
92
|
+
selectedOption?: ComboboxOption | null;
|
|
67
93
|
id?: string;
|
|
68
94
|
"aria-label"?: string;
|
|
69
95
|
"aria-describedby"?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAQD
|
|
1
|
+
{"version":3,"file":"combobox.d.ts","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAS9B,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,sCAAsC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAQD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,iBAAS,QAAQ,CAAC,EAChB,OAAO,EACP,KAAK,EACL,aAAa,EACb,WAAyB,EACzB,iBAA6B,EAC7B,SAA8B,EAC9B,UAAiB,EACjB,SAAiB,EACjB,QAAQ,EACR,WAA+C,EAC/C,QAAQ,EACR,WAAuC,EACvC,kBAA+D,EAC/D,IAAgB,EAChB,QAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,cAAc,EACd,OAAe,EACf,OAAe,EACf,UAAU,EACV,cAAc,EACd,GAAG,KAAK,EACT,EAAE;IACD,OAAO,EAAE,cAAc,EAAE,CAAA;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;wBACoB;IACpB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACpE,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,KAAK,CAAC,SAAS,CAAA;IAChD,0DAA0D;IAC1D,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAC3D,2CAA2C;IAC3C,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,MAAM,CAAA;IAChD,0DAA0D;IAC1D,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,KAAK,CAAC,SAAS,CAAA;IAChE,IAAI,CAAC,EAAE,IAAI,GAAG,SAAS,CAAA;IACvB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,0BAA0B;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;6BACyB;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACtC,2EAA2E;IAC3E,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACxC,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,6DAA6D;IAC7D,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAA;IACtC,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,CAAA;CACtD,qBA4TA;AAED,OAAO,EAAE,QAAQ,EAAE,CAAA"}
|
|
@@ -29,6 +29,22 @@ function errorMessage(err, fallback) {
|
|
|
29
29
|
* - `onRemove`: cada opção ganha um X que pede confirmação na própria linha.
|
|
30
30
|
* Se a opção excluída era a selecionada, o valor volta para `null`.
|
|
31
31
|
*
|
|
32
|
+
* - `onSearchChange`: busca no servidor. Recebe o texto digitado (e "" ao
|
|
33
|
+
* fechar com busca) e `options` passa a ser o resultado, sem filtro local.
|
|
34
|
+
* Com `hasMore`, rolar até o fim da lista (ou ↓ na última opção) chama
|
|
35
|
+
* `onLoadMore`; `loading` mostra o carregamento. Como a página carregada pode
|
|
36
|
+
* não trazer o valor atual, passe-o em `selectedOption` para o gatilho.
|
|
37
|
+
*
|
|
38
|
+
* <Combobox
|
|
39
|
+
* options={pagina.map(m => ({ value: m.id, label: m.name }))}
|
|
40
|
+
* selectedOption={atual && { value: atual.id, label: atual.name }}
|
|
41
|
+
* onSearchChange={setBusca}
|
|
42
|
+
* loading={carregando}
|
|
43
|
+
* hasMore={temMais}
|
|
44
|
+
* onLoadMore={proximaPagina}
|
|
45
|
+
* …
|
|
46
|
+
* />
|
|
47
|
+
*
|
|
32
48
|
* Erros de `onCreate`/`onRemove` (promessa rejeitada) aparecem no rodapé da
|
|
33
49
|
* lista, com a mensagem do erro.
|
|
34
50
|
*
|
|
@@ -36,7 +52,7 @@ function errorMessage(err, fallback) {
|
|
|
36
52
|
* (com a busca vazia) para excluir a opção ativa, Esc para fechar. Dentro de
|
|
37
53
|
* um <Field>, o gatilho recebe o id e os aria-*.
|
|
38
54
|
*/
|
|
39
|
-
function Combobox({ options, value, onValueChange, placeholder = "Selecione", searchPlaceholder = "Buscar…", emptyText = "Nada encontrado.", searchable = true, clearable = false, onCreate, createLabel = q => _jsxs(_Fragment, { children: ["Criar \u201C", q, "\u201D"] }), onRemove, removeLabel = o => `Excluir ${o.label}`, removeConfirmLabel = o => _jsxs(_Fragment, { children: ["Excluir \u201C", o.label, "\u201D?"] }), size = "default", disabled = false, className, wrapperClassName, contentClassName, onOpenChange, ...props }) {
|
|
55
|
+
function Combobox({ options, value, onValueChange, placeholder = "Selecione", searchPlaceholder = "Buscar…", emptyText = "Nada encontrado.", searchable = true, clearable = false, onCreate, createLabel = q => _jsxs(_Fragment, { children: ["Criar \u201C", q, "\u201D"] }), onRemove, removeLabel = o => `Excluir ${o.label}`, removeConfirmLabel = o => _jsxs(_Fragment, { children: ["Excluir \u201C", o.label, "\u201D?"] }), size = "default", disabled = false, className, wrapperClassName, contentClassName, onOpenChange, onSearchChange, loading = false, hasMore = false, onLoadMore, selectedOption, ...props }) {
|
|
40
56
|
const controlProps = useFieldControl(props, { withRequired: false });
|
|
41
57
|
const [open, setOpen] = React.useState(false);
|
|
42
58
|
const [query, setQuery] = React.useState("");
|
|
@@ -47,9 +63,12 @@ function Combobox({ options, value, onValueChange, placeholder = "Selecione", se
|
|
|
47
63
|
const [error, setError] = React.useState(null);
|
|
48
64
|
const listId = React.useId();
|
|
49
65
|
const searchRef = React.useRef(null);
|
|
50
|
-
const selected = options.find(o => o.value === value)
|
|
66
|
+
const selected = options.find(o => o.value === value)
|
|
67
|
+
?? (selectedOption && selectedOption.value === value ? selectedOption : undefined);
|
|
51
68
|
const q = query.trim().toLowerCase();
|
|
52
|
-
|
|
69
|
+
// Na busca no servidor, `options` já é o resultado.
|
|
70
|
+
const filtered = q && !onSearchChange ? options.filter(o => o.label.toLowerCase().includes(q)) : options;
|
|
71
|
+
const canLoadMore = hasMore && !loading && !!onLoadMore;
|
|
53
72
|
const canCreate = !!onCreate && !!q && !options.some(o => o.label.trim().toLowerCase() === q);
|
|
54
73
|
// Ordem do teclado: as opções habilitadas e, por último, o "Criar".
|
|
55
74
|
const entries = filtered.filter(o => !o.disabled).map(option => ({ kind: "option", option }));
|
|
@@ -76,6 +95,8 @@ function Combobox({ options, value, onValueChange, placeholder = "Selecione", se
|
|
|
76
95
|
function handleOpenChange(o) {
|
|
77
96
|
setOpen(o);
|
|
78
97
|
if (!o) {
|
|
98
|
+
if (query)
|
|
99
|
+
onSearchChange?.("");
|
|
79
100
|
setQuery("");
|
|
80
101
|
setActive(0);
|
|
81
102
|
setConfirming(null);
|
|
@@ -141,12 +162,26 @@ function Combobox({ options, value, onValueChange, placeholder = "Selecione", se
|
|
|
141
162
|
else
|
|
142
163
|
choose(entry.option.value);
|
|
143
164
|
}
|
|
165
|
+
function changeQuery(v) {
|
|
166
|
+
setQuery(v);
|
|
167
|
+
setActive(0);
|
|
168
|
+
setError(null);
|
|
169
|
+
onSearchChange?.(v);
|
|
170
|
+
}
|
|
171
|
+
// Perto do fim da lista, pede a próxima página.
|
|
172
|
+
function onListScroll(e) {
|
|
173
|
+
const el = e.currentTarget;
|
|
174
|
+
if (canLoadMore && el.scrollHeight - el.scrollTop - el.clientHeight < 48)
|
|
175
|
+
onLoadMore();
|
|
176
|
+
}
|
|
144
177
|
function onKeyDown(e) {
|
|
145
178
|
// Na confirmação, o teclado é dos botões Excluir/Cancelar.
|
|
146
179
|
if (confirming)
|
|
147
180
|
return;
|
|
148
181
|
if (e.key === "ArrowDown") {
|
|
149
182
|
e.preventDefault();
|
|
183
|
+
if (activeIndex >= entries.length - 1 && canLoadMore)
|
|
184
|
+
onLoadMore();
|
|
150
185
|
setActive(Math.min(activeIndex + 1, entries.length - 1));
|
|
151
186
|
}
|
|
152
187
|
else if (e.key === "ArrowUp") {
|
|
@@ -172,7 +207,7 @@ function Combobox({ options, value, onValueChange, placeholder = "Selecione", se
|
|
|
172
207
|
_jsx("button", { type: "button", onClick: () => onValueChange(null), "aria-label": "Limpar", className: "absolute inset-y-0 right-1.5 my-auto flex size-6 cursor-pointer items-center justify-center rounded text-muted-foreground outline-none hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring/50", children: _jsx(XIcon, { className: "size-4" }) }))] })) : trigger, _jsxs(PopoverContent, { className: cn("w-(--radix-popover-trigger-width) min-w-60 p-0", contentClassName), onKeyDown: onKeyDown, onEscapeKeyDown: e => { if (confirming) {
|
|
173
208
|
e.preventDefault();
|
|
174
209
|
cancelConfirm();
|
|
175
|
-
} }, children: [searchable && (_jsxs("div", { className: "flex items-center gap-2 border-b border-border px-3", children: [_jsx(SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }), _jsx("input", { ref: searchRef, autoFocus: true, value: query, onChange: e =>
|
|
210
|
+
} }, children: [searchable && (_jsxs("div", { className: "flex items-center gap-2 border-b border-border px-3", children: [_jsx(SearchIcon, { className: "size-4 shrink-0 text-muted-foreground" }), _jsx("input", { ref: searchRef, autoFocus: true, value: query, onChange: e => changeQuery(e.target.value), placeholder: searchPlaceholder, "aria-label": searchPlaceholder, "aria-controls": listId, "aria-activedescendant": activeIndex >= 0 && !confirming ? entryId(activeIndex) : undefined, "aria-autocomplete": "list", className: "h-9 w-full bg-transparent text-base outline-none placeholder:text-muted-foreground md:text-sm" })] })), _jsxs("div", { id: listId, role: "listbox", "aria-busy": loading || undefined, onScroll: onLoadMore ? onListScroll : undefined, className: "max-h-64 overflow-y-auto overscroll-contain p-1", children: [filtered.length === 0 && !canCreate && !loading && (_jsx("p", { className: "px-2.5 py-6 text-center text-sm text-muted-foreground", children: emptyText })), groups.map(g => (_jsxs("div", { role: "group", "aria-label": g.name, children: [g.name && _jsx("p", { className: "px-2.5 pt-2 pb-1 text-xs font-medium text-muted-foreground", children: g.name }), g.items.map(o => {
|
|
176
211
|
const index = entries.findIndex(e => e.kind === "option" && e.option.value === o.value);
|
|
177
212
|
const isSelected = o.value === value;
|
|
178
213
|
const isActive = index === activeIndex;
|
|
@@ -187,7 +222,7 @@ function Combobox({ options, value, onValueChange, placeholder = "Selecione", se
|
|
|
187
222
|
})] }, g.name ?? "_"))), canCreate && (() => {
|
|
188
223
|
const index = entries.length - 1;
|
|
189
224
|
return (_jsxs("div", { id: entryId(index), role: "option", "aria-selected": false, "data-active": index === activeIndex || undefined, onMouseEnter: () => setActive(index), onClick: () => void create(), className: "flex cursor-pointer items-center gap-2 rounded-md py-1.5 pr-2 pl-2.5 text-sm font-medium text-primary-strong select-none data-active:bg-primary/10", children: [creating ? _jsx(Loader2Icon, { className: "size-4 shrink-0 animate-spin" }) : _jsx(PlusIcon, { className: "size-4 shrink-0" }), _jsx("span", { className: "truncate", children: createLabel(query.trim()) })] }));
|
|
190
|
-
})()] }), error && (_jsx("p", { role: "alert", className: "border-t border-border px-3 py-2 text-xs text-destructive", children: error }))] })] }));
|
|
225
|
+
})(), loading && (_jsxs("p", { className: cn("flex items-center justify-center gap-2 px-2.5 text-sm text-muted-foreground", filtered.length === 0 ? "py-6" : "py-2"), children: [_jsx(Loader2Icon, { className: "size-4 animate-spin" }), "Carregando\u2026"] }))] }), error && (_jsx("p", { role: "alert", className: "border-t border-border px-3 py-2 text-xs text-destructive", children: error }))] })] }));
|
|
191
226
|
}
|
|
192
227
|
export { Combobox };
|
|
193
228
|
//# sourceMappingURL=combobox.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"combobox.js","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"combobox.js","sourceRoot":"","sources":["../../src/components/combobox.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@strategicos/ui",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Componentes React da Strategicos (shadcn + Radix + Tailwind v4).",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"repository": {
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
"prepublishOnly": "npm run build"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
+
"@strategicos/tokens": "^0.9.2",
|
|
42
43
|
"class-variance-authority": "^0.7.1",
|
|
43
44
|
"clsx": "^2.1.1",
|
|
44
45
|
"lucide-react": "^1.12.0",
|
|
@@ -48,7 +49,6 @@
|
|
|
48
49
|
"tw-animate-css": "^1.4.0"
|
|
49
50
|
},
|
|
50
51
|
"peerDependencies": {
|
|
51
|
-
"@strategicos/tokens": "^0.9.2",
|
|
52
52
|
"next-themes": ">=0.4",
|
|
53
53
|
"react": "^19",
|
|
54
54
|
"react-dom": "^19",
|
|
@@ -46,6 +46,22 @@ function errorMessage(err: unknown, fallback: string) {
|
|
|
46
46
|
* - `onRemove`: cada opção ganha um X que pede confirmação na própria linha.
|
|
47
47
|
* Se a opção excluída era a selecionada, o valor volta para `null`.
|
|
48
48
|
*
|
|
49
|
+
* - `onSearchChange`: busca no servidor. Recebe o texto digitado (e "" ao
|
|
50
|
+
* fechar com busca) e `options` passa a ser o resultado, sem filtro local.
|
|
51
|
+
* Com `hasMore`, rolar até o fim da lista (ou ↓ na última opção) chama
|
|
52
|
+
* `onLoadMore`; `loading` mostra o carregamento. Como a página carregada pode
|
|
53
|
+
* não trazer o valor atual, passe-o em `selectedOption` para o gatilho.
|
|
54
|
+
*
|
|
55
|
+
* <Combobox
|
|
56
|
+
* options={pagina.map(m => ({ value: m.id, label: m.name }))}
|
|
57
|
+
* selectedOption={atual && { value: atual.id, label: atual.name }}
|
|
58
|
+
* onSearchChange={setBusca}
|
|
59
|
+
* loading={carregando}
|
|
60
|
+
* hasMore={temMais}
|
|
61
|
+
* onLoadMore={proximaPagina}
|
|
62
|
+
* …
|
|
63
|
+
* />
|
|
64
|
+
*
|
|
49
65
|
* Erros de `onCreate`/`onRemove` (promessa rejeitada) aparecem no rodapé da
|
|
50
66
|
* lista, com a mensagem do erro.
|
|
51
67
|
*
|
|
@@ -73,6 +89,11 @@ function Combobox({
|
|
|
73
89
|
wrapperClassName,
|
|
74
90
|
contentClassName,
|
|
75
91
|
onOpenChange,
|
|
92
|
+
onSearchChange,
|
|
93
|
+
loading = false,
|
|
94
|
+
hasMore = false,
|
|
95
|
+
onLoadMore,
|
|
96
|
+
selectedOption,
|
|
76
97
|
...props
|
|
77
98
|
}: {
|
|
78
99
|
options: ComboboxOption[]
|
|
@@ -102,6 +123,16 @@ function Combobox({
|
|
|
102
123
|
wrapperClassName?: string
|
|
103
124
|
contentClassName?: string
|
|
104
125
|
onOpenChange?: (open: boolean) => void
|
|
126
|
+
/** Busca no servidor: recebe o texto digitado e desliga o filtro local. */
|
|
127
|
+
onSearchChange?: (query: string) => void
|
|
128
|
+
/** Busca ou próxima página em andamento. */
|
|
129
|
+
loading?: boolean
|
|
130
|
+
/** Há mais resultados além de `options`. */
|
|
131
|
+
hasMore?: boolean
|
|
132
|
+
/** Chamado ao chegar no fim da lista com `hasMore`. */
|
|
133
|
+
onLoadMore?: () => void
|
|
134
|
+
/** Opção do valor atual quando ela não está em `options`. */
|
|
135
|
+
selectedOption?: ComboboxOption | null
|
|
105
136
|
id?: string
|
|
106
137
|
"aria-label"?: string
|
|
107
138
|
"aria-describedby"?: string
|
|
@@ -119,8 +150,11 @@ function Combobox({
|
|
|
119
150
|
const searchRef = React.useRef<HTMLInputElement>(null)
|
|
120
151
|
|
|
121
152
|
const selected = options.find(o => o.value === value)
|
|
153
|
+
?? (selectedOption && selectedOption.value === value ? selectedOption : undefined)
|
|
122
154
|
const q = query.trim().toLowerCase()
|
|
123
|
-
|
|
155
|
+
// Na busca no servidor, `options` já é o resultado.
|
|
156
|
+
const filtered = q && !onSearchChange ? options.filter(o => o.label.toLowerCase().includes(q)) : options
|
|
157
|
+
const canLoadMore = hasMore && !loading && !!onLoadMore
|
|
124
158
|
const canCreate = !!onCreate && !!q && !options.some(o => o.label.trim().toLowerCase() === q)
|
|
125
159
|
|
|
126
160
|
// Ordem do teclado: as opções habilitadas e, por último, o "Criar".
|
|
@@ -147,6 +181,7 @@ function Combobox({
|
|
|
147
181
|
function handleOpenChange(o: boolean) {
|
|
148
182
|
setOpen(o)
|
|
149
183
|
if (!o) {
|
|
184
|
+
if (query) onSearchChange?.("")
|
|
150
185
|
setQuery("")
|
|
151
186
|
setActive(0)
|
|
152
187
|
setConfirming(null)
|
|
@@ -206,10 +241,27 @@ function Combobox({
|
|
|
206
241
|
else choose(entry.option.value)
|
|
207
242
|
}
|
|
208
243
|
|
|
244
|
+
function changeQuery(v: string) {
|
|
245
|
+
setQuery(v)
|
|
246
|
+
setActive(0)
|
|
247
|
+
setError(null)
|
|
248
|
+
onSearchChange?.(v)
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
// Perto do fim da lista, pede a próxima página.
|
|
252
|
+
function onListScroll(e: React.UIEvent<HTMLDivElement>) {
|
|
253
|
+
const el = e.currentTarget
|
|
254
|
+
if (canLoadMore && el.scrollHeight - el.scrollTop - el.clientHeight < 48) onLoadMore()
|
|
255
|
+
}
|
|
256
|
+
|
|
209
257
|
function onKeyDown(e: React.KeyboardEvent) {
|
|
210
258
|
// Na confirmação, o teclado é dos botões Excluir/Cancelar.
|
|
211
259
|
if (confirming) return
|
|
212
|
-
if (e.key === "ArrowDown") {
|
|
260
|
+
if (e.key === "ArrowDown") {
|
|
261
|
+
e.preventDefault()
|
|
262
|
+
if (activeIndex >= entries.length - 1 && canLoadMore) onLoadMore()
|
|
263
|
+
setActive(Math.min(activeIndex + 1, entries.length - 1))
|
|
264
|
+
}
|
|
213
265
|
else if (e.key === "ArrowUp") { e.preventDefault(); setActive(Math.max(activeIndex - 1, 0)) }
|
|
214
266
|
else if (e.key === "Enter") { e.preventDefault(); activate(entries[activeIndex]) }
|
|
215
267
|
else if (e.key === "Delete" && onRemove && !query) {
|
|
@@ -279,7 +331,7 @@ function Combobox({
|
|
|
279
331
|
ref={searchRef}
|
|
280
332
|
autoFocus
|
|
281
333
|
value={query}
|
|
282
|
-
onChange={e =>
|
|
334
|
+
onChange={e => changeQuery(e.target.value)}
|
|
283
335
|
placeholder={searchPlaceholder}
|
|
284
336
|
aria-label={searchPlaceholder}
|
|
285
337
|
aria-controls={listId}
|
|
@@ -290,8 +342,14 @@ function Combobox({
|
|
|
290
342
|
</div>
|
|
291
343
|
)}
|
|
292
344
|
|
|
293
|
-
<div
|
|
294
|
-
{
|
|
345
|
+
<div
|
|
346
|
+
id={listId}
|
|
347
|
+
role="listbox"
|
|
348
|
+
aria-busy={loading || undefined}
|
|
349
|
+
onScroll={onLoadMore ? onListScroll : undefined}
|
|
350
|
+
className="max-h-64 overflow-y-auto overscroll-contain p-1"
|
|
351
|
+
>
|
|
352
|
+
{filtered.length === 0 && !canCreate && !loading && (
|
|
295
353
|
<p className="px-2.5 py-6 text-center text-sm text-muted-foreground">{emptyText}</p>
|
|
296
354
|
)}
|
|
297
355
|
|
|
@@ -377,6 +435,16 @@ function Combobox({
|
|
|
377
435
|
</div>
|
|
378
436
|
)
|
|
379
437
|
})()}
|
|
438
|
+
|
|
439
|
+
{loading && (
|
|
440
|
+
<p className={cn(
|
|
441
|
+
"flex items-center justify-center gap-2 px-2.5 text-sm text-muted-foreground",
|
|
442
|
+
filtered.length === 0 ? "py-6" : "py-2"
|
|
443
|
+
)}>
|
|
444
|
+
<Loader2Icon className="size-4 animate-spin" />
|
|
445
|
+
Carregando…
|
|
446
|
+
</p>
|
|
447
|
+
)}
|
|
380
448
|
</div>
|
|
381
449
|
|
|
382
450
|
{error && (
|
package/styles.css
CHANGED
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
/* @strategicos/ui — estilos que os componentes precisam.
|
|
1
|
+
/* @strategicos/ui — tema e estilos que os componentes precisam.
|
|
2
2
|
*
|
|
3
|
-
* Importe DEPOIS do tailwindcss
|
|
3
|
+
* Importe DEPOIS do tailwindcss:
|
|
4
4
|
* @import "tailwindcss";
|
|
5
|
-
* @import "@strategicos/tokens/theme.css";
|
|
6
5
|
* @import "@strategicos/ui/styles.css";
|
|
7
6
|
*
|
|
7
|
+
* O tema (@strategicos/tokens) vem junto, importado abaixo — o app não precisa
|
|
8
|
+
* instalar nem importar os tokens à parte.
|
|
9
|
+
*
|
|
8
10
|
* O @source abaixo faz o Tailwind do app escanear o JS compilado deste pacote.
|
|
9
11
|
* Sem ele, as classes usadas só aqui dentro (h-7.5, data-active:…) não são
|
|
10
12
|
* geradas, porque o Tailwind ignora node_modules por padrão. */
|
|
11
13
|
|
|
14
|
+
@import "@strategicos/tokens/theme.css";
|
|
12
15
|
@import "tw-animate-css";
|
|
13
16
|
|
|
14
17
|
@source "./dist";
|