@empathyco/x-components 6.0.0-alpha.180 → 6.0.0-alpha.182
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 +16 -0
- package/docs/API-reference/api/x-adapter-platform.facetsendpointadapter.md +13 -0
- package/docs/API-reference/api/x-adapter-platform.facetsrequestschema.md +13 -0
- package/docs/API-reference/api/x-adapter-platform.facetsresponsemapper.md +13 -0
- package/docs/API-reference/api/x-adapter-platform.md +5 -0
- package/docs/API-reference/api/x-adapter-platform.platformfacetsrequest.md +15 -0
- package/docs/API-reference/api/x-adapter-platform.platformfacetsresponse.catalog.md +13 -0
- package/docs/API-reference/api/x-adapter-platform.platformfacetsresponse.md +20 -0
- package/docs/API-reference/api/x-components.applyhierarchicalselection.md +25 -0
- package/docs/API-reference/api/x-components.facetsactions.cancelfetchandsavefacetsresponse.md +13 -0
- package/docs/API-reference/api/x-components.facetsactions.fetchandsavefacetsresponse.md +13 -0
- package/docs/API-reference/api/x-components.facetsactions.fetchfacetsresponse.md +13 -0
- package/docs/API-reference/api/x-components.facetsactions.md +10 -0
- package/docs/API-reference/api/x-components.facetsactions.saveorigin.md +13 -0
- package/docs/API-reference/api/x-components.facetsgetters.md +1 -0
- package/docs/API-reference/api/x-components.facetsgetters.request.md +13 -0
- package/docs/API-reference/api/x-components.facetsmutations.md +4 -2
- package/docs/API-reference/api/x-components.facetsmutations.setorigin.md +13 -0
- package/docs/API-reference/api/x-components.facetsmutations.setparams.md +13 -0
- package/docs/API-reference/api/x-components.facetsstate.md +4 -2
- package/docs/API-reference/api/x-components.facetsstate.origin.md +13 -0
- package/docs/API-reference/api/x-components.facetsstate.params.md +13 -0
- package/docs/API-reference/api/x-components.flattenallfilters.md +26 -0
- package/docs/API-reference/api/x-components.md +2 -0
- package/docs/API-reference/api/x-types.facetsrequest.md +15 -0
- package/docs/API-reference/api/x-types.facetsresponse.facets.md +11 -0
- package/docs/API-reference/api/x-types.facetsresponse.md +20 -0
- package/docs/API-reference/api/x-types.md +2 -0
- package/docs/API-reference/api/x-types.xcomponentsadapter.facets.md +11 -0
- package/docs/API-reference/api/x-types.xcomponentsadapter.md +1 -0
- package/facets/index.js +1 -1
- package/js/index.js +1 -1
- package/js/x-modules/facets/store/actions/fetch-and-save-facets-response.action.js +38 -0
- package/js/x-modules/facets/store/actions/fetch-and-save-facets-response.action.js.map +1 -0
- package/js/x-modules/facets/store/actions/fetch-facets-response.action.js +16 -0
- package/js/x-modules/facets/store/actions/fetch-facets-response.action.js.map +1 -0
- package/js/x-modules/facets/store/actions/save-origin.action.js +16 -0
- package/js/x-modules/facets/store/actions/save-origin.action.js.map +1 -0
- package/js/x-modules/facets/store/getters/request.getter.js +23 -0
- package/js/x-modules/facets/store/getters/request.getter.js.map +1 -0
- package/js/x-modules/facets/store/module.js +23 -1
- package/js/x-modules/facets/store/module.js.map +1 -1
- package/js/x-modules/facets/utils.js +43 -1
- package/js/x-modules/facets/utils.js.map +1 -1
- package/package.json +5 -5
- package/report/x-adapter-platform.api.json +274 -0
- package/report/x-components.api.json +465 -17
- package/report/x-components.api.md +21 -4
- package/report/x-types.api.json +170 -0
- package/types/adapter/e2e-adapter.d.ts.map +1 -1
- package/types/x-modules/facets/store/actions/fetch-and-save-facets-response.action.d.ts +5 -0
- package/types/x-modules/facets/store/actions/fetch-and-save-facets-response.action.d.ts.map +1 -0
- package/types/x-modules/facets/store/actions/fetch-facets-response.action.d.ts +13 -0
- package/types/x-modules/facets/store/actions/fetch-facets-response.action.d.ts.map +1 -0
- package/types/x-modules/facets/store/actions/save-origin.action.d.ts +11 -0
- package/types/x-modules/facets/store/actions/save-origin.action.d.ts.map +1 -0
- package/types/x-modules/facets/store/getters/request.getter.d.ts +13 -0
- package/types/x-modules/facets/store/getters/request.getter.d.ts.map +1 -0
- package/types/x-modules/facets/store/module.d.ts.map +1 -1
- package/types/x-modules/facets/store/types.d.ts +48 -7
- package/types/x-modules/facets/store/types.d.ts.map +1 -1
- package/types/x-modules/facets/utils.d.ts +19 -1
- package/types/x-modules/facets/utils.d.ts.map +1 -1
- package/types/x-modules/related-prompts/components/related-prompts-tag-list.vue.d.ts.map +1 -1
- package/docs/API-reference/api/x-components.facetsstate.query.md +0 -13
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default implementation for the {@link FacetsGetters.request} getter.
|
|
3
|
+
*
|
|
4
|
+
* @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the facets
|
|
5
|
+
* module.
|
|
6
|
+
* @param getters - Current {@link https://vuex.vuejs.org/guide/getters.html | getters} of the
|
|
7
|
+
* facets module.
|
|
8
|
+
* @returns The facets request to fetch data from the API.
|
|
9
|
+
* @public
|
|
10
|
+
*/
|
|
11
|
+
const request = ({ query, origin, params }, { selectedFiltersByFacet }) => {
|
|
12
|
+
return query
|
|
13
|
+
? {
|
|
14
|
+
query,
|
|
15
|
+
origin: origin === null ? undefined : origin,
|
|
16
|
+
filters: selectedFiltersByFacet,
|
|
17
|
+
extraParams: params,
|
|
18
|
+
}
|
|
19
|
+
: null;
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
export { request };
|
|
23
|
+
//# sourceMappingURL=request.getter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.getter.js","sources":["../../../../../../src/x-modules/facets/store/getters/request.getter.ts"],"sourcesContent":["import type { FacetsXStoreModule } from '../types'\n\n/**\n * Default implementation for the {@link FacetsGetters.request} getter.\n *\n * @param state - Current {@link https://vuex.vuejs.org/guide/state.html | state} of the facets\n * module.\n * @param getters - Current {@link https://vuex.vuejs.org/guide/getters.html | getters} of the\n * facets module.\n * @returns The facets request to fetch data from the API.\n * @public\n */\nexport const request: FacetsXStoreModule['getters']['request'] = (\n { query, origin, params },\n { selectedFiltersByFacet },\n) => {\n return query\n ? {\n query,\n origin: origin === null ? undefined : origin,\n filters: selectedFiltersByFacet,\n extraParams: params,\n }\n : null\n}\n"],"names":[],"mappings":"AAEA;;;;;;;;;AASG;AACU,MAAA,OAAO,GAA6C,CAC/D,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EACzB,EAAE,sBAAsB,EAAE,KACxB;AACF,IAAA,OAAO,KAAK;AACV,UAAE;YACE,KAAK;YACL,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,SAAS,GAAG,MAAM;AAC5C,YAAA,OAAO,EAAE,sBAAsB;AAC/B,YAAA,WAAW,EAAE,MAAM;AACpB,SAAA;UACD,IAAI,CAAA;AACV;;;;"}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { setConfig, mergeConfig } from '../../../store/utils/config-store.utils.js';
|
|
2
|
+
import '@empathyco/x-utils';
|
|
2
3
|
import { setQuery } from '../../../store/utils/query.utils.js';
|
|
4
|
+
import { setStatus } from '../../../store/utils/status-store.utils.js';
|
|
5
|
+
import { fetchAndSaveFacetsResponse, cancelFetchAndSaveFacetsResponse } from './actions/fetch-and-save-facets-response.action.js';
|
|
6
|
+
import { fetchFacetsResponse } from './actions/fetch-facets-response.action.js';
|
|
7
|
+
import { saveOrigin } from './actions/save-origin.action.js';
|
|
3
8
|
import { facets } from './getters/facets.getter.js';
|
|
9
|
+
import { request } from './getters/request.getter.js';
|
|
4
10
|
import { selectedFiltersByFacet } from './getters/selected-filters-by-facet.getter.js';
|
|
5
11
|
import { selectedFiltersForRequest } from './getters/selected-filters-for-request.getter.js';
|
|
6
12
|
import { selectedFilters } from './getters/selected-filters.getter.js';
|
|
@@ -21,12 +27,16 @@ const facetsXStoreModule = {
|
|
|
21
27
|
config: {
|
|
22
28
|
filtersStrategyForRequest: 'all',
|
|
23
29
|
},
|
|
30
|
+
status: 'initial',
|
|
31
|
+
origin: null,
|
|
32
|
+
params: {},
|
|
24
33
|
}),
|
|
25
34
|
getters: {
|
|
26
35
|
selectedFilters,
|
|
27
36
|
selectedFiltersForRequest,
|
|
28
37
|
selectedFiltersByFacet,
|
|
29
38
|
facets,
|
|
39
|
+
request,
|
|
30
40
|
},
|
|
31
41
|
mutations: {
|
|
32
42
|
mutateFilter(state, { filter, newFilterState }) {
|
|
@@ -57,6 +67,7 @@ const facetsXStoreModule = {
|
|
|
57
67
|
setConfig,
|
|
58
68
|
mergeConfig,
|
|
59
69
|
setQuery,
|
|
70
|
+
setStatus,
|
|
60
71
|
setStickyFilter(state, filter) {
|
|
61
72
|
if (!state.stickyFilters[filter.id]) {
|
|
62
73
|
state.stickyFilters[filter.id] = filter;
|
|
@@ -68,8 +79,19 @@ const facetsXStoreModule = {
|
|
|
68
79
|
clearStickyFilters(state) {
|
|
69
80
|
state.stickyFilters = {};
|
|
70
81
|
},
|
|
82
|
+
setOrigin(state, origin = null) {
|
|
83
|
+
state.origin = origin;
|
|
84
|
+
},
|
|
85
|
+
setParams(state, params) {
|
|
86
|
+
state.params = params;
|
|
87
|
+
},
|
|
88
|
+
},
|
|
89
|
+
actions: {
|
|
90
|
+
fetchFacetsResponse,
|
|
91
|
+
fetchAndSaveFacetsResponse,
|
|
92
|
+
cancelFetchAndSaveFacetsResponse,
|
|
93
|
+
saveOrigin,
|
|
71
94
|
},
|
|
72
|
-
actions: {},
|
|
73
95
|
};
|
|
74
96
|
|
|
75
97
|
export { facetsXStoreModule };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sources":["../../../../../src/x-modules/facets/store/module.ts"],"sourcesContent":["import type { Facet } from '@empathyco/x-types'\nimport type { FacetGroupEntry, FacetsXStoreModule } from './types'\nimport { mergeConfig, setConfig } from '../../../store/utils/config-store.utils'\nimport { setQuery } from '../../../store/utils/query.utils'\nimport { facets } from './getters/facets.getter'\nimport { selectedFiltersByFacet } from './getters/selected-filters-by-facet.getter'\nimport { selectedFiltersForRequest } from './getters/selected-filters-for-request.getter'\nimport { selectedFilters } from './getters/selected-filters.getter'\n\n/**\n * {@link XStoreModule} For the facets' module.\n *\n * @internal\n */\nexport const facetsXStoreModule: FacetsXStoreModule = {\n state: () => ({\n query: '',\n filters: {},\n groups: {},\n facets: {},\n preselectedFilters: [],\n stickyFilters: {},\n config: {\n filtersStrategyForRequest: 'all',\n },\n }),\n getters: {\n selectedFilters,\n selectedFiltersForRequest,\n selectedFiltersByFacet,\n facets,\n },\n mutations: {\n mutateFilter(state, { filter, newFilterState }) {\n const newFilter = Object.assign(filter, newFilterState)\n state.filters[newFilter.id] = newFilter\n },\n setFilters(state, filters) {\n filters.forEach(filter => (state.filters[filter.id] = filter))\n },\n setPreselectedFilters(state, filters) {\n state.preselectedFilters = filters\n },\n removeFilter(state, { id }) {\n delete state.filters[id]\n },\n removeFilters(state, filters) {\n filters.forEach(({ id }) => delete state.filters[id])\n },\n setFacetGroup(state, { facetId, groupId }: FacetGroupEntry) {\n state.groups[facetId] = groupId\n },\n removeFacet(state, { id }) {\n delete state.facets[id]\n },\n setFacet(state, facet: Facet) {\n state.facets[facet.id] = facet\n },\n setConfig,\n mergeConfig,\n setQuery,\n setStickyFilter(state, filter) {\n if (!state.stickyFilters[filter.id]) {\n state.stickyFilters[filter.id] = filter\n }\n },\n removeStickyFilter(state, filter) {\n delete state.stickyFilters[filter.id]\n },\n clearStickyFilters(state) {\n state.stickyFilters = {}\n },\n },\n actions: {},\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"module.js","sources":["../../../../../src/x-modules/facets/store/module.ts"],"sourcesContent":["import type { Facet } from '@empathyco/x-types'\nimport type { FacetGroupEntry, FacetsXStoreModule } from './types'\nimport { setStatus } from '../../../store'\nimport { mergeConfig, setConfig } from '../../../store/utils/config-store.utils'\nimport { setQuery } from '../../../store/utils/query.utils'\nimport {\n cancelFetchAndSaveFacetsResponse,\n fetchAndSaveFacetsResponse,\n} from './actions/fetch-and-save-facets-response.action'\nimport { fetchFacetsResponse } from './actions/fetch-facets-response.action'\nimport { saveOrigin } from './actions/save-origin.action'\nimport { facets } from './getters/facets.getter'\nimport { request } from './getters/request.getter'\nimport { selectedFiltersByFacet } from './getters/selected-filters-by-facet.getter'\nimport { selectedFiltersForRequest } from './getters/selected-filters-for-request.getter'\nimport { selectedFilters } from './getters/selected-filters.getter'\n\n/**\n * {@link XStoreModule} For the facets' module.\n *\n * @internal\n */\nexport const facetsXStoreModule: FacetsXStoreModule = {\n state: () => ({\n query: '',\n filters: {},\n groups: {},\n facets: {},\n preselectedFilters: [],\n stickyFilters: {},\n config: {\n filtersStrategyForRequest: 'all',\n },\n status: 'initial',\n origin: null,\n params: {},\n }),\n getters: {\n selectedFilters,\n selectedFiltersForRequest,\n selectedFiltersByFacet,\n facets,\n request,\n },\n mutations: {\n mutateFilter(state, { filter, newFilterState }) {\n const newFilter = Object.assign(filter, newFilterState)\n state.filters[newFilter.id] = newFilter\n },\n setFilters(state, filters) {\n filters.forEach(filter => (state.filters[filter.id] = filter))\n },\n setPreselectedFilters(state, filters) {\n state.preselectedFilters = filters\n },\n removeFilter(state, { id }) {\n delete state.filters[id]\n },\n removeFilters(state, filters) {\n filters.forEach(({ id }) => delete state.filters[id])\n },\n setFacetGroup(state, { facetId, groupId }: FacetGroupEntry) {\n state.groups[facetId] = groupId\n },\n removeFacet(state, { id }) {\n delete state.facets[id]\n },\n setFacet(state, facet: Facet) {\n state.facets[facet.id] = facet\n },\n setConfig,\n mergeConfig,\n setQuery,\n setStatus,\n setStickyFilter(state, filter) {\n if (!state.stickyFilters[filter.id]) {\n state.stickyFilters[filter.id] = filter\n }\n },\n removeStickyFilter(state, filter) {\n delete state.stickyFilters[filter.id]\n },\n clearStickyFilters(state) {\n state.stickyFilters = {}\n },\n setOrigin(state, origin = null) {\n state.origin = origin\n },\n setParams(state, params) {\n state.params = params\n },\n },\n actions: {\n fetchFacetsResponse,\n fetchAndSaveFacetsResponse,\n cancelFetchAndSaveFacetsResponse,\n saveOrigin,\n },\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { isHierarchicalFacet } from '@empathyco/x-types';
|
|
2
|
+
|
|
1
3
|
/**
|
|
2
4
|
* This function flattens the Hierarchical Filters, returning an array with all filters including
|
|
3
5
|
* the children.
|
|
@@ -13,6 +15,46 @@ function flatHierarchicalFilters(hierarchicalFilters) {
|
|
|
13
15
|
return filter?.children?.reduce(flat, flattenedFilters) ?? flattenedFilters;
|
|
14
16
|
}, []);
|
|
15
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Flattens all filters from an array of facets, including hierarchical filters.
|
|
20
|
+
*
|
|
21
|
+
* @param facets - The list of facets to extract filters from.
|
|
22
|
+
* @returns A flat array of all filters from all facets.
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
25
|
+
*/
|
|
26
|
+
function flattenAllFilters(facets) {
|
|
27
|
+
const allFilters = [];
|
|
28
|
+
facets.forEach(facet => {
|
|
29
|
+
if (isHierarchicalFacet(facet)) {
|
|
30
|
+
allFilters.push(...flatHierarchicalFilters(facet.filters));
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
allFilters.push(...facet.filters);
|
|
34
|
+
}
|
|
35
|
+
});
|
|
36
|
+
return allFilters;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Recursively applies the selected state to hierarchical filters and their children.
|
|
40
|
+
*
|
|
41
|
+
* @param filters - The hierarchical filters to update.
|
|
42
|
+
* @param selectedIds - The set of selected filter ids.
|
|
43
|
+
*
|
|
44
|
+
* @public
|
|
45
|
+
*/
|
|
46
|
+
function applyHierarchicalSelection(filters, selectedIds) {
|
|
47
|
+
filters.forEach(filter => {
|
|
48
|
+
filter.selected = selectedIds.has(filter.id);
|
|
49
|
+
if (filter.children && filter.children.length > 0) {
|
|
50
|
+
applyHierarchicalSelection(filter.children, selectedIds);
|
|
51
|
+
// If any child is selected, parent should be selected (to match x behavior)
|
|
52
|
+
if (filter.children.some(child => child.selected)) {
|
|
53
|
+
filter.selected = true;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}
|
|
16
58
|
|
|
17
|
-
export { flatHierarchicalFilters };
|
|
59
|
+
export { applyHierarchicalSelection, flatHierarchicalFilters, flattenAllFilters };
|
|
18
60
|
//# sourceMappingURL=utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sources":["../../../../src/x-modules/facets/utils.ts"],"sourcesContent":["import type { HierarchicalFilter } from '@empathyco/x-types'\n\n/**\n * This function flattens the Hierarchical Filters, returning an array with all filters including\n * the children.\n *\n * @param hierarchicalFilters - The list of Hierarchical Filters to flatten.\n * @returns An array with all the Hierarchical filters.\n *\n * @public\n */\nexport function flatHierarchicalFilters(\n hierarchicalFilters: HierarchicalFilter[],\n): HierarchicalFilter[] {\n return hierarchicalFilters.reduce(function flat(flattenedFilters, filter): HierarchicalFilter[] {\n flattenedFilters.push(filter)\n return filter?.children?.reduce(flat, flattenedFilters) ?? flattenedFilters\n }, [] as HierarchicalFilter[])\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sources":["../../../../src/x-modules/facets/utils.ts"],"sourcesContent":["import type { Facet, Filter, HierarchicalFilter } from '@empathyco/x-types'\nimport { isHierarchicalFacet } from '@empathyco/x-types'\n\n/**\n * This function flattens the Hierarchical Filters, returning an array with all filters including\n * the children.\n *\n * @param hierarchicalFilters - The list of Hierarchical Filters to flatten.\n * @returns An array with all the Hierarchical filters.\n *\n * @public\n */\nexport function flatHierarchicalFilters(\n hierarchicalFilters: HierarchicalFilter[],\n): HierarchicalFilter[] {\n return hierarchicalFilters.reduce(function flat(flattenedFilters, filter): HierarchicalFilter[] {\n flattenedFilters.push(filter)\n return filter?.children?.reduce(flat, flattenedFilters) ?? flattenedFilters\n }, [] as HierarchicalFilter[])\n}\n\n/**\n * Flattens all filters from an array of facets, including hierarchical filters.\n *\n * @param facets - The list of facets to extract filters from.\n * @returns A flat array of all filters from all facets.\n *\n * @public\n */\nexport function flattenAllFilters(facets: Facet[]): Filter[] {\n const allFilters: Filter[] = []\n facets.forEach(facet => {\n if (isHierarchicalFacet(facet)) {\n allFilters.push(...flatHierarchicalFilters(facet.filters))\n } else {\n allFilters.push(...facet.filters)\n }\n })\n return allFilters\n}\n\n/**\n * Recursively applies the selected state to hierarchical filters and their children.\n *\n * @param filters - The hierarchical filters to update.\n * @param selectedIds - The set of selected filter ids.\n *\n * @public\n */\nexport function applyHierarchicalSelection(\n filters: HierarchicalFilter[],\n selectedIds: Set<string | number>,\n): void {\n filters.forEach(filter => {\n filter.selected = selectedIds.has(filter.id)\n if (filter.children && filter.children.length > 0) {\n applyHierarchicalSelection(filter.children, selectedIds)\n // If any child is selected, parent should be selected (to match x behavior)\n if (filter.children.some(child => child.selected)) {\n filter.selected = true\n }\n }\n })\n}\n"],"names":[],"mappings":";;AAGA;;;;;;;;AAQG;AACG,SAAU,uBAAuB,CACrC,mBAAyC,EAAA;IAEzC,OAAO,mBAAmB,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAA;AACtE,QAAA,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC7B,QAAA,OAAO,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,gBAAgB,CAAA;KAC5E,EAAE,EAA0B,CAAC,CAAA;AAChC,CAAC;AAED;;;;;;;AAOG;AACG,SAAU,iBAAiB,CAAC,MAAe,EAAA;IAC/C,MAAM,UAAU,GAAa,EAAE,CAAA;AAC/B,IAAA,MAAM,CAAC,OAAO,CAAC,KAAK,IAAG;AACrB,QAAA,IAAI,mBAAmB,CAAC,KAAK,CAAC,EAAE;YAC9B,UAAU,CAAC,IAAI,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;SAC3D;aAAM;YACL,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;SAClC;AACH,KAAC,CAAC,CAAA;AACF,IAAA,OAAO,UAAU,CAAA;AACnB,CAAC;AAED;;;;;;;AAOG;AACa,SAAA,0BAA0B,CACxC,OAA6B,EAC7B,WAAiC,EAAA;AAEjC,IAAA,OAAO,CAAC,OAAO,CAAC,MAAM,IAAG;QACvB,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC5C,QAAA,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;AACjD,YAAA,0BAA0B,CAAC,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;;AAExD,YAAA,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE;AACjD,gBAAA,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAA;aACvB;SACF;AACH,KAAC,CAAC,CAAA;AACJ;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@empathyco/x-components",
|
|
3
|
-
"version": "6.0.0-alpha.
|
|
3
|
+
"version": "6.0.0-alpha.182",
|
|
4
4
|
"description": "Empathy X Components",
|
|
5
5
|
"author": "Empathy Systems Corporation S.L.",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -79,10 +79,10 @@
|
|
|
79
79
|
},
|
|
80
80
|
"dependencies": {
|
|
81
81
|
"@empathyco/x-adapter": "^8.1.0-alpha.9",
|
|
82
|
-
"@empathyco/x-adapter-platform": "^1.1.0-alpha.
|
|
82
|
+
"@empathyco/x-adapter-platform": "^1.1.0-alpha.39",
|
|
83
83
|
"@empathyco/x-deep-merge": "^2.0.3-alpha.9",
|
|
84
84
|
"@empathyco/x-storage-service": "^2.0.3-alpha.7",
|
|
85
|
-
"@empathyco/x-types": "^10.1.0-alpha.
|
|
85
|
+
"@empathyco/x-types": "^10.1.0-alpha.32",
|
|
86
86
|
"@empathyco/x-utils": "^1.0.3-alpha.8",
|
|
87
87
|
"@vue/devtools-api": "~6.5.0",
|
|
88
88
|
"@vueuse/core": "~10.11.0",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"@vue/vue3-jest": "29.2.6",
|
|
112
112
|
"autoprefixer": "10.4.21",
|
|
113
113
|
"convert-source-map": "2.0.0",
|
|
114
|
-
"cypress": "14.
|
|
114
|
+
"cypress": "14.5.4",
|
|
115
115
|
"esbuild": "0.20.0",
|
|
116
116
|
"jest": "29.7.0",
|
|
117
117
|
"jest-environment-jsdom": "29.7.0",
|
|
@@ -143,5 +143,5 @@
|
|
|
143
143
|
"access": "public",
|
|
144
144
|
"directory": "dist"
|
|
145
145
|
},
|
|
146
|
-
"gitHead": "
|
|
146
|
+
"gitHead": "50bb90d0611b0c97df5e8e15759c344fe22e5ad7"
|
|
147
147
|
}
|
|
@@ -1777,6 +1777,156 @@
|
|
|
1777
1777
|
"endIndex": 14
|
|
1778
1778
|
}
|
|
1779
1779
|
},
|
|
1780
|
+
{
|
|
1781
|
+
"kind": "Variable",
|
|
1782
|
+
"canonicalReference": "@empathyco/x-adapter-platform!facetsEndpointAdapter:var",
|
|
1783
|
+
"docComment": "/**\n * Default adapter for the search endpoint.\n *\n * @public\n */\n",
|
|
1784
|
+
"excerptTokens": [
|
|
1785
|
+
{
|
|
1786
|
+
"kind": "Content",
|
|
1787
|
+
"text": "facetsEndpointAdapter: "
|
|
1788
|
+
},
|
|
1789
|
+
{
|
|
1790
|
+
"kind": "Content",
|
|
1791
|
+
"text": "import(\"@empathyco/x-adapter\")."
|
|
1792
|
+
},
|
|
1793
|
+
{
|
|
1794
|
+
"kind": "Reference",
|
|
1795
|
+
"text": "ExtendableEndpointAdapter",
|
|
1796
|
+
"canonicalReference": "@empathyco/x-adapter!ExtendableEndpointAdapter:interface"
|
|
1797
|
+
},
|
|
1798
|
+
{
|
|
1799
|
+
"kind": "Content",
|
|
1800
|
+
"text": "<"
|
|
1801
|
+
},
|
|
1802
|
+
{
|
|
1803
|
+
"kind": "Reference",
|
|
1804
|
+
"text": "FacetsRequest",
|
|
1805
|
+
"canonicalReference": "@empathyco/x-adapter-platform!FacetsRequest:interface"
|
|
1806
|
+
},
|
|
1807
|
+
{
|
|
1808
|
+
"kind": "Content",
|
|
1809
|
+
"text": ", "
|
|
1810
|
+
},
|
|
1811
|
+
{
|
|
1812
|
+
"kind": "Reference",
|
|
1813
|
+
"text": "FacetsResponse",
|
|
1814
|
+
"canonicalReference": "@empathyco/x-adapter-platform!FacetsResponse:interface"
|
|
1815
|
+
},
|
|
1816
|
+
{
|
|
1817
|
+
"kind": "Content",
|
|
1818
|
+
"text": ">"
|
|
1819
|
+
}
|
|
1820
|
+
],
|
|
1821
|
+
"fileUrlPath": "dist/types/endpoint-adapters/facets.endpoint-adapter.d.ts",
|
|
1822
|
+
"isReadonly": true,
|
|
1823
|
+
"releaseTag": "Public",
|
|
1824
|
+
"name": "facetsEndpointAdapter",
|
|
1825
|
+
"variableTypeTokenRange": {
|
|
1826
|
+
"startIndex": 1,
|
|
1827
|
+
"endIndex": 8
|
|
1828
|
+
}
|
|
1829
|
+
},
|
|
1830
|
+
{
|
|
1831
|
+
"kind": "Variable",
|
|
1832
|
+
"canonicalReference": "@empathyco/x-adapter-platform!facetsRequestSchema:var",
|
|
1833
|
+
"docComment": "/**\n * Default implementation for the FacetsRequestSchema.\n *\n * @public\n */\n",
|
|
1834
|
+
"excerptTokens": [
|
|
1835
|
+
{
|
|
1836
|
+
"kind": "Content",
|
|
1837
|
+
"text": "facetsRequestSchema: "
|
|
1838
|
+
},
|
|
1839
|
+
{
|
|
1840
|
+
"kind": "Content",
|
|
1841
|
+
"text": "import(\"@empathyco/x-adapter\")."
|
|
1842
|
+
},
|
|
1843
|
+
{
|
|
1844
|
+
"kind": "Reference",
|
|
1845
|
+
"text": "MutableSchema",
|
|
1846
|
+
"canonicalReference": "@empathyco/x-adapter!MutableSchema:type"
|
|
1847
|
+
},
|
|
1848
|
+
{
|
|
1849
|
+
"kind": "Content",
|
|
1850
|
+
"text": "<"
|
|
1851
|
+
},
|
|
1852
|
+
{
|
|
1853
|
+
"kind": "Reference",
|
|
1854
|
+
"text": "FacetsRequest",
|
|
1855
|
+
"canonicalReference": "@empathyco/x-adapter-platform!FacetsRequest:interface"
|
|
1856
|
+
},
|
|
1857
|
+
{
|
|
1858
|
+
"kind": "Content",
|
|
1859
|
+
"text": ", "
|
|
1860
|
+
},
|
|
1861
|
+
{
|
|
1862
|
+
"kind": "Reference",
|
|
1863
|
+
"text": "PlatformFacetsRequest",
|
|
1864
|
+
"canonicalReference": "@empathyco/x-adapter-platform!PlatformFacetsRequest:interface"
|
|
1865
|
+
},
|
|
1866
|
+
{
|
|
1867
|
+
"kind": "Content",
|
|
1868
|
+
"text": ">"
|
|
1869
|
+
}
|
|
1870
|
+
],
|
|
1871
|
+
"fileUrlPath": "dist/types/schemas/requests/facets-request.schema.d.ts",
|
|
1872
|
+
"isReadonly": true,
|
|
1873
|
+
"releaseTag": "Public",
|
|
1874
|
+
"name": "facetsRequestSchema",
|
|
1875
|
+
"variableTypeTokenRange": {
|
|
1876
|
+
"startIndex": 1,
|
|
1877
|
+
"endIndex": 8
|
|
1878
|
+
}
|
|
1879
|
+
},
|
|
1880
|
+
{
|
|
1881
|
+
"kind": "Variable",
|
|
1882
|
+
"canonicalReference": "@empathyco/x-adapter-platform!facetsResponseMapper:var",
|
|
1883
|
+
"docComment": "/**\n * Default implementation for the FacetsResponseMapper.\n *\n * @public\n */\n",
|
|
1884
|
+
"excerptTokens": [
|
|
1885
|
+
{
|
|
1886
|
+
"kind": "Content",
|
|
1887
|
+
"text": "facetsResponseMapper: "
|
|
1888
|
+
},
|
|
1889
|
+
{
|
|
1890
|
+
"kind": "Content",
|
|
1891
|
+
"text": "import(\"@empathyco/x-adapter\")."
|
|
1892
|
+
},
|
|
1893
|
+
{
|
|
1894
|
+
"kind": "Reference",
|
|
1895
|
+
"text": "Mapper",
|
|
1896
|
+
"canonicalReference": "@empathyco/x-adapter!Mapper:type"
|
|
1897
|
+
},
|
|
1898
|
+
{
|
|
1899
|
+
"kind": "Content",
|
|
1900
|
+
"text": "<"
|
|
1901
|
+
},
|
|
1902
|
+
{
|
|
1903
|
+
"kind": "Reference",
|
|
1904
|
+
"text": "PlatformFacetsResponse",
|
|
1905
|
+
"canonicalReference": "@empathyco/x-adapter-platform!PlatformFacetsResponse:interface"
|
|
1906
|
+
},
|
|
1907
|
+
{
|
|
1908
|
+
"kind": "Content",
|
|
1909
|
+
"text": ", "
|
|
1910
|
+
},
|
|
1911
|
+
{
|
|
1912
|
+
"kind": "Reference",
|
|
1913
|
+
"text": "FacetsResponse",
|
|
1914
|
+
"canonicalReference": "@empathyco/x-adapter-platform!FacetsResponse:interface"
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
"kind": "Content",
|
|
1918
|
+
"text": ">"
|
|
1919
|
+
}
|
|
1920
|
+
],
|
|
1921
|
+
"fileUrlPath": "dist/types/mappers/responses/facets-response.mapper.d.ts",
|
|
1922
|
+
"isReadonly": true,
|
|
1923
|
+
"releaseTag": "Public",
|
|
1924
|
+
"name": "facetsResponseMapper",
|
|
1925
|
+
"variableTypeTokenRange": {
|
|
1926
|
+
"startIndex": 1,
|
|
1927
|
+
"endIndex": 8
|
|
1928
|
+
}
|
|
1929
|
+
},
|
|
1780
1930
|
{
|
|
1781
1931
|
"kind": "Function",
|
|
1782
1932
|
"canonicalReference": "@empathyco/x-adapter-platform!getDisplayTaggingInfoFromUrl:function(1)",
|
|
@@ -4391,6 +4541,130 @@
|
|
|
4391
4541
|
],
|
|
4392
4542
|
"extendsTokenRanges": []
|
|
4393
4543
|
},
|
|
4544
|
+
{
|
|
4545
|
+
"kind": "Interface",
|
|
4546
|
+
"canonicalReference": "@empathyco/x-adapter-platform!PlatformFacetsRequest:interface",
|
|
4547
|
+
"docComment": "/**\n * Request for the `facets` endpoint.\n *\n * @public\n */\n",
|
|
4548
|
+
"excerptTokens": [
|
|
4549
|
+
{
|
|
4550
|
+
"kind": "Content",
|
|
4551
|
+
"text": "export interface PlatformFacetsRequest extends "
|
|
4552
|
+
},
|
|
4553
|
+
{
|
|
4554
|
+
"kind": "Reference",
|
|
4555
|
+
"text": "PlatformQueryableRequest",
|
|
4556
|
+
"canonicalReference": "@empathyco/x-adapter-platform!~PlatformQueryableRequest:interface"
|
|
4557
|
+
},
|
|
4558
|
+
{
|
|
4559
|
+
"kind": "Content",
|
|
4560
|
+
"text": ", "
|
|
4561
|
+
},
|
|
4562
|
+
{
|
|
4563
|
+
"kind": "Reference",
|
|
4564
|
+
"text": "PlatformFilterableRequest",
|
|
4565
|
+
"canonicalReference": "@empathyco/x-adapter-platform!~PlatformFilterableRequest:interface"
|
|
4566
|
+
},
|
|
4567
|
+
{
|
|
4568
|
+
"kind": "Content",
|
|
4569
|
+
"text": ", "
|
|
4570
|
+
},
|
|
4571
|
+
{
|
|
4572
|
+
"kind": "Reference",
|
|
4573
|
+
"text": "PlatformTrackableRequest",
|
|
4574
|
+
"canonicalReference": "@empathyco/x-adapter-platform!~PlatformTrackableRequest:interface"
|
|
4575
|
+
},
|
|
4576
|
+
{
|
|
4577
|
+
"kind": "Content",
|
|
4578
|
+
"text": ", "
|
|
4579
|
+
},
|
|
4580
|
+
{
|
|
4581
|
+
"kind": "Reference",
|
|
4582
|
+
"text": "PlatformExtraParamsRequest",
|
|
4583
|
+
"canonicalReference": "@empathyco/x-adapter-platform!~PlatformExtraParamsRequest:interface"
|
|
4584
|
+
},
|
|
4585
|
+
{
|
|
4586
|
+
"kind": "Content",
|
|
4587
|
+
"text": " "
|
|
4588
|
+
}
|
|
4589
|
+
],
|
|
4590
|
+
"fileUrlPath": "dist/types/types/requests/facets-request.model.d.ts",
|
|
4591
|
+
"releaseTag": "Public",
|
|
4592
|
+
"name": "PlatformFacetsRequest",
|
|
4593
|
+
"preserveMemberOrder": false,
|
|
4594
|
+
"members": [],
|
|
4595
|
+
"extendsTokenRanges": [
|
|
4596
|
+
{
|
|
4597
|
+
"startIndex": 1,
|
|
4598
|
+
"endIndex": 2
|
|
4599
|
+
},
|
|
4600
|
+
{
|
|
4601
|
+
"startIndex": 3,
|
|
4602
|
+
"endIndex": 4
|
|
4603
|
+
},
|
|
4604
|
+
{
|
|
4605
|
+
"startIndex": 5,
|
|
4606
|
+
"endIndex": 6
|
|
4607
|
+
},
|
|
4608
|
+
{
|
|
4609
|
+
"startIndex": 7,
|
|
4610
|
+
"endIndex": 8
|
|
4611
|
+
}
|
|
4612
|
+
]
|
|
4613
|
+
},
|
|
4614
|
+
{
|
|
4615
|
+
"kind": "Interface",
|
|
4616
|
+
"canonicalReference": "@empathyco/x-adapter-platform!PlatformFacetsResponse:interface",
|
|
4617
|
+
"docComment": "/**\n * Response for the `facets` endpoint.\n *\n * @public\n */\n",
|
|
4618
|
+
"excerptTokens": [
|
|
4619
|
+
{
|
|
4620
|
+
"kind": "Content",
|
|
4621
|
+
"text": "export interface PlatformFacetsResponse "
|
|
4622
|
+
}
|
|
4623
|
+
],
|
|
4624
|
+
"fileUrlPath": "dist/types/types/responses/facets-response.model.d.ts",
|
|
4625
|
+
"releaseTag": "Public",
|
|
4626
|
+
"name": "PlatformFacetsResponse",
|
|
4627
|
+
"preserveMemberOrder": false,
|
|
4628
|
+
"members": [
|
|
4629
|
+
{
|
|
4630
|
+
"kind": "PropertySignature",
|
|
4631
|
+
"canonicalReference": "@empathyco/x-adapter-platform!PlatformFacetsResponse#catalog:member",
|
|
4632
|
+
"docComment": "",
|
|
4633
|
+
"excerptTokens": [
|
|
4634
|
+
{
|
|
4635
|
+
"kind": "Content",
|
|
4636
|
+
"text": "catalog: "
|
|
4637
|
+
},
|
|
4638
|
+
{
|
|
4639
|
+
"kind": "Content",
|
|
4640
|
+
"text": "{\n facets: "
|
|
4641
|
+
},
|
|
4642
|
+
{
|
|
4643
|
+
"kind": "Reference",
|
|
4644
|
+
"text": "PlatformFacet",
|
|
4645
|
+
"canonicalReference": "@empathyco/x-adapter-platform!PlatformFacet:interface"
|
|
4646
|
+
},
|
|
4647
|
+
{
|
|
4648
|
+
"kind": "Content",
|
|
4649
|
+
"text": "[];\n }"
|
|
4650
|
+
},
|
|
4651
|
+
{
|
|
4652
|
+
"kind": "Content",
|
|
4653
|
+
"text": ";"
|
|
4654
|
+
}
|
|
4655
|
+
],
|
|
4656
|
+
"isReadonly": false,
|
|
4657
|
+
"isOptional": false,
|
|
4658
|
+
"releaseTag": "Public",
|
|
4659
|
+
"name": "catalog",
|
|
4660
|
+
"propertyTypeTokenRange": {
|
|
4661
|
+
"startIndex": 1,
|
|
4662
|
+
"endIndex": 4
|
|
4663
|
+
}
|
|
4664
|
+
}
|
|
4665
|
+
],
|
|
4666
|
+
"extendsTokenRanges": []
|
|
4667
|
+
},
|
|
4394
4668
|
{
|
|
4395
4669
|
"kind": "TypeAlias",
|
|
4396
4670
|
"canonicalReference": "@empathyco/x-adapter-platform!PlatformFacetType:type",
|