@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.
- package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +1 -1
- package/dist/Components/Autocomplete/composables/useAutocomplete.js +112 -113
- package/dist/Components/BaseField/baseField.types.d.ts +1 -8
- package/dist/Components/BaseField/composables/useBaseField.js +79 -83
- package/dist/Components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/Components/Calendar/calendar.types.d.ts +13 -0
- package/dist/Components/Calendar/composables/useCalendar.d.ts +2 -1
- package/dist/Components/Calendar/composables/useCalendar.js +5 -2
- package/dist/Components/CalendarDate/CalendarDate.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/Components/CalendarDate/calendarDate.types.d.ts +6 -0
- package/dist/Components/CalendarDate/composables/useCalendarDate.d.ts +1 -1
- package/dist/Components/CalendarDate/composables/useCalendarDate.js +95 -87
- package/dist/Components/CalendarMonth/CalendarMonth.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/Components/CalendarMonth/calendarMonth.types.d.ts +6 -0
- package/dist/Components/CalendarMonth/composables/useCalendarMonth.d.ts +1 -1
- package/dist/Components/CalendarMonth/composables/useCalendarMonth.js +51 -43
- package/dist/Components/CalendarRange/CalendarRange.vue_vue_type_script_setup_true_lang.js +4 -2
- package/dist/Components/CalendarRange/calendarRange.types.d.ts +13 -0
- package/dist/Components/CalendarRange/composables/useCalendarRange.d.ts +3 -2
- package/dist/Components/CalendarRange/composables/useCalendarRange.js +14 -12
- package/dist/Components/CalendarYear/CalendarYear.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/Components/CalendarYear/calendarYear.types.d.ts +6 -0
- package/dist/Components/CalendarYear/composables/useCalendarYear.d.ts +1 -1
- package/dist/Components/CalendarYear/composables/useCalendarYear.js +53 -45
- package/dist/Components/Checkbox/composables/useCheckbox.js +23 -19
- package/dist/Components/DateField/DateField.vue.d.ts +1 -0
- package/dist/Components/DateField/DateField.vue_vue_type_script_setup_true_lang.js +13 -31
- package/dist/Components/DateField/composables/useDateField.d.ts +3 -4
- package/dist/Components/DateField/composables/useDateField.js +95 -107
- package/dist/Components/DateField/dateField.types.d.ts +16 -0
- package/dist/Components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +6 -0
- package/dist/Components/DatePicker/composables/useDatePicker.d.ts +1 -1
- package/dist/Components/DatePicker/composables/useDatePicker.js +4 -27
- package/dist/Components/DatePicker/datePicker.types.d.ts +13 -0
- package/dist/Components/DateRangeField/DateRangeField.vue.d.ts +1 -0
- package/dist/Components/DateRangeField/DateRangeField.vue_vue_type_script_setup_true_lang.js +39 -30
- package/dist/Components/DateRangeField/composables/useDateRangeField.d.ts +4 -3
- package/dist/Components/DateRangeField/composables/useDateRangeField.js +55 -48
- package/dist/Components/DateRangeField/dateRangeField.types.d.ts +16 -0
- package/dist/Components/DateRangePicker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +6 -0
- package/dist/Components/DateRangePicker/composables/useDateRangePicker.d.ts +1 -1
- package/dist/Components/DateRangePicker/composables/useDateRangePicker.js +5 -1
- package/dist/Components/DateRangePicker/dateRangePicker.types.d.ts +13 -0
- package/dist/Components/DateTimeField/DateTimeField.vue.d.ts +1 -0
- package/dist/Components/DateTimeField/DateTimeField.vue_vue_type_script_setup_true_lang.js +13 -6
- package/dist/Components/DateTimeField/composables/useDateTimeField.d.ts +4 -3
- package/dist/Components/DateTimeField/composables/useDateTimeField.js +64 -84
- package/dist/Components/DateTimeField/dateTimeField.types.d.ts +16 -0
- package/dist/Components/DateTimePicker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +10 -0
- package/dist/Components/DateTimePicker/composables/useDateTimePicker.d.ts +1 -1
- package/dist/Components/DateTimePicker/composables/useDateTimePicker.js +4 -2
- package/dist/Components/DateTimePicker/dateTimePicker.types.d.ts +13 -0
- package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue.d.ts +1 -0
- package/dist/Components/DateTimeRangeField/DateTimeRangeField.vue_vue_type_script_setup_true_lang.js +44 -37
- package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.d.ts +4 -3
- package/dist/Components/DateTimeRangeField/composables/useDateTimeRangeField.js +46 -66
- package/dist/Components/DateTimeRangeField/dateTimeRangeField.types.d.ts +16 -0
- package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +14 -0
- package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.d.ts +1 -1
- package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.js +7 -4
- package/dist/Components/DateTimeRangePicker/dateTimeRangePicker.types.d.ts +13 -0
- package/dist/Components/Drawer/Drawer.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/Components/FieldOverlay/composables/useFieldOverlay.js +3 -2
- package/dist/Components/FormControl/composables/useFormControl.js +61 -65
- package/dist/Components/FormControl/formControl.types.d.ts +1 -7
- package/dist/Components/FormField/composables/useFormField.js +115 -116
- package/dist/Components/FormField/formField.types.d.ts +1 -7
- package/dist/Components/Label/composables/useLabel.js +28 -28
- package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/Components/Listbox/composables/useListbox.d.ts +4 -4
- package/dist/Components/Listbox/composables/useListbox.js +28 -24
- package/dist/Components/Listbox/listbox.types.d.ts +6 -6
- package/dist/Components/Menu/Menu.vue_vue_type_script_setup_true_lang.js +3 -5
- package/dist/Components/Modal/Modal.vue_vue_type_script_setup_true_lang.js +4 -3
- package/dist/Components/OtpField/composables/useOtpField.js +95 -94
- package/dist/Components/OtpField/otpField.types.d.ts +2 -9
- package/dist/Components/Radio/composables/useRadio.js +24 -20
- package/dist/Components/Select/composables/useSelect.d.ts +1 -1
- package/dist/Components/Select/composables/useSelect.js +21 -22
- package/dist/Components/Slider/composables/useSlider.js +167 -163
- package/dist/Components/Slider/slider.types.d.ts +2 -9
- package/dist/Components/Snackbar/Snackbar.vue_vue_type_script_setup_true_lang.js +3 -2
- package/dist/Components/Switch/composables/useSwitch.js +28 -24
- package/dist/Components/TimeField/TimeField.vue.d.ts +1 -0
- package/dist/Components/TimeField/TimeField.vue_vue_type_script_setup_true_lang.js +34 -25
- package/dist/Components/TimeField/composables/useTimeField.d.ts +4 -3
- package/dist/Components/TimeField/composables/useTimeField.js +67 -60
- package/dist/Components/TimeField/timeField.types.d.ts +16 -0
- package/dist/Components/TimePanel/TimePanel.vue_vue_type_script_setup_true_lang.js +2 -0
- package/dist/Components/TimePanel/composables/useTimePanel.d.ts +1 -1
- package/dist/Components/TimePanel/composables/useTimePanel.js +71 -60
- package/dist/Components/TimePanel/timePanel.types.d.ts +13 -0
- package/dist/Components/TimePicker/TimePicker.vue_vue_type_script_setup_true_lang.js +6 -0
- package/dist/Components/TimePicker/composables/useTimePicker.d.ts +1 -1
- package/dist/Components/TimePicker/composables/useTimePicker.js +5 -1
- package/dist/Components/TimePicker/timePicker.types.d.ts +13 -0
- package/dist/Components/TimeRangeField/TimeRangeField.vue.d.ts +1 -0
- package/dist/Components/TimeRangeField/TimeRangeField.vue_vue_type_script_setup_true_lang.js +34 -25
- package/dist/Components/TimeRangeField/composables/useTimeRangeField.d.ts +4 -3
- package/dist/Components/TimeRangeField/composables/useTimeRangeField.js +88 -81
- package/dist/Components/TimeRangeField/timeRangeField.types.d.ts +16 -0
- package/dist/Components/TimeRangePicker/TimeRangePicker.vue_vue_type_script_setup_true_lang.js +10 -0
- package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.d.ts +1 -1
- package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.js +5 -1
- package/dist/Components/TimeRangePicker/timeRangePicker.types.d.ts +13 -0
- package/dist/Components/Tooltip/Tooltip.vue_vue_type_script_setup_true_lang.js +4 -6
- package/dist/Utils/index.d.ts +9 -0
- package/dist/Utils/index.js +23 -12
- package/docs/components/BaseField.md +1 -1
- package/docs/components/BridgeUIProvider.md +3 -3
- package/docs/components/Calendar.md +2 -0
- package/docs/components/CalendarDate.md +1 -0
- package/docs/components/CalendarMonth.md +1 -0
- package/docs/components/CalendarRange.md +2 -0
- package/docs/components/CalendarYear.md +17 -16
- package/docs/components/DateField.md +9 -0
- package/docs/components/DatePicker.md +2 -0
- package/docs/components/DateRangeField.md +30 -22
- package/docs/components/DateRangePicker.md +2 -0
- package/docs/components/DateTimeField.md +35 -28
- package/docs/components/DateTimePicker.md +2 -0
- package/docs/components/DateTimeRangeField.md +36 -28
- package/docs/components/DateTimeRangePicker.md +2 -0
- package/docs/components/FieldOverlay.md +4 -3
- package/docs/components/FormControl.md +1 -1
- package/docs/components/TimeField.md +24 -17
- package/docs/components/TimePanel.md +2 -0
- package/docs/components/TimePicker.md +2 -0
- package/docs/components/TimeRangeField.md +25 -17
- package/docs/components/TimeRangePicker.md +2 -0
- package/package.json +2 -2
|
@@ -734,9 +734,9 @@ export declare function useAutocomplete(props: AutocompleteOwnProps, model: Ref<
|
|
|
734
734
|
disableMaxHeight: boolean;
|
|
735
735
|
emptyMessage: string;
|
|
736
736
|
entries: ListboxEntry[];
|
|
737
|
+
error: boolean;
|
|
737
738
|
hideEmptyMessage: boolean;
|
|
738
739
|
highlightedIndex: number;
|
|
739
|
-
invalidated: boolean;
|
|
740
740
|
isSelected: (value: import('@bridge-ui/core/Domain').ListboxValue) => boolean;
|
|
741
741
|
labelledBy: string;
|
|
742
742
|
listboxId: string;
|
|
@@ -5,12 +5,12 @@ import { mergePartBind as r, resolveFieldAdornmentIconSize as i, useBridgeUIComp
|
|
|
5
5
|
import { formFieldBridgeKeys as ne, useFormField as re } from "../../FormField/composables/useFormField.js";
|
|
6
6
|
import { useListboxNavigation as ie } from "../../Listbox/composables/useListboxNavigation.js";
|
|
7
7
|
import { Comment as ae, Text as oe, computed as o, nextTick as s, onBeforeUnmount as se, onMounted as ce, ref as c, useAttrs as le, useId as ue, useSlots as de, watch as l } from "vue";
|
|
8
|
-
import { get as
|
|
9
|
-
import { commitFreeSoloValue as
|
|
10
|
-
import { listboxColorProps as
|
|
11
|
-
import { adjustAutosizeTextareaHeight as Ce, cn as
|
|
8
|
+
import { get as fe, isNil as pe, omit as me } from "es-toolkit/compat";
|
|
9
|
+
import { commitFreeSoloValue as u, createSelectAsyncSearch as he, filterListboxEntries as ge, flattenListboxOptions as d, normalizeListboxEntries as _e, normalizeSelectOptions as ve, resolveFieldOverlay as ye, resolveSelectAsyncDebounce as be, resolveSelectAsyncOptions as xe, selectValuesEqual as f } from "@bridge-ui/core/Domain";
|
|
10
|
+
import { listboxColorProps as Se } from "@bridge-ui/core/Tokens";
|
|
11
|
+
import { adjustAutosizeTextareaHeight as Ce, cn as p, getColorToken as we, mergeBridgeUILayeredClasses as Te, splitComponentProps as Ee } from "@bridge-ui/core/Utils";
|
|
12
12
|
//#region src/Components/Autocomplete/composables/useAutocomplete.ts
|
|
13
|
-
var
|
|
13
|
+
var De = [
|
|
14
14
|
"classes",
|
|
15
15
|
"loading",
|
|
16
16
|
"options",
|
|
@@ -34,13 +34,13 @@ var Ee = [
|
|
|
34
34
|
"minItemsForSearch",
|
|
35
35
|
"optionDescription"
|
|
36
36
|
];
|
|
37
|
-
function
|
|
38
|
-
let
|
|
37
|
+
function m(m, h, g, _, Oe) {
|
|
38
|
+
let ke = le(), v = de(), y = ue(), Ae = n(), b = e(), x = c(!1), S = c(""), C = c(!1), w = c(-1), T = c([]), E = c([]), D = c([]), O = c(null), k = null, je = o(() => Ee({
|
|
39
39
|
props: {
|
|
40
|
-
...
|
|
41
|
-
...
|
|
40
|
+
...ke,
|
|
41
|
+
...m
|
|
42
42
|
},
|
|
43
|
-
bridgeKeys:
|
|
43
|
+
bridgeKeys: De
|
|
44
44
|
})), A = o(() => je.value.componentProps), Me = o(() => ({ classes: A.value.classes })), { components: Ne, entry: Pe } = ee({
|
|
45
45
|
componentName: "Autocomplete",
|
|
46
46
|
props: () => Me.value
|
|
@@ -51,10 +51,10 @@ function h(h, g, _, v, De) {
|
|
|
51
51
|
optionLabel: A.value.optionLabel ?? "label",
|
|
52
52
|
optionValue: A.value.optionValue ?? "value",
|
|
53
53
|
optionDescription: A.value.optionDescription ?? "description"
|
|
54
|
-
})), P = o(() =>
|
|
54
|
+
})), P = o(() => Oe.value.length > 0 ? Oe.value.map((e) => ({
|
|
55
55
|
option: e,
|
|
56
56
|
type: "option"
|
|
57
|
-
})) :
|
|
57
|
+
})) : _e(A.value.options, N.value)), Fe = o(() => d(P.value)), F = c([]);
|
|
58
58
|
function Ie(e) {
|
|
59
59
|
if (!e || typeof e != "object") return !1;
|
|
60
60
|
let t = e.type;
|
|
@@ -63,7 +63,7 @@ function h(h, g, _, v, De) {
|
|
|
63
63
|
return n === "AutocompleteOption" || r === "AutocompleteOption";
|
|
64
64
|
}
|
|
65
65
|
function Le() {
|
|
66
|
-
return t(
|
|
66
|
+
return t(v, "default") ? (v.default?.({}) ?? []).some((e) => {
|
|
67
67
|
if (!e || typeof e != "object") return !1;
|
|
68
68
|
let t = e.type;
|
|
69
69
|
return t === ae || t === oe || t === void 0 || typeof t == "symbol" ? !1 : !Ie(e);
|
|
@@ -71,24 +71,24 @@ function h(h, g, _, v, De) {
|
|
|
71
71
|
}
|
|
72
72
|
let I = o(() => Le() && !A.value.options?.length), L = o(() => {
|
|
73
73
|
if (I.value) return [];
|
|
74
|
-
if (
|
|
75
|
-
let e =
|
|
74
|
+
if (E.value.length > 0) {
|
|
75
|
+
let e = _e(E.value, N.value);
|
|
76
76
|
return A.value.flipOptions ? [...e].reverse() : e;
|
|
77
77
|
}
|
|
78
78
|
return A.value.flipOptions ? [...P.value].reverse().map((e) => e.type === "section" ? {
|
|
79
79
|
...e,
|
|
80
80
|
options: [...e.options].reverse()
|
|
81
81
|
} : e) : P.value;
|
|
82
|
-
}), Re = o(() => I.value ? F.value :
|
|
83
|
-
let e =
|
|
84
|
-
return M.value ? Array.isArray(e) ? e : [] : !
|
|
85
|
-
}), ze = o(() =>
|
|
82
|
+
}), Re = o(() => I.value ? F.value : d(L.value)), R = o(() => {
|
|
83
|
+
let e = h.value;
|
|
84
|
+
return M.value ? Array.isArray(e) ? e : [] : !pe(e) && e !== "" ? [e] : [];
|
|
85
|
+
}), ze = o(() => ye(A.value.overlay, Ae.mobile)), z = te({
|
|
86
86
|
overlay: ze,
|
|
87
87
|
componentName: "Autocomplete",
|
|
88
88
|
showFooter: () => A.value.showFooter
|
|
89
|
-
}), Be = o(() => z.value ?
|
|
89
|
+
}), Be = o(() => z.value ? T.value : R.value), B = o(() => {
|
|
90
90
|
let e = /* @__PURE__ */ new Map();
|
|
91
|
-
for (let t of [...Re.value, ...
|
|
91
|
+
for (let t of [...Re.value, ...D.value]) e.set(t.value, t);
|
|
92
92
|
return R.value.map((t) => e.get(t) ?? {
|
|
93
93
|
value: t,
|
|
94
94
|
label: String(t)
|
|
@@ -97,33 +97,33 @@ function h(h, g, _, v, De) {
|
|
|
97
97
|
if (H.value || (A.value.searchable ?? !0)) return !0;
|
|
98
98
|
let e = A.value.minItemsForSearch ?? 11;
|
|
99
99
|
return Fe.value.length >= e;
|
|
100
|
-
}), W = o(() =>
|
|
100
|
+
}), W = o(() => x.value && U.value), He = o(() => !!A.value.loading || C.value), Ue = o(() => {
|
|
101
101
|
if (I.value) return [];
|
|
102
|
-
if (!W.value || !
|
|
103
|
-
let e =
|
|
104
|
-
return
|
|
105
|
-
}), G = o(() => I.value ? F.value :
|
|
106
|
-
|
|
102
|
+
if (!W.value || !S.value.trim()) return L.value;
|
|
103
|
+
let e = S.value.trim().toLowerCase();
|
|
104
|
+
return ge(L.value, (t) => t.label.toLowerCase().includes(e));
|
|
105
|
+
}), G = o(() => I.value ? F.value : d(Ue.value)), K = ie(() => G.value, w, y), We = o(() => m.readonly || m.disabled ? !0 : !W.value), Ge = o(() => W.value || M.value ? S.value : B.value[0]?.label ?? ""), Ke = (e) => {
|
|
106
|
+
O.value = e instanceof HTMLElement ? e : null;
|
|
107
107
|
};
|
|
108
108
|
function qe(e) {
|
|
109
109
|
e.preventDefault();
|
|
110
110
|
}
|
|
111
111
|
function Je(e) {
|
|
112
|
-
if (
|
|
112
|
+
if (m.disabled || m.readonly) return;
|
|
113
113
|
let t = e.target;
|
|
114
114
|
if (!t.closest("[data-autocomplete-clear]") && !(t.closest(".wrapper-start-slot") || t.closest(".wrapper-end-slot"))) {
|
|
115
|
-
if (!
|
|
115
|
+
if (!x.value) {
|
|
116
116
|
Z();
|
|
117
117
|
return;
|
|
118
118
|
}
|
|
119
|
-
W.value || (Q(),
|
|
119
|
+
W.value || (Q(), g.value?.focus({ preventScroll: !0 }));
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
let Ye = o(() => {
|
|
123
|
-
let e =
|
|
123
|
+
let e = me(je.value.inheritedAttrs, ["class"]), n = Ee({
|
|
124
124
|
bridgeKeys: ne,
|
|
125
125
|
props: e
|
|
126
|
-
}).componentProps, i = n.endIcon ?? (t(
|
|
126
|
+
}).componentProps, i = n.endIcon ?? (t(v, "end") ? void 0 : "chevronUpDown"), { listbox: ee, ...a } = n.customProps ?? {};
|
|
127
127
|
return {
|
|
128
128
|
...n,
|
|
129
129
|
endIcon: i,
|
|
@@ -133,11 +133,11 @@ function h(h, g, _, v, De) {
|
|
|
133
133
|
container: r(a.container, {}, {
|
|
134
134
|
ref: Ke,
|
|
135
135
|
onClick: Je,
|
|
136
|
-
class:
|
|
136
|
+
class: p({ "cursor-pointer": !m.disabled && !m.readonly && !W.value })
|
|
137
137
|
})
|
|
138
138
|
}
|
|
139
139
|
};
|
|
140
|
-
}), Xe = o(() =>
|
|
140
|
+
}), Xe = o(() => m.customProps?.listbox), q = re(() => Ye.value, {
|
|
141
141
|
size: "md",
|
|
142
142
|
rounded: "md",
|
|
143
143
|
color: "primary",
|
|
@@ -147,86 +147,86 @@ function h(h, g, _, v, De) {
|
|
|
147
147
|
componentName: "Autocomplete",
|
|
148
148
|
likeInput: () => M.value,
|
|
149
149
|
control: () => M.value ? "textarea" : "input"
|
|
150
|
-
}), Ze = o(() => V.value && Ve.value && !
|
|
150
|
+
}), Ze = o(() => V.value && Ve.value && !m.readonly && !q.isDisabled.value), J = (e) => {
|
|
151
151
|
!e || !M.value || Ce(e);
|
|
152
152
|
};
|
|
153
153
|
function Qe(e) {
|
|
154
|
-
return Be.value.some((t) =>
|
|
154
|
+
return Be.value.some((t) => f(t, e));
|
|
155
155
|
}
|
|
156
156
|
function Y(e) {
|
|
157
|
-
|
|
157
|
+
h.value = e;
|
|
158
158
|
}
|
|
159
159
|
function X(e) {
|
|
160
160
|
if (M.value) {
|
|
161
161
|
let t = Array.isArray(e) ? e : [];
|
|
162
|
-
|
|
162
|
+
_("update:modelValue", t), _("change", t);
|
|
163
163
|
return;
|
|
164
164
|
}
|
|
165
165
|
let t = e ?? "";
|
|
166
|
-
|
|
166
|
+
_("update:modelValue", t), _("change", t);
|
|
167
167
|
}
|
|
168
168
|
function Z() {
|
|
169
|
-
|
|
169
|
+
m.disabled || m.readonly || x.value || (T.value = [...R.value], x.value = !0, S.value = "", K.highlightCurrentSelection((e) => R.value.some((t) => f(t, e))), _("open"), H.value && A.value.asyncData && k?.searchImmediate(""));
|
|
170
170
|
}
|
|
171
171
|
function Q(e) {
|
|
172
172
|
k?.cancel();
|
|
173
|
-
let t =
|
|
173
|
+
let t = x.value;
|
|
174
174
|
if (t && e?.commitFreeSolo && A.value.freeSolo !== !1) {
|
|
175
|
-
let e =
|
|
175
|
+
let e = u(S.value, R.value, M.value);
|
|
176
176
|
e != null && (Y(e), X(e), M.value && s(() => {
|
|
177
|
-
J(
|
|
177
|
+
J(g.value), g.value?.focus({ preventScroll: !0 });
|
|
178
178
|
}));
|
|
179
179
|
}
|
|
180
|
-
|
|
180
|
+
S.value = "", w.value = -1, t && (x.value = !1, _("close"));
|
|
181
181
|
}
|
|
182
182
|
function $e(e) {
|
|
183
183
|
if (!e.disabled) {
|
|
184
184
|
if (z.value) {
|
|
185
185
|
if (M.value) {
|
|
186
|
-
let t = [...
|
|
187
|
-
n >= 0 ? (t.splice(n, 1),
|
|
188
|
-
|
|
186
|
+
let t = [...T.value], n = t.findIndex((t) => f(t, e.value));
|
|
187
|
+
n >= 0 ? (t.splice(n, 1), _("deselect", e)) : (t.push(e.value), _("select", e)), T.value = t, S.value = "", w.value = -1, s(() => {
|
|
188
|
+
g.value?.focus({ preventScroll: !0 });
|
|
189
189
|
});
|
|
190
190
|
return;
|
|
191
191
|
}
|
|
192
|
-
|
|
192
|
+
T.value = [e.value], _("select", e), S.value = "", w.value = -1;
|
|
193
193
|
return;
|
|
194
194
|
}
|
|
195
195
|
if (M.value) {
|
|
196
|
-
let t = [...R.value], n = t.findIndex((t) =>
|
|
197
|
-
n >= 0 ? (t.splice(n, 1),
|
|
198
|
-
J(
|
|
196
|
+
let t = [...R.value], n = t.findIndex((t) => f(t, e.value));
|
|
197
|
+
n >= 0 ? (t.splice(n, 1), _("deselect", e)) : (t.push(e.value), _("select", e)), Y(t), X(t), S.value = "", w.value = -1, s(() => {
|
|
198
|
+
J(g.value), g.value?.focus({ preventScroll: !0 });
|
|
199
199
|
});
|
|
200
200
|
return;
|
|
201
201
|
}
|
|
202
|
-
Y(e.value), X(e.value),
|
|
202
|
+
Y(e.value), X(e.value), _("select", e), Q();
|
|
203
203
|
}
|
|
204
204
|
}
|
|
205
205
|
function et() {
|
|
206
|
-
if (M.value) Y(
|
|
206
|
+
if (M.value) Y(T.value), X(T.value);
|
|
207
207
|
else {
|
|
208
|
-
let e =
|
|
208
|
+
let e = T.value[0] ?? null;
|
|
209
209
|
Y(e), X(e);
|
|
210
210
|
}
|
|
211
|
-
Q(),
|
|
211
|
+
Q(), _("apply");
|
|
212
212
|
}
|
|
213
213
|
function tt() {
|
|
214
|
-
|
|
214
|
+
T.value = [...R.value], Q(), _("cancel");
|
|
215
215
|
}
|
|
216
216
|
function nt() {
|
|
217
217
|
if (A.value.freeSolo === !1) return !1;
|
|
218
|
-
let e =
|
|
219
|
-
return e != null && (Y(e), X(e),
|
|
220
|
-
J(
|
|
218
|
+
let e = u(S.value, R.value, M.value);
|
|
219
|
+
return e != null && (Y(e), X(e), S.value = "", w.value = -1, M.value ? (s(() => {
|
|
220
|
+
J(g.value), g.value?.focus({ preventScroll: !0 });
|
|
221
221
|
}), !0) : (Q(), !0));
|
|
222
222
|
}
|
|
223
223
|
function rt(e) {
|
|
224
|
-
e?.preventDefault(), e?.stopPropagation(), !(
|
|
224
|
+
e?.preventDefault(), e?.stopPropagation(), !(m.disabled || m.readonly) && (M.value ? (Y([]), X([])) : (Y(null), X(null)), _("clear"), Q());
|
|
225
225
|
}
|
|
226
226
|
function it(e, t) {
|
|
227
227
|
if (t.preventDefault(), t.stopPropagation(), !M.value) return;
|
|
228
|
-
let n = R.value.filter((t) => !
|
|
229
|
-
Y(n), X(n),
|
|
228
|
+
let n = R.value.filter((t) => !f(t, e.value));
|
|
229
|
+
Y(n), X(n), _("deselect", e), s(() => J(g.value));
|
|
230
230
|
}
|
|
231
231
|
function at() {
|
|
232
232
|
let e = K.getHighlightedOption();
|
|
@@ -234,30 +234,30 @@ function h(h, g, _, v, De) {
|
|
|
234
234
|
}
|
|
235
235
|
function ot(e) {
|
|
236
236
|
let t = e.target;
|
|
237
|
-
|
|
237
|
+
S.value = t.value, _("search", S.value), x.value || Z(), K.resetHighlight(), H.value && k?.searchDebounced(S.value);
|
|
238
238
|
}
|
|
239
239
|
function st(e) {
|
|
240
|
-
if (!(
|
|
240
|
+
if (!(m.disabled || m.readonly)) switch (e.key) {
|
|
241
241
|
case "ArrowDown":
|
|
242
|
-
e.preventDefault(),
|
|
242
|
+
e.preventDefault(), x.value ? K.moveHighlight(1) : Z();
|
|
243
243
|
break;
|
|
244
244
|
case "ArrowUp":
|
|
245
|
-
e.preventDefault(),
|
|
245
|
+
e.preventDefault(), x.value ? K.moveHighlight(-1) : Z();
|
|
246
246
|
break;
|
|
247
247
|
case "Enter":
|
|
248
|
-
e.preventDefault(),
|
|
248
|
+
e.preventDefault(), x.value ? at() || nt() : Z();
|
|
249
249
|
break;
|
|
250
250
|
case "Escape":
|
|
251
251
|
e.preventDefault(), Q();
|
|
252
252
|
break;
|
|
253
253
|
case "Home":
|
|
254
|
-
|
|
254
|
+
x.value && (e.preventDefault(), K.highlightFirst());
|
|
255
255
|
break;
|
|
256
256
|
case "End":
|
|
257
|
-
|
|
257
|
+
x.value && (e.preventDefault(), K.highlightLast());
|
|
258
258
|
break;
|
|
259
259
|
case "Backspace":
|
|
260
|
-
if (M.value && !
|
|
260
|
+
if (M.value && !S.value && B.value.length > 0) {
|
|
261
261
|
e.preventDefault();
|
|
262
262
|
let t = B.value.at(-1);
|
|
263
263
|
t && it(t, e);
|
|
@@ -269,108 +269,107 @@ function h(h, g, _, v, De) {
|
|
|
269
269
|
async function ct(e) {
|
|
270
270
|
let t = A.value.asyncData;
|
|
271
271
|
if (t) {
|
|
272
|
-
|
|
272
|
+
C.value = !0;
|
|
273
273
|
try {
|
|
274
|
-
let { options: n, resolvedSelected: r } = await
|
|
275
|
-
r.length > 0 && (
|
|
274
|
+
let { options: n, resolvedSelected: r } = await xe(t, e, R.value, (e) => ve(e, N.value));
|
|
275
|
+
r.length > 0 && (D.value = r), E.value = n;
|
|
276
276
|
} finally {
|
|
277
|
-
|
|
277
|
+
C.value = !1;
|
|
278
278
|
}
|
|
279
279
|
}
|
|
280
280
|
}
|
|
281
281
|
async function lt() {
|
|
282
282
|
let e = A.value.asyncData;
|
|
283
|
-
!e?.resolve || R.value.length === 0 || (
|
|
283
|
+
!e?.resolve || R.value.length === 0 || (D.value = ve(await e.resolve(R.value), N.value));
|
|
284
284
|
}
|
|
285
285
|
let $ = o(() => {
|
|
286
|
-
let e =
|
|
286
|
+
let e = Te(Se, fe(Ne.value, [
|
|
287
287
|
"Autocomplete",
|
|
288
288
|
"tokens",
|
|
289
289
|
"listbox",
|
|
290
290
|
"color"
|
|
291
|
-
]))
|
|
292
|
-
return
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
])) : t;
|
|
291
|
+
]));
|
|
292
|
+
return we({
|
|
293
|
+
tokens: e,
|
|
294
|
+
color: q.merged.value.color,
|
|
295
|
+
invalid: q.invalidated.value
|
|
296
|
+
});
|
|
298
297
|
}), ut = o(() => $.value?.value), dt = o(() => {
|
|
299
|
-
let e = !
|
|
298
|
+
let e = !m.disabled && !m.readonly && !W.value, t = !m.disabled && !m.readonly && W.value && U.value, n = V.value && !M.value && !W.value;
|
|
300
299
|
return r({
|
|
301
300
|
role: "combobox",
|
|
302
301
|
value: Ge.value,
|
|
303
|
-
"aria-controls":
|
|
304
|
-
"aria-expanded":
|
|
302
|
+
"aria-controls": y,
|
|
303
|
+
"aria-expanded": x.value,
|
|
305
304
|
readonly: We.value,
|
|
306
305
|
onKeydown: st,
|
|
307
306
|
placeholder: A.value.placeholder,
|
|
308
307
|
"aria-autocomplete": U.value ? "list" : void 0,
|
|
309
|
-
"aria-activedescendant":
|
|
308
|
+
"aria-activedescendant": x.value ? K.activeDescendantId.value : void 0,
|
|
310
309
|
...M.value ? {
|
|
311
310
|
rows: 1,
|
|
312
311
|
onInput: (e) => {
|
|
313
312
|
ot(e), J(e.target);
|
|
314
313
|
}
|
|
315
314
|
} : { onInput: ot }
|
|
316
|
-
}, q.inputBind.value,
|
|
315
|
+
}, q.inputBind.value, p({
|
|
317
316
|
"cursor-text": t,
|
|
318
317
|
"cursor-pointer": e,
|
|
319
318
|
"resize-none overflow-hidden": M.value,
|
|
320
|
-
[
|
|
319
|
+
[p(ut.value, j.value.value) ?? ""]: n
|
|
321
320
|
}));
|
|
322
321
|
});
|
|
323
322
|
l(() => [
|
|
324
|
-
|
|
323
|
+
x.value,
|
|
325
324
|
M.value,
|
|
326
|
-
|
|
325
|
+
g.value
|
|
327
326
|
], () => {
|
|
328
|
-
J(
|
|
329
|
-
}, { immediate: !0 }), l(() =>
|
|
327
|
+
J(g.value);
|
|
328
|
+
}, { immediate: !0 }), l(() => h.value, () => {
|
|
330
329
|
lt();
|
|
331
330
|
}, { immediate: !0 }), l(() => A.value.asyncData, (e) => {
|
|
332
|
-
if (k?.cancel(),
|
|
331
|
+
if (k?.cancel(), E.value = [], lt(), !e) {
|
|
333
332
|
k = null;
|
|
334
333
|
return;
|
|
335
334
|
}
|
|
336
|
-
k =
|
|
335
|
+
k = he((e) => void ct(e), be(e));
|
|
337
336
|
}, { immediate: !0 }), se(() => {
|
|
338
337
|
k?.cancel();
|
|
339
338
|
}), ce(() => {
|
|
340
|
-
J(
|
|
339
|
+
J(g.value);
|
|
341
340
|
});
|
|
342
341
|
let ft = o(() => i(q.merged.value.size)), pt = o(() => r({}, {}, {
|
|
343
342
|
tabindex: 0,
|
|
344
343
|
role: "button",
|
|
345
344
|
"data-autocomplete-clear": !0,
|
|
346
345
|
onMousedown: qe,
|
|
347
|
-
class:
|
|
346
|
+
class: p({
|
|
348
347
|
"inline-flex shrink-0 cursor-pointer items-center justify-center rounded-sm transition-colors duration-150": !0,
|
|
349
348
|
[$.value?.clear ?? ""]: !0,
|
|
350
349
|
[j.value.clear ?? ""]: !0
|
|
351
350
|
})
|
|
352
351
|
})), mt = o(() => ({
|
|
353
|
-
listboxId:
|
|
352
|
+
listboxId: y,
|
|
354
353
|
isSelected: Qe,
|
|
355
354
|
disableAutoFocus: !0,
|
|
356
|
-
overlay:
|
|
355
|
+
overlay: m.overlay,
|
|
357
356
|
loading: He.value,
|
|
358
357
|
multiple: M.value,
|
|
359
|
-
maxHeight:
|
|
358
|
+
maxHeight: m.maxHeight,
|
|
360
359
|
showFooter: z.value,
|
|
361
360
|
entries: Ue.value,
|
|
362
361
|
options: G.value,
|
|
363
362
|
size: q.merged.value.size,
|
|
363
|
+
error: q.invalidated.value,
|
|
364
364
|
color: q.merged.value.color,
|
|
365
365
|
labelledBy: q.controlId.value,
|
|
366
366
|
componentName: "Autocomplete",
|
|
367
367
|
rounded: q.merged.value.rounded,
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
disableMaxHeight: h.disableMaxHeight === !0,
|
|
368
|
+
highlightedIndex: w.value,
|
|
369
|
+
disableMaxHeight: m.disableMaxHeight === !0,
|
|
371
370
|
hideEmptyMessage: A.value.hideEmptyMessage === !0,
|
|
372
|
-
emptyMessage: A.value.emptyMessage ??
|
|
373
|
-
loadingMessage: A.value.loadingMessage ??
|
|
371
|
+
emptyMessage: A.value.emptyMessage ?? b("No options"),
|
|
372
|
+
loadingMessage: A.value.loadingMessage ?? b("Loading..."),
|
|
374
373
|
...Xe.value
|
|
375
374
|
}));
|
|
376
375
|
function ht(e) {
|
|
@@ -378,10 +377,10 @@ function h(h, g, _, v, De) {
|
|
|
378
377
|
t.length === e.length && t.every((t, n) => String(t.value) === String(e[n]?.value)) || (F.value = e);
|
|
379
378
|
}
|
|
380
379
|
return {
|
|
381
|
-
slots:
|
|
380
|
+
slots: v,
|
|
382
381
|
hasValue: V,
|
|
383
382
|
multiple: M,
|
|
384
|
-
listboxId:
|
|
383
|
+
listboxId: y,
|
|
385
384
|
formField: q,
|
|
386
385
|
isLoading: He,
|
|
387
386
|
clearable: Ve,
|
|
@@ -393,7 +392,7 @@ function h(h, g, _, v, De) {
|
|
|
393
392
|
handleApply: et,
|
|
394
393
|
selectOption: $e,
|
|
395
394
|
handleCancel: tt,
|
|
396
|
-
containerRef:
|
|
395
|
+
containerRef: O,
|
|
397
396
|
listboxProps: mt,
|
|
398
397
|
clearIconSize: ft,
|
|
399
398
|
mergedClasses: j,
|
|
@@ -401,19 +400,19 @@ function h(h, g, _, v, De) {
|
|
|
401
400
|
visibleOptions: G,
|
|
402
401
|
isSearchActive: W,
|
|
403
402
|
open: o({
|
|
404
|
-
get: () =>
|
|
403
|
+
get: () => x.value,
|
|
405
404
|
set: (e) => {
|
|
406
405
|
e ? Z() : Q({ commitFreeSolo: !0 });
|
|
407
406
|
}
|
|
408
407
|
}),
|
|
409
408
|
selectedOptions: B,
|
|
410
409
|
hasComposedList: I,
|
|
411
|
-
highlightedIndex:
|
|
410
|
+
highlightedIndex: w,
|
|
412
411
|
handleRegisteredOptionsChange: ht,
|
|
413
412
|
hideEmptyMessage: o(() => A.value.hideEmptyMessage === !0),
|
|
414
|
-
emptyMessage: o(() => A.value.emptyMessage ??
|
|
415
|
-
loadingMessage: o(() => A.value.loadingMessage ??
|
|
413
|
+
emptyMessage: o(() => A.value.emptyMessage ?? b("No options")),
|
|
414
|
+
loadingMessage: o(() => A.value.loadingMessage ?? b("Loading..."))
|
|
416
415
|
};
|
|
417
416
|
}
|
|
418
417
|
//#endregion
|
|
419
|
-
export {
|
|
418
|
+
export { m as useAutocomplete };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { HTMLAttributes, Slot } from 'vue';
|
|
2
|
-
import {
|
|
2
|
+
import { BaseFieldSize } from '@bridge-ui/core/Tokens';
|
|
3
3
|
import { MergeHtmlProps, MergeProps } from '@bridge-ui/core/Utils';
|
|
4
4
|
import { UseBaseFieldReturn } from './composables/useBaseField';
|
|
5
5
|
import { LabelProps } from '../Label/label.types';
|
|
@@ -71,13 +71,6 @@ export interface BaseFieldCustomProps {
|
|
|
71
71
|
* Props forwarded to the label + corner header row.
|
|
72
72
|
*/
|
|
73
73
|
header?: HTMLAttributes;
|
|
74
|
-
/**
|
|
75
|
-
* Error-state message colors (`errorMessage`). Label colors come from `Label`
|
|
76
|
-
* when `error` is set.
|
|
77
|
-
*
|
|
78
|
-
* @default undefined
|
|
79
|
-
*/
|
|
80
|
-
invalidated?: Partial<BaseFieldInvalidated>;
|
|
81
74
|
/**
|
|
82
75
|
* Props forwarded to the primary `Label` (content stays owned by `BaseField`).
|
|
83
76
|
*
|