@stachelock/ui 0.1.1 → 0.1.3
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/CalendarHeader.vue_vue_type_script_setup_true_lang-B3KQTxfD.js +70 -0
- package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-B3KQTxfD.js.map +1 -0
- package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-tYAo46wK.js +186 -0
- package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-tYAo46wK.js.map +1 -0
- package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-DoJHjJsA.js +304 -0
- package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-DoJHjJsA.js.map +1 -0
- package/dist/DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js +186 -0
- package/dist/DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js.map +1 -0
- package/dist/DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js +123 -0
- package/dist/DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js.map +1 -0
- package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js +85 -0
- package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js.map +1 -0
- package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-BKhcXkNG.js +201 -0
- package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-BKhcXkNG.js.map +1 -0
- package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-qAwVNm--.js +153 -0
- package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-qAwVNm--.js.map +1 -0
- package/dist/EventCard.vue_vue_type_script_setup_true_lang-B3TP-mWX.js +75 -0
- package/dist/EventCard.vue_vue_type_script_setup_true_lang-B3TP-mWX.js.map +1 -0
- package/dist/EventsList.vue_vue_type_script_setup_true_lang-Cpc9A9Ev.js +89 -0
- package/dist/EventsList.vue_vue_type_script_setup_true_lang-Cpc9A9Ev.js.map +1 -0
- package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js +49 -0
- package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js.map +1 -0
- package/dist/MonthCalendar.vue_vue_type_script_setup_true_lang-B9Bs0z8j.js +66 -0
- package/dist/MonthCalendar.vue_vue_type_script_setup_true_lang-B9Bs0z8j.js.map +1 -0
- package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2WURj34G.js +29 -0
- package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2WURj34G.js.map +1 -0
- package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-DiNg3gz2.js +51 -0
- package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-DiNg3gz2.js.map +1 -0
- package/dist/SelectInput.vue_vue_type_script_setup_true_lang-BguP8xMU.js +242 -0
- package/dist/SelectInput.vue_vue_type_script_setup_true_lang-BguP8xMU.js.map +1 -0
- package/dist/SidebarLayout.vue_vue_type_script_setup_true_lang-CQIW5dy_.js +173 -0
- package/dist/SidebarLayout.vue_vue_type_script_setup_true_lang-CQIW5dy_.js.map +1 -0
- package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-BagTQ6M0.js +197 -0
- package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-BagTQ6M0.js.map +1 -0
- package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-RHqhKoK5.js +230 -0
- package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-RHqhKoK5.js.map +1 -0
- package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-CbR651TU.js +158 -0
- package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-CbR651TU.js.map +1 -0
- package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-CDNjUA1L.js +108 -0
- package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-CDNjUA1L.js.map +1 -0
- package/dist/UiBreadcrumb.vue_vue_type_script_setup_true_lang-CMH47CoK.js +68 -0
- package/dist/UiBreadcrumb.vue_vue_type_script_setup_true_lang-CMH47CoK.js.map +1 -0
- package/dist/UiLoading.vue_vue_type_script_setup_true_lang-DCz52-Me.js +131 -0
- package/dist/UiLoading.vue_vue_type_script_setup_true_lang-DCz52-Me.js.map +1 -0
- package/dist/UiModal.vue_vue_type_script_setup_true_lang-CMk62qeq.js +162 -0
- package/dist/UiModal.vue_vue_type_script_setup_true_lang-CMk62qeq.js.map +1 -0
- package/dist/UiNavLink.vue_vue_type_script_setup_true_lang-Bz5oiCCk.js +222 -0
- package/dist/UiNavLink.vue_vue_type_script_setup_true_lang-Bz5oiCCk.js.map +1 -0
- package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-0zFKwh43.js +46 -0
- package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-0zFKwh43.js.map +1 -0
- package/dist/UiRadialProgressBar.vue_vue_type_script_setup_true_lang-BGCBJa2S.js +72 -0
- package/dist/UiRadialProgressBar.vue_vue_type_script_setup_true_lang-BGCBJa2S.js.map +1 -0
- package/dist/UiTable.vue_vue_type_script_setup_true_lang-hI1_xamh.js +211 -0
- package/dist/UiTable.vue_vue_type_script_setup_true_lang-hI1_xamh.js.map +1 -0
- package/dist/UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js +66 -0
- package/dist/UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js.map +1 -0
- package/dist/WeekCalendar.vue_vue_type_script_setup_true_lang-DAFQiRI9.js +154 -0
- package/dist/WeekCalendar.vue_vue_type_script_setup_true_lang-DAFQiRI9.js.map +1 -0
- package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-BfJkvmpN.js +29 -0
- package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-BfJkvmpN.js.map +1 -0
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js +10 -0
- package/dist/_plugin-vue_export-helper-CHgC5LLL.js.map +1 -0
- package/dist/calendar-905Ofszh.js +77 -0
- package/dist/calendar-905Ofszh.js.map +1 -0
- package/dist/calendars/CalendarDashboard.d.ts +3 -0
- package/dist/calendars/CalendarDashboard.js +72 -0
- package/dist/calendars/CalendarDashboard.js.map +1 -0
- package/dist/calendars/CalendarHeader.d.ts +3 -0
- package/dist/calendars/CalendarHeader.js +5 -0
- package/dist/calendars/CalendarHeader.js.map +1 -0
- package/dist/calendars/DayCalendar.d.ts +3 -0
- package/dist/calendars/DayCalendar.js +5 -0
- package/dist/calendars/DayCalendar.js.map +1 -0
- package/dist/calendars/EventCard.d.ts +3 -0
- package/dist/calendars/EventCard.js +5 -0
- package/dist/calendars/EventCard.js.map +1 -0
- package/dist/calendars/EventsList.d.ts +3 -0
- package/dist/calendars/EventsList.js +5 -0
- package/dist/calendars/EventsList.js.map +1 -0
- package/dist/calendars/MonthCalendar.d.ts +3 -0
- package/dist/calendars/MonthCalendar.js +5 -0
- package/dist/calendars/MonthCalendar.js.map +1 -0
- package/dist/calendars/WeekCalendar.d.ts +3 -0
- package/dist/calendars/WeekCalendar.js +5 -0
- package/dist/calendars/WeekCalendar.js.map +1 -0
- package/dist/calendars/YearCalendar.d.ts +3 -0
- package/dist/calendars/YearCalendar.js +5 -0
- package/dist/calendars/YearCalendar.js.map +1 -0
- package/dist/components/Avatar.d.ts +3 -0
- package/dist/components/Avatar.js +5 -0
- package/dist/components/Avatar.js.map +1 -0
- package/dist/components/Badge.d.ts +3 -0
- package/dist/components/Badge.js +42 -0
- package/dist/components/Badge.js.map +1 -0
- package/dist/components/Breadcrumb.d.ts +3 -0
- package/dist/components/Breadcrumb.js +5 -0
- package/dist/components/Breadcrumb.js.map +1 -0
- package/dist/components/Button.d.ts +3 -0
- package/dist/components/Button.js +197 -0
- package/dist/components/Button.js.map +1 -0
- package/dist/components/Loading.d.ts +3 -0
- package/dist/components/Loading.js +5 -0
- package/dist/components/Loading.js.map +1 -0
- package/dist/components/LoadingDots.d.ts +3 -0
- package/dist/components/LoadingDots.js +69 -0
- package/dist/components/LoadingDots.js.map +1 -0
- package/dist/components/Modal.d.ts +3 -0
- package/dist/components/Modal.js +5 -0
- package/dist/components/Modal.js.map +1 -0
- package/dist/components/NavLink.d.ts +3 -0
- package/dist/components/NavLink.js +5 -0
- package/dist/components/NavLink.js.map +1 -0
- package/dist/components/ProgressBar.d.ts +3 -0
- package/dist/components/ProgressBar.js +5 -0
- package/dist/components/ProgressBar.js.map +1 -0
- package/dist/components/RadialProgressBar.d.ts +3 -0
- package/dist/components/RadialProgressBar.js +5 -0
- package/dist/components/RadialProgressBar.js.map +1 -0
- package/dist/components/Table.d.ts +3 -0
- package/dist/components/Table.js +5 -0
- package/dist/components/Table.js.map +1 -0
- package/dist/components/TextInput.d.ts +3 -0
- package/dist/components/TextInput.js +111 -0
- package/dist/components/TextInput.js.map +1 -0
- package/dist/components/Transition.d.ts +3 -0
- package/dist/components/Transition.js +5 -0
- package/dist/components/Transition.js.map +1 -0
- package/dist/forms/DynamicForm.d.ts +3 -0
- package/dist/forms/DynamicForm.js +5 -0
- package/dist/forms/DynamicForm.js.map +1 -0
- package/dist/forms/DynamicFormField.d.ts +3 -0
- package/dist/forms/DynamicFormField.js +5 -0
- package/dist/forms/DynamicFormField.js.map +1 -0
- package/dist/forms/FormFieldWrapper.d.ts +3 -0
- package/dist/forms/FormFieldWrapper.js +158 -0
- package/dist/forms/FormFieldWrapper.js.map +1 -0
- package/dist/id-DafBB_QF.js +20 -0
- package/dist/id-DafBB_QF.js.map +1 -0
- package/dist/index.js +246 -4609
- package/dist/index.js.map +1 -1
- package/dist/inputs/CheckboxInput.d.ts +3 -0
- package/dist/inputs/CheckboxInput.js +5 -0
- package/dist/inputs/CheckboxInput.js.map +1 -0
- package/dist/inputs/ComboboxInput.d.ts +3 -0
- package/dist/inputs/ComboboxInput.js +5 -0
- package/dist/inputs/ComboboxInput.js.map +1 -0
- package/dist/inputs/SelectInput.d.ts +3 -0
- package/dist/inputs/SelectInput.js +5 -0
- package/dist/inputs/SelectInput.js.map +1 -0
- package/dist/inputs/SwitchInput.d.ts +3 -0
- package/dist/inputs/SwitchInput.js +5 -0
- package/dist/inputs/SwitchInput.js.map +1 -0
- package/dist/inputs/TagifyInput.d.ts +3 -0
- package/dist/inputs/TagifyInput.js +5 -0
- package/dist/inputs/TagifyInput.js.map +1 -0
- package/dist/inputs/TextAreaInput.d.ts +3 -0
- package/dist/inputs/TextAreaInput.js +5 -0
- package/dist/inputs/TextAreaInput.js.map +1 -0
- package/dist/layouts/DashboardLayout.d.ts +3 -0
- package/dist/layouts/DashboardLayout.js +5 -0
- package/dist/layouts/DashboardLayout.js.map +1 -0
- package/dist/layouts/DefaultLayout.d.ts +3 -0
- package/dist/layouts/DefaultLayout.js +5 -0
- package/dist/layouts/DefaultLayout.js.map +1 -0
- package/dist/layouts/HeaderLayout.d.ts +3 -0
- package/dist/layouts/HeaderLayout.js +5 -0
- package/dist/layouts/HeaderLayout.js.map +1 -0
- package/dist/layouts/NavigationGroup.d.ts +3 -0
- package/dist/layouts/NavigationGroup.js +5 -0
- package/dist/layouts/NavigationGroup.js.map +1 -0
- package/dist/layouts/NavigationItem.d.ts +3 -0
- package/dist/layouts/NavigationItem.js +5 -0
- package/dist/layouts/NavigationItem.js.map +1 -0
- package/dist/layouts/SidebarLayout.d.ts +3 -0
- package/dist/layouts/SidebarLayout.js +5 -0
- package/dist/layouts/SidebarLayout.js.map +1 -0
- package/dist/src/components/UiLoadingDots.d.ts +1 -1
- package/dist/src/components/UiNavLink.d.ts +1 -1
- package/dist/src/components/inputs/ComboboxInput.d.ts +2 -2
- package/dist/src/components/inputs/SelectInput.d.ts +2 -2
- package/dist/src/components/layouts/DefaultLayout.d.ts +1 -1
- package/package.json +2 -3
- package/dist/CheckboxInput-rWkcde69.js +0 -5
- package/dist/CheckboxInput-rWkcde69.js.map +0 -1
- package/dist/ComboboxInput-B98P_8CZ.js +0 -5
- package/dist/ComboboxInput-B98P_8CZ.js.map +0 -1
- package/dist/SelectInput-B5liNv7H.js +0 -5
- package/dist/SelectInput-B5liNv7H.js.map +0 -1
- package/dist/SwitchInput-D1k9O8gn.js +0 -5
- package/dist/SwitchInput-D1k9O8gn.js.map +0 -1
- package/dist/TextAreaInput-Di6Kstic.js +0 -5
- package/dist/TextAreaInput-Di6Kstic.js.map +0 -1
- package/dist/UiLoading-BuzCrLqO.js +0 -5
- package/dist/UiLoading-BuzCrLqO.js.map +0 -1
- package/dist/index.umd.cjs +0 -11
- package/dist/index.umd.cjs.map +0 -1
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { defineComponent as h, ref as b, createElementBlock as d, openBlock as f, createVNode as o, createElementVNode as s, unref as a, withCtx as i, renderSlot as t, normalizeClass as p, createCommentVNode as m } from "vue";
|
|
2
|
+
import { TransitionRoot as v, Dialog as y, TransitionChild as c, DialogPanel as _ } from "@headlessui/vue";
|
|
3
|
+
import { XMarkIcon as w, Bars3Icon as k } from "@heroicons/vue/24/outline";
|
|
4
|
+
const $ = { class: "sl-min-h-screen sl-bg-gray-50" }, C = { class: "sl-fixed sl-inset-0 sl-flex" }, S = { class: "sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5" }, z = { class: "sl-flex sl-grow sl-flex-col sl-gap-y-5 sl-bg-stachelock-600 sl-px-6 sl-pb-2 sl-ring-1 sl-ring-white/10" }, B = { class: "sl-flex sl-h-16 sl-shrink-0 sl-items-center" }, W = { class: "sl-flex sl-flex-1 sl-flex-col" }, D = {
|
|
5
|
+
role: "list",
|
|
6
|
+
class: "-sl-mx-2 sl-flex-1 sl-space-y-1"
|
|
7
|
+
}, L = { class: "sl-mt-auto" }, N = { class: "sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-px-6" }, V = { class: "sl-mt-8 sl-flex sl-flex-col sl-justify-between sl-h-full" }, j = { class: "sl-absolute sl-bottom-4 sl-left-0 sl-right-0 sl-px-6" }, E = { class: "sl-sticky sl-top-0 sl-z-40 sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-gap-x-4 sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-shadow-sm sm:sl-gap-x-6 sm:sl-px-6 lg:sl-px-8" }, I = { class: "sl-flex sl-flex-1 sl-gap-x-4 sm:sl-self-stretch lg:sl-gap-x-6" }, O = { class: "sl-relative sl-flex sl-flex-1" }, T = { class: "sl-flex sl-items-center sl-gap-x-4 lg:sl-gap-x-6" }, M = {
|
|
8
|
+
key: 0,
|
|
9
|
+
class: "sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8"
|
|
10
|
+
}, P = { class: "sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-py-6" }, R = {
|
|
11
|
+
key: 1,
|
|
12
|
+
class: "sl-border-t sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8"
|
|
13
|
+
}, G = /* @__PURE__ */ h({
|
|
14
|
+
__name: "DashboardLayout",
|
|
15
|
+
props: {
|
|
16
|
+
isWideSidebar: {
|
|
17
|
+
type: Boolean,
|
|
18
|
+
default: !1
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
emits: ["sidebar-toggle"],
|
|
22
|
+
setup(n, { emit: X }) {
|
|
23
|
+
const r = b(!1), g = () => {
|
|
24
|
+
r.value = !1;
|
|
25
|
+
}, x = () => {
|
|
26
|
+
r.value = !0;
|
|
27
|
+
};
|
|
28
|
+
return (e, l) => (f(), d("div", $, [
|
|
29
|
+
o(a(v), {
|
|
30
|
+
as: "template",
|
|
31
|
+
show: r.value
|
|
32
|
+
}, {
|
|
33
|
+
default: i(() => [
|
|
34
|
+
o(a(y), {
|
|
35
|
+
as: "div",
|
|
36
|
+
class: "sl-relative sl-z-50 lg:sl-hidden",
|
|
37
|
+
onClose: g
|
|
38
|
+
}, {
|
|
39
|
+
default: i(() => [
|
|
40
|
+
o(a(c), {
|
|
41
|
+
as: "template",
|
|
42
|
+
enter: "sl-transition-opacity sl-ease-linear sl-duration-300",
|
|
43
|
+
"enter-from": "sl-opacity-0",
|
|
44
|
+
"enter-to": "sl-opacity-100",
|
|
45
|
+
leave: "sl-transition-opacity sl-ease-linear sl-duration-300",
|
|
46
|
+
"leave-from": "sl-opacity-100",
|
|
47
|
+
"leave-to": "sl-opacity-0"
|
|
48
|
+
}, {
|
|
49
|
+
default: i(() => l[2] || (l[2] = [
|
|
50
|
+
s("div", { class: "sl-fixed sl-inset-0 sl-bg-gray-900/80" }, null, -1)
|
|
51
|
+
])),
|
|
52
|
+
_: 1,
|
|
53
|
+
__: [2]
|
|
54
|
+
}),
|
|
55
|
+
s("div", C, [
|
|
56
|
+
o(a(c), {
|
|
57
|
+
as: "template",
|
|
58
|
+
enter: "sl-transition sl-ease-in-out sl-duration-300 sl-transform",
|
|
59
|
+
"enter-from": "-sl-translate-x-full",
|
|
60
|
+
"enter-to": "sl-translate-x-0",
|
|
61
|
+
leave: "sl-transition sl-ease-in-out sl-duration-300 sl-transform",
|
|
62
|
+
"leave-from": "sl-translate-x-0",
|
|
63
|
+
"leave-to": "-sl-translate-x-full"
|
|
64
|
+
}, {
|
|
65
|
+
default: i(() => [
|
|
66
|
+
o(a(_), { class: "sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1" }, {
|
|
67
|
+
default: i(() => [
|
|
68
|
+
o(a(c), {
|
|
69
|
+
as: "template",
|
|
70
|
+
enter: "sl-ease-in-out sl-duration-300",
|
|
71
|
+
"enter-from": "sl-opacity-0",
|
|
72
|
+
"enter-to": "sl-opacity-100",
|
|
73
|
+
leave: "sl-ease-in-out sl-duration-300",
|
|
74
|
+
"leave-from": "sl-opacity-100",
|
|
75
|
+
"leave-to": "sl-opacity-0"
|
|
76
|
+
}, {
|
|
77
|
+
default: i(() => [
|
|
78
|
+
s("div", S, [
|
|
79
|
+
s("button", {
|
|
80
|
+
type: "button",
|
|
81
|
+
class: "-sl-m-2.5 sl-p-2.5",
|
|
82
|
+
onClick: l[0] || (l[0] = (u) => g())
|
|
83
|
+
}, [
|
|
84
|
+
l[3] || (l[3] = s("span", { class: "sl-sr-only" }, "Close sidebar", -1)),
|
|
85
|
+
o(a(w), {
|
|
86
|
+
class: "sl-h-6 sl-w-6 sl-text-stachelock-050",
|
|
87
|
+
"aria-hidden": "true"
|
|
88
|
+
})
|
|
89
|
+
])
|
|
90
|
+
])
|
|
91
|
+
]),
|
|
92
|
+
_: 1
|
|
93
|
+
}),
|
|
94
|
+
s("div", z, [
|
|
95
|
+
s("div", B, [
|
|
96
|
+
t(e.$slots, "logo", {}, () => [
|
|
97
|
+
l[4] || (l[4] = s("div", { class: "sl-text-stachelock-050 sl-font-semibold sl-text-lg" }, "Logo", -1))
|
|
98
|
+
])
|
|
99
|
+
]),
|
|
100
|
+
s("nav", W, [
|
|
101
|
+
s("ul", D, [
|
|
102
|
+
t(e.$slots, "navigation")
|
|
103
|
+
])
|
|
104
|
+
]),
|
|
105
|
+
s("div", L, [
|
|
106
|
+
t(e.$slots, "sidebar-footer")
|
|
107
|
+
])
|
|
108
|
+
])
|
|
109
|
+
]),
|
|
110
|
+
_: 3
|
|
111
|
+
})
|
|
112
|
+
]),
|
|
113
|
+
_: 3
|
|
114
|
+
})
|
|
115
|
+
])
|
|
116
|
+
]),
|
|
117
|
+
_: 3
|
|
118
|
+
})
|
|
119
|
+
]),
|
|
120
|
+
_: 3
|
|
121
|
+
}, 8, ["show"]),
|
|
122
|
+
s("div", {
|
|
123
|
+
class: p(["sl-hidden lg:sl-fixed lg:sl-inset-y-0 lg:sl-left-0 lg:sl-z-50 lg:sl-block lg:sl-pb-4 sl-pt-4 lg:sl-bg-stachelock-600", n.isWideSidebar ? "lg:sl-w-72" : "lg:sl-w-20"])
|
|
124
|
+
}, [
|
|
125
|
+
s("div", N, [
|
|
126
|
+
t(e.$slots, "logo", {}, () => [
|
|
127
|
+
l[5] || (l[5] = s("div", { class: "sl-text-stachelock-050 sl-font-semibold sl-text-lg" }, "Logo", -1))
|
|
128
|
+
])
|
|
129
|
+
]),
|
|
130
|
+
s("nav", V, [
|
|
131
|
+
s("ul", {
|
|
132
|
+
role: "list",
|
|
133
|
+
class: p(n.isWideSidebar ? "sl-flex sl-flex-col sl-items-start sl-mx-4 sl-space-y-1" : "sl-flex sl-flex-col sl-items-center sl-space-y-1")
|
|
134
|
+
}, [
|
|
135
|
+
t(e.$slots, "navigation")
|
|
136
|
+
], 2),
|
|
137
|
+
s("div", j, [
|
|
138
|
+
t(e.$slots, "sidebar-footer")
|
|
139
|
+
])
|
|
140
|
+
])
|
|
141
|
+
], 2),
|
|
142
|
+
s("div", {
|
|
143
|
+
class: p(["lg:sl-pl-20", n.isWideSidebar ? "lg:sl-pl-72" : "lg:sl-pl-20"])
|
|
144
|
+
}, [
|
|
145
|
+
s("div", E, [
|
|
146
|
+
s("button", {
|
|
147
|
+
type: "button",
|
|
148
|
+
class: "-sl-m-2.5 sl-p-2.5 sl-text-gray-700 lg:sl-hidden",
|
|
149
|
+
onClick: l[1] || (l[1] = (u) => x())
|
|
150
|
+
}, [
|
|
151
|
+
l[6] || (l[6] = s("span", { class: "sl-sr-only" }, "Open sidebar", -1)),
|
|
152
|
+
o(a(k), {
|
|
153
|
+
class: "sl-h-6 sl-w-6",
|
|
154
|
+
"aria-hidden": "true"
|
|
155
|
+
})
|
|
156
|
+
]),
|
|
157
|
+
l[7] || (l[7] = s("div", {
|
|
158
|
+
class: "sl-h-6 sl-w-px sl-bg-gray-900/10 lg:sl-hidden",
|
|
159
|
+
"aria-hidden": "true"
|
|
160
|
+
}, null, -1)),
|
|
161
|
+
s("div", I, [
|
|
162
|
+
s("div", O, [
|
|
163
|
+
t(e.$slots, "header-content")
|
|
164
|
+
]),
|
|
165
|
+
s("div", T, [
|
|
166
|
+
t(e.$slots, "header-right")
|
|
167
|
+
])
|
|
168
|
+
])
|
|
169
|
+
]),
|
|
170
|
+
e.$slots["page-header"] ? (f(), d("div", M, [
|
|
171
|
+
t(e.$slots, "page-header")
|
|
172
|
+
])) : m("", !0),
|
|
173
|
+
s("main", P, [
|
|
174
|
+
t(e.$slots, "main")
|
|
175
|
+
]),
|
|
176
|
+
e.$slots.footer ? (f(), d("footer", R, [
|
|
177
|
+
t(e.$slots, "footer")
|
|
178
|
+
])) : m("", !0)
|
|
179
|
+
], 2)
|
|
180
|
+
]));
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
export {
|
|
184
|
+
G as _
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DashboardLayout.vue_vue_type_script_setup_true_lang-CClxYrOW.js","sources":["../src/components/layouts/DashboardLayout.vue"],"sourcesContent":["<template>\n <div class=\"sl-min-h-screen sl-bg-gray-50\">\n <!-- Mobile sidebar overlay -->\n <TransitionRoot as=\"template\" :show=\"sidebarOpen\">\n <Dialog as=\"div\" class=\"sl-relative sl-z-50 lg:sl-hidden\" @close=\"closeSidebar\">\n <TransitionChild as=\"template\" enter=\"sl-transition-opacity sl-ease-linear sl-duration-300\" enter-from=\"sl-opacity-0\"\n enter-to=\"sl-opacity-100\" leave=\"sl-transition-opacity sl-ease-linear sl-duration-300\" leave-from=\"sl-opacity-100\"\n leave-to=\"sl-opacity-0\">\n <div class=\"sl-fixed sl-inset-0 sl-bg-gray-900/80\" />\n </TransitionChild>\n\n <div class=\"sl-fixed sl-inset-0 sl-flex\">\n <TransitionChild as=\"template\" enter=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\"\n enter-from=\"-sl-translate-x-full\" enter-to=\"sl-translate-x-0\"\n leave=\"sl-transition sl-ease-in-out sl-duration-300 sl-transform\" leave-from=\"sl-translate-x-0\"\n leave-to=\"-sl-translate-x-full\">\n <DialogPanel class=\"sl-relative sl-mr-16 sl-flex sl-w-full sl-max-w-xs sl-flex-1\">\n <TransitionChild as=\"template\" enter=\"sl-ease-in-out sl-duration-300\" enter-from=\"sl-opacity-0\"\n enter-to=\"sl-opacity-100\" leave=\"sl-ease-in-out sl-duration-300\" leave-from=\"sl-opacity-100\" leave-to=\"sl-opacity-0\">\n <div class=\"sl-absolute sl-left-full sl-top-0 sl-flex sl-w-16 sl-justify-center sl-pt-5\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5\" @click=\"closeSidebar()\">\n <span class=\"sl-sr-only\">Close sidebar</span>\n <XMarkIcon class=\"sl-h-6 sl-w-6 sl-text-stachelock-050\" aria-hidden=\"true\" />\n </button>\n </div>\n </TransitionChild>\n\n <div class=\"sl-flex sl-grow sl-flex-col sl-gap-y-5 sl-bg-stachelock-600 sl-px-6 sl-pb-2 sl-ring-1 sl-ring-white/10\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center\">\n <slot name=\"logo\">\n <div class=\"sl-text-stachelock-050 sl-font-semibold sl-text-lg\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-flex sl-flex-1 sl-flex-col\">\n <ul role=\"list\" class=\"-sl-mx-2 sl-flex-1 sl-space-y-1\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n </nav>\n <div class=\"sl-mt-auto\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </div>\n </DialogPanel>\n </TransitionChild>\n </div>\n </Dialog>\n </TransitionRoot>\n\n <!-- Desktop sidebar -->\n <div class=\"sl-hidden lg:sl-fixed lg:sl-inset-y-0 lg:sl-left-0 lg:sl-z-50 lg:sl-block lg:sl-pb-4 sl-pt-4 lg:sl-bg-stachelock-600\"\n :class=\"isWideSidebar ? 'lg:sl-w-72' : 'lg:sl-w-20'\">\n <div class=\"sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-px-6\">\n <slot name=\"logo\">\n <div class=\"sl-text-stachelock-050 sl-font-semibold sl-text-lg\">Logo</div>\n </slot>\n </div>\n <nav class=\"sl-mt-8 sl-flex sl-flex-col sl-justify-between sl-h-full\">\n <ul role=\"list\" :class=\"isWideSidebar ? 'sl-flex sl-flex-col sl-items-start sl-mx-4 sl-space-y-1' : 'sl-flex sl-flex-col sl-items-center sl-space-y-1'\">\n <slot name=\"navigation\">\n <!-- Default navigation slot -->\n </slot>\n </ul>\n <div class=\"sl-absolute sl-bottom-4 sl-left-0 sl-right-0 sl-px-6\">\n <slot name=\"sidebar-footer\">\n <!-- Sidebar footer content -->\n </slot>\n </div>\n </nav>\n </div>\n\n <!-- Main content area -->\n <div :class=\"['lg:sl-pl-20', isWideSidebar ? 'lg:sl-pl-72' : 'lg:sl-pl-20']\">\n <!-- Header -->\n <div class=\"sl-sticky sl-top-0 sl-z-40 sl-flex sl-h-16 sl-shrink-0 sl-items-center sl-gap-x-4 sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-shadow-sm sm:sl-gap-x-6 sm:sl-px-6 lg:sl-px-8\">\n <button type=\"button\" class=\"-sl-m-2.5 sl-p-2.5 sl-text-gray-700 lg:sl-hidden\" @click=\"openSidebar()\">\n <span class=\"sl-sr-only\">Open sidebar</span>\n <Bars3Icon class=\"sl-h-6 sl-w-6\" aria-hidden=\"true\" />\n </button>\n\n <!-- Separator -->\n <div class=\"sl-h-6 sl-w-px sl-bg-gray-900/10 lg:sl-hidden\" aria-hidden=\"true\" />\n\n <div class=\"sl-flex sl-flex-1 sl-gap-x-4 sm:sl-self-stretch lg:sl-gap-x-6\">\n <div class=\"sl-relative sl-flex sl-flex-1\">\n <slot name=\"header-content\">\n <!-- Header content -->\n </slot>\n </div>\n <div class=\"sl-flex sl-items-center sl-gap-x-4 lg:sl-gap-x-6\">\n <slot name=\"header-right\">\n <!-- Header right content (notifications, profile, etc.) -->\n </slot>\n </div>\n </div>\n </div>\n\n <!-- Page header -->\n <div v-if=\"$slots['page-header']\" class=\"sl-border-b sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8\">\n <slot name=\"page-header\">\n <!-- Page header content -->\n </slot>\n </div>\n\n <!-- Main content -->\n <main class=\"sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-py-6\">\n <slot name=\"main\">\n <!-- Main content slot -->\n </slot>\n </main>\n\n <!-- Footer -->\n <footer v-if=\"$slots.footer\" class=\"sl-border-t sl-border-gray-200 sl-bg-white sl-px-4 sl-py-6 sm:sl-px-6 lg:sl-px-8\">\n <slot name=\"footer\">\n <!-- Footer content -->\n </slot>\n </footer>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport { Dialog, DialogPanel, TransitionChild, TransitionRoot } from '@headlessui/vue';\nimport { Bars3Icon, XMarkIcon } from '@heroicons/vue/24/outline';\n\nconst props = defineProps({\n isWideSidebar: {\n type: Boolean,\n default: false\n }\n});\n\nconst emit = defineEmits(['sidebar-toggle']);\n\nconst sidebarOpen = ref(false);\n\nconst closeSidebar = () => {\n sidebarOpen.value = false;\n};\n\nconst openSidebar = () => {\n sidebarOpen.value = true;\n};\n\n\n</script>\n\n<style scoped>\n</style>\n"],"names":["sidebarOpen","ref","closeSidebar","openSidebar","_openBlock","_createElementBlock","_hoisted_1","_createVNode","_unref","TransitionRoot","Dialog","TransitionChild","_cache","_createElementVNode","_hoisted_2","DialogPanel","_hoisted_3","XMarkIcon","_hoisted_4","_hoisted_5","_renderSlot","_ctx","_hoisted_6","_hoisted_7","_hoisted_8","_normalizeClass","__props","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","Bars3Icon","_hoisted_13","_hoisted_14","_hoisted_15","$slots","_hoisted_16","_hoisted_17","_hoisted_18"],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { defineComponent as A, ref as d, computed as P, onMounted as D, createElementBlock as n, openBlock as i, Fragment as r, createElementVNode as s, renderList as u, createTextVNode as T, toDisplayString as a, normalizeClass as C, createCommentVNode as E, normalizeStyle as N, unref as m } from "vue";
|
|
2
|
+
import { c as z, a as H, f as S } from "./calendar-905Ofszh.js";
|
|
3
|
+
const $ = { class: "sl-isolate sl-flex sl-flex-auto sl-overflow-hidden sl-bg-white" }, O = { class: "sl-grid sl-grid-cols-7 sl-text-sm sl-leading-6 sl-text-gray-500 xl:sl-hidden" }, V = ["onClick"], j = { class: "sl-flex sl-flex-auto" }, B = { class: "sl-grid sl-flex-auto sl-grid-cols-1 sl-grid-rows-1" }, G = {
|
|
4
|
+
class: "sl-col-start-1 sl-col-end-2 sl-row-start-1 sl-grid sl-divide-y sl-divide-gray-100",
|
|
5
|
+
style: { "grid-template-rows": "repeat(48, minmax(3.5rem, 1fr))" }
|
|
6
|
+
}, F = { class: "sl-relative" }, L = { class: "sl-sticky sl-left-0 sl-z-20 -sl-ml-14 -sl-mt-2.5 sl-w-14 sl-pr-2 sl-text-right sl-text-xs sl-leading-5 sl-text-gray-400" }, R = {
|
|
7
|
+
class: "sl-col-end-2 sl-row-start-1 sl-grid sl-grid-cols-1",
|
|
8
|
+
style: { "grid-template-rows": "1.75rem repeat(288, minmax(0, 1fr)) auto" }
|
|
9
|
+
}, Z = ["onClick"], q = { class: "sl-order-1 sl-font-semibold sl-text-blue-700" }, I = { class: "sl-text-blue-500 group-hover:sl-text-blue-700" }, J = ["datetime"], W = /* @__PURE__ */ A({
|
|
10
|
+
__name: "DayCalendar",
|
|
11
|
+
props: {
|
|
12
|
+
days: {}
|
|
13
|
+
},
|
|
14
|
+
emits: ["selectDay", "select:event"],
|
|
15
|
+
setup(p, { emit: y }) {
|
|
16
|
+
const h = p, f = y, g = d(null), x = d(null), v = d(null), c = d(null), _ = [
|
|
17
|
+
"12AM",
|
|
18
|
+
"1AM",
|
|
19
|
+
"2AM",
|
|
20
|
+
"3AM",
|
|
21
|
+
"4AM",
|
|
22
|
+
"5AM",
|
|
23
|
+
"6AM",
|
|
24
|
+
"7AM",
|
|
25
|
+
"8AM",
|
|
26
|
+
"9AM",
|
|
27
|
+
"10AM",
|
|
28
|
+
"11AM",
|
|
29
|
+
"12PM",
|
|
30
|
+
"1PM",
|
|
31
|
+
"2PM",
|
|
32
|
+
"3PM",
|
|
33
|
+
"4PM",
|
|
34
|
+
"5PM",
|
|
35
|
+
"6PM",
|
|
36
|
+
"7PM",
|
|
37
|
+
"8PM",
|
|
38
|
+
"9PM",
|
|
39
|
+
"10PM",
|
|
40
|
+
"11PM"
|
|
41
|
+
], M = (t) => c.value === t, b = (t) => {
|
|
42
|
+
c.value = t, f("selectDay", t);
|
|
43
|
+
}, w = (t) => f("select:event", t), k = P(() => c.value ? [c.value] : h.days);
|
|
44
|
+
return D(() => {
|
|
45
|
+
const t = (/* @__PURE__ */ new Date()).getHours() * 60, o = g.value, l = x.value, e = v.value;
|
|
46
|
+
o && l && e && (o.scrollTop = (o.scrollHeight - l.offsetHeight - e.offsetHeight) * t / 1440);
|
|
47
|
+
}), (t, o) => (i(), n(r, null, [
|
|
48
|
+
s("div", $, [
|
|
49
|
+
s("div", {
|
|
50
|
+
ref_key: "container",
|
|
51
|
+
ref: g,
|
|
52
|
+
class: "sl-flex sl-flex-auto sl-flex-col sl-overflow-auto"
|
|
53
|
+
}, [
|
|
54
|
+
s("div", {
|
|
55
|
+
ref_key: "containerNav",
|
|
56
|
+
ref: x,
|
|
57
|
+
class: "sl-sticky sl-top-0 sl-z-10 sl-bg-white sl-text-xs sl-text-gray-500 sl-shadow sl-ring-1 sl-ring-black sl-ring-opacity-5 md:sl-hidden"
|
|
58
|
+
}, [
|
|
59
|
+
s("div", O, [
|
|
60
|
+
(i(!0), n(r, null, u(t.days, (l) => (i(), n("button", {
|
|
61
|
+
key: l.date,
|
|
62
|
+
type: "button",
|
|
63
|
+
class: "sl-flex sl-flex-col sl-items-center sl-pb-3 sl-pt-2",
|
|
64
|
+
onClick: (e) => b(l)
|
|
65
|
+
}, [
|
|
66
|
+
T(a(l.shortDay) + " ", 1),
|
|
67
|
+
s("span", {
|
|
68
|
+
class: C(["sl-mt-1 sl-flex sl-h-8 sl-w-8 sl-items-center sl-justify-center sl-font-semibold sl-text-gray-800", M(l) ? "sl-rounded-full sl-bg-stachelock-600 sl-font-semibold sl-text-white" : ""])
|
|
69
|
+
}, a(l.day), 3)
|
|
70
|
+
], 8, V))), 128))
|
|
71
|
+
])
|
|
72
|
+
], 512),
|
|
73
|
+
s("div", j, [
|
|
74
|
+
o[1] || (o[1] = s("div", { class: "sl-w-14 sl-flex-none sl-bg-white sl-ring-1 sl-ring-gray-100" }, null, -1)),
|
|
75
|
+
s("div", B, [
|
|
76
|
+
s("div", G, [
|
|
77
|
+
s("div", {
|
|
78
|
+
ref_key: "containerOffset",
|
|
79
|
+
ref: v,
|
|
80
|
+
class: "sl-row-end-1 sl-h-7"
|
|
81
|
+
}, null, 512),
|
|
82
|
+
(i(), n(r, null, u(_, (l) => (i(), n(r, { key: l }, [
|
|
83
|
+
s("div", F, [
|
|
84
|
+
s("div", L, a(l), 1)
|
|
85
|
+
]),
|
|
86
|
+
o[0] || (o[0] = s("div", null, null, -1))
|
|
87
|
+
], 64))), 64))
|
|
88
|
+
]),
|
|
89
|
+
s("ol", R, [
|
|
90
|
+
(i(!0), n(r, null, u(k.value, (l) => (i(), n(r, {
|
|
91
|
+
key: l.date
|
|
92
|
+
}, [
|
|
93
|
+
l.events && l.events.length ? (i(!0), n(r, { key: 0 }, u(l.events, (e) => (i(), n("li", {
|
|
94
|
+
key: e.id,
|
|
95
|
+
class: "sl-relative sl-mt-px sl-flex",
|
|
96
|
+
style: N(`grid-row: ${m(z)(e.datetime)} / span ${m(H)(e.startTime?.dateTime, e.endTime?.dateTime)}`)
|
|
97
|
+
}, [
|
|
98
|
+
s("button", {
|
|
99
|
+
onClick: (K) => w(e.id),
|
|
100
|
+
class: "sl-justify-start sl-group sl-absolute sl-inset-1 sl-flex sl-flex-col sl-overflow-y-auto sl-rounded-lg sl-bg-blue-50 sl-p-2 sl-text-xs sl-leading-5 hover:sl-bg-blue-100"
|
|
101
|
+
}, [
|
|
102
|
+
s("p", q, a(e.name), 1),
|
|
103
|
+
s("p", I, [
|
|
104
|
+
s("time", {
|
|
105
|
+
datetime: e.datetime
|
|
106
|
+
}, a(m(S)(e.datetime)) + " " + a(e.startTime?.shortTimeZone), 9, J)
|
|
107
|
+
])
|
|
108
|
+
], 8, Z)
|
|
109
|
+
], 4))), 128)) : E("", !0)
|
|
110
|
+
], 64))), 128))
|
|
111
|
+
])
|
|
112
|
+
])
|
|
113
|
+
])
|
|
114
|
+
], 512)
|
|
115
|
+
]),
|
|
116
|
+
o[2] || (o[2] = s("div", { class: "md:sl-block sl-hidden sl-w-1/2 sl-max-w-md sl-flex-none sl-border-l sl-border-gray-100 sl-px-8 sl-py-10" }, null, -1))
|
|
117
|
+
], 64));
|
|
118
|
+
}
|
|
119
|
+
});
|
|
120
|
+
export {
|
|
121
|
+
W as _
|
|
122
|
+
};
|
|
123
|
+
//# sourceMappingURL=DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js","sources":["../src/components/calendars/DayCalendar.vue"],"sourcesContent":["<template>\n <div class=\"sl-isolate sl-flex sl-flex-auto sl-overflow-hidden sl-bg-white\">\n <div ref=\"container\" class=\"sl-flex sl-flex-auto sl-flex-col sl-overflow-auto\">\n <!-- Mobile sticky nav with days -->\n <div ref=\"containerNav\" class=\"sl-sticky sl-top-0 sl-z-10 sl-bg-white sl-text-xs sl-text-gray-500 sl-shadow sl-ring-1 sl-ring-black sl-ring-opacity-5 md:sl-hidden\">\n <div class=\"sl-grid sl-grid-cols-7 sl-text-sm sl-leading-6 sl-text-gray-500 xl:sl-hidden\">\n <button v-for=\"day in days\" :key=\"day.date\" type=\"button\" class=\"sl-flex sl-flex-col sl-items-center sl-pb-3 sl-pt-2\" @click=\"setActiveDay(day)\">\n {{ day.shortDay }}\n <span class=\"sl-mt-1 sl-flex sl-h-8 sl-w-8 sl-items-center sl-justify-center sl-font-semibold sl-text-gray-800\" :class=\"isActiveDay(day) ? 'sl-rounded-full sl-bg-stachelock-600 sl-font-semibold sl-text-white' : ''\">\n {{ day.day }}\n </span>\n </button>\n </div>\n </div>\n\n <div class=\"sl-flex sl-flex-auto\">\n <div class=\"sl-w-14 sl-flex-none sl-bg-white sl-ring-1 sl-ring-gray-100\" />\n <div class=\"sl-grid sl-flex-auto sl-grid-cols-1 sl-grid-rows-1\">\n <!-- Hour grid -->\n <div class=\"sl-col-start-1 sl-col-end-2 sl-row-start-1 sl-grid sl-divide-y sl-divide-gray-100\" style=\"grid-template-rows: repeat(48, minmax(3.5rem, 1fr))\">\n <div ref=\"containerOffset\" class=\"sl-row-end-1 sl-h-7\"></div>\n <template v-for=\"hour in hours\" :key=\"hour\">\n <div class=\"sl-relative\">\n <div class=\"sl-sticky sl-left-0 sl-z-20 -sl-ml-14 -sl-mt-2.5 sl-w-14 sl-pr-2 sl-text-right sl-text-xs sl-leading-5 sl-text-gray-400\">{{ hour }}</div>\n </div>\n <div></div>\n </template>\n </div>\n\n <!-- Events -->\n <ol class=\"sl-col-end-2 sl-row-start-1 sl-grid sl-grid-cols-1\" style=\"grid-template-rows: 1.75rem repeat(288, minmax(0, 1fr)) auto\">\n <template v-for=\"day in filteredDays\" :key=\"day.date\">\n <template v-if=\"day.events && day.events.length\">\n <li v-for=\"event in day.events\" :key=\"event.id\" class=\"sl-relative sl-mt-px sl-flex\" :style=\"`grid-row: ${calculateGridRow(event.datetime)} / span ${calculateGridSpan(event.startTime?.dateTime, event.endTime?.dateTime)}`\">\n <button @click=\"handleSelectEvent(event.id)\" class=\"sl-justify-start sl-group sl-absolute sl-inset-1 sl-flex sl-flex-col sl-overflow-y-auto sl-rounded-lg sl-bg-blue-50 sl-p-2 sl-text-xs sl-leading-5 hover:sl-bg-blue-100\">\n <p class=\"sl-order-1 sl-font-semibold sl-text-blue-700\">{{ event.name }}</p>\n <p class=\"sl-text-blue-500 group-hover:sl-text-blue-700\">\n <time :datetime=\"event.datetime\">{{ formatTime(event.datetime) }} {{ event.startTime?.shortTimeZone }}</time>\n </p>\n </button>\n </li>\n </template>\n </template>\n </ol>\n </div>\n </div>\n </div>\n </div>\n <div class=\"md:sl-block sl-hidden sl-w-1/2 sl-max-w-md sl-flex-none sl-border-l sl-border-gray-100 sl-px-8 sl-py-10\">\n <!-- Placeholder for side panel hook (omitted for library) -->\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, onMounted } from 'vue';\nimport type { CalendarDay } from '@/utils/calendar';\nimport { calculateGridRow, calculateGridSpan, formatTime } from '@/utils/calendar';\n\nconst props = defineProps<{ days: Array<CalendarDay> }>();\nconst emit = defineEmits(['selectDay', 'select:event']);\n\nconst container = ref<HTMLElement | null>(null);\nconst containerNav = ref<HTMLElement | null>(null);\nconst containerOffset = ref<HTMLElement | null>(null);\nconst activeDay = ref<CalendarDay | null>(null);\n\nconst hours = [\n '12AM','1AM','2AM','3AM','4AM','5AM','6AM','7AM','8AM','9AM','10AM','11AM',\n '12PM','1PM','2PM','3PM','4PM','5PM','6PM','7PM','8PM','9PM','10PM','11PM'\n];\n\nconst isActiveDay = (day: CalendarDay) => activeDay.value === day;\nconst setActiveDay = (day: CalendarDay) => { activeDay.value = day; emit('selectDay', day); };\nconst handleSelectEvent = (eventId: string | number) => emit('select:event', eventId);\n\nconst filteredDays = computed(() => activeDay.value ? [activeDay.value] : props.days);\n\nonMounted(() => {\n const currentMinute = new Date().getHours() * 60;\n const containerElement = container.value;\n const containerNavElement = containerNav.value;\n const containerOffsetElement = containerOffset.value;\n if (containerElement && containerNavElement && containerOffsetElement) {\n containerElement.scrollTop = ((containerElement.scrollHeight - containerNavElement.offsetHeight - containerOffsetElement.offsetHeight) * currentMinute) / 1440;\n }\n});\n</script>\n\n<style scoped>\n</style>\n\n\n"],"names":["props","__props","emit","__emit","container","ref","containerNav","containerOffset","activeDay","hours","isActiveDay","day","setActiveDay","handleSelectEvent","eventId","filteredDays","computed","onMounted","currentMinute","containerElement","containerNavElement","containerOffsetElement","_createElementVNode","_hoisted_1","_hoisted_2","_createElementBlock","_Fragment","_renderList","days","$event","_normalizeClass","_toDisplayString","_hoisted_4","_hoisted_5","_hoisted_6","hour","_hoisted_7","_hoisted_8","_hoisted_9","_openBlock","event","_unref","calculateGridRow","calculateGridSpan","_hoisted_11","_hoisted_12","formatTime","_hoisted_13"],"mappings":"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"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { defineComponent as m, createElementBlock as t, openBlock as e, createCommentVNode as i, renderSlot as a, createElementVNode as o, normalizeClass as n, toDisplayString as r } from "vue";
|
|
2
|
+
const u = { class: "sl-relative" }, c = {
|
|
3
|
+
key: 0,
|
|
4
|
+
class: "sl-py-16 lg:sl-ml-12 sl-mx-2"
|
|
5
|
+
}, g = { class: "sl-mx-auto sl-max-w-7xl" }, h = { class: "sl-mx-auto sl-max-w-2xl lg:sl-mx-0" }, y = { class: "sl-h-2" }, f = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "sl-mt-1"
|
|
8
|
+
}, x = {
|
|
9
|
+
key: 1,
|
|
10
|
+
class: "sl-mx-auto sl-z-50 sl-flex sl-h-16 lg:sl-h-16 sl-border-gray-900/10"
|
|
11
|
+
}, b = { class: "sl-flex sl-h-16 lg:sl-h-16 sl-w-full sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-justify-between" }, v = { class: "sl-flex sl-justify-end sl-items-center sl-ml-auto" }, $ = {
|
|
12
|
+
key: 2,
|
|
13
|
+
class: "lg:sl-mx-12 sl-mx-2 sl-pb-16"
|
|
14
|
+
}, k = {
|
|
15
|
+
key: 5,
|
|
16
|
+
class: "lg:sl-mx-12 sl-mx-2 sl-pb-16"
|
|
17
|
+
}, C = /* @__PURE__ */ m({
|
|
18
|
+
__name: "DefaultLayout",
|
|
19
|
+
props: {
|
|
20
|
+
title: {
|
|
21
|
+
type: String,
|
|
22
|
+
required: !1,
|
|
23
|
+
default: ""
|
|
24
|
+
},
|
|
25
|
+
titleClass: {
|
|
26
|
+
type: String,
|
|
27
|
+
default: "sl-text-4xl sl-font-bold sl-tracking-tight sl-text-gray-800"
|
|
28
|
+
},
|
|
29
|
+
subtitle: {
|
|
30
|
+
type: String,
|
|
31
|
+
required: !1,
|
|
32
|
+
default: ""
|
|
33
|
+
},
|
|
34
|
+
subtitleClass: {
|
|
35
|
+
type: String,
|
|
36
|
+
default: "sl-text-lg sl-leading-8 sl-text-gray-600"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
setup(l) {
|
|
40
|
+
return (s, d) => (e(), t("div", u, [
|
|
41
|
+
l.title ? (e(), t("div", c, [
|
|
42
|
+
o("div", g, [
|
|
43
|
+
o("div", h, [
|
|
44
|
+
o("h1", {
|
|
45
|
+
class: n(l.titleClass)
|
|
46
|
+
}, r(l.title), 3),
|
|
47
|
+
l.subtitle ? (e(), t("p", {
|
|
48
|
+
key: 0,
|
|
49
|
+
class: n([l.subtitleClass, "sl-mt-6"])
|
|
50
|
+
}, r(l.subtitle), 3)) : i("", !0),
|
|
51
|
+
o("div", y, [
|
|
52
|
+
s.$slots.bottomCaption ? (e(), t("div", f, [
|
|
53
|
+
a(s.$slots, "bottomCaption")
|
|
54
|
+
])) : i("", !0)
|
|
55
|
+
])
|
|
56
|
+
])
|
|
57
|
+
])
|
|
58
|
+
])) : !l.title && s.$slots.right ? (e(), t("header", x, [
|
|
59
|
+
o("div", b, [
|
|
60
|
+
d[0] || (d[0] = o("div", { class: "sl-hidden lg:sl-flex lg:sl-justify-start lg:sl-items-center" }, null, -1)),
|
|
61
|
+
o("div", v, [
|
|
62
|
+
a(s.$slots, "right")
|
|
63
|
+
])
|
|
64
|
+
])
|
|
65
|
+
])) : i("", !0),
|
|
66
|
+
s.$slots.main ? (e(), t("div", $, [
|
|
67
|
+
a(s.$slots, "main")
|
|
68
|
+
])) : i("", !0),
|
|
69
|
+
s.$slots.container ? (e(), t("div", {
|
|
70
|
+
key: 3,
|
|
71
|
+
class: n(l.title ? "sl-pb-12" : "sl-my-4 sm:sl-py-12")
|
|
72
|
+
}, [
|
|
73
|
+
a(s.$slots, "container")
|
|
74
|
+
], 2)) : i("", !0),
|
|
75
|
+
s.$slots.home ? a(s.$slots, "home", { key: 4 }) : i("", !0),
|
|
76
|
+
s.$slots.default ? (e(), t("div", k, [
|
|
77
|
+
a(s.$slots, "default")
|
|
78
|
+
])) : i("", !0)
|
|
79
|
+
]));
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
export {
|
|
83
|
+
C as _
|
|
84
|
+
};
|
|
85
|
+
//# sourceMappingURL=DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js","sources":["../src/components/layouts/DefaultLayout.vue"],"sourcesContent":["<template>\n <div class=\"sl-relative\">\n <!-- Header with title -->\n <div v-if=\"title\" class=\"sl-py-16 lg:sl-ml-12 sl-mx-2\">\n <div class=\"sl-mx-auto sl-max-w-7xl\">\n <div class=\"sl-mx-auto sl-max-w-2xl lg:sl-mx-0\">\n <h1 :class=\"titleClass\">{{ title }}</h1>\n <p v-if=\"subtitle\" :class=\"subtitleClass\" class=\"sl-mt-6\">{{ subtitle }}</p>\n <div class=\"sl-h-2\">\n <template v-if=\"$slots.bottomCaption\">\n <div class=\"sl-mt-1\">\n <slot name=\"bottomCaption\"></slot>\n </div>\n </template>\n </div>\n </div>\n </div>\n </div>\n\n <!-- Header without title - for right slot only -->\n <header v-else-if=\"!title && $slots.right\" class=\"sl-mx-auto sl-z-50 sl-flex sl-h-16 lg:sl-h-16 sl-border-gray-900/10\">\n <div class=\"sl-flex sl-h-16 lg:sl-h-16 sl-w-full sl-px-4 sm:sl-px-6 lg:sl-px-8 sl-justify-between\">\n <div class=\"sl-hidden lg:sl-flex lg:sl-justify-start lg:sl-items-center\">\n <!-- Empty space to match positioning -->\n </div>\n <div class=\"sl-flex sl-justify-end sl-items-center sl-ml-auto\">\n <slot name=\"right\"></slot>\n </div>\n </div>\n </header>\n\n <!-- Main content slot -->\n <template v-if=\"$slots.main\">\n <div class=\"lg:sl-mx-12 sl-mx-2 sl-pb-16\">\n <slot name=\"main\"></slot>\n </div>\n </template>\n\n <!-- Container slot -->\n <template v-if=\"$slots.container\">\n <div :class=\"!title ? 'sl-my-4 sm:sl-py-12' : 'sl-pb-12'\">\n <slot name=\"container\"></slot>\n </div>\n </template>\n\n <!-- Home slot -->\n <template v-if=\"$slots.home\">\n <slot name=\"home\"></slot>\n </template>\n\n <!-- Default slot -->\n <template v-if=\"$slots.default\">\n <div class=\"lg:sl-mx-12 sl-mx-2 sl-pb-16\">\n <slot></slot>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\ndefineProps({\n title: {\n type: String,\n required: false,\n default: ''\n },\n titleClass: {\n type: String,\n default: 'sl-text-4xl sl-font-bold sl-tracking-tight sl-text-gray-800'\n },\n subtitle: {\n type: String,\n required: false,\n default: ''\n },\n subtitleClass: {\n type: String,\n default: 'sl-text-lg sl-leading-8 sl-text-gray-600'\n }\n});\n</script>\n\n<style scoped>\n</style>\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","__props","_hoisted_2","_createElementVNode","_hoisted_3","_hoisted_4","_normalizeClass","_hoisted_5","$slots","_hoisted_6","_renderSlot","_ctx","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBACEA,EAAA,GAAAC,EAuDM,OAvDNC,GAuDM;AAAA,MArDOC,EAAA,SAAXH,EAAA,GAAAC,EAcM,OAdNG,GAcM;AAAA,QAbJC,EAYM,OAZNC,GAYM;AAAA,UAXJD,EAUM,OAVNE,GAUM;AAAA,YATJF,EAAwC,MAAA;AAAA,cAAnC,SAAOF,EAAA,UAAU;AAAA,YAAA,KAAKA,EAAA,KAAK,GAAA,CAAA;AAAA,YACvBA,EAAA,iBAATF,EAA4E,KAAA;AAAA;cAAxD,OAAKO,EAAA,CAAEL,EAAA,eAAqB,SAAS,CAAA;AAAA,YAAA,KAAIA,EAAA,QAAQ,GAAA,CAAA;YACrEE,EAMM,OANNI,GAMM;AAAA,cALYC,EAAAA,OAAO,iBACrBV,KAAAC,EAEM,OAFNU,GAEM;AAAA,gBADJC,EAAkCC,EAAA,QAAA,eAAA;AAAA,cAAA;;;;aAS1BV,EAAA,SAASO,EAAAA,OAAO,SAApCV,EAAA,GAAAC,EASS,UATTa,GASS;AAAA,QARPT,EAOM,OAPNU,GAOM;AAAA,0BANJV,EAEM,OAAA,EAFD,OAAM,8DAAA,GAA6D,MAAA,EAAA;AAAA,UAGxEA,EAEM,OAFNW,GAEM;AAAA,YADJJ,EAA0BC,EAAA,QAAA,OAAA;AAAA,UAAA;;;MAMhBH,EAAAA,OAAO,QACrBV,KAAAC,EAEM,OAFNgB,GAEM;AAAA,QADJL,EAAyBC,EAAA,QAAA,MAAA;AAAA,MAAA;MAKbH,EAAAA,OAAO,kBACrBT,EAEM,OAAA;AAAA;QAFA,SAAQE,EAAA,QAAK,aAAA,qBAAA;AAAA,MAAA;QACjBS,EAA8BC,EAAA,QAAA,WAAA;AAAA,MAAA;MAKlBH,EAAAA,OAAO,OACrBE,EAAyBC,EAAA,QAAA,QAAA,EAAA,KAAA,EAAA,CAAA;MAIXH,EAAAA,OAAO,WACrBV,KAAAC,EAEM,OAFNiB,GAEM;AAAA,QADJN,EAAaC,EAAA,QAAA,SAAA;AAAA,MAAA;;;;"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { defineComponent as L, ref as q, reactive as G, watch as v, computed as h, createElementBlock as o, openBlock as l, withModifiers as J, normalizeClass as d, unref as p, createCommentVNode as n, toDisplayString as r, Fragment as V, renderList as k, createElementVNode as i, createBlock as C, createVNode as B, withCtx as F, createTextVNode as _ } from "vue";
|
|
2
|
+
import { useForm as K } from "vee-validate";
|
|
3
|
+
import { ExclamationCircleIcon as P } from "@heroicons/vue/24/outline";
|
|
4
|
+
import S from "./components/Button.js";
|
|
5
|
+
import { _ as Q } from "./DynamicFormField.vue_vue_type_script_setup_true_lang-qAwVNm--.js";
|
|
6
|
+
const W = {
|
|
7
|
+
key: 0,
|
|
8
|
+
class: "sl-mb-6"
|
|
9
|
+
}, X = {
|
|
10
|
+
key: 0,
|
|
11
|
+
class: "sl-text-lg sl-font-semibold sl-text-gray-900 sl-mb-2"
|
|
12
|
+
}, Y = {
|
|
13
|
+
key: 1,
|
|
14
|
+
class: "sl-text-sm sl-text-gray-600"
|
|
15
|
+
}, Z = {
|
|
16
|
+
key: 0,
|
|
17
|
+
class: "sl-mb-4"
|
|
18
|
+
}, ee = {
|
|
19
|
+
key: 0,
|
|
20
|
+
class: "sl-text-md sl-font-medium sl-text-gray-900 sl-mb-1"
|
|
21
|
+
}, te = {
|
|
22
|
+
key: 1,
|
|
23
|
+
class: "sl-text-sm sl-text-gray-600"
|
|
24
|
+
}, se = {
|
|
25
|
+
key: 2,
|
|
26
|
+
class: "sl-mt-4"
|
|
27
|
+
}, ae = { class: "sl-bg-red-50 sl-border sl-border-red-200 sl-rounded-md sl-p-4" }, le = { class: "sl-flex" }, oe = { class: "sl-ml-3" }, ne = { class: "sl-mt-2 sl-text-sm sl-text-red-700" }, ge = /* @__PURE__ */ L({
|
|
28
|
+
__name: "DynamicForm",
|
|
29
|
+
props: {
|
|
30
|
+
schema: {},
|
|
31
|
+
modelValue: {},
|
|
32
|
+
loading: { type: Boolean },
|
|
33
|
+
showActions: { type: Boolean, default: !0 },
|
|
34
|
+
showCancelButton: { type: Boolean, default: !1 },
|
|
35
|
+
submitButtonText: {},
|
|
36
|
+
cancelButtonText: {},
|
|
37
|
+
submitButtonVariant: { default: "primary" },
|
|
38
|
+
actionsAlignment: { default: "right" },
|
|
39
|
+
formError: {}
|
|
40
|
+
},
|
|
41
|
+
emits: ["update:modelValue", "submit", "cancel", "field-change"],
|
|
42
|
+
setup(E, { expose: w, emit: N }) {
|
|
43
|
+
const c = E, u = N, f = q(), a = G({}), { handleSubmit: j, setErrors: x, meta: g } = K({
|
|
44
|
+
keepValuesOnUnmount: !0
|
|
45
|
+
}), b = () => {
|
|
46
|
+
const e = { ...c.modelValue };
|
|
47
|
+
c.schema.sections.forEach((t) => {
|
|
48
|
+
t.fields.forEach((s) => {
|
|
49
|
+
s.name in e || (e[s.name] = s.defaultValue ?? $(s.type));
|
|
50
|
+
});
|
|
51
|
+
}), Object.assign(a, e);
|
|
52
|
+
};
|
|
53
|
+
v(
|
|
54
|
+
() => c.modelValue,
|
|
55
|
+
(e) => {
|
|
56
|
+
e && Object.assign(a, e);
|
|
57
|
+
},
|
|
58
|
+
{ deep: !0 }
|
|
59
|
+
), v(
|
|
60
|
+
a,
|
|
61
|
+
(e) => {
|
|
62
|
+
u("update:modelValue", { ...e });
|
|
63
|
+
},
|
|
64
|
+
{ deep: !0 }
|
|
65
|
+
), b();
|
|
66
|
+
const D = h(() => c.schema.sections.filter(
|
|
67
|
+
(e) => e.condition ? e.condition(a) : !0
|
|
68
|
+
)), A = h(() => {
|
|
69
|
+
const e = ["sl-space-y-6"];
|
|
70
|
+
return c.schema.className && e.push(c.schema.className), e.join(" ");
|
|
71
|
+
}), T = (e) => {
|
|
72
|
+
const t = [
|
|
73
|
+
"sl-grid",
|
|
74
|
+
"sl-gap-4"
|
|
75
|
+
], s = e.columns || 1;
|
|
76
|
+
return t.push("sl-grid-cols-1"), s > 1 && t.push(`md:sl-grid-cols-${Math.min(s, 3)}`), e.className && t.push(e.className), t.join(" ");
|
|
77
|
+
}, O = (e) => {
|
|
78
|
+
const t = [];
|
|
79
|
+
return e.colSpan && e.colSpan > 1 && t.push(`sl-col-span-${Math.min(e.colSpan, 3)}`), e.className && t.push(e.className), t.join(" ");
|
|
80
|
+
}, M = (e) => e.condition ? e.condition(a, e) : !0, U = h(() => g.value.valid), $ = (e) => {
|
|
81
|
+
switch (e) {
|
|
82
|
+
case "checkbox":
|
|
83
|
+
case "switch":
|
|
84
|
+
return !1;
|
|
85
|
+
case "select":
|
|
86
|
+
return null;
|
|
87
|
+
case "number":
|
|
88
|
+
return 0;
|
|
89
|
+
default:
|
|
90
|
+
return "";
|
|
91
|
+
}
|
|
92
|
+
}, y = j((e) => {
|
|
93
|
+
u("submit", e, { setErrors: x });
|
|
94
|
+
}), z = () => {
|
|
95
|
+
u("cancel");
|
|
96
|
+
}, R = (e, t) => {
|
|
97
|
+
u("field-change", e, t, a), e.onFieldChange && e.onFieldChange(t, e, a);
|
|
98
|
+
};
|
|
99
|
+
return w({
|
|
100
|
+
validate: async () => g.value.valid,
|
|
101
|
+
reset: () => {
|
|
102
|
+
Object.keys(a).forEach((e) => {
|
|
103
|
+
delete a[e];
|
|
104
|
+
}), b();
|
|
105
|
+
},
|
|
106
|
+
setFieldValue: (e, t) => {
|
|
107
|
+
a[e] = t;
|
|
108
|
+
},
|
|
109
|
+
getFieldValue: (e) => a[e],
|
|
110
|
+
formData: a,
|
|
111
|
+
formRef: f
|
|
112
|
+
}), (e, t) => (l(), o("form", {
|
|
113
|
+
ref_key: "formRef",
|
|
114
|
+
ref: f,
|
|
115
|
+
class: d(A.value),
|
|
116
|
+
onSubmit: t[0] || (t[0] = J(
|
|
117
|
+
//@ts-ignore
|
|
118
|
+
(...s) => p(y) && p(y)(...s),
|
|
119
|
+
["prevent"]
|
|
120
|
+
))
|
|
121
|
+
}, [
|
|
122
|
+
e.schema.title || e.schema.description ? (l(), o("div", W, [
|
|
123
|
+
e.schema.title ? (l(), o("h2", X, r(e.schema.title), 1)) : n("", !0),
|
|
124
|
+
e.schema.description ? (l(), o("p", Y, r(e.schema.description), 1)) : n("", !0)
|
|
125
|
+
])) : n("", !0),
|
|
126
|
+
(l(!0), o(V, null, k(D.value, (s, H) => (l(), o("div", {
|
|
127
|
+
key: s.id || H
|
|
128
|
+
}, [
|
|
129
|
+
s.title || s.description ? (l(), o("div", Z, [
|
|
130
|
+
s.title ? (l(), o("h3", ee, r(s.title), 1)) : n("", !0),
|
|
131
|
+
s.description ? (l(), o("p", te, r(s.description), 1)) : n("", !0)
|
|
132
|
+
])) : n("", !0),
|
|
133
|
+
i("div", {
|
|
134
|
+
class: d(T(s))
|
|
135
|
+
}, [
|
|
136
|
+
(l(!0), o(V, null, k(s.fields, (m) => (l(), o("div", {
|
|
137
|
+
key: m.name,
|
|
138
|
+
class: d(O(m))
|
|
139
|
+
}, [
|
|
140
|
+
M(m) ? (l(), C(Q, {
|
|
141
|
+
key: 0,
|
|
142
|
+
field: m,
|
|
143
|
+
modelValue: a[m.name],
|
|
144
|
+
"onUpdate:modelValue": (I) => a[m.name] = I,
|
|
145
|
+
"form-data": a,
|
|
146
|
+
onFieldChange: R
|
|
147
|
+
}, null, 8, ["field", "modelValue", "onUpdate:modelValue", "form-data"])) : n("", !0)
|
|
148
|
+
], 2))), 128))
|
|
149
|
+
], 2)
|
|
150
|
+
]))), 128)),
|
|
151
|
+
e.showActions ? (l(), o("div", {
|
|
152
|
+
key: 1,
|
|
153
|
+
class: d([
|
|
154
|
+
"sl-flex sl-gap-3",
|
|
155
|
+
e.actionsAlignment === "center" ? "sl-justify-center" : e.actionsAlignment === "right" ? "sl-justify-end" : "sl-justify-start"
|
|
156
|
+
])
|
|
157
|
+
}, [
|
|
158
|
+
e.showCancelButton ? (l(), C(S, {
|
|
159
|
+
key: 0,
|
|
160
|
+
variant: "outline",
|
|
161
|
+
disabled: e.loading,
|
|
162
|
+
type: "button",
|
|
163
|
+
onClick: z
|
|
164
|
+
}, {
|
|
165
|
+
default: F(() => [
|
|
166
|
+
_(r(e.cancelButtonText || "Cancel"), 1)
|
|
167
|
+
]),
|
|
168
|
+
_: 1
|
|
169
|
+
}, 8, ["disabled"])) : n("", !0),
|
|
170
|
+
B(S, {
|
|
171
|
+
variant: e.submitButtonVariant,
|
|
172
|
+
loading: e.loading,
|
|
173
|
+
disabled: !U.value || e.loading,
|
|
174
|
+
type: "submit"
|
|
175
|
+
}, {
|
|
176
|
+
default: F(() => [
|
|
177
|
+
_(r(e.submitButtonText || "Submit"), 1)
|
|
178
|
+
]),
|
|
179
|
+
_: 1
|
|
180
|
+
}, 8, ["variant", "loading", "disabled"])
|
|
181
|
+
], 2)) : n("", !0),
|
|
182
|
+
e.formError ? (l(), o("div", se, [
|
|
183
|
+
i("div", ae, [
|
|
184
|
+
i("div", le, [
|
|
185
|
+
B(p(P), { class: "sl-h-5 sl-w-5 sl-text-red-400" }),
|
|
186
|
+
i("div", oe, [
|
|
187
|
+
t[1] || (t[1] = i("h3", { class: "sl-text-sm sl-font-medium sl-text-red-800" }, " Form Error ", -1)),
|
|
188
|
+
i("div", ne, [
|
|
189
|
+
i("p", null, r(e.formError), 1)
|
|
190
|
+
])
|
|
191
|
+
])
|
|
192
|
+
])
|
|
193
|
+
])
|
|
194
|
+
])) : n("", !0)
|
|
195
|
+
], 34));
|
|
196
|
+
}
|
|
197
|
+
});
|
|
198
|
+
export {
|
|
199
|
+
ge as _
|
|
200
|
+
};
|
|
201
|
+
//# sourceMappingURL=DynamicForm.vue_vue_type_script_setup_true_lang-BKhcXkNG.js.map
|