@bridge-ui/vue 0.3.0 → 0.4.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.
Files changed (69) hide show
  1. package/dist/Components/Autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +40 -45
  2. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +1 -0
  3. package/dist/Components/ColorField/ColorField.vue_vue_type_script_setup_true_lang.js +39 -44
  4. package/dist/Components/ColorField/composables/useColorField.d.ts +1 -0
  5. package/dist/Components/DataTable/DataTable.vue.d.ts +3 -3
  6. package/dist/Components/DataTable/DataTable.vue_vue_type_script_setup_true_lang.js +86 -72
  7. package/dist/Components/DataTable/DataTableColumnsMenu.vue.d.ts +9 -3
  8. package/dist/Components/DataTable/DataTableColumnsMenu.vue_vue_type_script_setup_true_lang.js +71 -26
  9. package/dist/Components/DataTable/DataTableFilterMenu.vue.d.ts +5 -2
  10. package/dist/Components/DataTable/DataTableFilterMenu.vue_vue_type_script_setup_true_lang.js +94 -75
  11. package/dist/Components/DataTable/DataTableFilterOptions.vue.d.ts +4 -1
  12. package/dist/Components/DataTable/DataTableFilterOptions.vue_vue_type_script_setup_true_lang.js +12 -4
  13. package/dist/Components/DataTable/DataTableSelection.vue_vue_type_script_setup_true_lang.js +22 -21
  14. package/dist/Components/DataTable/DataTableToolbarButton.vue.d.ts +2 -1
  15. package/dist/Components/DataTable/composables/useDataTable.d.ts +12 -4
  16. package/dist/Components/DataTable/composables/useDataTable.js +254 -222
  17. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.d.ts +27 -0
  18. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.js +54 -0
  19. package/dist/Components/DataTable/dataTable.types.d.ts +26 -9
  20. package/dist/Components/DataTable/index.d.ts +1 -1
  21. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +52 -57
  22. package/dist/Components/DateField/composables/useDateField.d.ts +1 -0
  23. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +50 -55
  24. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +1 -0
  25. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +56 -61
  26. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +1 -0
  27. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +56 -61
  28. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +1 -0
  29. package/dist/Components/FormField/composables/useFormField.d.ts +1 -0
  30. package/dist/Components/FormField/composables/useFormField.js +80 -75
  31. package/dist/Components/NumberField/NumberField.vue_vue_type_script_setup_true_lang.js +53 -43
  32. package/dist/Components/NumberField/composables/useNumberField.d.ts +8 -1
  33. package/dist/Components/NumberField/composables/useNumberField.js +49 -36
  34. package/dist/Components/NumberField/index.d.ts +1 -1
  35. package/dist/Components/NumberField/numberField.types.d.ts +13 -1
  36. package/dist/Components/PasswordField/PasswordField.vue_vue_type_script_setup_true_lang.js +28 -33
  37. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +1 -0
  38. package/dist/Components/Select/Select.vue_vue_type_script_setup_true_lang.js +42 -47
  39. package/dist/Components/Select/composables/useSelect.d.ts +1 -0
  40. package/dist/Components/Slider/Slider.vue_vue_type_script_setup_true_lang.js +43 -48
  41. package/dist/Components/Slider/composables/useSlider.d.ts +1 -1
  42. package/dist/Components/Table/Table.vue_vue_type_script_setup_true_lang.js +2 -2
  43. package/dist/Components/Table/composables/useTable.d.ts +3 -0
  44. package/dist/Components/Table/composables/useTable.js +1 -0
  45. package/dist/Components/Table/table.types.d.ts +2 -1
  46. package/dist/Components/TextField/TextField.vue_vue_type_script_setup_true_lang.js +11 -16
  47. package/dist/Components/TextField/composables/useTextField.d.ts +1 -0
  48. package/dist/Components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js +15 -20
  49. package/dist/Components/Textarea/composables/useTextarea.d.ts +1 -0
  50. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +45 -50
  51. package/dist/Components/TimeField/composables/useTimeField.d.ts +1 -0
  52. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +45 -50
  53. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +1 -0
  54. package/dist/Utils/index.d.ts +1 -0
  55. package/dist/Utils/index.js +28 -27
  56. package/dist/Utils/useOptionalModel.d.ts +6 -0
  57. package/dist/Utils/useOptionalModel.js +13 -0
  58. package/dist/augments.d.ts +1 -1
  59. package/dist/index.d.ts +1 -1
  60. package/dist/theme.css +46 -42
  61. package/docs/components/DataTable.md +42 -16
  62. package/docs/components/NumberField.md +17 -6
  63. package/docs/examples/i18n-dictionary.ts +6 -0
  64. package/docs/examples/icon-fontawesome.ts +4 -0
  65. package/docs/examples/icon-heroicons.ts +4 -0
  66. package/docs/examples/icon-lucide.ts +4 -0
  67. package/docs/examples/icon-phosphor.ts +4 -0
  68. package/docs/examples/icon-tabler.ts +4 -0
  69. package/package.json +2 -2
package/dist/theme.css CHANGED
@@ -170,15 +170,51 @@
170
170
  }
171
171
  }
172
172
 
173
- /**
174
- * FormField slot adornments (`bridge-start-adornment` / `bridge-end-adornment`).
175
- * Parent `.group/field` sets `data-bridge-rounded` from FormField `rounded`.
176
- * Suffix `!` overrides Button/Badge `rounded-*` from the utilities layer.
177
- */
173
+ /* Adornment radius from `data-bridge-rounded`. Underlined: top corner only. */
178
174
  @layer components {
179
175
  .bridge-end-adornment,
180
176
  .bridge-start-adornment {
181
- @apply h-full min-h-0 rounded-none!;
177
+ @apply min-h-0 rounded-none!;
178
+ }
179
+
180
+ [data-bridge-rounded="none"] .bridge-end-adornment {
181
+ @apply rounded-s-none! rounded-e-none!;
182
+ }
183
+
184
+ [data-bridge-rounded="xs"] .bridge-end-adornment {
185
+ @apply rounded-s-none! rounded-e-xs!;
186
+ }
187
+
188
+ [data-bridge-rounded="sm"] .bridge-end-adornment {
189
+ @apply rounded-s-none! rounded-e-sm!;
190
+ }
191
+
192
+ [data-bridge-rounded="md"] .bridge-end-adornment {
193
+ @apply rounded-s-none! rounded-e-md!;
194
+ }
195
+
196
+ [data-bridge-rounded="lg"] .bridge-end-adornment {
197
+ @apply rounded-s-none! rounded-e-lg!;
198
+ }
199
+
200
+ [data-bridge-rounded="xl"] .bridge-end-adornment {
201
+ @apply rounded-s-none! rounded-e-xl!;
202
+ }
203
+
204
+ [data-bridge-rounded="2xl"] .bridge-end-adornment {
205
+ @apply rounded-s-none! rounded-e-2xl!;
206
+ }
207
+
208
+ [data-bridge-rounded="3xl"] .bridge-end-adornment {
209
+ @apply rounded-s-none! rounded-e-3xl!;
210
+ }
211
+
212
+ [data-bridge-rounded="4xl"] .bridge-end-adornment {
213
+ @apply rounded-s-none! rounded-e-4xl!;
214
+ }
215
+
216
+ [data-bridge-rounded="full"] .bridge-end-adornment {
217
+ @apply rounded-s-none! rounded-e-full!;
182
218
  }
183
219
 
184
220
  [data-bridge-rounded="none"] .bridge-start-adornment {
@@ -221,44 +257,12 @@
221
257
  @apply rounded-s-full! rounded-e-none!;
222
258
  }
223
259
 
224
- [data-bridge-rounded="none"] .bridge-end-adornment {
225
- @apply rounded-s-none! rounded-e-none!;
226
- }
227
-
228
- [data-bridge-rounded="xs"] .bridge-end-adornment {
229
- @apply rounded-s-none! rounded-e-xs!;
230
- }
231
-
232
- [data-bridge-rounded="sm"] .bridge-end-adornment {
233
- @apply rounded-s-none! rounded-e-sm!;
234
- }
235
-
236
- [data-bridge-rounded="md"] .bridge-end-adornment {
237
- @apply rounded-s-none! rounded-e-md!;
238
- }
239
-
240
- [data-bridge-rounded="lg"] .bridge-end-adornment {
241
- @apply rounded-s-none! rounded-e-lg!;
242
- }
243
-
244
- [data-bridge-rounded="xl"] .bridge-end-adornment {
245
- @apply rounded-s-none! rounded-e-xl!;
246
- }
247
-
248
- [data-bridge-rounded="2xl"] .bridge-end-adornment {
249
- @apply rounded-s-none! rounded-e-2xl!;
260
+ [data-bridge-variant="underlined"] .bridge-end-adornment {
261
+ @apply rounded-ee-none!;
250
262
  }
251
263
 
252
- [data-bridge-rounded="3xl"] .bridge-end-adornment {
253
- @apply rounded-s-none! rounded-e-3xl!;
254
- }
255
-
256
- [data-bridge-rounded="4xl"] .bridge-end-adornment {
257
- @apply rounded-s-none! rounded-e-4xl!;
258
- }
259
-
260
- [data-bridge-rounded="full"] .bridge-end-adornment {
261
- @apply rounded-s-none! rounded-e-full!;
264
+ [data-bridge-variant="underlined"] .bridge-start-adornment {
265
+ @apply rounded-es-none!;
262
266
  }
263
267
 
264
268
  .bridge-field-adornment-button {
@@ -46,7 +46,7 @@ DataTable chrome (`plain` / `ghost` / `bordered`). Built-in `Pagination` follows
46
46
  <DataTable striped :rows="users" :columns="columns" />
47
47
  ```
48
48
 
49
- `:full="false"` sizes columns to content instead of stretching the table:
49
+ `:full="false"` sizes columns to content instead of stretching the table. The bordered wrapper, per-page select, and pagination follow that width. Default `full` stretches the table to the wrapper width:
50
50
 
51
51
  ```vue
52
52
  <DataTable :full="false" :rows="users" :columns="columns" />
@@ -126,18 +126,6 @@ Slot replaces the built-in Pagination and/or per-page Select (`#pagination` / `#
126
126
  </DataTable>
127
127
  ```
128
128
 
129
- Align the built-in Pagination with `pagination-align` (`start` / `center` / `end`, default `end`):
130
-
131
- ```vue
132
- <DataTable
133
- :rows="users"
134
- :columns="columns"
135
- v-model:page="page"
136
- :page-count="pageCount"
137
- pagination-align="start"
138
- />
139
- ```
140
-
141
129
  When `page` and `page-count` (or `total-count`) are set, DataTable does not sort or filter `rows` locally — bind `sorting` / `filters` / `page` / `per-page` and fetch the current page in the app:
142
130
 
143
131
  ```vue
@@ -212,7 +200,18 @@ Table-level slots stay `empty` / `expanded` / `footer` / `item.{id}` / `item` /
212
200
 
213
201
  Set `filters` on a column to show a funnel in that header. The panel uses checkboxes (`filterMultiple`, default) or radios (`:filter-multiple="false"`), and **Select all items** for multiple filters. Nested `children` render as a group in the same panel. **OK** commits; **Reset** clears the draft (commit on **OK**); closing without **OK** discards it.
214
202
 
215
- Set `searchable` on a column to add a text field in that same menu. Queries are stored in `columnSearch` (column id → string), not used to filter the option list.
203
+ Set `searchable` on a column to add a text field in that same overlay. Queries are stored in `columnSearch` (column id → string), not used to filter the option list.
204
+
205
+ Column filters open in a `FieldOverlay`. Default `filter-overlay` is `auto` (`menu` on desktop, `drawer` on mobile). Pass `menu`, `modal`, or `drawer` to pin a shell:
206
+
207
+ ```vue
208
+ <DataTable
209
+ :rows="users"
210
+ :columns="columns"
211
+ filter-overlay="drawer"
212
+ v-model:filters="filters"
213
+ />
214
+ ```
216
215
 
217
216
  ```vue
218
217
  <DataTable
@@ -253,7 +252,7 @@ Client-side filtering applies when the table is not server-paged (`page` + `page
253
252
  const columns = [
254
253
  {
255
254
  id: "name",
256
- width: 160,
255
+ width: 120,
257
256
  header: "Name",
258
257
  sticky: "start",
259
258
  cell: (row) => row.name,
@@ -283,12 +282,39 @@ const columns = [
283
282
  ];
284
283
  ```
285
284
 
285
+ ### Column classes
286
+
287
+ `classes.header` and `classes.cell` merge onto that column’s `th` / `td`. Use width utilities for breakpoint-based sizing. Do not set `width` on the same column when the class should control width — inline `width` wins.
288
+
289
+ ```ts
290
+ const columns = [
291
+ {
292
+ id: "name",
293
+ header: "Name",
294
+ cell: (row) => row.name,
295
+ classes: {
296
+ cell: "w-24 sm:w-40",
297
+ header: "w-24 sm:w-40",
298
+ },
299
+ },
300
+ ];
301
+ ```
302
+
286
303
  ### Column visibility
287
304
 
288
305
  Pass `hiddenColumns` and/or listen to `update:hiddenColumns` to show a **Columns** icon in the toolbar. `hideable: false` keeps a column out of the toggle (or disabled). At least one column stays visible.
289
306
 
307
+ The panel opens in a `FieldOverlay`. Default `columns-overlay` is `auto` (`menu` on desktop, `drawer` on mobile). Pass `menu`, `modal`, or `drawer` to pin a shell.
308
+
309
+ When unset, `columns-show-footer` is `true` for `modal` / `drawer` (`false` for `menu`). Reset restores hideable columns; OK commits and closes. Closing without OK discards.
310
+
290
311
  ```vue
291
- <DataTable :rows="users" :columns="columns" v-model:hidden-columns="hidden" />
312
+ <DataTable
313
+ :rows="users"
314
+ :columns="columns"
315
+ columns-overlay="drawer"
316
+ v-model:hidden-columns="hidden"
317
+ />
292
318
  ```
293
319
 
294
320
  ### Search
@@ -28,6 +28,16 @@ import { NumberField } from "@bridge-ui/vue/Components/NumberField";
28
28
  />
29
29
  ```
30
30
 
31
+ ### Control variants
32
+
33
+ ```vue
34
+ <NumberField label="Stacked" />
35
+
36
+ <NumberField label="Split" control-variant="split" />
37
+
38
+ <NumberField label="Inline" control-variant="inline" />
39
+ ```
40
+
31
41
  ### Min, max, and step
32
42
 
33
43
  ```vue
@@ -51,12 +61,13 @@ import { NumberField } from "@bridge-ui/vue/Components/NumberField";
51
61
 
52
62
  ### NumberField-specific
53
63
 
54
- | Prop | Type | Default | Description |
55
- | --------- | -------------------- | ------- | ----------------------------------------- |
56
- | `classes` | `NumberFieldClasses` | — | The classes to apply to the number field. |
57
- | `max` | `number` | | The maximum value. |
58
- | `min` | `number` | — | The minimum value. |
59
- | `step` | `number` | 1 | The step increment value. |
64
+ | Prop | Type | Default | Description |
65
+ | ---------------- | ---------------------------------- | ----------- | ------------------------------------------------------------------------------------------------------ |
66
+ | `classes` | `NumberFieldClasses` | — | The classes to apply to the number field. |
67
+ | `controlVariant` | `"inline" \| "split" \| "stacked"` | `"stacked"` | Layout of increment and decrement controls. `split` uses minus/plus icons and occupies the start slot. |
68
+ | `max` | `number` | — | The maximum value. |
69
+ | `min` | `number` | | The minimum value. |
70
+ | `step` | `number` | 1 | The step increment value. |
60
71
 
61
72
  ### v-model
62
73
 
@@ -19,18 +19,24 @@ import type { I18nAdapter } from "@bridge-ui/core/Adapters";
19
19
  const MESSAGES: Record<string, Record<string, string>> = {
20
20
  "en-US": {},
21
21
  "pt-BR": {
22
+ "OK": "OK",
22
23
  "Close": "Fechar",
24
+ "Reset": "Redefinir",
23
25
  "Columns": "Colunas",
24
26
  "Search": "Pesquisar",
25
27
  "No data": "Sem dados",
26
28
  "Per page:": "Por página:",
27
29
  "Loading...": "Carregando...",
28
30
  "No options": "Nenhuma opção",
31
+ "Select row": "Selecionar linha",
29
32
  "Hide password": "Ocultar senha",
30
33
  "Show password": "Mostrar senha",
34
+ "Filter column": "Filtrar coluna",
31
35
  "Clear selection": "Limpar seleção",
32
36
  "Decrement value": "Diminuir valor",
33
37
  "Increment value": "Aumentar valor",
38
+ "Select all rows": "Selecionar todas as linhas",
39
+ "Select all items": "Selecionar todos os itens",
34
40
  },
35
41
  };
36
42
 
@@ -27,7 +27,9 @@ import {
27
27
  faEyeSlash,
28
28
  faFilter,
29
29
  faMagnifyingGlass,
30
+ faMinus,
30
31
  faPalette,
32
+ faPlus,
31
33
  faSpinner,
32
34
  faTableColumns,
33
35
  faTriangleExclamation,
@@ -91,9 +93,11 @@ const icons = {
91
93
  eye: faEye,
92
94
  bell: faBell,
93
95
  user: faUser,
96
+ plus: faPlus,
94
97
  clear: faXmark,
95
98
  check: faCheck,
96
99
  clock: faClock,
100
+ minus: faMinus,
97
101
  filter: faFilter,
98
102
  loader: faSpinner,
99
103
  info: faCircleInfo,
@@ -25,6 +25,8 @@ import {
25
25
  FunnelIcon,
26
26
  InformationCircleIcon,
27
27
  MagnifyingGlassIcon,
28
+ MinusIcon,
29
+ PlusIcon,
28
30
  SwatchIcon,
29
31
  UserIcon,
30
32
  ViewColumnsIcon,
@@ -40,9 +42,11 @@ const icons = {
40
42
  eye: EyeIcon,
41
43
  bell: BellIcon,
42
44
  user: UserIcon,
45
+ plus: PlusIcon,
43
46
  clear: XMarkIcon,
44
47
  check: CheckIcon,
45
48
  clock: ClockIcon,
49
+ minus: MinusIcon,
46
50
  error: XCircleIcon,
47
51
  filter: FunnelIcon,
48
52
  palette: SwatchIcon,
@@ -25,7 +25,9 @@ import {
25
25
  Filter,
26
26
  Info,
27
27
  Loader2,
28
+ Minus,
28
29
  Palette,
30
+ Plus,
29
31
  Search,
30
32
  TriangleAlert,
31
33
  User,
@@ -42,8 +44,10 @@ const icons = {
42
44
  bell: Bell,
43
45
  info: Info,
44
46
  user: User,
47
+ plus: Plus,
45
48
  check: Check,
46
49
  clock: Clock,
50
+ minus: Minus,
47
51
  error: CircleX,
48
52
  eyeOff: EyeOff,
49
53
  filter: Filter,
@@ -23,7 +23,9 @@ import {
23
23
  PhFunnel,
24
24
  PhInfo,
25
25
  PhMagnifyingGlass,
26
+ PhMinus,
26
27
  PhPalette,
28
+ PhPlus,
27
29
  PhSpinnerGap,
28
30
  PhUser,
29
31
  PhWarning,
@@ -42,8 +44,10 @@ const icons = {
42
44
  bell: PhBell,
43
45
  info: PhInfo,
44
46
  user: PhUser,
47
+ plus: PhPlus,
45
48
  check: PhCheck,
46
49
  clock: PhClock,
50
+ minus: PhMinus,
47
51
  error: PhXCircle,
48
52
  filter: PhFunnel,
49
53
  columns: PhColumns,
@@ -25,7 +25,9 @@ import {
25
25
  IconFilter,
26
26
  IconInfoCircle,
27
27
  IconLoader2,
28
+ IconMinus,
28
29
  IconPalette,
30
+ IconPlus,
29
31
  IconSearch,
30
32
  IconSelector,
31
33
  IconUser,
@@ -41,8 +43,10 @@ const icons = {
41
43
  clear: IconX,
42
44
  bell: IconBell,
43
45
  user: IconUser,
46
+ plus: IconPlus,
44
47
  check: IconCheck,
45
48
  clock: IconClock,
49
+ minus: IconMinus,
46
50
  error: IconCircleX,
47
51
  eyeOff: IconEyeOff,
48
52
  filter: IconFilter,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "license": "MIT",
4
- "version": "0.3.0",
4
+ "version": "0.4.0",
5
5
  "author": "BridgeUI",
6
6
  "sideEffects": false,
7
7
  "name": "@bridge-ui/vue",
@@ -89,7 +89,7 @@
89
89
  }
90
90
  },
91
91
  "dependencies": {
92
- "@bridge-ui/core": "^0.3.0",
92
+ "@bridge-ui/core": "^0.4.0",
93
93
  "clsx": "^2.1.1",
94
94
  "es-toolkit": "^1.50.0",
95
95
  "tailwind-merge": "^3.6.0"