@bridge-ui/vue 0.2.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 (135) hide show
  1. package/ai/skills/bridge-ui-components/SKILL.md +3 -1
  2. package/dist/Components/Autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +40 -45
  3. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +2 -1
  4. package/dist/Components/ColorField/ColorField.vue_vue_type_script_setup_true_lang.js +39 -44
  5. package/dist/Components/ColorField/composables/useColorField.d.ts +3 -1
  6. package/dist/Components/DataTable/DataTable.js +5 -0
  7. package/dist/Components/DataTable/DataTable.vue.d.ts +43 -0
  8. package/dist/Components/DataTable/DataTable.vue_vue_type_script_setup_true_lang.js +396 -0
  9. package/dist/Components/DataTable/DataTableCellContent.js +5 -0
  10. package/dist/Components/DataTable/DataTableCellContent.vue.d.ts +23 -0
  11. package/dist/Components/DataTable/DataTableCellContent.vue_vue_type_script_setup_true_lang.js +38 -0
  12. package/dist/Components/DataTable/DataTableColumnsMenu.js +5 -0
  13. package/dist/Components/DataTable/DataTableColumnsMenu.vue.d.ts +17 -0
  14. package/dist/Components/DataTable/DataTableColumnsMenu.vue_vue_type_script_setup_true_lang.js +92 -0
  15. package/dist/Components/DataTable/DataTableFilterMenu.js +5 -0
  16. package/dist/Components/DataTable/DataTableFilterMenu.vue.d.ts +20 -0
  17. package/dist/Components/DataTable/DataTableFilterMenu.vue_vue_type_script_setup_true_lang.js +151 -0
  18. package/dist/Components/DataTable/DataTableFilterOptions.js +5 -0
  19. package/dist/Components/DataTable/DataTableFilterOptions.vue.d.ts +17 -0
  20. package/dist/Components/DataTable/DataTableFilterOptions.vue_vue_type_script_setup_true_lang.js +81 -0
  21. package/dist/Components/DataTable/DataTableSearch.js +5 -0
  22. package/dist/Components/DataTable/DataTableSearch.vue.d.ts +12 -0
  23. package/dist/Components/DataTable/DataTableSearch.vue_vue_type_script_setup_true_lang.js +39 -0
  24. package/dist/Components/DataTable/DataTableSelection.js +5 -0
  25. package/dist/Components/DataTable/DataTableSelection.vue.d.ts +20 -0
  26. package/dist/Components/DataTable/DataTableSelection.vue_vue_type_script_setup_true_lang.js +56 -0
  27. package/dist/Components/DataTable/DataTableSortButton.js +5 -0
  28. package/dist/Components/DataTable/DataTableSortButton.vue.d.ts +17 -0
  29. package/dist/Components/DataTable/DataTableSortButton.vue_vue_type_script_setup_true_lang.js +43 -0
  30. package/dist/Components/DataTable/DataTableToolbarButton.js +5 -0
  31. package/dist/Components/DataTable/DataTableToolbarButton.vue.d.ts +14 -0
  32. package/dist/Components/DataTable/DataTableToolbarButton.vue_vue_type_script_setup_true_lang.js +31 -0
  33. package/dist/Components/DataTable/composables/useDataTable.d.ts +565 -0
  34. package/dist/Components/DataTable/composables/useDataTable.js +511 -0
  35. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.d.ts +27 -0
  36. package/dist/Components/DataTable/composables/useDataTableColumnsMenu.js +54 -0
  37. package/dist/Components/DataTable/dataTable.types.d.ts +497 -0
  38. package/dist/Components/DataTable/index.d.ts +3 -0
  39. package/dist/Components/DataTable/index.js +3 -0
  40. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +52 -57
  41. package/dist/Components/DateField/composables/useDateField.d.ts +3 -1
  42. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +50 -55
  43. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +3 -1
  44. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +56 -61
  45. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +3 -1
  46. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +56 -61
  47. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +3 -1
  48. package/dist/Components/FormField/composables/useFormField.d.ts +2 -1
  49. package/dist/Components/FormField/composables/useFormField.js +80 -75
  50. package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +1 -0
  51. package/dist/Components/Menu/composables/useMenu.d.ts +1 -1
  52. package/dist/Components/Menu/composables/useMenu.js +7 -3
  53. package/dist/Components/Menu/menu.types.d.ts +6 -0
  54. package/dist/Components/NumberField/NumberField.vue_vue_type_script_setup_true_lang.js +53 -43
  55. package/dist/Components/NumberField/composables/useNumberField.d.ts +9 -2
  56. package/dist/Components/NumberField/composables/useNumberField.js +49 -36
  57. package/dist/Components/NumberField/index.d.ts +1 -1
  58. package/dist/Components/NumberField/numberField.types.d.ts +13 -1
  59. package/dist/Components/PasswordField/PasswordField.vue_vue_type_script_setup_true_lang.js +28 -33
  60. package/dist/Components/PasswordField/composables/usePasswordField.d.ts +2 -1
  61. package/dist/Components/Radio/Radio.vue_vue_type_script_setup_true_lang.js +9 -9
  62. package/dist/Components/Radio/composables/useRadio.js +57 -54
  63. package/dist/Components/Select/Select.vue_vue_type_script_setup_true_lang.js +42 -47
  64. package/dist/Components/Select/composables/useSelect.d.ts +2 -1
  65. package/dist/Components/Slider/Slider.vue_vue_type_script_setup_true_lang.js +43 -48
  66. package/dist/Components/Slider/composables/useSlider.d.ts +3 -3
  67. package/dist/Components/Snackbar/composables/useSnackbar.d.ts +1 -1
  68. package/dist/Components/Table/Table.js +5 -0
  69. package/dist/Components/Table/Table.vue.d.ts +16 -0
  70. package/dist/Components/Table/Table.vue_vue_type_script_setup_true_lang.js +44 -0
  71. package/dist/Components/Table/TableBody.js +5 -0
  72. package/dist/Components/Table/TableBody.vue.d.ts +11 -0
  73. package/dist/Components/Table/TableBody.vue_vue_type_script_setup_true_lang.js +17 -0
  74. package/dist/Components/Table/TableCaption.js +5 -0
  75. package/dist/Components/Table/TableCaption.vue.d.ts +11 -0
  76. package/dist/Components/Table/TableCaption.vue_vue_type_script_setup_true_lang.js +17 -0
  77. package/dist/Components/Table/TableCell.js +5 -0
  78. package/dist/Components/Table/TableCell.vue.d.ts +11 -0
  79. package/dist/Components/Table/TableCell.vue_vue_type_script_setup_true_lang.js +19 -0
  80. package/dist/Components/Table/TableFooter.js +5 -0
  81. package/dist/Components/Table/TableFooter.vue.d.ts +11 -0
  82. package/dist/Components/Table/TableFooter.vue_vue_type_script_setup_true_lang.js +17 -0
  83. package/dist/Components/Table/TableHead.js +5 -0
  84. package/dist/Components/Table/TableHead.vue.d.ts +11 -0
  85. package/dist/Components/Table/TableHead.vue_vue_type_script_setup_true_lang.js +19 -0
  86. package/dist/Components/Table/TableHeader.js +5 -0
  87. package/dist/Components/Table/TableHeader.vue.d.ts +11 -0
  88. package/dist/Components/Table/TableHeader.vue_vue_type_script_setup_true_lang.js +17 -0
  89. package/dist/Components/Table/TableRow.js +5 -0
  90. package/dist/Components/Table/TableRow.vue.d.ts +11 -0
  91. package/dist/Components/Table/TableRow.vue_vue_type_script_setup_true_lang.js +17 -0
  92. package/dist/Components/Table/composables/useTable.d.ts +19 -0
  93. package/dist/Components/Table/composables/useTable.js +89 -0
  94. package/dist/Components/Table/composables/useTableCell.d.ts +12 -0
  95. package/dist/Components/Table/composables/useTableCell.js +40 -0
  96. package/dist/Components/Table/composables/useTablePart.d.ts +12 -0
  97. package/dist/Components/Table/composables/useTablePart.js +32 -0
  98. package/dist/Components/Table/composables/useTableRow.d.ts +6 -0
  99. package/dist/Components/Table/composables/useTableRow.js +29 -0
  100. package/dist/Components/Table/index.d.ts +14 -0
  101. package/dist/Components/Table/index.js +14 -0
  102. package/dist/Components/Table/table.types.d.ts +417 -0
  103. package/dist/Components/Table/tableInjectionKey.d.ts +114 -0
  104. package/dist/Components/Table/tableInjectionKey.js +4 -0
  105. package/dist/Components/TextField/TextField.vue_vue_type_script_setup_true_lang.js +11 -16
  106. package/dist/Components/TextField/composables/useTextField.d.ts +2 -1
  107. package/dist/Components/Textarea/Textarea.vue_vue_type_script_setup_true_lang.js +15 -20
  108. package/dist/Components/Textarea/composables/useTextarea.d.ts +2 -1
  109. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +45 -50
  110. package/dist/Components/TimeField/composables/useTimeField.d.ts +3 -1
  111. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +45 -50
  112. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +3 -1
  113. package/dist/Utils/index.d.ts +1 -0
  114. package/dist/Utils/index.js +28 -27
  115. package/dist/Utils/useOptionalModel.d.ts +6 -0
  116. package/dist/Utils/useOptionalModel.js +13 -0
  117. package/dist/augments.d.ts +1 -1
  118. package/dist/index.d.ts +1 -1
  119. package/dist/theme.css +46 -42
  120. package/docs/README.md +2 -0
  121. package/docs/components/CalendarDate.md +1 -1
  122. package/docs/components/DataTable.md +371 -0
  123. package/docs/components/DateField.md +2 -2
  124. package/docs/components/DatePicker.md +3 -3
  125. package/docs/components/DateRangePicker.md +1 -1
  126. package/docs/components/NumberField.md +17 -6
  127. package/docs/components/Pagination.md +2 -2
  128. package/docs/components/Table.md +122 -0
  129. package/docs/examples/i18n-dictionary.ts +10 -0
  130. package/docs/examples/icon-fontawesome.ts +12 -0
  131. package/docs/examples/icon-heroicons.ts +12 -0
  132. package/docs/examples/icon-lucide.ts +12 -0
  133. package/docs/examples/icon-phosphor.ts +12 -0
  134. package/docs/examples/icon-tabler.ts +12 -0
  135. package/package.json +9 -2
@@ -171,7 +171,7 @@ export declare function useTextarea(props: TextareaOwnProps, textareaRef: Ref<nu
171
171
  dir?: string | undefined | undefined;
172
172
  draggable?: (boolean | "true" | "false") | undefined;
173
173
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
174
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
174
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
175
175
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
176
176
  inert?: (boolean | "true" | "false") | undefined;
177
177
  placeholder?: string | undefined | undefined;
@@ -441,6 +441,7 @@ export declare function useTextarea(props: TextareaOwnProps, textareaRef: Ref<nu
441
441
  endSlotBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
442
442
  invalidated: import('vue').ComputedRef<boolean>;
443
443
  containerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {
444
+ "data-bridge-variant": NonNullable<keyof import('@bridge-ui/core/Tokens').FormFieldVariant | undefined>;
444
445
  "data-bridge-rounded": NonNullable<keyof import('@bridge-ui/core/Tokens').FormFieldRounded | undefined>;
445
446
  }>>;
446
447
  startIconBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", Partial<Omit<import('../../Icon').IconProps, "icon">> | undefined, {}>>;
@@ -1,15 +1,15 @@
1
1
  import { useResolveMessage as e } from "../../Adapters/I18n/useI18nAdapter.js";
2
2
  import { presentSlotNames as t } from "../../Utils/slotOrProp.js";
3
- import n from "../Icon/Icon.js";
4
- import { FORM_FIELD_CHROME_SLOT_NAMES as r } from "../FormField/formField.types.js";
5
- import i from "../FormField/FormField.js";
6
- import a from "../FieldOverlay/FieldOverlay.js";
7
- import { useTimeField as o } from "./composables/useTimeField.js";
8
- import s from "../TimePicker/TimePicker.js";
9
- import { Fragment as c, computed as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createSlots as p, createVNode as m, defineComponent as h, guardReactiveProps as g, mergeModels as _, mergeProps as v, normalizeClass as y, normalizeProps as b, openBlock as x, ref as S, renderList as C, renderSlot as w, unref as T, useModel as E, withCtx as D, withKeys as O, withModifiers as k } from "vue";
10
- import { isUndefined as A } from "es-toolkit/compat";
3
+ import { useOptionalModel as n } from "../../Utils/useOptionalModel.js";
4
+ import r from "../Icon/Icon.js";
5
+ import { FORM_FIELD_CHROME_SLOT_NAMES as i } from "../FormField/formField.types.js";
6
+ import a from "../FormField/FormField.js";
7
+ import o from "../FieldOverlay/FieldOverlay.js";
8
+ import { useTimeField as s } from "./composables/useTimeField.js";
9
+ import c from "../TimePicker/TimePicker.js";
10
+ import { Fragment as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createSlots as p, createVNode as m, defineComponent as h, guardReactiveProps as g, mergeModels as _, mergeProps as v, normalizeClass as y, normalizeProps as b, openBlock as x, ref as S, renderList as C, renderSlot as w, unref as T, useModel as E, withCtx as D, withKeys as O, withModifiers as k } from "vue";
11
11
  //#region src/Components/TimeField/TimeField.vue?vue&type=script&setup=true&lang.ts
12
- var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"], N = /*@__PURE__*/ h({
12
+ var A = { class: "flex min-w-0 flex-1 items-center gap-1" }, j = ["aria-label"], M = /*@__PURE__*/ h({
13
13
  inheritAttrs: !1,
14
14
  __name: "TimeField",
15
15
  props: /*@__PURE__*/ _({
@@ -74,51 +74,46 @@ var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"],
74
74
  "open"
75
75
  ], ["update:modelValue"]),
76
76
  setup(h, { emit: _ }) {
77
- let N = E(h, "modelValue"), P = h, F = _, I = e(), L = S(P.defaultValue ?? null), R = l({
78
- set: (e) => {
79
- N.value = e, L.value = e;
80
- },
81
- get: () => A(N.value) ? L.value : N.value
82
- }), { open: z, fill: B, overlay: V, timeOnly: H, formField: U, inputBind: W, clearBind: G, clearValue: K, modelValue: q, showFooter: J, pickerClass: Y, clearIconSize: X, showClearIcon: Z, handleOpenChange: Q, handlePickerChange: $, handlePickerCancel: ee, overlayCustomProps: te, timePickerCustomProps: ne } = o(P, R, F);
83
- return (e, o) => (x(), d(c, null, [m(T(i), { field: T(U) }, p({
84
- default: D(() => [f("div", j, [f("input", b(g(T(W))), null, 16), T(Z) ? (x(), d("span", v({ key: 0 }, T(G), {
85
- onClick: o[0] ||= (...e) => T(K) && T(K)(...e),
86
- "aria-label": T(I)("Clear"),
87
- onKeydown: [o[1] ||= O(k((...e) => T(K) && T(K)(...e), ["prevent"]), ["enter"]), o[2] ||= O(k((...e) => T(K) && T(K)(...e), ["prevent"]), ["space"])]
88
- }), [m(T(n), v({
77
+ let M = _, N = e(), P = E(h, "modelValue"), F = h, I = S(F.defaultValue ?? null), L = n(P, I), { open: R, fill: z, overlay: B, timeOnly: V, formField: H, inputBind: U, clearBind: W, clearValue: G, modelValue: K, showFooter: q, pickerClass: J, clearIconSize: Y, showClearIcon: X, handleOpenChange: Z, handlePickerChange: Q, handlePickerCancel: $, overlayCustomProps: ee, timePickerCustomProps: te } = s(F, L, M);
78
+ return (e, n) => (x(), d(l, null, [m(T(a), { field: T(H) }, p({
79
+ default: D(() => [f("div", A, [f("input", b(g(T(U))), null, 16), T(X) ? (x(), d("span", v({ key: 0 }, T(W), {
80
+ onClick: n[0] ||= (...e) => T(G) && T(G)(...e),
81
+ "aria-label": T(N)("Clear"),
82
+ onKeydown: [n[1] ||= O(k((...e) => T(G) && T(G)(...e), ["prevent"]), ["enter"]), n[2] ||= O(k((...e) => T(G) && T(G)(...e), ["prevent"]), ["space"])]
83
+ }), [m(T(r), v({
89
84
  icon: "clear",
90
- size: T(X)
91
- }, P.customProps?.clearIcon), null, 16, ["size"])], 16, M)) : u("", !0)])]),
85
+ size: T(Y)
86
+ }, F.customProps?.clearIcon), null, 16, ["size"])], 16, j)) : u("", !0)])]),
92
87
  _: 2
93
- }, [C(T(t)(T(r), e.$slots), (t) => ({
88
+ }, [C(T(t)(T(i), e.$slots), (t) => ({
94
89
  name: t,
95
90
  fn: D((n) => [w(e.$slots, t, b(g(n || {})))])
96
- }))]), 1032, ["field"]), m(T(a), {
97
- overlay: T(V),
98
- "model-value": T(z),
99
- "custom-props": T(te),
100
- "onUpdate:modelValue": T(Q)
91
+ }))]), 1032, ["field"]), m(T(o), {
92
+ overlay: T(B),
93
+ "model-value": T(R),
94
+ "custom-props": T(ee),
95
+ "onUpdate:modelValue": T(Z)
101
96
  }, {
102
- default: D(() => [m(T(s), {
103
- fill: T(B),
104
- value: T(q),
105
- class: y(T(Y)),
106
- ampm: T(H).ampm,
107
- "show-footer": T(J),
108
- "read-only": P.readonly,
109
- "max-time": T(H).maxTime,
110
- "min-time": T(H).minTime,
111
- interval: T(H).interval,
112
- "time-zone": T(H).timeZone,
113
- onChange: T($),
114
- onCancel: T(ee),
115
- "show-seconds": T(H).showSeconds,
116
- error: T(U).invalidated.value,
117
- color: T(U).merged.value.color,
118
- "custom-props": T(ne),
119
- disabled: T(U).isDisabled.value,
120
- "disable-times": T(H).disableTimes,
121
- rounded: T(U).merged.value.rounded
97
+ default: D(() => [m(T(c), {
98
+ fill: T(z),
99
+ value: T(K),
100
+ class: y(T(J)),
101
+ ampm: T(V).ampm,
102
+ "show-footer": T(q),
103
+ "read-only": F.readonly,
104
+ "max-time": T(V).maxTime,
105
+ "min-time": T(V).minTime,
106
+ interval: T(V).interval,
107
+ "time-zone": T(V).timeZone,
108
+ onChange: T(Q),
109
+ onCancel: T($),
110
+ "show-seconds": T(V).showSeconds,
111
+ error: T(H).invalidated.value,
112
+ color: T(H).merged.value.color,
113
+ "custom-props": T(te),
114
+ disabled: T(H).isDisabled.value,
115
+ "disable-times": T(V).disableTimes,
116
+ rounded: T(H).merged.value.rounded
122
117
  }, p({ _: 2 }, [e.$slots.footer ? {
123
118
  name: "footer",
124
119
  fn: D((t) => [w(e.$slots, "footer", b(g(t)))]),
@@ -154,4 +149,4 @@ var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"],
154
149
  }
155
150
  });
156
151
  //#endregion
157
- export { N as default };
152
+ export { M as default };
@@ -181,7 +181,7 @@ export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null |
181
181
  dir?: string | undefined | undefined;
182
182
  draggable?: (boolean | "true" | "false") | undefined;
183
183
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
184
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
184
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
185
185
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
186
186
  inert?: (boolean | "true" | "false") | undefined;
187
187
  placeholder?: string | undefined | undefined;
@@ -451,6 +451,7 @@ export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null |
451
451
  endSlotBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
452
452
  invalidated: import('vue').ComputedRef<boolean>;
453
453
  containerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {
454
+ "data-bridge-variant": NonNullable<keyof import('@bridge-ui/core/Tokens').FormFieldVariant | undefined>;
454
455
  "data-bridge-rounded": NonNullable<keyof import('@bridge-ui/core/Tokens').FormFieldRounded | undefined>;
455
456
  }>>;
456
457
  startIconBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", Partial<Omit<import('../../Icon').IconProps, "icon">> | undefined, {}>>;
@@ -730,6 +731,7 @@ export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null |
730
731
  disableAutoFocus?: boolean;
731
732
  disableScrollLock?: boolean;
732
733
  keepMounted?: boolean;
734
+ matchWidth?: boolean;
733
735
  offset?: number;
734
736
  onShowChange?: (show: boolean) => void;
735
737
  persistent?: boolean;
@@ -1,15 +1,15 @@
1
1
  import { useResolveMessage as e } from "../../Adapters/I18n/useI18nAdapter.js";
2
2
  import { presentSlotNames as t } from "../../Utils/slotOrProp.js";
3
- import n from "../Icon/Icon.js";
4
- import { FORM_FIELD_CHROME_SLOT_NAMES as r } from "../FormField/formField.types.js";
5
- import i from "../FormField/FormField.js";
6
- import a from "../FieldOverlay/FieldOverlay.js";
7
- import { useTimeRangeField as o } from "./composables/useTimeRangeField.js";
8
- import s from "../TimeRangePicker/TimeRangePicker.js";
9
- import { Fragment as c, computed as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createSlots as p, createVNode as m, defineComponent as h, guardReactiveProps as g, mergeModels as _, mergeProps as v, normalizeClass as y, normalizeProps as b, openBlock as x, ref as S, renderList as C, renderSlot as w, unref as T, useModel as E, withCtx as D, withKeys as O, withModifiers as k } from "vue";
10
- import { isUndefined as A } from "es-toolkit/compat";
3
+ import { useOptionalModel as n } from "../../Utils/useOptionalModel.js";
4
+ import r from "../Icon/Icon.js";
5
+ import { FORM_FIELD_CHROME_SLOT_NAMES as i } from "../FormField/formField.types.js";
6
+ import a from "../FormField/FormField.js";
7
+ import o from "../FieldOverlay/FieldOverlay.js";
8
+ import { useTimeRangeField as s } from "./composables/useTimeRangeField.js";
9
+ import c from "../TimeRangePicker/TimeRangePicker.js";
10
+ import { Fragment as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createSlots as p, createVNode as m, defineComponent as h, guardReactiveProps as g, mergeModels as _, mergeProps as v, normalizeClass as y, normalizeProps as b, openBlock as x, ref as S, renderList as C, renderSlot as w, unref as T, useModel as E, withCtx as D, withKeys as O, withModifiers as k } from "vue";
11
11
  //#region src/Components/TimeRangeField/TimeRangeField.vue?vue&type=script&setup=true&lang.ts
12
- var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"], N = /*@__PURE__*/ h({
12
+ var A = { class: "flex min-w-0 flex-1 items-center gap-1" }, j = ["aria-label"], M = /*@__PURE__*/ h({
13
13
  inheritAttrs: !1,
14
14
  __name: "TimeRangeField",
15
15
  props: /*@__PURE__*/ _({
@@ -74,51 +74,46 @@ var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"],
74
74
  "open"
75
75
  ], ["update:modelValue"]),
76
76
  setup(h, { emit: _ }) {
77
- let N = E(h, "modelValue"), P = h, F = _, I = e(), L = S(P.defaultValue ?? null), R = l({
78
- set: (e) => {
79
- N.value = e, L.value = e;
80
- },
81
- get: () => A(N.value) ? L.value : N.value
82
- }), { open: z, fill: B, overlay: V, timeOnly: H, formField: U, inputBind: W, clearBind: G, clearValue: K, modelValue: q, showFooter: J, pickerClass: Y, clearIconSize: X, showClearIcon: Z, handleOpenChange: Q, handlePickerChange: $, handlePickerCancel: ee, overlayCustomProps: te, timeRangePickerCustomProps: ne } = o(P, R, F);
83
- return (e, o) => (x(), d(c, null, [m(T(i), { field: T(U) }, p({
84
- default: D(() => [f("div", j, [f("input", b(g(T(W))), null, 16), T(Z) ? (x(), d("span", v({ key: 0 }, T(G), {
85
- onClick: o[0] ||= (...e) => T(K) && T(K)(...e),
86
- "aria-label": T(I)("Clear"),
87
- onKeydown: [o[1] ||= O(k((...e) => T(K) && T(K)(...e), ["prevent"]), ["enter"]), o[2] ||= O(k((...e) => T(K) && T(K)(...e), ["prevent"]), ["space"])]
88
- }), [m(T(n), v({
77
+ let M = e(), N = _, P = E(h, "modelValue"), F = h, I = S(F.defaultValue ?? null), L = n(P, I), { open: R, fill: z, overlay: B, timeOnly: V, formField: H, inputBind: U, clearBind: W, clearValue: G, modelValue: K, showFooter: q, pickerClass: J, clearIconSize: Y, showClearIcon: X, handleOpenChange: Z, handlePickerChange: Q, handlePickerCancel: $, overlayCustomProps: ee, timeRangePickerCustomProps: te } = s(F, L, N);
78
+ return (e, n) => (x(), d(l, null, [m(T(a), { field: T(H) }, p({
79
+ default: D(() => [f("div", A, [f("input", b(g(T(U))), null, 16), T(X) ? (x(), d("span", v({ key: 0 }, T(W), {
80
+ onClick: n[0] ||= (...e) => T(G) && T(G)(...e),
81
+ "aria-label": T(M)("Clear"),
82
+ onKeydown: [n[1] ||= O(k((...e) => T(G) && T(G)(...e), ["prevent"]), ["enter"]), n[2] ||= O(k((...e) => T(G) && T(G)(...e), ["prevent"]), ["space"])]
83
+ }), [m(T(r), v({
89
84
  icon: "clear",
90
- size: T(X)
91
- }, P.customProps?.clearIcon), null, 16, ["size"])], 16, M)) : u("", !0)])]),
85
+ size: T(Y)
86
+ }, F.customProps?.clearIcon), null, 16, ["size"])], 16, j)) : u("", !0)])]),
92
87
  _: 2
93
- }, [C(T(t)(T(r), e.$slots), (t) => ({
88
+ }, [C(T(t)(T(i), e.$slots), (t) => ({
94
89
  name: t,
95
90
  fn: D((n) => [w(e.$slots, t, b(g(n || {})))])
96
- }))]), 1032, ["field"]), m(T(a), {
97
- overlay: T(V),
98
- "model-value": T(z),
99
- "custom-props": T(te),
100
- "onUpdate:modelValue": T(Q)
91
+ }))]), 1032, ["field"]), m(T(o), {
92
+ overlay: T(B),
93
+ "model-value": T(R),
94
+ "custom-props": T(ee),
95
+ "onUpdate:modelValue": T(Z)
101
96
  }, {
102
- default: D(() => [m(T(s), {
103
- fill: T(B),
104
- value: T(q),
105
- class: y(T(Y)),
106
- ampm: T(H).ampm,
107
- "show-footer": T(J),
108
- "read-only": P.readonly,
109
- "max-time": T(H).maxTime,
110
- "min-time": T(H).minTime,
111
- interval: T(H).interval,
112
- "time-zone": T(H).timeZone,
113
- onChange: T($),
114
- onCancel: T(ee),
115
- "show-seconds": T(H).showSeconds,
116
- error: T(U).invalidated.value,
117
- color: T(U).merged.value.color,
118
- disabled: T(U).isDisabled.value,
119
- "disable-times": T(H).disableTimes,
120
- rounded: T(U).merged.value.rounded,
121
- "custom-props": T(ne)
97
+ default: D(() => [m(T(c), {
98
+ fill: T(z),
99
+ value: T(K),
100
+ class: y(T(J)),
101
+ ampm: T(V).ampm,
102
+ "show-footer": T(q),
103
+ "read-only": F.readonly,
104
+ "max-time": T(V).maxTime,
105
+ "min-time": T(V).minTime,
106
+ interval: T(V).interval,
107
+ "time-zone": T(V).timeZone,
108
+ onChange: T(Q),
109
+ onCancel: T($),
110
+ "show-seconds": T(V).showSeconds,
111
+ error: T(H).invalidated.value,
112
+ color: T(H).merged.value.color,
113
+ disabled: T(H).isDisabled.value,
114
+ "disable-times": T(V).disableTimes,
115
+ rounded: T(H).merged.value.rounded,
116
+ "custom-props": T(te)
122
117
  }, p({ _: 2 }, [e.$slots.footer ? {
123
118
  name: "footer",
124
119
  fn: D((t) => [w(e.$slots, "footer", b(g(t)))]),
@@ -154,4 +149,4 @@ var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"],
154
149
  }
155
150
  });
156
151
  //#endregion
157
- export { N as default };
152
+ export { M as default };
@@ -181,7 +181,7 @@ export declare function useTimeRangeField(props: TimeRangeFieldOwnProps, model:
181
181
  dir?: string | undefined | undefined;
182
182
  draggable?: (boolean | "true" | "false") | undefined;
183
183
  enterkeyhint?: "enter" | "done" | "go" | "next" | "previous" | "search" | "send" | undefined | undefined;
184
- enterKeyHint?: "done" | "search" | "enter" | "go" | "next" | "previous" | "send" | undefined;
184
+ enterKeyHint?: "search" | "done" | "enter" | "go" | "next" | "previous" | "send" | undefined;
185
185
  hidden?: "" | "until-found" | "hidden" | (boolean | "true" | "false") | undefined;
186
186
  inert?: (boolean | "true" | "false") | undefined;
187
187
  placeholder?: string | undefined | undefined;
@@ -451,6 +451,7 @@ export declare function useTimeRangeField(props: TimeRangeFieldOwnProps, model:
451
451
  endSlotBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
452
452
  invalidated: import('vue').ComputedRef<boolean>;
453
453
  containerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {
454
+ "data-bridge-variant": NonNullable<keyof import('@bridge-ui/core/Tokens').FormFieldVariant | undefined>;
454
455
  "data-bridge-rounded": NonNullable<keyof import('@bridge-ui/core/Tokens').FormFieldRounded | undefined>;
455
456
  }>>;
456
457
  startIconBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", Partial<Omit<import('../../Icon').IconProps, "icon">> | undefined, {}>>;
@@ -722,6 +723,7 @@ export declare function useTimeRangeField(props: TimeRangeFieldOwnProps, model:
722
723
  disableAutoFocus?: boolean;
723
724
  disableScrollLock?: boolean;
724
725
  keepMounted?: boolean;
726
+ matchWidth?: boolean;
725
727
  offset?: number;
726
728
  onShowChange?: (show: boolean) => void;
727
729
  persistent?: boolean;
@@ -72,3 +72,4 @@ export { useBreakpoint } from './useBreakpoint';
72
72
  export type { UseBreakpointOptions } from './useBreakpoint';
73
73
  export { useHoldRepeat } from './useHoldRepeat';
74
74
  export type { HoldRepeatAction, UseHoldRepeatOptions, } from './useHoldRepeat';
75
+ export { useOptionalModel } from './useOptionalModel';
@@ -2,64 +2,65 @@ import { useBridgeUI as e } from "../Provider/useBridgeUI.js";
2
2
  import { RenderFn as t, hasNamedSlot as n, hasSlotOrProp as r, isPropPresent as i, presentSlotNames as a } from "./slotOrProp.js";
3
3
  import { useBreakpoint as o } from "./useBreakpoint.js";
4
4
  import { useHoldRepeat as s } from "./useHoldRepeat.js";
5
- import { computed as c, defineComponent as l, toValue as u, unref as d } from "vue";
6
- import { get as f, isNil as p } from "es-toolkit/compat";
7
- import { resolveFieldShowFooter as m, resolvePickerFill as h } from "@bridge-ui/core/Domain";
8
- import { createMergeNestedComponentProps as g, createMergePartBind as _, mergeBridgeUILayeredClasses as v, mergePropsWithBridgeUIDefaults as y } from "@bridge-ui/core/Utils";
5
+ import { useOptionalModel as c } from "./useOptionalModel.js";
6
+ import { computed as l, defineComponent as u, toValue as d, unref as f } from "vue";
7
+ import { get as p, isNil as m } from "es-toolkit/compat";
8
+ import { resolveFieldShowFooter as h, resolvePickerFill as g } from "@bridge-ui/core/Domain";
9
+ import { createMergeNestedComponentProps as _, createMergePartBind as v, mergeBridgeUILayeredClasses as y, mergePropsWithBridgeUIDefaults as b } from "@bridge-ui/core/Utils";
9
10
  //#region src/Utils/index.ts
10
- function b(e) {
11
- return l({
11
+ function x(e) {
12
+ return u({
12
13
  name: "HeadlessTestComponent",
13
14
  setup() {
14
15
  return e(), () => null;
15
16
  }
16
17
  });
17
18
  }
18
- var x = _("class"), S = g(x);
19
- function C({ props: t, libDefaults: n, componentName: r }) {
20
- let i = e(), a = c(() => p(i) ? null : d(i.components));
19
+ var S = v("class"), C = _(S);
20
+ function w({ props: t, libDefaults: n, componentName: r }) {
21
+ let i = e(), a = l(() => m(i) ? null : f(i.components));
21
22
  return {
22
- entry: c(() => {
23
- if (r) return f(a.value, r);
23
+ entry: l(() => {
24
+ if (r) return p(a.value, r);
24
25
  }),
25
26
  bridge: i,
26
- merged: c(() => y({
27
+ merged: l(() => b({
27
28
  libDefaults: n,
28
29
  componentName: r,
29
- props: u(t),
30
+ props: d(t),
30
31
  components: a.value,
31
32
  formDefaults: i?.global.value.formDefaults
32
33
  })),
33
34
  components: a
34
35
  };
35
36
  }
36
- function w({ overlay: t, showFooter: n, componentName: r }) {
37
+ function T({ overlay: t, showFooter: n, componentName: r }) {
37
38
  let i = e();
38
- return c(() => {
39
- let e = r ? f(d(i?.components), [
39
+ return l(() => {
40
+ let e = r ? p(f(i?.components), [
40
41
  r,
41
42
  "defaultProps",
42
43
  "showFooter"
43
44
  ]) : void 0;
44
- return m(u(n) ?? e, u(t));
45
+ return h(d(n) ?? e, d(t));
45
46
  });
46
47
  }
47
- function T({ fill: t, overlay: n, componentName: r }) {
48
+ function E({ fill: t, overlay: n, componentName: r }) {
48
49
  let i = e();
49
- return c(() => {
50
- let e = r ? f(d(i?.components), [
50
+ return l(() => {
51
+ let e = r ? p(f(i?.components), [
51
52
  r,
52
53
  "defaultProps",
53
54
  "fill"
54
55
  ]) : void 0;
55
- return h(u(t) ?? e, u(n));
56
+ return g(d(t) ?? e, d(n));
56
57
  });
57
58
  }
58
- function E({ entry: e, props: t }) {
59
- return c(() => v(f(e.value, "classes"), u(t).classes));
59
+ function D({ entry: e, props: t }) {
60
+ return l(() => y(p(e.value, "classes"), d(t).classes));
60
61
  }
61
- function D(e) {
62
- return f({
62
+ function O(e) {
63
+ return p({
63
64
  xs: "xs",
64
65
  sm: "sm",
65
66
  md: "md",
@@ -69,7 +70,7 @@ function D(e) {
69
70
  "2xl": "lg"
70
71
  }, e ?? "md");
71
72
  }
72
- function O(e) {
73
+ function k(e) {
73
74
  if (e instanceof HTMLElement) return e;
74
75
  if (e && "$el" in e) {
75
76
  let t = e.$el;
@@ -78,4 +79,4 @@ function O(e) {
78
79
  return null;
79
80
  }
80
81
  //#endregion
81
- export { t as RenderFn, b as defineHeadlessComponent, n as hasNamedSlot, r as hasSlotOrProp, i as isPropPresent, S as mergeNestedComponentProps, x as mergePartBind, a as presentSlotNames, D as resolveFieldAdornmentIconSize, O as resolveVnodeRefElement, o as useBreakpoint, C as useBridgeUIComponent, E as useBridgeUIMergedRegistryClasses, w as useFieldShowFooter, s as useHoldRepeat, T as usePickerFill };
82
+ export { t as RenderFn, x as defineHeadlessComponent, n as hasNamedSlot, r as hasSlotOrProp, i as isPropPresent, C as mergeNestedComponentProps, S as mergePartBind, a as presentSlotNames, O as resolveFieldAdornmentIconSize, k as resolveVnodeRefElement, o as useBreakpoint, w as useBridgeUIComponent, D as useBridgeUIMergedRegistryClasses, T as useFieldShowFooter, s as useHoldRepeat, c as useOptionalModel, E as usePickerFill };
@@ -0,0 +1,6 @@
1
+ import { Ref, WritableComputedRef } from 'vue';
2
+ /**
3
+ * Optional `v-model` that keeps `defaultValue` when unbound, and stays empty
4
+ * when the parent sets the bound model to `null`.
5
+ */
6
+ export declare function useOptionalModel<T>(model: Ref<undefined | NoInfer<T>>, uncontrolled: Ref<T>): WritableComputedRef<T>;
@@ -0,0 +1,13 @@
1
+ import { computed as e } from "vue";
2
+ import { isUndefined as t } from "es-toolkit/compat";
3
+ //#region src/Utils/useOptionalModel.ts
4
+ function n(n, r) {
5
+ return e({
6
+ get: () => t(n.value) ? r.value : n.value,
7
+ set: (e) => {
8
+ t(n.value) && (r.value = e), n.value = e;
9
+ }
10
+ });
11
+ }
12
+ //#endregion
13
+ export { n as useOptionalModel };
@@ -96,7 +96,7 @@ declare module "@bridge-ui/core/Config" {
96
96
  }
97
97
  interface NumberFieldConfigOverrides {
98
98
  classes: NumberFieldClasses;
99
- defaultProps: Partial<Pick<NumberFieldProps, "size" | "color" | "rounded" | "variant" | "showErrorIcon" | "hideErrorMessage">>;
99
+ defaultProps: Partial<Pick<NumberFieldProps, "size" | "color" | "rounded" | "variant" | "showErrorIcon" | "controlVariant" | "hideErrorMessage">>;
100
100
  }
101
101
  interface OtpFieldConfigOverrides {
102
102
  classes: OtpFieldClasses;
package/dist/index.d.ts CHANGED
@@ -87,7 +87,7 @@ export type { MenuClasses, MenuCustomProps, MenuEmits, MenuOptions, MenuOwnProps
87
87
  export { Modal, useModal } from './Components/Modal';
88
88
  export type { ModalAlignOverrides, ModalBlurOverrides, ModalClasses, ModalCustomProps, ModalEmits, ModalOwnProps, ModalProps, ModalSizeOverrides, ModalSlots, } from './Components/Modal';
89
89
  export { NumberField, useNumberField } from './Components/NumberField';
90
- export type { NumberFieldClasses, NumberFieldCustomProps, NumberFieldOwnProps, NumberFieldProps, NumberFieldSlots, } from './Components/NumberField';
90
+ export type { NumberFieldClasses, NumberFieldControlVariantOverrides, NumberFieldCustomProps, NumberFieldOwnProps, NumberFieldProps, NumberFieldSlots, } from './Components/NumberField';
91
91
  export { OtpField, useOtpField } from './Components/OtpField';
92
92
  export type { OtpFieldClasses, OtpFieldCustomProps, OtpFieldEmits, OtpFieldOwnProps, OtpFieldProps, OtpFieldSlots, UseOtpFieldOptions, } from './Components/OtpField';
93
93
  export { Pagination, usePagination } from './Components/Pagination';
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 {
package/docs/README.md CHANGED
@@ -22,6 +22,7 @@ Component reference and adapter samples for **Vue**. This folder ships with the
22
22
  - [Checkbox](./components/Checkbox.md)
23
23
  - [ColorField](./components/ColorField.md)
24
24
  - [ColorPicker](./components/ColorPicker.md)
25
+ - [DataTable](./components/DataTable.md)
25
26
  - [DateField](./components/DateField.md)
26
27
  - [DatePicker](./components/DatePicker.md)
27
28
  - [DateRangeField](./components/DateRangeField.md)
@@ -54,6 +55,7 @@ Component reference and adapter samples for **Vue**. This folder ships with the
54
55
  - [Spinner](./components/Spinner.md)
55
56
  - [Stepper](./components/Stepper.md)
56
57
  - [Switch](./components/Switch.md)
58
+ - [Table](./components/Table.md)
57
59
  - [Tabs](./components/Tabs.md)
58
60
  - [Textarea](./components/Textarea.md)
59
61
  - [TextField](./components/TextField.md)
@@ -19,7 +19,7 @@ import { CalendarDate } from "@bridge-ui/vue/Components/CalendarDate";
19
19
  range
20
20
  v-model="range"
21
21
  :view-date="month"
22
- @view-date-change="month = $event"
22
+ v-on:view-date-change="month = $event"
23
23
  />
24
24
  ```
25
25