@webority/ui-react 0.22.0 → 0.23.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.
Files changed (60) hide show
  1. package/dist/{iconVariants.g-p_LLiCjc.js → iconVariants.g-9RHllJhB.js} +40 -0
  2. package/dist/{m.g-DHfWAuFM.js → m.g-C00S90UO.js} +0 -1
  3. package/dist/{m.g-DsABjbbj.js → m.g-CKm5SWCa.js} +0 -1
  4. package/dist/{m.g-BYDi0FFN.js → m.g-Ct5bYwgR.js} +0 -1
  5. package/dist/{m.g-ZtFTprlG.js → m.g-DO4YjrrH.js} +0 -1
  6. package/dist/{m.g-CiZKbenr.js → m.g-bB77ufTr.js} +0 -1
  7. package/dist/{m.g-DpKFuR2n.js → m.g-w2XDw2B7.js} +0 -1
  8. package/dist/{p.g-DCtypCgf.js → p.g-B9D5LM7A.js} +0 -3
  9. package/dist/{p.g-BunpGNc7.js → p.g-BZuYckSt.js} +0 -3
  10. package/dist/{p.g-3K0volP1.js → p.g-CcU7IIJg.js} +0 -3
  11. package/dist/{p.g-Cba88APZ.js → p.g-CyvwuJ3g.js} +0 -3
  12. package/dist/{p.g-DuEcJxQu.js → p.g-UmU4YOfh.js} +0 -3
  13. package/dist/{p.g-BAXD0-6a.js → p.g-j2HBfXwg.js} +0 -3
  14. package/dist/{s.g-B0HQFzWi.js → s.g-7mcSsXJC.js} +0 -1
  15. package/dist/{s.g-McVKtdTC.js → s.g-B5pKx8ht.js} +0 -1
  16. package/dist/{s.g-UqAnlL5G.js → s.g-BjrgMYYV.js} +0 -1
  17. package/dist/{s.g-CZfCRK16.js → s.g-CgoPHont.js} +0 -1
  18. package/dist/{s.g-C990q-Eu.js → s.g-Cogd4fxO.js} +0 -1
  19. package/dist/{s.g-aXYsVwWK.js → s.g-lQ8_30mA.js} +0 -1
  20. package/dist/types/components/AppFileViewer.d.ts +48 -0
  21. package/dist/types/components/AppFilterBar.d.ts +40 -0
  22. package/dist/types/components/AppSearch.d.ts +2 -4
  23. package/dist/types/components/AppSidebarMenu.d.ts +2 -1
  24. package/dist/types/components/iconCatalogFull/bold/m.g.d.ts +0 -1
  25. package/dist/types/components/iconCatalogFull/bold/p.g.d.ts +0 -3
  26. package/dist/types/components/iconCatalogFull/bold/s.g.d.ts +0 -1
  27. package/dist/types/components/iconCatalogFull/bold/v.g.d.ts +0 -2
  28. package/dist/types/components/iconCatalogFull/broken/m.g.d.ts +0 -1
  29. package/dist/types/components/iconCatalogFull/broken/p.g.d.ts +0 -3
  30. package/dist/types/components/iconCatalogFull/broken/s.g.d.ts +0 -1
  31. package/dist/types/components/iconCatalogFull/broken/v.g.d.ts +0 -2
  32. package/dist/types/components/iconCatalogFull/bulk/m.g.d.ts +0 -1
  33. package/dist/types/components/iconCatalogFull/bulk/p.g.d.ts +0 -3
  34. package/dist/types/components/iconCatalogFull/bulk/s.g.d.ts +0 -1
  35. package/dist/types/components/iconCatalogFull/bulk/v.g.d.ts +0 -2
  36. package/dist/types/components/iconCatalogFull/linear/m.g.d.ts +0 -1
  37. package/dist/types/components/iconCatalogFull/linear/p.g.d.ts +0 -3
  38. package/dist/types/components/iconCatalogFull/linear/s.g.d.ts +0 -1
  39. package/dist/types/components/iconCatalogFull/linear/v.g.d.ts +0 -2
  40. package/dist/types/components/iconCatalogFull/outline/m.g.d.ts +0 -1
  41. package/dist/types/components/iconCatalogFull/outline/p.g.d.ts +0 -3
  42. package/dist/types/components/iconCatalogFull/outline/s.g.d.ts +0 -1
  43. package/dist/types/components/iconCatalogFull/outline/v.g.d.ts +0 -2
  44. package/dist/types/components/iconCatalogFull/twotone/m.g.d.ts +0 -1
  45. package/dist/types/components/iconCatalogFull/twotone/p.g.d.ts +0 -3
  46. package/dist/types/components/iconCatalogFull/twotone/s.g.d.ts +0 -1
  47. package/dist/types/components/iconCatalogFull/twotone/v.g.d.ts +0 -2
  48. package/dist/types/components/iconGlyphs.g.d.ts +8 -0
  49. package/dist/types/components/iconVariants.g.d.ts +40 -0
  50. package/dist/types/index.d.ts +4 -0
  51. package/dist/types/lib/listQuery.d.ts +69 -0
  52. package/dist/types/lib/useListQuery.d.ts +96 -0
  53. package/dist/ui-react.js +1466 -1134
  54. package/dist/{v.g-LSrGvmet.js → v.g-BA-3saLU.js} +0 -2
  55. package/dist/{v.g-8HuxnCvA.js → v.g-CGs8SFES.js} +0 -2
  56. package/dist/{v.g-D4qP1UQ0.js → v.g-CJYXr9qr.js} +0 -2
  57. package/dist/{v.g-CzNAKYiA.js → v.g-Cwhetxcd.js} +0 -2
  58. package/dist/{v.g-DAps4jis.js → v.g-DKQG7wGs.js} +0 -2
  59. package/dist/{v.g-Dp7-z14F.js → v.g-rfXV1KJa.js} +0 -2
  60. package/package.json +5 -5
@@ -0,0 +1,69 @@
1
+ export declare const RESERVED_LIST_QUERY_KEYS: string[];
2
+ /**
3
+ * Builds the flat query string for one page of a list.
4
+ *
5
+ * A filter value is a scalar, an array (one param per item) or a date range `{ from, to }`
6
+ * (written as `<name>From` / `<name>To`). Empty values are left out. A `Date` is written as
7
+ * yyyy-MM-dd.
8
+ *
9
+ * @param {object} [query]
10
+ * @param {number} [query.page] 1-based.
11
+ * @param {number} [query.pageSize]
12
+ * @param {string} [query.sortBy]
13
+ * @param {'asc'|'desc'} [query.sortOrder='asc'] Written only with `sortBy`.
14
+ * @param {Record<string, string|number|boolean|Date|Array<string|number|boolean|Date>|{ from?: string|Date, to?: string|Date }>} [query.filters]
15
+ * @returns {URLSearchParams}
16
+ * @throws {Error} When a filter is named page, pageSize, sortBy or sortOrder, or `sortOrder` is not asc or desc.
17
+ */
18
+ export declare function buildListQuery({ page, pageSize, sortBy, sortOrder, filters }?: {
19
+ page?: number;
20
+ pageSize?: number;
21
+ sortBy?: string;
22
+ sortOrder?: 'asc' | 'desc';
23
+ filters?: Record<string, string | number | boolean | Date | Array<string | number | boolean | Date> | {
24
+ from?: string | Date;
25
+ to?: string | Date;
26
+ }>;
27
+ }): URLSearchParams;
28
+ /** The empty value of a facet: "" (enum, text), [] (multiEnum) or { from: "", to: "" } (dateRange). */
29
+ export declare function emptyFacetValue(facet: any): "" | any[] | {
30
+ from: string;
31
+ to: string;
32
+ };
33
+ /** True when a facet's value narrows the list. */
34
+ export declare function isFacetActive(facet: any, value: any): boolean;
35
+ /** Every query param name a list owns: the reserved four plus each facet's own (`<key>From`/`<key>To` for a date range). */
36
+ export declare function listQueryParamNames(facets?: any[]): Set<string>;
37
+ /**
38
+ * Reads a list query back out of the URL's search params: the inverse of `buildListQuery`.
39
+ * Anything missing or invalid falls back to `defaults`. Every facet gets a value, empty when the
40
+ * URL has none, so the result is always safe to render.
41
+ *
42
+ * `defaults.filters` apply only when the URL carries no list param at all (the first landing on
43
+ * the page). After that the URL is the truth, so clearing a filter that has a default stays cleared.
44
+ *
45
+ * @param {URLSearchParams|string} searchParams
46
+ * @param {object} [options]
47
+ * @param {{ key: string, type: 'enum'|'multiEnum'|'dateRange'|'text' }[]} [options.facets]
48
+ * @param {{ page?: number, pageSize?: number, sortBy?: string, sortOrder?: 'asc'|'desc', filters?: object }} [options.defaults]
49
+ * @returns {{ page: number, pageSize: number, sortBy: string|undefined, sortOrder: 'asc'|'desc', filters: object }}
50
+ */
51
+ export declare function parseListQuery(searchParams: URLSearchParams | string, { facets, defaults }?: {
52
+ facets?: {
53
+ key: string;
54
+ type: 'enum' | 'multiEnum' | 'dateRange' | 'text';
55
+ }[];
56
+ defaults?: {
57
+ page?: number;
58
+ pageSize?: number;
59
+ sortBy?: string;
60
+ sortOrder?: 'asc' | 'desc';
61
+ filters?: object;
62
+ };
63
+ }): {
64
+ page: number;
65
+ pageSize: number;
66
+ sortBy: string | undefined;
67
+ sortOrder: 'asc' | 'desc';
68
+ filters: object;
69
+ };
@@ -0,0 +1,96 @@
1
+ /**
2
+ * One server-paged list: its query lives in the URL, every change refetches, and the result
3
+ * maps straight onto `AppDataTable`, `AppTablePagination` and `AppFilterBar`.
4
+ *
5
+ * The URL holds the flat list query (`?page=2&pageSize=25&sortBy=dueDate&sortOrder=desc&status=Open`,
6
+ * see `buildListQuery`), written with `history.replaceState` and read back on first render and on
7
+ * back/forward, so a list reloads, bookmarks and shares as it was. Other params in the URL are kept.
8
+ * No router is needed.
9
+ *
10
+ * A filter or sort change goes back to page 1, and a new request aborts the one still in flight.
11
+ * Typing in a `text` facet refetches after `debounceMs`; every other change refetches at once.
12
+ *
13
+ * @param {object} options
14
+ * @param {(query: { page: number, pageSize: number, sortBy?: string, sortOrder: 'asc'|'desc', filters: object },
15
+ * options: { signal: AbortSignal }) => Promise<{ items: object[], page: number, pageSize: number, totalCount: number, totalPages: number }>} options.fetchPage
16
+ * Fetches one page. Pass `query` to `buildListQuery` for the request's query string and `signal` to the HTTP client.
17
+ * @param {{ key: string, label: string, type: 'enum'|'multiEnum'|'dateRange'|'text', options?: { value: string, label: string }[] }[]} [options.facets]
18
+ * The filters, the same list `AppFilterBar` takes. Keep it stable across renders.
19
+ * @param {{ page?: number, pageSize?: number, sortBy?: string, sortOrder?: 'asc'|'desc', filters?: object }} [options.defaults]
20
+ * Where a list starts when the URL says nothing. Keep it stable across renders.
21
+ * @param {number} [options.debounceMs=250] Wait before refetching while the user types in a `text` facet.
22
+ * @returns {{
23
+ * query: { page: number, pageSize: number, sortBy?: string, sortOrder: 'asc'|'desc', filters: object },
24
+ * rows: object[],
25
+ * loading: boolean,
26
+ * error: unknown,
27
+ * totalCount: number,
28
+ * totalPages: number,
29
+ * setFilter: (key: string, value: string|string[]|{ from: string, to: string }) => void,
30
+ * setSort: (sortBy: string, sortOrder?: 'asc'|'desc') => void,
31
+ * setPage: (page: number) => void,
32
+ * setPageSize: (pageSize: number) => void,
33
+ * reset: () => void,
34
+ * tableProps: object,
35
+ * paginationProps: object,
36
+ * }} `setSort` without `sortOrder` flips the order on the column already sorted and starts a new
37
+ * column ascending. `tableProps` spreads onto `AppDataTable` (`rows`, `sort`, `onSort`, `loading`, and
38
+ * the filtered-empty message while a filter is active); `paginationProps` spreads onto `AppTablePagination`.
39
+ */
40
+ export declare function useListQuery({ fetchPage, facets, defaults, debounceMs }: {
41
+ fetchPage: (query: {
42
+ page: number;
43
+ pageSize: number;
44
+ sortBy?: string;
45
+ sortOrder: 'asc' | 'desc';
46
+ filters: object;
47
+ }, options: {
48
+ signal: AbortSignal;
49
+ }) => Promise<{
50
+ items: object[];
51
+ page: number;
52
+ pageSize: number;
53
+ totalCount: number;
54
+ totalPages: number;
55
+ }>;
56
+ facets?: {
57
+ key: string;
58
+ label: string;
59
+ type: 'enum' | 'multiEnum' | 'dateRange' | 'text';
60
+ options?: {
61
+ value: string;
62
+ label: string;
63
+ }[];
64
+ }[];
65
+ defaults?: {
66
+ page?: number;
67
+ pageSize?: number;
68
+ sortBy?: string;
69
+ sortOrder?: 'asc' | 'desc';
70
+ filters?: object;
71
+ };
72
+ debounceMs?: number;
73
+ }): {
74
+ query: {
75
+ page: number;
76
+ pageSize: number;
77
+ sortBy?: string;
78
+ sortOrder: 'asc' | 'desc';
79
+ filters: object;
80
+ };
81
+ rows: object[];
82
+ loading: boolean;
83
+ error: unknown;
84
+ totalCount: number;
85
+ totalPages: number;
86
+ setFilter: (key: string, value: string | string[] | {
87
+ from: string;
88
+ to: string;
89
+ }) => void;
90
+ setSort: (sortBy: string, sortOrder?: 'asc' | 'desc') => void;
91
+ setPage: (page: number) => void;
92
+ setPageSize: (pageSize: number) => void;
93
+ reset: () => void;
94
+ tableProps: object;
95
+ paginationProps: object;
96
+ };