@telia-ace/knowledge-widget-components-search 1.0.44-next.0 → 1.0.44-next.1
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/index.js +130 -127
- package/dist/index.js.map +1 -1
- package/dist/{search.d8394d6a.js → search.9c0e8397.js} +245 -225
- package/dist/search.9c0e8397.js.map +1 -0
- package/package.json +4 -4
- package/dist/search.d8394d6a.js.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,172 +1,175 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
1
|
+
var O = Object.defineProperty, S = Object.defineProperties;
|
|
2
|
+
var x = Object.getOwnPropertyDescriptors;
|
|
3
3
|
var T = Object.getOwnPropertySymbols;
|
|
4
|
-
var
|
|
5
|
-
var
|
|
6
|
-
for (var
|
|
7
|
-
|
|
4
|
+
var F = Object.prototype.hasOwnProperty, E = Object.prototype.propertyIsEnumerable;
|
|
5
|
+
var b = (a, t, i) => t in a ? O(a, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : a[t] = i, I = (a, t) => {
|
|
6
|
+
for (var i in t || (t = {}))
|
|
7
|
+
F.call(t, i) && b(a, i, t[i]);
|
|
8
8
|
if (T)
|
|
9
|
-
for (var
|
|
10
|
-
|
|
9
|
+
for (var i of T(t))
|
|
10
|
+
E.call(t, i) && b(a, i, t[i]);
|
|
11
11
|
return a;
|
|
12
|
-
},
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
12
|
+
}, k = (a, t) => S(a, x(t));
|
|
13
|
+
var m = (a, t, i) => new Promise((l, y) => {
|
|
14
|
+
var f = (u) => {
|
|
15
|
+
try {
|
|
16
|
+
p(i.next(u));
|
|
17
|
+
} catch (e) {
|
|
18
|
+
y(e);
|
|
19
|
+
}
|
|
20
|
+
}, h = (u) => {
|
|
21
|
+
try {
|
|
22
|
+
p(i.throw(u));
|
|
23
|
+
} catch (e) {
|
|
24
|
+
y(e);
|
|
25
|
+
}
|
|
26
|
+
}, p = (u) => u.done ? l(u.value) : Promise.resolve(u.value).then(f, h);
|
|
27
|
+
p((i = i.apply(a, t)).next());
|
|
28
|
+
});
|
|
29
|
+
import { DataClient as q, DataType as A } from "@telia-ace/knowledge-data-client";
|
|
30
|
+
import { createEventSubscriber as G } from "@telia-ace/knowledge-widget-core";
|
|
31
|
+
import { createReactComponent as M } from "@telia-ace/knowledge-widget-ui";
|
|
32
|
+
import { createParams as U, deepClone as v, findCategoryById as $, categoryTrail as H, getCategoryTrailAsObjects as _ } from "@telia-ace/widget-utilities";
|
|
33
|
+
const z = (a) => !!a.guideCategoryId || a.tagIds.length > 0, B = (a, t) => {
|
|
34
|
+
const i = H(a, t), l = _(i, t);
|
|
35
|
+
return i.map((f) => {
|
|
36
|
+
var h;
|
|
37
|
+
return ((h = l.get(f)) == null ? void 0 : h.title) || "";
|
|
22
38
|
}).join(" / ");
|
|
23
|
-
},
|
|
24
|
-
const
|
|
25
|
-
return
|
|
26
|
-
|
|
27
|
-
}),
|
|
28
|
-
},
|
|
29
|
-
const { events:
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
39
|
+
}, w = (a) => {
|
|
40
|
+
const t = v(a);
|
|
41
|
+
return t.sort((i, l) => i.title > l.title ? 1 : -1), t.forEach((i) => {
|
|
42
|
+
i.items && (i.items = w(i.items));
|
|
43
|
+
}), t;
|
|
44
|
+
}, J = (a) => M(a, "search", import("./search.9c0e8397.js"), (t) => {
|
|
45
|
+
const { events: i } = a.get("$widget"), [l, y] = G(i), f = (e) => m(void 0, null, function* () {
|
|
46
|
+
const s = e.tag ? e.tag.split(",") : [], r = e.guideCategory, o = e.phrase || "", { activeFilterBadges: c } = t.properties(), n = yield u({}), g = yield p({
|
|
47
|
+
tagId: e.tag,
|
|
48
|
+
searchPhrase: o
|
|
49
|
+
}), C = r ? $(r, g) : null, d = s.reduce((P, D) => {
|
|
50
|
+
const R = n.find((j) => j.id === D);
|
|
51
|
+
return R && P.push(R), P;
|
|
52
|
+
}, []);
|
|
53
|
+
t.writeProperties({
|
|
54
|
+
activeFilterBadges: k(I({}, c), {
|
|
55
|
+
tag: d,
|
|
56
|
+
guideCategory: C,
|
|
57
|
+
tooltip: B(r, g) || null
|
|
58
|
+
})
|
|
41
59
|
});
|
|
42
|
-
};
|
|
43
|
-
|
|
60
|
+
});
|
|
61
|
+
t.actions.create(
|
|
44
62
|
"search",
|
|
45
|
-
(
|
|
46
|
-
const {
|
|
47
|
-
(
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
let c = {
|
|
63
|
+
(e) => m(void 0, null, function* () {
|
|
64
|
+
const { route: s = "search", patchParams: r = !1 } = t.properties(), { filters: o, filtersChanged: c, value: n } = e;
|
|
65
|
+
if (n.length > 0 || (z(o) || c) && !o.initial) {
|
|
66
|
+
const g = yield a.getAsync("router"), { params: C } = g.getRouteData();
|
|
67
|
+
let d = {
|
|
51
68
|
guide: void 0,
|
|
52
69
|
id: void 0,
|
|
53
70
|
accordion: void 0,
|
|
54
71
|
contactMethod: void 0
|
|
55
72
|
};
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
),
|
|
60
|
-
|
|
61
|
-
const { name:
|
|
62
|
-
|
|
73
|
+
d.phrase = n.length > 0 ? encodeURIComponent(n) : "", r && (d = I(I({}, C), d)), ((o == null ? void 0 : o.guideCategoryId) || c) && (d.guideCategory = o.guideCategoryId || void 0), ((o == null ? void 0 : o.tagIds.length) > 0 || c) && (o.tagIds.length > 0 ? d.tag = o.tagIds.join(",") : d.tag = void 0), g.navigate(s, U(d));
|
|
74
|
+
}
|
|
75
|
+
})
|
|
76
|
+
), t.actions.create("clear", (e, s) => {
|
|
77
|
+
e.navigateToHome && a.getAsync("router").then((r) => {
|
|
78
|
+
const { name: o } = r.getInitialRoute();
|
|
79
|
+
r.navigate(o);
|
|
63
80
|
});
|
|
64
81
|
});
|
|
65
|
-
const
|
|
66
|
-
|
|
82
|
+
const h = () => a.getAsync("router").then((e) => e.getRouteData().params);
|
|
83
|
+
t.actions.create(
|
|
67
84
|
"quick-filter:add",
|
|
68
|
-
(
|
|
69
|
-
const { category:
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
}) : h(l({}, g), {
|
|
82
|
-
guideCategory: null,
|
|
83
|
-
tooltip: null
|
|
84
|
-
})).then((o) => t ? q({}).then((d) => {
|
|
85
|
-
let c = [];
|
|
86
|
-
return t.forEach((p) => {
|
|
87
|
-
const v = d.find((A) => A.id === p);
|
|
88
|
-
v && c.push(v);
|
|
89
|
-
}), h(l({}, o), {
|
|
90
|
-
tag: c
|
|
91
|
-
});
|
|
92
|
-
}) : h(l({}, o), {
|
|
93
|
-
tag: []
|
|
94
|
-
})).then((o) => e.writeProperties({
|
|
95
|
-
activeFilterBadges: h(l({}, o), { initial: !!n })
|
|
96
|
-
}));
|
|
97
|
-
}
|
|
98
|
-
), e.actions.create(
|
|
85
|
+
(e) => m(void 0, null, function* () {
|
|
86
|
+
const { category: s, tagIds: r = [], initial: o } = e, c = yield a.getAsync("router"), { params: n } = c.getRouteData(), g = n.tag ? n.tag.split(",") : [];
|
|
87
|
+
t.actions.dispatch("search", {
|
|
88
|
+
filtersChanged: !0,
|
|
89
|
+
filters: {
|
|
90
|
+
guideCategoryId: s,
|
|
91
|
+
tagIds: [.../* @__PURE__ */ new Set([...g, ...r])]
|
|
92
|
+
},
|
|
93
|
+
value: n.phrase || ""
|
|
94
|
+
});
|
|
95
|
+
})
|
|
96
|
+
), t.actions.create(
|
|
99
97
|
"quick-filter:remove",
|
|
100
|
-
({ types:
|
|
101
|
-
const { activeFilterBadges:
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
98
|
+
({ types: e, ids: s = [] }) => {
|
|
99
|
+
const { activeFilterBadges: r } = t.properties();
|
|
100
|
+
a.getAsync("router").then((o) => {
|
|
101
|
+
var n;
|
|
102
|
+
const { params: c } = o.getRouteData();
|
|
103
|
+
t.actions.dispatch("search", {
|
|
104
|
+
filtersChanged: !0,
|
|
105
|
+
filters: {
|
|
106
|
+
guideCategoryId: e.indexOf("guideCategory") > -1 ? null : (n = r == null ? void 0 : r.guideCategory) == null ? void 0 : n.id,
|
|
107
|
+
tagIds: e.indexOf("tag") > -1 ? ((r == null ? void 0 : r.tag) || []).filter((g) => !(s != null && s.includes(g.id))).map((g) => g.id) : (r == null ? void 0 : r.tag.map((g) => g.id)) || []
|
|
108
|
+
},
|
|
109
|
+
value: c.phrase || ""
|
|
110
|
+
});
|
|
108
111
|
});
|
|
109
112
|
}
|
|
110
|
-
),
|
|
113
|
+
), t.actions.create("quick-filter:close", () => t.writeProperties({
|
|
111
114
|
quickFilter: {
|
|
112
115
|
items: [],
|
|
113
116
|
loading: !1,
|
|
114
117
|
open: !1
|
|
115
118
|
}
|
|
116
|
-
})),
|
|
119
|
+
})), t.actions.create("quick-filter:open", ({ symbol: e, type: s }) => (t.writeProperties({
|
|
117
120
|
quickFilter: {
|
|
118
|
-
type:
|
|
119
|
-
symbol:
|
|
121
|
+
type: s,
|
|
122
|
+
symbol: e,
|
|
120
123
|
items: [],
|
|
121
124
|
loading: !0,
|
|
122
125
|
open: !0
|
|
123
126
|
}
|
|
124
|
-
}),
|
|
125
|
-
if (
|
|
126
|
-
return
|
|
127
|
-
tagId:
|
|
128
|
-
searchPhrase:
|
|
129
|
-
}).then((
|
|
130
|
-
const
|
|
131
|
-
|
|
127
|
+
}), h().then(({ tag: r, guideCategory: o, phrase: c }) => {
|
|
128
|
+
if (s === "guideCategory")
|
|
129
|
+
return p({
|
|
130
|
+
tagId: r,
|
|
131
|
+
searchPhrase: c
|
|
132
|
+
}).then((n) => {
|
|
133
|
+
const g = v(n);
|
|
134
|
+
t.writeProperties({
|
|
132
135
|
quickFilter: {
|
|
133
|
-
items:
|
|
136
|
+
items: w(g),
|
|
134
137
|
loading: !1
|
|
135
138
|
}
|
|
136
139
|
});
|
|
137
140
|
});
|
|
138
|
-
if (
|
|
139
|
-
return
|
|
140
|
-
categories:
|
|
141
|
-
searchPhrase:
|
|
142
|
-
}).then((
|
|
143
|
-
const
|
|
144
|
-
|
|
141
|
+
if (s === "tag")
|
|
142
|
+
return u({
|
|
143
|
+
categories: o,
|
|
144
|
+
searchPhrase: c
|
|
145
|
+
}).then((n) => {
|
|
146
|
+
const g = v(n);
|
|
147
|
+
t.writeProperties({
|
|
145
148
|
quickFilter: {
|
|
146
|
-
items:
|
|
149
|
+
items: w(g),
|
|
147
150
|
loading: !1
|
|
148
151
|
}
|
|
149
152
|
});
|
|
150
153
|
});
|
|
151
154
|
})));
|
|
152
|
-
const
|
|
153
|
-
return
|
|
154
|
-
|
|
155
|
-
}),
|
|
155
|
+
const p = (e) => q.getInstance(a).then((s) => s.fetch(A.GuideCategories, e)).then((s) => s.categories || []), u = (e) => q.getInstance(a).then((s) => s.fetch(A.TagsOnGuides, e)).then((s = []) => s);
|
|
156
|
+
return h().then((e) => {
|
|
157
|
+
f(e);
|
|
158
|
+
}), l("router:changed", (e, { current: s }) => {
|
|
156
159
|
const {
|
|
157
|
-
routeData: { params:
|
|
158
|
-
} =
|
|
159
|
-
|
|
160
|
-
}),
|
|
161
|
-
const { filterBadges:
|
|
162
|
-
|
|
163
|
-
const { tags:
|
|
164
|
-
|
|
160
|
+
routeData: { params: r }
|
|
161
|
+
} = s;
|
|
162
|
+
f(r);
|
|
163
|
+
}), l("data-client:fetched", (e, s) => {
|
|
164
|
+
const { filterBadges: r } = t.properties(), o = typeof r == "object" ? !!r.tag : !!r;
|
|
165
|
+
s.type === "match" && o && h().then(({ tag: c }) => {
|
|
166
|
+
const { tags: n = [] } = s.response, g = n.find((C) => C.id === c) || null;
|
|
167
|
+
t.writeProperties({ filters: { tag: g } });
|
|
165
168
|
});
|
|
166
169
|
}), () => {
|
|
167
|
-
|
|
170
|
+
y();
|
|
168
171
|
};
|
|
169
|
-
}), W =
|
|
172
|
+
}), W = J;
|
|
170
173
|
export {
|
|
171
174
|
W as default
|
|
172
175
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/search-component.ts"],"sourcesContent":["import {\n CategoriesResult,\n DataClient,\n DataType,\n MatchResult,\n QueryParameters,\n TagsResult,\n} from '@telia-ace/knowledge-data-client';\nimport { Category, createEventSubscriber, Tag } from '@telia-ace/knowledge-widget-core';\nimport { createReactComponent } from '@telia-ace/knowledge-widget-ui';\nimport { RoutingService } from '@telia-ace/widget-routing';\nimport {\n categoryTrail,\n createParams,\n deepClone,\n findCategoryById,\n getCategoryTrailAsObjects,\n Params,\n} from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\n\nexport type SearchComponentProps = {\n route?: string;\n role?: string;\n\n showSearchButton: boolean;\n showClearButton: boolean;\n showChildren: boolean;\n\n searchButtonLabel: string;\n clearButtonLabel: string;\n ariaLabel?: string;\n\n noMatchesLabel?: string;\n\n placeholder: string;\n autoFocus: boolean;\n incremental?: boolean | number;\n\n filterBadges?: FilterConfig | boolean;\n activeFilterBadges?: ActiveFilterBadges; // internal\n deleteFilterBadgeAriaLabel?: string;\n\n quickFilters?: FilterConfig | boolean;\n quickFilter?: Filter; // internal\n\n patchParams?: boolean;\n};\n\nexport type Filter = {\n items?: Category[] | Tag[];\n type?: 'guideCategory' | 'tag';\n symbol?: string;\n loading: boolean;\n open: boolean;\n};\n\nexport type ActiveFilterBadges = {\n guideCategory?: Category | null;\n tag: Tag[];\n tooltip?: string | null;\n initial?: boolean;\n};\n\nexport type FilterConfig = {\n autoSelect?: boolean;\n guideCategory?: boolean;\n tag?: boolean;\n position?: 'inside' | 'below';\n};\n\nconst hasActiveFilterBadge = (filters: ActiveFilterBadges) => {\n return !!filters.guideCategory || filters.tag.length > 0;\n};\n\nconst getTooltip = (categoryId: string, categories: Category[]) => {\n const trailIds: string[] = categoryTrail(categoryId, categories);\n const categoryMap = getCategoryTrailAsObjects(trailIds, categories);\n const trail = trailIds.map((id) => categoryMap.get(id)?.title || '').join(' / ');\n return trail;\n};\n\nconst sortRecursive = (items: any[]) => {\n const clone = deepClone(items);\n\n clone.sort((a: any, b: any) => {\n if (a.title > b.title) {\n return 1;\n }\n return -1;\n });\n\n clone.forEach((item: any) => {\n if (item.items) {\n item.items = sortRecursive(item.items);\n }\n });\n\n return clone;\n};\n\nconst SearchComponent = (container: Container) => {\n return createReactComponent(container, 'search', import('./search'), (component) => {\n const { events } = container.get('$widget');\n const [subscribe, unsubscribe] = createEventSubscriber(events);\n\n const load = (params: Params) => {\n const { activeFilterBadges } = component.properties<SearchComponentProps>();\n\n let tagIds: string[] = [];\n\n if (params.tag && params.tag.includes(',')) {\n tagIds = params.tag.split(',');\n } else if (params.tag) {\n tagIds = [params.tag];\n }\n\n const tagsNotAdded = tagIds.filter((tag) => {\n const added = activeFilterBadges?.tag.find((t) => t.id === tag);\n\n return !added;\n });\n\n const removedTags = (activeFilterBadges?.tag || []).filter((t) => {\n const removed = !tagIds.includes(t.id);\n\n return removed;\n });\n\n if (\n activeFilterBadges?.guideCategory?.id !== params.guideCategory ||\n tagsNotAdded.length > 0\n ) {\n component.actions.dispatch('quick-filter:add', {\n tagIds: params.tag ? params.tag.split(',') : [],\n category: params.guideCategory,\n initial: true,\n });\n }\n\n // tags no longer existing in the params should be removed\n removedTags.forEach((t) => {\n component.actions.dispatch('quick-filter:remove', { types: ['tag'], id: t.id });\n });\n };\n\n component.actions.create(\n 'search',\n (data: { filters: ActiveFilterBadges; filtersChanged: boolean; value: any }) => {\n const { value, filters, filtersChanged } = data;\n const { route = 'search', patchParams = false } =\n component.properties<SearchComponentProps>();\n\n if (\n value.length > 0 ||\n ((hasActiveFilterBadge(filters) || filtersChanged) && !filters?.initial)\n ) {\n container.getAsync('router').then((router: RoutingService) => {\n const { params } = router.getRouteData();\n\n let searchParams: { [key: string]: string | undefined } = {\n guide: undefined,\n id: undefined,\n accordion: undefined,\n contactMethod: undefined,\n };\n\n searchParams.phrase = value.length > 0 ? encodeURIComponent(value) : '';\n\n if (patchParams) {\n searchParams = {\n ...params,\n ...searchParams,\n };\n }\n\n if (filters?.guideCategory || filtersChanged) {\n searchParams.guideCategory = filters.guideCategory?.id || undefined;\n }\n\n if (filters?.tag.length > 0 || filtersChanged) {\n if (filters.tag.length > 0) {\n searchParams.tag = filters.tag.map((t) => t.id).join(',');\n } else {\n searchParams.tag = undefined;\n }\n }\n\n router.navigate(route, createParams(searchParams));\n });\n }\n }\n );\n\n component.actions.create('clear', (data, options) => {\n if (data.navigateToHome) {\n container.getAsync('router').then((router: RoutingService) => {\n const { name }: any = router.getInitialRoute();\n router.navigate(name);\n });\n }\n });\n\n const getRouterParams: () => Promise<Params> = () =>\n container\n .getAsync('router')\n .then((router: RoutingService) => router.getRouteData().params);\n\n component.actions.create(\n 'quick-filter:add',\n (data: { category?: string; tagIds: string[]; initial?: boolean }) => {\n const { category, tagIds, initial } = data;\n const { activeFilterBadges: previous } =\n component.properties<SearchComponentProps>();\n\n const activeFilterBadges: ActiveFilterBadges = previous || {\n initial,\n guideCategory: null,\n tag: [],\n tooltip: null,\n };\n\n return Promise.resolve()\n .then(() => {\n if (category) {\n return fetchCategories({}).then((categories) => {\n const categoryItem =\n <Category | null>findCategoryById(category, categories) || null;\n return {\n ...activeFilterBadges,\n guideCategory: categoryItem,\n tooltip: getTooltip(category, categories) || null,\n };\n });\n }\n return {\n ...activeFilterBadges,\n guideCategory: null,\n tooltip: null,\n };\n })\n .then((next) => {\n if (tagIds) {\n return fetchTags({}).then((tags) => {\n let matchingTags: Tag[] = [];\n tagIds.forEach((tagId) => {\n const match = tags.find((other) => other.id === tagId);\n\n if (match) {\n matchingTags.push(match);\n }\n });\n\n return {\n ...next,\n tag: matchingTags,\n };\n });\n }\n return {\n ...next,\n tag: [],\n };\n })\n .then((next) => {\n return component.writeProperties({\n activeFilterBadges: { ...next, initial: !!initial },\n });\n });\n }\n );\n\n component.actions.create(\n 'quick-filter:remove',\n ({ types, id }: { types: string[]; id?: string }) => {\n const { activeFilterBadges } = component.properties<SearchComponentProps>();\n\n component.writeProperties({\n activeFilterBadges: {\n ...activeFilterBadges,\n initial: false,\n guideCategory:\n types.indexOf('guideCategory') > -1\n ? null\n : activeFilterBadges?.guideCategory,\n tag:\n types.indexOf('tag') > -1\n ? activeFilterBadges?.tag.filter((t) => t.id !== id)\n : activeFilterBadges?.tag,\n },\n });\n }\n );\n\n component.actions.create('quick-filter:close', () => {\n return component.writeProperties({\n quickFilter: {\n items: [],\n loading: false,\n open: false,\n },\n });\n });\n\n component.actions.create('quick-filter:open', ({ symbol, type }) => {\n component.writeProperties({\n quickFilter: {\n type,\n symbol,\n items: [],\n loading: true,\n open: true,\n },\n });\n\n return getRouterParams().then(({ tag, guideCategory, phrase }) => {\n if (type === 'guideCategory') {\n return fetchCategories({\n tagId: tag,\n searchPhrase: phrase,\n }).then((items) => {\n const clone = deepClone(items);\n\n component.writeProperties({\n quickFilter: {\n items: sortRecursive(clone),\n loading: false,\n },\n });\n });\n }\n\n if (type === 'tag') {\n return fetchTags({\n categories: guideCategory,\n searchPhrase: phrase,\n }).then((items) => {\n const clone = deepClone(items);\n component.writeProperties({\n quickFilter: {\n items: sortRecursive(clone),\n loading: false,\n },\n });\n });\n }\n });\n });\n\n const fetchCategories = (params: QueryParameters) => {\n return DataClient.getInstance(container)\n .then((dataClient) => dataClient.fetch(DataType.GuideCategories, params))\n .then((categoriesResult: CategoriesResult) => categoriesResult.categories || []);\n };\n\n const fetchTags = (params: QueryParameters) => {\n return DataClient.getInstance(container)\n .then((dataClient) => dataClient.fetch(DataType.TagsOnGuides, params))\n .then((tags: TagsResult = []) => tags);\n };\n\n getRouterParams().then((params) => {\n load(params);\n });\n\n subscribe('router:changed', (_, { current }) => {\n const {\n routeData: { params },\n } = current;\n load(params);\n });\n\n subscribe('data-client:fetched', (event, data) => {\n const { filterBadges } = component.properties<SearchComponentProps>();\n\n const showTag = typeof filterBadges === 'object' ? !!filterBadges.tag : !!filterBadges;\n\n if (data.type === 'match' && showTag) {\n getRouterParams().then(({ tag: tagId }) => {\n const { tags = [] }: MatchResult = data.response;\n const tag = tags.find((t) => t.id === tagId) || null;\n component.writeProperties({ filters: { tag } });\n });\n }\n });\n\n return () => {\n unsubscribe();\n };\n });\n};\n\nexport default SearchComponent;\n"],"names":["hasActiveFilterBadge","filters","getTooltip","categoryId","categories","trailIds","categoryTrail","categoryMap","getCategoryTrailAsObjects","id","_a","sortRecursive","items","clone","deepClone","a","b","item","SearchComponent","container","createReactComponent","component","events","subscribe","unsubscribe","createEventSubscriber","load","params","activeFilterBadges","tagIds","tagsNotAdded","tag","t","removedTags","data","value","filtersChanged","route","patchParams","router","searchParams","__spreadValues","createParams","options","name","getRouterParams","category","initial","previous","fetchCategories","categoryItem","findCategoryById","__spreadProps","next","fetchTags","tags","matchingTags","tagId","match","other","types","symbol","type","guideCategory","phrase","DataClient","dataClient","DataType","categoriesResult","_","current","event","filterBadges","showTag","SearchComponent$1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/search-component.ts"],"sourcesContent":["import {\n CategoriesResult,\n DataClient,\n DataType,\n MatchResult,\n QueryParameters,\n TagsResult,\n} from '@telia-ace/knowledge-data-client';\nimport { Category, Tag, createEventSubscriber } from '@telia-ace/knowledge-widget-core';\nimport { createReactComponent } from '@telia-ace/knowledge-widget-ui';\nimport { RoutingService } from '@telia-ace/widget-routing';\nimport {\n Params,\n categoryTrail,\n createParams,\n deepClone,\n findCategoryById,\n getCategoryTrailAsObjects,\n} from '@telia-ace/widget-utilities';\nimport { Container } from '@webprovisions/platform';\n\nexport type SearchComponentProps = {\n route?: string;\n role?: string;\n\n showSearchButton: boolean;\n showClearButton: boolean;\n showChildren: boolean;\n\n searchButtonLabel: string;\n clearButtonLabel: string;\n ariaLabel?: string;\n\n noMatchesLabel?: string;\n\n placeholder: string;\n autoFocus: boolean;\n incremental?: boolean | number;\n\n filterBadges?: FilterConfig | boolean;\n activeFilterBadges?: ActiveFilterBadges; // internal\n deleteFilterBadgeAriaLabel?: string;\n\n quickFilters?: FilterConfig | boolean;\n quickFilter?: Filter; // internal\n\n patchParams?: boolean;\n};\n\nexport type Filter = {\n items?: Category[] | Tag[];\n type?: 'guideCategory' | 'tag';\n symbol?: string;\n loading: boolean;\n open: boolean;\n};\n\nexport type ActiveFilterBadges = {\n guideCategory?: Category | null;\n tag: Tag[];\n tooltip?: string | null;\n initial?: boolean;\n};\n\nexport type FilterConfig = {\n autoSelect?: boolean;\n guideCategory?: boolean;\n tag?: boolean;\n position?: 'inside' | 'below';\n};\n\nconst hasActiveFilterBadge = (filters: { tagIds: string[]; guideCategoryId?: string }) => {\n return !!filters.guideCategoryId || filters.tagIds.length > 0;\n};\n\nconst getTooltip = (categoryId: string, categories: Category[]) => {\n const trailIds: string[] = categoryTrail(categoryId, categories);\n const categoryMap = getCategoryTrailAsObjects(trailIds, categories);\n const trail = trailIds.map((id) => categoryMap.get(id)?.title || '').join(' / ');\n return trail;\n};\n\nconst sortRecursive = (items: any[]) => {\n const clone = deepClone(items);\n\n clone.sort((a: any, b: any) => {\n if (a.title > b.title) {\n return 1;\n }\n return -1;\n });\n\n clone.forEach((item: any) => {\n if (item.items) {\n item.items = sortRecursive(item.items);\n }\n });\n\n return clone;\n};\n\nconst SearchComponent = (container: Container) => {\n return createReactComponent(container, 'search', import('./search'), (component) => {\n const { events } = container.get('$widget');\n const [subscribe, unsubscribe] = createEventSubscriber(events);\n\n const load = async (params: Params) => {\n const tagIds: string[] = params.tag ? params.tag.split(',') : [];\n const guideCategoryId = params.guideCategory;\n const phrase = params.phrase || '';\n\n const { activeFilterBadges } = component.properties<SearchComponentProps>();\n\n const allTags = await fetchTags({});\n\n const allCategories = await fetchCategories({\n tagId: params.tag,\n searchPhrase: phrase,\n });\n\n const guideCategory = guideCategoryId\n ? <Category | null>findCategoryById(guideCategoryId, allCategories)\n : null;\n\n const tags = tagIds.reduce<Tag[]>((acc, id) => {\n const match = allTags.find((t) => t.id === id);\n\n if (match) {\n acc.push(match);\n }\n return acc;\n }, []);\n\n component.writeProperties({\n activeFilterBadges: {\n ...activeFilterBadges,\n tag: tags,\n guideCategory,\n tooltip: getTooltip(guideCategoryId, allCategories) || null,\n },\n });\n };\n\n component.actions.create(\n 'search',\n async (data: {\n filters: {\n tagIds: string[];\n guideCategoryId: string;\n initial?: boolean;\n };\n filtersChanged: boolean;\n value: string; // phrase\n }) => {\n const { route = 'search', patchParams = false } =\n component.properties<SearchComponentProps>();\n const { filters, filtersChanged, value } = data;\n\n if (\n value.length > 0 ||\n ((hasActiveFilterBadge(filters) || filtersChanged) && !filters.initial)\n ) {\n const router: RoutingService = await container.getAsync('router');\n\n const { params } = router.getRouteData();\n\n let searchParams: { [key: string]: string | undefined } = {\n guide: undefined,\n id: undefined,\n accordion: undefined,\n contactMethod: undefined,\n };\n\n searchParams.phrase = value.length > 0 ? encodeURIComponent(value) : '';\n\n if (patchParams) {\n searchParams = {\n ...params,\n ...searchParams,\n };\n }\n\n if (filters?.guideCategoryId || filtersChanged) {\n searchParams.guideCategory = filters.guideCategoryId || undefined;\n }\n\n if (filters?.tagIds.length > 0 || filtersChanged) {\n if (filters.tagIds.length > 0) {\n searchParams.tag = filters.tagIds.join(',');\n } else {\n searchParams.tag = undefined;\n }\n }\n\n router.navigate(route, createParams(searchParams));\n }\n }\n );\n\n component.actions.create('clear', (data, options) => {\n if (data.navigateToHome) {\n container.getAsync('router').then((router: RoutingService) => {\n const { name }: any = router.getInitialRoute();\n router.navigate(name);\n });\n }\n });\n\n const getRouterParams: () => Promise<Params> = () =>\n container\n .getAsync('router')\n .then((router: RoutingService) => router.getRouteData().params);\n\n component.actions.create(\n 'quick-filter:add',\n async (data: { category?: string; tagIds: string[]; initial?: boolean }) => {\n const { category, tagIds = [], initial } = data;\n\n const router: RoutingService = await container.getAsync('router');\n const { params } = router.getRouteData();\n\n const tagIdsFromUrl = params.tag ? params.tag.split(',') : [];\n\n component.actions.dispatch('search', {\n filtersChanged: true,\n filters: {\n guideCategoryId: category,\n tagIds: [...new Set([...tagIdsFromUrl, ...tagIds])],\n },\n value: params.phrase || '',\n });\n }\n );\n\n component.actions.create(\n 'quick-filter:remove',\n ({ types, ids = [] }: { types: string[]; ids?: string[] }) => {\n const { activeFilterBadges } = component.properties<SearchComponentProps>();\n\n container.getAsync('router').then((router: RoutingService) => {\n const { params } = router.getRouteData();\n\n component.actions.dispatch('search', {\n filtersChanged: true,\n filters: {\n guideCategoryId:\n types.indexOf('guideCategory') > -1\n ? null\n : activeFilterBadges?.guideCategory?.id,\n tagIds:\n types.indexOf('tag') > -1\n ? (activeFilterBadges?.tag || [])\n .filter((t) => !ids?.includes(t.id))\n .map((t) => t.id)\n : activeFilterBadges?.tag.map((t) => t.id) || [],\n },\n value: params.phrase || '',\n });\n });\n }\n );\n\n component.actions.create('quick-filter:close', () => {\n return component.writeProperties({\n quickFilter: {\n items: [],\n loading: false,\n open: false,\n },\n });\n });\n\n component.actions.create('quick-filter:open', ({ symbol, type }) => {\n component.writeProperties({\n quickFilter: {\n type,\n symbol,\n items: [],\n loading: true,\n open: true,\n },\n });\n\n return getRouterParams().then(({ tag, guideCategory, phrase }) => {\n if (type === 'guideCategory') {\n return fetchCategories({\n tagId: tag,\n searchPhrase: phrase,\n }).then((items) => {\n const clone = deepClone(items);\n\n component.writeProperties({\n quickFilter: {\n items: sortRecursive(clone),\n loading: false,\n },\n });\n });\n }\n\n if (type === 'tag') {\n return fetchTags({\n categories: guideCategory,\n searchPhrase: phrase,\n }).then((items) => {\n const clone = deepClone(items);\n component.writeProperties({\n quickFilter: {\n items: sortRecursive(clone),\n loading: false,\n },\n });\n });\n }\n });\n });\n\n const fetchCategories = (params: QueryParameters) => {\n return DataClient.getInstance(container)\n .then((dataClient) => dataClient.fetch(DataType.GuideCategories, params))\n .then((categoriesResult: CategoriesResult) => categoriesResult.categories || []);\n };\n\n const fetchTags = (params: QueryParameters) => {\n return DataClient.getInstance(container)\n .then((dataClient) => dataClient.fetch(DataType.TagsOnGuides, params))\n .then((tags: TagsResult = []) => tags);\n };\n\n getRouterParams().then((params) => {\n load(params);\n });\n\n subscribe('router:changed', (_, { current }) => {\n const {\n routeData: { params },\n } = current;\n load(params);\n });\n\n subscribe('data-client:fetched', (event, data) => {\n const { filterBadges } = component.properties<SearchComponentProps>();\n\n const showTag = typeof filterBadges === 'object' ? !!filterBadges.tag : !!filterBadges;\n\n if (data.type === 'match' && showTag) {\n getRouterParams().then(({ tag: tagId }) => {\n const { tags = [] }: MatchResult = data.response;\n const tag = tags.find((t) => t.id === tagId) || null;\n component.writeProperties({ filters: { tag } });\n });\n }\n });\n\n return () => {\n unsubscribe();\n };\n });\n};\n\nexport default SearchComponent;\n"],"names":["hasActiveFilterBadge","filters","getTooltip","categoryId","categories","trailIds","categoryTrail","categoryMap","getCategoryTrailAsObjects","id","_a","sortRecursive","items","clone","deepClone","a","b","item","SearchComponent","container","createReactComponent","component","events","subscribe","unsubscribe","createEventSubscriber","load","params","__async","tagIds","guideCategoryId","phrase","activeFilterBadges","allTags","fetchTags","allCategories","fetchCategories","guideCategory","findCategoryById","tags","acc","match","t","__spreadProps","__spreadValues","data","route","patchParams","filtersChanged","value","router","searchParams","createParams","options","name","getRouterParams","category","initial","tagIdsFromUrl","types","ids","symbol","type","tag","DataClient","dataClient","DataType","categoriesResult","_","current","event","filterBadges","showTag","tagId","SearchComponent$1"],"mappings":"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"}
|