@nexdom/uimed-vue 2.0.0-beta.40 → 2.0.0-beta.41

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.
@@ -463,8 +463,8 @@ declare const __VLS_export$16: import("vue", { with: { "resolution-mode": "impor
463
463
  "onUpdate:modelValue"?: ((value: string) => any) | undefined;
464
464
  }>, {
465
465
  variant: TextFieldVariant;
466
- type: TextFieldType;
467
466
  clearable: boolean;
467
+ type: TextFieldType;
468
468
  }, {}, {}, {}, string, import("vue", { with: { "resolution-mode": "import" } }).ComponentProvideOptions, false, {}, any>;
469
469
  //#endregion
470
470
  //#region src/components/inputs/checkbox/types.d.ts
@@ -859,15 +859,41 @@ var container_default = /* @__PURE__ */ defineComponent({
859
859
  }
860
860
  });
861
861
  //#endregion
862
+ //#region src/composables/dialogs/use-decorative-timer.ts
863
+ /**
864
+ * Content props that hide a snackbar's timer bar from assistive technologies,
865
+ * keeping it only as a visual countdown, since the message itself is already
866
+ * announced by the snackbar's live region.
867
+ *
868
+ * Workaround until Vuetify offers an option for it: the timer bar is a
869
+ * `VProgressLinear` that always renders `role="progressbar"` with
870
+ * `aria-hidden="false"` and no accessible name, and neither `VSnackbar` nor
871
+ * Vuetify's defaults can set attributes on it. So these vnode hooks mark the
872
+ * bar after every render of the snackbar content, which also covers the bar
873
+ * recreated when the pointer leaves the snackbar. Vue doesn't patch the
874
+ * attribute back, since Vuetify keeps rendering the same `"false"` value.
875
+ */
876
+ function useDecorativeTimer() {
877
+ return {
878
+ onVnodeMounted: hideTimer,
879
+ onVnodeUpdated: hideTimer
880
+ };
881
+ }
882
+ function hideTimer({ el }) {
883
+ el?.querySelector(".v-snackbar__timer [role='progressbar']")?.setAttribute("aria-hidden", "true");
884
+ }
885
+ //#endregion
862
886
  //#region src/components/dialogs/toast.vue
863
887
  var toast_default = /* @__PURE__ */ defineComponent({
864
888
  inheritAttrs: false,
865
889
  __name: "toast",
866
890
  setup(__props) {
891
+ const decorativeTimer = useDecorativeTimer();
867
892
  return (_ctx, _cache) => {
868
893
  return openBlock(), createBlock(unref(VSnackbarQueue), {
869
894
  modelValue: unref(messages),
870
895
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => isRef(messages) ? messages.value = $event : null),
896
+ "content-props": unref(decorativeTimer),
871
897
  "display-strategy": "overflow",
872
898
  location: "top end",
873
899
  "total-visible": "3",
@@ -882,7 +908,7 @@ var toast_default = /* @__PURE__ */ defineComponent({
882
908
  variant: "text"
883
909
  }), null, 16)]),
884
910
  _: 1
885
- }, 8, ["modelValue"]);
911
+ }, 8, ["modelValue", "content-props"]);
886
912
  };
887
913
  }
888
914
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nexdom/uimed-vue",
3
- "version": "2.0.0-beta.40",
3
+ "version": "2.0.0-beta.41",
4
4
  "description": "A ui framework for NEXDOM applications.",
5
5
  "keywords": [
6
6
  "lib",