@telia-ace/knowledge-widget-plugins 1.0.29 → 1.0.31

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-plugins`
2
-
3
- Plugins for ACE Knowledge Widgets.
1
+ # `@telia-ace/knowledge-widget-plugins`
2
+
3
+ Plugins for ACE Knowledge Widgets.
@@ -1,9 +1,9 @@
1
- import { Container } from '@webprovisions/platform';
2
- export declare type FavoritePlatform = {
3
- add: (guideId: string) => Promise<string[]>;
4
- remove: (guideId: string) => Promise<string[]>;
5
- clear: () => Promise<string[]>;
6
- get: () => string[];
7
- };
8
- declare const createFavoritePlatform: (container: Container) => FavoritePlatform;
9
- export default createFavoritePlatform;
1
+ import { Container } from '@webprovisions/platform';
2
+ export declare type FavoritePlatform = {
3
+ add: (guideId: string) => Promise<string[]>;
4
+ remove: (guideId: string) => Promise<string[]>;
5
+ clear: () => Promise<string[]>;
6
+ get: () => string[];
7
+ };
8
+ declare const createFavoritePlatform: (container: Container) => FavoritePlatform;
9
+ export default createFavoritePlatform;
@@ -1,9 +1,9 @@
1
- import { Plugin } from '@telia-ace/knowledge-widget-core';
2
- import { Container } from '@webprovisions/platform';
3
- import { FavoritePlatform } from './favorite-platform';
4
- export declare type FavoritePluginSettings = {};
5
- export default class FavoritePlugin extends Plugin {
6
- settings: FavoritePluginSettings;
7
- handler: FavoritePlatform;
8
- constructor(container: Container, settings: FavoritePluginSettings);
9
- }
1
+ import { Plugin } from '@telia-ace/knowledge-widget-core';
2
+ import { Container } from '@webprovisions/platform';
3
+ import { FavoritePlatform } from './favorite-platform';
4
+ export declare type FavoritePluginSettings = {};
5
+ export default class FavoritePlugin extends Plugin {
6
+ settings: FavoritePluginSettings;
7
+ handler: FavoritePlatform;
8
+ constructor(container: Container, settings: FavoritePluginSettings);
9
+ }
@@ -1,2 +1,2 @@
1
- import FavoritePlugin from './favorite';
2
- export default FavoritePlugin;
1
+ import FavoritePlugin from './favorite';
2
+ export default FavoritePlugin;
@@ -1,8 +1,8 @@
1
- import { Container } from '@webprovisions/platform';
2
- export declare const addFavoriteToStorage: (guideId: string, container: Container) => Promise<string[]>;
3
- export declare const removeFavoriteFromStorage: (guideId: string, container: Container) => Promise<string[]>;
4
- export declare const readFavoritesFromStorage: (container: Container) => Promise<string[]>;
5
- export declare const removeAllFavoritesFromStorage: (container: Container) => Promise<never[]>;
6
- export declare const notifyListeners: (container: Container, data: {
7
- updated: string[];
8
- }) => void;
1
+ import { Container } from '@webprovisions/platform';
2
+ export declare const addFavoriteToStorage: (guideId: string, container: Container) => Promise<string[]>;
3
+ export declare const removeFavoriteFromStorage: (guideId: string, container: Container) => Promise<string[]>;
4
+ export declare const readFavoritesFromStorage: (container: Container) => Promise<string[]>;
5
+ export declare const removeAllFavoritesFromStorage: (container: Container) => Promise<never[]>;
6
+ export declare const notifyListeners: (container: Container, data: {
7
+ updated: string[];
8
+ }) => void;
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
- export { default as FavoritePlugin } from './favorite';
2
- export { default as LegacyResourcesPlugin } from './legacy-resources';
3
- export { default as MiscBehaviorPlugin } from './misc-behavior';
1
+ export { default as FavoritePlugin } from './favorite';
2
+ export { default as LegacyResourcesPlugin } from './legacy-resources';
3
+ export { default as MiscBehaviorPlugin } from './misc-behavior';
package/dist/index.js CHANGED
@@ -1,93 +1,100 @@
1
- var d = (t, e, s) => new Promise((o, r) => {
2
- var i = (a) => {
1
+ var B = Object.defineProperty;
2
+ var M = (e, t, n) => t in e ? B(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
+ var w = (e, t, n) => (M(e, typeof t != "symbol" ? t + "" : t, n), n);
4
+ var d = (e, t, n) => new Promise((o, r) => {
5
+ var a = (i) => {
3
6
  try {
4
- n(s.next(a));
7
+ s(n.next(i));
5
8
  } catch (l) {
6
9
  r(l);
7
10
  }
8
- }, c = (a) => {
11
+ }, c = (i) => {
9
12
  try {
10
- n(s.throw(a));
13
+ s(n.throw(i));
11
14
  } catch (l) {
12
15
  r(l);
13
16
  }
14
- }, n = (a) => a.done ? o(a.value) : Promise.resolve(a.value).then(i, c);
15
- n((s = s.apply(t, e)).next());
17
+ }, s = (i) => i.done ? o(i.value) : Promise.resolve(i.value).then(a, c);
18
+ s((n = n.apply(e, t)).next());
16
19
  });
17
- import { Plugin as v, extendComponent as T } from "@telia-ace/knowledge-widget-core";
18
- import { createStorageWriter as L, StorageCategory as C, StorageMedium as S, readStorage as x } from "@telia-ace/widget-services";
19
- import { ResourceLoader as B } from "@telia-ace/knowledge-resource-loader";
20
- import { DataType as M } from "@telia-ace/knowledge-widget-types-grid";
21
- const P = "favorites", E = (t) => d(void 0, null, function* () {
22
- return yield L(t, P, C.Necessary, {
23
- medium: S.Local
20
+ import { Plugin as E, extendComponent as O } from "@telia-ace/knowledge-widget-core";
21
+ import { createStorageWriter as C, StorageCategory as S, StorageMedium as x, readStorage as P } from "@telia-ace/widget-services";
22
+ import { ResourceLoader as $ } from "@telia-ace/knowledge-resource-loader";
23
+ import { DataType as H } from "@telia-ace/knowledge-widget-types-grid";
24
+ const b = "favorites", k = (e) => d(void 0, null, function* () {
25
+ return yield C(e, b, S.Necessary, {
26
+ medium: x.Local
24
27
  });
25
- }), k = (t) => d(void 0, null, function* () {
26
- return (yield x(t, P, S.Local)) || [];
27
- }), O = (t, e) => d(void 0, null, function* () {
28
- const s = yield E(e), o = yield k(e);
29
- if (o.indexOf(t) > -1)
28
+ }), A = (e) => d(void 0, null, function* () {
29
+ return (yield P(e, b, x.Local)) || [];
30
+ }), N = (e, t) => d(void 0, null, function* () {
31
+ const n = yield k(t), o = yield A(t);
32
+ if (o.indexOf(e) > -1)
30
33
  return o;
31
- const r = o.concat(t);
32
- return s(r), r;
33
- }), $ = (t, e) => d(void 0, null, function* () {
34
- const s = yield E(e), r = (yield k(e)).filter((i) => i !== t);
35
- return s(r), r;
36
- }), H = (t) => d(void 0, null, function* () {
34
+ const r = o.concat(e);
35
+ return n(r), r;
36
+ }), D = (e, t) => d(void 0, null, function* () {
37
+ const n = yield k(t), r = (yield A(t)).filter((a) => a !== e);
38
+ return n(r), r;
39
+ }), W = (e) => d(void 0, null, function* () {
37
40
  try {
38
- return yield k(t);
39
- } catch (e) {
41
+ return yield A(e);
42
+ } catch (t) {
40
43
  return [];
41
44
  }
42
- }), N = (t) => d(void 0, null, function* () {
43
- return (yield E(t))([]), [];
44
- }), w = (t, e) => {
45
- const { updated: s } = e, { events: o } = t.get("$widget");
46
- o.dispatch("widget:favorites-updated", { updated: s });
47
- }, D = (t) => {
48
- let e = [];
49
- const s = () => {
50
- H(t).then((n) => {
51
- e = n;
45
+ }), G = (e) => d(void 0, null, function* () {
46
+ return (yield k(e))([]), [];
47
+ }), v = (e, t) => {
48
+ const { updated: n } = t, { events: o } = e.get("$widget");
49
+ o.dispatch("widget:favorites-updated", { updated: n });
50
+ }, K = (e) => {
51
+ let t = [];
52
+ const n = () => {
53
+ W(e).then((s) => {
54
+ t = s;
52
55
  });
53
- }, o = () => e, r = (n) => d(void 0, null, function* () {
54
- const a = yield O(n, t);
55
- return e = a, w(t, { updated: a }), a;
56
- }), i = () => d(void 0, null, function* () {
57
- const n = yield N(t);
58
- return e = n, w(t, { updated: n }), n;
59
- }), c = (n) => d(void 0, null, function* () {
60
- const a = yield $(n, t);
61
- return e = a, w(t, { updated: a }), a;
56
+ }, o = () => t, r = (s) => d(void 0, null, function* () {
57
+ const i = yield N(s, e);
58
+ return t = i, v(e, { updated: i }), i;
59
+ }), a = () => d(void 0, null, function* () {
60
+ const s = yield G(e);
61
+ return t = s, v(e, { updated: s }), s;
62
+ }), c = (s) => d(void 0, null, function* () {
63
+ const i = yield D(s, e);
64
+ return t = i, v(e, { updated: i }), i;
62
65
  });
63
- return s(), {
66
+ return n(), {
64
67
  add: r,
65
68
  get: o,
66
- clear: i,
69
+ clear: a,
67
70
  remove: c
68
71
  };
69
72
  };
70
- class Y extends v {
71
- constructor(e, s) {
72
- super(e), this.settings = s, this.handler = D(e), e.register("favorites", this.handler);
73
+ class Z extends E {
74
+ constructor(n, o) {
75
+ super(n);
76
+ w(this, "handler");
77
+ this.settings = o, this.handler = K(n), n.register("favorites", this.handler);
73
78
  }
74
79
  }
75
- const W = (t) => {
76
- const e = document.createElement("a");
77
- return e.href = t, `//${e.hostname}/`;
80
+ const R = (e) => {
81
+ const t = document.createElement("a");
82
+ return t.href = e, `//${t.hostname}/`;
78
83
  };
79
- class J extends v {
80
- constructor(e, s = {}) {
81
- super(e), this.widget.events.subscribeOnce("widget:attached", () => {
82
- var i;
84
+ class ee extends E {
85
+ constructor(t, n = {}) {
86
+ super(t), this.widget.events.subscribeOnce("widget:attached", () => {
87
+ var a;
83
88
  const {
84
89
  data: { projection: o }
85
90
  } = this.container.get("$settings");
86
91
  if (o) {
87
- const c = W(o), n = new B();
88
- n.add(`${c}ClientLibraries/Supplementary/font-awesome-4.7.0/css/font-awesome.min.css`), n.add(`${c}${(i = this.container.parent) == null ? void 0 : i.name}/widgets.css`), n.load();
92
+ const c = R(o), s = new $();
93
+ s.add(
94
+ `${c}ClientLibraries/Supplementary/font-awesome-4.7.0/css/font-awesome.min.css`
95
+ ), s.add(`${c}${(a = this.container.parent) == null ? void 0 : a.name}/widgets.css`), s.load();
89
96
  }
90
- const { initialCss: r = "" } = s;
97
+ const { initialCss: r = "" } = n;
91
98
  if (r.length) {
92
99
  const c = document.createElement("style");
93
100
  c.innerHTML = r, document.head.appendChild(c);
@@ -95,101 +102,120 @@ class J extends v {
95
102
  });
96
103
  }
97
104
  }
98
- const G = (t, e) => d(void 0, null, function* () {
99
- const { denyAutoExpandContactMethods: s } = e;
100
- if (s) {
101
- const o = new RegExp(s);
102
- T(t, "contact-list", (r) => {
103
- r.properties(({ contactMethods: i = [] }) => {
104
- const c = i.filter(({ clientName: n }) => o.test(n));
105
+ const U = (e, t) => d(void 0, null, function* () {
106
+ const { denyAutoExpandContactMethods: n } = t;
107
+ if (n) {
108
+ const o = new RegExp(n);
109
+ O(e, "contact-list", (r) => {
110
+ r.properties(({ contactMethods: a = [] }) => {
111
+ const c = a.filter(
112
+ ({ clientName: s }) => o.test(s)
113
+ );
105
114
  if (c.length)
106
- return c.forEach((n) => {
107
- n.expanded = !1, n.inline = !1;
108
- }), { contactMethods: i };
115
+ return c.forEach((s) => {
116
+ s.expanded = !1, s.inline = !1;
117
+ }), { contactMethods: a };
109
118
  });
110
119
  });
111
120
  }
112
121
  return [];
113
- }), F = "misc-behavior:hideBackValue", K = (t, e) => d(void 0, null, function* () {
114
- const s = (r, i) => t.getAsync("dataClient").then((c) => c.fetch(M.ContactMethodCategories, {}).then((n) => {
115
- if (n) {
116
- const { categories: a = [], contactMethods: l = [] } = n;
117
- if (i === null)
118
- return i = a.length === 0 && l.length === 1, L(r.container, F, C.Functional).then((m) => m(i));
122
+ }), L = "misc-behavior:hideBackValue", _ = (e, t) => d(void 0, null, function* () {
123
+ const n = (r, a) => e.getAsync("dataClient").then((c) => c.fetch(H.ContactMethodCategories, {}).then((s) => {
124
+ if (s) {
125
+ const { categories: i = [], contactMethods: l = [] } = s;
126
+ if (a === null)
127
+ return a = i.length === 0 && l.length === 1, C(
128
+ r.container,
129
+ L,
130
+ S.Functional
131
+ ).then((m) => m(a));
119
132
  }
120
- })), { events: o } = t.get("$widget");
121
- return o.subscribe("widget:render-state-changed", (r, i) => d(void 0, null, function* () {
122
- if (r.target.state === "activated" && i.next === "open") {
123
- const { hideBackOnSingleContactMethod: c } = e;
124
- let n;
125
- const a = t.get("$widget"), { name: l, implementation: m } = a;
126
- if (l.endsWith("_contact") ? n = m.widgets.get(l.replace("_contact", "")) : l.endsWith("_contact-method") || (n = a), n) {
133
+ })), { events: o } = e.get("$widget");
134
+ return o.subscribe("widget:render-state-changed", (r, a) => d(void 0, null, function* () {
135
+ if (r.target.state === "activated" && a.next === "open") {
136
+ const { hideBackOnSingleContactMethod: c } = t;
137
+ let s;
138
+ const i = e.get("$widget"), { name: l, implementation: m } = i;
139
+ if (l.endsWith("_contact") ? s = m.widgets.get(l.replace("_contact", "")) : l.endsWith("_contact-method") || (s = i), s) {
127
140
  let u = null;
128
- const f = yield x(n.container, F), h = (yield n.container.getAsync("components")).components().ofType("widget-header").select();
129
- typeof f == "boolean" ? u = f : c && (yield s(n, u)), (c || typeof u == "boolean") && (u && h.actions.dispatch("show-back", !1), h.actions.watch("show-back", (g, p) => p(u && g ? !1 : g)));
141
+ const f = yield P(
142
+ s.container,
143
+ L
144
+ ), h = (yield s.container.getAsync(
145
+ "components"
146
+ )).components().ofType("widget-header").select();
147
+ typeof f == "boolean" ? u = f : c && (yield n(s, u)), (c || typeof u == "boolean") && (u && h.actions.dispatch("show-back", !1), h.actions.watch("show-back", (g, p) => p(u && g ? !1 : g)));
130
148
  }
131
149
  }
132
150
  })), [];
133
- }), R = (t) => t.reduce((e, s) => {
134
- if (e)
135
- return e;
136
- const [o] = Array.from((s == null ? void 0 : s.getElementsByClassName("humany-quick-filter-dropdown")) || []);
151
+ }), q = (e) => e.reduce((t, n) => {
152
+ if (t)
153
+ return t;
154
+ const [o] = Array.from(
155
+ (n == null ? void 0 : n.getElementsByClassName("humany-quick-filter-dropdown")) || []
156
+ );
137
157
  return !!o;
138
- }, !1), U = (t) => t.reduce((e, s) => {
139
- if (e)
140
- return e;
141
- const [o] = Array.from((s == null ? void 0 : s.getElementsByTagName("input")) || []);
158
+ }, !1), I = (e) => e.reduce((t, n) => {
159
+ if (t)
160
+ return t;
161
+ const [o] = Array.from((n == null ? void 0 : n.getElementsByTagName("input")) || []);
142
162
  return !!(o && o === document.activeElement);
143
- }, !1), _ = () => Array.from(document.querySelectorAll('[data-component-type="guide-list"]')).reduce((t, e) => (Array.from(e.getElementsByTagName("a")).forEach((o) => t.push(o)), t), []), q = (t, e) => d(void 0, null, function* () {
144
- const { searchToGuideListArrowKeyNavigation: s = !1 } = e;
145
- return s ? t.getAsync("components").then((o) => {
163
+ }, !1), z = () => Array.from(document.querySelectorAll('[data-component-type="guide-list"]')).reduce((e, t) => (Array.from(t.getElementsByTagName("a")).forEach((o) => e.push(o)), e), []), j = (e, t) => d(void 0, null, function* () {
164
+ const { searchToGuideListArrowKeyNavigation: n = !1 } = t;
165
+ return n ? e.getAsync("components").then((o) => {
146
166
  const {
147
167
  nodes: { all: r }
148
- } = o, i = r.filter((n) => n.type === "search").map((n) => n.id), c = [];
168
+ } = o, a = r.filter((s) => s.type === "search").map((s) => s.id), c = [];
149
169
  return c.push({
150
170
  parent: window,
151
171
  type: "keydown",
152
- handler: (n) => {
172
+ handler: (s) => {
153
173
  var y, h, g, p;
154
- const a = [];
155
- i.forEach((b) => {
156
- const A = document.getElementById(b);
157
- A && a.push(A);
174
+ const i = [];
175
+ a.forEach((T) => {
176
+ const F = document.getElementById(T);
177
+ F && i.push(F);
158
178
  });
159
- const l = R(a), m = U(a), u = _(), f = u.indexOf(document.activeElement);
160
- (n.key === "ArrowDown" || n.key === "ArrowUp") && (m || f > -1) && n.preventDefault(), n.key === "ArrowDown" && m && !l ? u[0].focus() : n.key === "ArrowUp" && f === 0 ? (h = (y = a[0]) == null ? void 0 : y.getElementsByTagName("input")[0]) == null || h.focus() : n.key === "ArrowUp" && f > -1 ? (g = u[f - 1]) == null || g.focus() : n.key === "ArrowDown" && f > -1 && ((p = u[f + 1]) == null || p.focus());
179
+ const l = q(i), m = I(i), u = z(), f = u.indexOf(
180
+ document.activeElement
181
+ );
182
+ (s.key === "ArrowDown" || s.key === "ArrowUp") && (m || f > -1) && s.preventDefault(), s.key === "ArrowDown" && m && !l ? u[0].focus() : s.key === "ArrowUp" && f === 0 ? (h = (y = i[0]) == null ? void 0 : y.getElementsByTagName("input")[0]) == null || h.focus() : s.key === "ArrowUp" && f > -1 ? (g = u[f - 1]) == null || g.focus() : s.key === "ArrowDown" && f > -1 && ((p = u[f + 1]) == null || p.focus());
161
183
  }
162
184
  }), c;
163
185
  }) : Promise.resolve([]);
164
186
  });
165
- class X extends v {
166
- constructor(e, s = {}) {
167
- super(e), this.settings = s, this.listeners = [];
187
+ class te extends E {
188
+ constructor(n, o = {}) {
189
+ super(n);
190
+ w(this, "listeners", []);
191
+ this.settings = o;
168
192
  }
169
193
  initialize() {
170
194
  return d(this, null, function* () {
171
195
  this.listeners = yield Promise.all([
172
- Promise.resolve(K(this.container, this.settings)),
173
- Promise.resolve(G(this.container, this.settings)),
174
- Promise.resolve(q(this.container, this.settings))
175
- ]).then((e) => {
176
- const s = [];
177
- return e.forEach((o) => o.forEach((r) => s.push(r))), s.forEach(({ parent: o, type: r, handler: i }) => {
178
- o.addEventListener(r, i);
179
- }), s;
196
+ Promise.resolve(_(this.container, this.settings)),
197
+ Promise.resolve(U(this.container, this.settings)),
198
+ Promise.resolve(
199
+ j(this.container, this.settings)
200
+ )
201
+ ]).then((n) => {
202
+ const o = [];
203
+ return n.forEach((r) => r.forEach((a) => o.push(a))), o.forEach(({ parent: r, type: a, handler: c }) => {
204
+ r.addEventListener(a, c);
205
+ }), o;
180
206
  });
181
207
  });
182
208
  }
183
209
  deactivate() {
184
- this.listeners.forEach((e) => {
185
- const { parent: s, handler: o, type: r } = e;
186
- s.removeEventListener(r, o);
210
+ this.listeners.forEach((n) => {
211
+ const { parent: o, handler: r, type: a } = n;
212
+ o.removeEventListener(a, r);
187
213
  });
188
214
  }
189
215
  }
190
216
  export {
191
- Y as FavoritePlugin,
192
- J as LegacyResourcesPlugin,
193
- X as MiscBehaviorPlugin
217
+ Z as FavoritePlugin,
218
+ ee as LegacyResourcesPlugin,
219
+ te as MiscBehaviorPlugin
194
220
  };
195
221
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/favorite/utils.ts","../src/favorite/favorite-platform.ts","../src/favorite/favorite.ts","../src/legacy-resources/legacy-resources.ts","../src/misc-behavior/deny-auto-expand-contact-methods-handler.ts","../src/misc-behavior/hide-back-on-single-contact-method-handler.ts","../src/misc-behavior/search-guide-list-keyboard-navigation-handler.ts","../src/misc-behavior/plugin.ts"],"sourcesContent":["import {\n createStorageWriter,\n readStorage,\n StorageCategory,\n StorageMedium,\n} from '@telia-ace/widget-services';\nimport { Container, Widget } from '@webprovisions/platform';\n\nconst storageKey = 'favorites';\n\nconst createWriter = async (container: Container) =>\n await createStorageWriter(container, storageKey, StorageCategory.Necessary, {\n medium: StorageMedium.Local,\n });\n\nconst getStoredFavorites = async (container: Container) =>\n (await readStorage<string[]>(container, storageKey, StorageMedium.Local)) || [];\n\nexport const addFavoriteToStorage = async (guideId: string, container: Container) => {\n const write = await createWriter(container);\n const favorites = await getStoredFavorites(container);\n if (favorites.indexOf(guideId) > -1) {\n return favorites;\n }\n const updated = favorites.concat(guideId);\n write(updated);\n return updated;\n};\n\nexport const removeFavoriteFromStorage = async (guideId: string, container: Container) => {\n const write = await createWriter(container);\n const favorites = await getStoredFavorites(container);\n const updated = favorites.filter((id) => id !== guideId);\n write(updated);\n return updated;\n};\n\nexport const readFavoritesFromStorage = async (container: Container) => {\n try {\n const favorites = await getStoredFavorites(container);\n return favorites;\n } catch (e) {\n return [];\n }\n};\n\nexport const removeAllFavoritesFromStorage = async (container: Container) => {\n const write = await createWriter(container);\n write([]);\n return [];\n};\n\nexport const notifyListeners = (container: Container, data: { updated: string[] }) => {\n const { updated } = data;\n const { events } = container.get('$widget') as Widget;\n events.dispatch('widget:favorites-updated', { updated });\n};\n","import { Container } from '@webprovisions/platform';\nimport {\n addFavoriteToStorage,\n notifyListeners,\n readFavoritesFromStorage,\n removeAllFavoritesFromStorage,\n removeFavoriteFromStorage,\n} from './utils';\n\nexport type FavoritePlatform = {\n add: (guideId: string) => Promise<string[]>;\n remove: (guideId: string) => Promise<string[]>;\n clear: () => Promise<string[]>;\n get: () => string[];\n};\n\nconst createFavoritePlatform = (container: Container): FavoritePlatform => {\n let favorites: string[] = [];\n const initialize = () => {\n readFavoritesFromStorage(container).then((items) => {\n favorites = items;\n });\n };\n\n const get = () => {\n return favorites;\n };\n\n const add = async (guideId: string) => {\n const updated = await addFavoriteToStorage(guideId, container);\n favorites = updated;\n notifyListeners(container, { updated });\n return updated;\n };\n\n const clear = async () => {\n const updated = await removeAllFavoritesFromStorage(container);\n favorites = updated;\n notifyListeners(container, { updated });\n return updated;\n };\n\n const remove = async (guideId: string) => {\n const updated = await removeFavoriteFromStorage(guideId, container);\n favorites = updated;\n notifyListeners(container, { updated });\n return updated;\n };\n\n initialize();\n return {\n add,\n get,\n clear,\n remove,\n };\n};\n\nexport default createFavoritePlatform;\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\nimport { Container } from '@webprovisions/platform';\nimport createFavoritePlatform, { FavoritePlatform } from './favorite-platform';\n\nexport type FavoritePluginSettings = {};\n\nexport default class FavoritePlugin extends Plugin {\n handler: FavoritePlatform;\n\n constructor(container: Container, public settings: FavoritePluginSettings) {\n super(container);\n\n this.handler = createFavoritePlatform(container);\n container.register('favorites', this.handler);\n }\n}\n","import { ResourceLoader } from '@telia-ace/knowledge-resource-loader';\nimport { Plugin } from '@telia-ace/knowledge-widget-core';\nimport { Container } from '@webprovisions/platform';\n\nconst getHostFromUrl = (url: string) => {\n const parser = document.createElement('a');\n parser.href = url;\n return `//${parser.hostname}/`;\n};\n\ntype Settings = {\n initialCss?: string;\n};\n\n/**\n * Downloads legacy resources for a widget. These resources are to be treated as legacy. When the\n * Webprovisions bundling service is available these resources should be included as their own\n * plugins and be part of the output.\n */\nexport default class LegacyResourcesPlugin extends Plugin {\n constructor(container: Container, settings: Settings = {}) {\n super(container);\n this.widget.events.subscribeOnce('widget:attached', () => {\n const {\n data: { projection },\n } = this.container.get('$settings');\n\n if (projection) {\n const host = getHostFromUrl(projection);\n const loader = new ResourceLoader();\n loader.add(\n `${host}ClientLibraries/Supplementary/font-awesome-4.7.0/css/font-awesome.min.css`\n ); // tslint:disable-line max-line-length\n loader.add(`${host}${this.container.parent?.name}/widgets.css`);\n loader.load();\n }\n\n const { initialCss = '' } = settings;\n\n if (initialCss.length) {\n const style = document.createElement('style');\n style.innerHTML = initialCss;\n document.head.appendChild(style);\n }\n });\n }\n}\n","import { extendComponent } from '@telia-ace/knowledge-widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { Settings } from './plugin';\n\n/**\n * Sets contactMethod.expanded and contactMethod.inline for contactMethods\n * with a clientName that match the regular expression passed in\n * the denyAutoExpandContactMethods-setting\n */\nexport default async (container: Container, settings: Settings) => {\n const { denyAutoExpandContactMethods } = settings;\n\n if (denyAutoExpandContactMethods) {\n const regExp = new RegExp(denyAutoExpandContactMethods);\n\n extendComponent(container, 'contact-list', (component) => {\n component.properties(({ contactMethods = [] }) => {\n const deniedContactMethods = contactMethods.filter(({ clientName }: any) =>\n regExp.test(clientName)\n );\n\n if (deniedContactMethods.length) {\n deniedContactMethods.forEach((cm: any) => {\n cm.expanded = false;\n cm.inline = false;\n });\n\n return { contactMethods };\n }\n });\n });\n }\n\n return [];\n};\n","import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';\nimport { ContactsResult, DataType } from '@telia-ace/knowledge-widget-types-grid';\nimport { createStorageWriter, readStorage, StorageCategory } from '@telia-ace/widget-services';\nimport { Container, Widget } from '@webprovisions/platform';\nimport { Settings } from './plugin';\n\nconst STORAGE_KEY = 'misc-behavior:hideBackValue';\n\n/**\n * Will hide the back-button in the widget-header back-button if there\n * is only a single contact method in the contact-list.\n */\nexport default async (container: Container, settings: Settings) => {\n const writeToStorage = (mainWidget: Widget, hideBackValue: any) => {\n return container.getAsync('dataClient').then((dataClient) => {\n return dataClient\n .fetch(DataType.ContactMethodCategories, {})\n .then((result: ContactsResult) => {\n if (result) {\n const { categories = [], contactMethods = [] } = result;\n\n if (hideBackValue === null) {\n hideBackValue = categories.length === 0 && contactMethods.length === 1;\n return createStorageWriter(\n mainWidget.container,\n STORAGE_KEY,\n StorageCategory.Functional\n ).then((write) => write(hideBackValue));\n }\n }\n });\n });\n };\n\n const { events } = container.get('$widget');\n events.subscribe('widget:render-state-changed', async (event: any, data: any) => {\n if (event.target.state === 'activated' && data.next === 'open') {\n const { hideBackOnSingleContactMethod } = settings;\n\n let mainWidget: Widget | undefined;\n\n const widget: Widget = container.get('$widget');\n const { name, implementation } = widget;\n\n if (name.endsWith('_contact')) {\n mainWidget = implementation.widgets.get(name.replace('_contact', ''));\n } else if (!name.endsWith('_contact-method')) {\n mainWidget = widget;\n }\n\n if (mainWidget) {\n let hideBackValue: boolean | null = null;\n const storedHideBackValue = await readStorage<boolean>(\n mainWidget.container,\n STORAGE_KEY\n );\n\n const componentPlatform: ComponentPlatform = await mainWidget.container.getAsync(\n 'components'\n );\n const widgetHeaders = componentPlatform\n .components()\n .ofType('widget-header')\n .select();\n\n /* if we have a value stored in the main widgets session storage:\n * use that\n *\n * if not and the current widget has hideBackOnSingleContactMethod == true:\n * fetch value and save on mainWidget session storage\n */\n if (typeof storedHideBackValue === 'boolean') {\n hideBackValue = storedHideBackValue;\n } else if (hideBackOnSingleContactMethod) {\n await writeToStorage(mainWidget, hideBackValue);\n }\n\n /* if hideBackOnSingleContactMethod == true\n * or if we have a hideBackValue (from session storage)\n * hide back if hideBackValue == true\n * and add show-back action watcher\n */\n if (hideBackOnSingleContactMethod || typeof hideBackValue === 'boolean') {\n if (hideBackValue) {\n widgetHeaders.actions.dispatch('show-back', false);\n }\n\n widgetHeaders.actions.watch('show-back', (data, next) => {\n if (hideBackValue && data) {\n return next(false);\n }\n\n return next(data);\n });\n }\n }\n }\n });\n\n return [];\n};\n","import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';\nimport { Container } from '@webprovisions/platform';\nimport { Listerners, Settings } from './plugin';\n\nconst isQuickFilterOpen = (searchElements: HTMLElement[]) => {\n return searchElements.reduce((acc, current) => {\n if (acc) {\n return acc;\n }\n\n const [element] = Array.from(\n current?.getElementsByClassName('humany-quick-filter-dropdown') || []\n );\n\n if (element) {\n return true;\n }\n\n return false;\n }, false);\n};\n\nconst isSearchElementFocused = (searchElements: HTMLElement[]) => {\n return searchElements.reduce((acc, current) => {\n if (acc) {\n return acc;\n }\n\n const [input] = Array.from(current?.getElementsByTagName('input') || []);\n\n if (input && input === document.activeElement) {\n return true;\n }\n\n return false;\n }, false);\n};\n\nconst getGuideListLinks = () => {\n return Array.from(document.querySelectorAll('[data-component-type=\"guide-list\"]')).reduce<\n HTMLAnchorElement[]\n >((acc, current) => {\n const links = Array.from(current.getElementsByTagName('a'));\n links.forEach((l) => acc.push(l));\n return acc;\n }, []);\n};\n\n/**\n * Will focus guide-list when focusing search-input and pressing arrow-down key\n */\nexport default async (container: Container, settings: Settings) => {\n const { searchToGuideListArrowKeyNavigation = false } = settings;\n\n if (searchToGuideListArrowKeyNavigation) {\n return container.getAsync('components').then((platform: ComponentPlatform) => {\n const {\n nodes: { all },\n } = platform;\n\n const searchComponentIds = all.filter((n) => n.type === 'search').map((n) => n.id);\n\n const listeners: Listerners = [];\n\n listeners.push({\n parent: window,\n type: 'keydown',\n handler: (e: KeyboardEvent) => {\n const searchComponentElements: HTMLElement[] = [];\n searchComponentIds.forEach((id) => {\n const element = document.getElementById(id);\n if (element) {\n searchComponentElements.push(element);\n }\n });\n const quickFilterDropdownOpen = isQuickFilterOpen(searchComponentElements);\n const searchElementIsFocused = isSearchElementFocused(searchComponentElements);\n const guideListLinks = getGuideListLinks();\n const guideListLinkFocusIndex = guideListLinks.indexOf(\n document.activeElement as HTMLAnchorElement\n );\n\n if (\n (e.key === 'ArrowDown' || e.key === 'ArrowUp') &&\n (searchElementIsFocused || guideListLinkFocusIndex > -1)\n ) {\n e.preventDefault();\n }\n\n if (\n e.key === 'ArrowDown' &&\n searchElementIsFocused &&\n !quickFilterDropdownOpen\n ) {\n guideListLinks[0].focus();\n } else {\n if (e.key === 'ArrowUp' && guideListLinkFocusIndex === 0) {\n searchComponentElements[0]?.getElementsByTagName('input')[0]?.focus();\n } else if (e.key === 'ArrowUp' && guideListLinkFocusIndex > -1) {\n guideListLinks[guideListLinkFocusIndex - 1]?.focus();\n } else if (e.key === 'ArrowDown' && guideListLinkFocusIndex > -1) {\n guideListLinks[guideListLinkFocusIndex + 1]?.focus();\n }\n }\n },\n });\n\n return listeners;\n });\n }\n\n return Promise.resolve([]);\n};\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\nimport { Container } from '@webprovisions/platform';\nimport denyAutoExpandContactMethodsHandler from './deny-auto-expand-contact-methods-handler';\nimport hideBackOnSingleContactMethodHandler from './hide-back-on-single-contact-method-handler';\nimport searchGuideListKeyboardNavigationHandler from './search-guide-list-keyboard-navigation-handler';\n\nexport type Settings = {\n denyAutoExpandContactMethods?: string;\n hideBackOnSingleContactMethod?: boolean;\n searchToGuideListArrowKeyNavigation?: boolean;\n};\n\nexport type Listerners = {\n parent: HTMLElement | Window;\n handler: (...args: any[]) => void;\n type: string;\n}[];\n\nexport default class MiscBehaviorPlugin extends Plugin {\n listeners: Listerners = [];\n\n constructor(container: Container, public settings: Settings = {}) {\n super(container);\n }\n\n async initialize() {\n this.listeners = await Promise.all([\n Promise.resolve(hideBackOnSingleContactMethodHandler(this.container, this.settings)),\n Promise.resolve(denyAutoExpandContactMethodsHandler(this.container, this.settings)),\n Promise.resolve(\n searchGuideListKeyboardNavigationHandler(this.container, this.settings)\n ),\n ]).then((listenerArray) => {\n const listeners: Listerners = [];\n listenerArray.forEach((a) => (a as Listerners).forEach((l) => listeners.push(l)));\n\n listeners.forEach(({ parent, type, handler }) => {\n parent.addEventListener(type, handler);\n });\n\n return listeners;\n });\n }\n\n deactivate() {\n this.listeners.forEach((listener) => {\n const { parent, handler, type } = listener;\n parent.removeEventListener(type, handler);\n });\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/favorite/utils.ts","../src/favorite/favorite-platform.ts","../src/favorite/favorite.ts","../src/legacy-resources/legacy-resources.ts","../src/misc-behavior/deny-auto-expand-contact-methods-handler.ts","../src/misc-behavior/hide-back-on-single-contact-method-handler.ts","../src/misc-behavior/search-guide-list-keyboard-navigation-handler.ts","../src/misc-behavior/plugin.ts"],"sourcesContent":["import {\r\n createStorageWriter,\r\n readStorage,\r\n StorageCategory,\r\n StorageMedium,\r\n} from '@telia-ace/widget-services';\r\nimport { Container, Widget } from '@webprovisions/platform';\r\n\r\nconst storageKey = 'favorites';\r\n\r\nconst createWriter = async (container: Container) =>\r\n await createStorageWriter(container, storageKey, StorageCategory.Necessary, {\r\n medium: StorageMedium.Local,\r\n });\r\n\r\nconst getStoredFavorites = async (container: Container) =>\r\n (await readStorage<string[]>(container, storageKey, StorageMedium.Local)) || [];\r\n\r\nexport const addFavoriteToStorage = async (guideId: string, container: Container) => {\r\n const write = await createWriter(container);\r\n const favorites = await getStoredFavorites(container);\r\n if (favorites.indexOf(guideId) > -1) {\r\n return favorites;\r\n }\r\n const updated = favorites.concat(guideId);\r\n write(updated);\r\n return updated;\r\n};\r\n\r\nexport const removeFavoriteFromStorage = async (guideId: string, container: Container) => {\r\n const write = await createWriter(container);\r\n const favorites = await getStoredFavorites(container);\r\n const updated = favorites.filter((id) => id !== guideId);\r\n write(updated);\r\n return updated;\r\n};\r\n\r\nexport const readFavoritesFromStorage = async (container: Container) => {\r\n try {\r\n const favorites = await getStoredFavorites(container);\r\n return favorites;\r\n } catch (e) {\r\n return [];\r\n }\r\n};\r\n\r\nexport const removeAllFavoritesFromStorage = async (container: Container) => {\r\n const write = await createWriter(container);\r\n write([]);\r\n return [];\r\n};\r\n\r\nexport const notifyListeners = (container: Container, data: { updated: string[] }) => {\r\n const { updated } = data;\r\n const { events } = container.get('$widget') as Widget;\r\n events.dispatch('widget:favorites-updated', { updated });\r\n};\r\n","import { Container } from '@webprovisions/platform';\r\nimport {\r\n addFavoriteToStorage,\r\n notifyListeners,\r\n readFavoritesFromStorage,\r\n removeAllFavoritesFromStorage,\r\n removeFavoriteFromStorage,\r\n} from './utils';\r\n\r\nexport type FavoritePlatform = {\r\n add: (guideId: string) => Promise<string[]>;\r\n remove: (guideId: string) => Promise<string[]>;\r\n clear: () => Promise<string[]>;\r\n get: () => string[];\r\n};\r\n\r\nconst createFavoritePlatform = (container: Container): FavoritePlatform => {\r\n let favorites: string[] = [];\r\n const initialize = () => {\r\n readFavoritesFromStorage(container).then((items) => {\r\n favorites = items;\r\n });\r\n };\r\n\r\n const get = () => {\r\n return favorites;\r\n };\r\n\r\n const add = async (guideId: string) => {\r\n const updated = await addFavoriteToStorage(guideId, container);\r\n favorites = updated;\r\n notifyListeners(container, { updated });\r\n return updated;\r\n };\r\n\r\n const clear = async () => {\r\n const updated = await removeAllFavoritesFromStorage(container);\r\n favorites = updated;\r\n notifyListeners(container, { updated });\r\n return updated;\r\n };\r\n\r\n const remove = async (guideId: string) => {\r\n const updated = await removeFavoriteFromStorage(guideId, container);\r\n favorites = updated;\r\n notifyListeners(container, { updated });\r\n return updated;\r\n };\r\n\r\n initialize();\r\n return {\r\n add,\r\n get,\r\n clear,\r\n remove,\r\n };\r\n};\r\n\r\nexport default createFavoritePlatform;\r\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport createFavoritePlatform, { FavoritePlatform } from './favorite-platform';\r\n\r\nexport type FavoritePluginSettings = {};\r\n\r\nexport default class FavoritePlugin extends Plugin {\r\n handler: FavoritePlatform;\r\n\r\n constructor(container: Container, public settings: FavoritePluginSettings) {\r\n super(container);\r\n\r\n this.handler = createFavoritePlatform(container);\r\n container.register('favorites', this.handler);\r\n }\r\n}\r\n","import { ResourceLoader } from '@telia-ace/knowledge-resource-loader';\r\nimport { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\n\r\nconst getHostFromUrl = (url: string) => {\r\n const parser = document.createElement('a');\r\n parser.href = url;\r\n return `//${parser.hostname}/`;\r\n};\r\n\r\ntype Settings = {\r\n initialCss?: string;\r\n};\r\n\r\n/**\r\n * Downloads legacy resources for a widget. These resources are to be treated as legacy. When the\r\n * Webprovisions bundling service is available these resources should be included as their own\r\n * plugins and be part of the output.\r\n */\r\nexport default class LegacyResourcesPlugin extends Plugin {\r\n constructor(container: Container, settings: Settings = {}) {\r\n super(container);\r\n this.widget.events.subscribeOnce('widget:attached', () => {\r\n const {\r\n data: { projection },\r\n } = this.container.get('$settings');\r\n\r\n if (projection) {\r\n const host = getHostFromUrl(projection);\r\n const loader = new ResourceLoader();\r\n loader.add(\r\n `${host}ClientLibraries/Supplementary/font-awesome-4.7.0/css/font-awesome.min.css`\r\n ); // tslint:disable-line max-line-length\r\n loader.add(`${host}${this.container.parent?.name}/widgets.css`);\r\n loader.load();\r\n }\r\n\r\n const { initialCss = '' } = settings;\r\n\r\n if (initialCss.length) {\r\n const style = document.createElement('style');\r\n style.innerHTML = initialCss;\r\n document.head.appendChild(style);\r\n }\r\n });\r\n }\r\n}\r\n","import { extendComponent } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { Settings } from './plugin';\r\n\r\n/**\r\n * Sets contactMethod.expanded and contactMethod.inline for contactMethods\r\n * with a clientName that match the regular expression passed in\r\n * the denyAutoExpandContactMethods-setting\r\n */\r\nexport default async (container: Container, settings: Settings) => {\r\n const { denyAutoExpandContactMethods } = settings;\r\n\r\n if (denyAutoExpandContactMethods) {\r\n const regExp = new RegExp(denyAutoExpandContactMethods);\r\n\r\n extendComponent(container, 'contact-list', (component) => {\r\n component.properties(({ contactMethods = [] }) => {\r\n const deniedContactMethods = contactMethods.filter(({ clientName }: any) =>\r\n regExp.test(clientName)\r\n );\r\n\r\n if (deniedContactMethods.length) {\r\n deniedContactMethods.forEach((cm: any) => {\r\n cm.expanded = false;\r\n cm.inline = false;\r\n });\r\n\r\n return { contactMethods };\r\n }\r\n });\r\n });\r\n }\r\n\r\n return [];\r\n};\r\n","import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';\r\nimport { ContactsResult, DataType } from '@telia-ace/knowledge-widget-types-grid';\r\nimport { createStorageWriter, readStorage, StorageCategory } from '@telia-ace/widget-services';\r\nimport { Container, Widget } from '@webprovisions/platform';\r\nimport { Settings } from './plugin';\r\n\r\nconst STORAGE_KEY = 'misc-behavior:hideBackValue';\r\n\r\n/**\r\n * Will hide the back-button in the widget-header back-button if there\r\n * is only a single contact method in the contact-list.\r\n */\r\nexport default async (container: Container, settings: Settings) => {\r\n const writeToStorage = (mainWidget: Widget, hideBackValue: any) => {\r\n return container.getAsync('dataClient').then((dataClient) => {\r\n return dataClient\r\n .fetch(DataType.ContactMethodCategories, {})\r\n .then((result: ContactsResult) => {\r\n if (result) {\r\n const { categories = [], contactMethods = [] } = result;\r\n\r\n if (hideBackValue === null) {\r\n hideBackValue = categories.length === 0 && contactMethods.length === 1;\r\n return createStorageWriter(\r\n mainWidget.container,\r\n STORAGE_KEY,\r\n StorageCategory.Functional\r\n ).then((write) => write(hideBackValue));\r\n }\r\n }\r\n });\r\n });\r\n };\r\n\r\n const { events } = container.get('$widget');\r\n events.subscribe('widget:render-state-changed', async (event: any, data: any) => {\r\n if (event.target.state === 'activated' && data.next === 'open') {\r\n const { hideBackOnSingleContactMethod } = settings;\r\n\r\n let mainWidget: Widget | undefined;\r\n\r\n const widget: Widget = container.get('$widget');\r\n const { name, implementation } = widget;\r\n\r\n if (name.endsWith('_contact')) {\r\n mainWidget = implementation.widgets.get(name.replace('_contact', ''));\r\n } else if (!name.endsWith('_contact-method')) {\r\n mainWidget = widget;\r\n }\r\n\r\n if (mainWidget) {\r\n let hideBackValue: boolean | null = null;\r\n const storedHideBackValue = await readStorage<boolean>(\r\n mainWidget.container,\r\n STORAGE_KEY\r\n );\r\n\r\n const componentPlatform: ComponentPlatform = await mainWidget.container.getAsync(\r\n 'components'\r\n );\r\n const widgetHeaders = componentPlatform\r\n .components()\r\n .ofType('widget-header')\r\n .select();\r\n\r\n /* if we have a value stored in the main widgets session storage:\r\n * use that\r\n *\r\n * if not and the current widget has hideBackOnSingleContactMethod == true:\r\n * fetch value and save on mainWidget session storage\r\n */\r\n if (typeof storedHideBackValue === 'boolean') {\r\n hideBackValue = storedHideBackValue;\r\n } else if (hideBackOnSingleContactMethod) {\r\n await writeToStorage(mainWidget, hideBackValue);\r\n }\r\n\r\n /* if hideBackOnSingleContactMethod == true\r\n * or if we have a hideBackValue (from session storage)\r\n * hide back if hideBackValue == true\r\n * and add show-back action watcher\r\n */\r\n if (hideBackOnSingleContactMethod || typeof hideBackValue === 'boolean') {\r\n if (hideBackValue) {\r\n widgetHeaders.actions.dispatch('show-back', false);\r\n }\r\n\r\n widgetHeaders.actions.watch('show-back', (data, next) => {\r\n if (hideBackValue && data) {\r\n return next(false);\r\n }\r\n\r\n return next(data);\r\n });\r\n }\r\n }\r\n }\r\n });\r\n\r\n return [];\r\n};\r\n","import { ComponentPlatform } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { Listerners, Settings } from './plugin';\r\n\r\nconst isQuickFilterOpen = (searchElements: HTMLElement[]) => {\r\n return searchElements.reduce((acc, current) => {\r\n if (acc) {\r\n return acc;\r\n }\r\n\r\n const [element] = Array.from(\r\n current?.getElementsByClassName('humany-quick-filter-dropdown') || []\r\n );\r\n\r\n if (element) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }, false);\r\n};\r\n\r\nconst isSearchElementFocused = (searchElements: HTMLElement[]) => {\r\n return searchElements.reduce((acc, current) => {\r\n if (acc) {\r\n return acc;\r\n }\r\n\r\n const [input] = Array.from(current?.getElementsByTagName('input') || []);\r\n\r\n if (input && input === document.activeElement) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }, false);\r\n};\r\n\r\nconst getGuideListLinks = () => {\r\n return Array.from(document.querySelectorAll('[data-component-type=\"guide-list\"]')).reduce<\r\n HTMLAnchorElement[]\r\n >((acc, current) => {\r\n const links = Array.from(current.getElementsByTagName('a'));\r\n links.forEach((l) => acc.push(l));\r\n return acc;\r\n }, []);\r\n};\r\n\r\n/**\r\n * Will focus guide-list when focusing search-input and pressing arrow-down key\r\n */\r\nexport default async (container: Container, settings: Settings) => {\r\n const { searchToGuideListArrowKeyNavigation = false } = settings;\r\n\r\n if (searchToGuideListArrowKeyNavigation) {\r\n return container.getAsync('components').then((platform: ComponentPlatform) => {\r\n const {\r\n nodes: { all },\r\n } = platform;\r\n\r\n const searchComponentIds = all.filter((n) => n.type === 'search').map((n) => n.id);\r\n\r\n const listeners: Listerners = [];\r\n\r\n listeners.push({\r\n parent: window,\r\n type: 'keydown',\r\n handler: (e: KeyboardEvent) => {\r\n const searchComponentElements: HTMLElement[] = [];\r\n searchComponentIds.forEach((id) => {\r\n const element = document.getElementById(id);\r\n if (element) {\r\n searchComponentElements.push(element);\r\n }\r\n });\r\n const quickFilterDropdownOpen = isQuickFilterOpen(searchComponentElements);\r\n const searchElementIsFocused = isSearchElementFocused(searchComponentElements);\r\n const guideListLinks = getGuideListLinks();\r\n const guideListLinkFocusIndex = guideListLinks.indexOf(\r\n document.activeElement as HTMLAnchorElement\r\n );\r\n\r\n if (\r\n (e.key === 'ArrowDown' || e.key === 'ArrowUp') &&\r\n (searchElementIsFocused || guideListLinkFocusIndex > -1)\r\n ) {\r\n e.preventDefault();\r\n }\r\n\r\n if (\r\n e.key === 'ArrowDown' &&\r\n searchElementIsFocused &&\r\n !quickFilterDropdownOpen\r\n ) {\r\n guideListLinks[0].focus();\r\n } else {\r\n if (e.key === 'ArrowUp' && guideListLinkFocusIndex === 0) {\r\n searchComponentElements[0]?.getElementsByTagName('input')[0]?.focus();\r\n } else if (e.key === 'ArrowUp' && guideListLinkFocusIndex > -1) {\r\n guideListLinks[guideListLinkFocusIndex - 1]?.focus();\r\n } else if (e.key === 'ArrowDown' && guideListLinkFocusIndex > -1) {\r\n guideListLinks[guideListLinkFocusIndex + 1]?.focus();\r\n }\r\n }\r\n },\r\n });\r\n\r\n return listeners;\r\n });\r\n }\r\n\r\n return Promise.resolve([]);\r\n};\r\n","import { Plugin } from '@telia-ace/knowledge-widget-core';\r\nimport { Container } from '@webprovisions/platform';\r\nimport denyAutoExpandContactMethodsHandler from './deny-auto-expand-contact-methods-handler';\r\nimport hideBackOnSingleContactMethodHandler from './hide-back-on-single-contact-method-handler';\r\nimport searchGuideListKeyboardNavigationHandler from './search-guide-list-keyboard-navigation-handler';\r\n\r\nexport type Settings = {\r\n denyAutoExpandContactMethods?: string;\r\n hideBackOnSingleContactMethod?: boolean;\r\n searchToGuideListArrowKeyNavigation?: boolean;\r\n};\r\n\r\nexport type Listerners = {\r\n parent: HTMLElement | Window;\r\n handler: (...args: any[]) => void;\r\n type: string;\r\n}[];\r\n\r\nexport default class MiscBehaviorPlugin extends Plugin {\r\n listeners: Listerners = [];\r\n\r\n constructor(container: Container, public settings: Settings = {}) {\r\n super(container);\r\n }\r\n\r\n async initialize() {\r\n this.listeners = await Promise.all([\r\n Promise.resolve(hideBackOnSingleContactMethodHandler(this.container, this.settings)),\r\n Promise.resolve(denyAutoExpandContactMethodsHandler(this.container, this.settings)),\r\n Promise.resolve(\r\n searchGuideListKeyboardNavigationHandler(this.container, this.settings)\r\n ),\r\n ]).then((listenerArray) => {\r\n const listeners: Listerners = [];\r\n listenerArray.forEach((a) => (a as Listerners).forEach((l) => listeners.push(l)));\r\n\r\n listeners.forEach(({ parent, type, handler }) => {\r\n parent.addEventListener(type, handler);\r\n });\r\n\r\n return listeners;\r\n });\r\n }\r\n\r\n deactivate() {\r\n this.listeners.forEach((listener) => {\r\n const { parent, handler, type } = listener;\r\n parent.removeEventListener(type, handler);\r\n });\r\n }\r\n}\r\n"],"names":["storageKey","createWriter","container","createStorageWriter","StorageCategory","StorageMedium","getStoredFavorites","__async","readStorage","addFavoriteToStorage","guideId","write","favorites","updated","removeFavoriteFromStorage","id","readFavoritesFromStorage","e","removeAllFavoritesFromStorage","notifyListeners","data","events","createFavoritePlatform","initialize","items","get","add","clear","remove","FavoritePlugin","Plugin","settings","__publicField","getHostFromUrl","url","parser","LegacyResourcesPlugin","projection","host","loader","ResourceLoader","_a","initialCss","style","denyAutoExpandContactMethodsHandler","denyAutoExpandContactMethods","regExp","extendComponent","component","contactMethods","deniedContactMethods","clientName","cm","STORAGE_KEY","hideBackOnSingleContactMethodHandler","writeToStorage","mainWidget","hideBackValue","dataClient","DataType","result","categories","event","hideBackOnSingleContactMethod","widget","name","implementation","storedHideBackValue","widgetHeaders","next","isQuickFilterOpen","searchElements","acc","current","element","isSearchElementFocused","input","getGuideListLinks","l","searchGuideListKeyboardNavigationHandler","searchToGuideListArrowKeyNavigation","platform","all","searchComponentIds","n","listeners","searchComponentElements","quickFilterDropdownOpen","searchElementIsFocused","guideListLinks","guideListLinkFocusIndex","_b","_c","_d","MiscBehaviorPlugin","listenerArray","a","parent","type","handler","listener"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import LegacyResources from './legacy-resources';
2
- export default LegacyResources;
1
+ import LegacyResources from './legacy-resources';
2
+ export default LegacyResources;
@@ -1,14 +1,14 @@
1
- import { Plugin } from '@telia-ace/knowledge-widget-core';
2
- import { Container } from '@webprovisions/platform';
3
- declare type Settings = {
4
- initialCss?: string;
5
- };
6
- /**
7
- * Downloads legacy resources for a widget. These resources are to be treated as legacy. When the
8
- * Webprovisions bundling service is available these resources should be included as their own
9
- * plugins and be part of the output.
10
- */
11
- export default class LegacyResourcesPlugin extends Plugin {
12
- constructor(container: Container, settings?: Settings);
13
- }
14
- export {};
1
+ import { Plugin } from '@telia-ace/knowledge-widget-core';
2
+ import { Container } from '@webprovisions/platform';
3
+ declare type Settings = {
4
+ initialCss?: string;
5
+ };
6
+ /**
7
+ * Downloads legacy resources for a widget. These resources are to be treated as legacy. When the
8
+ * Webprovisions bundling service is available these resources should be included as their own
9
+ * plugins and be part of the output.
10
+ */
11
+ export default class LegacyResourcesPlugin extends Plugin {
12
+ constructor(container: Container, settings?: Settings);
13
+ }
14
+ export {};
@@ -1,9 +1,9 @@
1
- import { Container } from '@webprovisions/platform';
2
- import { Settings } from './plugin';
3
- declare const _default: (container: Container, settings: Settings) => Promise<never[]>;
4
- /**
5
- * Sets contactMethod.expanded and contactMethod.inline for contactMethods
6
- * with a clientName that match the regular expression passed in
7
- * the denyAutoExpandContactMethods-setting
8
- */
9
- export default _default;
1
+ import { Container } from '@webprovisions/platform';
2
+ import { Settings } from './plugin';
3
+ /**
4
+ * Sets contactMethod.expanded and contactMethod.inline for contactMethods
5
+ * with a clientName that match the regular expression passed in
6
+ * the denyAutoExpandContactMethods-setting
7
+ */
8
+ declare const _default: (container: Container, settings: Settings) => Promise<never[]>;
9
+ export default _default;
@@ -1,8 +1,8 @@
1
- import { Container } from '@webprovisions/platform';
2
- import { Settings } from './plugin';
3
- declare const _default: (container: Container, settings: Settings) => Promise<never[]>;
4
- /**
5
- * Will hide the back-button in the widget-header back-button if there
6
- * is only a single contact method in the contact-list.
7
- */
8
- export default _default;
1
+ import { Container } from '@webprovisions/platform';
2
+ import { Settings } from './plugin';
3
+ /**
4
+ * Will hide the back-button in the widget-header back-button if there
5
+ * is only a single contact method in the contact-list.
6
+ */
7
+ declare const _default: (container: Container, settings: Settings) => Promise<never[]>;
8
+ export default _default;
@@ -1,2 +1,2 @@
1
- import plugin from './plugin';
2
- export default plugin;
1
+ import plugin from './plugin';
2
+ export default plugin;
@@ -1,19 +1,19 @@
1
- import { Plugin } from '@telia-ace/knowledge-widget-core';
2
- import { Container } from '@webprovisions/platform';
3
- export declare type Settings = {
4
- denyAutoExpandContactMethods?: string;
5
- hideBackOnSingleContactMethod?: boolean;
6
- searchToGuideListArrowKeyNavigation?: boolean;
7
- };
8
- export declare type Listerners = {
9
- parent: HTMLElement | Window;
10
- handler: (...args: any[]) => void;
11
- type: string;
12
- }[];
13
- export default class MiscBehaviorPlugin extends Plugin {
14
- settings: Settings;
15
- listeners: Listerners;
16
- constructor(container: Container, settings?: Settings);
17
- initialize(): Promise<void>;
18
- deactivate(): void;
19
- }
1
+ import { Plugin } from '@telia-ace/knowledge-widget-core';
2
+ import { Container } from '@webprovisions/platform';
3
+ export declare type Settings = {
4
+ denyAutoExpandContactMethods?: string;
5
+ hideBackOnSingleContactMethod?: boolean;
6
+ searchToGuideListArrowKeyNavigation?: boolean;
7
+ };
8
+ export declare type Listerners = {
9
+ parent: HTMLElement | Window;
10
+ handler: (...args: any[]) => void;
11
+ type: string;
12
+ }[];
13
+ export default class MiscBehaviorPlugin extends Plugin {
14
+ settings: Settings;
15
+ listeners: Listerners;
16
+ constructor(container: Container, settings?: Settings);
17
+ initialize(): Promise<void>;
18
+ deactivate(): void;
19
+ }
@@ -1,7 +1,7 @@
1
- import { Container } from '@webprovisions/platform';
2
- import { Listerners, Settings } from './plugin';
3
- declare const _default: (container: Container, settings: Settings) => Promise<Listerners>;
4
- /**
5
- * Will focus guide-list when focusing search-input and pressing arrow-down key
6
- */
7
- export default _default;
1
+ import { Container } from '@webprovisions/platform';
2
+ import { Listerners, Settings } from './plugin';
3
+ /**
4
+ * Will focus guide-list when focusing search-input and pressing arrow-down key
5
+ */
6
+ declare const _default: (container: Container, settings: Settings) => Promise<Listerners>;
7
+ export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@telia-ace/knowledge-widget-plugins",
3
- "version": "1.0.29",
3
+ "version": "1.0.31",
4
4
  "description": "Plugins for ACE Knowledge Widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
@@ -8,6 +8,7 @@
8
8
  "telia"
9
9
  ],
10
10
  "main": "dist/index.js",
11
+ "sourceMain": "src/index.ts",
11
12
  "type": "module",
12
13
  "types": "dist/index.d.ts",
13
14
  "files": [
@@ -25,14 +26,15 @@
25
26
  },
26
27
  "sideEffects": false,
27
28
  "dependencies": {
28
- "@telia-ace/knowledge-resource-loader": "^1.0.3",
29
- "@telia-ace/knowledge-widget-adapters": "^1.0.27",
30
- "@telia-ace/knowledge-widget-core": "^1.0.17",
31
- "@telia-ace/knowledge-widget-types-grid": "^1.0.28",
32
- "@telia-ace/knowledge-widget-ui": "^1.0.23",
33
- "@telia-ace/widget-routing": "^1.0.14",
34
- "@telia-ace/widget-services": "^1.0.13",
35
- "@telia-ace/widget-utilities": "^1.0.2",
29
+ "@telia-ace/knowledge-resource-loader": "^1.0.4",
30
+ "@telia-ace/knowledge-widget-adapters": "^1.0.29",
31
+ "@telia-ace/knowledge-widget-core": "^1.0.19",
32
+ "@telia-ace/knowledge-widget-types-grid": "^1.0.30",
33
+ "@telia-ace/knowledge-widget-ui": "^1.0.25",
34
+ "@telia-ace/widget-routing": "^1.0.16",
35
+ "@telia-ace/widget-services": "^1.0.15",
36
+ "@telia-ace/widget-utilities": "^1.0.4",
36
37
  "@webprovisions/platform": "^1.1.2"
37
- }
38
+ },
39
+ "gitHead": "dc024eefcfc33ad8e67b35e5f266bf4a58eb2c48"
38
40
  }