@nxgt/material-vue 0.23.4 → 0.24.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.
- package/README.md +22 -18
- package/dist/{Button-CVIR6uLK.js → Button-DOcT4Pej.js} +95 -72
- package/dist/{HoverCardTrigger-iAL5ALrL.js → HoverCardTrigger-WQe85PCH.js} +2 -2
- package/dist/{camera-Gvg5N956.js → camera-BNbLUPb1.js} +13 -13
- package/dist/{components-AScwCcds.js → components-YlYuHLEI.js} +10856 -10379
- package/dist/components.js +8 -8
- package/dist/composables.js +2 -2
- package/dist/dnd.js +1 -1
- package/dist/{i18n-provider-BqWxpaKu.js → i18n-provider-DTuxugHO.js} +1 -1
- package/dist/i18n.js +4 -4
- package/dist/{icon-button-DbEME76t.js → icon-button-DKLuZ2c-.js} +34 -37
- package/dist/lib/components/ui/actions/button/has-text-content.d.ts +10 -0
- package/dist/lib/components/ui/actions/copy-button/copy-value.vue.d.ts +21 -0
- package/dist/lib/components/ui/actions/copy-button/index.d.ts +2 -0
- package/dist/lib/components/ui/collections/data-table/data-table-context.d.ts +6 -0
- package/dist/lib/components/ui/collections/data-table/data-table-pagination.vue.d.ts +2 -0
- package/dist/lib/components/ui/collections/data-table/data-table.vue.d.ts +17 -27
- package/dist/lib/components/ui/collections/data-table/index.d.ts +1 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-body.vue.d.ts +10 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-empty.vue.d.ts +13 -1
- package/dist/lib/components/ui/collections/data-table/partials/data-table-head.vue.d.ts +22 -0
- package/dist/lib/components/ui/collections/data-table/partials/data-table-skeleton-rows.vue.d.ts +10 -0
- package/dist/lib/components/ui/collections/data-table/use-data-table.d.ts +17 -0
- package/dist/lib/components/ui/collections/filter/partials/filter-field-slider-range.vue.d.ts +1 -4
- package/dist/lib/components/ui/collections/pagination/index.d.ts +5 -0
- package/dist/lib/components/ui/collections/pagination/pagination-bar.vue.d.ts +21 -0
- package/dist/lib/components/ui/collections/pagination/pagination-items.d.ts +2 -0
- package/dist/lib/components/ui/collections/pagination/pagination-link.vue.d.ts +18 -0
- package/dist/lib/components/ui/display/markdown/index.d.ts +18 -0
- package/dist/lib/components/ui/feedback/skeleton/skeleton-text.vue.d.ts +1 -1
- package/dist/lib/components/ui/feedback/spinner/spinner.compound-variants.d.ts +4 -0
- package/dist/lib/components/ui/fields/contacts/consts.d.ts +1 -1
- package/dist/lib/components/ui/fields/inline-edit/index.d.ts +1 -0
- package/dist/lib/components/ui/fields/inline-edit/inline-edit-form-field.vue.d.ts +7 -0
- package/dist/lib/components/ui/layout/doc/doc.vue.d.ts +5 -5
- package/dist/lib/components/ui/layout/doc/index.d.ts +8 -1
- package/dist/lib/components/ui/layout/doc/partials/default-doc-link.vue.d.ts +14 -0
- package/dist/lib/components/ui/layout/doc/partials/doc-copy-page.vue.d.ts +6 -0
- package/dist/lib/components/ui/layout/doc/partials/doc-link.vue.d.ts +3 -7
- package/dist/lib/components/ui/layout/doc/types.d.ts +6 -1
- package/dist/lib/components/ui/media/pdf-viewer/index.d.ts +6 -6
- package/dist/lib/components/ui/media/pdf-viewer/pdf-reader.vue.d.ts +2 -2
- package/dist/lib/components/ui/primitives/icon/icon-context.d.ts +1 -1
- package/dist/lib/components/ui/selection/checkbox/Checkbox.vue.d.ts +21 -5
- package/dist/lib/components/ui/selection/checkbox/checkbox-form-field.vue.d.ts +17 -0
- package/dist/lib/components/ui/selection/checkbox/index.d.ts +2 -0
- package/dist/lib/components/ui/widgets/charts/chart-container.vue.d.ts +1 -1
- package/dist/lib/components/ui/widgets/code-editor/code-editor-form-field.vue.d.ts +13 -0
- package/dist/lib/components/ui/widgets/code-editor/index.d.ts +1 -0
- package/dist/lib/i18n/resources/en/en.d.ts +7 -0
- package/dist/lib/i18n/resources/en/material.json.d.ts +8 -1
- package/dist/lib/i18n/resources/fr/fr.d.ts +7 -0
- package/dist/lib/i18n/resources/fr/material.json.d.ts +8 -1
- package/dist/lib/i18n/resources/resources.d.ts +14 -0
- package/dist/lib/i18n/translator.d.ts +1 -1
- package/dist/lib/nuxt/component-names.d.ts +1 -1
- package/dist/lib.js +2 -2
- package/dist/main.js +17 -17
- package/dist/map.js +4 -4
- package/dist/material-vue.css +1 -1
- package/dist/{pdf-outline-sidebar-oz9wdBhB.js → pdf-outline-sidebar-0I-LGrgY.js} +2 -2
- package/dist/{pdf-page-0rlq1Lo6.js → pdf-page-C74-6lyZ.js} +1 -1
- package/dist/{pdf-page-list-DfhjNHoI.js → pdf-page-list-DPsquYPY.js} +2 -2
- package/dist/{pdf-reader-Dr8RVcs4.js → pdf-reader-Bkpp7UZ7.js} +8 -8
- package/dist/{pdf-sidebar-VXPQbC_R.js → pdf-sidebar-BH-1jvy-.js} +3 -3
- package/dist/{pdf-thumbnail-sidebar-BpgXrVBj.js → pdf-thumbnail-sidebar-ByqNaYfz.js} +3 -3
- package/dist/{pdf-toolbar-B6gRRcsv.js → pdf-toolbar-BRnmzddi.js} +4 -4
- package/dist/pdf.js +2 -2
- package/dist/{sortable-provider-oEVjQiCl.js → sortable-provider-CC9eO1nm.js} +2 -2
- package/dist/{stored-language-rjOMJkyX.js → stored-language-N_UoPJsY.js} +20 -2
- package/dist/{stx-player-DNADkQ31.js → stx-player-BGKIDqNX.js} +22 -22
- package/dist/{translator-BCSJSO1-.js → translator-CU0jKvzB.js} +1 -1
- package/dist/{use-heading-spy-d50_nxgR.js → use-heading-spy-Bw1LIAkC.js} +1 -1
- package/dist/{use-material-translation-C5zPFhbk.js → use-material-translation-8hUB2M-S.js} +3 -3
- package/docs/components/buttons-and-actions.md +19 -3
- package/docs/components/data-display.md +14 -1
- package/docs/components/data-table-filter-and-lists.md +90 -8
- package/docs/components/feedback-and-status.md +1 -1
- package/docs/components/form-fields.md +7 -5
- package/docs/components/media-and-files.md +1 -1
- package/docs/components/navigation-and-layout.md +67 -7
- package/docs/components/primitives.md +4 -2
- package/docs/components/rich-widgets.md +4 -3
- package/docs/components/selection-and-choice.md +16 -13
- package/docs/guides/forms.md +14 -5
- package/docs/guides/i18n.md +6 -2
- package/docs/guides/ssr.md +2 -0
- package/docs/previews/buttons-actions-copybutton.webp +0 -0
- package/docs/previews/data-table-filter-lists-pagination.webp +0 -0
- package/docs/previews/form-fields-slider.webp +0 -0
- package/docs/previews/navigation-layout-stepper.webp +0 -0
- package/docs/previews/selection-choice-checkbox.webp +0 -0
- package/docs/roadmap.md +41 -1
- package/docs/troubleshooting.md +104 -0
- package/lib/nuxt/component-names.ts +12 -0
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
2
|
import { t } from "./utils-CykWQ0iJ.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as r } from "./use-material-translation-
|
|
3
|
+
import { gf as n } from "./components-YlYuHLEI.js";
|
|
4
|
+
import { t as r } from "./use-material-translation-8hUB2M-S.js";
|
|
5
5
|
import { Fragment as i, computed as a, createBlock as o, createCommentVNode as s, createElementBlock as c, createElementVNode as l, defineComponent as u, normalizeClass as d, normalizeStyle as f, openBlock as p, ref as m, renderList as h, toDisplayString as g, unref as _, withCtx as v } from "vue";
|
|
6
6
|
//#region lib/components/ui/media/pdf-viewer/partials/pdf-outline-row.vue?vue&type=script&setup=true&lang.ts
|
|
7
7
|
var y = {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { t as e } from "./utils-CykWQ0iJ.js";
|
|
2
|
-
import {
|
|
2
|
+
import { vp as t } from "./components-YlYuHLEI.js";
|
|
3
3
|
import { computed as n, createBlock as r, createCommentVNode as i, createElementBlock as a, createElementVNode as o, defineComponent as s, nextTick as c, normalizeClass as l, normalizeStyle as u, onBeforeUnmount as d, openBlock as f, ref as p, shallowRef as m, unref as h, watch as g } from "vue";
|
|
4
4
|
import { DEFAULT_PAGE_SIZE as _, escapeHtml as v, findTextMatches as y, highlightItemHtml as b, placeholderSize as x, rotatedSize as S } from "@nxgt/material-core/pdf-viewer";
|
|
5
5
|
//#region lib/components/ui/media/pdf-viewer/pdf-note-icons.ts
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as n } from "./pdf-page-
|
|
2
|
+
import { gf as t } from "./components-YlYuHLEI.js";
|
|
3
|
+
import { t as n } from "./pdf-page-C74-6lyZ.js";
|
|
4
4
|
import { Fragment as r, createBlock as i, createElementBlock as a, createElementVNode as o, defineComponent as s, openBlock as c, renderList as l, withCtx as u } from "vue";
|
|
5
5
|
//#region lib/components/ui/media/pdf-viewer/partials/pdf-page-list.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var d = { class: "flex flex-col items-center gap-4 px-4 py-4" }, f = /*@__PURE__*/ s({
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { t as e } from "./utils-CykWQ0iJ.js";
|
|
2
|
-
import {
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
4
|
-
import { t as r } from "./Button-
|
|
5
|
-
import { o as i } from "./HoverCardTrigger-
|
|
6
|
-
import { n as a } from "./pdf-page-
|
|
7
|
-
import { t as o } from "./pdf-page-list-
|
|
8
|
-
import { t as s } from "./pdf-sidebar-
|
|
9
|
-
import { t as c } from "./pdf-toolbar-
|
|
2
|
+
import { En as t } from "./components-YlYuHLEI.js";
|
|
3
|
+
import { t as n } from "./use-material-translation-8hUB2M-S.js";
|
|
4
|
+
import { t as r } from "./Button-DOcT4Pej.js";
|
|
5
|
+
import { o as i } from "./HoverCardTrigger-WQe85PCH.js";
|
|
6
|
+
import { n as a } from "./pdf-page-C74-6lyZ.js";
|
|
7
|
+
import { t as o } from "./pdf-page-list-DPsquYPY.js";
|
|
8
|
+
import { t as s } from "./pdf-sidebar-BH-1jvy-.js";
|
|
9
|
+
import { t as c } from "./pdf-toolbar-BRnmzddi.js";
|
|
10
10
|
import { computed as l, createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, nextTick as _, normalizeClass as v, onBeforeUnmount as y, onMounted as b, openBlock as x, reactive as S, ref as C, shallowRef as w, toDisplayString as T, toRef as E, unref as D, useId as O, watch as k, withCtx as A } from "vue";
|
|
11
11
|
import { AlertCircle as j, FileX2 as M, KeyRound as N, Loader2 as P } from "@lucide/vue";
|
|
12
12
|
import { pdfSourceKey as F, toPdfjsParams as I } from "@nxgt/material-core/pdf-source";
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
2
|
import { t } from "./utils-CykWQ0iJ.js";
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
4
|
-
import { t as r } from "./pdf-outline-sidebar-
|
|
5
|
-
import { t as i } from "./pdf-thumbnail-sidebar-
|
|
3
|
+
import { t as n } from "./use-material-translation-8hUB2M-S.js";
|
|
4
|
+
import { t as r } from "./pdf-outline-sidebar-0I-LGrgY.js";
|
|
5
|
+
import { t as i } from "./pdf-thumbnail-sidebar-ByqNaYfz.js";
|
|
6
6
|
import { createElementBlock as a, createElementVNode as o, createVNode as s, defineComponent as c, normalizeClass as l, openBlock as u, toDisplayString as d, unref as f, useId as p, useTemplateRef as m } from "vue";
|
|
7
7
|
//#region lib/components/ui/media/pdf-viewer/partials/pdf-sidebar.vue?vue&type=script&setup=true&lang.ts
|
|
8
8
|
var h = ["aria-label"], g = ["aria-label"], _ = [
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
2
|
import { t } from "./utils-CykWQ0iJ.js";
|
|
3
|
-
import {
|
|
4
|
-
import { t as r } from "./use-material-translation-
|
|
5
|
-
import { t as i } from "./pdf-page-
|
|
3
|
+
import { gf as n } from "./components-YlYuHLEI.js";
|
|
4
|
+
import { t as r } from "./use-material-translation-8hUB2M-S.js";
|
|
5
|
+
import { t as i } from "./pdf-page-C74-6lyZ.js";
|
|
6
6
|
import { Fragment as a, createCommentVNode as o, createElementBlock as s, createElementVNode as c, createVNode as l, defineComponent as u, normalizeClass as d, openBlock as f, renderList as p, toDisplayString as m, unref as h, withCtx as g } from "vue";
|
|
7
7
|
//#region lib/components/ui/media/pdf-viewer/partials/pdf-thumbnail-sidebar.vue?vue&type=script&setup=true&lang.ts
|
|
8
8
|
var _ = ["aria-label"], v = {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as e } from "./rolldown-runtime-CWhphoD1.js";
|
|
2
2
|
import { t } from "./utils-CykWQ0iJ.js";
|
|
3
|
-
import { t as n } from "./use-material-translation-
|
|
4
|
-
import {
|
|
5
|
-
import { t as i } from "./icon-button-
|
|
3
|
+
import { t as n } from "./use-material-translation-8hUB2M-S.js";
|
|
4
|
+
import { s as r } from "./Button-DOcT4Pej.js";
|
|
5
|
+
import { t as i } from "./icon-button-DKLuZ2c-.js";
|
|
6
6
|
import { a, i as o, n as s, o as c, r as l, t as u } from "./DropdownMenuTrigger-BHAhXGUO.js";
|
|
7
|
-
import { o as d } from "./HoverCardTrigger-
|
|
7
|
+
import { o as d } from "./HoverCardTrigger-WQe85PCH.js";
|
|
8
8
|
import { Fragment as f, computed as p, createBlock as m, createCommentVNode as h, createElementBlock as g, createElementVNode as _, createTextVNode as v, createVNode as y, defineComponent as b, nextTick as x, normalizeClass as S, openBlock as C, ref as w, renderList as T, toDisplayString as E, unref as D, useTemplateRef as O, watch as k, withCtx as A } from "vue";
|
|
9
9
|
import { ChevronDown as j, ChevronLeft as M, ChevronRight as N, ChevronUp as P, Download as F, Maximize2 as I, Minimize2 as L, Moon as R, Printer as z, RotateCw as B, Search as V, Sidebar as H, ZoomIn as U, ZoomOut as W } from "@lucide/vue";
|
|
10
10
|
//#region lib/components/ui/media/pdf-viewer/partials/pdf-toolbar-search.vue?vue&type=script&setup=true&lang.ts
|
package/dist/pdf.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as e, t } from "./use-material-translation-
|
|
2
|
-
import { t as n } from "./Button-
|
|
1
|
+
import { n as e, t } from "./use-material-translation-8hUB2M-S.js";
|
|
2
|
+
import { t as n } from "./Button-DOcT4Pej.js";
|
|
3
3
|
import { computed as r, createBlock as i, createTextVNode as a, defineComponent as o, getCurrentInstance as s, nextTick as c, onMounted as l, onScopeDispose as u, openBlock as d, ref as f, renderSlot as p, shallowRef as m, toDisplayString as ee, toValue as h, unref as g, watch as te, withCtx as ne } from "vue";
|
|
4
4
|
import { contentDisposition as re, pdfBytesResponse as ie, toWebStream as ae } from "@nxgt/material-core/pdf/http";
|
|
5
5
|
import { badge as oe, dataTable as se, defaultPdfTheme as ce, definePdfDocument as _, divider as v, header as y, heading as b, image as x, keyValue as S, keyValueOf as C, link as w, metric as T, page as E, pageBreak as D, pageNumber as O, pdfDocument as k, resolvePdfColor as A, resolvePdfTheme as j, row as M, section as N, spacer as P, stack as F, table as I, text as L, totals as R } from "@nxgt/material-core/pdf/model";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-CykWQ0iJ.js";
|
|
2
|
-
import { t } from "./use-material-translation-
|
|
3
|
-
import { t as n } from "./icon-button-
|
|
2
|
+
import { t } from "./use-material-translation-8hUB2M-S.js";
|
|
3
|
+
import { t as n } from "./icon-button-DKLuZ2c-.js";
|
|
4
4
|
import { Teleport as r, computed as i, createBlock as a, createCommentVNode as o, createElementBlock as s, createVNode as c, defineComponent as l, inject as u, mergeProps as d, normalizeStyle as f, onUnmounted as p, openBlock as m, provide as h, reactive as g, ref as _, renderSlot as v, toValue as y, unref as b, useAttrs as x, watch as S, watchEffect as C, withCtx as w, withModifiers as T } from "vue";
|
|
5
5
|
import { GripVertical as E } from "@lucide/vue";
|
|
6
6
|
import { Primitive as D } from "reka-ui";
|
|
@@ -317,6 +317,7 @@ var e = {
|
|
|
317
317
|
}
|
|
318
318
|
},
|
|
319
319
|
table: {
|
|
320
|
+
loading: "Loading data…",
|
|
320
321
|
labels: {
|
|
321
322
|
asc: "Asc",
|
|
322
323
|
desc: "Desc",
|
|
@@ -709,7 +710,11 @@ var e = {
|
|
|
709
710
|
invalid: "Enter a valid URL",
|
|
710
711
|
open: "Open URL"
|
|
711
712
|
},
|
|
712
|
-
stepper: {
|
|
713
|
+
stepper: {
|
|
714
|
+
step: "Step {step}",
|
|
715
|
+
completed: "Completed",
|
|
716
|
+
error: "Error"
|
|
717
|
+
},
|
|
713
718
|
"combobox-field": {
|
|
714
719
|
placeholder: "Search…",
|
|
715
720
|
empty: "No results"
|
|
@@ -1101,6 +1106,10 @@ var e = {
|
|
|
1101
1106
|
"back-to-days": "Back to day view"
|
|
1102
1107
|
},
|
|
1103
1108
|
spinner: { loading: "Loading..." },
|
|
1109
|
+
slider: {
|
|
1110
|
+
minimum: "Minimum",
|
|
1111
|
+
maximum: "Maximum"
|
|
1112
|
+
},
|
|
1104
1113
|
"scroll-to-top": { label: "Scroll to top" },
|
|
1105
1114
|
map: {
|
|
1106
1115
|
"you-are-here": "You are here",
|
|
@@ -1446,6 +1455,7 @@ var e = {
|
|
|
1446
1455
|
}
|
|
1447
1456
|
},
|
|
1448
1457
|
table: {
|
|
1458
|
+
loading: "Chargement des données…",
|
|
1449
1459
|
labels: {
|
|
1450
1460
|
asc: "Asc",
|
|
1451
1461
|
desc: "Desc",
|
|
@@ -1838,7 +1848,11 @@ var e = {
|
|
|
1838
1848
|
invalid: "Saisissez une URL valide",
|
|
1839
1849
|
open: "Ouvrir l’URL"
|
|
1840
1850
|
},
|
|
1841
|
-
stepper: {
|
|
1851
|
+
stepper: {
|
|
1852
|
+
step: "Étape {step}",
|
|
1853
|
+
completed: "Terminée",
|
|
1854
|
+
error: "Erreur"
|
|
1855
|
+
},
|
|
1842
1856
|
"combobox-field": {
|
|
1843
1857
|
placeholder: "Rechercher…",
|
|
1844
1858
|
empty: "Aucun résultat"
|
|
@@ -2230,6 +2244,10 @@ var e = {
|
|
|
2230
2244
|
"back-to-days": "Retour à la vue des jours"
|
|
2231
2245
|
},
|
|
2232
2246
|
spinner: { loading: "Chargement..." },
|
|
2247
|
+
slider: {
|
|
2248
|
+
minimum: "Minimum",
|
|
2249
|
+
maximum: "Maximum"
|
|
2250
|
+
},
|
|
2233
2251
|
"scroll-to-top": { label: "Retour en haut" },
|
|
2234
2252
|
map: {
|
|
2235
2253
|
"you-are-here": "Vous êtes ici",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { t as e } from "./utils-CykWQ0iJ.js";
|
|
2
|
-
import { Gt as t,
|
|
3
|
-
import { t as l } from "./use-material-translation-
|
|
2
|
+
import { Gt as t, Kt as n, Qt as r, Xt as i, Yt as a, Zt as o, qt as s, xp as c } from "./components-YlYuHLEI.js";
|
|
3
|
+
import { t as l } from "./use-material-translation-8hUB2M-S.js";
|
|
4
4
|
import { createBlock as u, createCommentVNode as d, createElementBlock as f, createElementVNode as p, createTextVNode as m, createVNode as h, defineComponent as g, normalizeClass as _, openBlock as v, toDisplayString as y, unref as b, withCtx as x } from "vue";
|
|
5
5
|
//#region lib/components/ui/media/stx-player/partials/stx-player-frame.vue?vue&type=script&setup=true&lang.ts
|
|
6
6
|
var S = ["data-layout", "aria-label"], C = {
|
|
@@ -19,38 +19,38 @@ var S = ["data-layout", "aria-label"], C = {
|
|
|
19
19
|
Array
|
|
20
20
|
] }
|
|
21
21
|
},
|
|
22
|
-
setup(
|
|
23
|
-
let { containerRef: g, state: w } =
|
|
22
|
+
setup(s) {
|
|
23
|
+
let { containerRef: g, state: w } = r();
|
|
24
24
|
function T(e) {
|
|
25
25
|
g.value = e instanceof HTMLElement ? e : null;
|
|
26
26
|
}
|
|
27
27
|
let { t: E } = l();
|
|
28
|
-
return (
|
|
28
|
+
return (r, l) => (v(), f("section", {
|
|
29
29
|
ref: T,
|
|
30
30
|
"data-slot": "stx-player",
|
|
31
|
-
"data-layout":
|
|
31
|
+
"data-layout": s.layout,
|
|
32
32
|
"aria-label": b(w).current?.title ?? b(E)("material.stx-player.label", "Media player"),
|
|
33
|
-
class: _(b(e)("@container rounded outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50",
|
|
34
|
-
}, [
|
|
33
|
+
class: _(b(e)("@container rounded outline-none focus-visible:ring-[3px] focus-visible:ring-ring/50", r.$props.class))
|
|
34
|
+
}, [s.layout === "mini" ? (v(), u(a, { key: 0 })) : (v(), f("div", {
|
|
35
35
|
key: 1,
|
|
36
|
-
class: _(b(e)("grid gap-3",
|
|
36
|
+
class: _(b(e)("grid gap-3", s.showQueue && "@min-[768px]:grid-cols-[minmax(0,1fr)_18rem] @min-[768px]:items-stretch"))
|
|
37
37
|
}, [p("div", { class: _(b(e)("bg-card overflow-hidden rounded border", b(w).current?.kind === "audio" && "flex flex-col gap-4 p-6")) }, [
|
|
38
|
-
b(w).current?.kind === "audio" ? (v(), f("div", C, [h(
|
|
38
|
+
b(w).current?.kind === "audio" ? (v(), f("div", C, [h(c, { variant: "title-medium" }, {
|
|
39
39
|
default: x(() => [m(y(b(w).current.title), 1)]),
|
|
40
40
|
_: 1
|
|
41
|
-
}), b(w).current.artist ? (v(), u(
|
|
41
|
+
}), b(w).current.artist ? (v(), u(c, {
|
|
42
42
|
key: 0,
|
|
43
43
|
class: "text-muted-foreground"
|
|
44
44
|
}, {
|
|
45
45
|
default: x(() => [m(y(b(w).current.artist) + " " + y(b(w).current.album ? ` · ${b(w).current.album}` : ""), 1)]),
|
|
46
46
|
_: 1
|
|
47
47
|
})) : d("", !0)])) : d("", !0),
|
|
48
|
-
h(
|
|
48
|
+
h(t, null, {
|
|
49
49
|
default: x(() => [b(w).current?.kind === "audio" ? d("", !0) : (v(), u(o, {
|
|
50
50
|
key: 0,
|
|
51
51
|
tone: "overlay"
|
|
52
52
|
}, {
|
|
53
|
-
trailing: x(() => [h(
|
|
53
|
+
trailing: x(() => [h(i, { tone: "overlay" })]),
|
|
54
54
|
_: 1
|
|
55
55
|
}))]),
|
|
56
56
|
_: 1
|
|
@@ -59,10 +59,10 @@ var S = ["data-layout", "aria-label"], C = {
|
|
|
59
59
|
key: 1,
|
|
60
60
|
tone: "surface"
|
|
61
61
|
}, {
|
|
62
|
-
trailing: x(() => [h(
|
|
62
|
+
trailing: x(() => [h(i, { tone: "surface" })]),
|
|
63
63
|
_: 1
|
|
64
64
|
})) : d("", !0)
|
|
65
|
-
], 2),
|
|
65
|
+
], 2), s.showQueue ? (v(), u(n, {
|
|
66
66
|
key: 0,
|
|
67
67
|
class: "min-h-72"
|
|
68
68
|
})) : d("", !0)], 2))], 10, S));
|
|
@@ -97,23 +97,23 @@ var S = ["data-layout", "aria-label"], C = {
|
|
|
97
97
|
] }
|
|
98
98
|
},
|
|
99
99
|
emits: ["trackChange"],
|
|
100
|
-
setup(e, { emit:
|
|
101
|
-
let
|
|
102
|
-
function
|
|
103
|
-
|
|
100
|
+
setup(e, { emit: t }) {
|
|
101
|
+
let n = e, r = t;
|
|
102
|
+
function i(e, t) {
|
|
103
|
+
n.onTrackChange?.(e, t), r("trackChange", e, t);
|
|
104
104
|
}
|
|
105
|
-
return (
|
|
105
|
+
return (t, r) => (v(), u(s, {
|
|
106
106
|
tracks: e.tracks,
|
|
107
107
|
"current-index": e.currentIndex,
|
|
108
108
|
"default-index": e.defaultIndex,
|
|
109
109
|
"auto-play": e.autoPlay,
|
|
110
110
|
loop: e.loop,
|
|
111
|
-
"on-track-change":
|
|
111
|
+
"on-track-change": i
|
|
112
112
|
}, {
|
|
113
113
|
default: x(() => [h(w, {
|
|
114
114
|
layout: e.layout,
|
|
115
115
|
"show-queue": e.showQueue,
|
|
116
|
-
class: _(
|
|
116
|
+
class: _(n.class)
|
|
117
117
|
}, null, 8, [
|
|
118
118
|
"layout",
|
|
119
119
|
"show-queue",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as e, i as t, r as n, t as r } from "./stored-language-
|
|
1
|
+
import { a as e, i as t, r as n, t as r } from "./stored-language-N_UoPJsY.js";
|
|
2
2
|
import { t as i } from "./get-CTzJAwfc.js";
|
|
3
3
|
//#region ../../node_modules/@formatjs/fast-memoize/index.js
|
|
4
4
|
function a(e, t) {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as e } from "./i18n-provider-
|
|
1
|
+
import { a as e } from "./i18n-provider-DTuxugHO.js";
|
|
2
2
|
import { c as t, d as n, f as r, l as i, n as a, u as o } from "./number.utils-Cy1z6qI7.js";
|
|
3
3
|
import { computed as s, getCurrentInstance as c, onMounted as l, ref as u, toValue as d } from "vue";
|
|
4
4
|
import { useIntersectionObserver as f, useMediaQuery as p, useSSRWidth as m, useStorage as h } from "@vueuse/core";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import "./stored-language-
|
|
2
|
-
import { a as e } from "./i18n-provider-
|
|
3
|
-
import { i as t, r as n } from "./translator-
|
|
1
|
+
import "./stored-language-N_UoPJsY.js";
|
|
2
|
+
import { a as e } from "./i18n-provider-DTuxugHO.js";
|
|
3
|
+
import { i as t, r as n } from "./translator-CU0jKvzB.js";
|
|
4
4
|
//#region lib/i18n/translate-material.ts
|
|
5
5
|
function r(e, r, i, a) {
|
|
6
6
|
if (e) for (let t of /* @__PURE__ */ new Set([e, e.split("-")[0]])) {
|
|
@@ -319,9 +319,25 @@ import { CopyButton } from '@nxgt/material-vue/components';
|
|
|
319
319
|
| `#icon` slot | — | a copy icon | replaces the idle icon |
|
|
320
320
|
| `variant`, `color` | as `IconButton` | `'ghost'`, `'default'` | the button style |
|
|
321
321
|
|
|
322
|
-
The check mark stays for 1.5 s.
|
|
323
|
-
|
|
324
|
-
|
|
322
|
+
The check mark stays for 1.5 s. `copyToClipboard(text)` is the same copy
|
|
323
|
+
without a button.
|
|
324
|
+
|
|
325
|
+
`CopyValue` shows the value in a monospace chip with the button beside it:
|
|
326
|
+
|
|
327
|
+
```vue
|
|
328
|
+
<script setup lang="ts">
|
|
329
|
+
import { CopyValue } from '@nxgt/material-vue/components';
|
|
330
|
+
</script>
|
|
331
|
+
|
|
332
|
+
<template>
|
|
333
|
+
<CopyValue value="https://app.example.com/orders/SO-1842" display="SO-1842" />
|
|
334
|
+
</template>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
| `CopyValue` prop | Type | Default | Effect |
|
|
338
|
+
| --- | --- | --- | --- |
|
|
339
|
+
| `value` | `string` | — (required) | what is copied, and shown when there is no `display` |
|
|
340
|
+
| `display` / default slot | `string` | `value` | what is shown instead (React's `display` node) |
|
|
325
341
|
|
|
326
342
|
**Storybook:** `Buttons & actions/CopyButton` · **React:** `CopyButton`, `CopyValue`
|
|
327
343
|
|
|
@@ -656,7 +656,20 @@ left alone. Mermaid diagrams
|
|
|
656
656
|
render in the browser only, after mount; on the server the fence is left
|
|
657
657
|
empty.
|
|
658
658
|
|
|
659
|
-
|
|
659
|
+
`MermaidDiagram` renders one chart outside markdown, the same way: client-only,
|
|
660
|
+
with `mermaid` imported on mount.
|
|
661
|
+
|
|
662
|
+
```vue
|
|
663
|
+
<script setup lang="ts">
|
|
664
|
+
import { MermaidDiagram } from '@nxgt/material-vue/components';
|
|
665
|
+
</script>
|
|
666
|
+
|
|
667
|
+
<template>
|
|
668
|
+
<MermaidDiagram chart="graph LR Draft --> Review --> Published" />
|
|
669
|
+
</template>
|
|
670
|
+
```
|
|
671
|
+
|
|
672
|
+
**Storybook:** `Data display/Markdown` · **React:** `Markdown`, `MermaidDiagram`
|
|
660
673
|
|
|
661
674
|
---
|
|
662
675
|
|
|
@@ -23,7 +23,7 @@ each other, so either can be used alone.
|
|
|
23
23
|
|
|
24
24
|

|
|
25
25
|
|
|
26
|
-
TanStack Table v9 with sorting, filtering, selection, expandable rows, pagination or load-more, and
|
|
26
|
+
TanStack Table v9 with sorting, filtering, selection, expandable rows, pagination or load-more, column visibility, skeleton rows while loading and your own empty state.
|
|
27
27
|
|
|
28
28
|
```vue
|
|
29
29
|
<script setup lang="ts">
|
|
@@ -59,7 +59,8 @@ const columns = columnHelper.columns([
|
|
|
59
59
|
|
|
60
60
|
Parts: `DataTable`; `DataTableColumnHeader` (a sortable header with a hide
|
|
61
61
|
action); `DataTablePagination` and `DataTableViewOptions` (used by the table,
|
|
62
|
-
exported for a table of your own
|
|
62
|
+
exported for a table of your own; `DataTablePagination` takes `disabled`);
|
|
63
|
+
`useColumnHelpers<T>()` returns a
|
|
63
64
|
`columnHelper` bound to the table's features and `predefinedColumns()` —
|
|
64
65
|
`select` (checkboxes) and `expand` (a toggle for the expanded row, named
|
|
65
66
|
"Toggle row details" (`material.table.labels.toggle-row`) with `aria-expanded`);
|
|
@@ -78,6 +79,58 @@ table enables, for typing your own column defs.
|
|
|
78
79
|
| `onLoadMore` / `isLoadingMore` | `() => void` / `boolean` | — | adds a "load more" button under the rows |
|
|
79
80
|
| `options` | `{ showPage?: boolean; showSelected?: boolean }` | both shown | parts of the footer |
|
|
80
81
|
| `showHeader` | `boolean` | hidden on mobile | header row |
|
|
82
|
+
| `loading` | `boolean` | `false` | skeleton rows, or the current rows dimmed; `aria-busy`; controls disabled |
|
|
83
|
+
| `loadingRows` | `number` | the page size | how many skeleton rows |
|
|
84
|
+
| `#empty="{ filtered }"` | slot | icon and "No data available" | content of the empty row, spanning every visible column |
|
|
85
|
+
|
|
86
|
+
### Loading and empty states
|
|
87
|
+
|
|
88
|
+
```vue
|
|
89
|
+
<script setup lang="ts">
|
|
90
|
+
import { DataTable, useColumnHelpers } from '@nxgt/material-vue/components';
|
|
91
|
+
|
|
92
|
+
type Person = { id: string; name: string; email: string };
|
|
93
|
+
|
|
94
|
+
defineProps<{ people: Person[]; isFetching: boolean }>();
|
|
95
|
+
|
|
96
|
+
const { columnHelper } = useColumnHelpers<Person>();
|
|
97
|
+
const columns = columnHelper.columns([
|
|
98
|
+
columnHelper.accessor('name', { header: 'Name' }),
|
|
99
|
+
columnHelper.accessor('email', { header: 'Email' }),
|
|
100
|
+
]);
|
|
101
|
+
</script>
|
|
102
|
+
|
|
103
|
+
<template>
|
|
104
|
+
<DataTable
|
|
105
|
+
:data="people"
|
|
106
|
+
:columns="columns"
|
|
107
|
+
:loading="isFetching"
|
|
108
|
+
:loading-rows="5"
|
|
109
|
+
>
|
|
110
|
+
<template #empty="{ filtered }">
|
|
111
|
+
{{ filtered ? 'No person matches these filters.' : 'No people yet.' }}
|
|
112
|
+
</template>
|
|
113
|
+
</DataTable>
|
|
114
|
+
</template>
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
While `loading` is `true`, the table is `aria-busy` and a visually
|
|
118
|
+
hidden status says "Loading data…" (`material.table.loading`). With no row to
|
|
119
|
+
show, the body is `loadingRows` skeleton rows (default: the page size), one
|
|
120
|
+
cell per visible column. With rows already shown — a refresh — the rows stay
|
|
121
|
+
where they are, dimmed and `inert`, rather than being swapped for
|
|
122
|
+
skeletons: the table keeps its height, so nothing below it jumps when the data
|
|
123
|
+
arrives. Sorting (`DataTableColumnHeader`), the `select` column's "Select
|
|
124
|
+
all", the toolbar's native controls (it
|
|
125
|
+
is a disabled `<fieldset>`, so every input or button you render there, a
|
|
126
|
+
filter or an export, is disabled
|
|
127
|
+
too) and pagination are disabled meanwhile.
|
|
128
|
+
|
|
129
|
+
When no row is left after filtering, the empty state is one `TableEmpty`
|
|
130
|
+
cell spanning every visible column: today's icon and "No data available" by
|
|
131
|
+
default, or the `#empty` slot, told whether rows exist but none matches the
|
|
132
|
+
filters (`filtered`); content that renders nothing gets the default.
|
|
133
|
+
`DataTableEmptyState` types the slot props.
|
|
81
134
|
|
|
82
135
|
For the TanStack API itself (column helpers, features, row models), see
|
|
83
136
|
[TanStack Table v9](https://tanstack.com/table/latest).
|
|
@@ -132,7 +185,10 @@ A field's `type` is one of `text`, `number`, `select`, `multi-select`, `date`,
|
|
|
132
185
|
`chips-multiple`, `chips-single`, `slider`, `slider-range`, `switch` or
|
|
133
186
|
`custom` (`render` returns a VNode); `schema.groups` puts fields in
|
|
134
187
|
collapsible sections. The filter state lives in a Pinia store, so the app
|
|
135
|
-
needs `app.use(createPinia())`.
|
|
188
|
+
needs `app.use(createPinia())`. A `number-range` or `slider-range` is a
|
|
189
|
+
`role="group"` named by its `label`, with its inputs named by their part
|
|
190
|
+
("Min" / "Max", or the slider's "<label> Minimum" / "<label> Maximum"):
|
|
191
|
+
`getByRole('group', { name: 'Price' })`.
|
|
136
192
|
|
|
137
193
|
Parts: `Filter` (one component, `variant` picks the layout);
|
|
138
194
|
`FilterProvider` + `FilterContent` + `FilterActions` to lay the panel out
|
|
@@ -203,7 +259,34 @@ above shows `FilterPopover` open; every variant has its own story.
|
|
|
203
259
|
|
|
204
260
|

|
|
205
261
|
|
|
206
|
-
Pagination primitives on Reka UI's `Pagination`, with first / last buttons and ellipses.
|
|
262
|
+
Pagination primitives on Reka UI's `Pagination`, with first / last buttons and ellipses. `PaginationBar` adds a sibling window with ellipses.
|
|
263
|
+
|
|
264
|
+
```vue
|
|
265
|
+
<script setup lang="ts">
|
|
266
|
+
import { ref } from 'vue';
|
|
267
|
+
import { PaginationBar } from '@nxgt/material-vue/components';
|
|
268
|
+
|
|
269
|
+
const page = ref(1);
|
|
270
|
+
</script>
|
|
271
|
+
|
|
272
|
+
<template>
|
|
273
|
+
<PaginationBar v-model:page="page" :page-count="12" />
|
|
274
|
+
</template>
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
| `PaginationBar` prop / event | Type | Default | Effect |
|
|
278
|
+
| --- | --- | --- | --- |
|
|
279
|
+
| `page` / `v-model:page` | `number` | — (required) | current page, from 1; controlled |
|
|
280
|
+
| `page-count` | `number` | — (required) | number of pages |
|
|
281
|
+
| `sibling-count` | `number` | `1` | pages on each side of the current one before an ellipsis |
|
|
282
|
+
| `disabled` | `boolean` | `false` | disables every button |
|
|
283
|
+
| `@update:page`, `@page-change` | `(page: number) => void` | — | a page was chosen (React's `onPageChange`) |
|
|
284
|
+
|
|
285
|
+
`paginationItems(page, pageCount, siblingCount?)` is the window it renders, as
|
|
286
|
+
`(number | 'ellipsis')[]` (`PaginationItemToken`). `PaginationLink` is a page
|
|
287
|
+
as an anchor (`href`, `is-active`), for server-rendered lists.
|
|
288
|
+
|
|
289
|
+
The parts, composed by hand:
|
|
207
290
|
|
|
208
291
|
```vue
|
|
209
292
|
<script setup lang="ts">
|
|
@@ -243,9 +326,8 @@ const page = ref(1);
|
|
|
243
326
|
Parts: `Pagination` (the root), `PaginationContent` (its slot gives the
|
|
244
327
|
`items` window), `PaginationItem` (`value`, `is-active`),
|
|
245
328
|
`PaginationPrevious`, `PaginationNext`, `PaginationFirst`, `PaginationLast`,
|
|
246
|
-
`PaginationEllipsis`.
|
|
247
|
-
|
|
248
|
-
already wired.
|
|
329
|
+
`PaginationEllipsis`. Composed by hand, the root computes the window itself.
|
|
330
|
+
For a table, `DataTablePagination` is already wired.
|
|
249
331
|
|
|
250
332
|
| Prop | Type | Default | Effect |
|
|
251
333
|
| --- | --- | --- | --- |
|
|
@@ -258,7 +340,7 @@ already wired.
|
|
|
258
340
|
| `aria-label` | `string` | `'pagination'` (translated) | the `nav`'s name; the buttons are named "First", "Previous", "Next", "Last" and "Page {n}" (`material.pagination.*`). An `aria-label` on a part wins |
|
|
259
341
|
|
|
260
342
|
**Emits:** `update:page` with `number`.
|
|
261
|
-
**Storybook:** `Data table, filter & lists/Pagination` · **React:** `Pagination` (parts), `PaginationBar`
|
|
343
|
+
**Storybook:** `Data table, filter & lists/Pagination` · **React:** `Pagination` (parts), `PaginationFirst`, `PaginationLast`, `PaginationLink`, `PaginationBar`, `paginationItems`
|
|
262
344
|
|
|
263
345
|
---
|
|
264
346
|
|
|
@@ -523,7 +523,7 @@ compiled stylesheet). `Toast` is the component each toast
|
|
|
523
523
|
renders, and `sonnerToast` is vue-sonner's own `toast`, for anything the
|
|
524
524
|
presets do not cover.
|
|
525
525
|
|
|
526
|
-
**Storybook:** `Feedback & status/Toast` · **React:** `Toaster`, `toast`, `toasts`, `Toast`
|
|
526
|
+
**Storybook:** `Feedback & status/Toast` · **React:** `Toaster`, `toast`, `toasts`, `Toast` (`ToastAction` type)
|
|
527
527
|
|
|
528
528
|
---
|
|
529
529
|
|
|
@@ -529,7 +529,7 @@ const pin = ref('');
|
|
|
529
529
|
**Emits:** `update:modelValue` with `string` (the digits typed so far).
|
|
530
530
|
**Form wrapper:** `OtpFormField` — `name` inside a vee-validate form, see
|
|
531
531
|
[forms](../guides/forms.md#the-pair) and [what each field emits](../guides/forms.md#what-each-field-emits).
|
|
532
|
-
**Storybook:** `Form fields/OtpField` · **React:** `OtpField`, `OtpFormField`
|
|
532
|
+
**Storybook:** `Form fields/OtpField` · **React:** `OtpField`, `OtpFormField`, `InputOTP` (same parts)
|
|
533
533
|
|
|
534
534
|
---
|
|
535
535
|
|
|
@@ -605,8 +605,8 @@ const title = ref('Spring catalogue');
|
|
|
605
605
|
|
|
606
606
|
**Emits:** `update:modelValue` and `save`, both `string`, trimmed, on save
|
|
607
607
|
only.
|
|
608
|
-
**Form wrapper:**
|
|
609
|
-
[forms](../guides/forms.md#the-pair).
|
|
608
|
+
**Form wrapper:** `InlineEditFormField` (`name` plus the same props; the form
|
|
609
|
+
value changes on save, not while typing), see [forms](../guides/forms.md#the-pair).
|
|
610
610
|
**Storybook:** `Form fields/InlineEdit` · **React:** `InlineEdit`, `InlineEditFormField`
|
|
611
611
|
|
|
612
612
|
---
|
|
@@ -750,6 +750,8 @@ in `SliderField`: its readout is text.
|
|
|
750
750
|
|
|
751
751
|
Each thumb (`role="slider"`) is named by the label; a range's thumbs add
|
|
752
752
|
"Minimum" and "Maximum": `getByRole('slider', { name: 'Price Minimum' })`.
|
|
753
|
+
A labelled range is also a `role="group"` named by the label, so two range
|
|
754
|
+
sliders are told apart.
|
|
753
755
|
The bare `Slider` does the same with `label-id` (the id of your label) and
|
|
754
756
|
`required`, or with an `aria-labelledby` or `aria-label` you pass (they win
|
|
755
757
|
over `label-id`): a vertical `Slider`, which has no field label, needs one.
|
|
@@ -762,7 +764,7 @@ wins over `error` as on React's `Slider`) goes on every thumb, not on the root
|
|
|
762
764
|
stores the same — the initial value decides.
|
|
763
765
|
**Form wrapper:** `SliderFormField` — `name` inside a vee-validate form, see
|
|
764
766
|
[forms](../guides/forms.md#the-pair) and [what each field emits](../guides/forms.md#what-each-field-emits).
|
|
765
|
-
**Storybook:** `Form fields/Slider` · **React:** `Slider`, `SliderFormField`
|
|
767
|
+
**Storybook:** `Form fields/Slider` · **React:** `Slider`, `SliderField` (an alias of `Slider`), `SliderFormField`
|
|
766
768
|
|
|
767
769
|
---
|
|
768
770
|
|
|
@@ -835,7 +837,7 @@ const updates = ref(false);
|
|
|
835
837
|
**Emits:** `update:modelValue` with `boolean`.
|
|
836
838
|
**Form wrapper:** `SwitchFormField` — `name` inside a vee-validate form, see
|
|
837
839
|
[forms](../guides/forms.md#the-pair) and [what each field emits](../guides/forms.md#what-each-field-emits).
|
|
838
|
-
**Storybook:** `Form fields/Switch`, `Form fields/SwitchField` · **React:** `Switch`, `SwitchFormField`
|
|
840
|
+
**Storybook:** `Form fields/Switch`, `Form fields/SwitchField` · **React:** `Switch`, `SwitchField` (an alias of `Switch`), `SwitchFormField`
|
|
839
841
|
|
|
840
842
|
---
|
|
841
843
|
|
|
@@ -677,7 +677,7 @@ and emits nothing: the capture stays inside the component. The helpers
|
|
|
677
677
|
`isCameraSupported`, `getCameraDevices`, `requestCameraPermissions` and
|
|
678
678
|
`capturePhotoFromVideo` are exported for building your own.
|
|
679
679
|
|
|
680
|
-
**Storybook:** `Media & files/Camera` · **React:**
|
|
680
|
+
**Storybook:** `Media & files/Camera` · **React:** `Camera`, `useCamera`, `capturePhotoFromVideo` (`createCameraStore` for the store)
|
|
681
681
|
|
|
682
682
|
---
|
|
683
683
|
|