@bridge-ui/vue 0.0.11 → 0.1.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 (131) hide show
  1. package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +1 -1
  2. package/dist/Components/Autocomplete/composables/useAutocomplete.js +112 -113
  3. package/dist/Components/BaseField/baseField.types.d.ts +1 -8
  4. package/dist/Components/BaseField/composables/useBaseField.js +79 -83
  5. package/dist/Components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +2 -0
  6. package/dist/Components/Calendar/calendar.types.d.ts +13 -0
  7. package/dist/Components/Calendar/composables/useCalendar.d.ts +2 -1
  8. package/dist/Components/Calendar/composables/useCalendar.js +5 -2
  9. package/dist/Components/CalendarDate/CalendarDate.vue_vue_type_script_setup_true_lang.js +1 -0
  10. package/dist/Components/CalendarDate/calendarDate.types.d.ts +6 -0
  11. package/dist/Components/CalendarDate/composables/useCalendarDate.d.ts +1 -1
  12. package/dist/Components/CalendarDate/composables/useCalendarDate.js +95 -87
  13. package/dist/Components/CalendarMonth/CalendarMonth.vue_vue_type_script_setup_true_lang.js +1 -0
  14. package/dist/Components/CalendarMonth/calendarMonth.types.d.ts +6 -0
  15. package/dist/Components/CalendarMonth/composables/useCalendarMonth.d.ts +1 -1
  16. package/dist/Components/CalendarMonth/composables/useCalendarMonth.js +51 -43
  17. package/dist/Components/CalendarRange/CalendarRange.vue_vue_type_script_setup_true_lang.js +4 -2
  18. package/dist/Components/CalendarRange/calendarRange.types.d.ts +13 -0
  19. package/dist/Components/CalendarRange/composables/useCalendarRange.d.ts +3 -2
  20. package/dist/Components/CalendarRange/composables/useCalendarRange.js +14 -12
  21. package/dist/Components/CalendarYear/CalendarYear.vue_vue_type_script_setup_true_lang.js +1 -0
  22. package/dist/Components/CalendarYear/calendarYear.types.d.ts +6 -0
  23. package/dist/Components/CalendarYear/composables/useCalendarYear.d.ts +1 -1
  24. package/dist/Components/CalendarYear/composables/useCalendarYear.js +53 -45
  25. package/dist/Components/Checkbox/composables/useCheckbox.js +23 -19
  26. package/dist/Components/DateField/DateField.vue.d.ts +1 -0
  27. package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +13 -31
  28. package/dist/Components/DateField/composables/useDateField.d.ts +3 -4
  29. package/dist/Components/DateField/composables/useDateField.js +95 -107
  30. package/dist/Components/DateField/dateField.types.d.ts +16 -0
  31. package/dist/Components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +6 -0
  32. package/dist/Components/DatePicker/composables/useDatePicker.d.ts +1 -1
  33. package/dist/Components/DatePicker/composables/useDatePicker.js +4 -27
  34. package/dist/Components/DatePicker/datePicker.types.d.ts +13 -0
  35. package/dist/Components/DateRangeField/DateRangeField.vue.d.ts +1 -0
  36. package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +39 -30
  37. package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +4 -3
  38. package/dist/Components/DateRangeField/composables/useDateRangeField.js +55 -48
  39. package/dist/Components/DateRangeField/dateRangeField.types.d.ts +16 -0
  40. package/dist/Components/DateRangePicker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +6 -0
  41. package/dist/Components/DateRangePicker/composables/useDateRangePicker.d.ts +1 -1
  42. package/dist/Components/DateRangePicker/composables/useDateRangePicker.js +5 -1
  43. package/dist/Components/DateRangePicker/dateRangePicker.types.d.ts +13 -0
  44. package/dist/Components/DateTimeField/DateTimeField.vue.d.ts +1 -0
  45. package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +13 -6
  46. package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +4 -3
  47. package/dist/Components/DateTimeField/composables/useDateTimeField.js +64 -84
  48. package/dist/Components/DateTimeField/dateTimeField.types.d.ts +16 -0
  49. package/dist/Components/DateTimePicker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +10 -0
  50. package/dist/Components/DateTimePicker/composables/useDateTimePicker.d.ts +1 -1
  51. package/dist/Components/DateTimePicker/composables/useDateTimePicker.js +4 -2
  52. package/dist/Components/DateTimePicker/dateTimePicker.types.d.ts +13 -0
  53. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue.d.ts +1 -0
  54. package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +44 -37
  55. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +4 -3
  56. package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.js +46 -66
  57. package/dist/Components/DateTimeRangeField/dateTimeRangeField.types.d.ts +16 -0
  58. package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +14 -0
  59. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.d.ts +1 -1
  60. package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.js +7 -4
  61. package/dist/Components/DateTimeRangePicker/dateTimeRangePicker.types.d.ts +13 -0
  62. package/dist/Components/Drawer/Drawer.vue_vue_type_script_setup_true_lang.js +4 -3
  63. package/dist/Components/FieldOverlay/composables/useFieldOverlay.js +3 -2
  64. package/dist/Components/FormControl/composables/useFormControl.js +61 -65
  65. package/dist/Components/FormControl/formControl.types.d.ts +1 -7
  66. package/dist/Components/FormField/composables/useFormField.js +115 -116
  67. package/dist/Components/FormField/formField.types.d.ts +1 -7
  68. package/dist/Components/Label/composables/useLabel.js +28 -28
  69. package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +1 -1
  70. package/dist/Components/Listbox/composables/useListbox.d.ts +4 -4
  71. package/dist/Components/Listbox/composables/useListbox.js +28 -24
  72. package/dist/Components/Listbox/listbox.types.d.ts +6 -6
  73. package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +3 -5
  74. package/dist/Components/Modal/Modal.vue_vue_type_script_setup_true_lang.js +4 -3
  75. package/dist/Components/OtpField/composables/useOtpField.js +95 -94
  76. package/dist/Components/OtpField/otpField.types.d.ts +2 -9
  77. package/dist/Components/Radio/composables/useRadio.js +24 -20
  78. package/dist/Components/Select/composables/useSelect.d.ts +1 -1
  79. package/dist/Components/Select/composables/useSelect.js +21 -22
  80. package/dist/Components/Slider/composables/useSlider.js +167 -163
  81. package/dist/Components/Slider/slider.types.d.ts +2 -9
  82. package/dist/Components/Snackbar/Snackbar.vue_vue_type_script_setup_true_lang.js +3 -2
  83. package/dist/Components/Switch/composables/useSwitch.js +28 -24
  84. package/dist/Components/TimeField/TimeField.vue.d.ts +1 -0
  85. package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +34 -25
  86. package/dist/Components/TimeField/composables/useTimeField.d.ts +4 -3
  87. package/dist/Components/TimeField/composables/useTimeField.js +67 -60
  88. package/dist/Components/TimeField/timeField.types.d.ts +16 -0
  89. package/dist/Components/TimePanel/TimePanel.vue_vue_type_script_setup_true_lang.js +2 -0
  90. package/dist/Components/TimePanel/composables/useTimePanel.d.ts +1 -1
  91. package/dist/Components/TimePanel/composables/useTimePanel.js +71 -60
  92. package/dist/Components/TimePanel/timePanel.types.d.ts +13 -0
  93. package/dist/Components/TimePicker/TimePicker.vue_vue_type_script_setup_true_lang.js +6 -0
  94. package/dist/Components/TimePicker/composables/useTimePicker.d.ts +1 -1
  95. package/dist/Components/TimePicker/composables/useTimePicker.js +5 -1
  96. package/dist/Components/TimePicker/timePicker.types.d.ts +13 -0
  97. package/dist/Components/TimeRangeField/TimeRangeField.vue.d.ts +1 -0
  98. package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +34 -25
  99. package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +4 -3
  100. package/dist/Components/TimeRangeField/composables/useTimeRangeField.js +88 -81
  101. package/dist/Components/TimeRangeField/timeRangeField.types.d.ts +16 -0
  102. package/dist/Components/TimeRangePicker/TimeRangePicker.vue_vue_type_script_setup_true_lang.js +10 -0
  103. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.d.ts +1 -1
  104. package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.js +5 -1
  105. package/dist/Components/TimeRangePicker/timeRangePicker.types.d.ts +13 -0
  106. package/dist/Components/Tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +4 -6
  107. package/dist/Utils/index.d.ts +9 -0
  108. package/dist/Utils/index.js +23 -12
  109. package/docs/components/BaseField.md +1 -1
  110. package/docs/components/BridgeUIProvider.md +3 -3
  111. package/docs/components/Calendar.md +2 -0
  112. package/docs/components/CalendarDate.md +1 -0
  113. package/docs/components/CalendarMonth.md +1 -0
  114. package/docs/components/CalendarRange.md +2 -0
  115. package/docs/components/CalendarYear.md +17 -16
  116. package/docs/components/DateField.md +9 -0
  117. package/docs/components/DatePicker.md +2 -0
  118. package/docs/components/DateRangeField.md +30 -22
  119. package/docs/components/DateRangePicker.md +2 -0
  120. package/docs/components/DateTimeField.md +35 -28
  121. package/docs/components/DateTimePicker.md +2 -0
  122. package/docs/components/DateTimeRangeField.md +36 -28
  123. package/docs/components/DateTimeRangePicker.md +2 -0
  124. package/docs/components/FieldOverlay.md +4 -3
  125. package/docs/components/FormControl.md +1 -1
  126. package/docs/components/TimeField.md +24 -17
  127. package/docs/components/TimePanel.md +2 -0
  128. package/docs/components/TimePicker.md +2 -0
  129. package/docs/components/TimeRangeField.md +25 -17
  130. package/docs/components/TimeRangePicker.md +2 -0
  131. package/package.json +2 -2
@@ -22,6 +22,11 @@ var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"],
22
22
  customProps: {},
23
23
  defaultValue: {},
24
24
  disableTimes: {},
25
+ editable: { type: Boolean },
26
+ fill: {
27
+ type: Boolean,
28
+ default: void 0
29
+ },
25
30
  interval: {},
26
31
  maxTime: {},
27
32
  minTime: {},
@@ -74,49 +79,52 @@ var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"],
74
79
  N.value = e, L.value = e;
75
80
  },
76
81
  get: () => A(N.value) ? L.value : N.value
77
- }), { open: 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 } = o(P, R, F);
78
- return (e, o) => (x(), d(c, null, [m(T(i), { field: T(H) }, p({
79
- default: D(() => [f("div", j, [f("input", b(g(T(U))), null, 16), T(X) ? (x(), d("span", v({ key: 0 }, T(W), {
80
- onClick: o[0] ||= (...e) => T(G) && T(G)(...e),
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),
81
86
  "aria-label": T(I)("Clear"),
82
- onKeydown: [o[1] ||= O(k((...e) => T(G) && T(G)(...e), ["prevent"]), ["enter"]), o[2] ||= O(k((...e) => T(G) && T(G)(...e), ["prevent"]), ["space"])]
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"])]
83
88
  }), [m(T(n), v({
84
89
  icon: "clear",
85
- size: T(Y)
90
+ size: T(X)
86
91
  }, P.customProps?.clearIcon), null, 16, ["size"])], 16, M)) : u("", !0)])]),
87
92
  _: 2
88
93
  }, [C(T(t)(T(r), e.$slots), (t) => ({
89
94
  name: t,
90
95
  fn: D((n) => [w(e.$slots, t, b(g(n || {})))])
91
96
  }))]), 1032, ["field"]), m(T(a), {
92
- overlay: T(B),
97
+ overlay: T(V),
93
98
  "model-value": T(z),
94
- "custom-props": T(ee),
95
- "onUpdate:modelValue": T(Z)
99
+ "custom-props": T(te),
100
+ "onUpdate:modelValue": T(Q)
96
101
  }, {
97
102
  default: D(() => [m(T(s), {
98
- value: T(K),
99
- class: y(T(J)),
100
- ampm: T(V).ampm,
101
- "show-footer": T(q),
103
+ fill: T(B),
104
+ value: T(q),
105
+ class: y(T(Y)),
106
+ ampm: T(H).ampm,
107
+ "show-footer": T(J),
102
108
  "read-only": P.readonly,
103
- "max-time": T(V).maxTime,
104
- "min-time": T(V).minTime,
105
- interval: T(V).interval,
106
- "time-zone": T(V).timeZone,
107
- onChange: T(Q),
108
- onCancel: T($),
109
- "show-seconds": T(V).showSeconds,
110
- color: T(H).merged.value.color,
111
- "custom-props": T(te),
112
- disabled: T(H).isDisabled.value,
113
- "disable-times": T(V).disableTimes,
114
- rounded: T(H).merged.value.rounded
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
115
122
  }, p({ _: 2 }, [e.$slots.footer ? {
116
123
  name: "footer",
117
124
  fn: D((t) => [w(e.$slots, "footer", b(g(t)))]),
118
125
  key: "0"
119
126
  } : void 0]), 1032, [
127
+ "fill",
120
128
  "value",
121
129
  "class",
122
130
  "ampm",
@@ -129,6 +137,7 @@ var j = { class: "flex min-w-0 flex-1 items-center gap-1" }, M = ["aria-label"],
129
137
  "onChange",
130
138
  "onCancel",
131
139
  "show-seconds",
140
+ "error",
132
141
  "color",
133
142
  "custom-props",
134
143
  "disabled",
@@ -7,9 +7,10 @@ import { TimeFieldEmits, TimeFieldOwnProps } from '../timeField.types';
7
7
  */
8
8
  export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null | TimeValue | undefined>, emit: SetupContext<TimeFieldEmits>["emit"]): {
9
9
  open: Ref<boolean, boolean>;
10
+ fill: import('vue').ComputedRef<boolean>;
10
11
  overlay: import('vue').ComputedRef<import('@bridge-ui/core/Domain').FieldOverlayMode | undefined>;
11
12
  hasValue: import('vue').ComputedRef<boolean>;
12
- timeOnly: import('vue').ComputedRef<Pick<TimeFieldOwnProps & Record<string, unknown>, "classes" | "overlay" | "showFooter" | "customProps" | "clearable" | "defaultValue" | "timeZone" | "ampm" | "disableTimes" | "interval" | "maxTime" | "minTime" | "showSeconds">>;
13
+ timeOnly: import('vue').ComputedRef<Pick<TimeFieldOwnProps & Record<string, unknown>, "fill" | "classes" | "overlay" | "showFooter" | "customProps" | "clearable" | "defaultValue" | "timeZone" | "editable" | "ampm" | "disableTimes" | "interval" | "maxTime" | "minTime" | "showSeconds">>;
13
14
  formField: {
14
15
  slots: Readonly<{
15
16
  [name: string]: import('vue').Slot<any> | undefined;
@@ -686,8 +687,8 @@ export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null |
686
687
  onTransitionrun?: ((payload: TransitionEvent) => void) | undefined;
687
688
  onTransitionstart?: ((payload: TransitionEvent) => void) | undefined;
688
689
  }, Partial<Omit<Omit<FormFieldOwnProps, "field">, "error" | "color" | "end" | "size" | "classes" | "customProps" | "rounded" | "variant" | "label" | "disabled" | "required" | "corner" | "description" | "errorMessage" | "start" | "endIcon" | "errorIcon" | "hideErrorMessage" | "readonly" | "showErrorIcon" | "startIcon">>>, "class", {
689
- readonly: boolean;
690
690
  value: string;
691
+ readonly: boolean;
691
692
  onFocus: (event: FocusEvent) => void;
692
693
  onKeydown: (event: KeyboardEvent) => void;
693
694
  }, undefined>>;
@@ -702,7 +703,7 @@ export declare function useTimeField(props: TimeFieldOwnProps, model: Ref<null |
702
703
  clearValue: (event?: Event) => void;
703
704
  modelValue: import('vue').ComputedRef<Date | null>;
704
705
  showFooter: import('vue').ComputedRef<boolean>;
705
- pickerClass: import('vue').ComputedRef<"w-full shadow-none" | undefined>;
706
+ pickerClass: import('vue').ComputedRef<string | undefined>;
706
707
  containerRef: Ref<HTMLElement | null, HTMLElement | null>;
707
708
  clearIconSize: import('vue').ComputedRef<keyof import('@bridge-ui/core/Tokens').IconSize>;
708
709
  showClearIcon: import('vue').ComputedRef<boolean>;
@@ -1,20 +1,22 @@
1
1
  import { useDateAdapter as e, useDateAdapterContext as t } from "../../../Adapters/Date/useDateAdapter.js";
2
2
  import { hasNamedSlot as n } from "../../../Utils/slotOrProp.js";
3
3
  import { useBreakpoint as r } from "../../../Utils/useBreakpoint.js";
4
- import { mergePartBind as i, resolveFieldAdornmentIconSize as a, useFieldShowFooter as o } from "../../../Utils/index.js";
5
- import { formFieldBridgeKeys as s, useFormField as c } from "../../FormField/composables/useFormField.js";
6
- import { computed as l, ref as u, useAttrs as d, useSlots as f } from "vue";
7
- import { get as p, isNil as m, omit as h } from "es-toolkit/compat";
8
- import { isFieldOverlayDialog as g, resolveFieldOverlay as _ } from "@bridge-ui/core/Domain";
9
- import { listboxColorProps as v } from "@bridge-ui/core/Tokens";
10
- import { cn as y, splitComponentProps as b } from "@bridge-ui/core/Utils";
4
+ import { mergePartBind as i, resolveFieldAdornmentIconSize as a, useFieldShowFooter as o, usePickerFill as s } from "../../../Utils/index.js";
5
+ import { formFieldBridgeKeys as c, useFormField as l } from "../../FormField/composables/useFormField.js";
6
+ import { computed as u, ref as d, useAttrs as f, useSlots as p } from "vue";
7
+ import { get as m, isNil as h, omit as g } from "es-toolkit/compat";
8
+ import { resolveFieldOverlay as _, resolveFieldPickerClassName as v } from "@bridge-ui/core/Domain";
9
+ import { listboxColorProps as y } from "@bridge-ui/core/Tokens";
10
+ import { cn as b, splitComponentProps as x } from "@bridge-ui/core/Utils";
11
11
  //#region src/Components/TimeField/composables/useTimeField.ts
12
- var x = [
12
+ var S = [
13
13
  "ampm",
14
+ "fill",
14
15
  "classes",
15
16
  "maxTime",
16
17
  "minTime",
17
18
  "overlay",
19
+ "editable",
18
20
  "interval",
19
21
  "timeZone",
20
22
  "clearable",
@@ -24,86 +26,90 @@ var x = [
24
26
  "defaultValue",
25
27
  "disableTimes"
26
28
  ];
27
- function S(e, t, n, r, i) {
28
- return m(e) ? "" : t.formatTime(e, n, {
29
+ function ee(e, t, n, r, i) {
30
+ return h(e) ? "" : t.formatTime(e, n, {
29
31
  ampm: r,
30
32
  showSeconds: i
31
33
  });
32
34
  }
33
35
  function C(C, w, T) {
34
- let E = d(), D = f(), O = e(), k = r(), A = t(), j = u(!1), M = u(null), N = l(() => b({
36
+ let E = f(), D = p(), O = e(), k = r(), A = t(), j = d(!1), M = d(null), N = u(() => x({
35
37
  props: {
36
38
  ...E,
37
39
  ...C
38
40
  },
39
- bridgeKeys: x
40
- })), P = l(() => N.value.componentProps), F = l(() => A(P.value.timeZone)), I = l(() => w.value ?? null), L = l(() => P.value.clearable !== !1), R = l(() => !m(I.value)), z = l(() => _(P.value.overlay, k.mobile)), B = l(() => g(z.value) ? "w-full shadow-none" : void 0), V = (e) => {
41
+ bridgeKeys: S
42
+ })), P = u(() => N.value.componentProps), F = u(() => A(P.value.timeZone)), I = u(() => w.value ?? null), L = u(() => P.value.clearable !== !1), R = u(() => !h(I.value)), z = u(() => _(P.value.overlay, k.mobile)), B = s({
43
+ overlay: z,
44
+ componentName: "TimeField",
45
+ fill: () => P.value.fill
46
+ }), V = u(() => v(B.value, z.value)), H = (e) => {
41
47
  M.value = e instanceof HTMLElement ? e : null;
42
48
  };
43
- function H(e) {
49
+ function U(e) {
44
50
  j.value !== e && (j.value = e, T(e ? "open" : "close"));
45
51
  }
46
- let ee = l(() => h(N.value.inheritedAttrs, ["class"])), U = l(() => {
47
- let e = b({
48
- bridgeKeys: s,
49
- props: ee.value
50
- }).componentProps, t = e.endIcon ?? (n(D, "end") ? void 0 : "clock"), { menu: r, clearIcon: a, timePicker: o, ...c } = P.value.customProps ?? {};
52
+ let W = u(() => g(N.value.inheritedAttrs, ["class"])), G = u(() => {
53
+ let e = x({
54
+ bridgeKeys: c,
55
+ props: W.value
56
+ }).componentProps, t = e.endIcon ?? (n(D, "end") ? void 0 : "clock"), { menu: r, clearIcon: a, timePicker: o, ...s } = P.value.customProps ?? {};
51
57
  return {
52
58
  ...e,
53
59
  endIcon: t,
54
60
  classes: P.value.classes,
55
61
  customProps: {
56
- ...c,
57
- container: i(c.container, {}, {
58
- ref: V,
59
- class: y({ "cursor-pointer": !C.disabled && !C.readonly }),
62
+ ...s,
63
+ container: i(s.container, {}, {
64
+ ref: H,
65
+ class: b({ "cursor-pointer": !C.disabled && !C.readonly }),
60
66
  onClick: (e) => {
61
- C.disabled || C.readonly || e.target.closest("[data-field-clear]") || H(!0);
67
+ C.disabled || C.readonly || e.target.closest("[data-field-clear]") || U(!0);
62
68
  }
63
69
  })
64
70
  }
65
71
  };
66
- }), W = c(() => U.value, {
72
+ }), K = l(() => G.value, {
67
73
  size: "md",
68
74
  rounded: "md",
69
75
  color: "primary",
70
76
  variant: "outline",
71
77
  showErrorIcon: !0
72
- }, { componentName: "TimeField" }), G = l(() => R.value && L.value && !C.readonly && !W.isDisabled.value), K = l(() => S(I.value, O.value, F.value, P.value.ampm, P.value.showSeconds));
73
- function q(e) {
78
+ }, { componentName: "TimeField" }), q = u(() => R.value && L.value && !C.readonly && !K.isDisabled.value), J = u(() => ee(I.value, O.value, F.value, P.value.ampm, P.value.showSeconds));
79
+ function Y(e) {
74
80
  w.value = e, T("change", e);
75
81
  }
76
- let J = o({
82
+ let X = o({
77
83
  overlay: z,
78
84
  componentName: "TimeField",
79
85
  showFooter: () => P.value.showFooter
80
86
  });
81
- function Y(e) {
82
- if (q(e), J.value) {
87
+ function Z(e) {
88
+ if (Y(e), X.value) {
83
89
  T("apply");
84
90
  return;
85
91
  }
86
- H(!1);
92
+ U(!1);
87
93
  }
88
- function X() {
94
+ function Q() {
89
95
  T("cancel");
90
96
  }
91
- function Z(e) {
92
- e?.preventDefault(), e?.stopPropagation(), !(C.disabled || C.readonly) && (q(null), T("clear"), H(!1));
97
+ function $(e) {
98
+ e?.preventDefault(), e?.stopPropagation(), !(C.disabled || C.readonly) && (Y(null), T("clear"), U(!1));
93
99
  }
94
- function Q(e) {
100
+ function te(e) {
95
101
  e.preventDefault();
96
102
  }
97
- let $ = l(() => i({
98
- readonly: !0,
99
- value: K.value,
103
+ let ne = u(() => i({
104
+ value: J.value,
105
+ readonly: !P.value.editable || K.inputBind.value.readonly,
100
106
  onFocus: (e) => {
101
- W.inputBind.value.onFocus?.(e), H(!0);
107
+ K.inputBind.value.onFocus?.(e), U(!0);
102
108
  },
103
109
  onKeydown: (e) => {
104
- W.inputBind.value.onKeydown?.(e), e.key === "Escape" && H(!1);
110
+ K.inputBind.value.onKeydown?.(e), e.key === "Escape" && U(!1);
105
111
  }
106
- }, void 0, W.inputBind.value)), te = l(() => P.value.overlay), ne = l(() => {
112
+ }, void 0, K.inputBind.value)), re = u(() => P.value.overlay), ie = u(() => {
107
113
  let e = P.value.customProps?.menu;
108
114
  return {
109
115
  modal: P.value.customProps?.modal,
@@ -114,42 +120,43 @@ function C(C, w, T) {
114
120
  ...e,
115
121
  classes: {
116
122
  ...e?.classes,
117
- content: y("min-w-0", e?.classes?.content)
123
+ content: b("min-w-0", e?.classes?.content)
118
124
  }
119
125
  }
120
126
  };
121
- }), re = l(() => P.value.customProps?.timePicker), ie = l(() => a(W.merged.value.size)), ae = l(() => p(v, [W.merged.value.color ?? "primary", "clear"]) ?? "text-dark-400 hover:text-dark-600 dark:text-dark-500 dark:hover:text-dark-300");
127
+ }), ae = u(() => P.value.customProps?.timePicker), oe = u(() => a(K.merged.value.size)), se = u(() => m(y, [K.merged.value.color ?? "primary", "clear"]) ?? "text-dark-400 hover:text-dark-600 dark:text-dark-500 dark:hover:text-dark-300");
122
128
  return {
123
129
  open: j,
124
- overlay: te,
130
+ fill: B,
131
+ overlay: re,
125
132
  hasValue: R,
126
133
  timeOnly: P,
127
- formField: W,
128
- inputBind: $,
134
+ formField: K,
135
+ inputBind: ne,
129
136
  clearable: L,
130
- clearBind: l(() => i({}, {}, {
137
+ clearBind: u(() => i({}, {}, {
131
138
  tabindex: 0,
132
139
  role: "button",
133
140
  "data-field-clear": !0,
134
- onMousedown: Q,
135
- class: y({
141
+ onMousedown: te,
142
+ class: b({
136
143
  "inline-flex shrink-0 cursor-pointer items-center justify-center rounded-sm transition-colors duration-150": !0,
137
- [ae.value]: !0,
144
+ [se.value]: !0,
138
145
  [P.value.classes?.clear ?? ""]: !0
139
146
  })
140
147
  })),
141
- clearValue: Z,
148
+ clearValue: $,
142
149
  modelValue: I,
143
- showFooter: J,
144
- pickerClass: B,
150
+ showFooter: X,
151
+ pickerClass: V,
145
152
  containerRef: M,
146
- clearIconSize: ie,
147
- showClearIcon: G,
148
- handleOpenChange: H,
149
- handlePickerChange: Y,
150
- handlePickerCancel: X,
151
- overlayCustomProps: ne,
152
- timePickerCustomProps: re
153
+ clearIconSize: oe,
154
+ showClearIcon: q,
155
+ handleOpenChange: U,
156
+ handlePickerChange: Z,
157
+ handlePickerCancel: Q,
158
+ overlayCustomProps: ie,
159
+ timePickerCustomProps: ae
153
160
  };
154
161
  }
155
162
  //#endregion
@@ -108,6 +108,22 @@ export interface TimeFieldOwnProps extends Omit<FormFieldOwnProps, "field" | "cl
108
108
  * @default undefined
109
109
  */
110
110
  disableTimes?: DisableTimesInput;
111
+ /**
112
+ * Unlocks the input for typing. The field does not parse or commit typed
113
+ * text; use the picker (or your own component) to update the value. When
114
+ * unset, the input is read-only.
115
+ *
116
+ * @default false
117
+ */
118
+ editable?: boolean;
119
+ /**
120
+ * When `true`, the picker fills the overlay width.
121
+ * When `false`, it stays at its minimum width.
122
+ * Unset: `true` for `drawer`, `false` for `menu` and `modal`.
123
+ *
124
+ * @default undefined
125
+ */
126
+ fill?: boolean;
111
127
  /**
112
128
  * Minute step between options.
113
129
  *
@@ -12,6 +12,8 @@ var y = /*@__PURE__*/ a({
12
12
  customProps: {},
13
13
  disabled: { type: Boolean },
14
14
  disableTimes: {},
15
+ error: { type: Boolean },
16
+ fill: { type: Boolean },
15
17
  interval: {},
16
18
  maxTime: {},
17
19
  minTime: {},
@@ -22,7 +22,7 @@ export type TimePanelItem = {
22
22
  */
23
23
  export declare function useTimePanel(props: MaybeRefOrGetter<TimePanelOwnProps>, libDefaults: TimePanelLibDefaults, emit: (event: "change", value: Date | null) => void): {
24
24
  merged: import('vue').ComputedRef<TimePanelMerged>;
25
- rootBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, Partial<Omit<TimePanelOwnProps, "color" | "value" | "classes" | "tokens" | "customProps" | "rounded" | "disabled" | "readOnly" | "timeZone" | "ampm" | "disableTimes" | "interval" | "maxTime" | "minTime" | "showSeconds">>>>;
25
+ rootBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, Partial<Omit<TimePanelOwnProps, "error" | "color" | "fill" | "value" | "classes" | "tokens" | "customProps" | "rounded" | "disabled" | "readOnly" | "timeZone" | "ampm" | "disableTimes" | "interval" | "maxTime" | "minTime" | "showSeconds">>>>;
26
26
  hourItems: import('vue').ComputedRef<TimePanelItem[]>;
27
27
  columnBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
28
28
  getHourBind: (item: TimePanelItem) => import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').ButtonHTMLAttributes | undefined, {
@@ -3,12 +3,14 @@ import { mergePartBind as n, useBridgeUIComponent as r, useBridgeUIMergedRegistr
3
3
  import { computed as a, toValue as o, useAttrs as s } from "vue";
4
4
  import { get as c, omit as l } from "es-toolkit/compat";
5
5
  import { buildHourOptions as u, buildMinuteOptions as d, buildSecondOptions as f, isTimeDisabled as p, resolveCalendarDayInteractionState as m, snapMinutes as h, to12Hour as g, to24Hour as _, toMeridiem as v } from "@bridge-ui/core/Domain";
6
- import { timeColorProps as ee, timeRoundedProps as y } from "@bridge-ui/core/Tokens";
7
- import { cn as b, mergeBridgeUILayeredClasses as x, splitComponentProps as S } from "@bridge-ui/core/Utils";
6
+ import { timeColorProps as y, timeRoundedProps as b } from "@bridge-ui/core/Tokens";
7
+ import { cn as x, getColorToken as S, mergeBridgeUILayeredClasses as C, splitComponentProps as ee } from "@bridge-ui/core/Utils";
8
8
  //#region src/Components/TimePanel/composables/useTimePanel.ts
9
- var C = [
9
+ var te = [
10
10
  "ampm",
11
+ "fill",
11
12
  "color",
13
+ "error",
12
14
  "value",
13
15
  "tokens",
14
16
  "classes",
@@ -24,8 +26,8 @@ var C = [
24
26
  "disableTimes"
25
27
  ], w = "w-[3.75rem]", T = "min-w-[3.75rem]";
26
28
  function E(w, E, D) {
27
- let O = s(), k = e(), A = t(), j = a(() => S({
28
- bridgeKeys: C,
29
+ let O = s(), k = e(), A = t(), j = a(() => ee({
30
+ bridgeKeys: te,
29
31
  props: {
30
32
  ...O,
31
33
  ...o(w)
@@ -36,38 +38,45 @@ function E(w, E, D) {
36
38
  }), N = a(() => M.value.customProps), P = a(() => l(j.value.inheritedAttrs, ["onChange"])), F = i({
37
39
  props: () => j.value.componentProps,
38
40
  entry: a(() => {})
39
- }), I = a(() => A(M.value.timeZone)), L = a(() => x(ee, M.value.tokens?.color)), R = a(() => {
40
- let e = x(y, M.value.tokens?.rounded);
41
+ }), I = a(() => A(M.value.timeZone)), L = a(() => {
42
+ let e = C(b, M.value.tokens?.rounded);
41
43
  return c(e, M.value.rounded);
42
- }), z = a(() => c(L.value, M.value.color)), B = a(() => {
44
+ }), R = a(() => {
45
+ let e = C(y, M.value.tokens?.color);
46
+ return S({
47
+ tokens: e,
48
+ color: M.value.color,
49
+ invalid: M.value.error
50
+ });
51
+ }), z = a(() => {
43
52
  let e = M.value.value ?? k.value.now(I.value), t = h(k.value.getMinutes(e, I.value), M.value.interval), n = M.value.showSeconds ? k.value.getSeconds(e, I.value) : 0, r = k.value.setHours(e, k.value.getHours(e, I.value), I.value);
44
53
  return r = k.value.setMinutes(r, t, I.value), r = k.value.setSeconds(r, n, I.value), r;
45
- }), V = a(() => u({ ampm: M.value.ampm })), te = a(() => d({ interval: M.value.interval })), H = a(() => f()), U = a(() => v(k.value.getHours(B.value, I.value))), W = (e) => !!M.value.disabled || p(e, {
54
+ }), ne = a(() => u({ ampm: M.value.ampm })), B = a(() => d({ interval: M.value.interval })), V = a(() => f()), H = a(() => v(k.value.getHours(z.value, I.value))), U = (e) => !!M.value.disabled || p(e, {
46
55
  adapter: k.value,
47
56
  context: I.value,
48
57
  maxTime: M.value.maxTime,
49
58
  minTime: M.value.minTime,
50
59
  disableTimes: M.value.disableTimes
51
- }), G = (e) => {
52
- M.value.disabled || M.value.readOnly || W(e) || D("change", e);
60
+ }), W = (e) => {
61
+ M.value.disabled || M.value.readOnly || U(e) || D("change", e);
62
+ }, G = (e) => {
63
+ let t = M.value.ampm ? _(e, H.value) : e, n = k.value.setHours(z.value, t, I.value);
64
+ n = k.value.setMinutes(n, k.value.getMinutes(z.value, I.value), I.value), W(n);
53
65
  }, K = (e) => {
54
- let t = M.value.ampm ? _(e, U.value) : e, n = k.value.setHours(B.value, t, I.value);
55
- n = k.value.setMinutes(n, k.value.getMinutes(B.value, I.value), I.value), G(n);
66
+ let t = k.value.setMinutes(z.value, e, I.value);
67
+ W(t);
56
68
  }, q = (e) => {
57
- let t = k.value.setMinutes(B.value, e, I.value);
58
- G(t);
69
+ let t = k.value.setSeconds(z.value, e, I.value);
70
+ W(t);
59
71
  }, J = (e) => {
60
- let t = k.value.setSeconds(B.value, e, I.value);
61
- G(t);
62
- }, Y = (e) => {
63
- let t = g(k.value.getHours(B.value, I.value)), n = _(t, e), r = k.value.setHours(B.value, n, I.value);
64
- r = k.value.setMinutes(r, k.value.getMinutes(B.value, I.value), I.value), G(r);
65
- }, X = a(() => {
66
- let e = k.value.getHours(B.value, I.value), t = M.value.ampm ? g(e) : e;
67
- return V.value.map((e) => {
68
- let n = M.value.ampm ? _(e, U.value) : e, r = k.value.setHours(B.value, n, I.value);
69
- r = k.value.setMinutes(r, k.value.getMinutes(B.value, I.value), I.value);
70
- let i = W(r), a = e === t;
72
+ let t = g(k.value.getHours(z.value, I.value)), n = _(t, e), r = k.value.setHours(z.value, n, I.value);
73
+ r = k.value.setMinutes(r, k.value.getMinutes(z.value, I.value), I.value), W(r);
74
+ }, Y = a(() => {
75
+ let e = k.value.getHours(z.value, I.value), t = M.value.ampm ? g(e) : e;
76
+ return ne.value.map((e) => {
77
+ let n = M.value.ampm ? _(e, H.value) : e, r = k.value.setHours(z.value, n, I.value);
78
+ r = k.value.setMinutes(r, k.value.getMinutes(z.value, I.value), I.value);
79
+ let i = U(r), a = e === t;
71
80
  return {
72
81
  state: m({
73
82
  disabled: i,
@@ -80,10 +89,10 @@ function E(w, E, D) {
80
89
  label: M.value.ampm ? String(e) : String(e).padStart(2, "0")
81
90
  };
82
91
  });
83
- }), Z = a(() => {
84
- let e = k.value.getMinutes(B.value, I.value);
85
- return te.value.map((t) => {
86
- let n = k.value.setMinutes(B.value, t, I.value), r = W(n), i = t === e;
92
+ }), X = a(() => {
93
+ let e = k.value.getMinutes(z.value, I.value);
94
+ return B.value.map((t) => {
95
+ let n = k.value.setMinutes(z.value, t, I.value), r = U(n), i = t === e;
87
96
  return {
88
97
  state: m({
89
98
  disabled: r,
@@ -96,11 +105,11 @@ function E(w, E, D) {
96
105
  disabled: r || !!M.value.readOnly
97
106
  };
98
107
  });
99
- }), Q = a(() => {
108
+ }), Z = a(() => {
100
109
  if (!M.value.showSeconds) return [];
101
- let e = k.value.getSeconds(B.value, I.value);
102
- return H.value.map((t) => {
103
- let n = k.value.setSeconds(B.value, t, I.value), r = W(n), i = t === e;
110
+ let e = k.value.getSeconds(z.value, I.value);
111
+ return V.value.map((t) => {
112
+ let n = k.value.setSeconds(z.value, t, I.value), r = U(n), i = t === e;
104
113
  return {
105
114
  state: m({
106
115
  disabled: r,
@@ -113,10 +122,10 @@ function E(w, E, D) {
113
122
  disabled: r || !!M.value.readOnly
114
123
  };
115
124
  });
116
- }), ne = a(() => M.value.ampm ? ["AM", "PM"].map((e) => {
117
- let t = g(k.value.getHours(B.value, I.value)), n = _(t, e), r = k.value.setHours(B.value, n, I.value);
118
- r = k.value.setMinutes(r, k.value.getMinutes(B.value, I.value), I.value);
119
- let i = W(r), a = e === U.value;
125
+ }), re = a(() => M.value.ampm ? ["AM", "PM"].map((e) => {
126
+ let t = g(k.value.getHours(z.value, I.value)), n = _(t, e), r = k.value.setHours(z.value, n, I.value);
127
+ r = k.value.setMinutes(r, k.value.getMinutes(z.value, I.value), I.value);
128
+ let i = U(r), a = e === H.value;
120
129
  return {
121
130
  state: m({
122
131
  disabled: i,
@@ -128,52 +137,54 @@ function E(w, E, D) {
128
137
  value: e,
129
138
  disabled: i || !!M.value.readOnly
130
139
  };
131
- }) : []), re = a(() => n(N.value?.root, P.value, b({
132
- "flex h-72 w-full min-w-fit flex-row gap-2": !0,
140
+ }) : []), ie = a(() => n(N.value?.root, P.value, x({
141
+ "flex h-72 flex-row gap-2": !0,
142
+ "w-full min-w-fit": M.value.fill,
143
+ "w-fit min-w-fit": !M.value.fill,
133
144
  [F.value.root ?? ""]: !0
134
- }))), ie = a(() => n(N.value?.column, {}, b({
145
+ }))), ae = a(() => n(N.value?.column, {}, x({
135
146
  "box-border flex h-full min-w-0 flex-1 flex-col items-stretch gap-1 overflow-x-hidden overflow-y-auto [scrollbar-width:thin] [&::-webkit-scrollbar]:w-1.5 [&::-webkit-scrollbar-button]:hidden [&::-webkit-scrollbar-corner]:bg-transparent [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-dark-300 dark:[&::-webkit-scrollbar-thumb]:bg-dark-600": !0,
136
147
  [T]: !0,
137
148
  [F.value.column ?? ""]: !0
138
- }))), $ = (e, t) => {
139
- let r = z.value;
149
+ }))), Q = (e, t) => {
150
+ let r = R.value;
140
151
  return n(N.value?.item, {
141
152
  type: "button",
142
153
  disabled: e.disabled,
143
154
  "aria-pressed": e.selected,
144
155
  onClick: () => t(e.value)
145
- }, b({
156
+ }, x({
146
157
  "w-full cursor-pointer px-3 py-2 text-sm transition-all duration-150 ease-in-out outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:cursor-not-allowed": !0,
147
- [R.value ?? ""]: !0,
158
+ [L.value ?? ""]: !0,
148
159
  [r?.base ?? ""]: e.state === "base" || e.state === "hover",
149
160
  [r?.hover ?? ""]: e.state === "base" || e.state === "hover",
150
161
  [r?.selected ?? ""]: e.state === "selected",
151
162
  [r?.disabled ?? ""]: e.state === "disabled",
152
163
  [F.value.item ?? ""]: !0
153
164
  }));
154
- }, ae = (e) => $(e, (e) => {
165
+ }, oe = (e) => Q(e, (e) => {
166
+ typeof e == "number" && G(e);
167
+ }), $ = (e) => Q(e, (e) => {
155
168
  typeof e == "number" && K(e);
156
- }), oe = (e) => $(e, (e) => {
169
+ }), se = (e) => Q(e, (e) => {
157
170
  typeof e == "number" && q(e);
158
- }), se = (e) => $(e, (e) => {
159
- typeof e == "number" && J(e);
160
- }), ce = (e) => $(e, (e) => {
161
- (e === "AM" || e === "PM") && Y(e);
171
+ }), ce = (e) => Q(e, (e) => {
172
+ (e === "AM" || e === "PM") && J(e);
162
173
  }), le = a(() => !!M.value.ampm);
163
174
  return {
164
175
  merged: M,
165
- rootBind: re,
166
- hourItems: X,
167
- columnBind: ie,
168
- getHourBind: ae,
169
- minuteItems: Z,
170
- secondItems: Q,
171
- displayDate: B,
176
+ rootBind: ie,
177
+ hourItems: Y,
178
+ columnBind: ae,
179
+ getHourBind: oe,
180
+ minuteItems: X,
181
+ secondItems: Z,
182
+ displayDate: z,
172
183
  showSeconds: a(() => !!M.value.showSeconds),
173
184
  showMeridiem: le,
174
- getMinuteBind: oe,
185
+ getMinuteBind: $,
175
186
  getSecondBind: se,
176
- meridiemItems: ne,
187
+ meridiemItems: re,
177
188
  getMeridiemBind: ce
178
189
  };
179
190
  }
@@ -91,6 +91,19 @@ export interface TimePanelOwnProps {
91
91
  * @default undefined
92
92
  */
93
93
  disableTimes?: DisableTimesInput;
94
+ /**
95
+ * When `true`, applies the error color palette to tiles.
96
+ *
97
+ * @default false
98
+ */
99
+ error?: boolean;
100
+ /**
101
+ * When `true`, fills the container width.
102
+ * When `false` or unset, stays at the minimum width.
103
+ *
104
+ * @default false
105
+ */
106
+ fill?: boolean;
94
107
  /**
95
108
  * Minute step between options.
96
109
  *