@telia-ace/knowledge-widget-components-guide 1.0.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.
Files changed (43) hide show
  1. package/LICENSE.txt +6 -0
  2. package/README.md +3 -0
  3. package/lib/answer-version-picker.d.ts +10 -0
  4. package/lib/answer-version-picker.js +75 -0
  5. package/lib/categories.d.ts +8 -0
  6. package/lib/categories.js +80 -0
  7. package/lib/feedback.d.ts +7 -0
  8. package/lib/feedback.js +34 -0
  9. package/lib/functions.d.ts +29 -0
  10. package/lib/functions.js +129 -0
  11. package/lib/guide-component.d.ts +69 -0
  12. package/lib/guide-component.js +196 -0
  13. package/lib/guide.d.ts +7 -0
  14. package/lib/guide.js +117 -0
  15. package/lib/index.d.ts +2 -0
  16. package/lib/index.js +7 -0
  17. package/lib/languages.d.ts +17 -0
  18. package/lib/languages.js +110 -0
  19. package/lib/toolbar.d.ts +8 -0
  20. package/lib/toolbar.js +62 -0
  21. package/lib/use-feedback.d.ts +4 -0
  22. package/lib/use-feedback.js +54 -0
  23. package/lib-esm/answer-version-picker.d.ts +10 -0
  24. package/lib-esm/answer-version-picker.js +50 -0
  25. package/lib-esm/categories.d.ts +8 -0
  26. package/lib-esm/categories.js +52 -0
  27. package/lib-esm/feedback.d.ts +7 -0
  28. package/lib-esm/feedback.js +29 -0
  29. package/lib-esm/functions.d.ts +29 -0
  30. package/lib-esm/functions.js +101 -0
  31. package/lib-esm/guide-component.d.ts +69 -0
  32. package/lib-esm/guide-component.js +166 -0
  33. package/lib-esm/guide.d.ts +7 -0
  34. package/lib-esm/guide.js +89 -0
  35. package/lib-esm/index.d.ts +2 -0
  36. package/lib-esm/index.js +2 -0
  37. package/lib-esm/languages.d.ts +17 -0
  38. package/lib-esm/languages.js +85 -0
  39. package/lib-esm/toolbar.d.ts +8 -0
  40. package/lib-esm/toolbar.js +57 -0
  41. package/lib-esm/use-feedback.d.ts +4 -0
  42. package/lib-esm/use-feedback.js +52 -0
  43. package/package.json +47 -0
@@ -0,0 +1,2 @@
1
+ import GuideComponent from './guide-component';
2
+ export default GuideComponent;
@@ -0,0 +1,17 @@
1
+ import { LanguageProperties } from '@telia-ace/knowledge-widget-component-utilities';
2
+ import { PickerTypes } from '@telia-ace/knowledge-widget-core';
3
+ import React from 'react';
4
+ import { GuideProps } from './guide-component';
5
+ export declare type LanguageListItem = {
6
+ id: string;
7
+ key: string;
8
+ label: string;
9
+ };
10
+ declare type Props = Merge<{
11
+ header?: string;
12
+ tooltip?: string;
13
+ guide: GuideProps;
14
+ picker?: PickerTypes;
15
+ }, LanguageProperties>;
16
+ declare const Languages: React.FC<Props>;
17
+ export default Languages;
@@ -0,0 +1,85 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ import { PickerTypes } from '@telia-ace/knowledge-widget-core';
28
+ import { DrawerAnimationType, DrawerList, DropdownList, paddedBorderTabStyle, StyledListButton, SymbolBadge, Text, TextLink, useRouteData, } from '@telia-ace/knowledge-widget-ui';
29
+ import { createParams } from '@telia-ace/widget-utilities';
30
+ import React, { useMemo } from 'react';
31
+ import styled, { css } from 'styled-components';
32
+ var getCurrentLanguageLabel = function (guide, languages) {
33
+ var _a;
34
+ return ((_a = languages.find(function (l) { return l.id === guide.id; })) === null || _a === void 0 ? void 0 : _a.label) || '';
35
+ };
36
+ var Languages = function (_a) {
37
+ var header = _a.header, tooltip = _a.tooltip, _b = _a.picker, picker = _b === void 0 ? PickerTypes.NONE : _b, guide = _a.guide, other = __rest(_a, ["header", "tooltip", "picker", "guide"]);
38
+ var _c = useRouteData(), name = _c.name, params = _c.params;
39
+ var items = useMemo(function () {
40
+ return Object.keys(guide.translations || {}).reduce(function (acc, key) {
41
+ var item = {};
42
+ item.key = key;
43
+ item.id = (guide.translations || {})[key];
44
+ item.label = other["".concat(key, "LanguageLabel")];
45
+ if (item.id || item.label) {
46
+ acc.push(item);
47
+ }
48
+ return acc;
49
+ }, []);
50
+ }, [guide, other]);
51
+ if (!items.length) {
52
+ return null;
53
+ }
54
+ var currentLanguage = getCurrentLanguageLabel(guide, items);
55
+ var trigger = (React.createElement(Trigger, { tabIndex: 0, title: tooltip, "data-has-symbol": "true", "data-has-label": picker === PickerTypes.DROPDOWN && currentLanguage ? 'true' : 'false' },
56
+ picker === PickerTypes.DROPDOWN && (React.createElement(React.Fragment, null,
57
+ currentLanguage && React.createElement(LanguageButtonText, null, currentLanguage),
58
+ React.createElement(LanguageCaretSymbolBadge, { symbol: { type: 'Svg', content: 'caret-down' }, size: 11 }))),
59
+ picker === PickerTypes.DRAWER && (React.createElement(React.Fragment, null,
60
+ React.createElement(ColoredSymbolBadge, { symbol: { type: 'Svg', content: 'language' }, size: 20 })))));
61
+ var renderListItem = function (_a) {
62
+ var label = _a.label, key = _a.key, id = _a.id;
63
+ return (React.createElement("li", { key: key, "data-language": key },
64
+ React.createElement(LanguageLink, { tabIndex: 0, text: label, routeName: name, selected: guide.id === id, params: createParams(__assign(__assign({}, params), { connection: undefined, guide: id })) })));
65
+ };
66
+ if (picker === PickerTypes.DROPDOWN) {
67
+ return (React.createElement(StyledDropdownList, { className: "humany-guide-languages-dropdown-list", header: header, items: items, trigger: trigger, renderItem: renderListItem }));
68
+ }
69
+ if (picker === PickerTypes.DRAWER) {
70
+ return (React.createElement(DrawerList, { className: "humany-guide-languages-drawer-list", animation: { type: DrawerAnimationType.SlideInBottom }, header: header, items: items, trigger: trigger, renderItem: renderListItem }));
71
+ }
72
+ return null;
73
+ };
74
+ export default Languages;
75
+ var Trigger = styled(StyledListButton)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n &&& {\n margin: 0 ", " 0 0;\n }\n"], ["\n &&& {\n margin: 0 ", " 0 0;\n }\n"])), function (p) { var _a; return "calc(".concat((_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small, " * 2)"); });
76
+ var ColoredSymbolBadge = styled(SymbolBadge)(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n circle {\n fill: ", ";\n }\n\n line,\n path,\n rect {\n stroke: ", ";\n }\n"], ["\n circle {\n fill: ", ";\n }\n\n line,\n path,\n rect {\n stroke: ", ";\n }\n"])), function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.text; }, function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.text; });
77
+ var LanguageButtonText = styled(Text)(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n margin: 0 ", " 0 0;\n font-size: ", ";\n"], ["\n margin: 0 ", " 0 0;\n font-size: ", ";\n"])), function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; }, function (p) { var _a; return (_a = p.theme.fonts) === null || _a === void 0 ? void 0 : _a.normal; });
78
+ var LanguageCaretSymbolBadge = styled(SymbolBadge)(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-self: flex-end;\n stroke-width: 2px;\n stroke-linecap: round;\n\n && {\n width: 0.6em;\n height: 1em;\n }\n line {\n stroke: ", ";\n }\n"], ["\n align-self: flex-end;\n stroke-width: 2px;\n stroke-linecap: round;\n\n && {\n width: 0.6em;\n height: 1em;\n }\n line {\n stroke: ", ";\n }\n"])), function (p) { var _a; return (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.text; });
79
+ var StyledDropdownList = styled(DropdownList)(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n display: block;\n min-height: auto;\n"], ["\n display: block;\n min-height: auto;\n"])));
80
+ var LanguageLink = styled(TextLink)(templateObject_7 || (templateObject_7 = __makeTemplateObject(["\n color: ", ";\n ", "\n\n &:focus {\n ", "\n }\n"], ["\n color: ", ";\n ", "\n\n &:focus {\n ", "\n }\n"])), function (p) { var _a, _b; return (p.selected ? (_a = p.theme.colors) === null || _a === void 0 ? void 0 : _a.primary : (_b = p.theme.colors) === null || _b === void 0 ? void 0 : _b.text); }, function (p) { return p.selected && 'font-weight: bold;'; }, function (p) {
81
+ var _a;
82
+ return ((_a = p.theme.accessibility) === null || _a === void 0 ? void 0 : _a.isTabbing)
83
+ ? css(templateObject_6 || (templateObject_6 = __makeTemplateObject(["\n ", "\n text-decoration: underline;\n "], ["\n ", "\n text-decoration: underline;\n "])), paddedBorderTabStyle) : 'outline: none;';
84
+ });
85
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5, templateObject_6, templateObject_7;
@@ -0,0 +1,8 @@
1
+ import { DispatchAction } from '@telia-ace/knowledge-widget-ui';
2
+ import React from 'react';
3
+ declare type Props = {
4
+ className?: string;
5
+ dispatch: DispatchAction;
6
+ };
7
+ declare const Toolbar: React.FC<Props>;
8
+ export default Toolbar;
@@ -0,0 +1,57 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __rest = (this && this.__rest) || function (s, e) {
17
+ var t = {};
18
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
19
+ t[p] = s[p];
20
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
21
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
22
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
23
+ t[p[i]] = s[p[i]];
24
+ }
25
+ return t;
26
+ };
27
+ import { PickerTypes } from '@telia-ace/knowledge-widget-core';
28
+ import { useProperties } from '@telia-ace/knowledge-widget-ui';
29
+ import { appendClassNames } from '@telia-ace/widget-utilities';
30
+ import React from 'react';
31
+ import styled from 'styled-components';
32
+ import Categories from './categories';
33
+ import Functions from './functions';
34
+ import Languages from './languages';
35
+ var isEmpty = function (toolbar) {
36
+ var _a = toolbar.allowCopy, allowCopy = _a === void 0 ? false : _a, _b = toolbar.allowPrint, allowPrint = _b === void 0 ? false : _b, _c = toolbar.guideCategories, guideCategories = _c === void 0 ? false : _c, _d = toolbar.language, language = _d === void 0 ? false : _d, _e = toolbar.showFavoriteToggle, showFavoriteToggle = _e === void 0 ? false : _e, _f = toolbar.picker, picker = _f === void 0 ? PickerTypes.NONE : _f;
37
+ if ((!allowCopy && !allowPrint && !language && !showFavoriteToggle && !guideCategories) ||
38
+ picker === PickerTypes.NONE) {
39
+ return true;
40
+ }
41
+ return false;
42
+ };
43
+ var Toolbar = function (_a) {
44
+ var _b = _a.className, className = _b === void 0 ? '' : _b, dispatch = _a.dispatch;
45
+ var _c = useProperties(), toolbarLanguageHeader = _c.toolbarLanguageHeader, toolbarFunctionsHeader = _c.toolbarFunctionsHeader, toolbarLanguageTooltip = _c.toolbarLanguageTooltip, toolbarFunctionsTooltip = _c.toolbarFunctionsTooltip, toolbarFunctionsCloseButtonAriaLabel = _c.toolbarFunctionsCloseButtonAriaLabel, printActionLabel = _c.printActionLabel, copyActionLabel = _c.copyActionLabel, addFavoriteTooltip = _c.addFavoriteTooltip, removeFavoriteCancelLabel = _c.removeFavoriteCancelLabel, removeFavoriteConfirmLabel = _c.removeFavoriteConfirmLabel, removeFavoriteHeader = _c.removeFavoriteHeader, removeFavoriteLabel = _c.removeFavoriteLabel, removeFavoriteTooltip = _c.removeFavoriteTooltip, guide = _c.guide, toolbar = _c.toolbar, other = __rest(_c, ["toolbarLanguageHeader", "toolbarFunctionsHeader", "toolbarLanguageTooltip", "toolbarFunctionsTooltip", "toolbarFunctionsCloseButtonAriaLabel", "printActionLabel", "copyActionLabel", "addFavoriteTooltip", "removeFavoriteCancelLabel", "removeFavoriteConfirmLabel", "removeFavoriteHeader", "removeFavoriteLabel", "removeFavoriteTooltip", "guide", "toolbar"]);
46
+ if (!guide || !toolbar || isEmpty(toolbar)) {
47
+ return null;
48
+ }
49
+ var language = toolbar.language, guideCategories = toolbar.guideCategories, allowCopy = toolbar.allowCopy, allowPrint = toolbar.allowPrint, showFavoriteToggle = toolbar.showFavoriteToggle, picker = toolbar.picker;
50
+ return (React.createElement(Wrapper, { className: appendClassNames('humany-guide-toolbar', className) },
51
+ language && Object.keys(guide.translations || {}).length > 1 && (React.createElement(Languages, __assign({ guide: guide, header: toolbarLanguageHeader, tooltip: toolbarLanguageTooltip, picker: picker }, other))),
52
+ guideCategories && React.createElement(Categories, { guide: guide, toolbar: toolbar }),
53
+ (allowCopy || allowPrint || showFavoriteToggle) && (React.createElement(Functions, { guide: guide, header: toolbarFunctionsHeader, tooltip: toolbarFunctionsTooltip, printActionLabel: printActionLabel, copyActionLabel: copyActionLabel, addFavoriteTooltip: addFavoriteTooltip, removeFavoriteCancelLabel: removeFavoriteCancelLabel, removeFavoriteConfirmLabel: removeFavoriteConfirmLabel, removeFavoriteHeader: removeFavoriteHeader, removeFavoriteLabel: removeFavoriteLabel, removeFavoriteTooltip: removeFavoriteTooltip, toolbarFunctionsCloseButtonAriaLabel: toolbarFunctionsCloseButtonAriaLabel, allowCopy: allowCopy, allowPrint: allowPrint, showFavoriteToggle: showFavoriteToggle, picker: picker, dispatch: dispatch }))));
54
+ };
55
+ export default Toolbar;
56
+ var Wrapper = styled.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 0 0 auto;\n\n > :not(:last-child) {\n margin: 0 calc(", " * 2) 0 0;\n }\n"], ["\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin: 0 0 0 auto;\n\n > :not(:last-child) {\n margin: 0 calc(", " * 2) 0 0;\n }\n"])), function (p) { var _a; return (_a = p.theme.sizes) === null || _a === void 0 ? void 0 : _a.small; });
57
+ var templateObject_1;
@@ -0,0 +1,4 @@
1
+ import { ComponentNodeController } from '@telia-ace/knowledge-widget-core';
2
+ import { Container } from '@webprovisions/platform';
3
+ declare const _default: (container: Container, controller: ComponentNodeController) => void;
4
+ export default _default;
@@ -0,0 +1,52 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { updateForm } from '@telia-ace/knowledge-widget-component-utilities';
13
+ import { DataType, FeedbackType, } from '@telia-ace/knowledge-widget-types-grid';
14
+ export default (function (container, controller) {
15
+ controller.actions.create('feedback', function (input) {
16
+ var type = input === 'negative' ? FeedbackType.Negative : FeedbackType.Positive;
17
+ var _a = controller.properties(), guide = _a.guide, _b = _a.submitButtonLabel, submitButtonLabel = _b === void 0 ? 'Submit' : _b;
18
+ if (guide) {
19
+ var connection_1 = guide.connection, id_1 = guide.id, hasHandover_1 = guide.hasHandover;
20
+ controller.writeProperties({
21
+ feedbackGiven: input,
22
+ loading: hasHandover_1 && type === FeedbackType.Negative,
23
+ });
24
+ var events = container.get('$widget').events;
25
+ events.dispatch('tracking:feedback-given', {
26
+ guide: guide,
27
+ categories: guide.categories,
28
+ feedbackType: type.toLowerCase(),
29
+ });
30
+ return container.getAsync('dataClient').then(function (dataClient) {
31
+ return dataClient.feedback(id_1, connection_1, type).then(function () {
32
+ if (hasHandover_1 && type === FeedbackType.Negative) {
33
+ return dataClient
34
+ .fetch(DataType.ContactMethods, { guideId: id_1 })
35
+ .then(function (_a) {
36
+ var contactMethods = _a.contactMethods;
37
+ return controller.actions.dispatch('handover', {
38
+ handoverContactMethods: contactMethods.map(function (cm) { return (__assign(__assign({}, cm), { body: updateForm(cm, {
39
+ submit: submitButtonLabel,
40
+ }) })); }),
41
+ loading: false,
42
+ });
43
+ });
44
+ }
45
+ });
46
+ });
47
+ }
48
+ });
49
+ controller.actions.create('handover', function (input) {
50
+ return controller.writeProperties(__assign(__assign({}, input), { loading: false }));
51
+ });
52
+ });
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@telia-ace/knowledge-widget-components-guide",
3
+ "version": "1.0.1",
4
+ "description": "Guide component for ACE Knowledge Widgets.",
5
+ "license": "SEE LICENSE IN LICENSE.txt",
6
+ "author": "Telia Company AB",
7
+ "keywords": [
8
+ "telia"
9
+ ],
10
+ "main": "lib/index.js",
11
+ "module": "lib-esm/index.js",
12
+ "files": [
13
+ "LICENSE.txt",
14
+ "README.md",
15
+ "lib/",
16
+ "lib-esm/"
17
+ ],
18
+ "publishConfig": {
19
+ "access": "public"
20
+ },
21
+ "scripts": {
22
+ "clean": "cleandir lib && cleandir lib-esm",
23
+ "compile": "tsc -p tsconfig.cjs.json && tsc -p tsconfig.esm.json"
24
+ },
25
+ "sideEffects": false,
26
+ "typings": "lib/index.d.ts",
27
+ "dependencies": {
28
+ "@telia-ace/knowledge-widget-adapters": "^1.0.1",
29
+ "@telia-ace/knowledge-widget-component-utilities": "^1.0.1",
30
+ "@telia-ace/knowledge-widget-core": "^1.0.1",
31
+ "@telia-ace/knowledge-widget-types-grid": "^1.0.1",
32
+ "@telia-ace/knowledge-widget-ui": "^1.0.1",
33
+ "@telia-ace/widget-forms": "^1.0.1",
34
+ "@telia-ace/widget-routing": "^1.0.1",
35
+ "@telia-ace/widget-utilities": "^1.0.1",
36
+ "@webprovisions/platform": "^1.1.2",
37
+ "clipboard-polyfill": "3.0.2",
38
+ "react": "^17.0.2",
39
+ "react-dom": "^17.0.2"
40
+ },
41
+ "devDependencies": {
42
+ "@types/react": "^17.0.39",
43
+ "@types/react-dom": "^17.0.13",
44
+ "@types/styled-components": "^5.1.7"
45
+ },
46
+ "gitHead": "58b00b80f6a1e4a3c13f4291cb29b9422ea1aa4a"
47
+ }