@bridge-ui/vue 0.1.0 → 0.2.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/ai/skills/bridge-ui-components/SKILL.md +6 -3
- package/ai/skills/bridge-ui-forms/SKILL.md +4 -2
- package/dist/Components/Autocomplete/composables/useAutocomplete.d.ts +0 -1
- package/dist/Components/Autocomplete/composables/useAutocomplete.js +0 -1
- package/dist/Components/Calendar/Calendar.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/Components/Calendar/calendar.types.d.ts +1 -21
- package/dist/Components/Calendar/composables/useCalendar.d.ts +1 -2
- package/dist/Components/Calendar/composables/useCalendar.js +97 -97
- package/dist/Components/Calendar/index.d.ts +1 -1
- package/dist/Components/CalendarDate/CalendarDate.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/Components/CalendarDate/calendarDate.types.d.ts +1 -21
- package/dist/Components/CalendarDate/composables/useCalendarDate.d.ts +1 -1
- package/dist/Components/CalendarDate/composables/useCalendarDate.js +73 -73
- package/dist/Components/CalendarDate/index.d.ts +1 -1
- package/dist/Components/CalendarMonth/CalendarMonth.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/Components/CalendarMonth/calendarMonth.types.d.ts +1 -17
- package/dist/Components/CalendarMonth/composables/useCalendarMonth.d.ts +1 -1
- package/dist/Components/CalendarMonth/composables/useCalendarMonth.js +25 -25
- package/dist/Components/CalendarMonth/index.d.ts +1 -1
- package/dist/Components/CalendarRange/CalendarRange.vue_vue_type_script_setup_true_lang.js +135 -110
- package/dist/Components/CalendarRange/calendarRange.types.d.ts +18 -26
- package/dist/Components/CalendarRange/composables/useCalendarRange.d.ts +5 -4
- package/dist/Components/CalendarRange/composables/useCalendarRange.js +127 -129
- package/dist/Components/CalendarRange/index.d.ts +1 -1
- package/dist/Components/CalendarYear/CalendarYear.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/Components/CalendarYear/calendarYear.types.d.ts +1 -17
- package/dist/Components/CalendarYear/composables/useCalendarYear.d.ts +1 -1
- package/dist/Components/CalendarYear/composables/useCalendarYear.js +27 -27
- package/dist/Components/CalendarYear/index.d.ts +1 -1
- package/dist/Components/ColorField/ColorField.js +5 -0
- package/dist/Components/ColorField/ColorField.vue.d.ts +38 -0
- package/dist/Components/ColorField/ColorField.vue_vue_type_script_setup_true_lang.js +149 -0
- package/dist/Components/ColorField/colorField.types.d.ts +179 -0
- package/dist/Components/ColorField/composables/useColorField.d.ts +748 -0
- package/dist/Components/ColorField/composables/useColorField.js +182 -0
- package/dist/Components/ColorField/index.d.ts +3 -0
- package/dist/Components/ColorField/index.js +3 -0
- package/dist/Components/ColorPicker/ColorPicker.js +5 -0
- package/dist/Components/ColorPicker/ColorPicker.vue.d.ts +21 -0
- package/dist/Components/ColorPicker/ColorPicker.vue_vue_type_script_setup_true_lang.js +91 -0
- package/dist/Components/ColorPicker/colorPicker.types.d.ts +200 -0
- package/dist/Components/ColorPicker/composables/useColorPicker.d.ts +111 -0
- package/dist/Components/ColorPicker/composables/useColorPicker.js +253 -0
- package/dist/Components/ColorPicker/index.d.ts +3 -0
- package/dist/Components/ColorPicker/index.js +3 -0
- package/dist/Components/DatePicker/DatePicker.vue_vue_type_script_setup_true_lang.js +4 -7
- package/dist/Components/DatePicker/composables/useDatePicker.d.ts +1 -6
- package/dist/Components/DatePicker/composables/useDatePicker.js +30 -9
- package/dist/Components/DatePicker/datePicker.types.d.ts +1 -29
- package/dist/Components/DatePicker/index.d.ts +1 -1
- package/dist/Components/DateRangePicker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +4 -7
- package/dist/Components/DateRangePicker/composables/useDateRangePicker.d.ts +1 -6
- package/dist/Components/DateRangePicker/composables/useDateRangePicker.js +3 -9
- package/dist/Components/DateRangePicker/dateRangePicker.types.d.ts +1 -29
- package/dist/Components/DateRangePicker/index.d.ts +1 -1
- package/dist/Components/DateTimePicker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +16 -21
- package/dist/Components/DateTimePicker/composables/useDateTimePicker.d.ts +1 -10
- package/dist/Components/DateTimePicker/composables/useDateTimePicker.js +30 -39
- package/dist/Components/DateTimePicker/dateTimePicker.types.d.ts +1 -36
- package/dist/Components/DateTimePicker/index.d.ts +1 -1
- package/dist/Components/DateTimeRangePicker/DateTimeRangePicker.vue_vue_type_script_setup_true_lang.js +21 -33
- package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.d.ts +1 -10
- package/dist/Components/DateTimeRangePicker/composables/useDateTimeRangePicker.js +34 -43
- package/dist/Components/DateTimeRangePicker/dateTimeRangePicker.types.d.ts +1 -36
- package/dist/Components/DateTimeRangePicker/index.d.ts +1 -1
- package/dist/Components/Drawer/composables/useDrawer.js +1 -1
- package/dist/Components/FieldOverlay/FieldOverlay.vue_vue_type_script_setup_true_lang.js +35 -35
- package/dist/Components/FieldOverlay/composables/useFieldOverlay.d.ts +1 -0
- package/dist/Components/FieldOverlay/composables/useFieldOverlay.js +30 -21
- package/dist/Components/FieldOverlay/fieldOverlay.types.d.ts +14 -3
- package/dist/Components/FormField/composables/useFormField.d.ts +1 -1
- package/dist/Components/Listbox/Listbox.vue_vue_type_script_setup_true_lang.js +1 -2
- package/dist/Components/Listbox/composables/useListbox.d.ts +1 -10
- package/dist/Components/Listbox/composables/useListbox.js +51 -52
- package/dist/Components/Listbox/index.d.ts +0 -1
- package/dist/Components/Listbox/listbox.types.d.ts +0 -6
- package/dist/Components/Modal/composables/useModal.js +1 -1
- package/dist/Components/Select/composables/useSelect.d.ts +0 -1
- package/dist/Components/Select/composables/useSelect.js +0 -1
- package/dist/Components/Step/Step.js +5 -0
- package/dist/Components/Step/Step.vue.d.ts +11 -0
- package/dist/Components/Step/Step.vue_vue_type_script_setup_true_lang.js +32 -0
- package/dist/Components/Step/composables/useStep.d.ts +56 -0
- package/dist/Components/Step/composables/useStep.js +162 -0
- package/dist/Components/Step/index.d.ts +3 -0
- package/dist/Components/Step/index.js +3 -0
- package/dist/Components/Step/step.types.d.ts +160 -0
- package/dist/Components/Stepper/Stepper.js +5 -0
- package/dist/Components/Stepper/Stepper.vue.d.ts +24 -0
- package/dist/Components/Stepper/Stepper.vue_vue_type_script_setup_true_lang.js +33 -0
- package/dist/Components/Stepper/composables/useStepper.d.ts +18 -0
- package/dist/Components/Stepper/composables/useStepper.js +91 -0
- package/dist/Components/Stepper/index.d.ts +4 -0
- package/dist/Components/Stepper/index.js +4 -0
- package/dist/Components/Stepper/stepper.types.d.ts +93 -0
- package/dist/Components/Stepper/stepperInjectionKey.d.ts +77 -0
- package/dist/Components/Stepper/stepperInjectionKey.js +4 -0
- package/dist/Components/TimePanel/TimePanel.vue_vue_type_script_setup_true_lang.js +0 -1
- package/dist/Components/TimePanel/composables/useTimePanel.d.ts +5 -1
- package/dist/Components/TimePanel/composables/useTimePanel.js +82 -81
- package/dist/Components/TimePanel/index.d.ts +1 -1
- package/dist/Components/TimePanel/timePanel.types.d.ts +1 -17
- package/dist/Components/TimePicker/TimePicker.vue_vue_type_script_setup_true_lang.js +10 -13
- package/dist/Components/TimePicker/composables/useTimePicker.d.ts +1 -5
- package/dist/Components/TimePicker/composables/useTimePicker.js +12 -17
- package/dist/Components/TimePicker/index.d.ts +1 -1
- package/dist/Components/TimePicker/timePicker.types.d.ts +1 -24
- package/dist/Components/TimeRangePicker/TimeRangePicker.vue_vue_type_script_setup_true_lang.js +103 -94
- package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.d.ts +4 -6
- package/dist/Components/TimeRangePicker/composables/useTimeRangePicker.js +61 -65
- package/dist/Components/TimeRangePicker/index.d.ts +1 -1
- package/dist/Components/TimeRangePicker/timeRangePicker.types.d.ts +2 -31
- package/dist/index.d.ts +20 -12
- package/dist/index.js +95 -87
- package/dist/theme.css +2 -0
- package/docs/README.md +7 -0
- package/docs/ScrollUtilities.md +89 -0
- package/docs/components/Autocomplete.md +3 -1
- package/docs/components/BridgeUIProvider.md +9 -11
- package/docs/components/Calendar.md +2 -1
- package/docs/components/CalendarDate.md +2 -1
- package/docs/components/CalendarMonth.md +2 -1
- package/docs/components/CalendarRange.md +6 -4
- package/docs/components/CalendarYear.md +2 -1
- package/docs/components/ColorField.md +93 -0
- package/docs/components/ColorPicker.md +78 -0
- package/docs/components/DatePicker.md +2 -1
- package/docs/components/DateRangePicker.md +5 -3
- package/docs/components/DateTimePicker.md +2 -1
- package/docs/components/DateTimeRangePicker.md +2 -1
- package/docs/components/Drawer.md +21 -21
- package/docs/components/FieldOverlay.md +20 -9
- package/docs/components/Modal.md +19 -19
- package/docs/components/Select.md +3 -1
- package/docs/components/Stepper.md +60 -0
- package/docs/components/TimePanel.md +4 -1
- package/docs/components/TimePicker.md +2 -1
- package/docs/components/TimeRangePicker.md +2 -2
- package/docs/examples/icon-fontawesome.ts +2 -0
- package/docs/examples/icon-heroicons.ts +2 -0
- package/docs/examples/icon-lucide.ts +2 -0
- package/docs/examples/icon-phosphor.ts +2 -0
- package/docs/examples/icon-tabler.ts +2 -0
- package/package.json +2 -2
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
import { hasNamedSlot as e } from "../../../Utils/slotOrProp.js";
|
|
2
|
+
import { useBreakpoint as t } from "../../../Utils/useBreakpoint.js";
|
|
3
|
+
import { mergePartBind as n, resolveFieldAdornmentIconSize as r, useFieldShowFooter as i, usePickerFill as a } from "../../../Utils/index.js";
|
|
4
|
+
import { formFieldBridgeKeys as ee, useFormField as te } from "../../FormField/composables/useFormField.js";
|
|
5
|
+
import { computed as o, ref as s, useAttrs as ne, useSlots as c } from "vue";
|
|
6
|
+
import { get as l, isNil as u, omit as d } from "es-toolkit/compat";
|
|
7
|
+
import { DEFAULT_COLOR_FORMAT as f, formatColor as p, normalizeColorValue as m, parseColor as h, resolveFieldOverlay as g, resolveFieldPickerClassName as _, toCssRgba as v } from "@bridge-ui/core/Domain";
|
|
8
|
+
import { colorPickerRoundedProps as y, colorPickerSizeProps as b, listboxColorProps as x } from "@bridge-ui/core/Tokens";
|
|
9
|
+
import { cn as S, splitComponentProps as C } from "@bridge-ui/core/Utils";
|
|
10
|
+
//#region src/Components/ColorField/composables/useColorField.ts
|
|
11
|
+
var re = [
|
|
12
|
+
"fill",
|
|
13
|
+
"alpha",
|
|
14
|
+
"format",
|
|
15
|
+
"classes",
|
|
16
|
+
"overlay",
|
|
17
|
+
"editable",
|
|
18
|
+
"swatches",
|
|
19
|
+
"clearable",
|
|
20
|
+
"showFooter",
|
|
21
|
+
"showSwatch",
|
|
22
|
+
"customProps",
|
|
23
|
+
"defaultValue"
|
|
24
|
+
], ie = "bg-[image:repeating-conic-gradient(#d1d5db_0%_25%,#ffffff_0%_50%)] bg-[size:0.5rem_0.5rem] dark:bg-[image:repeating-conic-gradient(#4b5563_0%_25%,#1f2937_0%_50%)]";
|
|
25
|
+
function ae(e, t) {
|
|
26
|
+
if (u(e) || e.length === 0) return "";
|
|
27
|
+
let n = h(e);
|
|
28
|
+
return n ? p(n, t) : e;
|
|
29
|
+
}
|
|
30
|
+
function w(p, w, T) {
|
|
31
|
+
let oe = ne(), E = c(), D = t(), O = s(!1), k = s(null), A = s(null), j = o(() => C({
|
|
32
|
+
props: {
|
|
33
|
+
...oe,
|
|
34
|
+
...p
|
|
35
|
+
},
|
|
36
|
+
bridgeKeys: re
|
|
37
|
+
})), M = o(() => j.value.componentProps), N = o(() => w.value ?? null), P = o(() => M.value.format ?? f), F = o(() => M.value.clearable !== !1), I = o(() => M.value.showSwatch !== !1), L = o(() => !u(N.value) && N.value.length > 0), R = o(() => g(M.value.overlay, D.mobile)), z = a({
|
|
38
|
+
overlay: R,
|
|
39
|
+
componentName: "ColorField",
|
|
40
|
+
fill: () => M.value.fill
|
|
41
|
+
}), B = o(() => _(z.value, R.value)), V = (e) => {
|
|
42
|
+
k.value = e instanceof HTMLElement ? e : null;
|
|
43
|
+
};
|
|
44
|
+
function H(e) {
|
|
45
|
+
O.value !== e && (O.value = e, T(e ? "open" : "close"));
|
|
46
|
+
}
|
|
47
|
+
let U = o(() => d(j.value.inheritedAttrs, ["class"])), W = o(() => {
|
|
48
|
+
let t = C({
|
|
49
|
+
bridgeKeys: ee,
|
|
50
|
+
props: U.value
|
|
51
|
+
}).componentProps, r = t.endIcon ?? (e(E, "end") ? void 0 : "palette"), { menu: i, swatch: a, clearIcon: te, colorPicker: o, ...s } = M.value.customProps ?? {};
|
|
52
|
+
return {
|
|
53
|
+
...t,
|
|
54
|
+
endIcon: r,
|
|
55
|
+
classes: M.value.classes,
|
|
56
|
+
customProps: {
|
|
57
|
+
...s,
|
|
58
|
+
container: n(s.container, {}, {
|
|
59
|
+
ref: V,
|
|
60
|
+
class: S({ "cursor-pointer": !p.disabled && !p.readonly }),
|
|
61
|
+
onClick: (e) => {
|
|
62
|
+
p.disabled || p.readonly || e.target.closest("[data-field-clear]") || H(!0);
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
}), G = te(() => W.value, {
|
|
68
|
+
size: "md",
|
|
69
|
+
rounded: "md",
|
|
70
|
+
color: "primary",
|
|
71
|
+
variant: "outline",
|
|
72
|
+
showErrorIcon: !0
|
|
73
|
+
}, { componentName: "ColorField" }), K = o(() => L.value && F.value && !p.readonly && !G.isDisabled.value), q = o(() => A.value === null ? ae(N.value, P.value) : A.value), J = o(() => h(N.value)), Y = o(() => J.value ? v(J.value) : void 0);
|
|
74
|
+
function X(e) {
|
|
75
|
+
w.value = e, A.value = null, T("change", e);
|
|
76
|
+
}
|
|
77
|
+
function Z(e) {
|
|
78
|
+
let t = e.trim();
|
|
79
|
+
if (t.length === 0) {
|
|
80
|
+
X(null);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
let n = m(t, P.value);
|
|
84
|
+
if (!n) {
|
|
85
|
+
A.value = null;
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
X(n);
|
|
89
|
+
}
|
|
90
|
+
let Q = i({
|
|
91
|
+
overlay: R,
|
|
92
|
+
componentName: "ColorField",
|
|
93
|
+
showFooter: () => M.value.showFooter
|
|
94
|
+
});
|
|
95
|
+
function se(e) {
|
|
96
|
+
X(e), Q.value && T("apply");
|
|
97
|
+
}
|
|
98
|
+
function ce() {
|
|
99
|
+
T("cancel");
|
|
100
|
+
}
|
|
101
|
+
function le(e) {
|
|
102
|
+
e?.preventDefault(), e?.stopPropagation(), !(p.disabled || p.readonly) && (X(null), T("clear"), H(!1));
|
|
103
|
+
}
|
|
104
|
+
function $(e) {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
}
|
|
107
|
+
let ue = o(() => n({
|
|
108
|
+
value: q.value,
|
|
109
|
+
readonly: !M.value.editable || G.inputBind.value.readonly,
|
|
110
|
+
onFocus: (e) => {
|
|
111
|
+
G.inputBind.value.onFocus?.(e), H(!0);
|
|
112
|
+
},
|
|
113
|
+
onBlur: () => {
|
|
114
|
+
M.value.editable && A.value !== null && Z(A.value);
|
|
115
|
+
},
|
|
116
|
+
onInput: (e) => {
|
|
117
|
+
M.value.editable && (A.value = e.target.value);
|
|
118
|
+
},
|
|
119
|
+
onKeydown: (e) => {
|
|
120
|
+
G.inputBind.value.onKeydown?.(e), e.key === "Escape" && (A.value = null, H(!1)), e.key === "Enter" && M.value.editable && A.value !== null && (e.preventDefault(), Z(A.value));
|
|
121
|
+
}
|
|
122
|
+
}, void 0, G.inputBind.value)), de = o(() => M.value.overlay), fe = o(() => ({
|
|
123
|
+
modal: M.value.customProps?.modal,
|
|
124
|
+
drawer: M.value.customProps?.drawer,
|
|
125
|
+
menu: {
|
|
126
|
+
anchorEl: k.value,
|
|
127
|
+
placement: "bottom-start",
|
|
128
|
+
...M.value.customProps?.menu
|
|
129
|
+
}
|
|
130
|
+
})), pe = o(() => M.value.customProps?.colorPicker), me = o(() => r(G.merged.value.size)), he = o(() => l(x, [G.merged.value.color ?? "primary", "clear"]) ?? "text-dark-400 hover:text-dark-600 dark:text-dark-500 dark:hover:text-dark-300");
|
|
131
|
+
return {
|
|
132
|
+
open: O,
|
|
133
|
+
fill: z,
|
|
134
|
+
format: P,
|
|
135
|
+
overlay: de,
|
|
136
|
+
hasValue: L,
|
|
137
|
+
colorOnly: M,
|
|
138
|
+
formField: G,
|
|
139
|
+
inputBind: ue,
|
|
140
|
+
clearable: F,
|
|
141
|
+
clearBind: o(() => n({}, {}, {
|
|
142
|
+
tabindex: 0,
|
|
143
|
+
role: "button",
|
|
144
|
+
"data-field-clear": !0,
|
|
145
|
+
onMousedown: $,
|
|
146
|
+
class: S({
|
|
147
|
+
"inline-flex shrink-0 cursor-pointer items-center justify-center rounded-sm transition-colors duration-150": !0,
|
|
148
|
+
[he.value]: !0,
|
|
149
|
+
[M.value.classes?.clear ?? ""]: !0
|
|
150
|
+
})
|
|
151
|
+
})),
|
|
152
|
+
swatchBind: o(() => {
|
|
153
|
+
let e = l(b, [G.merged.value.size ?? "md", "fieldSwatch"]), t = l(y, G.merged.value.rounded ?? "md");
|
|
154
|
+
return n(M.value.customProps?.swatch, { "aria-hidden": !0 }, S({
|
|
155
|
+
"relative shrink-0 overflow-hidden": !0,
|
|
156
|
+
[ie]: !0,
|
|
157
|
+
[e]: !0,
|
|
158
|
+
[t]: !0,
|
|
159
|
+
[M.value.classes?.swatch ?? ""]: !0
|
|
160
|
+
}));
|
|
161
|
+
}),
|
|
162
|
+
clearValue: le,
|
|
163
|
+
modelValue: N,
|
|
164
|
+
showFooter: Q,
|
|
165
|
+
showSwatch: I,
|
|
166
|
+
pickerClass: B,
|
|
167
|
+
containerRef: k,
|
|
168
|
+
clearIconSize: me,
|
|
169
|
+
showClearIcon: K,
|
|
170
|
+
swatchFillBind: o(() => ({
|
|
171
|
+
class: "absolute inset-0",
|
|
172
|
+
style: Y.value ? { backgroundColor: Y.value } : void 0
|
|
173
|
+
})),
|
|
174
|
+
handleOpenChange: H,
|
|
175
|
+
handlePickerChange: se,
|
|
176
|
+
handlePickerCancel: ce,
|
|
177
|
+
overlayCustomProps: fe,
|
|
178
|
+
colorPickerCustomProps: pe
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
//#endregion
|
|
182
|
+
export { w as useColorField };
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type { ColorFieldClasses, ColorFieldCustomProps, ColorFieldEmits, ColorFieldOwnProps, ColorFieldProps, ColorFieldSlots, } from './colorField.types';
|
|
2
|
+
export { default as ColorField } from './ColorField.vue';
|
|
3
|
+
export { useColorField } from './composables/useColorField';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ColorPickerOwnProps, ColorPickerSlots } from './colorPicker.types';
|
|
2
|
+
type __VLS_Slots = ColorPickerSlots;
|
|
3
|
+
declare const __VLS_base: import('vue').DefineComponent<ColorPickerOwnProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
|
|
4
|
+
apply: () => any;
|
|
5
|
+
cancel: () => any;
|
|
6
|
+
change: (value: string | null) => any;
|
|
7
|
+
}, string, import('vue').PublicProps, Readonly<ColorPickerOwnProps> & Readonly<{
|
|
8
|
+
onApply?: (() => any) | undefined;
|
|
9
|
+
onCancel?: (() => any) | undefined;
|
|
10
|
+
onChange?: ((value: string | null) => any) | undefined;
|
|
11
|
+
}>, {
|
|
12
|
+
showFooter: boolean;
|
|
13
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
15
|
+
declare const _default: typeof __VLS_export;
|
|
16
|
+
export default _default;
|
|
17
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
18
|
+
new (): {
|
|
19
|
+
$slots: S;
|
|
20
|
+
};
|
|
21
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import e from "../Button/Button.js";
|
|
2
|
+
import { useColorPicker as t } from "./composables/useColorPicker.js";
|
|
3
|
+
import { Fragment as n, createCommentVNode as r, createElementBlock as i, createElementVNode as a, createTextVNode as o, createVNode as s, defineComponent as c, guardReactiveProps as l, mergeProps as u, normalizeClass as d, normalizeProps as f, normalizeStyle as p, openBlock as m, renderList as h, renderSlot as g, toDisplayString as _, unref as v, withCtx as y } from "vue";
|
|
4
|
+
import { cn as b } from "@bridge-ui/core/Utils";
|
|
5
|
+
//#region src/Components/ColorPicker/ColorPicker.vue?vue&type=script&setup=true&lang.ts
|
|
6
|
+
var x = { class: "min-w-0 truncate text-sm text-dark-700 dark:text-dark-100" }, S = [
|
|
7
|
+
"aria-label",
|
|
8
|
+
"onClick",
|
|
9
|
+
"aria-pressed",
|
|
10
|
+
"disabled"
|
|
11
|
+
], C = /*@__PURE__*/ c({
|
|
12
|
+
inheritAttrs: !1,
|
|
13
|
+
__name: "ColorPicker",
|
|
14
|
+
props: {
|
|
15
|
+
alpha: { type: Boolean },
|
|
16
|
+
classes: {},
|
|
17
|
+
customProps: {},
|
|
18
|
+
defaultValue: {},
|
|
19
|
+
disabled: { type: Boolean },
|
|
20
|
+
fill: { type: Boolean },
|
|
21
|
+
format: {},
|
|
22
|
+
readOnly: { type: Boolean },
|
|
23
|
+
rounded: {},
|
|
24
|
+
showFooter: {
|
|
25
|
+
type: Boolean,
|
|
26
|
+
default: void 0
|
|
27
|
+
},
|
|
28
|
+
swatches: {},
|
|
29
|
+
value: {}
|
|
30
|
+
},
|
|
31
|
+
emits: [
|
|
32
|
+
"apply",
|
|
33
|
+
"cancel",
|
|
34
|
+
"change"
|
|
35
|
+
],
|
|
36
|
+
setup(c, { emit: C }) {
|
|
37
|
+
let { merged: w, hueBind: T, rootBind: E, areaBind: D, alphaBind: O, showAlpha: k, swatchCss: A, footerBind: j, applyLabel: M, showFooter: N, previewBind: P, contentBind: F, handleApply: I, cancelLabel: L, swatchesBind: R, handleCancel: z, hueThumbBind: B, areaThumbBind: V, alphaFillBind: H, formattedValue: U, alphaThumbBind: W, presetSwatches: G, applyButtonProps: K, isSwatchSelected: q, previewSwatchBind: J, handleSwatchClick: Y, swatchButtonClass: X, cancelButtonProps: Z, swatchSelectedClass: Q, previewSwatchFillBind: $ } = t(c, {
|
|
38
|
+
rounded: "md",
|
|
39
|
+
format: "hex"
|
|
40
|
+
}, C);
|
|
41
|
+
return (t, c) => (m(), i("div", f(l(v(E))), [a("div", { class: d(v(F)) }, [
|
|
42
|
+
a("div", f(l(v(D))), [
|
|
43
|
+
c[0] ||= a("span", {
|
|
44
|
+
"aria-hidden": "",
|
|
45
|
+
class: "pointer-events-none absolute inset-0",
|
|
46
|
+
style: { backgroundImage: "linear-gradient(to right, #fff, transparent)" }
|
|
47
|
+
}, null, -1),
|
|
48
|
+
c[1] ||= a("span", {
|
|
49
|
+
"aria-hidden": "",
|
|
50
|
+
class: "pointer-events-none absolute inset-0",
|
|
51
|
+
style: { backgroundImage: "linear-gradient(to top, #000, transparent)" }
|
|
52
|
+
}, null, -1),
|
|
53
|
+
a("span", f(l(v(V))), null, 16)
|
|
54
|
+
], 16),
|
|
55
|
+
a("div", f(l(v(T))), [a("span", f(l(v(B))), null, 16)], 16),
|
|
56
|
+
v(k) ? (m(), i("div", f(u({ key: 0 }, v(O))), [a("span", f(l(v(H))), null, 16), a("span", f(l(v(W))), null, 16)], 16)) : r("", !0),
|
|
57
|
+
a("div", f(l(v(P))), [a("span", f(l(v(J))), [a("span", f(l(v($))), null, 16)], 16), a("span", x, _(v(U)), 1)], 16),
|
|
58
|
+
v(G).length > 0 ? (m(), i("div", f(u({ key: 1 }, v(R))), [(m(!0), i(n, null, h(v(G), (e) => (m(), i("button", {
|
|
59
|
+
type: "button",
|
|
60
|
+
key: e,
|
|
61
|
+
"aria-label": e,
|
|
62
|
+
onClick: (t) => v(Y)(e),
|
|
63
|
+
"aria-pressed": v(q)(e),
|
|
64
|
+
disabled: v(w).disabled || v(w).readOnly,
|
|
65
|
+
class: d(v(b)({
|
|
66
|
+
[v(X)]: !0,
|
|
67
|
+
[v(Q)]: v(q)(e)
|
|
68
|
+
}))
|
|
69
|
+
}, [a("span", {
|
|
70
|
+
"aria-hidden": "",
|
|
71
|
+
class: "absolute inset-0",
|
|
72
|
+
style: p({ backgroundColor: v(A)(e) })
|
|
73
|
+
}, null, 4)], 10, S))), 128))], 16)) : r("", !0)
|
|
74
|
+
], 2), v(N) ? (m(), i("div", f(u({ key: 0 }, v(j))), [g(t.$slots, "footer", {
|
|
75
|
+
apply: v(I),
|
|
76
|
+
cancel: v(z)
|
|
77
|
+
}, () => [s(v(e), u({
|
|
78
|
+
variant: "flat",
|
|
79
|
+
color: "secondary",
|
|
80
|
+
onClick: v(z)
|
|
81
|
+
}, v(Z)), {
|
|
82
|
+
default: y(() => [o(_(v(L)), 1)]),
|
|
83
|
+
_: 1
|
|
84
|
+
}, 16, ["onClick"]), s(v(e), u({ color: "primary" }, v(K), { onClick: v(I) }), {
|
|
85
|
+
default: y(() => [o(_(v(M)), 1)]),
|
|
86
|
+
_: 1
|
|
87
|
+
}, 16, ["onClick"])])], 16)) : r("", !0)], 16));
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
//#endregion
|
|
91
|
+
export { C as default };
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
import { HTMLAttributes, Slot } from 'vue';
|
|
2
|
+
import { ColorFormat, FieldOverlayFooterSlotProps } from '@bridge-ui/core/Domain';
|
|
3
|
+
import { ColorPickerRounded } from '@bridge-ui/core/Tokens';
|
|
4
|
+
import { MergeHtmlProps, MergeProps } from '@bridge-ui/core/Utils';
|
|
5
|
+
import { ButtonProps } from '../Button/button.types';
|
|
6
|
+
export interface ColorPickerRoundedOverrides {}
|
|
7
|
+
export interface ColorPickerClasses {
|
|
8
|
+
/**
|
|
9
|
+
* Classes for the alpha slider.
|
|
10
|
+
*/
|
|
11
|
+
alpha?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Classes for the saturation / brightness area.
|
|
14
|
+
*/
|
|
15
|
+
area?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Classes for the footer.
|
|
18
|
+
*/
|
|
19
|
+
footer?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Classes for the hue slider.
|
|
22
|
+
*/
|
|
23
|
+
hue?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Classes for the preview row.
|
|
26
|
+
*/
|
|
27
|
+
preview?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Classes for the root element.
|
|
30
|
+
*/
|
|
31
|
+
root?: string;
|
|
32
|
+
/**
|
|
33
|
+
* Classes for preset swatches.
|
|
34
|
+
*/
|
|
35
|
+
swatches?: string;
|
|
36
|
+
}
|
|
37
|
+
export interface ColorPickerCustomProps {
|
|
38
|
+
/**
|
|
39
|
+
* Props forwarded to the alpha slider.
|
|
40
|
+
*
|
|
41
|
+
* @default undefined
|
|
42
|
+
*/
|
|
43
|
+
alpha?: HTMLAttributes;
|
|
44
|
+
/**
|
|
45
|
+
* Props forwarded to the Apply button.
|
|
46
|
+
*
|
|
47
|
+
* @default undefined
|
|
48
|
+
*/
|
|
49
|
+
applyButton?: Partial<ButtonProps>;
|
|
50
|
+
/**
|
|
51
|
+
* Props forwarded to the saturation / brightness area.
|
|
52
|
+
*
|
|
53
|
+
* @default undefined
|
|
54
|
+
*/
|
|
55
|
+
area?: HTMLAttributes;
|
|
56
|
+
/**
|
|
57
|
+
* Props forwarded to the Cancel button.
|
|
58
|
+
*
|
|
59
|
+
* @default undefined
|
|
60
|
+
*/
|
|
61
|
+
cancelButton?: Partial<ButtonProps>;
|
|
62
|
+
/**
|
|
63
|
+
* Props forwarded to the footer.
|
|
64
|
+
*
|
|
65
|
+
* @default undefined
|
|
66
|
+
*/
|
|
67
|
+
footer?: HTMLAttributes;
|
|
68
|
+
/**
|
|
69
|
+
* Props forwarded to the hue slider.
|
|
70
|
+
*
|
|
71
|
+
* @default undefined
|
|
72
|
+
*/
|
|
73
|
+
hue?: HTMLAttributes;
|
|
74
|
+
/**
|
|
75
|
+
* Props forwarded to the preview row.
|
|
76
|
+
*
|
|
77
|
+
* @default undefined
|
|
78
|
+
*/
|
|
79
|
+
preview?: HTMLAttributes;
|
|
80
|
+
/**
|
|
81
|
+
* Props forwarded to the root element.
|
|
82
|
+
*
|
|
83
|
+
* @default undefined
|
|
84
|
+
*/
|
|
85
|
+
root?: HTMLAttributes;
|
|
86
|
+
/**
|
|
87
|
+
* Props forwarded to the preset swatches row.
|
|
88
|
+
*
|
|
89
|
+
* @default undefined
|
|
90
|
+
*/
|
|
91
|
+
swatches?: HTMLAttributes;
|
|
92
|
+
}
|
|
93
|
+
export interface ColorPickerEmits {
|
|
94
|
+
/**
|
|
95
|
+
* Emitted when Apply is pressed (`showFooter`).
|
|
96
|
+
*/
|
|
97
|
+
apply: [];
|
|
98
|
+
/**
|
|
99
|
+
* Emitted when Cancel is pressed.
|
|
100
|
+
*/
|
|
101
|
+
cancel: [];
|
|
102
|
+
/**
|
|
103
|
+
* Emitted when Apply is pressed (`showFooter`) or when the value commits.
|
|
104
|
+
*/
|
|
105
|
+
change: [value: null | string];
|
|
106
|
+
}
|
|
107
|
+
export interface ColorPickerOwnProps {
|
|
108
|
+
/**
|
|
109
|
+
* Shows the alpha slider. When unset, follows `format` (`rgba` / `hexa` /
|
|
110
|
+
* `hsla` enable it).
|
|
111
|
+
*
|
|
112
|
+
* @default false (`true` for alpha formats when unset)
|
|
113
|
+
*/
|
|
114
|
+
alpha?: boolean;
|
|
115
|
+
/**
|
|
116
|
+
* Classes for picker regions.
|
|
117
|
+
*
|
|
118
|
+
* @default undefined
|
|
119
|
+
*/
|
|
120
|
+
classes?: ColorPickerClasses;
|
|
121
|
+
/**
|
|
122
|
+
* Extra props for internal parts.
|
|
123
|
+
*
|
|
124
|
+
* @default undefined
|
|
125
|
+
*/
|
|
126
|
+
customProps?: ColorPickerCustomProps;
|
|
127
|
+
/**
|
|
128
|
+
* Uncontrolled initial value.
|
|
129
|
+
*
|
|
130
|
+
* @default null
|
|
131
|
+
*/
|
|
132
|
+
defaultValue?: null | string;
|
|
133
|
+
/**
|
|
134
|
+
* Disables the picker.
|
|
135
|
+
*
|
|
136
|
+
* @default false
|
|
137
|
+
*/
|
|
138
|
+
disabled?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* When `true`, fills the container width.
|
|
141
|
+
* When `false` or unset, stays at the minimum width.
|
|
142
|
+
*
|
|
143
|
+
* @default false
|
|
144
|
+
*/
|
|
145
|
+
fill?: boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Serialized output format.
|
|
148
|
+
*
|
|
149
|
+
* @default "hex"
|
|
150
|
+
*/
|
|
151
|
+
format?: ColorFormat;
|
|
152
|
+
/**
|
|
153
|
+
* Prevents selection.
|
|
154
|
+
*
|
|
155
|
+
* @default false
|
|
156
|
+
*/
|
|
157
|
+
readOnly?: boolean;
|
|
158
|
+
/**
|
|
159
|
+
* Border radius of the picker shell and swatches.
|
|
160
|
+
*
|
|
161
|
+
* `full` uses `rounded-panel-full` so tall surfaces do not become stadium-shaped.
|
|
162
|
+
* Hue and alpha tracks stay pill-shaped.
|
|
163
|
+
*
|
|
164
|
+
* `ColorField` always forwards its own `rounded` here so internals and the
|
|
165
|
+
* picker shell match the field. Field overlay menus are unstyled, so this
|
|
166
|
+
* shell is the visible radius.
|
|
167
|
+
*
|
|
168
|
+
* @default "md"
|
|
169
|
+
*/
|
|
170
|
+
rounded?: MergeProps<ColorPickerRounded, ColorPickerRoundedOverrides>;
|
|
171
|
+
/**
|
|
172
|
+
* Shows Cancel / Apply footer. Selection is draft until Apply.
|
|
173
|
+
* Nested fields forward their own `showFooter` (dialog overlays default to `true`).
|
|
174
|
+
*
|
|
175
|
+
* @default false
|
|
176
|
+
*/
|
|
177
|
+
showFooter?: boolean;
|
|
178
|
+
/**
|
|
179
|
+
* Preset colors shown below the sliders.
|
|
180
|
+
*
|
|
181
|
+
* @default undefined
|
|
182
|
+
*/
|
|
183
|
+
swatches?: string[];
|
|
184
|
+
/**
|
|
185
|
+
* Controlled value.
|
|
186
|
+
*
|
|
187
|
+
* @default undefined
|
|
188
|
+
*/
|
|
189
|
+
value?: null | string;
|
|
190
|
+
}
|
|
191
|
+
export interface ColorPickerSlots {
|
|
192
|
+
/**
|
|
193
|
+
* Custom footer. Replaces Cancel / Apply. Call `apply()` to commit and close
|
|
194
|
+
* the overlay, or `cancel()` to discard and close.
|
|
195
|
+
*
|
|
196
|
+
* @default undefined
|
|
197
|
+
*/
|
|
198
|
+
footer?: Slot<FieldOverlayFooterSlotProps>;
|
|
199
|
+
}
|
|
200
|
+
export type ColorPickerProps = MergeHtmlProps<ColorPickerOwnProps, HTMLAttributes>;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { MaybeRefOrGetter, SetupContext } from 'vue';
|
|
2
|
+
import { LibDefaultsShape, MergeLibDefaults } from '@bridge-ui/core/Utils';
|
|
3
|
+
import { ColorPickerEmits, ColorPickerOwnProps } from '../colorPicker.types';
|
|
4
|
+
type ColorPickerLibDefaults = LibDefaultsShape<ColorPickerOwnProps, "format" | "rounded">;
|
|
5
|
+
type ColorPickerMerged = MergeLibDefaults<ColorPickerOwnProps, ColorPickerLibDefaults>;
|
|
6
|
+
/**
|
|
7
|
+
* Owns controlled/uncontrolled value, optional footer draft, and panel binds.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useColorPicker(props: MaybeRefOrGetter<ColorPickerOwnProps>, libDefaults: ColorPickerLibDefaults, emit: SetupContext<ColorPickerEmits>["emit"]): {
|
|
10
|
+
merged: import('vue').ComputedRef<ColorPickerMerged>;
|
|
11
|
+
hueBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {
|
|
12
|
+
role: string;
|
|
13
|
+
"aria-valuemin": number;
|
|
14
|
+
"aria-valuemax": number;
|
|
15
|
+
onKeydown: (event: KeyboardEvent) => void;
|
|
16
|
+
"aria-label": string;
|
|
17
|
+
tabindex: number;
|
|
18
|
+
"aria-valuenow": number;
|
|
19
|
+
style: {
|
|
20
|
+
backgroundImage: string;
|
|
21
|
+
};
|
|
22
|
+
onPointerdown: (event: PointerEvent) => void;
|
|
23
|
+
onPointermove: (event: PointerEvent) => void;
|
|
24
|
+
}>>;
|
|
25
|
+
rootBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, Partial<Omit<ColorPickerOwnProps, "fill" | "format" | "value" | "classes" | "showFooter" | "customProps" | "rounded" | "disabled" | "defaultValue" | "readOnly" | "alpha" | "swatches">>>>;
|
|
26
|
+
areaBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {
|
|
27
|
+
role: string;
|
|
28
|
+
onKeydown: (event: KeyboardEvent) => void;
|
|
29
|
+
tabindex: number;
|
|
30
|
+
style: {
|
|
31
|
+
backgroundColor: string;
|
|
32
|
+
};
|
|
33
|
+
"aria-label": string;
|
|
34
|
+
"aria-valuetext": string;
|
|
35
|
+
onPointerdown: (event: PointerEvent) => void;
|
|
36
|
+
onPointermove: (event: PointerEvent) => void;
|
|
37
|
+
}>>;
|
|
38
|
+
cssColor: import('vue').ComputedRef<string>;
|
|
39
|
+
alphaBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {
|
|
40
|
+
role: string;
|
|
41
|
+
"aria-valuemin": number;
|
|
42
|
+
"aria-valuemax": number;
|
|
43
|
+
onKeydown: (event: KeyboardEvent) => void;
|
|
44
|
+
tabindex: number;
|
|
45
|
+
"aria-label": string;
|
|
46
|
+
"aria-valuenow": number;
|
|
47
|
+
onPointerdown: (event: PointerEvent) => void;
|
|
48
|
+
onPointermove: (event: PointerEvent) => void;
|
|
49
|
+
}>>;
|
|
50
|
+
showAlpha: import('vue').ComputedRef<boolean>;
|
|
51
|
+
footerBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
|
|
52
|
+
showFooter: import('vue').ComputedRef<boolean>;
|
|
53
|
+
previewBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
|
|
54
|
+
contentBind: import('vue').ComputedRef<string>;
|
|
55
|
+
handleApply: () => void;
|
|
56
|
+
swatchesBind: import('vue').ComputedRef<import('@bridge-ui/core/Utils').MergePartBind<object, "class", import('vue').HTMLAttributes | undefined, {}>>;
|
|
57
|
+
handleCancel: () => void;
|
|
58
|
+
hueThumbBind: import('vue').ComputedRef<{
|
|
59
|
+
"aria-hidden": boolean;
|
|
60
|
+
style: {
|
|
61
|
+
backgroundColor: string;
|
|
62
|
+
left: string;
|
|
63
|
+
};
|
|
64
|
+
class: string;
|
|
65
|
+
}>;
|
|
66
|
+
areaThumbBind: import('vue').ComputedRef<{
|
|
67
|
+
"aria-hidden": boolean;
|
|
68
|
+
style: {
|
|
69
|
+
left: string;
|
|
70
|
+
top: string;
|
|
71
|
+
};
|
|
72
|
+
class: string;
|
|
73
|
+
}>;
|
|
74
|
+
alphaFillBind: import('vue').ComputedRef<{
|
|
75
|
+
"aria-hidden": boolean;
|
|
76
|
+
class: string;
|
|
77
|
+
style: {
|
|
78
|
+
backgroundImage: string;
|
|
79
|
+
};
|
|
80
|
+
}>;
|
|
81
|
+
formattedValue: import('vue').ComputedRef<string>;
|
|
82
|
+
alphaThumbBind: import('vue').ComputedRef<{
|
|
83
|
+
"aria-hidden": boolean;
|
|
84
|
+
style: {
|
|
85
|
+
backgroundColor: string;
|
|
86
|
+
left: string;
|
|
87
|
+
};
|
|
88
|
+
class: string;
|
|
89
|
+
}>;
|
|
90
|
+
presetSwatches: import('vue').ComputedRef<string[]>;
|
|
91
|
+
previewSwatchBind: import('vue').ComputedRef<{
|
|
92
|
+
"aria-hidden": boolean;
|
|
93
|
+
class: string;
|
|
94
|
+
}>;
|
|
95
|
+
handleSwatchClick: (value: string) => void;
|
|
96
|
+
swatchButtonClass: import('vue').ComputedRef<string>;
|
|
97
|
+
swatchSelectedClass: import('vue').ComputedRef<string>;
|
|
98
|
+
previewSwatchFillBind: import('vue').ComputedRef<{
|
|
99
|
+
class: string;
|
|
100
|
+
style: {
|
|
101
|
+
backgroundColor: string;
|
|
102
|
+
};
|
|
103
|
+
}>;
|
|
104
|
+
applyLabel: import('vue').ComputedRef<string>;
|
|
105
|
+
cancelLabel: import('vue').ComputedRef<string>;
|
|
106
|
+
applyButtonProps: import('vue').ComputedRef<Partial<import('../../Button').ButtonProps> | undefined>;
|
|
107
|
+
cancelButtonProps: import('vue').ComputedRef<Partial<import('../../Button').ButtonProps> | undefined>;
|
|
108
|
+
isSwatchSelected: (value: string) => boolean;
|
|
109
|
+
swatchCss: (value: string) => string | undefined;
|
|
110
|
+
};
|
|
111
|
+
export {};
|