@stachelock/ui 0.1.1 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (212) hide show
  1. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-Cirr0hMB.js +70 -0
  2. package/dist/CalendarHeader.vue_vue_type_script_setup_true_lang-Cirr0hMB.js.map +1 -0
  3. package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-tYAo46wK.js +186 -0
  4. package/dist/CheckboxInput.vue_vue_type_script_setup_true_lang-tYAo46wK.js.map +1 -0
  5. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-2dJNxQUF.js +1300 -0
  6. package/dist/ComboboxInput.vue_vue_type_script_setup_true_lang-2dJNxQUF.js.map +1 -0
  7. package/dist/DashboardLayout.vue_vue_type_script_setup_true_lang-VeZhdPhj.js +187 -0
  8. package/dist/DashboardLayout.vue_vue_type_script_setup_true_lang-VeZhdPhj.js.map +1 -0
  9. package/dist/DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js +123 -0
  10. package/dist/DayCalendar.vue_vue_type_script_setup_true_lang-xE5bCa3O.js.map +1 -0
  11. package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js +85 -0
  12. package/dist/DefaultLayout.vue_vue_type_script_setup_true_lang-BZAz6aC-.js.map +1 -0
  13. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-BpfPAZiT.js +217 -0
  14. package/dist/DynamicForm.vue_vue_type_script_setup_true_lang-BpfPAZiT.js.map +1 -0
  15. package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-DvT03FIS.js +169 -0
  16. package/dist/DynamicFormField.vue_vue_type_script_setup_true_lang-DvT03FIS.js.map +1 -0
  17. package/dist/EventCard.vue_vue_type_script_setup_true_lang-YV1lfgUY.js +157 -0
  18. package/dist/EventCard.vue_vue_type_script_setup_true_lang-YV1lfgUY.js.map +1 -0
  19. package/dist/EventsList.vue_vue_type_script_setup_true_lang-Cn_WOpZi.js +103 -0
  20. package/dist/EventsList.vue_vue_type_script_setup_true_lang-Cn_WOpZi.js.map +1 -0
  21. package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js +49 -0
  22. package/dist/HeaderLayout.vue_vue_type_script_setup_true_lang-BY2G6hCc.js.map +1 -0
  23. package/dist/MonthCalendar.vue_vue_type_script_setup_true_lang-B9Bs0z8j.js +66 -0
  24. package/dist/MonthCalendar.vue_vue_type_script_setup_true_lang-B9Bs0z8j.js.map +1 -0
  25. package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2WURj34G.js +29 -0
  26. package/dist/NavigationGroup.vue_vue_type_script_setup_true_lang-2WURj34G.js.map +1 -0
  27. package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-DiNg3gz2.js +51 -0
  28. package/dist/NavigationItem.vue_vue_type_script_setup_true_lang-DiNg3gz2.js.map +1 -0
  29. package/dist/SelectInput.vue_vue_type_script_setup_true_lang-BPjHLHdM.js +522 -0
  30. package/dist/SelectInput.vue_vue_type_script_setup_true_lang-BPjHLHdM.js.map +1 -0
  31. package/dist/SidebarLayout.vue_vue_type_script_setup_true_lang-J1nfUTdM.js +174 -0
  32. package/dist/SidebarLayout.vue_vue_type_script_setup_true_lang-J1nfUTdM.js.map +1 -0
  33. package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-BFr2SByh.js +273 -0
  34. package/dist/SwitchInput.vue_vue_type_script_setup_true_lang-BFr2SByh.js.map +1 -0
  35. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-DRR6jt_8.js +240 -0
  36. package/dist/TagifyInput.vue_vue_type_script_setup_true_lang-DRR6jt_8.js.map +1 -0
  37. package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-CbR651TU.js +158 -0
  38. package/dist/TextAreaInput.vue_vue_type_script_setup_true_lang-CbR651TU.js.map +1 -0
  39. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-CDNjUA1L.js +108 -0
  40. package/dist/UiAvatar.vue_vue_type_script_setup_true_lang-CDNjUA1L.js.map +1 -0
  41. package/dist/UiBreadcrumb.vue_vue_type_script_setup_true_lang-quGuN9v4.js +82 -0
  42. package/dist/UiBreadcrumb.vue_vue_type_script_setup_true_lang-quGuN9v4.js.map +1 -0
  43. package/dist/UiLoading.vue_vue_type_script_setup_true_lang-DCz52-Me.js +131 -0
  44. package/dist/UiLoading.vue_vue_type_script_setup_true_lang-DCz52-Me.js.map +1 -0
  45. package/dist/UiModal.vue_vue_type_script_setup_true_lang-SAo39zpS.js +163 -0
  46. package/dist/UiModal.vue_vue_type_script_setup_true_lang-SAo39zpS.js.map +1 -0
  47. package/dist/UiNavLink.vue_vue_type_script_setup_true_lang-Bz5oiCCk.js +222 -0
  48. package/dist/UiNavLink.vue_vue_type_script_setup_true_lang-Bz5oiCCk.js.map +1 -0
  49. package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-0zFKwh43.js +46 -0
  50. package/dist/UiProgressBar.vue_vue_type_script_setup_true_lang-0zFKwh43.js.map +1 -0
  51. package/dist/UiTable.vue_vue_type_script_setup_true_lang-hI1_xamh.js +211 -0
  52. package/dist/UiTable.vue_vue_type_script_setup_true_lang-hI1_xamh.js.map +1 -0
  53. package/dist/UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js +66 -0
  54. package/dist/UiTransition.vue_vue_type_script_setup_true_lang-DwBTj18t.js.map +1 -0
  55. package/dist/WeekCalendar.vue_vue_type_script_setup_true_lang-DAFQiRI9.js +154 -0
  56. package/dist/WeekCalendar.vue_vue_type_script_setup_true_lang-DAFQiRI9.js.map +1 -0
  57. package/dist/XMarkIcon-C4wILUsz.js +40 -0
  58. package/dist/XMarkIcon-C4wILUsz.js.map +1 -0
  59. package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-BfJkvmpN.js +29 -0
  60. package/dist/YearCalendar.vue_vue_type_script_setup_true_lang-BfJkvmpN.js.map +1 -0
  61. package/dist/_plugin-vue_export-helper-CHgC5LLL.js +10 -0
  62. package/dist/_plugin-vue_export-helper-CHgC5LLL.js.map +1 -0
  63. package/dist/calculate-active-index-CksdUwZY.js +87 -0
  64. package/dist/calculate-active-index-CksdUwZY.js.map +1 -0
  65. package/dist/calendar-905Ofszh.js +77 -0
  66. package/dist/calendar-905Ofszh.js.map +1 -0
  67. package/dist/calendars/CalendarDashboard.d.ts +3 -0
  68. package/dist/calendars/CalendarDashboard.js +72 -0
  69. package/dist/calendars/CalendarDashboard.js.map +1 -0
  70. package/dist/calendars/CalendarHeader.d.ts +3 -0
  71. package/dist/calendars/CalendarHeader.js +5 -0
  72. package/dist/calendars/CalendarHeader.js.map +1 -0
  73. package/dist/calendars/DayCalendar.d.ts +3 -0
  74. package/dist/calendars/DayCalendar.js +5 -0
  75. package/dist/calendars/DayCalendar.js.map +1 -0
  76. package/dist/calendars/EventCard.d.ts +3 -0
  77. package/dist/calendars/EventCard.js +5 -0
  78. package/dist/calendars/EventCard.js.map +1 -0
  79. package/dist/calendars/EventsList.d.ts +3 -0
  80. package/dist/calendars/EventsList.js +5 -0
  81. package/dist/calendars/EventsList.js.map +1 -0
  82. package/dist/calendars/MonthCalendar.d.ts +3 -0
  83. package/dist/calendars/MonthCalendar.js +5 -0
  84. package/dist/calendars/MonthCalendar.js.map +1 -0
  85. package/dist/calendars/WeekCalendar.d.ts +3 -0
  86. package/dist/calendars/WeekCalendar.js +5 -0
  87. package/dist/calendars/WeekCalendar.js.map +1 -0
  88. package/dist/calendars/YearCalendar.d.ts +3 -0
  89. package/dist/calendars/YearCalendar.js +5 -0
  90. package/dist/calendars/YearCalendar.js.map +1 -0
  91. package/dist/components/Avatar.d.ts +3 -0
  92. package/dist/components/Avatar.js +5 -0
  93. package/dist/components/Avatar.js.map +1 -0
  94. package/dist/components/Badge.d.ts +3 -0
  95. package/dist/components/Badge.js +42 -0
  96. package/dist/components/Badge.js.map +1 -0
  97. package/dist/components/Breadcrumb.d.ts +3 -0
  98. package/dist/components/Breadcrumb.js +5 -0
  99. package/dist/components/Breadcrumb.js.map +1 -0
  100. package/dist/components/Button.d.ts +3 -0
  101. package/dist/components/Button.js +197 -0
  102. package/dist/components/Button.js.map +1 -0
  103. package/dist/components/Loading.d.ts +3 -0
  104. package/dist/components/Loading.js +5 -0
  105. package/dist/components/Loading.js.map +1 -0
  106. package/dist/components/LoadingDots.d.ts +3 -0
  107. package/dist/components/LoadingDots.js +69 -0
  108. package/dist/components/LoadingDots.js.map +1 -0
  109. package/dist/components/Modal.d.ts +3 -0
  110. package/dist/components/Modal.js +5 -0
  111. package/dist/components/Modal.js.map +1 -0
  112. package/dist/components/NavLink.d.ts +3 -0
  113. package/dist/components/NavLink.js +5 -0
  114. package/dist/components/NavLink.js.map +1 -0
  115. package/dist/components/ProgressBar.d.ts +3 -0
  116. package/dist/components/ProgressBar.js +5 -0
  117. package/dist/components/ProgressBar.js.map +1 -0
  118. package/dist/components/RadialProgressBar.d.ts +3 -0
  119. package/dist/components/RadialProgressBar.js +5 -0
  120. package/dist/components/RadialProgressBar.js.map +1 -0
  121. package/dist/components/Table.d.ts +3 -0
  122. package/dist/components/Table.js +5 -0
  123. package/dist/components/Table.js.map +1 -0
  124. package/dist/components/TextInput.d.ts +3 -0
  125. package/dist/components/TextInput.js +111 -0
  126. package/dist/components/TextInput.js.map +1 -0
  127. package/dist/components/Transition.d.ts +3 -0
  128. package/dist/components/Transition.js +5 -0
  129. package/dist/components/Transition.js.map +1 -0
  130. package/dist/description-CBd3BJ9O.js +30 -0
  131. package/dist/description-CBd3BJ9O.js.map +1 -0
  132. package/dist/dialog-U1KNiPzc.js +493 -0
  133. package/dist/dialog-U1KNiPzc.js.map +1 -0
  134. package/dist/form-DQKuKVqJ.js +51 -0
  135. package/dist/form-DQKuKVqJ.js.map +1 -0
  136. package/dist/forms/DynamicForm.d.ts +3 -0
  137. package/dist/forms/DynamicForm.js +5 -0
  138. package/dist/forms/DynamicForm.js.map +1 -0
  139. package/dist/forms/DynamicFormField.d.ts +3 -0
  140. package/dist/forms/DynamicFormField.js +5 -0
  141. package/dist/forms/DynamicFormField.js.map +1 -0
  142. package/dist/forms/FormFieldWrapper.d.ts +3 -0
  143. package/dist/forms/FormFieldWrapper.js +187 -0
  144. package/dist/forms/FormFieldWrapper.js.map +1 -0
  145. package/dist/id-DafBB_QF.js +20 -0
  146. package/dist/id-DafBB_QF.js.map +1 -0
  147. package/dist/index.js +266 -4564
  148. package/dist/index.js.map +1 -1
  149. package/dist/inputs/CheckboxInput.d.ts +3 -0
  150. package/dist/inputs/CheckboxInput.js +5 -0
  151. package/dist/inputs/CheckboxInput.js.map +1 -0
  152. package/dist/inputs/ComboboxInput.d.ts +3 -0
  153. package/dist/inputs/ComboboxInput.js +5 -0
  154. package/dist/inputs/ComboboxInput.js.map +1 -0
  155. package/dist/inputs/SelectInput.d.ts +3 -0
  156. package/dist/inputs/SelectInput.js +5 -0
  157. package/dist/inputs/SelectInput.js.map +1 -0
  158. package/dist/inputs/SwitchInput.d.ts +3 -0
  159. package/dist/inputs/SwitchInput.js +5 -0
  160. package/dist/inputs/SwitchInput.js.map +1 -0
  161. package/dist/inputs/TagifyInput.d.ts +3 -0
  162. package/dist/inputs/TagifyInput.js +5 -0
  163. package/dist/inputs/TagifyInput.js.map +1 -0
  164. package/dist/inputs/TextAreaInput.d.ts +3 -0
  165. package/dist/inputs/TextAreaInput.js +5 -0
  166. package/dist/inputs/TextAreaInput.js.map +1 -0
  167. package/dist/keyboard-DJD8TwH4.js +113 -0
  168. package/dist/keyboard-DJD8TwH4.js.map +1 -0
  169. package/dist/layouts/DashboardLayout.d.ts +3 -0
  170. package/dist/layouts/DashboardLayout.js +5 -0
  171. package/dist/layouts/DashboardLayout.js.map +1 -0
  172. package/dist/layouts/DefaultLayout.d.ts +3 -0
  173. package/dist/layouts/DefaultLayout.js +5 -0
  174. package/dist/layouts/DefaultLayout.js.map +1 -0
  175. package/dist/layouts/HeaderLayout.d.ts +3 -0
  176. package/dist/layouts/HeaderLayout.js +5 -0
  177. package/dist/layouts/HeaderLayout.js.map +1 -0
  178. package/dist/layouts/NavigationGroup.d.ts +3 -0
  179. package/dist/layouts/NavigationGroup.js +5 -0
  180. package/dist/layouts/NavigationGroup.js.map +1 -0
  181. package/dist/layouts/NavigationItem.d.ts +3 -0
  182. package/dist/layouts/NavigationItem.js +5 -0
  183. package/dist/layouts/NavigationItem.js.map +1 -0
  184. package/dist/layouts/SidebarLayout.d.ts +3 -0
  185. package/dist/layouts/SidebarLayout.js +5 -0
  186. package/dist/layouts/SidebarLayout.js.map +1 -0
  187. package/dist/open-closed-DgcU-HDT.js +179 -0
  188. package/dist/open-closed-DgcU-HDT.js.map +1 -0
  189. package/dist/src/components/UiLoadingDots.d.ts +1 -1
  190. package/dist/src/components/UiNavLink.d.ts +1 -1
  191. package/dist/src/components/inputs/ComboboxInput.d.ts +2 -2
  192. package/dist/src/components/inputs/SelectInput.d.ts +2 -2
  193. package/dist/src/components/layouts/DashboardLayout.d.ts.map +1 -1
  194. package/dist/src/components/layouts/DefaultLayout.d.ts +1 -1
  195. package/dist/src/components/layouts/SidebarLayout.d.ts.map +1 -1
  196. package/dist/transition-CuxxW9dY.js +209 -0
  197. package/dist/transition-CuxxW9dY.js.map +1 -0
  198. package/package.json +2 -3
  199. package/dist/CheckboxInput-rWkcde69.js +0 -5
  200. package/dist/CheckboxInput-rWkcde69.js.map +0 -1
  201. package/dist/ComboboxInput-B98P_8CZ.js +0 -5
  202. package/dist/ComboboxInput-B98P_8CZ.js.map +0 -1
  203. package/dist/SelectInput-B5liNv7H.js +0 -5
  204. package/dist/SelectInput-B5liNv7H.js.map +0 -1
  205. package/dist/SwitchInput-D1k9O8gn.js +0 -5
  206. package/dist/SwitchInput-D1k9O8gn.js.map +0 -1
  207. package/dist/TextAreaInput-Di6Kstic.js +0 -5
  208. package/dist/TextAreaInput-Di6Kstic.js.map +0 -1
  209. package/dist/UiLoading-BuzCrLqO.js +0 -5
  210. package/dist/UiLoading-BuzCrLqO.js.map +0 -1
  211. package/dist/index.umd.cjs +0 -11
  212. package/dist/index.umd.cjs.map +0 -1
@@ -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,217 @@
1
+ import { createElementBlock as n, openBlock as a, createElementVNode as r, defineComponent as L, ref as q, reactive as G, watch as V, computed as h, withModifiers as I, normalizeClass as m, unref as p, createCommentVNode as o, toDisplayString as i, Fragment as C, renderList as w, createBlock as B, createVNode as F, withCtx as _, createTextVNode as S } from "vue";
2
+ import { useForm as J } from "vee-validate";
3
+ import j from "./components/Button.js";
4
+ import { _ as K } from "./DynamicFormField.vue_vue_type_script_setup_true_lang-DvT03FIS.js";
5
+ function P(f, g) {
6
+ return a(), n("svg", {
7
+ xmlns: "http://www.w3.org/2000/svg",
8
+ fill: "none",
9
+ viewBox: "0 0 24 24",
10
+ "stroke-width": "1.5",
11
+ stroke: "currentColor",
12
+ "aria-hidden": "true",
13
+ "data-slot": "icon"
14
+ }, [
15
+ r("path", {
16
+ "stroke-linecap": "round",
17
+ "stroke-linejoin": "round",
18
+ d: "M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z"
19
+ })
20
+ ]);
21
+ }
22
+ const Q = {
23
+ key: 0,
24
+ class: "sl-mb-6"
25
+ }, W = {
26
+ key: 0,
27
+ class: "sl-text-lg sl-font-semibold sl-text-gray-900 sl-mb-2"
28
+ }, X = {
29
+ key: 1,
30
+ class: "sl-text-sm sl-text-gray-600"
31
+ }, Y = {
32
+ key: 0,
33
+ class: "sl-mb-4"
34
+ }, ee = {
35
+ key: 0,
36
+ class: "sl-text-md sl-font-medium sl-text-gray-900 sl-mb-1"
37
+ }, te = {
38
+ key: 1,
39
+ class: "sl-text-sm sl-text-gray-600"
40
+ }, se = {
41
+ key: 2,
42
+ class: "sl-mt-4"
43
+ }, ae = { class: "sl-bg-red-50 sl-border sl-border-red-200 sl-rounded-md sl-p-4" }, le = { class: "sl-flex" }, ne = { class: "sl-ml-3" }, oe = { class: "sl-mt-2 sl-text-sm sl-text-red-700" }, fe = /* @__PURE__ */ L({
44
+ __name: "DynamicForm",
45
+ props: {
46
+ schema: {},
47
+ modelValue: {},
48
+ loading: { type: Boolean },
49
+ showActions: { type: Boolean, default: !0 },
50
+ showCancelButton: { type: Boolean, default: !1 },
51
+ submitButtonText: {},
52
+ cancelButtonText: {},
53
+ submitButtonVariant: { default: "primary" },
54
+ actionsAlignment: { default: "right" },
55
+ formError: {}
56
+ },
57
+ emits: ["update:modelValue", "submit", "cancel", "field-change"],
58
+ setup(f, { expose: g, emit: x }) {
59
+ const c = f, d = x, b = q(), l = G({}), { handleSubmit: E, setErrors: N, meta: y } = J({
60
+ keepValuesOnUnmount: !0
61
+ }), v = () => {
62
+ const e = { ...c.modelValue };
63
+ c.schema.sections.forEach((t) => {
64
+ t.fields.forEach((s) => {
65
+ s.name in e || (e[s.name] = s.defaultValue ?? $(s.type));
66
+ });
67
+ }), Object.assign(l, e);
68
+ };
69
+ V(
70
+ () => c.modelValue,
71
+ (e) => {
72
+ e && Object.assign(l, e);
73
+ },
74
+ { deep: !0 }
75
+ ), V(
76
+ l,
77
+ (e) => {
78
+ d("update:modelValue", { ...e });
79
+ },
80
+ { deep: !0 }
81
+ ), v();
82
+ const D = h(() => c.schema.sections.filter(
83
+ (e) => e.condition ? e.condition(l) : !0
84
+ )), A = h(() => {
85
+ const e = ["sl-space-y-6"];
86
+ return c.schema.className && e.push(c.schema.className), e.join(" ");
87
+ }), T = (e) => {
88
+ const t = [
89
+ "sl-grid",
90
+ "sl-gap-4"
91
+ ], s = e.columns || 1;
92
+ 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(" ");
93
+ }, M = (e) => {
94
+ const t = [];
95
+ return e.colSpan && e.colSpan > 1 && t.push(`sl-col-span-${Math.min(e.colSpan, 3)}`), e.className && t.push(e.className), t.join(" ");
96
+ }, O = (e) => e.condition ? e.condition(l, e) : !0, U = h(() => y.value.valid), $ = (e) => {
97
+ switch (e) {
98
+ case "checkbox":
99
+ case "switch":
100
+ return !1;
101
+ case "select":
102
+ return null;
103
+ case "number":
104
+ return 0;
105
+ default:
106
+ return "";
107
+ }
108
+ }, k = E((e) => {
109
+ d("submit", e, { setErrors: N });
110
+ }), z = () => {
111
+ d("cancel");
112
+ }, H = (e, t) => {
113
+ d("field-change", e, t, l), e.onFieldChange && e.onFieldChange(t, e, l);
114
+ };
115
+ return g({
116
+ validate: async () => y.value.valid,
117
+ reset: () => {
118
+ Object.keys(l).forEach((e) => {
119
+ delete l[e];
120
+ }), v();
121
+ },
122
+ setFieldValue: (e, t) => {
123
+ l[e] = t;
124
+ },
125
+ getFieldValue: (e) => l[e],
126
+ formData: l,
127
+ formRef: b
128
+ }), (e, t) => (a(), n("form", {
129
+ ref_key: "formRef",
130
+ ref: b,
131
+ class: m(A.value),
132
+ onSubmit: t[0] || (t[0] = I(
133
+ //@ts-ignore
134
+ (...s) => p(k) && p(k)(...s),
135
+ ["prevent"]
136
+ ))
137
+ }, [
138
+ e.schema.title || e.schema.description ? (a(), n("div", Q, [
139
+ e.schema.title ? (a(), n("h2", W, i(e.schema.title), 1)) : o("", !0),
140
+ e.schema.description ? (a(), n("p", X, i(e.schema.description), 1)) : o("", !0)
141
+ ])) : o("", !0),
142
+ (a(!0), n(C, null, w(D.value, (s, R) => (a(), n("div", {
143
+ key: s.id || R
144
+ }, [
145
+ s.title || s.description ? (a(), n("div", Y, [
146
+ s.title ? (a(), n("h3", ee, i(s.title), 1)) : o("", !0),
147
+ s.description ? (a(), n("p", te, i(s.description), 1)) : o("", !0)
148
+ ])) : o("", !0),
149
+ r("div", {
150
+ class: m(T(s))
151
+ }, [
152
+ (a(!0), n(C, null, w(s.fields, (u) => (a(), n("div", {
153
+ key: u.name,
154
+ class: m(M(u))
155
+ }, [
156
+ O(u) ? (a(), B(K, {
157
+ key: 0,
158
+ field: u,
159
+ modelValue: l[u.name],
160
+ "onUpdate:modelValue": (Z) => l[u.name] = Z,
161
+ "form-data": l,
162
+ onFieldChange: H
163
+ }, null, 8, ["field", "modelValue", "onUpdate:modelValue", "form-data"])) : o("", !0)
164
+ ], 2))), 128))
165
+ ], 2)
166
+ ]))), 128)),
167
+ e.showActions ? (a(), n("div", {
168
+ key: 1,
169
+ class: m([
170
+ "sl-flex sl-gap-3",
171
+ e.actionsAlignment === "center" ? "sl-justify-center" : e.actionsAlignment === "right" ? "sl-justify-end" : "sl-justify-start"
172
+ ])
173
+ }, [
174
+ e.showCancelButton ? (a(), B(j, {
175
+ key: 0,
176
+ variant: "outline",
177
+ disabled: e.loading,
178
+ type: "button",
179
+ onClick: z
180
+ }, {
181
+ default: _(() => [
182
+ S(i(e.cancelButtonText || "Cancel"), 1)
183
+ ]),
184
+ _: 1
185
+ }, 8, ["disabled"])) : o("", !0),
186
+ F(j, {
187
+ variant: e.submitButtonVariant,
188
+ loading: e.loading,
189
+ disabled: !U.value || e.loading,
190
+ type: "submit"
191
+ }, {
192
+ default: _(() => [
193
+ S(i(e.submitButtonText || "Submit"), 1)
194
+ ]),
195
+ _: 1
196
+ }, 8, ["variant", "loading", "disabled"])
197
+ ], 2)) : o("", !0),
198
+ e.formError ? (a(), n("div", se, [
199
+ r("div", ae, [
200
+ r("div", le, [
201
+ F(p(P), { class: "sl-h-5 sl-w-5 sl-text-red-400" }),
202
+ r("div", ne, [
203
+ t[1] || (t[1] = r("h3", { class: "sl-text-sm sl-font-medium sl-text-red-800" }, " Form Error ", -1)),
204
+ r("div", oe, [
205
+ r("p", null, i(e.formError), 1)
206
+ ])
207
+ ])
208
+ ])
209
+ ])
210
+ ])) : o("", !0)
211
+ ], 34));
212
+ }
213
+ });
214
+ export {
215
+ fe as _
216
+ };
217
+ //# sourceMappingURL=DynamicForm.vue_vue_type_script_setup_true_lang-BpfPAZiT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DynamicForm.vue_vue_type_script_setup_true_lang-BpfPAZiT.js","sources":["../node_modules/@heroicons/vue/24/outline/esm/ExclamationCircleIcon.js","../src/components/forms/DynamicForm.vue"],"sourcesContent":["import { createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport default function render(_ctx, _cache) {\n return (_openBlock(), _createElementBlock(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n fill: \"none\",\n viewBox: \"0 0 24 24\",\n \"stroke-width\": \"1.5\",\n stroke: \"currentColor\",\n \"aria-hidden\": \"true\",\n \"data-slot\": \"icon\"\n }, [\n _createElementVNode(\"path\", {\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n d: \"M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z\"\n })\n ]))\n}","<template>\n <form\n ref=\"formRef\"\n :class=\"formClasses\"\n @submit.prevent=\"handleSubmit\"\n >\n <!-- Form title and description -->\n <div v-if=\"schema.title || schema.description\" class=\"sl-mb-6\">\n <h2 v-if=\"schema.title\" class=\"sl-text-lg sl-font-semibold sl-text-gray-900 sl-mb-2\">\n {{ schema.title }}\n </h2>\n <p v-if=\"schema.description\" class=\"sl-text-sm sl-text-gray-600\">\n {{ schema.description }}\n </p>\n </div>\n\n <!-- Form sections -->\n <div v-for=\"(section, sectionIndex) in formSections\" :key=\"section.id || sectionIndex\">\n <!-- Section header -->\n <div v-if=\"section.title || section.description\" class=\"sl-mb-4\">\n <h3 v-if=\"section.title\" class=\"sl-text-md sl-font-medium sl-text-gray-900 sl-mb-1\">\n {{ section.title }}\n </h3>\n <p v-if=\"section.description\" class=\"sl-text-sm sl-text-gray-600\">\n {{ section.description }}\n </p>\n </div>\n\n <!-- Section fields -->\n <div :class=\"sectionClasses(section)\">\n <div\n v-for=\"field in section.fields\"\n :key=\"field.name\"\n :class=\"fieldClasses(field)\"\n >\n <!-- Conditional rendering -->\n <SlDynamicFormField\n v-if=\"shouldShowField(field)\"\n :field=\"field\"\n v-model=\"formData[field.name]\"\n :form-data=\"formData\"\n @field-change=\"handleFieldChange\"\n />\n </div>\n </div>\n </div>\n\n <!-- Form actions -->\n <div\n v-if=\"showActions\"\n :class=\"[\n 'sl-flex sl-gap-3',\n actionsAlignment === 'center' ? 'sl-justify-center' :\n actionsAlignment === 'right' ? 'sl-justify-end' :\n 'sl-justify-start'\n ]\"\n >\n <SlButton\n v-if=\"showCancelButton\"\n variant=\"outline\"\n :disabled=\"loading\"\n type=\"button\"\n @click=\"handleCancel\"\n >\n {{ cancelButtonText || 'Cancel' }}\n </SlButton>\n \n <SlButton\n :variant=\"submitButtonVariant\"\n :loading=\"loading\"\n :disabled=\"!isFormValid || loading\"\n type=\"submit\"\n >\n {{ submitButtonText || 'Submit' }}\n </SlButton>\n </div>\n \n <!-- Form-level errors -->\n <div v-if=\"formError\" class=\"sl-mt-4\">\n <div class=\"sl-bg-red-50 sl-border sl-border-red-200 sl-rounded-md sl-p-4\">\n <div class=\"sl-flex\">\n <ExclamationCircleIcon class=\"sl-h-5 sl-w-5 sl-text-red-400\" />\n <div class=\"sl-ml-3\">\n <h3 class=\"sl-text-sm sl-font-medium sl-text-red-800\">\n Form Error\n </h3>\n <div class=\"sl-mt-2 sl-text-sm sl-text-red-700\">\n <p>{{ formError }}</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </form>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, reactive, ref, watch } from 'vue'\nimport { useForm } from 'vee-validate'\nimport { ExclamationCircleIcon } from '@heroicons/vue/24/outline'\nimport SlButton from '../UiButton.vue'\nimport SlDynamicFormField from './DynamicFormField.vue'\nimport type { \n DynamicFormSchema, \n DynamicFormSection,\n DynamicFormField,\n ButtonVariant \n} from '../../types/form'\n\ninterface Props {\n schema: DynamicFormSchema\n modelValue?: Record<string, any>\n loading?: boolean\n showActions?: boolean\n showCancelButton?: boolean\n submitButtonText?: string\n cancelButtonText?: string\n submitButtonVariant?: ButtonVariant\n actionsAlignment?: 'left' | 'center' | 'right'\n formError?: string\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n showActions: true,\n showCancelButton: false,\n submitButtonVariant: 'primary',\n actionsAlignment: 'right'\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: Record<string, any>): void\n (e: 'submit', data: Record<string, any>, ctx: { setErrors: (errors: Record<string, string>) => void }): void\n (e: 'cancel'): void\n (e: 'field-change', field: DynamicFormField, value: any, formData: Record<string, any>): void\n}>()\n\nconst formRef = ref<HTMLFormElement>()\nconst formData = reactive<Record<string, any>>({})\n\n// Initialize form with vee-validate\nconst { handleSubmit: veeHandleSubmit, setErrors, meta } = useForm({\n keepValuesOnUnmount: true\n})\n\n// Initialize form data\nconst initializeFormData = () => {\n const initialData = { ...props.modelValue } || {}\n \n // Set default values from schema\n props.schema.sections.forEach(section => {\n section.fields.forEach(field => {\n if (!(field.name in initialData)) {\n initialData[field.name] = field.defaultValue ?? getDefaultValue(field.type)\n }\n })\n })\n \n Object.assign(formData, initialData)\n}\n\n// Watch for external changes to modelValue\nwatch(\n () => props.modelValue,\n (newValue) => {\n if (newValue) {\n Object.assign(formData, newValue)\n }\n },\n { deep: true }\n)\n\n// Watch form data changes and emit updates\nwatch(\n formData,\n (newData) => {\n emit('update:modelValue', { ...newData })\n },\n { deep: true }\n)\n\n// Initialize form data on mount\ninitializeFormData()\n\nconst formSections = computed(() => {\n return props.schema.sections.filter(section => \n section.condition ? section.condition(formData) : true\n )\n})\n\nconst formClasses = computed(() => {\n const baseClasses = ['sl-space-y-6']\n \n if (props.schema.className) {\n baseClasses.push(props.schema.className)\n }\n \n return baseClasses.join(' ')\n})\n\nconst sectionClasses = (section: DynamicFormSection) => {\n const baseClasses = [\n 'sl-grid',\n 'sl-gap-4'\n ]\n \n // Grid columns based on section layout\n const columns = section.columns || 1\n baseClasses.push(`sl-grid-cols-1`)\n \n if (columns > 1) {\n baseClasses.push(`md:sl-grid-cols-${Math.min(columns, 3)}`)\n }\n \n if (section.className) {\n baseClasses.push(section.className)\n }\n \n return baseClasses.join(' ')\n}\n\nconst fieldClasses = (field: DynamicFormField) => {\n const baseClasses: string[] = []\n \n // Field span\n if (field.colSpan && field.colSpan > 1) {\n baseClasses.push(`sl-col-span-${Math.min(field.colSpan, 3)}`)\n }\n \n if (field.className) {\n baseClasses.push(field.className)\n }\n \n return baseClasses.join(' ')\n}\n\nconst shouldShowField = (field: DynamicFormField): boolean => {\n if (field.condition) {\n return field.condition(formData, field)\n }\n return true\n}\n\nconst isFormValid = computed(() => {\n return meta.value.valid\n})\n\nconst getDefaultValue = (type: string) => {\n switch (type) {\n case 'checkbox':\n case 'switch':\n return false\n case 'select':\n return null\n case 'number':\n return 0\n default:\n return ''\n }\n}\n\nconst handleSubmit = veeHandleSubmit((values) => {\n emit('submit', values, { setErrors })\n})\n\nconst handleCancel = () => {\n emit('cancel')\n}\n\nconst handleFieldChange = (field: DynamicFormField, value: any) => {\n emit('field-change', field, value, formData)\n \n // Handle field dependencies\n if (field.onFieldChange) {\n field.onFieldChange(value, field, formData)\n }\n}\n\n// Expose form methods\nconst validate = async () => {\n // Trigger vee-validate validation\n return meta.value.valid\n}\n\nconst reset = () => {\n Object.keys(formData).forEach(key => {\n delete formData[key]\n })\n initializeFormData()\n}\n\nconst setFieldValue = (fieldName: string, value: any) => {\n formData[fieldName] = value\n}\n\nconst getFieldValue = (fieldName: string) => {\n return formData[fieldName]\n}\n\ndefineExpose({\n validate,\n reset,\n setFieldValue,\n getFieldValue,\n formData,\n formRef\n})\n</script>\n"],"names":["render","_ctx","_cache","_openBlock","_createElementBlock","_createElementVNode","props","__props","emit","__emit","formRef","ref","formData","reactive","veeHandleSubmit","setErrors","meta","useForm","initializeFormData","initialData","section","field","getDefaultValue","watch","newValue","newData","formSections","computed","formClasses","baseClasses","sectionClasses","columns","fieldClasses","shouldShowField","isFormValid","type","handleSubmit","values","handleCancel","handleFieldChange","value","__expose","key","fieldName","_withModifiers","_unref","args","schema","_hoisted_1","_hoisted_2","_toDisplayString","_hoisted_3","_Fragment","_renderList","sectionIndex","_hoisted_4","_hoisted_5","_hoisted_6","_normalizeClass","_createBlock","SlDynamicFormField","$event","showActions","actionsAlignment","showCancelButton","SlButton","loading","cancelButtonText","_createVNode","submitButtonVariant","submitButtonText","formError","_hoisted_7","_hoisted_8","_hoisted_9","ExclamationCircleIcon","_hoisted_10","_hoisted_11"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,169 @@
1
+ import { createElementBlock as u, openBlock as d, createElementVNode as o, defineComponent as b, computed as s, defineAsyncComponent as y, createBlock as w, resolveDynamicComponent as g, mergeProps as k, toHandlers as _, createVNode as L, unref as V, toDisplayString as C } from "vue";
2
+ import t from "./components/TextInput.js";
3
+ function M(a, r) {
4
+ return d(), u("svg", {
5
+ xmlns: "http://www.w3.org/2000/svg",
6
+ fill: "none",
7
+ viewBox: "0 0 24 24",
8
+ "stroke-width": "1.5",
9
+ stroke: "currentColor",
10
+ "aria-hidden": "true",
11
+ "data-slot": "icon"
12
+ }, [
13
+ o("path", {
14
+ "stroke-linecap": "round",
15
+ "stroke-linejoin": "round",
16
+ d: "M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"
17
+ })
18
+ ]);
19
+ }
20
+ const P = {
21
+ key: 1,
22
+ class: "sl-p-4 sl-bg-yellow-50 sl-border sl-border-yellow-200 sl-rounded-md"
23
+ }, D = { class: "sl-flex" }, F = { class: "sl-ml-3" }, B = { class: "sl-mt-2 sl-text-sm sl-text-yellow-700" }, H = /* @__PURE__ */ b({
24
+ __name: "DynamicFormField",
25
+ props: {
26
+ field: {},
27
+ modelValue: {},
28
+ formData: {}
29
+ },
30
+ emits: ["update:modelValue", "field-change"],
31
+ setup(a, { emit: r }) {
32
+ const e = a, c = r, f = {
33
+ text: () => Promise.resolve(t),
34
+ email: () => Promise.resolve(t),
35
+ password: () => Promise.resolve(t),
36
+ number: () => Promise.resolve(t),
37
+ tel: () => Promise.resolve(t),
38
+ url: () => Promise.resolve(t),
39
+ textarea: () => import("./inputs/TextAreaInput.js"),
40
+ select: () => import("./inputs/SelectInput.js"),
41
+ combobox: () => import("./inputs/ComboboxInput.js"),
42
+ checkbox: () => import("./inputs/CheckboxInput.js"),
43
+ switch: () => import("./inputs/SwitchInput.js")
44
+ }, m = s(() => {
45
+ const l = f[e.field.type];
46
+ return l ? y({
47
+ loader: l,
48
+ errorComponent: () => null,
49
+ delay: 0
50
+ }) : null;
51
+ }), n = s({
52
+ get: () => e.modelValue ?? e.field.defaultValue ?? x(),
53
+ set: (l) => {
54
+ c("update:modelValue", l), c("field-change", e.field, l);
55
+ }
56
+ }), p = s(() => {
57
+ const l = {
58
+ name: e.field.name,
59
+ label: e.field.label,
60
+ placeholder: e.field.placeholder,
61
+ disabled: e.field.disabled,
62
+ rules: e.field.validation,
63
+ validateOnMount: e.field.validateOnMount,
64
+ tertiaryLabel: e.field.tertiaryLabel,
65
+ successMessage: e.field.successMessage
66
+ };
67
+ switch (e.field.type) {
68
+ case "text":
69
+ case "email":
70
+ case "password":
71
+ case "number":
72
+ case "tel":
73
+ case "url":
74
+ return {
75
+ ...l,
76
+ type: e.field.inputType || e.field.type,
77
+ maxlength: e.field.maxLength,
78
+ minlength: e.field.minLength,
79
+ min: e.field.min,
80
+ max: e.field.max,
81
+ step: e.field.step,
82
+ spellcheck: e.field.spellcheck,
83
+ autocomplete: e.field.autocomplete
84
+ };
85
+ case "textarea":
86
+ return {
87
+ ...l,
88
+ rows: e.field.rows,
89
+ maxlength: e.field.maxLength,
90
+ spellcheck: e.field.spellcheck
91
+ };
92
+ case "select":
93
+ return {
94
+ ...l,
95
+ items: e.field.options || [],
96
+ multiple: e.field.multiple,
97
+ itemKey: e.field.optionKey || "value",
98
+ itemText: e.field.optionLabel || "label",
99
+ showAll: e.field.showSelectAll
100
+ };
101
+ case "combobox":
102
+ return {
103
+ ...l,
104
+ items: e.field.options || [],
105
+ itemKey: e.field.optionKey || "value",
106
+ itemText: e.field.optionLabel || "label",
107
+ customQuery: e.field.customQuery,
108
+ loading: e.field.loading
109
+ };
110
+ case "checkbox":
111
+ return {
112
+ ...l,
113
+ description: e.field.description,
114
+ immediate: e.field.immediate ?? !0,
115
+ isDescriptionHtml: e.field.isDescriptionHtml
116
+ };
117
+ case "switch":
118
+ return {
119
+ ...l,
120
+ description: e.field.description,
121
+ immediate: e.field.immediate ?? !0,
122
+ boxShadow: e.field.boxShadow,
123
+ hideMainLabel: e.field.hideMainLabel,
124
+ textTrue: e.field.textTrue,
125
+ textFalse: e.field.textFalse
126
+ };
127
+ default:
128
+ return l;
129
+ }
130
+ }), h = s(() => {
131
+ const l = {};
132
+ return e.field.onBlur && (l.blur = e.field.onBlur), e.field.onFocus && (l.focus = e.field.onFocus), e.field.onChange && (l["update:modelValue"] = (i) => {
133
+ n.value = i, e.field.onChange?.(i, e.field, e.formData ?? {});
134
+ }), l;
135
+ }), x = () => {
136
+ switch (e.field.type) {
137
+ case "checkbox":
138
+ case "switch":
139
+ return !1;
140
+ case "select":
141
+ return e.field.multiple ? [] : null;
142
+ case "number":
143
+ return e.field.min || 0;
144
+ default:
145
+ return "";
146
+ }
147
+ }, v = (l) => {
148
+ n.value = l;
149
+ };
150
+ return (l, i) => m.value ? (d(), w(g(m.value), k({ key: 0 }, p.value, _(h.value), {
151
+ "model-value": n.value,
152
+ "onUpdate:modelValue": v
153
+ }), null, 16, ["model-value"])) : (d(), u("div", P, [
154
+ o("div", D, [
155
+ L(V(M), { class: "sl-h-5 sl-w-5 sl-text-yellow-400" }),
156
+ o("div", F, [
157
+ i[0] || (i[0] = o("h3", { class: "sl-text-sm sl-font-medium sl-text-yellow-800" }, " Unknown field type ", -1)),
158
+ o("div", B, [
159
+ o("p", null, 'Field type "' + C(l.field.type) + '" is not supported.', 1)
160
+ ])
161
+ ])
162
+ ])
163
+ ]));
164
+ }
165
+ });
166
+ export {
167
+ H as _
168
+ };
169
+ //# sourceMappingURL=DynamicFormField.vue_vue_type_script_setup_true_lang-DvT03FIS.js.map