@commercelayer/app-elements 1.17.2 → 1.17.3
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/dist/{InputDateComponent-DocNjnnQ.js → InputDateComponent-BYd2cPuD.js} +1 -1
- package/dist/{main-bvrBIWhO.js → main-qlfa6IYj.js} +7853 -7332
- package/dist/main.js +1 -1
- package/dist/ui/resources/ResourceList/ResourceList.d.ts +13 -1
- package/dist/ui/resources/ResourceList/infiniteFetcher.d.ts +12 -4
- package/dist/ui/resources/ResourceList/metricsApiClient.d.ts +21 -0
- package/dist/ui/resources/useResourceFilters/adaptSdkToMetrics.d.ts +32 -0
- package/dist/ui/resources/useResourceFilters/adaptSdkToMetrics.test.d.ts +1 -0
- package/dist/ui/resources/useResourceFilters/adapters.types.d.ts +2 -0
- package/dist/ui/resources/useResourceFilters/useResourceFilters.d.ts +2 -1
- package/package.json +3 -1
package/dist/main.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { a4 as s, aK as t, a5 as o, a6 as r, a7 as n, a8 as u, a9 as i, aa as l, ab as p, ac as b, ad as c, aL as d, ae as g, af as S, V as m, aM as I, aN as k, aO as T, aP as D, ag as R, Z as y, _ as h, ah as C, ai as H, aQ as P, b0 as A, b1 as f, b3 as B, b5 as F, b7 as v, bb as L, bd as N, bi as O, bl as G, bn as w, bu as V, bw as x, by as E, bA as M, bC as W, bG as J, bH as U, aj as Y, ak as q, b2 as z, b4 as K, b6 as Q, b8 as Z, ba as _, bc as $, be as j, bf as X, bg as aa, bh as ea, bj as sa, bk as ta, bm as oa, bo as ra, bv as na, bx as ua, bz as ia, bB as la, bD as pa, bE as ba, bF as ca, aR as da, aS as ga, aT as Sa, aU as ma, a0 as Ia, aV as ka, al as Ta, aW as Da, aX as Ra, am as ya, an as ha, ao as Ca, ap as Ha, aY as Pa, bK as Aa, bL as fa, bM as Ba, bN as Fa, bO as va, bP as La, bQ as Na, bR as Oa, aq as Ga, aZ as wa, ar as Va, as as xa, at as Ea, au as Ma, aw as Wa, ax as Ja, ay as Ua, az as Ya, aA as qa, aF as za, aB as Ka, a_ as Qa, aG as Za, aH as _a, aC as $a, aI as ja, aD as Xa, a$ as ae, a1 as ee, aJ as se, aE as te, B as oe, a3 as re, E as ne, F as ue, k as ie, A as le, bp as pe, b9 as be, l as ce, m as de, q as ge, C as Se, D as me, G as Ie, bT as ke, bU as Te, bq as De, s as Re, t as ye, u as he, v as Ce, bV as He, bW as Pe, bX as Ae, bY as fe, bZ as Be, H as Fe, J as ve, b_ as Le, b$ as Ne, c0 as Oe, c1 as Ge, K as we, L as Ve, c2 as xe, c3 as Ee, c4 as Me, O as We, P as Je, e as Ue, M as Ye, N as qe, h as ze, br as Ke, bs as Qe, bt as Ze, n as _e, r as $e, x as je, bI as Xe, y as as, z as es, Q as ss, W as ts, Y as os, R as rs, S as ns, T as us, U as is, bS as ls, $ as ps, a2 as bs, bJ as cs, av as ds } from "./main-
|
|
2
|
+
import { a4 as s, aK as t, a5 as o, a6 as r, a7 as n, a8 as u, a9 as i, aa as l, ab as p, ac as b, ad as c, aL as d, ae as g, af as S, V as m, aM as I, aN as k, aO as T, aP as D, ag as R, Z as y, _ as h, ah as C, ai as H, aQ as P, b0 as A, b1 as f, b3 as B, b5 as F, b7 as v, bb as L, bd as N, bi as O, bl as G, bn as w, bu as V, bw as x, by as E, bA as M, bC as W, bG as J, bH as U, aj as Y, ak as q, b2 as z, b4 as K, b6 as Q, b8 as Z, ba as _, bc as $, be as j, bf as X, bg as aa, bh as ea, bj as sa, bk as ta, bm as oa, bo as ra, bv as na, bx as ua, bz as ia, bB as la, bD as pa, bE as ba, bF as ca, aR as da, aS as ga, aT as Sa, aU as ma, a0 as Ia, aV as ka, al as Ta, aW as Da, aX as Ra, am as ya, an as ha, ao as Ca, ap as Ha, aY as Pa, bK as Aa, bL as fa, bM as Ba, bN as Fa, bO as va, bP as La, bQ as Na, bR as Oa, aq as Ga, aZ as wa, ar as Va, as as xa, at as Ea, au as Ma, aw as Wa, ax as Ja, ay as Ua, az as Ya, aA as qa, aF as za, aB as Ka, a_ as Qa, aG as Za, aH as _a, aC as $a, aI as ja, aD as Xa, a$ as ae, a1 as ee, aJ as se, aE as te, B as oe, a3 as re, E as ne, F as ue, k as ie, A as le, bp as pe, b9 as be, l as ce, m as de, q as ge, C as Se, D as me, G as Ie, bT as ke, bU as Te, bq as De, s as Re, t as ye, u as he, v as Ce, bV as He, bW as Pe, bX as Ae, bY as fe, bZ as Be, H as Fe, J as ve, b_ as Le, b$ as Ne, c0 as Oe, c1 as Ge, K as we, L as Ve, c2 as xe, c3 as Ee, c4 as Me, O as We, P as Je, e as Ue, M as Ye, N as qe, h as ze, br as Ke, bs as Qe, bt as Ze, n as _e, r as $e, x as je, bI as Xe, y as as, z as es, Q as ss, W as ts, Y as os, R as rs, S as ns, T as us, U as is, bS as ls, $ as ps, a2 as bs, bJ as cs, av as ds } from "./main-qlfa6IYj.js";
|
|
3
3
|
export {
|
|
4
4
|
s as A,
|
|
5
5
|
t as ActionButtons,
|
|
@@ -34,6 +34,18 @@ export type ResourceListProps<TResource extends ListableResourceType> = Pick<Sec
|
|
|
34
34
|
* SDK query object to be used to fetch the list, excluding the pageNumber that is handled internally for infinite scrolling.
|
|
35
35
|
*/
|
|
36
36
|
query?: Omit<QueryParamsList, 'pageNumber'>;
|
|
37
|
+
/**
|
|
38
|
+
* When set the component will fetch data from the Metrics API, and automatically use the returned cursor for infinite scrolling.
|
|
39
|
+
*/
|
|
40
|
+
metricsQuery?: {
|
|
41
|
+
search: {
|
|
42
|
+
limit?: number;
|
|
43
|
+
sort?: 'asc' | 'desc';
|
|
44
|
+
sort_by?: string;
|
|
45
|
+
fields?: string[];
|
|
46
|
+
};
|
|
47
|
+
filter: Record<string, unknown>;
|
|
48
|
+
};
|
|
37
49
|
/**
|
|
38
50
|
* An element to be rendered when the list is empty.
|
|
39
51
|
*/
|
|
@@ -58,7 +70,7 @@ export type ResourceListProps<TResource extends ListableResourceType> = Pick<Sec
|
|
|
58
70
|
* It's possible to specify a query to filter the list and either
|
|
59
71
|
* a React component (`ItemTemplate`) to be used as item template for the list or a function as `children` to render a custom element.
|
|
60
72
|
*/
|
|
61
|
-
export declare function ResourceList<TResource extends ListableResourceType>({ type, query, title, actionButton, emptyState, ...props }: ResourceListProps<TResource>): JSX.Element;
|
|
73
|
+
export declare function ResourceList<TResource extends ListableResourceType>({ type, query, title, actionButton, emptyState, metricsQuery, ...props }: ResourceListProps<TResource>): JSX.Element;
|
|
62
74
|
export declare namespace ResourceList {
|
|
63
75
|
var displayName: string;
|
|
64
76
|
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type MetricsApiClient } from './metricsApiClient';
|
|
1
2
|
import type { CommerceLayerClient, QueryParamsList } from '@commercelayer/sdk';
|
|
2
3
|
import { type ListableResourceType } from '@commercelayer/sdk/lib/cjs/api';
|
|
3
4
|
type ListResource<TResource extends ListableResourceType> = Awaited<ReturnType<CommerceLayerClient[TResource]['list']>>;
|
|
@@ -9,12 +10,19 @@ export interface FetcherResponse<TResource> {
|
|
|
9
10
|
recordCount: number;
|
|
10
11
|
currentPage: number;
|
|
11
12
|
recordsPerPage: number;
|
|
13
|
+
cursor?: string | null;
|
|
12
14
|
};
|
|
13
15
|
}
|
|
14
|
-
export declare function infiniteFetcher<TResource extends ListableResourceType>({
|
|
15
|
-
sdkClient: CommerceLayerClient;
|
|
16
|
-
query?: Omit<QueryParamsList, 'pageNumber'>;
|
|
16
|
+
export declare function infiniteFetcher<TResource extends ListableResourceType>({ currentData, resourceType, client, clientType, query }: {
|
|
17
17
|
currentData?: FetcherResponse<Resource<TResource>>;
|
|
18
18
|
resourceType: TResource;
|
|
19
|
-
}
|
|
19
|
+
} & ({
|
|
20
|
+
client: CommerceLayerClient;
|
|
21
|
+
clientType: 'coreSdkClient';
|
|
22
|
+
query?: Omit<QueryParamsList, 'pageNumber'>;
|
|
23
|
+
} | {
|
|
24
|
+
client: MetricsApiClient;
|
|
25
|
+
clientType: 'metricsClient';
|
|
26
|
+
query: Record<string, Record<string, unknown>>;
|
|
27
|
+
})): Promise<FetcherResponse<Resource<TResource>>>;
|
|
20
28
|
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type Resource } from './infiniteFetcher';
|
|
2
|
+
import { type ListableResourceType } from '@commercelayer/sdk/lib/cjs/api';
|
|
3
|
+
import { type ListMeta, type ListResponse } from '@commercelayer/sdk/lib/cjs/resource';
|
|
4
|
+
import { type Writable } from 'type-fest';
|
|
5
|
+
export type MetricsResources = 'orders' | 'returns';
|
|
6
|
+
type ListResponseWithoutMeta<ResourceType extends MetricsResources> = Omit<ListResponse<Resource<ResourceType>>, 'meta'>;
|
|
7
|
+
type ListMetaWithCursor = Writable<ListMeta> & {
|
|
8
|
+
cursor: string | null;
|
|
9
|
+
};
|
|
10
|
+
type ListResponseMetrics<ResourceType extends MetricsResources> = ListResponseWithoutMeta<ResourceType> & {
|
|
11
|
+
meta: ListMetaWithCursor;
|
|
12
|
+
};
|
|
13
|
+
type MetricsList = <Resource extends MetricsResources>(resourceType: Resource, query: Record<string, unknown>) => Promise<ListResponseMetrics<Resource>>;
|
|
14
|
+
export interface MetricsApiClient {
|
|
15
|
+
list: MetricsList;
|
|
16
|
+
}
|
|
17
|
+
export declare function useMetricsSdkProvider(): {
|
|
18
|
+
metricsClient: MetricsApiClient;
|
|
19
|
+
};
|
|
20
|
+
export declare function isValidMetricsResource(resourceType: ListableResourceType): resourceType is MetricsResources;
|
|
21
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type FiltersInstructions } from './types';
|
|
2
|
+
import { type ListableResourceType } from '@commercelayer/sdk/lib/cjs/api';
|
|
3
|
+
import { type QueryFilter } from '@commercelayer/sdk/lib/cjs/query';
|
|
4
|
+
export type CoreResourceEnabledInMetrics = 'orders' | 'returns';
|
|
5
|
+
type MetricsResource = 'order' | 'return';
|
|
6
|
+
/** Record of core api filter operators with relative metrics operator */
|
|
7
|
+
declare const metricsFiltersMapping: {
|
|
8
|
+
readonly _eq: "eq";
|
|
9
|
+
readonly _not_eq: "ne";
|
|
10
|
+
readonly _lt: "lt";
|
|
11
|
+
readonly _lteq: "lte";
|
|
12
|
+
readonly _gt: "gt";
|
|
13
|
+
readonly _gteq: "gte";
|
|
14
|
+
readonly _in: "in";
|
|
15
|
+
readonly _not_in: "not_in";
|
|
16
|
+
};
|
|
17
|
+
type CoreFilterOperator = keyof typeof metricsFiltersMapping;
|
|
18
|
+
type MetricsFilterOperator = (typeof metricsFiltersMapping)[CoreFilterOperator];
|
|
19
|
+
type MetricsAttribute = string;
|
|
20
|
+
export type MetricsFilters = Partial<Record<MetricsResource, Record<MetricsAttribute, Partial<Record<MetricsFilterOperator, string | string[] | boolean>>> & {
|
|
21
|
+
date_from: string;
|
|
22
|
+
date_to: string;
|
|
23
|
+
date_field: string;
|
|
24
|
+
}>>;
|
|
25
|
+
export interface AdaptSdkToMetricsParams {
|
|
26
|
+
sdkFilters: QueryFilter;
|
|
27
|
+
resourceType: ListableResourceType;
|
|
28
|
+
instructions: FiltersInstructions;
|
|
29
|
+
predicateWhitelist?: string[];
|
|
30
|
+
}
|
|
31
|
+
export declare function adaptSdkToMetrics({ sdkFilters, resourceType, instructions, predicateWhitelist }: AdaptSdkToMetricsParams): MetricsFilters;
|
|
32
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type AdaptSdkToMetricsParams, type MetricsFilters } from './adaptSdkToMetrics';
|
|
1
2
|
import { type QueryFilter } from '@commercelayer/sdk/lib/cjs/query';
|
|
2
3
|
import { type AdaptFormValuesToSdkParams } from './adaptFormValuesToSdk';
|
|
3
4
|
import { type AdaptFormValuesToUrlQueryParams } from './adaptFormValuesToUrlQuery';
|
|
@@ -15,6 +16,7 @@ interface MakeFilterAdaptersReturn<FilterFormValues extends FormFullValues> {
|
|
|
15
16
|
adaptUrlQueryToFormValues: (params: Pick<AdaptUrlQueryToFormValuesParams, 'queryString'>) => FilterFormValues & TimeRangeFormValues & PageInfoFormValues;
|
|
16
17
|
adaptUrlQueryToSdk: (params: Pick<AdaptUrlQueryToSdkParams, 'queryString' | 'timezone'>) => QueryFilter;
|
|
17
18
|
adaptUrlQueryToUrlQuery: (params: Pick<AdaptUrlQueryToUrlQueryParams, 'queryString'>) => string;
|
|
19
|
+
adaptSdkToMetrics: (params: Pick<AdaptSdkToMetricsParams, 'sdkFilters' | 'resourceType'>) => MetricsFilters;
|
|
18
20
|
validInstructions: FiltersInstructions;
|
|
19
21
|
}
|
|
20
22
|
export type MakeFiltersAdapters = <FilterFormValues extends Record<UiFilterName, UiFilterValue>>({ instructions, predicateWhitelist }: MakeFilterAdaptersParams) => MakeFilterAdaptersReturn<FilterFormValues>;
|
|
@@ -60,7 +60,8 @@ interface UseResourceFiltersHook {
|
|
|
60
60
|
* Filtered ResourceList component based on current active filters
|
|
61
61
|
*/
|
|
62
62
|
FilteredList: <TResource extends ListableResourceType>(props: Pick<ResourceListProps<TResource>, 'type' | 'emptyState' | 'actionButton'> & ResourceListItemTemplate<TResource> & {
|
|
63
|
-
query?: Omit<NonNullable<ResourceListProps<TResource>['query']>, 'filters'
|
|
63
|
+
query?: Omit<NonNullable<ResourceListProps<TResource>['query']>, 'filters'>;
|
|
64
|
+
metricsQuery?: Omit<NonNullable<ResourceListProps<TResource>['metricsQuery']>, 'filter'> & {
|
|
64
65
|
/** Filters need to be configured within the `useResourceFilters` options. */
|
|
65
66
|
filters?: never;
|
|
66
67
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercelayer/app-elements",
|
|
3
|
-
"version": "1.17.
|
|
3
|
+
"version": "1.17.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"files": [
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"classnames": "^2.5.1",
|
|
36
36
|
"jwt-decode": "^4.0.0",
|
|
37
37
|
"lodash": "^4.17.21",
|
|
38
|
+
"pluralize": "^8.0.0",
|
|
38
39
|
"query-string": "^8.2.0",
|
|
39
40
|
"react": "^18.2.0",
|
|
40
41
|
"react-currency-input-field": "^3.7.0",
|
|
@@ -56,6 +57,7 @@
|
|
|
56
57
|
"@testing-library/jest-dom": "^6.4.2",
|
|
57
58
|
"@testing-library/react": "^14.2.1",
|
|
58
59
|
"@types/node": "^20.11.19",
|
|
60
|
+
"@types/pluralize": "^0.0.33",
|
|
59
61
|
"@types/react-gtm-module": "^2.0.3",
|
|
60
62
|
"@types/testing-library__jest-dom": "^5.14.9",
|
|
61
63
|
"@vitejs/plugin-react": "^4.2.1",
|