@nexdom/uimed-vue 2.0.0-beta.37 → 2.0.0-beta.38

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.
@@ -134,6 +134,22 @@ interface NavigationMenuItem {
134
134
  action?: () => void;
135
135
  }
136
136
  //#endregion
137
+ //#region src/components/footer/types.d.ts
138
+ /**
139
+ * Props of the footer shown by the {@link Main} component.
140
+ */
141
+ type FooterProps = {
142
+ /**
143
+ * Text shown in the footer, e.g. the application version ("Versão 1.4.2").
144
+ * The footer is hidden when it's empty or omitted.
145
+ */
146
+ description?: string;
147
+ /**
148
+ * Component id to use on automated tests.
149
+ */
150
+ dataTestid?: string;
151
+ };
152
+ //#endregion
137
153
  //#region src/components/main/types.d.ts
138
154
  /**
139
155
  * Props exposed by the {@link Main} component.
@@ -158,6 +174,16 @@ type MainProps = {
158
174
  * Navigation menu properties.
159
175
  */
160
176
  navigationMenu?: NavigationMenuProps;
177
+ /**
178
+ * Footer properties. The footer is fixed at the bottom of the screen and
179
+ * is hidden when it's omitted or its `description` is empty.
180
+ *
181
+ * @example
182
+ * ```vue
183
+ * <u-main :footer="{ description: `Versão ${version}` }" />
184
+ * ```
185
+ */
186
+ footer?: FooterProps;
161
187
  /**
162
188
  * Shows skeleton loaders in place of the user-related parts of the app bar
163
189
  * and of the navigation menu items while their data is being loaded.
@@ -1,7 +1,7 @@
1
1
  import { a as messages, n as owners$1, r as requests, s as useVuetifyColor } from "./use-dialog-Ck2_ZW7T.js";
2
2
  import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createSlots, createTextVNode, createVNode, defineComponent, guardReactiveProps, inject, isRef, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, onMounted, onScopeDispose, onUnmounted, openBlock, provide, readonly, ref, renderList, renderSlot, resolveDynamicComponent, shallowRef, toDisplayString, toValue, unref, useId, useModel, useSlots, useTemplateRef, watch, withCtx, withKeys, withModifiers } from "vue";
3
3
  import { pt } from "vuetify/locale";
4
- import { VApp, VAppBar, VAppBarNavIcon, VAppBarTitle, VAutocomplete, VAvatar, VBadge, VBtn, VCard, VCardActions, VCardText, VCheckboxBtn, VCol, VCombobox, VContainer, VDataIterator, VDatePicker, VDialog, VDivider, VEmptyState, VExpansionPanel, VExpansionPanelText, VExpansionPanelTitle, VExpansionPanels, VForm, VIcon, VIconBtn, VImg, VList, VListGroup, VListItem, VListItemAction, VListSubheader, VLocaleProvider, VMain, VMenu, VNavigationDrawer, VPagination, VProgressCircular, VProgressLinear, VRow, VSkeletonLoader, VSnackbarQueue, VTable, VTextField, VTimePicker } from "vuetify/components";
4
+ import { VApp, VAppBar, VAppBarNavIcon, VAppBarTitle, VAutocomplete, VAvatar, VBadge, VBtn, VCard, VCardActions, VCardText, VCheckboxBtn, VCol, VCombobox, VContainer, VDataIterator, VDatePicker, VDialog, VDivider, VEmptyState, VExpansionPanel, VExpansionPanelText, VExpansionPanelTitle, VExpansionPanels, VFooter, VForm, VIcon, VIconBtn, VImg, VList, VListGroup, VListItem, VListItemAction, VListSubheader, VLocaleProvider, VMain, VMenu, VNavigationDrawer, VPagination, VProgressCircular, VProgressLinear, VRow, VSkeletonLoader, VSnackbarQueue, VTable, VTextField, VTimePicker } from "vuetify/components";
5
5
  import { formatDateTime, isEmail, isEmpty, isPhone, isUrl } from "@nexdom/shared/utils";
6
6
  import { VHighlight } from "vuetify/labs/VHighlight";
7
7
  import { RouterLink } from "vue-router";
@@ -727,6 +727,35 @@ var navigation_menu_default = /* @__PURE__ */ defineComponent({
727
727
  }
728
728
  });
729
729
  //#endregion
730
+ //#region src/components/footer/footer.vue
731
+ var footer_default = /* @__PURE__ */ defineComponent({
732
+ inheritAttrs: false,
733
+ __name: "footer",
734
+ props: {
735
+ description: {
736
+ type: String,
737
+ required: false
738
+ },
739
+ dataTestid: {
740
+ type: String,
741
+ required: false
742
+ }
743
+ },
744
+ setup(__props) {
745
+ const props = __props;
746
+ return (_ctx, _cache) => {
747
+ return openBlock(), createBlock(unref(VFooter), {
748
+ "data-testid": props.dataTestid,
749
+ class: "justify-center text-center",
750
+ app: ""
751
+ }, {
752
+ default: withCtx(() => [createTextVNode(toDisplayString(props.description), 1)]),
753
+ _: 1
754
+ }, 8, ["data-testid"]);
755
+ };
756
+ }
757
+ });
758
+ //#endregion
730
759
  //#region src/composables/dimensions/dimensions.ts
731
760
  /**
732
761
  * Vuetify's utility class that stretches a component to the whole width of its parent, for
@@ -1182,6 +1211,10 @@ var main_default = /* @__PURE__ */ defineComponent({
1182
1211
  type: Object,
1183
1212
  required: false
1184
1213
  },
1214
+ footer: {
1215
+ type: Object,
1216
+ required: false
1217
+ },
1185
1218
  loading: {
1186
1219
  type: Boolean,
1187
1220
  required: false
@@ -1228,7 +1261,8 @@ var main_default = /* @__PURE__ */ defineComponent({
1228
1261
  _: 3
1229
1262
  })]),
1230
1263
  _: 3
1231
- })
1264
+ }),
1265
+ props.footer?.description ? (openBlock(), createBlock(footer_default, normalizeProps(mergeProps({ key: 2 }, props.footer)), null, 16)) : createCommentVNode("v-if", true)
1232
1266
  ]),
1233
1267
  _: 3
1234
1268
  }, 8, ["data-testid"]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexdom/uimed-vue",
3
- "version": "2.0.0-beta.37",
3
+ "version": "2.0.0-beta.38",
4
4
  "description": "A ui framework for NEXDOM applications.",
5
5
  "keywords": [
6
6
  "lib",