@telia-ace/widget-components-widget-header 1.0.11 → 1.0.14

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.
@@ -0,0 +1,63 @@
1
+ import { createEventSubscriber as p } from "@telia-ace/widget-core";
2
+ import { createReactComponent as f } from "@telia-ace/widget-ui";
3
+ import { removeNullAndUndefinedValues as b } from "@telia-ace/widget-utilities";
4
+ const y = (s, e, n) => {
5
+ if (n !== "center")
6
+ return {};
7
+ const t = (a) => a.reduce((u, d) => {
8
+ const [l] = d.padding.split("px"), [g] = d.size.split("px");
9
+ return u + (+g + +l * 2);
10
+ }, 0), o = t(s), c = t(e), r = o - c;
11
+ return r === 0 ? {} : {
12
+ [o > c ? "right" : "left"]: `${Math.abs(r)}px`
13
+ };
14
+ }, v = (s) => Object.keys(s).reduce((e, n) => {
15
+ const t = s[n];
16
+ if (!t)
17
+ return e;
18
+ const [o, c] = e, r = t.position === "left" ? o : c;
19
+ return s[n].symbol, r.push({
20
+ symbol: t.symbol && typeof t.symbol == "string" ? { type: "Uri", content: t.symbol } : t.symbol,
21
+ type: n,
22
+ padding: t.padding || "10px",
23
+ label: t.label,
24
+ size: t.size || "64px",
25
+ tooltip: t.tooltip,
26
+ order: t.order || 0,
27
+ show: t.show
28
+ }), e;
29
+ }, [[], []]), h = (s) => s.getAsync("router").then((e) => {
30
+ if (!e)
31
+ return !0;
32
+ const n = e.getInitialRoute(), { name: t, params: o } = e.getRouteData();
33
+ return b(o), !((n == null ? void 0 : n.name) !== t || Object.keys(o).length > 0);
34
+ }), z = (s) => f(s, "widget-header", import("./widget-header.95f2f17b.js"), (e) => {
35
+ const { events: n } = s.get("$widget"), [t, o] = p(n), { actions: c = {} } = e.properties();
36
+ if (e.actions.create("close", (r, i) => i.preventDefault ? void 0 : s.get("$widget").invoke("close")), e.actions.create("back", (r, i) => {
37
+ if (!i.preventDefault)
38
+ return s.getAsync("router").then((a) => {
39
+ a.goBack();
40
+ });
41
+ }), e.properties((r) => {
42
+ const { actions: i = {} } = r;
43
+ if (!!i.back)
44
+ return Object.keys(i).forEach((a) => {
45
+ const u = i[a];
46
+ a === "back" && (u.show = r.showBack);
47
+ }), { actions: i };
48
+ }), e.actions.create("show-back", (r) => {
49
+ e.writeProperties({ showBack: r });
50
+ }), c.back) {
51
+ const r = () => h(s).then((i) => e.actions.dispatch("show-back", !i));
52
+ r(), t("router:changed", r);
53
+ }
54
+ return e.actions.create("minimize", (r, i) => i.preventDefault ? void 0 : s.get("$widget").invoke("hide")), () => {
55
+ o();
56
+ };
57
+ });
58
+ export {
59
+ z as W,
60
+ y as a,
61
+ v as c
62
+ };
63
+ //# sourceMappingURL=index.7df5456d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.7df5456d.js","sources":["../src/utils.ts","../src/widget-header-component.ts"],"sourcesContent":["import { RoutingService } from '@telia-ace/widget-routing';\r\nimport { removeNullAndUndefinedValues } from '@telia-ace/widget-utilities';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ActionNode, Symbol } from './widget-header-component';\r\n\r\nexport const calculateMargin = (\r\n leftNodes: ActionNode[],\r\n rightNodes: ActionNode[],\r\n textAlign: string\r\n) => {\r\n if (textAlign !== 'center') {\r\n return {};\r\n }\r\n\r\n const calculate = (nodes: ActionNode[]) => {\r\n return nodes.reduce<number>((acc, node) => {\r\n const [padding] = node.padding.split('px');\r\n const [size] = node.size.split('px');\r\n return acc + (+size + +padding * 2);\r\n }, 0);\r\n };\r\n const leftSize = calculate(leftNodes);\r\n const rightSize = calculate(rightNodes);\r\n\r\n const total = leftSize - rightSize;\r\n\r\n if (total === 0) {\r\n return {};\r\n }\r\n\r\n const direction = leftSize > rightSize ? 'right' : 'left';\r\n return {\r\n [direction]: `${Math.abs(total)}px`,\r\n };\r\n};\r\n\r\nexport const createNodes = (actions: { [key: string]: ActionNode }) => {\r\n return Object.keys(actions).reduce<[ActionNode[], ActionNode[]]>(\r\n (acc, key) => {\r\n const node = actions[key];\r\n if (!node) {\r\n return acc;\r\n }\r\n const [left, right] = acc;\r\n const arr = node.position === 'left' ? left : right;\r\n\r\n let symbol = actions[key].symbol;\r\n if (symbol && typeof symbol === 'string') {\r\n symbol = {\r\n type: 'Uri',\r\n content: symbol,\r\n };\r\n }\r\n\r\n arr.push({\r\n symbol:\r\n node.symbol && typeof node.symbol === 'string'\r\n ? { type: 'Uri', content: node.symbol }\r\n : (node.symbol as Symbol),\r\n type: key,\r\n padding: node.padding || '10px',\r\n label: node.label,\r\n size: node.size || '64px',\r\n tooltip: node.tooltip,\r\n order: node.order || 0,\r\n show: node.show,\r\n });\r\n\r\n return acc;\r\n },\r\n [[], []]\r\n );\r\n};\r\n\r\nexport const isOnInitialRoute = (container: Container) =>\r\n container.getAsync('router').then((router: RoutingService) => {\r\n if (!router) {\r\n return true;\r\n }\r\n const initialRoute = router.getInitialRoute();\r\n const { name, params } = router.getRouteData();\r\n\r\n removeNullAndUndefinedValues(params);\r\n\r\n if (initialRoute?.name !== name || Object.keys(params).length > 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n","import { createEventSubscriber } from '@telia-ace/widget-core';\r\nimport { RoutingService } from '@telia-ace/widget-routing';\r\nimport { createReactComponent } from '@telia-ace/widget-ui';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { isOnInitialRoute } from './utils';\r\n\r\nexport type Symbol = {\r\n type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;\r\n content: string;\r\n};\r\n\r\nexport type ActionNode = {\r\n type: string;\r\n label?: string;\r\n position?: 'right' | 'left';\r\n symbol?: Symbol;\r\n size: string;\r\n padding: string;\r\n tooltip?: string;\r\n order?: number;\r\n show?: boolean;\r\n};\r\n\r\nexport type WidgetHeaderComponentProps = {\r\n header: string;\r\n tagline: string;\r\n textAlign?: string;\r\n actions?: { [key: string]: ActionNode };\r\n tooltip?: string;\r\n route?: string;\r\n};\r\n\r\nconst WidgetHeaderComponent = (container: Container) => {\r\n return createReactComponent(\r\n container,\r\n 'widget-header',\r\n import('./widget-header'),\r\n (component) => {\r\n const { events } = container.get('$widget');\r\n const [subscribe, unsubscribe] = createEventSubscriber(events);\r\n\r\n const { actions = {} } = component.properties<WidgetHeaderComponentProps>();\r\n\r\n component.actions.create('close', (data, options) => {\r\n if (options.preventDefault) {\r\n return;\r\n }\r\n\r\n const widget = container.get('$widget');\r\n return widget.invoke('close');\r\n });\r\n component.actions.create('back', (data, options) => {\r\n if (options.preventDefault) {\r\n return;\r\n }\r\n\r\n return container.getAsync('router').then((router: RoutingService) => {\r\n router.goBack();\r\n });\r\n });\r\n\r\n component.properties((properties) => {\r\n const { actions = {} } = properties;\r\n\r\n if (!actions.back) {\r\n return;\r\n }\r\n\r\n Object.keys(actions).forEach((key) => {\r\n const node = actions[key];\r\n if (key === 'back') {\r\n node.show = properties.showBack;\r\n }\r\n });\r\n\r\n return { actions };\r\n });\r\n\r\n component.actions.create('show-back', (showBack) => {\r\n component.writeProperties({ showBack });\r\n });\r\n\r\n if (actions.back) {\r\n const showBack = () =>\r\n isOnInitialRoute(container).then((onInitialRoute) =>\r\n component.actions.dispatch('show-back', !onInitialRoute)\r\n );\r\n\r\n showBack();\r\n subscribe('router:changed', showBack);\r\n }\r\n\r\n component.actions.create('minimize', (data, options) => {\r\n if (options.preventDefault) {\r\n return;\r\n }\r\n\r\n const widget = container.get('$widget');\r\n return widget.invoke('hide');\r\n });\r\n\r\n return () => {\r\n unsubscribe();\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport default WidgetHeaderComponent;\r\n"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,5 +1,8 @@
1
- export { W as default } from "./index2.js";
1
+ import { W as i } from "./index.7df5456d.js";
2
2
  import "@telia-ace/widget-core";
3
3
  import "@telia-ace/widget-ui";
4
4
  import "@telia-ace/widget-utilities";
5
+ export {
6
+ i as default
7
+ };
5
8
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,256 @@
1
+ var A = Object.defineProperty, W = Object.defineProperties;
2
+ var B = Object.getOwnPropertyDescriptors;
3
+ var $ = Object.getOwnPropertySymbols;
4
+ var v = Object.prototype.hasOwnProperty, k = Object.prototype.propertyIsEnumerable;
5
+ var E = (e, t, i) => t in e ? A(e, t, { enumerable: !0, configurable: !0, writable: !0, value: i }) : e[t] = i, h = (e, t) => {
6
+ for (var i in t || (t = {}))
7
+ v.call(t, i) && E(e, i, t[i]);
8
+ if ($)
9
+ for (var i of $(t))
10
+ k.call(t, i) && E(e, i, t[i]);
11
+ return e;
12
+ }, N = (e, t) => W(e, B(t));
13
+ var f = (e, t) => {
14
+ var i = {};
15
+ for (var a in e)
16
+ v.call(e, a) && t.indexOf(a) < 0 && (i[a] = e[a]);
17
+ if (e != null && $)
18
+ for (var a of $(e))
19
+ t.indexOf(a) < 0 && k.call(e, a) && (i[a] = e[a]);
20
+ return i;
21
+ };
22
+ import { SymbolBadge as x, borderTabStyle as I, useDispatch as M, TransitionComponent as R, useProperties as q, Typography as S, headingElement as T, Link as L, linkTabStyle as _ } from "@telia-ace/widget-ui";
23
+ import { appendClassNames as D } from "@telia-ace/widget-utilities";
24
+ import r from "react";
25
+ import c, { css as d } from "styled-components";
26
+ import { c as H, a as P } from "./index.7df5456d.js";
27
+ import "@telia-ace/widget-core";
28
+ const j = ({ node: e }) => {
29
+ if (!e.symbol)
30
+ return null;
31
+ let t;
32
+ const i = e.symbol.type === "Svg";
33
+ if (e.symbol.type === "Svg") {
34
+ const a = parseInt(e.size, 10);
35
+ isNaN(a) || (t = a);
36
+ }
37
+ return /* @__PURE__ */ r.createElement(F, {
38
+ symbol: e.symbol,
39
+ svg: i,
40
+ size: t,
41
+ backgroundSize: "cover"
42
+ });
43
+ }, F = c((i) => {
44
+ var a = i, { svg: e } = a, t = f(a, ["svg"]);
45
+ return /* @__PURE__ */ r.createElement(x, h({}, t));
46
+ })`
47
+ color: ${(e) => {
48
+ var t;
49
+ return (t = e.theme.colors) == null ? void 0 : t.text;
50
+ }};
51
+ ${(e) => !e.svg && d`
52
+ border-radius: 50%;
53
+ overflow: hidden;
54
+ `}
55
+ `, G = ({ node: e }) => {
56
+ const t = e.symbol || { type: "Svg", content: "back" };
57
+ return /* @__PURE__ */ r.createElement(x, {
58
+ size: 20,
59
+ symbol: t
60
+ });
61
+ }, J = ({ node: e }) => {
62
+ const t = e.symbol || { type: "Svg", content: "close" }, i = parseInt(e == null ? void 0 : e.size, 10) || 14;
63
+ return /* @__PURE__ */ r.createElement(x, {
64
+ size: i,
65
+ symbol: t
66
+ });
67
+ }, K = ({ node: e }) => {
68
+ const t = e.symbol || { type: "Svg", content: "minimize" }, i = parseInt(e == null ? void 0 : e.size, 10) || 20;
69
+ return /* @__PURE__ */ r.createElement(x, {
70
+ size: i,
71
+ symbol: t
72
+ });
73
+ }, C = (i) => {
74
+ var a = i, { className: e = "" } = a, t = f(a, ["className"]);
75
+ const m = M(), { size: g, padding: p, type: s, tooltip: o, show: b = !0 } = t;
76
+ return s === "back" ? /* @__PURE__ */ r.createElement(w, {
77
+ size: g || "64px",
78
+ padding: p || "10px"
79
+ }, /* @__PURE__ */ r.createElement(R, {
80
+ in: b,
81
+ timeout: 300,
82
+ transitions: {
83
+ enter: {
84
+ type: "scale",
85
+ easing: "cubic-bezier(.08,.84,.74,1.84)"
86
+ },
87
+ exit: {
88
+ type: "scale",
89
+ easing: "ease-out"
90
+ }
91
+ }
92
+ }, (u, y) => /* @__PURE__ */ r.createElement(z, {
93
+ title: o,
94
+ "aria-label": o,
95
+ animationCss: y,
96
+ onClick: () => {
97
+ m("back");
98
+ }
99
+ }, /* @__PURE__ */ r.createElement(G, {
100
+ node: t
101
+ })))) : b ? /* @__PURE__ */ r.createElement(w, {
102
+ size: g || "64px",
103
+ padding: p || "10px",
104
+ squareRatio: s === "avatar"
105
+ }, s === "avatar" && /* @__PURE__ */ r.createElement(j, {
106
+ node: t
107
+ }), s === "close" && /* @__PURE__ */ r.createElement(z, {
108
+ title: o,
109
+ "aria-label": o,
110
+ onClick: () => {
111
+ m("close");
112
+ }
113
+ }, /* @__PURE__ */ r.createElement(J, {
114
+ node: t
115
+ })), s === "minimize" && /* @__PURE__ */ r.createElement(z, {
116
+ title: o,
117
+ "aria-label": o,
118
+ onClick: () => {
119
+ m("minimize");
120
+ }
121
+ }, /* @__PURE__ */ r.createElement(K, {
122
+ node: t
123
+ }))) : null;
124
+ }, w = c.div`
125
+ flex: 1;
126
+ max-width: ${(e) => e.size};
127
+ ${(e) => e.squareRatio && `max-height: ${e.size};`}
128
+ text-align: center;
129
+ padding: 0 ${(e) => e.padding};
130
+ && {
131
+ box-sizing: content-box;
132
+ }
133
+
134
+ svg {
135
+ vertical-align: middle;
136
+ }
137
+
138
+ i {
139
+ color: ${(e) => {
140
+ var t;
141
+ return (t = e.theme.colors) == null ? void 0 : t.text;
142
+ }};
143
+ font-size: ${(e) => e.size};
144
+ min-width: 1em;
145
+ min-height: 1em;
146
+ display: inline-block;
147
+ }
148
+ `, z = c.button`
149
+ ${(e) => !!e.animationCss && e.animationCss};
150
+ background: none;
151
+ border: none;
152
+ cursor: pointer;
153
+ padding: 0;
154
+ &:focus {
155
+ ${(e) => {
156
+ var t, i, a;
157
+ return ((t = e.theme.accessibility) == null ? void 0 : t.isTabbing) && d`
158
+ ${I};
159
+ border-color: ${(a = (i = e.theme.accessibility) == null ? void 0 : i.colors) == null ? void 0 : a.inactiveText};
160
+ `;
161
+ }};
162
+ }
163
+ `, re = (i) => {
164
+ var a = i, { className: e } = a, t = f(a, ["className"]);
165
+ const {
166
+ header: m,
167
+ tagline: g,
168
+ route: p,
169
+ tooltip: s = "",
170
+ actions: o = {},
171
+ textAlign: b = "center"
172
+ } = q(), [u, y] = H(o);
173
+ return u.sort((n, l) => (n.order || 0) - (l.order || 0)), y.sort((n, l) => (n.order || 0) - (l.order || 0)), /* @__PURE__ */ r.createElement(O, N(h({}, t), {
174
+ className: D(e, "humany-widget-header")
175
+ }), u.map((n, l) => /* @__PURE__ */ r.createElement(C, h({
176
+ key: `${n.type}+_${l}`
177
+ }, n))), /* @__PURE__ */ r.createElement(U, {
178
+ textAlign: b,
179
+ margin: P(u, y, b)
180
+ }, p ? /* @__PURE__ */ r.createElement(V, {
181
+ routeName: p,
182
+ title: s,
183
+ "aria-label": s
184
+ }, /* @__PURE__ */ r.createElement(S, {
185
+ variant: "h1"
186
+ }, m)) : /* @__PURE__ */ r.createElement(S, {
187
+ variant: "h1"
188
+ }, m), g && /* @__PURE__ */ r.createElement(Q, null, g)), y.map((n, l) => /* @__PURE__ */ r.createElement(C, h({
189
+ key: `${n.type}+_${l}`
190
+ }, n))));
191
+ }, O = c.div`
192
+ display: flex;
193
+ flex-direction: row;
194
+ align-items: center;
195
+
196
+ ${T("h1", d`
197
+ font-size: ${(e) => {
198
+ var t;
199
+ return (t = e.theme.fonts) == null ? void 0 : t.huge;
200
+ }};
201
+ margin: 0;
202
+ font-weight: 300;
203
+ color: ${(e) => {
204
+ var t;
205
+ return (t = e.theme.colors) == null ? void 0 : t.text;
206
+ }};
207
+ `)}
208
+
209
+ p {
210
+ color: ${(e) => {
211
+ var t;
212
+ return (t = e.theme.colors) == null ? void 0 : t.text;
213
+ }};
214
+ margin: 0;
215
+ }
216
+
217
+ svg {
218
+ line,
219
+ path,
220
+ circle {
221
+ stroke: ${(e) => {
222
+ var t;
223
+ return (t = e.theme.colors) == null ? void 0 : t.text;
224
+ }};
225
+ }
226
+ }
227
+ `, Q = c.p`
228
+ font-size: ${(e) => {
229
+ var t;
230
+ return (t = e.theme.fonts) == null ? void 0 : t.normal;
231
+ }};
232
+ font-weight: 300;
233
+ `, U = c.div`
234
+ flex: 1;
235
+ text-align: ${(e) => e.textAlign};
236
+
237
+ margin-right: ${(e) => e.margin.right || 0};
238
+ margin-left: ${(e) => e.margin.left || 0};
239
+ `, V = c(L)`
240
+ text-decoration: none;
241
+ &:focus {
242
+ ${T("h1", d`
243
+ ${(e) => {
244
+ var t;
245
+ return ((t = e.theme.accessibility) == null ? void 0 : t.isTabbing) && d`
246
+ ${_}
247
+ display: inline-block;
248
+ `;
249
+ }};
250
+ `)}
251
+ }
252
+ `;
253
+ export {
254
+ re as default
255
+ };
256
+ //# sourceMappingURL=widget-header.95f2f17b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"widget-header.95f2f17b.js","sources":["../src/avatar.tsx","../src/back.tsx","../src/close.tsx","../src/minimize.tsx","../src/node.tsx","../src/widget-header.tsx"],"sourcesContent":["import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = { node: ActionNode };\r\nconst Avatar: React.FC<Props> = ({ node }) => {\r\n if (!node.symbol) {\r\n return null;\r\n }\r\n\r\n let size;\r\n const isSvg = node.symbol.type === 'Svg';\r\n if (node.symbol.type === 'Svg') {\r\n const sizeNumber = parseInt(node.size, 10);\r\n\r\n if (!isNaN(sizeNumber)) {\r\n size = sizeNumber;\r\n }\r\n }\r\n\r\n return <Wrapper symbol={node.symbol} svg={isSvg} size={size} backgroundSize=\"cover\" />;\r\n};\r\n\r\nexport default Avatar;\r\n\r\nconst Wrapper = styled(({ svg, ...other }) => <SymbolBadge {...other} />)`\r\n color: ${(p) => p.theme.colors?.text};\r\n ${(p) =>\r\n !p.svg &&\r\n css`\r\n border-radius: 50%;\r\n overflow: hidden;\r\n `}\r\n`;\r\n","import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = {\r\n node: ActionNode;\r\n};\r\nconst Back: React.FC<Props> = ({ node }) => {\r\n const symbol = node.symbol || { type: 'Svg', content: 'back' };\r\n return <SymbolBadge size={20} symbol={symbol} />;\r\n};\r\n\r\nexport default Back;\r\n","import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = {\r\n node: ActionNode;\r\n};\r\nconst Close: React.FC<Props> = ({ node }) => {\r\n const symbol = node.symbol || { type: 'Svg', content: 'close' };\r\n const size = parseInt(node?.size, 10) || 14;\r\n return <SymbolBadge size={size} symbol={symbol} />;\r\n};\r\n\r\nexport default Close;\r\n","import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = {\r\n node: ActionNode;\r\n};\r\nconst Minimize: React.FC<Props> = ({ node }) => {\r\n const symbol = node.symbol || { type: 'Svg', content: 'minimize' };\r\n const size = parseInt(node?.size, 10) || 20;\r\n return <SymbolBadge size={size} symbol={symbol} />;\r\n};\r\n\r\nexport default Minimize;\r\n","import { borderTabStyle, TransitionComponent, useDispatch } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Avatar from './avatar';\r\nimport Back from './back';\r\nimport Close from './close';\r\nimport Minimize from './minimize';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = Merge<\r\n ActionNode,\r\n {\r\n className?: string;\r\n }\r\n>;\r\n\r\nconst Node: React.FC<Props> = ({ className = '', ...node }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { size, padding, type, tooltip, show = true } = node;\r\n\r\n if (type === 'back') {\r\n return (\r\n <NodeWrapper size={size || '64px'} padding={padding || '10px'}>\r\n <TransitionComponent\r\n in={show}\r\n timeout={300}\r\n transitions={{\r\n enter: {\r\n type: 'scale',\r\n easing: 'cubic-bezier(.08,.84,.74,1.84)',\r\n },\r\n exit: {\r\n type: 'scale',\r\n easing: 'ease-out',\r\n },\r\n }}\r\n >\r\n {(state: any, css: any) => (\r\n <ActionButton\r\n title={tooltip}\r\n aria-label={tooltip}\r\n animationCss={css}\r\n onClick={() => {\r\n dispatch('back');\r\n }}\r\n >\r\n <Back node={node} />\r\n </ActionButton>\r\n )}\r\n </TransitionComponent>\r\n </NodeWrapper>\r\n );\r\n }\r\n\r\n if (!show) {\r\n return null;\r\n }\r\n\r\n return (\r\n <NodeWrapper\r\n size={size || '64px'}\r\n padding={padding || '10px'}\r\n squareRatio={type === 'avatar'}\r\n >\r\n {type === 'avatar' && <Avatar node={node} />}\r\n {type === 'close' && (\r\n <ActionButton\r\n title={tooltip}\r\n aria-label={tooltip}\r\n onClick={() => {\r\n dispatch('close');\r\n }}\r\n >\r\n <Close node={node} />\r\n </ActionButton>\r\n )}\r\n {type === 'minimize' && (\r\n <ActionButton\r\n title={tooltip}\r\n aria-label={tooltip}\r\n onClick={() => {\r\n dispatch('minimize');\r\n }}\r\n >\r\n <Minimize node={node} />\r\n </ActionButton>\r\n )}\r\n </NodeWrapper>\r\n );\r\n};\r\n\r\nexport default Node;\r\n\r\nconst NodeWrapper = styled.div<{ size: string; padding: string; squareRatio?: boolean }>`\r\n flex: 1;\r\n max-width: ${(p) => p.size};\r\n ${(p) => p.squareRatio && `max-height: ${p.size};`}\r\n text-align: center;\r\n padding: 0 ${(p) => p.padding};\r\n && {\r\n box-sizing: content-box;\r\n }\r\n\r\n svg {\r\n vertical-align: middle;\r\n }\r\n\r\n i {\r\n color: ${(p) => p.theme.colors?.text};\r\n font-size: ${(p) => p.size};\r\n min-width: 1em;\r\n min-height: 1em;\r\n display: inline-block;\r\n }\r\n`;\r\nconst ActionButton = styled.button<any>`\r\n ${(p) => !!p.animationCss && p.animationCss};\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n padding: 0;\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle};\r\n border-color: ${p.theme.accessibility?.colors?.inactiveText};\r\n `};\r\n }\r\n`;\r\n","import {\r\n headingElement,\r\n Link,\r\n linkTabStyle,\r\n Typography,\r\n useProperties,\r\n} from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Node from './node';\r\nimport { calculateMargin, createNodes } from './utils';\r\nimport { WidgetHeaderComponentProps } from './widget-header-component';\r\n\r\ntype Props = {\r\n className: string;\r\n role?: string;\r\n};\r\n\r\nconst WidgetHeader: React.FC<Props> = ({ className, ...other }) => {\r\n const {\r\n header,\r\n tagline,\r\n route,\r\n tooltip = '',\r\n actions = {},\r\n textAlign = 'center',\r\n } = useProperties<WidgetHeaderComponentProps>();\r\n\r\n const [leftNodes, rightNodes] = createNodes(actions);\r\n leftNodes.sort((a, b) => (a.order || 0) - (b.order || 0));\r\n rightNodes.sort((a, b) => (a.order || 0) - (b.order || 0));\r\n return (\r\n <Wrapper {...other} className={appendClassNames(className, 'humany-widget-header')}>\r\n {leftNodes.map((node, key) => (\r\n <Node key={`${node.type}+_${key}`} {...node} />\r\n ))}\r\n\r\n <MainNode\r\n textAlign={textAlign}\r\n margin={calculateMargin(leftNodes, rightNodes, textAlign)}\r\n >\r\n {route ? (\r\n <StyledLink routeName={route} title={tooltip} aria-label={tooltip}>\r\n <Typography variant=\"h1\">{header}</Typography>\r\n </StyledLink>\r\n ) : (\r\n <Typography variant=\"h1\">{header}</Typography>\r\n )}\r\n {tagline && <Tagline>{tagline}</Tagline>}\r\n </MainNode>\r\n\r\n {rightNodes.map((node, key) => (\r\n <Node key={`${node.type}+_${key}`} {...node} />\r\n ))}\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default WidgetHeader;\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-size: ${(p) => p.theme.fonts?.huge};\r\n margin: 0;\r\n font-weight: 300;\r\n color: ${(p) => p.theme.colors?.text};\r\n `\r\n )}\r\n\r\n p {\r\n color: ${(p) => p.theme.colors?.text};\r\n margin: 0;\r\n }\r\n\r\n svg {\r\n line,\r\n path,\r\n circle {\r\n stroke: ${(p) => p.theme.colors?.text};\r\n }\r\n }\r\n`;\r\n\r\nconst Tagline = styled.p`\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: 300;\r\n`;\r\n\r\nconst MainNode = styled.div<{\r\n textAlign: string;\r\n margin: { left?: string; right?: string };\r\n}>`\r\n flex: 1;\r\n text-align: ${(p) => p.textAlign};\r\n\r\n margin-right: ${(p) => p.margin.right || 0};\r\n margin-left: ${(p) => p.margin.left || 0};\r\n`;\r\n\r\nconst StyledLink = styled(Link)<any>`\r\n text-decoration: none;\r\n &:focus {\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${linkTabStyle}\r\n display: inline-block;\r\n `};\r\n `\r\n )}\r\n }\r\n`;\r\n"],"names":["Wrapper"],"mappings":"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"}
package/package.json CHANGED
@@ -1,13 +1,17 @@
1
1
  {
2
2
  "name": "@telia-ace/widget-components-widget-header",
3
- "version": "1.0.11",
3
+ "version": "1.0.14",
4
4
  "description": "Widget header component for ACE Widgets.",
5
5
  "license": "SEE LICENSE IN LICENSE.txt",
6
6
  "author": "Telia Company AB",
7
7
  "keywords": [
8
8
  "telia"
9
9
  ],
10
- "module": "dist/index.js",
10
+ "exports": {
11
+ "development": "./src/index.ts",
12
+ "default": "./dist/index.js"
13
+ },
14
+ "type": "module",
11
15
  "types": "dist/index.d.ts",
12
16
  "files": [
13
17
  "LICENSE.txt",
@@ -24,9 +28,9 @@
24
28
  },
25
29
  "sideEffects": false,
26
30
  "dependencies": {
27
- "@telia-ace/widget-core": "^1.0.9",
28
- "@telia-ace/widget-routing": "^1.0.10",
29
- "@telia-ace/widget-ui": "^1.0.15",
31
+ "@telia-ace/widget-core": "^1.0.11",
32
+ "@telia-ace/widget-routing": "^1.0.12",
33
+ "@telia-ace/widget-ui": "^1.0.18",
30
34
  "@telia-ace/widget-utilities": "^1.0.2",
31
35
  "@webprovisions/platform": "^1.1.2"
32
36
  },
@@ -40,5 +44,5 @@
40
44
  "@types/react-dom": "^16.8.0",
41
45
  "@types/styled-components": "^5.1.7"
42
46
  },
43
- "gitHead": "d57f04d13a7b937875290ba5e016bd581fbfe889"
47
+ "gitHead": "4006655a78d8f0379c021e4362536dcdf881b3d0"
44
48
  }
package/dist/index2.js DELETED
@@ -1,114 +0,0 @@
1
- import { createEventSubscriber } from "@telia-ace/widget-core";
2
- import { createReactComponent } from "@telia-ace/widget-ui";
3
- import { removeNullAndUndefinedValues } from "@telia-ace/widget-utilities";
4
- const calculateMargin = (leftNodes, rightNodes, textAlign) => {
5
- if (textAlign !== "center") {
6
- return {};
7
- }
8
- const calculate = (nodes) => {
9
- return nodes.reduce((acc, node) => {
10
- const [padding] = node.padding.split("px");
11
- const [size] = node.size.split("px");
12
- return acc + (+size + +padding * 2);
13
- }, 0);
14
- };
15
- const leftSize = calculate(leftNodes);
16
- const rightSize = calculate(rightNodes);
17
- const total = leftSize - rightSize;
18
- if (total === 0) {
19
- return {};
20
- }
21
- const direction = leftSize > rightSize ? "right" : "left";
22
- return {
23
- [direction]: `${Math.abs(total)}px`
24
- };
25
- };
26
- const createNodes = (actions) => {
27
- return Object.keys(actions).reduce((acc, key) => {
28
- const node = actions[key];
29
- if (!node) {
30
- return acc;
31
- }
32
- const [left, right] = acc;
33
- const arr = node.position === "left" ? left : right;
34
- actions[key].symbol;
35
- arr.push({
36
- symbol: node.symbol && typeof node.symbol === "string" ? { type: "Uri", content: node.symbol } : node.symbol,
37
- type: key,
38
- padding: node.padding || "10px",
39
- label: node.label,
40
- size: node.size || "64px",
41
- tooltip: node.tooltip,
42
- order: node.order || 0,
43
- show: node.show
44
- });
45
- return acc;
46
- }, [[], []]);
47
- };
48
- const isOnInitialRoute = (container) => container.getAsync("router").then((router) => {
49
- if (!router) {
50
- return true;
51
- }
52
- const initialRoute = router.getInitialRoute();
53
- const { name, params } = router.getRouteData();
54
- removeNullAndUndefinedValues(params);
55
- if ((initialRoute == null ? void 0 : initialRoute.name) !== name || Object.keys(params).length > 0) {
56
- return false;
57
- }
58
- return true;
59
- });
60
- const WidgetHeaderComponent = (container) => {
61
- return createReactComponent(container, "widget-header", import("./widget-header.js"), (component) => {
62
- const { events } = container.get("$widget");
63
- const [subscribe, unsubscribe] = createEventSubscriber(events);
64
- const { actions = {} } = component.properties();
65
- component.actions.create("close", (data, options) => {
66
- if (options.preventDefault) {
67
- return;
68
- }
69
- const widget = container.get("$widget");
70
- return widget.invoke("close");
71
- });
72
- component.actions.create("back", (data, options) => {
73
- if (options.preventDefault) {
74
- return;
75
- }
76
- return container.getAsync("router").then((router) => {
77
- router.goBack();
78
- });
79
- });
80
- component.properties((properties) => {
81
- const { actions: actions2 = {} } = properties;
82
- if (!actions2.back) {
83
- return;
84
- }
85
- Object.keys(actions2).forEach((key) => {
86
- const node = actions2[key];
87
- if (key === "back") {
88
- node.show = properties.showBack;
89
- }
90
- });
91
- return { actions: actions2 };
92
- });
93
- component.actions.create("show-back", (showBack) => {
94
- component.writeProperties({ showBack });
95
- });
96
- if (actions.back) {
97
- const showBack = () => isOnInitialRoute(container).then((onInitialRoute) => component.actions.dispatch("show-back", !onInitialRoute));
98
- showBack();
99
- subscribe("router:changed", showBack);
100
- }
101
- component.actions.create("minimize", (data, options) => {
102
- if (options.preventDefault) {
103
- return;
104
- }
105
- const widget = container.get("$widget");
106
- return widget.invoke("hide");
107
- });
108
- return () => {
109
- unsubscribe();
110
- };
111
- });
112
- };
113
- export { WidgetHeaderComponent as W, calculateMargin as a, createNodes as c };
114
- //# sourceMappingURL=index2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index2.js","sources":["../src/utils.ts","../src/widget-header-component.ts"],"sourcesContent":["import { RoutingService } from '@telia-ace/widget-routing';\r\nimport { removeNullAndUndefinedValues } from '@telia-ace/widget-utilities';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { ActionNode, Symbol } from './widget-header-component';\r\n\r\nexport const calculateMargin = (\r\n leftNodes: ActionNode[],\r\n rightNodes: ActionNode[],\r\n textAlign: string\r\n) => {\r\n if (textAlign !== 'center') {\r\n return {};\r\n }\r\n\r\n const calculate = (nodes: ActionNode[]) => {\r\n return nodes.reduce<number>((acc, node) => {\r\n const [padding] = node.padding.split('px');\r\n const [size] = node.size.split('px');\r\n return acc + (+size + +padding * 2);\r\n }, 0);\r\n };\r\n const leftSize = calculate(leftNodes);\r\n const rightSize = calculate(rightNodes);\r\n\r\n const total = leftSize - rightSize;\r\n\r\n if (total === 0) {\r\n return {};\r\n }\r\n\r\n const direction = leftSize > rightSize ? 'right' : 'left';\r\n return {\r\n [direction]: `${Math.abs(total)}px`,\r\n };\r\n};\r\n\r\nexport const createNodes = (actions: { [key: string]: ActionNode }) => {\r\n return Object.keys(actions).reduce<[ActionNode[], ActionNode[]]>(\r\n (acc, key) => {\r\n const node = actions[key];\r\n if (!node) {\r\n return acc;\r\n }\r\n const [left, right] = acc;\r\n const arr = node.position === 'left' ? left : right;\r\n\r\n let symbol = actions[key].symbol;\r\n if (symbol && typeof symbol === 'string') {\r\n symbol = {\r\n type: 'Uri',\r\n content: symbol,\r\n };\r\n }\r\n\r\n arr.push({\r\n symbol:\r\n node.symbol && typeof node.symbol === 'string'\r\n ? { type: 'Uri', content: node.symbol }\r\n : (node.symbol as Symbol),\r\n type: key,\r\n padding: node.padding || '10px',\r\n label: node.label,\r\n size: node.size || '64px',\r\n tooltip: node.tooltip,\r\n order: node.order || 0,\r\n show: node.show,\r\n });\r\n\r\n return acc;\r\n },\r\n [[], []]\r\n );\r\n};\r\n\r\nexport const isOnInitialRoute = (container: Container) =>\r\n container.getAsync('router').then((router: RoutingService) => {\r\n if (!router) {\r\n return true;\r\n }\r\n const initialRoute = router.getInitialRoute();\r\n const { name, params } = router.getRouteData();\r\n\r\n removeNullAndUndefinedValues(params);\r\n\r\n if (initialRoute?.name !== name || Object.keys(params).length > 0) {\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n","import { createEventSubscriber } from '@telia-ace/widget-core';\r\nimport { RoutingService } from '@telia-ace/widget-routing';\r\nimport { createReactComponent } from '@telia-ace/widget-ui';\r\nimport { Container } from '@webprovisions/platform';\r\nimport { isOnInitialRoute } from './utils';\r\n\r\nexport type Symbol = {\r\n type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;\r\n content: string;\r\n};\r\n\r\nexport type ActionNode = {\r\n type: string;\r\n label?: string;\r\n position?: 'right' | 'left';\r\n symbol?: Symbol;\r\n size: string;\r\n padding: string;\r\n tooltip?: string;\r\n order?: number;\r\n show?: boolean;\r\n};\r\n\r\nexport type WidgetHeaderComponentProps = {\r\n header: string;\r\n tagline: string;\r\n textAlign?: string;\r\n actions?: { [key: string]: ActionNode };\r\n tooltip?: string;\r\n route?: string;\r\n};\r\n\r\nconst WidgetHeaderComponent = (container: Container) => {\r\n return createReactComponent(\r\n container,\r\n 'widget-header',\r\n import('./widget-header'),\r\n (component) => {\r\n const { events } = container.get('$widget');\r\n const [subscribe, unsubscribe] = createEventSubscriber(events);\r\n\r\n const { actions = {} } = component.properties<WidgetHeaderComponentProps>();\r\n\r\n component.actions.create('close', (data, options) => {\r\n if (options.preventDefault) {\r\n return;\r\n }\r\n\r\n const widget = container.get('$widget');\r\n return widget.invoke('close');\r\n });\r\n component.actions.create('back', (data, options) => {\r\n if (options.preventDefault) {\r\n return;\r\n }\r\n\r\n return container.getAsync('router').then((router: RoutingService) => {\r\n router.goBack();\r\n });\r\n });\r\n\r\n component.properties((properties) => {\r\n const { actions = {} } = properties;\r\n\r\n if (!actions.back) {\r\n return;\r\n }\r\n\r\n Object.keys(actions).forEach((key) => {\r\n const node = actions[key];\r\n if (key === 'back') {\r\n node.show = properties.showBack;\r\n }\r\n });\r\n\r\n return { actions };\r\n });\r\n\r\n component.actions.create('show-back', (showBack) => {\r\n component.writeProperties({ showBack });\r\n });\r\n\r\n if (actions.back) {\r\n const showBack = () =>\r\n isOnInitialRoute(container).then((onInitialRoute) =>\r\n component.actions.dispatch('show-back', !onInitialRoute)\r\n );\r\n\r\n showBack();\r\n subscribe('router:changed', showBack);\r\n }\r\n\r\n component.actions.create('minimize', (data, options) => {\r\n if (options.preventDefault) {\r\n return;\r\n }\r\n\r\n const widget = container.get('$widget');\r\n return widget.invoke('hide');\r\n });\r\n\r\n return () => {\r\n unsubscribe();\r\n };\r\n }\r\n );\r\n};\r\n\r\nexport default WidgetHeaderComponent;\r\n"],"names":[],"mappings":"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"}
@@ -1,291 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __defProps = Object.defineProperties;
3
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
4
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
7
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
8
- var __spreadValues = (a, b) => {
9
- for (var prop in b || (b = {}))
10
- if (__hasOwnProp.call(b, prop))
11
- __defNormalProp(a, prop, b[prop]);
12
- if (__getOwnPropSymbols)
13
- for (var prop of __getOwnPropSymbols(b)) {
14
- if (__propIsEnum.call(b, prop))
15
- __defNormalProp(a, prop, b[prop]);
16
- }
17
- return a;
18
- };
19
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
20
- var __objRest = (source, exclude) => {
21
- var target = {};
22
- for (var prop in source)
23
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
24
- target[prop] = source[prop];
25
- if (source != null && __getOwnPropSymbols)
26
- for (var prop of __getOwnPropSymbols(source)) {
27
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
28
- target[prop] = source[prop];
29
- }
30
- return target;
31
- };
32
- import { SymbolBadge, borderTabStyle, useDispatch, TransitionComponent, useProperties, Typography, headingElement, Link, linkTabStyle } from "@telia-ace/widget-ui";
33
- import { appendClassNames } from "@telia-ace/widget-utilities";
34
- import React from "react";
35
- import styled, { css } from "styled-components";
36
- import { c as createNodes, a as calculateMargin } from "./index2.js";
37
- import "@telia-ace/widget-core";
38
- const Avatar = ({ node }) => {
39
- if (!node.symbol) {
40
- return null;
41
- }
42
- let size;
43
- const isSvg = node.symbol.type === "Svg";
44
- if (node.symbol.type === "Svg") {
45
- const sizeNumber = parseInt(node.size, 10);
46
- if (!isNaN(sizeNumber)) {
47
- size = sizeNumber;
48
- }
49
- }
50
- return /* @__PURE__ */ React.createElement(Wrapper$1, {
51
- symbol: node.symbol,
52
- svg: isSvg,
53
- size,
54
- backgroundSize: "cover"
55
- });
56
- };
57
- const Wrapper$1 = styled((_a) => {
58
- var _b = _a, { svg } = _b, other = __objRest(_b, ["svg"]);
59
- return /* @__PURE__ */ React.createElement(SymbolBadge, __spreadValues({}, other));
60
- })`
61
- color: ${(p) => {
62
- var _a;
63
- return (_a = p.theme.colors) == null ? void 0 : _a.text;
64
- }};
65
- ${(p) => !p.svg && css`
66
- border-radius: 50%;
67
- overflow: hidden;
68
- `}
69
- `;
70
- const Back = ({ node }) => {
71
- const symbol = node.symbol || { type: "Svg", content: "back" };
72
- return /* @__PURE__ */ React.createElement(SymbolBadge, {
73
- size: 20,
74
- symbol
75
- });
76
- };
77
- const Close = ({ node }) => {
78
- const symbol = node.symbol || { type: "Svg", content: "close" };
79
- const size = parseInt(node == null ? void 0 : node.size, 10) || 14;
80
- return /* @__PURE__ */ React.createElement(SymbolBadge, {
81
- size,
82
- symbol
83
- });
84
- };
85
- const Minimize = ({ node }) => {
86
- const symbol = node.symbol || { type: "Svg", content: "minimize" };
87
- const size = parseInt(node == null ? void 0 : node.size, 10) || 20;
88
- return /* @__PURE__ */ React.createElement(SymbolBadge, {
89
- size,
90
- symbol
91
- });
92
- };
93
- const Node = (_c) => {
94
- var _d = _c, { className = "" } = _d, node = __objRest(_d, ["className"]);
95
- const dispatch = useDispatch();
96
- const { size, padding, type, tooltip, show = true } = node;
97
- if (type === "back") {
98
- return /* @__PURE__ */ React.createElement(NodeWrapper, {
99
- size: size || "64px",
100
- padding: padding || "10px"
101
- }, /* @__PURE__ */ React.createElement(TransitionComponent, {
102
- in: show,
103
- timeout: 300,
104
- transitions: {
105
- enter: {
106
- type: "scale",
107
- easing: "cubic-bezier(.08,.84,.74,1.84)"
108
- },
109
- exit: {
110
- type: "scale",
111
- easing: "ease-out"
112
- }
113
- }
114
- }, (state, css2) => /* @__PURE__ */ React.createElement(ActionButton, {
115
- title: tooltip,
116
- "aria-label": tooltip,
117
- animationCss: css2,
118
- onClick: () => {
119
- dispatch("back");
120
- }
121
- }, /* @__PURE__ */ React.createElement(Back, {
122
- node
123
- }))));
124
- }
125
- if (!show) {
126
- return null;
127
- }
128
- return /* @__PURE__ */ React.createElement(NodeWrapper, {
129
- size: size || "64px",
130
- padding: padding || "10px",
131
- squareRatio: type === "avatar"
132
- }, type === "avatar" && /* @__PURE__ */ React.createElement(Avatar, {
133
- node
134
- }), type === "close" && /* @__PURE__ */ React.createElement(ActionButton, {
135
- title: tooltip,
136
- "aria-label": tooltip,
137
- onClick: () => {
138
- dispatch("close");
139
- }
140
- }, /* @__PURE__ */ React.createElement(Close, {
141
- node
142
- })), type === "minimize" && /* @__PURE__ */ React.createElement(ActionButton, {
143
- title: tooltip,
144
- "aria-label": tooltip,
145
- onClick: () => {
146
- dispatch("minimize");
147
- }
148
- }, /* @__PURE__ */ React.createElement(Minimize, {
149
- node
150
- })));
151
- };
152
- const NodeWrapper = styled.div`
153
- flex: 1;
154
- max-width: ${(p) => p.size};
155
- ${(p) => p.squareRatio && `max-height: ${p.size};`}
156
- text-align: center;
157
- padding: 0 ${(p) => p.padding};
158
- && {
159
- box-sizing: content-box;
160
- }
161
-
162
- svg {
163
- vertical-align: middle;
164
- }
165
-
166
- i {
167
- color: ${(p) => {
168
- var _a;
169
- return (_a = p.theme.colors) == null ? void 0 : _a.text;
170
- }};
171
- font-size: ${(p) => p.size};
172
- min-width: 1em;
173
- min-height: 1em;
174
- display: inline-block;
175
- }
176
- `;
177
- const ActionButton = styled.button`
178
- ${(p) => !!p.animationCss && p.animationCss};
179
- background: none;
180
- border: none;
181
- cursor: pointer;
182
- padding: 0;
183
- &:focus {
184
- ${(p) => {
185
- var _a, _b, _c;
186
- return ((_a = p.theme.accessibility) == null ? void 0 : _a.isTabbing) && css`
187
- ${borderTabStyle};
188
- border-color: ${(_c = (_b = p.theme.accessibility) == null ? void 0 : _b.colors) == null ? void 0 : _c.inactiveText};
189
- `;
190
- }};
191
- }
192
- `;
193
- const WidgetHeader = (_e) => {
194
- var _f = _e, { className } = _f, other = __objRest(_f, ["className"]);
195
- const {
196
- header,
197
- tagline,
198
- route,
199
- tooltip = "",
200
- actions = {},
201
- textAlign = "center"
202
- } = useProperties();
203
- const [leftNodes, rightNodes] = createNodes(actions);
204
- leftNodes.sort((a, b) => (a.order || 0) - (b.order || 0));
205
- rightNodes.sort((a, b) => (a.order || 0) - (b.order || 0));
206
- return /* @__PURE__ */ React.createElement(Wrapper, __spreadProps(__spreadValues({}, other), {
207
- className: appendClassNames(className, "humany-widget-header")
208
- }), leftNodes.map((node, key) => /* @__PURE__ */ React.createElement(Node, __spreadValues({
209
- key: `${node.type}+_${key}`
210
- }, node))), /* @__PURE__ */ React.createElement(MainNode, {
211
- textAlign,
212
- margin: calculateMargin(leftNodes, rightNodes, textAlign)
213
- }, route ? /* @__PURE__ */ React.createElement(StyledLink, {
214
- routeName: route,
215
- title: tooltip,
216
- "aria-label": tooltip
217
- }, /* @__PURE__ */ React.createElement(Typography, {
218
- variant: "h1"
219
- }, header)) : /* @__PURE__ */ React.createElement(Typography, {
220
- variant: "h1"
221
- }, header), tagline && /* @__PURE__ */ React.createElement(Tagline, null, tagline)), rightNodes.map((node, key) => /* @__PURE__ */ React.createElement(Node, __spreadValues({
222
- key: `${node.type}+_${key}`
223
- }, node))));
224
- };
225
- const Wrapper = styled.div`
226
- display: flex;
227
- flex-direction: row;
228
- align-items: center;
229
-
230
- ${headingElement("h1", css`
231
- font-size: ${(p) => {
232
- var _a;
233
- return (_a = p.theme.fonts) == null ? void 0 : _a.huge;
234
- }};
235
- margin: 0;
236
- font-weight: 300;
237
- color: ${(p) => {
238
- var _a;
239
- return (_a = p.theme.colors) == null ? void 0 : _a.text;
240
- }};
241
- `)}
242
-
243
- p {
244
- color: ${(p) => {
245
- var _a;
246
- return (_a = p.theme.colors) == null ? void 0 : _a.text;
247
- }};
248
- margin: 0;
249
- }
250
-
251
- svg {
252
- line,
253
- path,
254
- circle {
255
- stroke: ${(p) => {
256
- var _a;
257
- return (_a = p.theme.colors) == null ? void 0 : _a.text;
258
- }};
259
- }
260
- }
261
- `;
262
- const Tagline = styled.p`
263
- font-size: ${(p) => {
264
- var _a;
265
- return (_a = p.theme.fonts) == null ? void 0 : _a.normal;
266
- }};
267
- font-weight: 300;
268
- `;
269
- const MainNode = styled.div`
270
- flex: 1;
271
- text-align: ${(p) => p.textAlign};
272
-
273
- margin-right: ${(p) => p.margin.right || 0};
274
- margin-left: ${(p) => p.margin.left || 0};
275
- `;
276
- const StyledLink = styled(Link)`
277
- text-decoration: none;
278
- &:focus {
279
- ${headingElement("h1", css`
280
- ${(p) => {
281
- var _a;
282
- return ((_a = p.theme.accessibility) == null ? void 0 : _a.isTabbing) && css`
283
- ${linkTabStyle}
284
- display: inline-block;
285
- `;
286
- }};
287
- `)}
288
- }
289
- `;
290
- export { WidgetHeader as default };
291
- //# sourceMappingURL=widget-header.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"widget-header.js","sources":["../src/avatar.tsx","../src/back.tsx","../src/close.tsx","../src/minimize.tsx","../src/node.tsx","../src/widget-header.tsx"],"sourcesContent":["import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = { node: ActionNode };\r\nconst Avatar: React.FC<Props> = ({ node }) => {\r\n if (!node.symbol) {\r\n return null;\r\n }\r\n\r\n let size;\r\n const isSvg = node.symbol.type === 'Svg';\r\n if (node.symbol.type === 'Svg') {\r\n const sizeNumber = parseInt(node.size, 10);\r\n\r\n if (!isNaN(sizeNumber)) {\r\n size = sizeNumber;\r\n }\r\n }\r\n\r\n return <Wrapper symbol={node.symbol} svg={isSvg} size={size} backgroundSize=\"cover\" />;\r\n};\r\n\r\nexport default Avatar;\r\n\r\nconst Wrapper = styled(({ svg, ...other }) => <SymbolBadge {...other} />)`\r\n color: ${(p) => p.theme.colors?.text};\r\n ${(p) =>\r\n !p.svg &&\r\n css`\r\n border-radius: 50%;\r\n overflow: hidden;\r\n `}\r\n`;\r\n","import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = {\r\n node: ActionNode;\r\n};\r\nconst Back: React.FC<Props> = ({ node }) => {\r\n const symbol = node.symbol || { type: 'Svg', content: 'back' };\r\n return <SymbolBadge size={20} symbol={symbol} />;\r\n};\r\n\r\nexport default Back;\r\n","import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = {\r\n node: ActionNode;\r\n};\r\nconst Close: React.FC<Props> = ({ node }) => {\r\n const symbol = node.symbol || { type: 'Svg', content: 'close' };\r\n const size = parseInt(node?.size, 10) || 14;\r\n return <SymbolBadge size={size} symbol={symbol} />;\r\n};\r\n\r\nexport default Close;\r\n","import { SymbolBadge } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = {\r\n node: ActionNode;\r\n};\r\nconst Minimize: React.FC<Props> = ({ node }) => {\r\n const symbol = node.symbol || { type: 'Svg', content: 'minimize' };\r\n const size = parseInt(node?.size, 10) || 20;\r\n return <SymbolBadge size={size} symbol={symbol} />;\r\n};\r\n\r\nexport default Minimize;\r\n","import { borderTabStyle, TransitionComponent, useDispatch } from '@telia-ace/widget-ui';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Avatar from './avatar';\r\nimport Back from './back';\r\nimport Close from './close';\r\nimport Minimize from './minimize';\r\nimport { ActionNode } from './widget-header-component';\r\n\r\ntype Props = Merge<\r\n ActionNode,\r\n {\r\n className?: string;\r\n }\r\n>;\r\n\r\nconst Node: React.FC<Props> = ({ className = '', ...node }) => {\r\n const dispatch = useDispatch();\r\n\r\n const { size, padding, type, tooltip, show = true } = node;\r\n\r\n if (type === 'back') {\r\n return (\r\n <NodeWrapper size={size || '64px'} padding={padding || '10px'}>\r\n <TransitionComponent\r\n in={show}\r\n timeout={300}\r\n transitions={{\r\n enter: {\r\n type: 'scale',\r\n easing: 'cubic-bezier(.08,.84,.74,1.84)',\r\n },\r\n exit: {\r\n type: 'scale',\r\n easing: 'ease-out',\r\n },\r\n }}\r\n >\r\n {(state: any, css: any) => (\r\n <ActionButton\r\n title={tooltip}\r\n aria-label={tooltip}\r\n animationCss={css}\r\n onClick={() => {\r\n dispatch('back');\r\n }}\r\n >\r\n <Back node={node} />\r\n </ActionButton>\r\n )}\r\n </TransitionComponent>\r\n </NodeWrapper>\r\n );\r\n }\r\n\r\n if (!show) {\r\n return null;\r\n }\r\n\r\n return (\r\n <NodeWrapper\r\n size={size || '64px'}\r\n padding={padding || '10px'}\r\n squareRatio={type === 'avatar'}\r\n >\r\n {type === 'avatar' && <Avatar node={node} />}\r\n {type === 'close' && (\r\n <ActionButton\r\n title={tooltip}\r\n aria-label={tooltip}\r\n onClick={() => {\r\n dispatch('close');\r\n }}\r\n >\r\n <Close node={node} />\r\n </ActionButton>\r\n )}\r\n {type === 'minimize' && (\r\n <ActionButton\r\n title={tooltip}\r\n aria-label={tooltip}\r\n onClick={() => {\r\n dispatch('minimize');\r\n }}\r\n >\r\n <Minimize node={node} />\r\n </ActionButton>\r\n )}\r\n </NodeWrapper>\r\n );\r\n};\r\n\r\nexport default Node;\r\n\r\nconst NodeWrapper = styled.div<{ size: string; padding: string; squareRatio?: boolean }>`\r\n flex: 1;\r\n max-width: ${(p) => p.size};\r\n ${(p) => p.squareRatio && `max-height: ${p.size};`}\r\n text-align: center;\r\n padding: 0 ${(p) => p.padding};\r\n && {\r\n box-sizing: content-box;\r\n }\r\n\r\n svg {\r\n vertical-align: middle;\r\n }\r\n\r\n i {\r\n color: ${(p) => p.theme.colors?.text};\r\n font-size: ${(p) => p.size};\r\n min-width: 1em;\r\n min-height: 1em;\r\n display: inline-block;\r\n }\r\n`;\r\nconst ActionButton = styled.button<any>`\r\n ${(p) => !!p.animationCss && p.animationCss};\r\n background: none;\r\n border: none;\r\n cursor: pointer;\r\n padding: 0;\r\n &:focus {\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${borderTabStyle};\r\n border-color: ${p.theme.accessibility?.colors?.inactiveText};\r\n `};\r\n }\r\n`;\r\n","import {\r\n headingElement,\r\n Link,\r\n linkTabStyle,\r\n Typography,\r\n useProperties,\r\n} from '@telia-ace/widget-ui';\r\nimport { appendClassNames } from '@telia-ace/widget-utilities';\r\nimport React from 'react';\r\nimport styled, { css } from 'styled-components';\r\nimport Node from './node';\r\nimport { calculateMargin, createNodes } from './utils';\r\nimport { WidgetHeaderComponentProps } from './widget-header-component';\r\n\r\ntype Props = {\r\n className: string;\r\n role?: string;\r\n};\r\n\r\nconst WidgetHeader: React.FC<Props> = ({ className, ...other }) => {\r\n const {\r\n header,\r\n tagline,\r\n route,\r\n tooltip = '',\r\n actions = {},\r\n textAlign = 'center',\r\n } = useProperties<WidgetHeaderComponentProps>();\r\n\r\n const [leftNodes, rightNodes] = createNodes(actions);\r\n leftNodes.sort((a, b) => (a.order || 0) - (b.order || 0));\r\n rightNodes.sort((a, b) => (a.order || 0) - (b.order || 0));\r\n return (\r\n <Wrapper {...other} className={appendClassNames(className, 'humany-widget-header')}>\r\n {leftNodes.map((node, key) => (\r\n <Node key={`${node.type}+_${key}`} {...node} />\r\n ))}\r\n\r\n <MainNode\r\n textAlign={textAlign}\r\n margin={calculateMargin(leftNodes, rightNodes, textAlign)}\r\n >\r\n {route ? (\r\n <StyledLink routeName={route} title={tooltip} aria-label={tooltip}>\r\n <Typography variant=\"h1\">{header}</Typography>\r\n </StyledLink>\r\n ) : (\r\n <Typography variant=\"h1\">{header}</Typography>\r\n )}\r\n {tagline && <Tagline>{tagline}</Tagline>}\r\n </MainNode>\r\n\r\n {rightNodes.map((node, key) => (\r\n <Node key={`${node.type}+_${key}`} {...node} />\r\n ))}\r\n </Wrapper>\r\n );\r\n};\r\n\r\nexport default WidgetHeader;\r\n\r\nconst Wrapper = styled.div`\r\n display: flex;\r\n flex-direction: row;\r\n align-items: center;\r\n\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n font-size: ${(p) => p.theme.fonts?.huge};\r\n margin: 0;\r\n font-weight: 300;\r\n color: ${(p) => p.theme.colors?.text};\r\n `\r\n )}\r\n\r\n p {\r\n color: ${(p) => p.theme.colors?.text};\r\n margin: 0;\r\n }\r\n\r\n svg {\r\n line,\r\n path,\r\n circle {\r\n stroke: ${(p) => p.theme.colors?.text};\r\n }\r\n }\r\n`;\r\n\r\nconst Tagline = styled.p`\r\n font-size: ${(p) => p.theme.fonts?.normal};\r\n font-weight: 300;\r\n`;\r\n\r\nconst MainNode = styled.div<{\r\n textAlign: string;\r\n margin: { left?: string; right?: string };\r\n}>`\r\n flex: 1;\r\n text-align: ${(p) => p.textAlign};\r\n\r\n margin-right: ${(p) => p.margin.right || 0};\r\n margin-left: ${(p) => p.margin.left || 0};\r\n`;\r\n\r\nconst StyledLink = styled(Link)<any>`\r\n text-decoration: none;\r\n &:focus {\r\n ${headingElement(\r\n 'h1',\r\n css`\r\n ${(p) =>\r\n p.theme.accessibility?.isTabbing &&\r\n css`\r\n ${linkTabStyle}\r\n display: inline-block;\r\n `};\r\n `\r\n )}\r\n }\r\n`;\r\n"],"names":["Wrapper"],"mappings":"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"}