@telia-ace/widget-components-area 0.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.
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+
3
+ declare const Area: React.FC<any>;
4
+ export default Area;
@@ -0,0 +1,28 @@
1
+ import { Container } from '@webprovisions/platform';
2
+
3
+ type Symbol = {
4
+ type: 'Uri' | 'Svg' | 'FontAwesome' | 'Text' | string;
5
+ content: string;
6
+ };
7
+ export declare enum AreaMode {
8
+ Static = "static",
9
+ Drawer = "drawer",
10
+ Dropdown = "dropdown",
11
+ Modal = "modal"
12
+ }
13
+ export type AreaComponentProps = {
14
+ mode: AreaMode;
15
+ animation?: string;
16
+ fullScreen?: boolean;
17
+ columns?: number;
18
+ scrollable?: boolean;
19
+ header?: string;
20
+ trigger?: {
21
+ symbol?: Symbol;
22
+ label?: string;
23
+ size?: number;
24
+ ariaLabel?: string;
25
+ };
26
+ };
27
+ export declare const AreaComponent: (container: Container) => Promise<void>;
28
+ export default AreaComponent;
@@ -0,0 +1,50 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),v=require("@emotion/react"),u=require("@emotion/styled"),c=require("@telia-ace/widget-core"),C=require("@telia-ace/widget-types-grid"),t=require("@telia-ace/widget-ui"),h=require("@telia-ace/widget-utilities"),b=require("react"),d=require("./index-a2bac2d5.js"),G=b.forwardRef(({children:e,className:n,renderState:i,animation:a,...m},l)=>(b.useEffect(()=>{if(i==="open"){const o=document.querySelector(`[data-node-id='${m.id}']`);o&&o.focus()}}),i?r.jsx(t.TransitionComponent,{mountOnEnter:i!==c.WidgetRenderState.hidden,timeout:200,in:i===c.WidgetRenderState.open,transitions:a,unmountOnExit:i===c.WidgetRenderState.closed,children:(o,p)=>r.jsx(L,{...m,tabIndex:"-1",animationCss:p,"data-state":o,ref:l,className:h.appendClassNames("humany-animated-area",n),children:e})}):null)),L=u(t.Grid)`
2
+ ${C.genericComponentStyling}
3
+ ${e=>!!e.animationCss&&e.animationCss}
4
+ ${e=>!!e.scrollableCss&&e.scrollableCss}
5
+ text-size-adjust: 100%;
6
+ input::-ms-clear {
7
+ display: none;
8
+ }
9
+ :focus-visible {
10
+ outline: none !important;
11
+ }
12
+ ${e=>e.hidden&&e["data-state"]==="exited"&&v.css`
13
+ visibility: collapse;
14
+ pointer-events: none;
15
+ `};
16
+ `,U=({className:e,...n})=>{const{name:i}=t.useComponentDescriptor(),a=t.useRenderState(),m=t.useContext(),l=t.useProperties(),o=t.useChildren(),p=t.useContainer(),{gap:q="0"}=m,{columns:x=1,animation:g="none",scrollable:T=!1,mode:f=d.AreaMode.Static,trigger:A={},fullScreen:R,header:P,...M}=l,{size:W=24,symbol:$,label:j,ariaLabel:D,...N}=A,[z,B]=t.useScroll(T),E=b.useCallback(s=>{const{events:O}=p.get("$widget");return O.dispatch("widget:area-rendered",{name:i,properties:l,element:s}),B.current=s,s},[l,a]);if(!o.length)return t.createEmptyComponent(p,{...n,className:h.appendClassNames(e,"humany-area")});const w={...n,className:h.appendClassNames(e,"humany-area",`humany-area-${i}`),scrollableCss:z,...M,columns:x,gap:q,renderState:a,animation:g,hidden:a===c.WidgetRenderState.hidden,ref:E},y=(()=>g!=="none"?r.jsx(t.ColumnContext.Provider,{value:x,children:r.jsx(G,{...w,children:o.map(s=>r.jsx(C.Component,{id:s.id,branch:"default"},s.id))})}):a===c.WidgetRenderState.closed?null:r.jsx(t.ColumnContext.Provider,{value:x,children:r.jsx(H,{...w,children:o.map(s=>r.jsx(C.Component,{id:s.id,branch:"default"},s.id))})}))();if(f===d.AreaMode.Static)return y;const S=r.jsxs(k,{className:"humany-area-trigger",title:D,...t.filterCssProps(N),children:[j&&r.jsx(I,{children:j}),$&&r.jsx(F,{symbol:$,size:W})]});if(f===d.AreaMode.Dropdown)return r.jsx(t.Dropdown,{trigger:S,children:y});if(f===d.AreaMode.Drawer){const s=Object.values(t.DrawerAnimationType).includes(g)&&{type:g}||void 0;return r.jsx(t.Drawer,{header:P,animation:s,fullScreen:R,trigger:S,children:y})}return f===d.AreaMode.Modal&&h.Logger.warn("modal area not implemented"),null},k=u(t.Button)`
17
+ display: flex;
18
+ align-items: inherit;
19
+ align-self: center;
20
+ width: fit-content;
21
+ height: fit-content;
22
+ ${t.filterCssPropsStyle}
23
+
24
+ ${e=>e.theme.fonts&&`
25
+ font-family: ${e.theme.fonts.type};
26
+ font-size: ${e.theme.fonts.normal};
27
+ `}
28
+
29
+ &:focus-visible {
30
+ ${t.paddedBorderTabStyle};
31
+ }
32
+ `,I=u(t.Text)`
33
+ margin: 0 ${e=>{var n;return(n=e.theme.sizes)==null?void 0:n.small}} 0 0;
34
+ color: ${e=>{var n;return(n=e.theme.colors)==null?void 0:n.text}};
35
+ `,F=u(t.SymbolBadge)`
36
+ path {
37
+ fill: ${e=>{var n;return(n=e.theme.colors)==null?void 0:n.text}};
38
+ }
39
+ `,H=u(t.Grid)`
40
+ ${C.genericComponentStyling}
41
+ ${e=>!!e.scrollableCss&&e.scrollableCss}
42
+ text-size-adjust: 100%;
43
+ input::-ms-clear {
44
+ display: none;
45
+ }
46
+ ${e=>e.hidden&&v.css`
47
+ visibility: collapse;
48
+ pointer-events: none;
49
+ `};
50
+ `;exports.default=U;
@@ -0,0 +1,176 @@
1
+ import { jsx as n, jsxs as q } from "react/jsx-runtime";
2
+ import { css as S } from "@emotion/react";
3
+ import m from "@emotion/styled";
4
+ import { WidgetRenderState as c } from "@telia-ace/widget-core";
5
+ import { genericComponentStyling as T, Component as v } from "@telia-ace/widget-types-grid";
6
+ import { TransitionComponent as G, Grid as P, useComponentDescriptor as I, useRenderState as F, useContext as H, useProperties as J, useChildren as K, useContainer as Q, useScroll as U, createEmptyComponent as V, ColumnContext as w, filterCssProps as X, Dropdown as Y, DrawerAnimationType as Z, Drawer as _, Button as ee, filterCssPropsStyle as te, paddedBorderTabStyle as ne, Text as re, SymbolBadge as oe } from "@telia-ace/widget-ui";
7
+ import { appendClassNames as y, Logger as ie } from "@telia-ace/widget-utilities";
8
+ import { forwardRef as se, useEffect as ae, useCallback as le } from "react";
9
+ import { A as l } from "./index-7fc9ef83.mjs";
10
+ const ce = se(
11
+ ({ children: e, className: t, renderState: o, animation: s, ...d }, a) => (ae(() => {
12
+ if (o === "open") {
13
+ const i = document.querySelector(
14
+ `[data-node-id='${d.id}']`
15
+ );
16
+ i && i.focus();
17
+ }
18
+ }), o ? /* @__PURE__ */ n(
19
+ G,
20
+ {
21
+ mountOnEnter: o !== c.hidden,
22
+ timeout: 200,
23
+ in: o === c.open,
24
+ transitions: s,
25
+ unmountOnExit: o === c.closed,
26
+ children: (i, u) => /* @__PURE__ */ n(
27
+ me,
28
+ {
29
+ ...d,
30
+ tabIndex: "-1",
31
+ animationCss: u,
32
+ "data-state": i,
33
+ ref: a,
34
+ className: y("humany-animated-area", t),
35
+ children: e
36
+ }
37
+ )
38
+ }
39
+ ) : null)
40
+ ), me = m(P)`
41
+ ${T}
42
+ ${(e) => !!e.animationCss && e.animationCss}
43
+ ${(e) => !!e.scrollableCss && e.scrollableCss}
44
+ text-size-adjust: 100%;
45
+ input::-ms-clear {
46
+ display: none;
47
+ }
48
+ :focus-visible {
49
+ outline: none !important;
50
+ }
51
+ ${(e) => e.hidden && e["data-state"] === "exited" && S`
52
+ visibility: collapse;
53
+ pointer-events: none;
54
+ `};
55
+ `, Se = ({ className: e, ...t }) => {
56
+ const { name: o } = I(), s = F(), d = H(), a = J(), i = K(), u = Q(), { gap: A = "0" } = d, {
57
+ columns: g = 1,
58
+ animation: p = "none",
59
+ scrollable: D = !1,
60
+ mode: f = l.Static,
61
+ trigger: j = {},
62
+ fullScreen: z,
63
+ header: B,
64
+ ...E
65
+ } = a, { size: N = 24, symbol: b, label: C, ariaLabel: R, ...L } = j, [O, W] = U(D), M = le(
66
+ (r) => {
67
+ const { events: k } = u.get("$widget");
68
+ return k.dispatch("widget:area-rendered", {
69
+ name: o,
70
+ properties: a,
71
+ element: r
72
+ }), W.current = r, r;
73
+ },
74
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
+ [a, s]
76
+ );
77
+ if (!i.length)
78
+ return V(u, {
79
+ ...t,
80
+ className: y(e, "humany-area")
81
+ });
82
+ const $ = {
83
+ ...t,
84
+ className: y(
85
+ e,
86
+ "humany-area",
87
+ `humany-area-${o}`
88
+ ),
89
+ scrollableCss: O,
90
+ ...E,
91
+ columns: g,
92
+ gap: A,
93
+ renderState: s,
94
+ animation: p,
95
+ hidden: s === c.hidden,
96
+ ref: M
97
+ }, h = (() => p !== "none" ? /* @__PURE__ */ n(w.Provider, { value: g, children: /* @__PURE__ */ n(ce, { ...$, children: i.map((r) => /* @__PURE__ */ n(v, { id: r.id, branch: "default" }, r.id)) }) }) : s === c.closed ? null : /* @__PURE__ */ n(w.Provider, { value: g, children: /* @__PURE__ */ n(fe, { ...$, children: i.map((r) => /* @__PURE__ */ n(v, { id: r.id, branch: "default" }, r.id)) }) }))();
98
+ if (f === l.Static)
99
+ return h;
100
+ const x = /* @__PURE__ */ q(
101
+ de,
102
+ {
103
+ className: "humany-area-trigger",
104
+ title: R,
105
+ ...X(L),
106
+ children: [
107
+ C && /* @__PURE__ */ n(ue, { children: C }),
108
+ b && /* @__PURE__ */ n(pe, { symbol: b, size: N })
109
+ ]
110
+ }
111
+ );
112
+ if (f === l.Dropdown)
113
+ return /* @__PURE__ */ n(Y, { trigger: x, children: h });
114
+ if (f === l.Drawer) {
115
+ const r = Object.values(Z).includes(p) && {
116
+ type: p
117
+ } || void 0;
118
+ return /* @__PURE__ */ n(
119
+ _,
120
+ {
121
+ header: B,
122
+ animation: r,
123
+ fullScreen: z,
124
+ trigger: x,
125
+ children: h
126
+ }
127
+ );
128
+ }
129
+ return f === l.Modal && ie.warn("modal area not implemented"), null;
130
+ }, de = m(ee)`
131
+ display: flex;
132
+ align-items: inherit;
133
+ align-self: center;
134
+ width: fit-content;
135
+ height: fit-content;
136
+ ${te}
137
+
138
+ ${(e) => e.theme.fonts && `
139
+ font-family: ${e.theme.fonts.type};
140
+ font-size: ${e.theme.fonts.normal};
141
+ `}
142
+
143
+ &:focus-visible {
144
+ ${ne};
145
+ }
146
+ `, ue = m(re)`
147
+ margin: 0 ${(e) => {
148
+ var t;
149
+ return (t = e.theme.sizes) == null ? void 0 : t.small;
150
+ }} 0 0;
151
+ color: ${(e) => {
152
+ var t;
153
+ return (t = e.theme.colors) == null ? void 0 : t.text;
154
+ }};
155
+ `, pe = m(oe)`
156
+ path {
157
+ fill: ${(e) => {
158
+ var t;
159
+ return (t = e.theme.colors) == null ? void 0 : t.text;
160
+ }};
161
+ }
162
+ `, fe = m(P)`
163
+ ${T}
164
+ ${(e) => !!e.scrollableCss && e.scrollableCss}
165
+ text-size-adjust: 100%;
166
+ input::-ms-clear {
167
+ display: none;
168
+ }
169
+ ${(e) => e.hidden && S`
170
+ visibility: collapse;
171
+ pointer-events: none;
172
+ `};
173
+ `;
174
+ export {
175
+ Se as default
176
+ };
package/area.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import { default as React } from 'react';
2
+
3
+ declare const Area: React.FC<any>;
4
+ export default Area;
@@ -0,0 +1,13 @@
1
+ import { createReactComponent as t } from "@telia-ace/widget-ui";
2
+ var o = /* @__PURE__ */ ((r) => (r.Static = "static", r.Drawer = "drawer", r.Dropdown = "dropdown", r.Modal = "modal", r))(o || {});
3
+ const p = (r) => t(
4
+ r,
5
+ "area",
6
+ import("./area-f9d028bf.mjs"),
7
+ (a) => {
8
+ }
9
+ );
10
+ export {
11
+ o as A,
12
+ p as a
13
+ };
@@ -0,0 +1 @@
1
+ "use strict";const t=require("@telia-ace/widget-ui");var r=(e=>(e.Static="static",e.Drawer="drawer",e.Dropdown="dropdown",e.Modal="modal",e))(r||{});const o=e=>t.createReactComponent(e,"area",Promise.resolve().then(()=>require("./area-f075309d.js")),n=>{});exports.AreaComponent=o;exports.AreaMode=r;
package/index.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import { default as AreaComponent } from './area-component';
2
+
3
+ export default AreaComponent;
package/index.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";const e=require("./index-a2bac2d5.js");require("@telia-ace/widget-ui");module.exports=e.AreaComponent;
package/index.mjs ADDED
@@ -0,0 +1,5 @@
1
+ import { a as t } from "./index-7fc9ef83.mjs";
2
+ import "@telia-ace/widget-ui";
3
+ export {
4
+ t as default
5
+ };
package/package.json ADDED
@@ -0,0 +1,25 @@
1
+ {
2
+ "name": "@telia-ace/widget-components-area",
3
+ "version": "0.0.1",
4
+ "main": "./index.js",
5
+ "types": "./index.d.ts",
6
+ "exports": {
7
+ ".": {
8
+ "import": "./index.mjs",
9
+ "require": "./index.js"
10
+ }
11
+ },
12
+ "dependencies": {
13
+ "@telia-ace/widget-core": "*",
14
+ "@telia-ace/widget-types-grid": "*",
15
+ "@telia-ace/widget-ui": "*",
16
+ "@telia-ace/widget-utilities": "*",
17
+ "@webprovisions/platform": "^1.1.3"
18
+ },
19
+ "peerDependencies": {
20
+ "@emotion/react": "11.11.1",
21
+ "@emotion/styled": "11.11.0",
22
+ "react": "18.2.0",
23
+ "react-transition-group": "4.4.5"
24
+ }
25
+ }