@nxgt/material 3.63.0 → 3.64.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/CHANGELOG.md +19 -0
- package/dist/{components-Cm2doOJS.js → components-2kTVPsMg.js} +15067 -14928
- package/dist/components.js +1 -1
- package/dist/lib/components/ui/actions/load-more-footer/load-more-footer.d.ts +11 -2
- package/dist/lib/components/ui/actions/load-more-footer/use-footer-focus.d.ts +15 -0
- package/dist/lib/components/ui/actions/load-more-footer/use-last-page.d.ts +9 -0
- package/dist/lib/components/ui/collections/filter/bar/partials/filter-inline-chips.d.ts +11 -0
- package/dist/lib/components/ui/collections/filter/bar/partials/filter-inline-list.d.ts +6 -0
- package/dist/lib/components/ui/collections/server-table/partials/server-table-grid-paging.d.ts +9 -0
- package/dist/lib/components/ui/collections/server-table/partials/server-table-load-more.d.ts +17 -0
- package/dist/lib/components/ui/collections/server-table/types-paging.d.ts +10 -0
- package/dist/lib/components/ui/widgets/education/questions/partials/question-content.d.ts +1 -1
- package/dist/lib/components/ui/widgets/education/questions/question-long-text.d.ts +2 -2
- package/dist/lib/components/ui/widgets/education/questions/question.d.ts +1 -1
- package/dist/lib/components/ui/widgets/education/questions/types.d.ts +14 -0
- package/dist/main.js +1 -1
- package/docs/components/buttons-and-actions.md +2 -2
- package/docs/components/data-table-filter-and-lists.md +96 -0
- package/docs/components/rich-widgets.md +3 -1
- package/docs/roadmap.md +4 -0
- package/package.json +2 -2
package/dist/components.js
CHANGED
|
@@ -2,7 +2,7 @@ import { $t as ee, An as te, Ar as ne, B as re, Bi as e, Bn as t, Br as n, Bt as
|
|
|
2
2
|
import { a as He, i as Ue, l as We, o as Ge, r as Ke, t as qe } from "./spinner-CAnpF3RK.js";
|
|
3
3
|
import { a as Je, c as Ye, f as Xe, i as Ze, l as Qe, n as $e, o as et, r as tt, s as nt, t as rt } from "./alert-dialog-RHm6WtQj.js";
|
|
4
4
|
import { a as it, c as at, d as ot, f as st, i as ct, l as lt, n as ut, o as dt, r as ft, s as pt, t as mt, u as ht } from "./dropdown-menu-_SyVmSuy.js";
|
|
5
|
-
import { $ as gt, $a as _t, $c as vt, $d as yt, $f as bt, $i as xt, $l as St, $n as Ct, $o as wt, $r as Tt, $s as Et, $t as Dt, $u as Ot, A as kt, Aa as At, Ac as jt, Ad as Mt, Af as Nt, Ai as Pt, Al as Ft, An as It, Ao as Lt, Ar as Rt, As as zt, At as Bt, Au as Vt, B as Ht, Ba as Ut, Bc as Wt, Bd as Gt, Bf as Kt, Bi as qt, Bl as Jt, Bn as Yt, Bo as Xt, Br as Zt, Bs as Qt, Bt as $t, Bu as en, C as tn, Ca as nn, Cc as rn, Cd as an, Cf as on, Ci as sn, Cl as cn, Cn as ln, Co as un, Cr as dn, Cs as fn, Ct as pn, Cu as mn, D as hn, Da as gn, Dc as _n, Dd as vn, Df as yn, Di as bn, Dl as xn, Dn as Sn, Do as Cn, Dr as wn, Ds as Tn, Dt as En, Du as Dn, E as On, Ea as kn, Ec as An, Ed as jn, Ef as Mn, Ei as Nn, El as Pn, En as Fn, Eo as In, Er as Ln, Es as Rn, Et as zn, Eu as Bn, F as Vn, Fa as Hn, Fc as Un, Fd as Wn, Ff as Gn, Fi as Kn, Fl as qn, Fn as Jn, Fo as Yn, Fr as Xn, Fs as Zn, Ft as Qn, Fu as $n, G as er, Ga as tr, Gc as nr, Gd as rr, Gf as ir, Gi as ar, Gl as or, Gn as sr, Go as cr, Gr as lr, Gs as ur, Gt as dr, Gu as fr, H as pr, Ha as mr, Hc as hr, Hd as gr, Hf as _r, Hi as vr, Hl as yr, Hn as br, Ho as xr, Hr as Sr, Hs as Cr, Ht as wr, Hu as Tr, I as Er, Ia as Dr, Ic as Or, Id as kr, If as Ar, Ii as jr, Il as Mr, In as Nr, Io as Pr, Ir as Fr, Is as Ir, It as Lr, Iu as Rr, J as zr, Ja as Br, Jc as Vr, Jd as Hr, Jf as Ur, Ji as Wr, Jl as Gr, Jn as Kr, Jo as qr, Jr, Js as Yr, Jt as Xr, Ju as Zr, K as Qr, Ka as $r, Kc as ei, Kd as ti, Kf as ni, Ki as ri, Kl as ii, Kn as ai, Ko as oi, Kr as si, Ks as ci, Kt as li, Ku as ui, L as di, La as fi, Lc as pi, Ld as mi, Lf as hi, Li as gi, Ll as _i, Ln as vi, Lo as yi, Lr as bi, Ls as xi, Lt as Si, Lu as Ci, M as wi, Ma as Ti, Mc as Ei, Md as Di, Mf as Oi, Mi as ki, Ml as Ai, Mn as ji, Mo as Mi, Mr as Ni, Ms as Pi, Mt as Fi, Mu as Ii, N as Li, Na as Ri, Nc as zi, Nd as Bi, Nf as Vi, Ni as Hi, Nl as Ui, Nn as Wi, No as Gi, Nr as Ki, Ns as qi, Nt as Ji, Nu as Yi, O as Xi, Oa as Zi, Oc as Qi, Od as $i, Of as ea, Oi as ta, Ol as na, On as ra, Oo as ia, Or as aa, Os as oa, Ot as sa, Ou as ca, P as la, Pa as ua, Pc as da, Pd as fa, Pf as pa, Pi as ma, Pl as ha, Pn as ga, Po as _a, Pr as va, Ps as ya, Pt as ba, Pu as xa, Q as Sa, Qa as Ca, Qc as wa, Qd as Ta, Qf as Ea, Qi as Da, Ql as Oa, Qn as ka, Qo as Aa, Qr as ja, Qs as Ma, Qt as Na, Qu as Pa, R as Fa, Ra as Ia, Rc as La, Rd as Ra, Rf as za, Ri as Ba, Rl as Va, Rn as Ha, Ro as Ua, Rr as Wa, Rs as Ga, Rt as Ka, Ru as qa, S as Ja, Sa as Ya, Sc as Xa, Sd as Za, Sf as Qa, Si as $a, Sl as eo, Sn as to, So as no, Sr as ro, Ss as io, St as ao, Su as oo, T as so, Ta as co, Tc as lo, Td as uo, Tf as fo, Ti as po, Tl as mo, Tn as ho, To as go, Tr as _o, Ts as vo, Tt as yo, Tu as bo, U as xo, Ua as So, Uc as Co, Ud as wo, Uf as To, Ui as Eo, Ul as Do, Un as Oo, Uo as ko, Ur as Ao, Us as jo, Ut as Mo, Uu as No, V as Po, Va as Fo, Vc as Io, Vd as Lo, Vf as Ro, Vi as zo, Vl as Bo, Vn as Vo, Vo as Ho, Vr as Uo, Vs as Wo, Vt as Go, Vu as Ko, W as qo, Wa as Jo, Wc as Yo, Wd as Xo, Wf as Zo, Wi as Qo, Wl as $o, Wn as es, Wo as ts, Wr as ns, Ws as rs, Wt as is, Wu as as, X as os, Xa as ss, Xc as cs, Xd as ls, Xf as us, Xi as ds, Xl as fs, Xn as ps, Xo as ms, Xr as hs, Xs as gs, Xt as _s, Xu as vs, Y as ys, Ya as bs, Yc as xs, Yd as Ss, Yf as Cs, Yi as ws, Yl as Ts, Yn as Es, Yo as Ds, Yr as Os, Ys as ks, Yt as As, Yu as js, Z as Ms, Za as Ns, Zc as Ps, Zd as Fs, Zf as Is, Zi as Ls, Zl as Rs, Zn as zs, Zo as Bs, Zr as Vs, Zs as Hs, Zt as Us, Zu as Ws, _ as Gs, _a as Ks, _c as qs, _d as Js, _f as Ys, _i as Xs, _l as Zs, _n as Qs, _o as $s, _r as ec, _s as tc, _t as nc, _u as rc, a as ic, aa as ac, ac as oc, ad as sc, af as cc, ai as lc, al as uc, an as dc, ao as fc, ap as pc, ar as mc, as as hc, at as gc, au as _c, b as vc, ba as yc, bc, bd as xc, bf as Sc, bi as Cc, bl as wc, bn as Tc, bo as Ec, br as Dc, bs as Oc, bt as kc, bu as Ac, c as jc, ca as Mc, cc as Nc, cd as Pc, cf as Fc, ci as Ic, cl as Lc, cn as Rc, co as zc, cp as Bc, cr as Vc, cs as Hc, ct as Uc, cu as Wc, d as Gc, da as Kc, dc as Z, dd as qc, df as Jc, di as Yc, dl as Xc, dn as Zc, do as Qc, dr as $c, ds as el, dt as tl, du as nl, ea as rl, ec as il, ed as al, ef as ol, ei as sl, el as cl, en as ll, eo as ul, ep as dl, er as fl, es as pl, et as ml, eu as hl, f as gl, fa as _l, fc as vl, fd as yl, ff as bl, fi as xl, fl as Sl, fn as Cl, fo as wl, fr as Tl, fs as El, ft as Dl, fu as Ol, g as kl, ga as Al, gc as jl, gd as Ml, gf as Nl, gi as Pl, gl as Fl, gn as Il, go as Ll, gr as Rl, gs as zl, gt as Bl, gu as Vl, h as Hl, ha as Ul, hc as Wl, hd as Gl, hf as Kl, hi as ql, hl as Jl, hn as Yl, ho as Xl, hr as Zl, hs as Ql, ht as $l, hu as eu, i as tu, ia as nu, ic as ru, id as iu, if as au, ii as ou, il as su, in as cu, io as lu, ip as uu, ir as du, is as fu, it as pu, iu as mu, j as hu, ja as gu, jc as _u, jd as vu, jf as yu, ji as bu, jl as xu, jn as Su, jo as Cu, jr as wu, js as Tu, jt as Eu, ju as Du, k as Ou, ka as ku, kc as Au, kd as ju, kf as Mu, ki as Nu, kl as Pu, kn as Fu, ko as Iu, kr as Lu, ks as Ru, kt as zu, ku as Bu, l as Vu, la as Hu, lc as Uu, ld as Wu, lf as Gu, li as Ku, ll as qu, ln as Ju, lo as Yu, lp as Xu, lr as Zu, ls as Qu, lt as $u, lu as ed, m as td, ma as nd, mc as rd, md as id, mf as ad, mi as od, ml as sd, mn as cd, mo as ld, mr as ud, ms as dd, mt as fd, mu as pd, n as md, na as hd, nc as gd, nd as _d, nf as vd, ni as yd, nl as bd, nn as xd, no as Sd, np as Cd, nr as wd, ns as Td, nt as Ed, nu as Dd, o as Od, oa as kd, oc as Ad, od as jd, of as Md, oi as Nd, ol as Pd, on as Fd, oo as Id, op as Ld, or as Rd, os as zd, ot as Bd, ou as Vd, p as Hd, pa as Ud, pc as Wd, pd as Gd, pf as Kd, pi as qd, pl as Jd, pn as Yd, po as Xd, pr as Zd, ps as Qd, pt as $d, pu as ef, q as tf, qa as nf, qc as rf, qd as af, qf as of, qi as sf, ql as cf, qn as lf, qo as uf, qr as df, qs as ff, qt as pf, qu as mf, r as hf, ra as gf, rc as _f, rd as vf, rf as yf, ri as bf, rl as xf, rn as Sf, ro as Cf, rp as wf, rr as Tf, rs as Ef, rt as Df, ru as Of, s as kf, sa as Af, sc as jf, sd as Mf, sf as Nf, si as Pf, sl as Ff, sn as If, so as Lf, sp as Rf, sr as zf, ss as Bf, st as Vf, su as Hf, t as Uf, ta as Wf, tc as Gf, td as Kf, tf as qf, ti as Jf, tl as Yf, tn as Xf, to as Zf, tp as Qf, tr as $f, ts as ep, tt as tp, tu as np, u as rp, ua as ip, uc as ap, ud as op, uf as sp, ui as cp, ul as lp, un as up, uo as dp, up as fp, ur as pp, us as mp, ut as hp, uu as gp, v as _p, va as vp, vc as yp, vd as bp, vf as xp, vi as Sp, vl as Cp, vn as wp, vo as Tp, vr as Ep, vs as Dp, vt as Op, vu as kp, w as Ap, wa as jp, wc as Mp, wd as Np, wf as Pp, wi as Fp, wl as Ip, wn as Lp, wo as Rp, wr as zp, ws as Bp, wt as Vp, wu as Hp, x as Up, xa as Wp, xc as Gp, xd as Kp, xf as qp, xi as Jp, xl as Yp, xn as Xp, xo as Zp, xr as Qp, xs as $p, xt as em, xu as tm, y as nm, ya as rm, yc as im, yd as am, yf as om, yi as sm, yl as cm, yn as lm, yo as um, yr as dm, ys as fm, yt as pm, yu as mm, z as hm, za as gm, zc as _m, zd as vm, zf as ym, zi as bm, zl as xm, zn as Sm, zo as Cm, zr as wm, zs as Tm, zt as Em, zu as Dm } from "./components-
|
|
5
|
+
import { $ as gt, $a as _t, $c as vt, $d as yt, $f as bt, $i as xt, $l as St, $n as Ct, $o as wt, $r as Tt, $s as Et, $t as Dt, $u as Ot, A as kt, Aa as At, Ac as jt, Ad as Mt, Af as Nt, Ai as Pt, Al as Ft, An as It, Ao as Lt, Ar as Rt, As as zt, At as Bt, Au as Vt, B as Ht, Ba as Ut, Bc as Wt, Bd as Gt, Bf as Kt, Bi as qt, Bl as Jt, Bn as Yt, Bo as Xt, Br as Zt, Bs as Qt, Bt as $t, Bu as en, C as tn, Ca as nn, Cc as rn, Cd as an, Cf as on, Ci as sn, Cl as cn, Cn as ln, Co as un, Cr as dn, Cs as fn, Ct as pn, Cu as mn, D as hn, Da as gn, Dc as _n, Dd as vn, Df as yn, Di as bn, Dl as xn, Dn as Sn, Do as Cn, Dr as wn, Ds as Tn, Dt as En, Du as Dn, E as On, Ea as kn, Ec as An, Ed as jn, Ef as Mn, Ei as Nn, El as Pn, En as Fn, Eo as In, Er as Ln, Es as Rn, Et as zn, Eu as Bn, F as Vn, Fa as Hn, Fc as Un, Fd as Wn, Ff as Gn, Fi as Kn, Fl as qn, Fn as Jn, Fo as Yn, Fr as Xn, Fs as Zn, Ft as Qn, Fu as $n, G as er, Ga as tr, Gc as nr, Gd as rr, Gf as ir, Gi as ar, Gl as or, Gn as sr, Go as cr, Gr as lr, Gs as ur, Gt as dr, Gu as fr, H as pr, Ha as mr, Hc as hr, Hd as gr, Hf as _r, Hi as vr, Hl as yr, Hn as br, Ho as xr, Hr as Sr, Hs as Cr, Ht as wr, Hu as Tr, I as Er, Ia as Dr, Ic as Or, Id as kr, If as Ar, Ii as jr, Il as Mr, In as Nr, Io as Pr, Ir as Fr, Is as Ir, It as Lr, Iu as Rr, J as zr, Ja as Br, Jc as Vr, Jd as Hr, Jf as Ur, Ji as Wr, Jl as Gr, Jn as Kr, Jo as qr, Jr, Js as Yr, Jt as Xr, Ju as Zr, K as Qr, Ka as $r, Kc as ei, Kd as ti, Kf as ni, Ki as ri, Kl as ii, Kn as ai, Ko as oi, Kr as si, Ks as ci, Kt as li, Ku as ui, L as di, La as fi, Lc as pi, Ld as mi, Lf as hi, Li as gi, Ll as _i, Ln as vi, Lo as yi, Lr as bi, Ls as xi, Lt as Si, Lu as Ci, M as wi, Ma as Ti, Mc as Ei, Md as Di, Mf as Oi, Mi as ki, Ml as Ai, Mn as ji, Mo as Mi, Mr as Ni, Ms as Pi, Mt as Fi, Mu as Ii, N as Li, Na as Ri, Nc as zi, Nd as Bi, Nf as Vi, Ni as Hi, Nl as Ui, Nn as Wi, No as Gi, Nr as Ki, Ns as qi, Nt as Ji, Nu as Yi, O as Xi, Oa as Zi, Oc as Qi, Od as $i, Of as ea, Oi as ta, Ol as na, On as ra, Oo as ia, Or as aa, Os as oa, Ot as sa, Ou as ca, P as la, Pa as ua, Pc as da, Pd as fa, Pf as pa, Pi as ma, Pl as ha, Pn as ga, Po as _a, Pr as va, Ps as ya, Pt as ba, Pu as xa, Q as Sa, Qa as Ca, Qc as wa, Qd as Ta, Qf as Ea, Qi as Da, Ql as Oa, Qn as ka, Qo as Aa, Qr as ja, Qs as Ma, Qt as Na, Qu as Pa, R as Fa, Ra as Ia, Rc as La, Rd as Ra, Rf as za, Ri as Ba, Rl as Va, Rn as Ha, Ro as Ua, Rr as Wa, Rs as Ga, Rt as Ka, Ru as qa, S as Ja, Sa as Ya, Sc as Xa, Sd as Za, Sf as Qa, Si as $a, Sl as eo, Sn as to, So as no, Sr as ro, Ss as io, St as ao, Su as oo, T as so, Ta as co, Tc as lo, Td as uo, Tf as fo, Ti as po, Tl as mo, Tn as ho, To as go, Tr as _o, Ts as vo, Tt as yo, Tu as bo, U as xo, Ua as So, Uc as Co, Ud as wo, Uf as To, Ui as Eo, Ul as Do, Un as Oo, Uo as ko, Ur as Ao, Us as jo, Ut as Mo, Uu as No, V as Po, Va as Fo, Vc as Io, Vd as Lo, Vf as Ro, Vi as zo, Vl as Bo, Vn as Vo, Vo as Ho, Vr as Uo, Vs as Wo, Vt as Go, Vu as Ko, W as qo, Wa as Jo, Wc as Yo, Wd as Xo, Wf as Zo, Wi as Qo, Wl as $o, Wn as es, Wo as ts, Wr as ns, Ws as rs, Wt as is, Wu as as, X as os, Xa as ss, Xc as cs, Xd as ls, Xf as us, Xi as ds, Xl as fs, Xn as ps, Xo as ms, Xr as hs, Xs as gs, Xt as _s, Xu as vs, Y as ys, Ya as bs, Yc as xs, Yd as Ss, Yf as Cs, Yi as ws, Yl as Ts, Yn as Es, Yo as Ds, Yr as Os, Ys as ks, Yt as As, Yu as js, Z as Ms, Za as Ns, Zc as Ps, Zd as Fs, Zf as Is, Zi as Ls, Zl as Rs, Zn as zs, Zo as Bs, Zr as Vs, Zs as Hs, Zt as Us, Zu as Ws, _ as Gs, _a as Ks, _c as qs, _d as Js, _f as Ys, _i as Xs, _l as Zs, _n as Qs, _o as $s, _r as ec, _s as tc, _t as nc, _u as rc, a as ic, aa as ac, ac as oc, ad as sc, af as cc, ai as lc, al as uc, an as dc, ao as fc, ap as pc, ar as mc, as as hc, at as gc, au as _c, b as vc, ba as yc, bc, bd as xc, bf as Sc, bi as Cc, bl as wc, bn as Tc, bo as Ec, br as Dc, bs as Oc, bt as kc, bu as Ac, c as jc, ca as Mc, cc as Nc, cd as Pc, cf as Fc, ci as Ic, cl as Lc, cn as Rc, co as zc, cp as Bc, cr as Vc, cs as Hc, ct as Uc, cu as Wc, d as Gc, da as Kc, dc as Z, dd as qc, df as Jc, di as Yc, dl as Xc, dn as Zc, do as Qc, dr as $c, ds as el, dt as tl, du as nl, ea as rl, ec as il, ed as al, ef as ol, ei as sl, el as cl, en as ll, eo as ul, ep as dl, er as fl, es as pl, et as ml, eu as hl, f as gl, fa as _l, fc as vl, fd as yl, ff as bl, fi as xl, fl as Sl, fn as Cl, fo as wl, fr as Tl, fs as El, ft as Dl, fu as Ol, g as kl, ga as Al, gc as jl, gd as Ml, gf as Nl, gi as Pl, gl as Fl, gn as Il, go as Ll, gr as Rl, gs as zl, gt as Bl, gu as Vl, h as Hl, ha as Ul, hc as Wl, hd as Gl, hf as Kl, hi as ql, hl as Jl, hn as Yl, ho as Xl, hr as Zl, hs as Ql, ht as $l, hu as eu, i as tu, ia as nu, ic as ru, id as iu, if as au, ii as ou, il as su, in as cu, io as lu, ip as uu, ir as du, is as fu, it as pu, iu as mu, j as hu, ja as gu, jc as _u, jd as vu, jf as yu, ji as bu, jl as xu, jn as Su, jo as Cu, jr as wu, js as Tu, jt as Eu, ju as Du, k as Ou, ka as ku, kc as Au, kd as ju, kf as Mu, ki as Nu, kl as Pu, kn as Fu, ko as Iu, kr as Lu, ks as Ru, kt as zu, ku as Bu, l as Vu, la as Hu, lc as Uu, ld as Wu, lf as Gu, li as Ku, ll as qu, ln as Ju, lo as Yu, lp as Xu, lr as Zu, ls as Qu, lt as $u, lu as ed, m as td, ma as nd, mc as rd, md as id, mf as ad, mi as od, ml as sd, mn as cd, mo as ld, mr as ud, ms as dd, mt as fd, mu as pd, n as md, na as hd, nc as gd, nd as _d, nf as vd, ni as yd, nl as bd, nn as xd, no as Sd, np as Cd, nr as wd, ns as Td, nt as Ed, nu as Dd, o as Od, oa as kd, oc as Ad, od as jd, of as Md, oi as Nd, ol as Pd, on as Fd, oo as Id, op as Ld, or as Rd, os as zd, ot as Bd, ou as Vd, p as Hd, pa as Ud, pc as Wd, pd as Gd, pf as Kd, pi as qd, pl as Jd, pn as Yd, po as Xd, pr as Zd, ps as Qd, pt as $d, pu as ef, q as tf, qa as nf, qc as rf, qd as af, qf as of, qi as sf, ql as cf, qn as lf, qo as uf, qr as df, qs as ff, qt as pf, qu as mf, r as hf, ra as gf, rc as _f, rd as vf, rf as yf, ri as bf, rl as xf, rn as Sf, ro as Cf, rp as wf, rr as Tf, rs as Ef, rt as Df, ru as Of, s as kf, sa as Af, sc as jf, sd as Mf, sf as Nf, si as Pf, sl as Ff, sn as If, so as Lf, sp as Rf, sr as zf, ss as Bf, st as Vf, su as Hf, t as Uf, ta as Wf, tc as Gf, td as Kf, tf as qf, ti as Jf, tl as Yf, tn as Xf, to as Zf, tp as Qf, tr as $f, ts as ep, tt as tp, tu as np, u as rp, ua as ip, uc as ap, ud as op, uf as sp, ui as cp, ul as lp, un as up, uo as dp, up as fp, ur as pp, us as mp, ut as hp, uu as gp, v as _p, va as vp, vc as yp, vd as bp, vf as xp, vi as Sp, vl as Cp, vn as wp, vo as Tp, vr as Ep, vs as Dp, vt as Op, vu as kp, w as Ap, wa as jp, wc as Mp, wd as Np, wf as Pp, wi as Fp, wl as Ip, wn as Lp, wo as Rp, wr as zp, ws as Bp, wt as Vp, wu as Hp, x as Up, xa as Wp, xc as Gp, xd as Kp, xf as qp, xi as Jp, xl as Yp, xn as Xp, xo as Zp, xr as Qp, xs as $p, xt as em, xu as tm, y as nm, ya as rm, yc as im, yd as am, yf as om, yi as sm, yl as cm, yn as lm, yo as um, yr as dm, ys as fm, yt as pm, yu as mm, z as hm, za as gm, zc as _m, zd as vm, zf as ym, zi as bm, zl as xm, zn as Sm, zo as Cm, zr as wm, zs as Tm, zt as Em, zu as Dm } from "./components-2kTVPsMg.js";
|
|
6
6
|
import { a as Om, i as km } from "./field-blur-context-DPe5_Nv5.js";
|
|
7
7
|
import { i as Am, n as jm, r as Mm, t as Nm } from "./hover-card-D_0smKBQ.js";
|
|
8
8
|
import { _ as Pm, a as Fm, c as Im, d as Lm, f as Rm, g as zm, i as Bm, l as Vm, o as Hm, p as Um, r as Wm, s as Gm, t as Km, u as qm } from "./public-D8JGp3PH.js";
|
|
@@ -4,7 +4,7 @@ export type LoadMoreFooterProps = Omit<ComponentProps<'div'>, 'children'> & {
|
|
|
4
4
|
shown: number;
|
|
5
5
|
/** How many items the list holds in all; leave it out when it is not known. */
|
|
6
6
|
total?: number;
|
|
7
|
-
/** Whether a next page exists. When it does not, the footer renders nothing. */
|
|
7
|
+
/** Whether a next page exists. When it does not, the footer renders nothing, unless a next page existed before: it then keeps its status line, so the last count ("Showing 85 of 85") is announced. */
|
|
8
8
|
hasMore: boolean;
|
|
9
9
|
/** The next page is being fetched: the button spins and ignores clicks. */
|
|
10
10
|
loading?: boolean;
|
|
@@ -21,6 +21,15 @@ export type LoadMoreFooterProps = Omit<ComponentProps<'div'>, 'children'> & {
|
|
|
21
21
|
* The footer of a paged list: a "Showing N of M" line (a polite live region),
|
|
22
22
|
* the load button (the line is dropped with `showCount={false}`) and, when the next page failed, an error alert whose
|
|
23
23
|
* "Try again" calls `onLoad`. The rows already shown stay; the footer only
|
|
24
|
-
* says what is left to do. It renders nothing when there is
|
|
24
|
+
* says what is left to do. It renders nothing when there is never a next page.
|
|
25
|
+
* When the last page arrives it keeps the status line (a live region, so the
|
|
26
|
+
* final count is announced) and, if the button had the focus as it went away,
|
|
27
|
+
* takes the focus itself (the wrapper, `tabIndex={-1}`), so a keyboard user
|
|
28
|
+
* is not thrown back to the top of the page.
|
|
29
|
+
*
|
|
30
|
+
* The line is kept by a heuristic: a list that restarts smaller drops it, but
|
|
31
|
+
* one that restarts at the same size or larger cannot be told from a real end.
|
|
32
|
+
* Give the footer a `key` that names the query (the search, filters and sort,
|
|
33
|
+
* not the page) so a new query starts it afresh; `ServerTable` does.
|
|
25
34
|
*/
|
|
26
35
|
export declare function LoadMoreFooter({ shown, total, hasMore, loading, failed, showCount, label, onLoad, className, ...props }: LoadMoreFooterProps): import("react").JSX.Element | null;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentProps, FocusEvent } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Keeps the focus of a `LoadMoreFooter` whose button goes away with the last
|
|
4
|
+
* page: while the focus is inside, the footer remembers it, and once there is
|
|
5
|
+
* no next page and the focus fell to the page, the footer takes it (it is
|
|
6
|
+
* `tabIndex={-1}`). A blur of a button taken out of the page is not a user's
|
|
7
|
+
* move, so it keeps the memory; the user's own move away clears it.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useFooterFocus(hasMore: boolean, own: Pick<ComponentProps<'div'>, 'onFocus' | 'onBlur'>): {
|
|
10
|
+
root: import('react').RefObject<HTMLDivElement | null>;
|
|
11
|
+
handlers: {
|
|
12
|
+
onFocus: (event: FocusEvent<HTMLDivElement>) => void;
|
|
13
|
+
onBlur: (event: FocusEvent<HTMLDivElement>) => void;
|
|
14
|
+
};
|
|
15
|
+
};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Whether the footer is at the end of a list it showed a next page of: the
|
|
3
|
+
* list's last count is remembered while a next page exists, and forgotten
|
|
4
|
+
* when the list restarts smaller (`shown` or `total` dropping with no next
|
|
5
|
+
* page). A heuristic: a restart at the same size or larger looks like a real
|
|
6
|
+
* end, which a `key` naming the query settles. An empty list (`shown` 0, being
|
|
7
|
+
* rebuilt) is not remembered.
|
|
8
|
+
*/
|
|
9
|
+
export declare function useLastPage(hasMore: boolean, shown: number, total: number | undefined): boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { FilterModelField } from '@nxgt/material-core/filter';
|
|
2
|
+
/**
|
|
3
|
+
* An inline field (`inline: true`) as a chip group in the bar, named by the
|
|
4
|
+
* field's label: its options as toggle chips, one at a time for `chips-single`
|
|
5
|
+
* (pressing the chosen one clears it) or several for `chips-multiple`. Each
|
|
6
|
+
* press is one query change, as a quick pill's edit is; the group is the
|
|
7
|
+
* condition's only display, so it has no chip of its own.
|
|
8
|
+
*/
|
|
9
|
+
export declare function FilterInlineChips({ field }: {
|
|
10
|
+
field: FilterModelField;
|
|
11
|
+
}): import("react").JSX.Element;
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The inline fields' chip groups (`inline: true`), under the search at every
|
|
3
|
+
* width: on a phone too, where the chips are the one-tap filter and the sheet
|
|
4
|
+
* keeps the rest. Nothing without an inline field.
|
|
5
|
+
*/
|
|
6
|
+
export declare function FilterInlineList(): import("react").JSX.Element[];
|
package/dist/lib/components/ui/collections/server-table/partials/server-table-grid-paging.d.ts
CHANGED
|
@@ -6,3 +6,12 @@ import { useServerTable } from '../use-server-table.js';
|
|
|
6
6
|
export declare function isSinglePage<T extends RowData>(props: ServerTableProps<T>, state: ReturnType<typeof useServerTable<T>>): boolean;
|
|
7
7
|
/** The `pagination` the footer gets: none on a single page the caller hides, else the links, with `pageControls` when asked. */
|
|
8
8
|
export declare function gridPagination<T extends RowData>(props: ServerTableProps<T>, state: ReturnType<typeof useServerTable<T>>, singlePage: boolean): DataTableProps<T>['pagination'];
|
|
9
|
+
/**
|
|
10
|
+
* The footer's two props: the `pagination` (none in load-more mode, whose
|
|
11
|
+
* footer is `LoadMoreFooter`) and the `footer` itself — none on an empty
|
|
12
|
+
* page and on a single page with no selection to tell.
|
|
13
|
+
*/
|
|
14
|
+
export declare function gridFooter<T extends RowData>(props: ServerTableProps<T>, state: ReturnType<typeof useServerTable<T>>, { singlePage, loading }: {
|
|
15
|
+
singlePage: boolean;
|
|
16
|
+
loading: boolean;
|
|
17
|
+
}): Pick<DataTableProps<T>, 'pagination' | 'footer'>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { RowData } from '@tanstack/react-table';
|
|
2
|
+
import { ReactNode } from 'react';
|
|
3
|
+
import { DataTableTable } from '../../data-table/types.js';
|
|
4
|
+
import { ServerTableProps } from '../types.js';
|
|
5
|
+
/** What is wrong with the load-more props, if anything: no `onLoadMore`, so the button would do nothing. */
|
|
6
|
+
export declare function loadMoreProblem<T extends RowData>(props: Pick<ServerTableProps<T>, 'footer' | 'onLoadMore'>): string | undefined;
|
|
7
|
+
/** Warns in development about `loadMoreProblem`. */
|
|
8
|
+
export declare function useLoadMoreWarning<T extends RowData>(props: Pick<ServerTableProps<T>, 'footer' | 'onLoadMore'>): void;
|
|
9
|
+
/**
|
|
10
|
+
* `ServerTable`'s footer in load-more mode (`footer="load-more"`): the
|
|
11
|
+
* selection count of the table's own footer, then `LoadMoreFooter` (the
|
|
12
|
+
* shown-of-total line, the button, the failed alert with its retry) in place
|
|
13
|
+
* of Previous / Next. It renders nothing past the last page.
|
|
14
|
+
*/
|
|
15
|
+
export declare function serverTableLoadMore<T extends RowData>(props: ServerTableProps<T>, options: {
|
|
16
|
+
disabled: boolean;
|
|
17
|
+
}): ((table: DataTableTable<T>) => ReactNode) | undefined;
|
|
@@ -1,6 +1,16 @@
|
|
|
1
1
|
import { PagingNames } from '@nxgt/material-core/table-url';
|
|
2
2
|
/** The footer and paging props of `ServerTable`, apart from the page's data. */
|
|
3
3
|
export type ServerTablePagingProps = {
|
|
4
|
+
/** `'paging'` (default): Previous / Next over the URL's cursor. `'load-more'`: `LoadMoreFooter` ("Showing N of M" from `rows.length` and `totalCount`, the load button while `pageInfo.hasNextPage`, a failed alert with a retry) in place of them, for a list that grows: the page keeps the loaded rows in `rows` and fetches the next itself (`onLoadMore`), so the cursor params are not used. */
|
|
5
|
+
footer?: 'paging' | 'load-more';
|
|
6
|
+
/** With `footer="load-more"`: fetches the next page and appends it to `rows`; the retry of a failed page calls it too. */
|
|
7
|
+
onLoadMore?: () => void;
|
|
8
|
+
/** With `footer="load-more"`: the next page is being fetched; the button spins and ignores clicks. */
|
|
9
|
+
isLoadingMore?: boolean;
|
|
10
|
+
/** With `footer="load-more"`: the next page failed; an alert with a retry replaces the button and the rows stay. */
|
|
11
|
+
loadMoreFailed?: boolean;
|
|
12
|
+
/** With `footer="load-more"`: the load button's label (translated "Load more" by default). */
|
|
13
|
+
loadMoreLabel?: string;
|
|
4
14
|
/** How the footer's Previous and Next are drawn: `'labelled'` (default) or
|
|
5
15
|
* `'icon'`, icon-only buttons with a tooltip and a name that says the page
|
|
6
16
|
* ("Previous page"); a page given as an href stays a link. */
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { QuestionProps } from '../types.js';
|
|
2
2
|
/** A question's fieldset: prompt, header, media, hint, the answer body and the feedback. */
|
|
3
|
-
export declare function QuestionContent({ question, value, onValueChange, revealed: revealedProp, verdict, points, feedback, disabled, readOnly, busy, renderCode, variant, density, showShortcuts, number, showFeedback, }: QuestionProps): import("react").JSX.Element;
|
|
3
|
+
export declare function QuestionContent({ question, value, onValueChange, revealed: revealedProp, verdict, points, feedback, disabled, readOnly, busy, renderCode, promptId: promptIdProp, variant, density, showShortcuts, number, showFeedback, }: QuestionProps): import("react").JSX.Element;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { QuestionProps } from './types.js';
|
|
2
|
-
/** A multi-line answer: `open` (prose) or `code` (the `renderCode` field, else a monospace textarea). */
|
|
3
|
-
export declare function QuestionLongText(
|
|
2
|
+
/** A multi-line answer: `open` (prose) or `code` (the `renderCode` field, else a monospace textarea), with the question's `description` under it. */
|
|
3
|
+
export declare function QuestionLongText(props: QuestionProps & {
|
|
4
4
|
labelledBy: string;
|
|
5
5
|
}): import("react").JSX.Element;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { QuestionProps } from './types.js';
|
|
2
|
-
export declare function QuestionCard({ question, value, onValueChange, revealed, verdict, points, feedback, disabled, readOnly, busy, renderCode, className, variant, density, showShortcuts, number, showFeedback, }: QuestionProps): import("react").JSX.Element;
|
|
2
|
+
export declare function QuestionCard({ question, value, onValueChange, revealed, verdict, points, feedback, disabled, readOnly, busy, renderCode, promptId, className, variant, density, showShortcuts, number, showFeedback, }: QuestionProps): import("react").JSX.Element;
|
|
@@ -59,6 +59,12 @@ export type Question = {
|
|
|
59
59
|
tolerance?: number;
|
|
60
60
|
/** `number`: the unit shown after the field ("km", "%"). */
|
|
61
61
|
unit?: string;
|
|
62
|
+
/**
|
|
63
|
+
* `open`, `code`: a persistent helper line under the answer field ("A person
|
|
64
|
+
* will mark this"), linked to it by `aria-describedby`. Its id is
|
|
65
|
+
* `${promptId}-description`. Unlike `hint`, it is always shown.
|
|
66
|
+
*/
|
|
67
|
+
description?: string;
|
|
62
68
|
/** `open`, `code`: the most characters accepted; a counter shows while editable. */
|
|
63
69
|
maxLength?: number;
|
|
64
70
|
/** `code`: the language of the code ("python"), given to `renderCode`. */
|
|
@@ -74,6 +80,8 @@ export type QuestionCodeField = {
|
|
|
74
80
|
onChange: (value: string) => void;
|
|
75
81
|
/** The prompt's id: name the field with `aria-labelledby`. */
|
|
76
82
|
labelledBy: string;
|
|
83
|
+
/** The id of the `description` line, when there is one: add it to `aria-describedby`. */
|
|
84
|
+
describedBy?: string;
|
|
77
85
|
/** The prompt, as a text label for editors that take one. */
|
|
78
86
|
label: string;
|
|
79
87
|
language?: string;
|
|
@@ -86,6 +94,12 @@ export type QuestionProps = {
|
|
|
86
94
|
value?: QuestionAnswer;
|
|
87
95
|
onValueChange?: (value: QuestionAnswer) => void;
|
|
88
96
|
revealed?: boolean;
|
|
97
|
+
/**
|
|
98
|
+
* The id of the prompt (the fieldset's legend text), so a wrapper can use
|
|
99
|
+
* `aria-labelledby`. Default: a generated id. The `description` line is
|
|
100
|
+
* `${promptId}-description`.
|
|
101
|
+
*/
|
|
102
|
+
promptId?: string;
|
|
89
103
|
/**
|
|
90
104
|
* The verdict the server gave, shown as given (no comparison with
|
|
91
105
|
* `question.correct` in the browser). It reveals the card; `pending` is a
|
package/dist/main.js
CHANGED
|
@@ -4,7 +4,7 @@ import { $t as re, An as e, Ar as t, B as n, Bi as r, Bn as i, Br as a, Bt as o,
|
|
|
4
4
|
import { a as Ge, i as Ke, l as qe, o as Je, r as Ye, t as Xe } from "./spinner-CAnpF3RK.js";
|
|
5
5
|
import { a as Ze, c as Qe, f as $e, i as et, l as tt, n as nt, o as rt, r as it, s as at, t as ot } from "./alert-dialog-RHm6WtQj.js";
|
|
6
6
|
import { a as st, c as ct, d as lt, f as ut, i as dt, l as ft, n as pt, o as mt, r as ht, s as gt, t as _t, u as vt } from "./dropdown-menu-_SyVmSuy.js";
|
|
7
|
-
import { $ as yt, $a as bt, $c as xt, $d as St, $f as Ct, $i as wt, $l as Tt, $n as Et, $o as Dt, $r as Ot, $s as kt, $t as At, $u as jt, A as Mt, Aa as Nt, Ac as Pt, Ad as Ft, Af as It, Ai as Lt, Al as Rt, An as zt, Ao as Bt, Ar as Vt, As as Ht, At as Ut, Au as Wt, B as Gt, Ba as Kt, Bc as qt, Bd as Jt, Bf as Yt, Bi as Xt, Bl as Zt, Bn as Qt, Bo as $t, Br as en, Bs as tn, Bt as nn, Bu as rn, C as an, Ca as on, Cc as sn, Cd as cn, Cf as ln, Ci as un, Cl as dn, Cn as fn, Co as pn, Cr as mn, Cs as hn, Ct as gn, Cu as _n, D as vn, Da as yn, Dc as bn, Dd as xn, Df as Sn, Di as Cn, Dl as wn, Dn as Tn, Do as En, Dr as Dn, Ds as On, Dt as kn, Du as An, E as jn, Ea as Mn, Ec as Nn, Ed as Pn, Ef as Fn, Ei as In, El as Ln, En as Rn, Eo as zn, Er as Bn, Es as Vn, Et as Hn, Eu as Un, F as Wn, Fa as Gn, Fc as Kn, Fd as qn, Ff as Jn, Fi as Yn, Fl as Xn, Fn as Zn, Fo as Qn, Fr as $n, Fs as er, Ft as tr, Fu as nr, G as rr, Ga as ir, Gc as ar, Gd as or, Gf as sr, Gi as cr, Gl as lr, Gn as ur, Go as dr, Gr as fr, Gs as pr, Gt as mr, Gu as hr, H as gr, Ha as _r, Hc as vr, Hd as yr, Hf as br, Hi as xr, Hl as Sr, Hn as Cr, Ho as wr, Hr as Tr, Hs as Er, Ht as Dr, Hu as Or, I as kr, Ia as Ar, Ic as jr, Id as Mr, If as Nr, Ii as Pr, Il as Fr, In as Ir, Io as Lr, Ir as Rr, Is as zr, It as Br, Iu as Vr, J as Hr, Ja as Ur, Jc as Wr, Jd as Gr, Jf as Kr, Ji as qr, Jl as Jr, Jn as Yr, Jo as Xr, Jr as Zr, Js as Qr, Jt as $r, Ju as ei, K as ti, Ka as ni, Kc as ri, Kd as ii, Kf as ai, Ki as oi, Kl as si, Kn as ci, Ko as li, Kr as ui, Ks as di, Kt as fi, Ku as pi, L as mi, La as hi, Lc as gi, Ld as _i, Lf as vi, Li as yi, Ll as bi, Ln as xi, Lo as Si, Lr as Ci, Ls as wi, Lt as Ti, Lu as Ei, M as Di, Ma as Oi, Mc as ki, Md as Ai, Mf as ji, Mi, Ml as Ni, Mn as Pi, Mo as Fi, Mr as Ii, Ms as Li, Mt as Ri, Mu as zi, N as Bi, Na as Vi, Nc as Hi, Nd as Ui, Nf as Wi, Ni as Gi, Nl as Ki, Nn as qi, No as Ji, Nr as Yi, Ns as Xi, Nt as Zi, Nu as Qi, O as $i, Oa as ea, Oc as ta, Od as na, Of as ra, Oi as ia, Ol as aa, On as oa, Oo as sa, Or as ca, Os as la, Ot as ua, Ou as da, P as fa, Pa as pa, Pc as ma, Pd as ha, Pf as ga, Pi as _a, Pl as va, Pn as ya, Po as ba, Pr as xa, Ps as Sa, Pt as Ca, Pu as wa, Q as Ta, Qa as Ea, Qc as Da, Qd as Oa, Qf as ka, Qi as Aa, Ql as ja, Qn as Ma, Qo as Na, Qr as Pa, Qs as Fa, Qt as Ia, Qu as La, R as Ra, Ra as za, Rc as Ba, Rd as Va, Rf as Ha, Ri as Ua, Rl as Wa, Rn as Ga, Ro as Ka, Rr as qa, Rs as Ja, Rt as Ya, Ru as Xa, S as Za, Sa as Qa, Sc as $a, Sd as eo, Sf as to, Si as no, Sl as ro, Sn as io, So as ao, Sr as oo, Ss as so, St as co, Su as lo, T as uo, Ta as fo, Tc as po, Td as mo, Tf as ho, Ti as go, Tl as _o, Tn as vo, To as yo, Tr as bo, Ts as xo, Tt as So, Tu as Co, U as wo, Ua as To, Uc as Eo, Ud as Do, Uf as Oo, Ui as ko, Ul as Ao, Un as jo, Uo as Mo, Ur as No, Us as Po, Ut as Fo, Uu as Io, V as Lo, Va as Ro, Vc as zo, Vd as Bo, Vf as Vo, Vi as Ho, Vl as Uo, Vn as Wo, Vo as Go, Vr as Ko, Vs as qo, Vt as Jo, Vu as Yo, W as Xo, Wa as Zo, Wc as Qo, Wd as $o, Wf as es, Wi as ts, Wl as ns, Wn as rs, Wo as is, Wr as as, Ws as os, Wt as ss, Wu as cs, X as ls, Xa as us, Xc as ds, Xd as fs, Xf as ps, Xi as ms, Xl as hs, Xn as gs, Xo as _s, Xr as vs, Xs as ys, Xt as bs, Xu as xs, Y as Ss, Ya as Cs, Yc as ws, Yd as Ts, Yf as Es, Yi as Ds, Yl as Os, Yn as ks, Yo as As, Yr as js, Ys as Ms, Yt as Ns, Yu as Ps, Z as Fs, Za as Is, Zc as Ls, Zd as Rs, Zf as zs, Zi as Bs, Zl as Vs, Zn as Hs, Zo as Us, Zr as Ws, Zs as Gs, Zt as Ks, Zu as qs, _ as Js, _a as Ys, _c as Xs, _d as Zs, _f as Qs, _i as $s, _l as ec, _n as tc, _o as nc, _r as rc, _s as ic, _t as ac, _u as oc, a as sc, aa as cc, ac as lc, ad as uc, af as dc, ai as fc, al as pc, an as mc, ao as hc, ap as gc, ar as _c, as as vc, at as yc, au as bc, b as xc, ba as Sc, bc as Cc, bd as wc, bf as Tc, bi as Ec, bl as Dc, bn as Oc, bo as kc, br as Ac, bs as jc, bt as Mc, bu as Nc, c as Pc, ca as Fc, cc as Ic, cd as Lc, cf as Rc, ci as zc, cl as Bc, cn as Vc, co as Hc, cp as Uc, cr as Wc, cs as Gc, ct as Kc, cu as qc, d as Jc, da as Yc, dc as Xc, dd as Zc, df as Qc, di as $c, dl as el, dn as tl, do as nl, dr as rl, ds as il, dt as al, du as ol, ea as sl, ec as cl, ed as ll, ef as ul, ei as dl, el as fl, en as pl, eo as ml, ep as hl, er as gl, es as _l, et as vl, eu as yl, f as bl, fa as xl, fc as Sl, fd as Cl, ff as wl, fi as Tl, fl as El, fn as Dl, fo as Ol, fr as kl, fs as Al, ft as jl, fu as Ml, g as Nl, ga as Pl, gc as Fl, gd as Il, gf as Ll, gi as Rl, gl as zl, gn as Bl, go as Vl, gr as Hl, gs as Ul, gt as Wl, gu as Gl, h as Kl, ha as ql, hc as Jl, hd as Yl, hf as Xl, hi as Zl, hl as Ql, hn as $l, ho as eu, hr as tu, hs as nu, ht as ru, hu as iu, i as au, ia as ou, ic as Z, id as su, if as cu, ii as lu, il as uu, in as du, io as fu, ip as pu, ir as mu, is as hu, it as gu, iu as _u, j as vu, ja as yu, jc as bu, jd as xu, jf as Su, ji as Cu, jl as wu, jn as Tu, jo as Eu, jr as Du, js as Ou, jt as ku, ju as Au, k as ju, ka as Mu, kc as Nu, kd as Pu, kf as Fu, ki as Iu, kl as Lu, kn as Ru, ko as zu, kr as Bu, ks as Vu, kt as Hu, ku as Uu, l as Wu, la as Gu, lc as Ku, ld as qu, lf as Ju, li as Yu, ll as Xu, ln as Zu, lo as Qu, lp as $u, lr as ed, ls as td, lt as nd, lu as rd, m as id, ma as ad, mc as od, md as sd, mf as cd, mi as ld, ml as ud, mn as dd, mo as fd, mr as pd, ms as md, mt as hd, mu as gd, n as _d, na as vd, nc as yd, nd as bd, nf as xd, ni as Sd, nl as Cd, nn as wd, no as Td, np as Ed, nr as Dd, ns as Od, nt as kd, nu as Ad, o as jd, oa as Md, oc as Nd, od as Pd, of as Fd, oi as Id, ol as Ld, on as Rd, oo as zd, op as Bd, or as Vd, os as Hd, ot as Ud, ou as Wd, p as Gd, pa as Kd, pc as qd, pd as Jd, pf as Yd, pi as Xd, pl as Zd, pn as Qd, po as $d, pr as ef, ps as tf, pt as nf, pu as rf, q as af, qa as of, qc as sf, qd as cf, qf as lf, qi as uf, ql as df, qn as ff, qo as pf, qr as mf, qs as hf, qt as gf, qu as _f, r as vf, ra as yf, rc as bf, rd as xf, rf as Sf, ri as Cf, rl as wf, rn as Tf, ro as Ef, rp as Df, rr as Of, rs as kf, rt as Af, ru as jf, s as Mf, sa as Nf, sc as Pf, sd as Ff, sf as If, si as Lf, sl as Rf, sn as zf, so as Bf, sp as Vf, sr as Hf, ss as Uf, st as Wf, su as Gf, t as Kf, ta as qf, tc as Jf, td as Yf, tf as Xf, ti as Zf, tl as Qf, tn as $f, to as ep, tp, tr as np, ts as rp, tt as ip, tu as ap, u as op, ua as sp, uc as cp, ud as lp, uf as up, ui as dp, ul as fp, un as pp, uo as mp, up as hp, ur as gp, us as _p, ut as vp, uu as yp, v as bp, va as xp, vc as Sp, vd as Cp, vf as wp, vi as Tp, vl as Ep, vn as Dp, vo as Op, vr as kp, vs as Ap, vt as jp, vu as Mp, w as Np, wa as Pp, wc as Fp, wd as Ip, wf as Lp, wi as Rp, wl as zp, wn as Bp, wo as Vp, wr as Hp, ws as Up, wt as Wp, wu as Gp, x as Kp, xa as qp, xc as Jp, xd as Yp, xf as Xp, xi as Zp, xl as Qp, xn as $p, xo as em, xr as tm, xs as nm, xt as rm, xu as im, y as am, ya as om, yc as sm, yd as cm, yf as lm, yi as um, yl as dm, yn as fm, yo as pm, yr as mm, ys as hm, yt as gm, yu as _m, z as vm, za as ym, zc as bm, zd as xm, zf as Sm, zi as Cm, zl as wm, zn as Tm, zo as Em, zr as Dm, zs as Om, zt as km, zu as Am } from "./components-
|
|
7
|
+
import { $ as yt, $a as bt, $c as xt, $d as St, $f as Ct, $i as wt, $l as Tt, $n as Et, $o as Dt, $r as Ot, $s as kt, $t as At, $u as jt, A as Mt, Aa as Nt, Ac as Pt, Ad as Ft, Af as It, Ai as Lt, Al as Rt, An as zt, Ao as Bt, Ar as Vt, As as Ht, At as Ut, Au as Wt, B as Gt, Ba as Kt, Bc as qt, Bd as Jt, Bf as Yt, Bi as Xt, Bl as Zt, Bn as Qt, Bo as $t, Br as en, Bs as tn, Bt as nn, Bu as rn, C as an, Ca as on, Cc as sn, Cd as cn, Cf as ln, Ci as un, Cl as dn, Cn as fn, Co as pn, Cr as mn, Cs as hn, Ct as gn, Cu as _n, D as vn, Da as yn, Dc as bn, Dd as xn, Df as Sn, Di as Cn, Dl as wn, Dn as Tn, Do as En, Dr as Dn, Ds as On, Dt as kn, Du as An, E as jn, Ea as Mn, Ec as Nn, Ed as Pn, Ef as Fn, Ei as In, El as Ln, En as Rn, Eo as zn, Er as Bn, Es as Vn, Et as Hn, Eu as Un, F as Wn, Fa as Gn, Fc as Kn, Fd as qn, Ff as Jn, Fi as Yn, Fl as Xn, Fn as Zn, Fo as Qn, Fr as $n, Fs as er, Ft as tr, Fu as nr, G as rr, Ga as ir, Gc as ar, Gd as or, Gf as sr, Gi as cr, Gl as lr, Gn as ur, Go as dr, Gr as fr, Gs as pr, Gt as mr, Gu as hr, H as gr, Ha as _r, Hc as vr, Hd as yr, Hf as br, Hi as xr, Hl as Sr, Hn as Cr, Ho as wr, Hr as Tr, Hs as Er, Ht as Dr, Hu as Or, I as kr, Ia as Ar, Ic as jr, Id as Mr, If as Nr, Ii as Pr, Il as Fr, In as Ir, Io as Lr, Ir as Rr, Is as zr, It as Br, Iu as Vr, J as Hr, Ja as Ur, Jc as Wr, Jd as Gr, Jf as Kr, Ji as qr, Jl as Jr, Jn as Yr, Jo as Xr, Jr as Zr, Js as Qr, Jt as $r, Ju as ei, K as ti, Ka as ni, Kc as ri, Kd as ii, Kf as ai, Ki as oi, Kl as si, Kn as ci, Ko as li, Kr as ui, Ks as di, Kt as fi, Ku as pi, L as mi, La as hi, Lc as gi, Ld as _i, Lf as vi, Li as yi, Ll as bi, Ln as xi, Lo as Si, Lr as Ci, Ls as wi, Lt as Ti, Lu as Ei, M as Di, Ma as Oi, Mc as ki, Md as Ai, Mf as ji, Mi, Ml as Ni, Mn as Pi, Mo as Fi, Mr as Ii, Ms as Li, Mt as Ri, Mu as zi, N as Bi, Na as Vi, Nc as Hi, Nd as Ui, Nf as Wi, Ni as Gi, Nl as Ki, Nn as qi, No as Ji, Nr as Yi, Ns as Xi, Nt as Zi, Nu as Qi, O as $i, Oa as ea, Oc as ta, Od as na, Of as ra, Oi as ia, Ol as aa, On as oa, Oo as sa, Or as ca, Os as la, Ot as ua, Ou as da, P as fa, Pa as pa, Pc as ma, Pd as ha, Pf as ga, Pi as _a, Pl as va, Pn as ya, Po as ba, Pr as xa, Ps as Sa, Pt as Ca, Pu as wa, Q as Ta, Qa as Ea, Qc as Da, Qd as Oa, Qf as ka, Qi as Aa, Ql as ja, Qn as Ma, Qo as Na, Qr as Pa, Qs as Fa, Qt as Ia, Qu as La, R as Ra, Ra as za, Rc as Ba, Rd as Va, Rf as Ha, Ri as Ua, Rl as Wa, Rn as Ga, Ro as Ka, Rr as qa, Rs as Ja, Rt as Ya, Ru as Xa, S as Za, Sa as Qa, Sc as $a, Sd as eo, Sf as to, Si as no, Sl as ro, Sn as io, So as ao, Sr as oo, Ss as so, St as co, Su as lo, T as uo, Ta as fo, Tc as po, Td as mo, Tf as ho, Ti as go, Tl as _o, Tn as vo, To as yo, Tr as bo, Ts as xo, Tt as So, Tu as Co, U as wo, Ua as To, Uc as Eo, Ud as Do, Uf as Oo, Ui as ko, Ul as Ao, Un as jo, Uo as Mo, Ur as No, Us as Po, Ut as Fo, Uu as Io, V as Lo, Va as Ro, Vc as zo, Vd as Bo, Vf as Vo, Vi as Ho, Vl as Uo, Vn as Wo, Vo as Go, Vr as Ko, Vs as qo, Vt as Jo, Vu as Yo, W as Xo, Wa as Zo, Wc as Qo, Wd as $o, Wf as es, Wi as ts, Wl as ns, Wn as rs, Wo as is, Wr as as, Ws as os, Wt as ss, Wu as cs, X as ls, Xa as us, Xc as ds, Xd as fs, Xf as ps, Xi as ms, Xl as hs, Xn as gs, Xo as _s, Xr as vs, Xs as ys, Xt as bs, Xu as xs, Y as Ss, Ya as Cs, Yc as ws, Yd as Ts, Yf as Es, Yi as Ds, Yl as Os, Yn as ks, Yo as As, Yr as js, Ys as Ms, Yt as Ns, Yu as Ps, Z as Fs, Za as Is, Zc as Ls, Zd as Rs, Zf as zs, Zi as Bs, Zl as Vs, Zn as Hs, Zo as Us, Zr as Ws, Zs as Gs, Zt as Ks, Zu as qs, _ as Js, _a as Ys, _c as Xs, _d as Zs, _f as Qs, _i as $s, _l as ec, _n as tc, _o as nc, _r as rc, _s as ic, _t as ac, _u as oc, a as sc, aa as cc, ac as lc, ad as uc, af as dc, ai as fc, al as pc, an as mc, ao as hc, ap as gc, ar as _c, as as vc, at as yc, au as bc, b as xc, ba as Sc, bc as Cc, bd as wc, bf as Tc, bi as Ec, bl as Dc, bn as Oc, bo as kc, br as Ac, bs as jc, bt as Mc, bu as Nc, c as Pc, ca as Fc, cc as Ic, cd as Lc, cf as Rc, ci as zc, cl as Bc, cn as Vc, co as Hc, cp as Uc, cr as Wc, cs as Gc, ct as Kc, cu as qc, d as Jc, da as Yc, dc as Xc, dd as Zc, df as Qc, di as $c, dl as el, dn as tl, do as nl, dr as rl, ds as il, dt as al, du as ol, ea as sl, ec as cl, ed as ll, ef as ul, ei as dl, el as fl, en as pl, eo as ml, ep as hl, er as gl, es as _l, et as vl, eu as yl, f as bl, fa as xl, fc as Sl, fd as Cl, ff as wl, fi as Tl, fl as El, fn as Dl, fo as Ol, fr as kl, fs as Al, ft as jl, fu as Ml, g as Nl, ga as Pl, gc as Fl, gd as Il, gf as Ll, gi as Rl, gl as zl, gn as Bl, go as Vl, gr as Hl, gs as Ul, gt as Wl, gu as Gl, h as Kl, ha as ql, hc as Jl, hd as Yl, hf as Xl, hi as Zl, hl as Ql, hn as $l, ho as eu, hr as tu, hs as nu, ht as ru, hu as iu, i as au, ia as ou, ic as Z, id as su, if as cu, ii as lu, il as uu, in as du, io as fu, ip as pu, ir as mu, is as hu, it as gu, iu as _u, j as vu, ja as yu, jc as bu, jd as xu, jf as Su, ji as Cu, jl as wu, jn as Tu, jo as Eu, jr as Du, js as Ou, jt as ku, ju as Au, k as ju, ka as Mu, kc as Nu, kd as Pu, kf as Fu, ki as Iu, kl as Lu, kn as Ru, ko as zu, kr as Bu, ks as Vu, kt as Hu, ku as Uu, l as Wu, la as Gu, lc as Ku, ld as qu, lf as Ju, li as Yu, ll as Xu, ln as Zu, lo as Qu, lp as $u, lr as ed, ls as td, lt as nd, lu as rd, m as id, ma as ad, mc as od, md as sd, mf as cd, mi as ld, ml as ud, mn as dd, mo as fd, mr as pd, ms as md, mt as hd, mu as gd, n as _d, na as vd, nc as yd, nd as bd, nf as xd, ni as Sd, nl as Cd, nn as wd, no as Td, np as Ed, nr as Dd, ns as Od, nt as kd, nu as Ad, o as jd, oa as Md, oc as Nd, od as Pd, of as Fd, oi as Id, ol as Ld, on as Rd, oo as zd, op as Bd, or as Vd, os as Hd, ot as Ud, ou as Wd, p as Gd, pa as Kd, pc as qd, pd as Jd, pf as Yd, pi as Xd, pl as Zd, pn as Qd, po as $d, pr as ef, ps as tf, pt as nf, pu as rf, q as af, qa as of, qc as sf, qd as cf, qf as lf, qi as uf, ql as df, qn as ff, qo as pf, qr as mf, qs as hf, qt as gf, qu as _f, r as vf, ra as yf, rc as bf, rd as xf, rf as Sf, ri as Cf, rl as wf, rn as Tf, ro as Ef, rp as Df, rr as Of, rs as kf, rt as Af, ru as jf, s as Mf, sa as Nf, sc as Pf, sd as Ff, sf as If, si as Lf, sl as Rf, sn as zf, so as Bf, sp as Vf, sr as Hf, ss as Uf, st as Wf, su as Gf, t as Kf, ta as qf, tc as Jf, td as Yf, tf as Xf, ti as Zf, tl as Qf, tn as $f, to as ep, tp, tr as np, ts as rp, tt as ip, tu as ap, u as op, ua as sp, uc as cp, ud as lp, uf as up, ui as dp, ul as fp, un as pp, uo as mp, up as hp, ur as gp, us as _p, ut as vp, uu as yp, v as bp, va as xp, vc as Sp, vd as Cp, vf as wp, vi as Tp, vl as Ep, vn as Dp, vo as Op, vr as kp, vs as Ap, vt as jp, vu as Mp, w as Np, wa as Pp, wc as Fp, wd as Ip, wf as Lp, wi as Rp, wl as zp, wn as Bp, wo as Vp, wr as Hp, ws as Up, wt as Wp, wu as Gp, x as Kp, xa as qp, xc as Jp, xd as Yp, xf as Xp, xi as Zp, xl as Qp, xn as $p, xo as em, xr as tm, xs as nm, xt as rm, xu as im, y as am, ya as om, yc as sm, yd as cm, yf as lm, yi as um, yl as dm, yn as fm, yo as pm, yr as mm, ys as hm, yt as gm, yu as _m, z as vm, za as ym, zc as bm, zd as xm, zf as Sm, zi as Cm, zl as wm, zn as Tm, zo as Em, zr as Dm, zs as Om, zt as km, zu as Am } from "./components-2kTVPsMg.js";
|
|
8
8
|
import { a as jm, i as Mm } from "./field-blur-context-DPe5_Nv5.js";
|
|
9
9
|
import { i as Nm, n as Pm, r as Fm, t as Im } from "./hover-card-D_0smKBQ.js";
|
|
10
10
|
import { _ as Lm, a as Rm, c as zm, d as Bm, f as Vm, g as Hm, i as Um, l as Wm, o as Gm, p as Km, r as qm, s as Jm, t as Ym, u as Xm } from "./public-D8JGp3PH.js";
|
|
@@ -975,7 +975,7 @@ buttons.
|
|
|
975
975
|
|
|
976
976
|

|
|
977
977
|
|
|
978
|
-
The footer of a paged list: a "Showing N of M" line (a polite live region), the load button and, when the next page failed, an error alert whose "Try again" calls `onLoad`. The rows already shown stay on screen. It renders nothing when there is no next page.
|
|
978
|
+
The footer of a paged list: a "Showing N of M" line (a polite live region), the load button and, when the next page failed, an error alert whose "Try again" calls `onLoad`. The rows already shown stay on screen. It renders nothing when there is no next page. When the last page arrives it keeps the status line (so the final "Showing 85 of 85" is announced) and, if the button had the focus as it went away, takes the focus itself (the footer is `tabIndex={-1}`); a list that never had a next page renders nothing, and a list that restarts smaller (a new filter, `shown` or `total` dropping) drops the line. That is a heuristic: a restart at the same size or larger (a new query whose first page ends the list, `total` unknown) cannot be told from a real end, and `shown === 0` (a list being rebuilt) is ignored. Give a standalone footer a `key` that names the query (the search, filters and sort, not the page), `<LoadMoreFooter key={queryIdentity} … />`, so a new query starts it afresh; `ServerTable` does it for you.
|
|
979
979
|
|
|
980
980
|
```tsx
|
|
981
981
|
import { LoadMoreFooter } from '@nxgt/material/components';
|
|
@@ -994,7 +994,7 @@ import { LoadMoreFooter } from '@nxgt/material/components';
|
|
|
994
994
|
| --- | --- | --- | --- |
|
|
995
995
|
| `shown` | `number` | — | items shown now |
|
|
996
996
|
| `total` | `number` | — | items in all; leave it out when unknown, the line then reads "20 shown" |
|
|
997
|
-
| `hasMore` | `boolean` | — | `false` renders nothing, not even the count |
|
|
997
|
+
| `hasMore` | `boolean` | — | `false` renders nothing, not even the count, unless a next page existed before: the status line then stays after the last page (`showCount={false}` drops it) |
|
|
998
998
|
| `loading` | `boolean` | `false` | the button (or the retry) spins and ignores clicks |
|
|
999
999
|
| `failed` | `boolean` | `false` | an error alert with a tonal "Try again" replaces the button |
|
|
1000
1000
|
| `showCount` | `boolean` | `true` | `false` hides the "Showing N of M" line (keep it for a list whose header already announces the count in its own `role="status"`); the button and the failed alert stay |
|
|
@@ -1027,6 +1027,11 @@ Its props are `ServerTableProps<T>`; `filter` is a `ServerTableFilter`,
|
|
|
1027
1027
|
| `actions` | `ReactNode` | — | the page's actions, at the band's end |
|
|
1028
1028
|
| `bandDensity` | `'comfortable' \| 'compact'` | `'comfortable'` | (the same prop as [`Filter`](#a-compact-band-for-a-list-inside-a-page-section)'s bar) `'compact'` halves the room above the band (16px to 8px) and under it (12px to 6px), for a list under a sticky app bar and a breadcrumb; the controls keep their size (the Filter's own `density` is the controls') |
|
|
1029
1029
|
| `pageControls` | `'labelled' \| 'icon'` | `'labelled'` | the footer's Previous / Next: `'icon'` is icon-only, with a tooltip and the names "Previous page" / "Next page" (`DataTable`'s default is unchanged); on a coarse pointer the icon controls are 44x44 boxes (still painted 32px) |
|
|
1030
|
+
| `footer` | `'paging' \| 'load-more'` | `'paging'` | `'load-more'` replaces Previous / Next with [`LoadMoreFooter`](./feedback-and-status.md): "Showing N of M" (`rows.length` of `totalCount`), the load button while `pageInfo.hasNextPage`, a failed alert with a retry. The page keeps the rows loaded so far in `rows` and fetches the next itself: the cursor params are not used. The selection count stays; `hideOnSinglePage` still hides the footer |
|
|
1031
|
+
| `onLoadMore` | `() => void` | — | with `footer="load-more"` (required): fetches the next page and appends it to `rows`; the retry of a failed page calls it too |
|
|
1032
|
+
| `isLoadingMore` | `boolean` | `false` | with `footer="load-more"`: the next page is being fetched, the button spins and ignores clicks |
|
|
1033
|
+
| `loadMoreFailed` | `boolean` | `false` | with `footer="load-more"`: the next page failed, an alert with "Try again" replaces the button, the rows stay |
|
|
1034
|
+
| `loadMoreLabel` | `string` | "Load more" | with `footer="load-more"`: the button's label |
|
|
1030
1035
|
| `hideOnSinglePage` | `boolean` | `false` | hides the footer's range and Previous / Next when the result is one page (no previous, no next), in the table, cards and tiles layouts; the count is still announced by the live region but no longer shown, so put it in `description` or keep the footer. With `bulkActions` the footer stays for "N rows selected", without its pager |
|
|
1031
1036
|
| `bandActions` | `'stacked' \| 'inline'` | `'stacked'` | with `filter`, where `actions` sit below 768px: `'stacked'` gives them a row above the search; `'inline'` keeps them on the search's row (the search takes the room left), for a lone icon action such as a "+". An action wider than 3.5rem wraps under the search. From 768px both are the same. With a cards or tiles list on a phone, neither applies: [the two-row header](#the-phone-header-of-a-list-in-cards-or-tiles) puts the actions on its second row |
|
|
1032
1037
|
| `filterRef` | `Ref<ServerTableFilterHandle>` | — | with `filter`: `filterRef.current.focus()` focuses the Filter's first control, the search, else the first quick filter, "Add filter" or "Filters (N)" the width shows |
|
|
@@ -1830,6 +1835,97 @@ its lock only. The words are `material.filter.default.*`.
|
|
|
1830
1835
|
<ServerTable filter={{ model: EVENT_FILTERS, defaults: { mine: ['1'] } }} {...table} />
|
|
1831
1836
|
```
|
|
1832
1837
|
|
|
1838
|
+
#### Load more instead of paging
|
|
1839
|
+
|
|
1840
|
+
A catalogue or a history that grows keeps its rows and asks for the next page
|
|
1841
|
+
(`footer="load-more"`). The page owns the accumulated rows: any change of
|
|
1842
|
+
`params` (a search, a filter chip, a sort) is a new query, which **drops the
|
|
1843
|
+
rows, the failure and any request still in flight, and starts again with the
|
|
1844
|
+
first page**; `onLoadMore` **appends only the next page**.
|
|
1845
|
+
|
|
1846
|
+
```tsx
|
|
1847
|
+
function Quizzes() {
|
|
1848
|
+
const [params, setParams] = useSearchParams();
|
|
1849
|
+
const query = params.toString();
|
|
1850
|
+
const [rows, setRows] = useState<Quiz[]>([]);
|
|
1851
|
+
const [page, setPage] = useState({ cursor: null as string | null, hasNext: false, total: 0 });
|
|
1852
|
+
const [isLoadingMore, setLoadingMore] = useState(false);
|
|
1853
|
+
const [failed, setFailed] = useState(false);
|
|
1854
|
+
// Bumped by every new query: an answer of an older one is dropped.
|
|
1855
|
+
const generation = useRef(0);
|
|
1856
|
+
|
|
1857
|
+
useEffect(() => {
|
|
1858
|
+
const mine = ++generation.current;
|
|
1859
|
+
setRows([]); setFailed(false); setLoadingMore(false);
|
|
1860
|
+
fetchQuizzes(new URLSearchParams(query), null).then((first) => {
|
|
1861
|
+
if (mine !== generation.current) return;
|
|
1862
|
+
setRows(first.nodes);
|
|
1863
|
+
setPage({ cursor: first.endCursor, hasNext: first.hasNextPage, total: first.totalCount });
|
|
1864
|
+
});
|
|
1865
|
+
}, [query]);
|
|
1866
|
+
|
|
1867
|
+
const loadMore = async () => {
|
|
1868
|
+
const mine = generation.current;
|
|
1869
|
+
setFailed(false); setLoadingMore(true);
|
|
1870
|
+
try {
|
|
1871
|
+
const next = await fetchQuizzes(new URLSearchParams(query), page.cursor);
|
|
1872
|
+
if (mine !== generation.current) return; // the query changed meanwhile
|
|
1873
|
+
setRows((all) => [...all, ...next.nodes]); // only the next page
|
|
1874
|
+
setPage({ cursor: next.endCursor, hasNext: next.hasNextPage, total: next.totalCount });
|
|
1875
|
+
} catch {
|
|
1876
|
+
if (mine === generation.current) setFailed(true); // the rows stay, "Try again"
|
|
1877
|
+
} finally {
|
|
1878
|
+
if (mine === generation.current) setLoadingMore(false);
|
|
1879
|
+
}
|
|
1880
|
+
};
|
|
1881
|
+
|
|
1882
|
+
return (
|
|
1883
|
+
<ServerTable
|
|
1884
|
+
params={params} onParamsChange={setParams}
|
|
1885
|
+
rows={rows} totalCount={page.total} pageInfo={{ hasNextPage: page.hasNext }}
|
|
1886
|
+
pageSize={20} getRowId={(q) => q.id} columns={columns}
|
|
1887
|
+
filter={{ model: QUIZ_FILTERS }} // a chips-single field with inline: true
|
|
1888
|
+
empty={{ none: 'No quiz yet', noMatch: 'No quiz matches' }}
|
|
1889
|
+
footer="load-more" onLoadMore={loadMore}
|
|
1890
|
+
isLoadingMore={isLoadingMore} loadMoreFailed={failed}
|
|
1891
|
+
/>
|
|
1892
|
+
);
|
|
1893
|
+
}
|
|
1894
|
+
```
|
|
1895
|
+
|
|
1896
|
+
The footer is [`LoadMoreFooter`](./buttons-and-actions.md#loadmorefooter): once
|
|
1897
|
+
the last page is in, its status line stays ("Showing 42 of 42", announced) and,
|
|
1898
|
+
if the button had the focus as it went away, the footer takes it
|
|
1899
|
+
(`tabIndex={-1}`). `ServerTable` restarts the footer by itself whenever `params` change (the search, filters and sort, not a page), so a new query never keeps the old list's last line.
|
|
1900
|
+
`footer="load-more"` without `onLoadMore` warns in development.
|
|
1901
|
+
|
|
1902
|
+
#### An inline chip group
|
|
1903
|
+
|
|
1904
|
+
A `chips-single` or `chips-multiple` field declared `inline: true` shows its
|
|
1905
|
+
options as a chip group in the bar itself, at every width, instead of a quick
|
|
1906
|
+
pill that opens an editor. It suits a short list of choices that is the main
|
|
1907
|
+
way to narrow a list (the topics of a catalogue).
|
|
1908
|
+
|
|
1909
|
+
```ts
|
|
1910
|
+
{ id: 'topic', type: 'chips-single', label: 'Topic', options: TOPICS, inline: true }
|
|
1911
|
+
```
|
|
1912
|
+
|
|
1913
|
+
- **Pressing** a chip sets the condition in one query change (back on the
|
|
1914
|
+
first page); pressing the chosen chip of a single group clears it. A
|
|
1915
|
+
multiple group toggles each chip. The group is a `radiogroup` (or a `group`
|
|
1916
|
+
of checkboxes) named by the field's label.
|
|
1917
|
+
- **A plain filter.** It is counted, in the URL like any field, and cleared by
|
|
1918
|
+
"Clear all". It has no chip of its own (the group shows it) and is not in
|
|
1919
|
+
"Add filter" nor among the quick pills; the phone sheet still lists it.
|
|
1920
|
+
- **Rules.** `defineFilterModel` throws without `options`, with another type,
|
|
1921
|
+
with a `default`, with `scope` or with `addable: false`. A condition the
|
|
1922
|
+
group cannot draw (another operator, or a value that is not an
|
|
1923
|
+
option; the URL codec already drops both, so this guards a query written by
|
|
1924
|
+
code) keeps its normal chip with its ✕, so an active filter
|
|
1925
|
+
is never hidden; `inlineShows(field, condition)` is the rule.
|
|
1926
|
+
- **Core.** `isInline(field)`, `inlineShows(field, condition)`; `bandQuickFields` and the bar's `quickFields`
|
|
1927
|
+
list inline fields after the scope ones.
|
|
1928
|
+
|
|
1833
1929
|
#### A scope field
|
|
1834
1930
|
|
|
1835
1931
|
A list scoped by a value the user changes but never clears (the period or the
|
|
@@ -2453,7 +2453,9 @@ French bundle — see [i18n](../guides/i18n.md).
|
|
|
2453
2453
|
| `QuestionCard` `value` / `onValueChange` | `QuestionAnswer` | — | controlled answer |
|
|
2454
2454
|
| `Question` `kind: 'open'` | `maxLength?` | — | a multi-line answer in a textarea named by the prompt; a counter shows while editable when `maxLength` is set. No `correct`: pass the grader's `verdict` |
|
|
2455
2455
|
| `Question` `kind: 'code'` | `language?`, `maxLength?` | — | source code: drawn by `renderCode`, else a monospace textarea |
|
|
2456
|
-
| `QuestionCard` `renderCode` | `(field: QuestionCodeField) => ReactNode` | — | the code field of a `code` question; `field` is `{ value, onChange, label, labelledBy, language, maxLength, readOnly, disabled }`. Keeps Monaco out of the card's bundle |
|
|
2456
|
+
| `QuestionCard` `renderCode` | `(field: QuestionCodeField) => ReactNode` | — | the code field of a `code` question; `field` is `{ value, onChange, label, labelledBy, describedBy, language, maxLength, readOnly, disabled }`. Keeps Monaco out of the card's bundle |
|
|
2457
|
+
| `Question` `description` | `string` | — | `open`, `code`: a persistent helper line under the answer field ("A person will mark this answer"), linked to it by `aria-describedby` and passed to `renderCode` as `field.describedBy`; always shown, unlike `hint` (a reveal button). Its id is `${promptId}-description` |
|
|
2458
|
+
| `QuestionCard` `promptId` | `string` | generated | the id of the prompt text: point a wrapping section's `aria-labelledby` at it (and `aria-describedby` at `${promptId}-description`) |
|
|
2457
2459
|
| `QuestionCard` `readOnly` / `busy` | `boolean` | `false` | `readOnly`: an answer already submitted, shown without the revealed marks; `busy`: read-only and `aria-busy` while it is saved; every kind honours both |
|
|
2458
2460
|
| new strings | `material.education.kind-open`, `kind-code`, `code-placeholder` | — | English fallbacks and a French bundle |
|
|
2459
2461
|
| `QuestionCard` `variant` / `density` / `showShortcuts` / `number` / `showFeedback` | — | `'card'`, `'comfortable'`, `false`, —, `true` | framed or plain, spacing, key badges, "Question 2", the verdict banner |
|
package/docs/roadmap.md
CHANGED
|
@@ -241,6 +241,10 @@ version they shipped in, and planned entries may name the major they target.
|
|
|
241
241
|
slot; the bar's `views` slot is planned with it. They are meant to replace
|
|
242
242
|
the legacy `FilterPresets`. Tracked in [#1876](https://github.com/softistx/nxgt-material/issues/1876).
|
|
243
243
|
|
|
244
|
+
- **Link navigation** — `TabsNav` and `SegmentedNav` render route tabs and segmented navigation as a `nav` of links with `aria-current="page"`, looking like Tabs and the segmented ToggleGroup, plus `useTabParam` to keep the current tab in the URL.
|
|
245
|
+
- **RecordActionsMenu** — one menu for a record's lifecycle: archive with an Undo toast (or confirm first with `archivePolicy="confirm"`), restore, and delete that always confirms and shows the backend's refusal, with `ConfirmDialog` gaining `details` and `refusal` slots.
|
|
246
|
+
- **Cursor trail cap** — `ServerTable` and `PageFooter` keep cursor URLs short: the trail is encoded once and capped by `maxTrail` (20 by default) with an exact page count, and `totalCount` becomes optional for APIs that do not count.
|
|
247
|
+
|
|
244
248
|
## Later
|
|
245
249
|
|
|
246
250
|
- **A strict theme `motif` (4.0)** — a theme background's `motif` with an
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nxgt/material",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.64.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"bugs": {
|
|
6
6
|
"email": "stevegires@gmail.com"
|
|
@@ -372,7 +372,7 @@
|
|
|
372
372
|
"docs:previews": "rm -rf node_modules/.cache/nxgt-preview-free/missing && NXGT_PREVIEW_FREE=1 vitest run --project previews && bun .storybook/preview-free-report.ts"
|
|
373
373
|
},
|
|
374
374
|
"dependencies": {
|
|
375
|
-
"@nxgt/material-core": "^0.
|
|
375
|
+
"@nxgt/material-core": "^0.45.0",
|
|
376
376
|
"@base-ui/react": "^1.6.0",
|
|
377
377
|
"@dnd-kit/core": "^6.3.1",
|
|
378
378
|
"@dnd-kit/sortable": "^10.0.0",
|