@nexdom/uimed-vue 2.0.0-beta.52 → 2.0.0-beta.54

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.
@@ -625,8 +625,8 @@ declare const __VLS_export$16: import("vue", { with: { "resolution-mode": "impor
625
625
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
626
626
  }>, {
627
627
  variant: TextFieldVariant;
628
- clearable: boolean;
629
628
  type: TextFieldType;
629
+ clearable: boolean;
630
630
  }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
631
631
  //#endregion
632
632
  //#region src/components/inputs/checkbox/types.d.ts
@@ -3,7 +3,7 @@ import { a as messages, c as colorToVuetifyTextColor, n as owners$1, r as reques
3
3
  import { useLocale, useMask } from "vuetify";
4
4
  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";
5
5
  import { pt } from "vuetify/locale";
6
- 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";
6
+ import { VApp, VAppBar, VAppBarNavIcon, VAppBarTitle, VAutocomplete, VAvatar, VBadge, VBtn, VCard, VCardActions, VCardItem, 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";
7
7
  import { formatDateTime, isEmail, isEmpty, isPhone, isUrl, toInitials } from "@nexdom/shared/utils";
8
8
  import { VHighlight } from "vuetify/labs/VHighlight";
9
9
  import { RouterLink } from "vue-router";
@@ -168,6 +168,7 @@ var skeleton_loader_default = /* @__PURE__ */ defineComponent({
168
168
  const { t } = useLocale();
169
169
  const widthClass = useFullWidth(() => props.fullWidth);
170
170
  const heightClass = useFullHeight(() => props.fullHeight);
171
+ const alignContentClass = computed(() => props.fullHeight ? "align-content-space-between" : void 0);
171
172
  const loadingAttrs = computed(() => ({
172
173
  ariaLabel: void 0,
173
174
  ariaLive: void 0,
@@ -179,7 +180,11 @@ var skeleton_loader_default = /* @__PURE__ */ defineComponent({
179
180
  loading: props.loading,
180
181
  type: props.type,
181
182
  color: props.color,
182
- class: [unref(widthClass), unref(heightClass)]
183
+ class: [
184
+ unref(widthClass),
185
+ unref(heightClass),
186
+ alignContentClass.value
187
+ ]
183
188
  }, loadingAttrs.value), {
184
189
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
185
190
  _: 3
@@ -272,6 +277,7 @@ var app_bar_default = /* @__PURE__ */ defineComponent({
272
277
  if (userInitials.value) return { text: userInitials.value };
273
278
  return { icon: icons.accountAlternative };
274
279
  });
280
+ const hasUserInfo = computed(() => !!props.user.title || !!props.user.subtitle);
275
281
  function isParentOption(option) {
276
282
  return "items" in option;
277
283
  }
@@ -368,51 +374,59 @@ var app_bar_default = /* @__PURE__ */ defineComponent({
368
374
  }), null, 16)]),
369
375
  _: 1
370
376
  }, 16, ["data-testid"])]),
371
- default: withCtx(() => [createVNode(unref(VCard), {
372
- title: __props.user?.title,
373
- subtitle: __props.user?.subtitle,
374
- "data-testid": userMenuDataTestid.value
375
- }, {
376
- prepend: withCtx(() => [createCommentVNode(" Decorative: the user's name, when given, is already the card's title "), createVNode(unref(VAvatar), mergeProps(userAvatarProps.value, {
377
- color: "primary",
378
- "aria-hidden": "true"
379
- }), null, 16)]),
380
- default: withCtx(() => [createVNode(unref(VDivider)), createVNode(unref(VList), {
381
- nav: "",
382
- role: "group"
383
- }, {
384
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(props.user?.options, (option, index) => {
385
- return openBlock(), createElementBlock(Fragment, { key: index }, [index > 0 ? (openBlock(), createBlock(unref(VDivider), {
386
- key: 0,
387
- class: "mt-1"
388
- })) : createCommentVNode("v-if", true), isParentOption(option) ? (openBlock(), createBlock(unref(VListGroup), { key: 1 }, {
389
- activator: withCtx(({ props, isOpen }) => [createVNode(unref(VListItem), mergeProps({ ref_for: true }, props, {
390
- title: option.description,
391
- "aria-expanded": isOpen,
392
- role: void 0,
393
- tag: "button",
394
- type: "button"
395
- }), null, 16, ["title", "aria-expanded"])]),
396
- default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(option.items, (childOption, index) => {
397
- return openBlock(), createBlock(unref(VListItem), mergeProps({ key: index }, { ref_for: true }, unref(routeToListItemProps)(childOption.route), {
398
- title: childOption.description,
399
- onClick: childOption.action
400
- }), null, 16, ["title", "onClick"]);
401
- }), 128))]),
402
- _: 2
403
- }, 1024)) : (openBlock(), createBlock(unref(VListItem), mergeProps({
404
- key: 2,
405
- title: option.description
406
- }, { ref_for: true }, unref(routeToListItemProps)(option.route), { onClick: option.action }), null, 16, ["title", "onClick"]))], 64);
407
- }), 128))]),
408
- _: 1
409
- })]),
377
+ default: withCtx(() => [createVNode(unref(VCard), { "data-testid": userMenuDataTestid.value }, {
378
+ default: withCtx(() => [
379
+ createCommentVNode(" The card's header puts the avatar beside the title, and no prop stacks or centers\n them: the avatar and the user's info get an item each, centered by a class, as USection\n and UFooter center their text. The options below stay aligned to the start "),
380
+ createVNode(unref(VCardItem), { class: "text-center" }, {
381
+ default: withCtx(() => [createCommentVNode(" Decorative: the user's name, when given, is already the title below "), createVNode(unref(VAvatar), mergeProps(userAvatarProps.value, {
382
+ size: "x-large",
383
+ color: "primary",
384
+ "aria-hidden": "true"
385
+ }), null, 16)]),
386
+ _: 1
387
+ }),
388
+ hasUserInfo.value ? (openBlock(), createBlock(unref(VCardItem), {
389
+ key: 0,
390
+ title: __props.user?.title,
391
+ subtitle: __props.user?.subtitle,
392
+ class: "text-center"
393
+ }, null, 8, ["title", "subtitle"])) : createCommentVNode("v-if", true),
394
+ createVNode(unref(VDivider)),
395
+ createCommentVNode(" Vuetify's `list` role only allows list items, but the options are links and\n separators "),
396
+ createVNode(unref(VList), {
397
+ nav: "",
398
+ role: "group"
399
+ }, {
400
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(props.user?.options, (option, index) => {
401
+ return openBlock(), createElementBlock(Fragment, { key: index }, [index > 0 ? (openBlock(), createBlock(unref(VDivider), {
402
+ key: 0,
403
+ class: "mt-1"
404
+ })) : createCommentVNode("v-if", true), isParentOption(option) ? (openBlock(), createBlock(unref(VListGroup), { key: 1 }, {
405
+ activator: withCtx(({ props, isOpen }) => [createVNode(unref(VListItem), mergeProps({ ref_for: true }, props, {
406
+ title: option.description,
407
+ "aria-expanded": isOpen,
408
+ role: void 0,
409
+ tag: "button",
410
+ type: "button",
411
+ class: "w-100 text-start"
412
+ }), null, 16, ["title", "aria-expanded"])]),
413
+ default: withCtx(() => [(openBlock(true), createElementBlock(Fragment, null, renderList(option.items, (childOption, index) => {
414
+ return openBlock(), createBlock(unref(VListItem), mergeProps({ key: index }, { ref_for: true }, unref(routeToListItemProps)(childOption.route), {
415
+ title: childOption.description,
416
+ onClick: childOption.action
417
+ }), null, 16, ["title", "onClick"]);
418
+ }), 128))]),
419
+ _: 2
420
+ }, 1024)) : (openBlock(), createBlock(unref(VListItem), mergeProps({
421
+ key: 2,
422
+ title: option.description
423
+ }, { ref_for: true }, unref(routeToListItemProps)(option.route), { onClick: option.action }), null, 16, ["title", "onClick"]))], 64);
424
+ }), 128))]),
425
+ _: 1
426
+ })
427
+ ]),
410
428
  _: 1
411
- }, 8, [
412
- "title",
413
- "subtitle",
414
- "data-testid"
415
- ])]),
429
+ }, 8, ["data-testid"])]),
416
430
  _: 1
417
431
  })) : createCommentVNode("v-if", true)
418
432
  ]),
@@ -812,7 +826,8 @@ var navigation_menu_default = /* @__PURE__ */ defineComponent({
812
826
  "aria-expanded": isOpen,
813
827
  role: void 0,
814
828
  tag: "button",
815
- type: "button"
829
+ type: "button",
830
+ class: "w-100 text-start"
816
831
  }), null, 16, [
817
832
  "title",
818
833
  "prepend-icon",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexdom/uimed-vue",
3
- "version": "2.0.0-beta.52",
3
+ "version": "2.0.0-beta.54",
4
4
  "description": "A ui framework for NEXDOM applications.",
5
5
  "keywords": [
6
6
  "lib",