@nexdom/uimed-vue 2.0.0-beta.8 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (222) hide show
  1. package/README.md +1 -1
  2. package/dist/_virtual/_rolldown/runtime.js +7 -0
  3. package/dist/components/app-bar/app-bar.js +5 -0
  4. package/dist/components/app-bar/app-bar.vue_vue_type_script_setup_true_lang.js +286 -0
  5. package/dist/components/app-bar/types.d.ts +96 -0
  6. package/dist/components/button/button.js +5 -0
  7. package/dist/components/button/button.vue.d.ts +31 -0
  8. package/dist/components/button/button.vue_vue_type_script_setup_true_lang.js +97 -0
  9. package/dist/components/button/types.d.ts +65 -0
  10. package/dist/components/data-sets/data-set/data-set.js +5 -0
  11. package/dist/components/data-sets/data-set/data-set.vue.d.ts +47 -0
  12. package/dist/components/data-sets/data-set/data-set.vue_vue_type_script_setup_true_lang.js +157 -0
  13. package/dist/components/data-sets/data-set/types.d.ts +93 -0
  14. package/dist/components/data-sets/data-set-bar.js +5 -0
  15. package/dist/components/data-sets/data-set-bar.vue_vue_type_script_setup_true_lang.js +99 -0
  16. package/dist/components/data-sets/data-set-item/data-set-item.js +5 -0
  17. package/dist/components/data-sets/data-set-item/data-set-item.vue.d.ts +35 -0
  18. package/dist/components/data-sets/data-set-item/data-set-item.vue_vue_type_script_setup_true_lang.js +57 -0
  19. package/dist/components/data-sets/data-set-item/types.d.ts +42 -0
  20. package/dist/components/details/details.js +5 -0
  21. package/dist/components/details/details.vue.d.ts +28 -0
  22. package/dist/components/details/details.vue_vue_type_script_setup_true_lang.js +56 -0
  23. package/dist/components/details/types.d.ts +29 -0
  24. package/dist/components/dialogs/dialog/dialog-host-key.js +10 -0
  25. package/dist/components/dialogs/dialog/dialog.js +5 -0
  26. package/dist/components/dialogs/dialog/dialog.vue.d.ts +36 -0
  27. package/dist/components/dialogs/dialog/dialog.vue_vue_type_script_setup_true_lang.js +112 -0
  28. package/dist/components/dialogs/dialog/types.d.ts +47 -0
  29. package/dist/components/dialogs/dialog-host.js +5 -0
  30. package/dist/components/dialogs/dialog-host.vue_vue_type_script_setup_true_lang.js +81 -0
  31. package/dist/components/dialogs/toast.js +5 -0
  32. package/dist/components/dialogs/toast.vue_vue_type_script_setup_true_lang.js +35 -0
  33. package/dist/components/footer/footer.js +5 -0
  34. package/dist/components/footer/footer.vue_vue_type_script_setup_true_lang.js +31 -0
  35. package/dist/components/footer/types.d.ts +16 -0
  36. package/dist/components/form/form.js +5 -0
  37. package/dist/components/form/form.vue.d.ts +32 -0
  38. package/dist/components/form/form.vue_vue_type_script_setup_true_lang.js +37 -0
  39. package/dist/components/form/types.d.ts +15 -0
  40. package/dist/components/grid/column/column.js +5 -0
  41. package/dist/components/grid/column/column.vue.d.ts +33 -0
  42. package/dist/components/grid/column/column.vue_vue_type_script_setup_true_lang.js +45 -0
  43. package/dist/components/grid/column/types.d.ts +27 -0
  44. package/dist/components/grid/container/container.js +5 -0
  45. package/dist/components/grid/container/container.vue.d.ts +27 -0
  46. package/dist/components/grid/container/container.vue_vue_type_script_setup_true_lang.js +33 -0
  47. package/dist/components/grid/container/types.d.ts +17 -0
  48. package/dist/components/grid/row/row.js +5 -0
  49. package/dist/components/grid/row/row.vue.d.ts +29 -0
  50. package/dist/components/grid/row/row.vue_vue_type_script_setup_true_lang.js +61 -0
  51. package/dist/components/grid/row/types.d.ts +63 -0
  52. package/dist/components/icon-button/icon-button.js +5 -0
  53. package/dist/components/icon-button/icon-button.vue.d.ts +23 -0
  54. package/dist/components/icon-button/icon-button.vue_vue_type_script_setup_true_lang.js +51 -0
  55. package/dist/components/icon-button/types.d.ts +32 -0
  56. package/dist/components/img/img.js +5 -0
  57. package/dist/components/img/img.vue.d.ts +23 -0
  58. package/dist/components/img/img.vue_vue_type_script_setup_true_lang.js +61 -0
  59. package/dist/components/img/types.d.ts +43 -0
  60. package/dist/components/inputs/autocomplete-field/autocomplete-field.js +5 -0
  61. package/dist/components/inputs/autocomplete-field/autocomplete-field.vue.d.ts +33 -0
  62. package/dist/components/inputs/autocomplete-field/autocomplete-field.vue_vue_type_script_setup_true_lang.js +161 -0
  63. package/dist/components/inputs/autocomplete-field/types.d.ts +84 -0
  64. package/dist/components/inputs/checkbox/checkbox.js +5 -0
  65. package/dist/components/inputs/checkbox/checkbox.vue.d.ts +33 -0
  66. package/dist/components/inputs/checkbox/checkbox.vue_vue_type_script_setup_true_lang.js +71 -0
  67. package/dist/components/inputs/checkbox/types.d.ts +35 -0
  68. package/dist/components/inputs/date-time-field/date-time-field.js +5 -0
  69. package/dist/components/inputs/date-time-field/date-time-field.vue.d.ts +32 -0
  70. package/dist/components/inputs/date-time-field/date-time-field.vue_vue_type_script_setup_true_lang.js +205 -0
  71. package/dist/components/inputs/date-time-field/types.d.ts +84 -0
  72. package/dist/components/inputs/field-loader.js +5 -0
  73. package/dist/components/inputs/field-loader.vue_vue_type_script_setup_true_lang.js +30 -0
  74. package/dist/components/inputs/mask-field/mask-field.js +5 -0
  75. package/dist/components/inputs/mask-field/mask-field.vue.d.ts +32 -0
  76. package/dist/components/inputs/mask-field/mask-field.vue_vue_type_script_setup_true_lang.js +120 -0
  77. package/dist/components/inputs/mask-field/types.d.ts +118 -0
  78. package/dist/components/inputs/text-field/text-field.js +5 -0
  79. package/dist/components/inputs/text-field/text-field.vue.d.ts +30 -0
  80. package/dist/components/inputs/text-field/text-field.vue_vue_type_script_setup_true_lang.js +119 -0
  81. package/dist/components/inputs/text-field/types.d.ts +70 -0
  82. package/dist/components/link/link.js +5 -0
  83. package/dist/components/link/link.vue.d.ts +27 -0
  84. package/dist/components/link/link.vue_vue_type_script_setup_true_lang.js +32 -0
  85. package/dist/components/link/types.d.ts +18 -0
  86. package/dist/components/main/main.js +5 -0
  87. package/dist/components/main/main.vue.d.ts +33 -0
  88. package/dist/components/main/main.vue_vue_type_script_setup_true_lang.js +104 -0
  89. package/dist/components/main/types.d.ts +75 -0
  90. package/dist/components/navigation-menu/navigation-menu.js +5 -0
  91. package/dist/components/navigation-menu/navigation-menu.vue_vue_type_script_setup_true_lang.js +207 -0
  92. package/dist/components/navigation-menu/types.d.ts +62 -0
  93. package/dist/components/page-transition/page-transition.js +5 -0
  94. package/dist/components/page-transition/page-transition.vue.d.ts +40 -0
  95. package/dist/components/page-transition/page-transition.vue_vue_type_script_setup_true_lang.js +27 -0
  96. package/dist/components/page-transition/types.d.ts +18 -0
  97. package/dist/components/sections/section/section.js +5 -0
  98. package/dist/components/sections/section/section.vue.d.ts +28 -0
  99. package/dist/components/sections/section/section.vue_vue_type_script_setup_true_lang.js +108 -0
  100. package/dist/components/sections/section/types.d.ts +80 -0
  101. package/dist/components/sections/section-content/section-content.js +5 -0
  102. package/dist/components/sections/section-content/section-content.vue.d.ts +27 -0
  103. package/dist/components/sections/section-content/section-content.vue_vue_type_script_setup_true_lang.js +16 -0
  104. package/dist/components/skeleton-loader/skeleton-loader.js +5 -0
  105. package/dist/components/skeleton-loader/skeleton-loader.vue_vue_type_script_setup_true_lang.js +65 -0
  106. package/dist/components/table/table.js +5 -0
  107. package/dist/components/table/table.vue.d.ts +19 -0
  108. package/dist/components/table/table.vue_vue_type_script_setup_true_lang.js +84 -0
  109. package/dist/components/table/types.d.ts +51 -0
  110. package/dist/components.d.ts +23 -940
  111. package/dist/components.js +23 -1254
  112. package/dist/composables/alignment/alignment.js +41 -0
  113. package/dist/composables/alignment/types.d.ts +12 -0
  114. package/dist/composables/button/button.js +54 -0
  115. package/dist/composables/colors/constants.js +27 -0
  116. package/dist/composables/colors/types.d.ts +4 -0
  117. package/dist/composables/colors/use-vuetify-background-color.js +16 -0
  118. package/dist/composables/colors/use-vuetify-color.js +11 -0
  119. package/dist/composables/colors/use-vuetify-text-color.js +12 -0
  120. package/dist/composables/data-set/data-set.js +128 -0
  121. package/dist/composables/dialogs/types.d.ts +88 -0
  122. package/dist/composables/dialogs/use-confirm.d.ts +21 -0
  123. package/dist/composables/dialogs/use-confirm.js +55 -0
  124. package/dist/composables/dialogs/use-decorative-timer.js +25 -0
  125. package/dist/composables/dialogs/use-dialog-focus.js +64 -0
  126. package/dist/composables/dialogs/use-dialog-loading.js +13 -0
  127. package/dist/composables/dialogs/use-dialog.d.ts +36 -0
  128. package/dist/composables/dialogs/use-dialog.js +73 -0
  129. package/dist/composables/dialogs/use-run-or-toast.d.ts +27 -0
  130. package/dist/composables/dialogs/use-run-or-toast.js +65 -0
  131. package/dist/composables/dialogs/use-toast.d.ts +25 -0
  132. package/dist/composables/dialogs/use-toast.js +39 -0
  133. package/dist/composables/dimensions/dimensions.js +18 -0
  134. package/dist/composables/inputs/autocomplete-field.js +39 -0
  135. package/dist/composables/inputs/date-time-field.js +109 -0
  136. package/dist/composables/inputs/fields.js +28 -0
  137. package/dist/composables/inputs/mask-field.js +133 -0
  138. package/dist/composables/inputs/rules.js +16 -0
  139. package/dist/composables/inputs/text-field.js +81 -0
  140. package/dist/composables/navigation/types.d.ts +54 -0
  141. package/dist/composables/navigation/use-navigation-rail.js +163 -0
  142. package/dist/composables/navigation/use-navigation-search-shortcut.js +96 -0
  143. package/dist/composables/navigation/use-route-props.js +21 -0
  144. package/dist/composables/navigation/use-unsaved-changes.d.ts +35 -0
  145. package/dist/composables/navigation/use-unsaved-changes.js +88 -0
  146. package/dist/composables/section/section.js +34 -0
  147. package/dist/composables.d.ts +6 -67
  148. package/dist/composables.js +6 -65
  149. package/dist/consts/icons.d.ts +67 -0
  150. package/dist/consts/icons.js +69 -0
  151. package/dist/consts/locale.js +12 -0
  152. package/dist/consts/types.d.ts +12 -0
  153. package/dist/index.d.ts +1 -13
  154. package/dist/index.js +39 -14
  155. package/dist/plugins.d.ts +15 -4
  156. package/dist/plugins.js +54 -3
  157. package/dist/styles/fonts/UnimedSlab-Regular.woff2 +0 -0
  158. package/dist/styles/fonts/fonts.css +5 -0
  159. package/dist/styles/settings.scss +155 -0
  160. package/dist/unit-test.js +11 -7
  161. package/package.json +11 -11
  162. package/skills/uimed-vue/SKILL.md +113 -0
  163. package/skills/uimed-vue/references/api/components/autocomplete-field.md +45 -0
  164. package/skills/uimed-vue/references/api/components/button.md +48 -0
  165. package/skills/uimed-vue/references/api/components/checkbox.md +36 -0
  166. package/skills/uimed-vue/references/api/components/data-sets/data-set-item.md +61 -0
  167. package/skills/uimed-vue/references/api/components/data-sets/data-set.md +67 -0
  168. package/skills/uimed-vue/references/api/components/date-time-field.md +44 -0
  169. package/skills/uimed-vue/references/api/components/details.md +33 -0
  170. package/skills/uimed-vue/references/api/components/dialog.md +70 -0
  171. package/skills/uimed-vue/references/api/components/form.md +43 -0
  172. package/skills/uimed-vue/references/api/components/grid/column.md +41 -0
  173. package/skills/uimed-vue/references/api/components/grid/container.md +32 -0
  174. package/skills/uimed-vue/references/api/components/grid/row.md +37 -0
  175. package/skills/uimed-vue/references/api/components/icon-button.md +37 -0
  176. package/skills/uimed-vue/references/api/components/img.md +34 -0
  177. package/skills/uimed-vue/references/api/components/link.md +31 -0
  178. package/skills/uimed-vue/references/api/components/main.md +174 -0
  179. package/skills/uimed-vue/references/api/components/mask-field.md +60 -0
  180. package/skills/uimed-vue/references/api/components/page-transition.md +37 -0
  181. package/skills/uimed-vue/references/api/components/sections/section-content.md +23 -0
  182. package/skills/uimed-vue/references/api/components/sections/section.md +61 -0
  183. package/skills/uimed-vue/references/api/components/table.md +35 -0
  184. package/skills/uimed-vue/references/api/components/text-field.md +42 -0
  185. package/skills/uimed-vue/references/api/composables/use-confirm.md +96 -0
  186. package/skills/uimed-vue/references/api/composables/use-dialog.md +95 -0
  187. package/skills/uimed-vue/references/api/composables/use-run-or-toast.md +58 -0
  188. package/skills/uimed-vue/references/api/composables/use-toast.md +48 -0
  189. package/skills/uimed-vue/references/api/composables/use-unsaved-changes.md +106 -0
  190. package/skills/uimed-vue/references/api/index.md +1 -0
  191. package/skills/uimed-vue/references/guide/components/autocomplete-field.md +256 -0
  192. package/skills/uimed-vue/references/guide/components/button.md +155 -0
  193. package/skills/uimed-vue/references/guide/components/checkbox.md +113 -0
  194. package/skills/uimed-vue/references/guide/components/data-set.md +370 -0
  195. package/skills/uimed-vue/references/guide/components/date-time-field.md +202 -0
  196. package/skills/uimed-vue/references/guide/components/details.md +76 -0
  197. package/skills/uimed-vue/references/guide/components/dialog.md +269 -0
  198. package/skills/uimed-vue/references/guide/components/form.md +96 -0
  199. package/skills/uimed-vue/references/guide/components/icon-button.md +76 -0
  200. package/skills/uimed-vue/references/guide/components/img.md +128 -0
  201. package/skills/uimed-vue/references/guide/components/layout.md +323 -0
  202. package/skills/uimed-vue/references/guide/components/link.md +47 -0
  203. package/skills/uimed-vue/references/guide/components/main.md +435 -0
  204. package/skills/uimed-vue/references/guide/components/mask-field.md +256 -0
  205. package/skills/uimed-vue/references/guide/components/page-transition.md +111 -0
  206. package/skills/uimed-vue/references/guide/components/section.md +232 -0
  207. package/skills/uimed-vue/references/guide/components/table.md +102 -0
  208. package/skills/uimed-vue/references/guide/components/text-field.md +172 -0
  209. package/skills/uimed-vue/references/guide/composables/use-confirm.md +123 -0
  210. package/skills/uimed-vue/references/guide/composables/use-dialog.md +102 -0
  211. package/skills/uimed-vue/references/guide/composables/use-run-or-toast.md +55 -0
  212. package/skills/uimed-vue/references/guide/composables/use-toast.md +57 -0
  213. package/skills/uimed-vue/references/guide/composables/use-unsaved-changes.md +129 -0
  214. package/skills/uimed-vue/references/guide/getting-started.md +135 -0
  215. package/skills/uimed-vue/references/guide/icons.md +71 -0
  216. package/skills/uimed-vue/references/guide/index.md +51 -0
  217. package/skills/uimed-vue/references/guide/migration-v1-to-v2.md +191 -0
  218. package/skills/uimed-vue/references/guide/unit-testing.md +85 -0
  219. package/AGENTS.md +0 -160
  220. package/CLAUDE.md +0 -1
  221. package/dist/types-BPXXtbmW.d.ts +0 -5
  222. package/dist/use-toast-CACuYhK_.js +0 -53
@@ -0,0 +1,112 @@
1
+ import button_default from "../../button/button.js";
2
+ import { dialogHostKey } from "./dialog-host-key.js";
3
+ import { useDialogFocus } from "../../../composables/dialogs/use-dialog-focus.js";
4
+ import { useDialogLoading } from "../../../composables/dialogs/use-dialog-loading.js";
5
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, inject, mergeModels, mergeProps, openBlock, ref, renderList, renderSlot, toDisplayString, unref, useId, useModel, useTemplateRef, watch, withCtx } from "vue";
6
+ import { VCard, VDialog } from "vuetify/components";
7
+ //#region src/components/dialogs/dialog/dialog.vue?vue&type=script&setup=true&lang.ts
8
+ const _hoisted_1 = ["id"];
9
+ var dialog_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
10
+ inheritAttrs: false,
11
+ __name: "dialog",
12
+ props: /*@__PURE__*/ mergeModels({
13
+ title: {
14
+ type: String,
15
+ required: false
16
+ },
17
+ actions: {
18
+ type: Array,
19
+ required: false
20
+ },
21
+ size: {
22
+ type: String,
23
+ required: false
24
+ },
25
+ dataTestid: {
26
+ type: String,
27
+ required: false
28
+ }
29
+ }, {
30
+ "modelValue": {
31
+ type: Boolean,
32
+ default: false
33
+ },
34
+ "modelModifiers": {}
35
+ }),
36
+ emits: ["update:modelValue"],
37
+ setup(__props) {
38
+ const props = __props;
39
+ const model = useModel(__props, "modelValue");
40
+ const maxWidths = {
41
+ small: 400,
42
+ medium: 560,
43
+ large: 800
44
+ };
45
+ const host = inject(dialogHostKey, null);
46
+ const contentId = useId();
47
+ const card = useTemplateRef("card");
48
+ const title = computed(() => props.title || void 0);
49
+ const maxWidth = computed(() => maxWidths[props.size ?? "medium"]);
50
+ const role = computed(() => host?.role() ?? "dialog");
51
+ /**
52
+ * Whether the dialog is displayed. It follows `v-model`, but turns `false` as soon as the user
53
+ * closes the dialog, while `v-model` only does once the leave transition ends.
54
+ */
55
+ const isActive = ref(model.value);
56
+ watch(model, (value) => isActive.value = value);
57
+ const { isLoading } = useDialogLoading(() => props.actions);
58
+ const { focusFirstElement } = useDialogFocus(() => isActive.value, () => card.value?.$el);
59
+ function onAfterLeave() {
60
+ model.value = false;
61
+ host?.afterLeave();
62
+ }
63
+ return (_ctx, _cache) => {
64
+ return openBlock(), createBlock(unref(VDialog), {
65
+ modelValue: isActive.value,
66
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isActive.value = $event),
67
+ persistent: unref(isLoading),
68
+ "max-width": maxWidth.value,
69
+ role: role.value,
70
+ "aria-label": title.value,
71
+ "aria-labelledby": title.value ? void 0 : unref(contentId),
72
+ "aria-describedby": unref(host) ? unref(contentId) : void 0,
73
+ "data-testid": props.dataTestid,
74
+ scrollable: "",
75
+ onAfterEnter: unref(focusFirstElement),
76
+ onAfterLeave
77
+ }, {
78
+ default: withCtx(() => [createCommentVNode(" `data-u-dialog` identifies the card to the dialogs opened from this one "), createVNode(unref(VCard), {
79
+ ref_key: "card",
80
+ ref: card,
81
+ title: title.value,
82
+ "data-u-dialog": ""
83
+ }, createSlots({
84
+ text: withCtx(() => [createElementVNode("div", { id: unref(contentId) }, [renderSlot(_ctx.$slots, "default")], 8, _hoisted_1)]),
85
+ _: 2
86
+ }, [props.actions?.length ? {
87
+ name: "actions",
88
+ fn: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(props.actions, ({ label, onClick, ...action }, index) => {
89
+ return openBlock(), createBlock(button_default, mergeProps({ key: index }, { ref_for: true }, action, { onClick }), {
90
+ default: withCtx(() => [createTextVNode(toDisplayString(label), 1)]),
91
+ _: 2
92
+ }, 1040, ["onClick"]);
93
+ }), 128))]),
94
+ key: "0"
95
+ } : void 0]), 1032, ["title"])]),
96
+ _: 3
97
+ }, 8, [
98
+ "modelValue",
99
+ "persistent",
100
+ "max-width",
101
+ "role",
102
+ "aria-label",
103
+ "aria-labelledby",
104
+ "aria-describedby",
105
+ "data-testid",
106
+ "onAfterEnter"
107
+ ]);
108
+ };
109
+ }
110
+ });
111
+ //#endregion
112
+ export { dialog_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,47 @@
1
+ import { ButtonProps } from "../../button/types.js";
2
+ //#region src/components/dialogs/dialog/types.d.ts
3
+ export type DialogSize = "small" | "medium" | "large";
4
+ /**
5
+ * Props exposed by the {@link Dialog} component.
6
+ */
7
+ export type DialogProps = {
8
+ /**
9
+ * Plain text displayed as the dialog's title, in a single line. HTML isn't interpreted.
10
+ * Also used as the dialog's accessible name. Without it, the content is the accessible name.
11
+ */
12
+ title?: string;
13
+ /**
14
+ * Buttons displayed at the bottom of the dialog, right-aligned, in the given order.
15
+ * Place the main action last. When undefined or empty, no actions area is rendered.
16
+ * Clicking an action doesn't close the dialog: set `v-model` to `false` in `onClick`.
17
+ * While any action is `loading`, the user can't close the dialog with `Esc`, a click outside or
18
+ * the browser's back button, but setting `v-model` to `false` still closes it.
19
+ */
20
+ actions?: DialogButtonAction[];
21
+ /**
22
+ * Maximum width of the dialog.
23
+ * One of `small` (400px), `medium` (560px), or `large` (800px).
24
+ * @default "medium"
25
+ */
26
+ size?: DialogSize;
27
+ /**
28
+ * Component id to use on automated tests.
29
+ */
30
+ dataTestid?: string;
31
+ };
32
+ /**
33
+ * A single action rendered inside {@link Dialog}'s actions area. Same shape as `USection`'s
34
+ * actions. While it's `loading`, the user can't close the dialog, but setting `v-model` to `false` still does.
35
+ */
36
+ export interface DialogButtonAction extends ButtonProps {
37
+ /**
38
+ * Text displayed on the action button.
39
+ */
40
+ label: string;
41
+ /**
42
+ * Called when the action button is clicked. Not called while the action is `disabled` or
43
+ * `loading`. The dialog stays open.
44
+ */
45
+ onClick?: (event: MouseEvent) => void;
46
+ }
47
+ //#endregion
@@ -0,0 +1,5 @@
1
+ import dialog_host_vue_vue_type_script_setup_true_lang_default from "./dialog-host.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/dialogs/dialog-host.vue
3
+ var dialog_host_default = dialog_host_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { dialog_host_default as default };
@@ -0,0 +1,81 @@
1
+ import { dialogHostKey } from "./dialog/dialog-host-key.js";
2
+ import dialog_default from "./dialog/dialog.js";
3
+ import { owners, requests } from "../../composables/dialogs/use-dialog.js";
4
+ import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createTextVNode, defineComponent, onMounted, onUnmounted, openBlock, provide, ref, shallowRef, toDisplayString, watch, withCtx } from "vue";
5
+ var dialog_host_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
6
+ inheritAttrs: false,
7
+ __name: "dialog-host",
8
+ setup(__props) {
9
+ const owner = Symbol("dialog");
10
+ const isOwner = computed(() => owners.value[0] === owner);
11
+ const next = computed(() => isOwner.value ? requests.value[0] : void 0);
12
+ /** Dialog on display, kept until its leave transition ends. */
13
+ const request = shallowRef();
14
+ /**
15
+ * Changes for every dialog on display, so each one gets its own `Dialog`, open from the start.
16
+ * The next dialog can then open right after a dismissed one, whose `v-model` stays `true`.
17
+ */
18
+ const key = shallowRef();
19
+ const isOpen = ref(false);
20
+ const selected = shallowRef();
21
+ const isRunning = computed(() => selected.value !== void 0);
22
+ const actions = computed(() => {
23
+ const current = request.value;
24
+ if (!current) return void 0;
25
+ return current.actions.map((action) => ({
26
+ label: action.text,
27
+ variant: action.variant,
28
+ color: action.color,
29
+ loading: selected.value === action,
30
+ disabled: isRunning.value && selected.value !== action,
31
+ onClick: () => void select(current, action)
32
+ }));
33
+ });
34
+ provide(dialogHostKey, {
35
+ role: () => request.value?.role,
36
+ afterLeave: showNext
37
+ });
38
+ onMounted(() => owners.value.push(owner));
39
+ onUnmounted(() => owners.value = owners.value.filter((item) => item !== owner));
40
+ watch(next, show);
41
+ function show() {
42
+ if (request.value) return;
43
+ request.value = next.value;
44
+ key.value = Symbol();
45
+ isOpen.value = next.value !== void 0;
46
+ }
47
+ function showNext() {
48
+ request.value = void 0;
49
+ show();
50
+ }
51
+ async function select(current, action) {
52
+ requests.value.shift();
53
+ selected.value = action;
54
+ await current.select(action?.value);
55
+ selected.value = void 0;
56
+ if (action) isOpen.value = false;
57
+ }
58
+ /** Called once a dialog closed by the user leaves, right before the next one is displayed. */
59
+ function dismiss() {
60
+ if (request.value) select(request.value);
61
+ }
62
+ return (_ctx, _cache) => {
63
+ return openBlock(), createElementBlock(Fragment, null, [createCommentVNode(" PascalCase, since `<dialog>` in the template would render the native HTML element instead "), (openBlock(), createBlock(dialog_default, {
64
+ key: key.value,
65
+ "model-value": isOpen.value,
66
+ title: request.value?.title,
67
+ actions: actions.value,
68
+ "onUpdate:modelValue": dismiss
69
+ }, {
70
+ default: withCtx(() => [createTextVNode(toDisplayString(request.value?.message), 1)]),
71
+ _: 1
72
+ }, 8, [
73
+ "model-value",
74
+ "title",
75
+ "actions"
76
+ ]))], 2112);
77
+ };
78
+ }
79
+ });
80
+ //#endregion
81
+ export { dialog_host_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import toast_vue_vue_type_script_setup_true_lang_default from "./toast.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/dialogs/toast.vue
3
+ var toast_default = toast_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { toast_default as default };
@@ -0,0 +1,35 @@
1
+ import { icons } from "../../consts/icons.js";
2
+ import useDecorativeTimer from "../../composables/dialogs/use-decorative-timer.js";
3
+ import { messages } from "../../composables/dialogs/use-toast.js";
4
+ import { createBlock, createVNode, defineComponent, isRef, mergeProps, openBlock, unref, withCtx } from "vue";
5
+ import { VIconBtn, VSnackbarQueue } from "vuetify/components";
6
+ var toast_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
7
+ inheritAttrs: false,
8
+ __name: "toast",
9
+ setup(__props) {
10
+ const decorativeTimer = useDecorativeTimer();
11
+ return (_ctx, _cache) => {
12
+ return openBlock(), createBlock(unref(VSnackbarQueue), {
13
+ modelValue: unref(messages),
14
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(messages) ? messages.value = $event : null),
15
+ "content-props": unref(decorativeTimer),
16
+ "display-strategy": "overflow",
17
+ location: "top end",
18
+ "total-visible": "3",
19
+ collapsed: "",
20
+ closable: "",
21
+ timer: ""
22
+ }, {
23
+ actions: withCtx(({ props }) => [createVNode(unref(VIconBtn), mergeProps(props, {
24
+ "aria-label": "Fechar",
25
+ icon: unref(icons).close,
26
+ size: "small",
27
+ variant: "text"
28
+ }), null, 16, ["icon"])]),
29
+ _: 1
30
+ }, 8, ["modelValue", "content-props"]);
31
+ };
32
+ }
33
+ });
34
+ //#endregion
35
+ export { toast_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,5 @@
1
+ import footer_vue_vue_type_script_setup_true_lang_default from "./footer.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/footer/footer.vue
3
+ var footer_default = footer_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { footer_default as default };
@@ -0,0 +1,31 @@
1
+ import { createBlock, createTextVNode, defineComponent, openBlock, toDisplayString, unref, withCtx } from "vue";
2
+ import { VFooter } from "vuetify/components";
3
+ var footer_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ inheritAttrs: false,
5
+ __name: "footer",
6
+ props: {
7
+ description: {
8
+ type: String,
9
+ required: false
10
+ },
11
+ dataTestid: {
12
+ type: String,
13
+ required: false
14
+ }
15
+ },
16
+ setup(__props) {
17
+ const props = __props;
18
+ return (_ctx, _cache) => {
19
+ return openBlock(), createBlock(unref(VFooter), {
20
+ "data-testid": props.dataTestid,
21
+ class: "justify-center text-center",
22
+ app: ""
23
+ }, {
24
+ default: withCtx(() => [createTextVNode(toDisplayString(props.description), 1)]),
25
+ _: 1
26
+ }, 8, ["data-testid"]);
27
+ };
28
+ }
29
+ });
30
+ //#endregion
31
+ export { footer_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,16 @@
1
+ //#region src/components/footer/types.d.ts
2
+ /**
3
+ * Props of the footer shown by the {@link Main} component.
4
+ */
5
+ export type FooterProps = {
6
+ /**
7
+ * Text shown in the footer, e.g. the application version ("Versão 1.4.2").
8
+ * The footer is hidden when it's empty or omitted.
9
+ */
10
+ description?: string;
11
+ /**
12
+ * Component id to use on automated tests.
13
+ */
14
+ dataTestid?: string;
15
+ };
16
+ //#endregion
@@ -0,0 +1,5 @@
1
+ import form_vue_vue_type_script_setup_true_lang_default from "./form.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/form/form.vue
3
+ var form_default = form_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { form_default as default };
@@ -0,0 +1,32 @@
1
+ import { FormProps } from "./types.js";
2
+ //#region src/components/form/form.vue.d.ts
3
+ /**
4
+ * Form component to be used throughout the application.
5
+ *
6
+ * @example
7
+ * ```vue
8
+ * <template>
9
+ * <u-form @submit="onSubmit">
10
+ * <!-- uimed-field-components -->
11
+ * <!-- uimed-submit-btn-component -->
12
+ * </u-form>
13
+ * </template>
14
+ * ```
15
+ *
16
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/form | Form Guide}
17
+ */
18
+ declare const _default: typeof __VLS_export;
19
+ declare const __VLS_export: __VLS_WithSlots<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<FormProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {} & {
20
+ submit: (event: SubmitEvent) => any;
21
+ }, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<FormProps> & Readonly<{
22
+ onSubmit?: ((event: SubmitEvent) => any) | undefined;
23
+ }>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
24
+ default?: (props: {}) => any;
25
+ }>;
26
+ type __VLS_WithSlots<T, S> = T & {
27
+ new (): {
28
+ $slots: S;
29
+ };
30
+ };
31
+ //#endregion
32
+ export { _default as default };
@@ -0,0 +1,37 @@
1
+ import { createBlock, defineComponent, openBlock, renderSlot, unref, withCtx, withModifiers } from "vue";
2
+ import { VForm } from "vuetify/components";
3
+ var form_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ inheritAttrs: false,
5
+ __name: "form",
6
+ props: {
7
+ id: {
8
+ type: String,
9
+ required: false
10
+ },
11
+ dataTestid: {
12
+ type: String,
13
+ required: false
14
+ }
15
+ },
16
+ emits: ["submit"],
17
+ setup(__props, { emit: __emit }) {
18
+ const props = __props;
19
+ const emit = __emit;
20
+ async function onSubmit(event) {
21
+ const { valid } = await event;
22
+ if (valid) emit("submit", event);
23
+ }
24
+ return (_ctx, _cache) => {
25
+ return openBlock(), createBlock(unref(VForm), {
26
+ id: props.id,
27
+ "data-testid": props.dataTestid,
28
+ onSubmit: withModifiers(onSubmit, ["prevent"])
29
+ }, {
30
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
31
+ _: 3
32
+ }, 8, ["id", "data-testid"]);
33
+ };
34
+ }
35
+ });
36
+ //#endregion
37
+ export { form_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,15 @@
1
+ //#region src/components/form/types.d.ts
2
+ /**
3
+ * Props exposed by the {@link Form} component.
4
+ */
5
+ export type FormProps = {
6
+ /**
7
+ * Id to set on `form` native element.
8
+ */
9
+ id?: string;
10
+ /**
11
+ * Component id to use on automated tests.
12
+ */
13
+ dataTestid?: string;
14
+ };
15
+ //#endregion
@@ -0,0 +1,5 @@
1
+ import column_vue_vue_type_script_setup_true_lang_default from "./column.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/grid/column/column.vue
3
+ var column_default = column_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { column_default as default };
@@ -0,0 +1,33 @@
1
+ import { ColumnProps } from "./types.js";
2
+ //#region src/components/grid/column/column.vue.d.ts
3
+ /**
4
+ * Column component to be placed within a row.
5
+ *
6
+ * @example
7
+ * ```vue
8
+ * <template>
9
+ * <u-container>
10
+ * <u-row>
11
+ * <u-column>
12
+ * <!-- uimed-components -->
13
+ * </u-column>
14
+ * </u-row>
15
+ * </u-container>
16
+ * </template>
17
+ * ```
18
+ *
19
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Column Guide}
20
+ */
21
+ declare const _default: typeof __VLS_export;
22
+ declare const __VLS_export: __VLS_WithSlots<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ColumnProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ColumnProps> & Readonly<{}>, {
23
+ cols: "12" | "auto" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11";
24
+ }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
25
+ default?: (props: {}) => any;
26
+ }>;
27
+ type __VLS_WithSlots<T, S> = T & {
28
+ new (): {
29
+ $slots: S;
30
+ };
31
+ };
32
+ //#endregion
33
+ export { _default as default };
@@ -0,0 +1,45 @@
1
+ import { computed, createBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref, withCtx } from "vue";
2
+ import { VCol } from "vuetify/components";
3
+ var column_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
4
+ inheritAttrs: false,
5
+ __name: "column",
6
+ props: {
7
+ cols: {
8
+ type: String,
9
+ required: false,
10
+ default: "12"
11
+ },
12
+ listItem: {
13
+ type: Boolean,
14
+ required: false
15
+ },
16
+ dataTestid: {
17
+ type: String,
18
+ required: false
19
+ }
20
+ },
21
+ setup(__props) {
22
+ const props = __props;
23
+ const tag = computed(() => props.listItem ? "li" : void 0);
24
+ const listItemClasses = computed(() => props.listItem ? "d-block" : void 0);
25
+ return (_ctx, _cache) => {
26
+ return openBlock(), createBlock(unref(VCol), {
27
+ cols: "12",
28
+ sm: props.cols,
29
+ tag: tag.value,
30
+ class: normalizeClass(listItemClasses.value),
31
+ "data-testid": props.dataTestid
32
+ }, {
33
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
34
+ _: 3
35
+ }, 8, [
36
+ "sm",
37
+ "tag",
38
+ "class",
39
+ "data-testid"
40
+ ]);
41
+ };
42
+ }
43
+ });
44
+ //#endregion
45
+ export { column_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,27 @@
1
+ //#region src/components/grid/column/types.d.ts
2
+ /**
3
+ * Props exposed by the {@link Col} component.
4
+ */
5
+ export type ColumnProps = {
6
+ /**
7
+ * Number of columns to stretch the component.
8
+ * Available options are:
9
+ * - `"auto"`: which won't try to stretch the component
10
+ * - `"1"` to `"12"`.
11
+ * @default "12"
12
+ */
13
+ cols?: Cols;
14
+ /**
15
+ * Renders the column as an item of a list (`<li>`), without its bullet.
16
+ * Use it on every column of a `URow` with `list`, whose records are,
17
+ * semantically, the items of a list.
18
+ * @default false
19
+ */
20
+ listItem?: boolean;
21
+ /**
22
+ * Component id to use on automated tests.
23
+ */
24
+ dataTestid?: string;
25
+ };
26
+ type Cols = "auto" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" | "10" | "11" | "12";
27
+ //#endregion
@@ -0,0 +1,5 @@
1
+ import container_vue_vue_type_script_setup_true_lang_default from "./container.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/grid/container/container.vue
3
+ var container_default = container_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { container_default as default };
@@ -0,0 +1,27 @@
1
+ import { ContainerProps } from "./types.js";
2
+ //#region src/components/grid/container/container.vue.d.ts
3
+ /**
4
+ * Container component to be placed at the top of the component tree.
5
+ *
6
+ * @example
7
+ * ```vue
8
+ * <template>
9
+ * <u-container>
10
+ * <!-- uimed-components -->
11
+ * </u-container>
12
+ * <template>
13
+ * ```
14
+ *
15
+ * @see {@link https://nexdom-healthtech.github.io/uimed-vue/guide/components/layout | Container Guide}
16
+ */
17
+ declare const _default: typeof __VLS_export;
18
+ declare const __VLS_export: __VLS_WithSlots<import("vue", { with: { "resolution-mode": "import" } }).DefineComponent<ContainerProps, {}, {}, {}, {}, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, import("vue", { with: { "resolution-mode": "import" } }).ComponentOptionsMixin, {}, string, import("vue", { with: { "resolution-mode": "import" } }).PublicProps, Readonly<ContainerProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>, {
19
+ default?: (props: {}) => any;
20
+ }>;
21
+ type __VLS_WithSlots<T, S> = T & {
22
+ new (): {
23
+ $slots: S;
24
+ };
25
+ };
26
+ //#endregion
27
+ export { _default as default };
@@ -0,0 +1,33 @@
1
+ import { useFullHeight } from "../../../composables/dimensions/dimensions.js";
2
+ import { createBlock, defineComponent, normalizeClass, openBlock, renderSlot, unref, withCtx } from "vue";
3
+ import { VContainer } from "vuetify/components";
4
+ var container_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
5
+ inheritAttrs: false,
6
+ __name: "container",
7
+ props: {
8
+ fullHeight: {
9
+ type: Boolean,
10
+ required: false
11
+ },
12
+ dataTestid: {
13
+ type: String,
14
+ required: false
15
+ }
16
+ },
17
+ setup(__props) {
18
+ const props = __props;
19
+ const heightClass = useFullHeight(() => props.fullHeight);
20
+ return (_ctx, _cache) => {
21
+ return openBlock(), createBlock(unref(VContainer), {
22
+ class: normalizeClass(unref(heightClass)),
23
+ "data-testid": props.dataTestid,
24
+ fluid: ""
25
+ }, {
26
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
27
+ _: 3
28
+ }, 8, ["class", "data-testid"]);
29
+ };
30
+ }
31
+ });
32
+ //#endregion
33
+ export { container_vue_vue_type_script_setup_true_lang_default as default };
@@ -0,0 +1,17 @@
1
+ //#region src/components/grid/container/types.d.ts
2
+ /**
3
+ * Props exposed by the {@link Container} component.
4
+ */
5
+ export type ContainerProps = {
6
+ /**
7
+ * Stretches the container to the whole height of its parent, which must have a height of its
8
+ * own, e.g. the content area of `UMain`.
9
+ * @default false
10
+ */
11
+ fullHeight?: boolean;
12
+ /**
13
+ * Component id to use on automated tests.
14
+ */
15
+ dataTestid?: string;
16
+ };
17
+ //#endregion
@@ -0,0 +1,5 @@
1
+ import row_vue_vue_type_script_setup_true_lang_default from "./row.vue_vue_type_script_setup_true_lang.js";
2
+ //#region src/components/grid/row/row.vue
3
+ var row_default = row_vue_vue_type_script_setup_true_lang_default;
4
+ //#endregion
5
+ export { row_default as default };