@telia-ace/knowledge-widget-components-search 1.0.21 → 1.0.23

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/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
- Copyright © 2021, Telia Company AB. All rights reserved.
2
-
3
- THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
4
- THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
5
- AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
1
+ Copyright © 2021, Telia Company AB. All rights reserved.
2
+
3
+ THIS PACKAGE AND CONTAINING SOFTWARE IS PART OF
4
+ THE HUMANY SERVICE. BY USING THIS SOFTWARE YOU
5
+ AGREE TO THE FOLLOWING TERMS AND CONDITIONS:
6
6
  http://www.humany.com/legal
package/README.md CHANGED
@@ -1,3 +1,3 @@
1
- # `@telia-ace/knowledge-widget-components-search`
2
-
3
- Search component for ACE Knowledge Widgets.
1
+ # `@telia-ace/knowledge-widget-components-search`
2
+
3
+ Search component for ACE Knowledge Widgets.
@@ -1,10 +1,10 @@
1
- import React from 'react';
2
- declare type Props = {
3
- inputHasFocus: boolean;
4
- searchContainerRef: HTMLElement | null;
5
- showGuideCategory: boolean;
6
- showTag: boolean;
7
- position: 'inside' | 'below';
8
- };
9
- declare const FilterBadges: React.FC<Props>;
10
- export default FilterBadges;
1
+ import React from 'react';
2
+ declare type Props = {
3
+ inputHasFocus: boolean;
4
+ searchContainerRef: HTMLElement | null;
5
+ showGuideCategory: boolean;
6
+ showTag: boolean;
7
+ position: 'inside' | 'below';
8
+ };
9
+ declare const FilterBadges: React.FC<Props>;
10
+ export default FilterBadges;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import SearchComponent from './search-component';
2
- export default SearchComponent;
1
+ import SearchComponent from './search-component';
2
+ export default SearchComponent;
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ const B = (a) => !!a.guideCategory || !!a.tag, H = (a, e) => {
25
25
  return e.sort((o, f) => o.title > f.title ? 1 : -1), e.forEach((o) => {
26
26
  o.items && (o.items = v(o.items));
27
27
  }), e;
28
- }, K = (a) => x(a, "search", import("./search.ffb2e6c2.js"), (e) => {
28
+ }, K = (a) => x(a, "search", import("./search.ca38a836.js"), (e) => {
29
29
  const { events: o } = a.get("$widget"), [f, P] = F(o), C = (i) => {
30
30
  var r, n;
31
31
  const { activeFilterBadges: t } = e.properties();
@@ -55,30 +55,33 @@ const B = (a) => !!a.guideCategory || !!a.tag, H = (a, e) => {
55
55
  });
56
56
  });
57
57
  const y = () => a.getAsync("router").then((i) => i.getRouteData().params);
58
- e.actions.create("quick-filter:add", (i) => {
59
- const { category: t, tag: r, initial: n } = i, { activeFilterBadges: c } = e.properties(), g = c || {
60
- initial: n,
61
- guideCategory: null,
62
- tag: null,
63
- tooltip: null
64
- };
65
- return Promise.resolve().then(() => t ? m({}).then((s) => {
66
- const d = G(t, s) || null;
67
- return h(u({}, g), {
68
- guideCategory: d,
69
- tooltip: H(t, s) || null
70
- });
71
- }) : h(u({}, g), {
72
- guideCategory: null,
73
- tooltip: null
74
- })).then((s) => r ? k({}).then((d) => h(u({}, s), {
75
- tag: d.find((l) => l.id === r) || null
76
- })) : h(u({}, s), {
77
- tag: null
78
- })).then((s) => e.writeProperties({
79
- activeFilterBadges: h(u({}, s), { initial: !!n })
80
- }));
81
- }), e.actions.create("quick-filter:remove", ({ types: i }) => {
58
+ e.actions.create(
59
+ "quick-filter:add",
60
+ (i) => {
61
+ const { category: t, tag: r, initial: n } = i, { activeFilterBadges: c } = e.properties(), g = c || {
62
+ initial: n,
63
+ guideCategory: null,
64
+ tag: null,
65
+ tooltip: null
66
+ };
67
+ return Promise.resolve().then(() => t ? m({}).then((s) => {
68
+ const d = G(t, s) || null;
69
+ return h(u({}, g), {
70
+ guideCategory: d,
71
+ tooltip: H(t, s) || null
72
+ });
73
+ }) : h(u({}, g), {
74
+ guideCategory: null,
75
+ tooltip: null
76
+ })).then((s) => r ? k({}).then((d) => h(u({}, s), {
77
+ tag: d.find((l) => l.id === r) || null
78
+ })) : h(u({}, s), {
79
+ tag: null
80
+ })).then((s) => e.writeProperties({
81
+ activeFilterBadges: h(u({}, s), { initial: !!n })
82
+ }));
83
+ }
84
+ ), e.actions.create("quick-filter:remove", ({ types: i }) => {
82
85
  const { activeFilterBadges: t } = e.properties();
83
86
  e.writeProperties({
84
87
  activeFilterBadges: h(u({}, t), {
@@ -129,7 +132,9 @@ const B = (a) => !!a.guideCategory || !!a.tag, H = (a, e) => {
129
132
  });
130
133
  });
131
134
  })));
132
- const m = (i) => a.getAsync("dataClient").then((t) => t.fetch(A.GuideCategories, i)).then((t) => t.categories || []), k = (i) => a.getAsync("dataClient").then((t) => t.fetch(A.TagsOnGuides, i)).then((t = []) => t);
135
+ const m = (i) => a.getAsync("dataClient").then(
136
+ (t) => t.fetch(A.GuideCategories, i)
137
+ ).then((t) => t.categories || []), k = (i) => a.getAsync("dataClient").then((t) => t.fetch(A.TagsOnGuides, i)).then((t = []) => t);
133
138
  return y().then((i) => {
134
139
  C(i);
135
140
  }), f("router:changed", (i, { current: t }) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/search-component.ts"],"sourcesContent":["import { Category, createEventSubscriber, Tag } from '@telia-ace/knowledge-widget-core';\nimport {\n CategoriesResult,\n DataClient,\n DataType,\n MatchResult,\n QueryParameters,\n TagsResult,\n} from '@telia-ace/knowledge-widget-types-grid';\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 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 | null;\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;\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 if (\n activeFilterBadges?.guideCategory?.id !== params.guideCategory ||\n activeFilterBadges?.tag?.id !== params.tag\n ) {\n component.actions.dispatch('quick-filter:add', {\n tag: params.tag,\n category: params.guideCategory,\n initial: true,\n });\n }\n };\n\n component.actions.create('search', (data) => {\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 || filtersChanged) {\n searchParams.tag = filters.tag?.id || undefined;\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 (data: { category?: string; tag?: string; initial?: boolean }) => {\n const { category, tag, initial } = data;\n const { activeFilterBadges: previous } =\n component.properties<SearchComponentProps>();\n\n const activeFilterBadges: ActiveFilterBadges = previous || {\n initial,\n guideCategory: null,\n tag: null,\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 (tag) {\n return fetchTags({}).then((tags) => {\n return {\n ...next,\n tag: tags.find((t) => t.id === tag) || null,\n };\n });\n }\n return {\n ...next,\n tag: null,\n };\n })\n .then((next) => {\n return component.writeProperties({\n activeFilterBadges: { ...next, initial: !!initial },\n });\n });\n }\n );\n\n component.actions.create('quick-filter:remove', ({ types }: { types: 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: types.indexOf('tag') > -1 ? null : activeFilterBadges?.tag,\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 container\n .getAsync('dataClient')\n .then((dataClient: DataClient) =>\n dataClient.fetch(DataType.GuideCategories, params)\n )\n .then((categoriesResult: CategoriesResult) => categoriesResult.categories || []);\n };\n\n const fetchTags = (params: QueryParameters) => {\n return container\n .getAsync('dataClient')\n .then((dataClient: 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":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/search-component.ts"],"sourcesContent":["import { Category, createEventSubscriber, Tag } from '@telia-ace/knowledge-widget-core';\r\nimport {\r\n CategoriesResult,\r\n DataClient,\r\n DataType,\r\n MatchResult,\r\n QueryParameters,\r\n TagsResult,\r\n} from '@telia-ace/knowledge-widget-types-grid';\r\nimport { createReactComponent } from '@telia-ace/knowledge-widget-ui';\r\nimport { RoutingService } from '@telia-ace/widget-routing';\r\nimport {\r\n categoryTrail,\r\n createParams,\r\n deepClone,\r\n findCategoryById,\r\n getCategoryTrailAsObjects,\r\n Params,\r\n} from '@telia-ace/widget-utilities';\r\nimport { Container } from '@webprovisions/platform';\r\n\r\nexport type SearchComponentProps = {\r\n route?: string;\r\n role?: string;\r\n\r\n showSearchButton: boolean;\r\n showClearButton: boolean;\r\n showChildren: boolean;\r\n\r\n searchButtonLabel: string;\r\n clearButtonLabel: string;\r\n ariaLabel?: string;\r\n\r\n placeholder: string;\r\n autoFocus: boolean;\r\n incremental?: boolean | number;\r\n\r\n filterBadges?: FilterConfig | boolean;\r\n activeFilterBadges?: ActiveFilterBadges; // internal\r\n deleteFilterBadgeAriaLabel?: string;\r\n\r\n quickFilters?: FilterConfig | boolean;\r\n quickFilter?: Filter; // internal\r\n\r\n patchParams?: boolean;\r\n};\r\n\r\nexport type Filter = {\r\n items?: Category[] | Tag[];\r\n type?: 'guideCategory' | 'tag';\r\n symbol?: string;\r\n loading: boolean;\r\n open: boolean;\r\n};\r\n\r\nexport type ActiveFilterBadges = {\r\n guideCategory?: Category | null;\r\n tag?: Tag | null;\r\n tooltip?: string | null;\r\n initial?: boolean;\r\n};\r\n\r\nexport type FilterConfig = {\r\n autoSelect?: boolean;\r\n guideCategory?: boolean;\r\n tag?: boolean;\r\n position?: 'inside' | 'below';\r\n};\r\n\r\nconst hasActiveFilterBadge = (filters: ActiveFilterBadges) => {\r\n return !!filters.guideCategory || !!filters.tag;\r\n};\r\n\r\nconst getTooltip = (categoryId: string, categories: Category[]) => {\r\n const trailIds: string[] = categoryTrail(categoryId, categories);\r\n const categoryMap = getCategoryTrailAsObjects(trailIds, categories);\r\n const trail = trailIds.map((id) => categoryMap.get(id)?.title || '').join(' / ');\r\n return trail;\r\n};\r\n\r\nconst sortRecursive = (items: any[]) => {\r\n const clone = deepClone(items);\r\n\r\n clone.sort((a: any, b: any) => {\r\n if (a.title > b.title) {\r\n return 1;\r\n }\r\n return -1;\r\n });\r\n\r\n clone.forEach((item: any) => {\r\n if (item.items) {\r\n item.items = sortRecursive(item.items);\r\n }\r\n });\r\n\r\n return clone;\r\n};\r\n\r\nconst SearchComponent = (container: Container) => {\r\n return createReactComponent(container, 'search', import('./search'), (component) => {\r\n const { events } = container.get('$widget');\r\n const [subscribe, unsubscribe] = createEventSubscriber(events);\r\n\r\n const load = (params: Params) => {\r\n const { activeFilterBadges } = component.properties<SearchComponentProps>();\r\n\r\n if (\r\n activeFilterBadges?.guideCategory?.id !== params.guideCategory ||\r\n activeFilterBadges?.tag?.id !== params.tag\r\n ) {\r\n component.actions.dispatch('quick-filter:add', {\r\n tag: params.tag,\r\n category: params.guideCategory,\r\n initial: true,\r\n });\r\n }\r\n };\r\n\r\n component.actions.create('search', (data) => {\r\n const { value, filters, filtersChanged } = data;\r\n const { route = 'search', patchParams = false } =\r\n component.properties<SearchComponentProps>();\r\n\r\n if (\r\n value.length > 0 ||\r\n ((hasActiveFilterBadge(filters) || filtersChanged) && !filters?.initial)\r\n ) {\r\n container.getAsync('router').then((router: RoutingService) => {\r\n const { params } = router.getRouteData();\r\n\r\n let searchParams: { [key: string]: string | undefined } = {\r\n guide: undefined,\r\n id: undefined,\r\n accordion: undefined,\r\n contactMethod: undefined,\r\n };\r\n\r\n searchParams.phrase = value.length > 0 ? encodeURIComponent(value) : '';\r\n\r\n if (patchParams) {\r\n searchParams = {\r\n ...params,\r\n ...searchParams,\r\n };\r\n }\r\n\r\n if (filters?.guideCategory || filtersChanged) {\r\n searchParams.guideCategory = filters.guideCategory?.id || undefined;\r\n }\r\n\r\n if (filters?.tag || filtersChanged) {\r\n searchParams.tag = filters.tag?.id || undefined;\r\n }\r\n\r\n router.navigate(route, createParams(searchParams));\r\n });\r\n }\r\n });\r\n\r\n component.actions.create('clear', (data, options) => {\r\n if (data.navigateToHome) {\r\n container.getAsync('router').then((router: RoutingService) => {\r\n const { name }: any = router.getInitialRoute();\r\n router.navigate(name);\r\n });\r\n }\r\n });\r\n\r\n const getRouterParams: () => Promise<Params> = () =>\r\n container\r\n .getAsync('router')\r\n .then((router: RoutingService) => router.getRouteData().params);\r\n\r\n component.actions.create(\r\n 'quick-filter:add',\r\n (data: { category?: string; tag?: string; initial?: boolean }) => {\r\n const { category, tag, initial } = data;\r\n const { activeFilterBadges: previous } =\r\n component.properties<SearchComponentProps>();\r\n\r\n const activeFilterBadges: ActiveFilterBadges = previous || {\r\n initial,\r\n guideCategory: null,\r\n tag: null,\r\n tooltip: null,\r\n };\r\n\r\n return Promise.resolve()\r\n .then(() => {\r\n if (category) {\r\n return fetchCategories({}).then((categories) => {\r\n const categoryItem =\r\n <Category | null>findCategoryById(category, categories) || null;\r\n return {\r\n ...activeFilterBadges,\r\n guideCategory: categoryItem,\r\n tooltip: getTooltip(category, categories) || null,\r\n };\r\n });\r\n }\r\n return {\r\n ...activeFilterBadges,\r\n guideCategory: null,\r\n tooltip: null,\r\n };\r\n })\r\n .then((next) => {\r\n if (tag) {\r\n return fetchTags({}).then((tags) => {\r\n return {\r\n ...next,\r\n tag: tags.find((t) => t.id === tag) || null,\r\n };\r\n });\r\n }\r\n return {\r\n ...next,\r\n tag: null,\r\n };\r\n })\r\n .then((next) => {\r\n return component.writeProperties({\r\n activeFilterBadges: { ...next, initial: !!initial },\r\n });\r\n });\r\n }\r\n );\r\n\r\n component.actions.create('quick-filter:remove', ({ types }: { types: string[] }) => {\r\n const { activeFilterBadges } = component.properties<SearchComponentProps>();\r\n\r\n component.writeProperties({\r\n activeFilterBadges: {\r\n ...activeFilterBadges,\r\n initial: false,\r\n guideCategory:\r\n types.indexOf('guideCategory') > -1\r\n ? null\r\n : activeFilterBadges?.guideCategory,\r\n tag: types.indexOf('tag') > -1 ? null : activeFilterBadges?.tag,\r\n },\r\n });\r\n });\r\n\r\n component.actions.create('quick-filter:close', () => {\r\n return component.writeProperties({\r\n quickFilter: {\r\n items: [],\r\n loading: false,\r\n open: false,\r\n },\r\n });\r\n });\r\n\r\n component.actions.create('quick-filter:open', ({ symbol, type }) => {\r\n component.writeProperties({\r\n quickFilter: {\r\n type,\r\n symbol,\r\n items: [],\r\n loading: true,\r\n open: true,\r\n },\r\n });\r\n\r\n return getRouterParams().then(({ tag, guideCategory, phrase }) => {\r\n if (type === 'guideCategory') {\r\n return fetchCategories({\r\n tagId: tag,\r\n searchPhrase: phrase,\r\n }).then((items) => {\r\n const clone = deepClone(items);\r\n\r\n component.writeProperties({\r\n quickFilter: {\r\n items: sortRecursive(clone),\r\n loading: false,\r\n },\r\n });\r\n });\r\n }\r\n\r\n if (type === 'tag') {\r\n return fetchTags({\r\n categories: guideCategory,\r\n searchPhrase: phrase,\r\n }).then((items) => {\r\n const clone = deepClone(items);\r\n component.writeProperties({\r\n quickFilter: {\r\n items: sortRecursive(clone),\r\n loading: false,\r\n },\r\n });\r\n });\r\n }\r\n });\r\n });\r\n\r\n const fetchCategories = (params: QueryParameters) => {\r\n return container\r\n .getAsync('dataClient')\r\n .then((dataClient: DataClient) =>\r\n dataClient.fetch(DataType.GuideCategories, params)\r\n )\r\n .then((categoriesResult: CategoriesResult) => categoriesResult.categories || []);\r\n };\r\n\r\n const fetchTags = (params: QueryParameters) => {\r\n return container\r\n .getAsync('dataClient')\r\n .then((dataClient: DataClient) => dataClient.fetch(DataType.TagsOnGuides, params))\r\n .then((tags: TagsResult = []) => tags);\r\n };\r\n\r\n getRouterParams().then((params) => {\r\n load(params);\r\n });\r\n\r\n subscribe('router:changed', (_, { current }) => {\r\n const {\r\n routeData: { params },\r\n } = current;\r\n load(params);\r\n });\r\n\r\n subscribe('data-client:fetched', (event, data) => {\r\n const { filterBadges } = component.properties<SearchComponentProps>();\r\n\r\n const showTag = typeof filterBadges === 'object' ? !!filterBadges.tag : !!filterBadges;\r\n\r\n if (data.type === 'match' && showTag) {\r\n getRouterParams().then(({ tag: tagId }) => {\r\n const { tags = [] }: MatchResult = data.response;\r\n const tag = tags.find((t) => t.id === tagId) || null;\r\n component.writeProperties({ filters: { tag } });\r\n });\r\n }\r\n });\r\n\r\n return () => {\r\n unsubscribe();\r\n };\r\n });\r\n};\r\n\r\nexport default SearchComponent;\r\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","_b","data","value","filtersChanged","route","patchParams","router","searchParams","__spreadValues","createParams","options","name","getRouterParams","category","tag","initial","previous","fetchCategories","categoryItem","findCategoryById","__spreadProps","next","fetchTags","tags","t","types","symbol","type","guideCategory","phrase","dataClient","DataType","categoriesResult","_","current","event","filterBadges","showTag","tagId"],"mappings":"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"}
@@ -1,17 +1,17 @@
1
- import { Category, Tag } from '@telia-ace/knowledge-widget-core';
2
- import React from 'react';
3
- declare type Props = {
4
- filterPhrase: string;
5
- items: Category[] | Tag[];
6
- filterType: 'guideCategory' | 'tag';
7
- searchContainer: HTMLElement | null;
8
- filterContainer: HTMLElement | null;
9
- inputHasFocus: boolean;
10
- };
11
- export declare const getFocusedIndex: (elem: HTMLElement) => {
12
- anchors: HTMLAnchorElement[];
13
- focusedIndex: number;
14
- };
15
- export declare const focusInput: (searchContainerRef: HTMLElement | null) => void;
16
- declare const QuickFilterItemList: React.FC<Props>;
17
- export default QuickFilterItemList;
1
+ import { Category, Tag } from '@telia-ace/knowledge-widget-core';
2
+ import React from 'react';
3
+ declare type Props = {
4
+ filterPhrase: string;
5
+ items: Category[] | Tag[];
6
+ filterType: 'guideCategory' | 'tag';
7
+ searchContainer: HTMLElement | null;
8
+ filterContainer: HTMLElement | null;
9
+ inputHasFocus: boolean;
10
+ };
11
+ export declare const getFocusedIndex: (elem: HTMLElement) => {
12
+ anchors: HTMLAnchorElement[];
13
+ focusedIndex: number;
14
+ };
15
+ export declare const focusInput: (searchContainerRef: HTMLElement | null) => void;
16
+ declare const QuickFilterItemList: React.FC<Props>;
17
+ export default QuickFilterItemList;
@@ -1,7 +1,7 @@
1
- declare type Props = {
2
- phrase: string;
3
- inputHasFocus: boolean;
4
- searchContainerRef: HTMLElement | null;
5
- };
6
- declare const _default: ({ phrase, inputHasFocus, searchContainerRef }: Props) => JSX.Element | null;
7
- export default _default;
1
+ declare type Props = {
2
+ phrase: string;
3
+ inputHasFocus: boolean;
4
+ searchContainerRef: HTMLElement | null;
5
+ };
6
+ declare const _default: ({ phrase, inputHasFocus, searchContainerRef }: Props) => JSX.Element | null;
7
+ export default _default;
@@ -1,42 +1,42 @@
1
- import { Category, Tag } from '@telia-ace/knowledge-widget-core';
2
- import { Container } from '@webprovisions/platform';
3
- export declare type SearchComponentProps = {
4
- route?: string;
5
- role?: string;
6
- showSearchButton: boolean;
7
- showClearButton: boolean;
8
- showChildren: boolean;
9
- searchButtonLabel: string;
10
- clearButtonLabel: string;
11
- ariaLabel?: string;
12
- placeholder: string;
13
- autoFocus: boolean;
14
- incremental?: boolean | number;
15
- filterBadges?: FilterConfig | boolean;
16
- activeFilterBadges?: ActiveFilterBadges;
17
- deleteFilterBadgeAriaLabel?: string;
18
- quickFilters?: FilterConfig | boolean;
19
- quickFilter?: Filter;
20
- patchParams?: boolean;
21
- };
22
- export declare type Filter = {
23
- items?: Category[] | Tag[];
24
- type?: 'guideCategory' | 'tag';
25
- symbol?: string;
26
- loading: boolean;
27
- open: boolean;
28
- };
29
- export declare type ActiveFilterBadges = {
30
- guideCategory?: Category | null;
31
- tag?: Tag | null;
32
- tooltip?: string | null;
33
- initial?: boolean;
34
- };
35
- export declare type FilterConfig = {
36
- autoSelect?: boolean;
37
- guideCategory?: boolean;
38
- tag?: boolean;
39
- position?: 'inside' | 'below';
40
- };
41
- declare const SearchComponent: (container: Container) => Promise<void>;
42
- export default SearchComponent;
1
+ import { Category, Tag } from '@telia-ace/knowledge-widget-core';
2
+ import { Container } from '@webprovisions/platform';
3
+ export declare type SearchComponentProps = {
4
+ route?: string;
5
+ role?: string;
6
+ showSearchButton: boolean;
7
+ showClearButton: boolean;
8
+ showChildren: boolean;
9
+ searchButtonLabel: string;
10
+ clearButtonLabel: string;
11
+ ariaLabel?: string;
12
+ placeholder: string;
13
+ autoFocus: boolean;
14
+ incremental?: boolean | number;
15
+ filterBadges?: FilterConfig | boolean;
16
+ activeFilterBadges?: ActiveFilterBadges;
17
+ deleteFilterBadgeAriaLabel?: string;
18
+ quickFilters?: FilterConfig | boolean;
19
+ quickFilter?: Filter;
20
+ patchParams?: boolean;
21
+ };
22
+ export declare type Filter = {
23
+ items?: Category[] | Tag[];
24
+ type?: 'guideCategory' | 'tag';
25
+ symbol?: string;
26
+ loading: boolean;
27
+ open: boolean;
28
+ };
29
+ export declare type ActiveFilterBadges = {
30
+ guideCategory?: Category | null;
31
+ tag?: Tag | null;
32
+ tooltip?: string | null;
33
+ initial?: boolean;
34
+ };
35
+ export declare type FilterConfig = {
36
+ autoSelect?: boolean;
37
+ guideCategory?: boolean;
38
+ tag?: boolean;
39
+ position?: 'inside' | 'below';
40
+ };
41
+ declare const SearchComponent: (container: Container) => Promise<void>;
42
+ export default SearchComponent;