@digigov/react-core 1.0.0-55e4210c → 1.0.0-60addd4a

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,343 @@
1
+ // Jest Snapshot v1, https://goo.gl/fbAQLP
2
+
3
+ exports[`renders the Icon prop icon= "caret" 1`] = `
4
+ <ForwardRef(Icon)
5
+ icon="caret"
6
+ >
7
+ <ForwardRef(SvgIcon)
8
+ className="govgr-svg-icon--caret"
9
+ >
10
+ <ForwardRef(Base)
11
+ aria-hidden="true"
12
+ as="svg"
13
+ className="govgr-svg-icon--caret govgr-svg-icon"
14
+ focusable="false"
15
+ viewBox="0 0 24 24"
16
+ >
17
+ <svg
18
+ aria-hidden="true"
19
+ className="govgr-svg-icon--caret govgr-svg-icon"
20
+ focusable="false"
21
+ viewBox="0 0 24 24"
22
+ >
23
+ <caret>
24
+ <path
25
+ d="M18,22V2L6,12L18,22z"
26
+ />
27
+ </caret>
28
+ </svg>
29
+ </ForwardRef(Base)>
30
+ </ForwardRef(SvgIcon)>
31
+ </ForwardRef(Icon)>
32
+ `;
33
+
34
+ exports[`renders the Icon prop icon= "caret" and direction=left 1`] = `
35
+ <ForwardRef(Icon)
36
+ direction="left"
37
+ icon="caret"
38
+ >
39
+ <ForwardRef(SvgIcon)
40
+ className="govgr-svg-icon--caret"
41
+ >
42
+ <ForwardRef(Base)
43
+ aria-hidden="true"
44
+ as="svg"
45
+ className="govgr-svg-icon--caret govgr-svg-icon"
46
+ focusable="false"
47
+ viewBox="0 0 24 24"
48
+ >
49
+ <svg
50
+ aria-hidden="true"
51
+ className="govgr-svg-icon--caret govgr-svg-icon"
52
+ focusable="false"
53
+ viewBox="0 0 24 24"
54
+ >
55
+ <caret
56
+ direction="left"
57
+ >
58
+ <path
59
+ d="M18,22V2L6,12L18,22z"
60
+ />
61
+ </caret>
62
+ </svg>
63
+ </ForwardRef(Base)>
64
+ </ForwardRef(SvgIcon)>
65
+ </ForwardRef(Icon)>
66
+ `;
67
+
68
+ exports[`renders the Icon prop icon= "check" 1`] = `
69
+ <ForwardRef(Icon)
70
+ icon="check"
71
+ >
72
+ <ForwardRef(SvgIcon)
73
+ className="govgr-svg-icon--check"
74
+ >
75
+ <ForwardRef(Base)
76
+ aria-hidden="true"
77
+ as="svg"
78
+ className="govgr-svg-icon--check govgr-svg-icon"
79
+ focusable="false"
80
+ viewBox="0 0 24 24"
81
+ >
82
+ <svg
83
+ aria-hidden="true"
84
+ className="govgr-svg-icon--check govgr-svg-icon"
85
+ focusable="false"
86
+ viewBox="0 0 24 24"
87
+ >
88
+ <check>
89
+ <polygon
90
+ points="9.49 14.94 4.16 9.67 1.84 12.01 9.5 19.6 22.16 7.05 19.84 4.7 9.5 14.94"
91
+ />
92
+ </check>
93
+ </svg>
94
+ </ForwardRef(Base)>
95
+ </ForwardRef(SvgIcon)>
96
+ </ForwardRef(Icon)>
97
+ `;
98
+
99
+ exports[`renders the Icon prop icon= "close" 1`] = `
100
+ <ForwardRef(Icon)
101
+ icon="close"
102
+ >
103
+ <ForwardRef(SvgIcon)
104
+ className="govgr-svg-icon--close"
105
+ >
106
+ <ForwardRef(Base)
107
+ aria-hidden="true"
108
+ as="svg"
109
+ className="govgr-svg-icon--close govgr-svg-icon"
110
+ focusable="false"
111
+ viewBox="0 0 24 24"
112
+ >
113
+ <svg
114
+ aria-hidden="true"
115
+ className="govgr-svg-icon--close govgr-svg-icon"
116
+ focusable="false"
117
+ viewBox="0 0 24 24"
118
+ >
119
+ <close>
120
+ <polygon
121
+ points="14.4,11.8 22,4.2 19.7,1.8 12,9.4 4.4,1.8 2,4.2 9.7,11.9 2.1,19.5 4.4,21.9 12.1,14.3 19.7,21.9 22.1,19.5 "
122
+ />
123
+ </close>
124
+ </svg>
125
+ </ForwardRef(Base)>
126
+ </ForwardRef(SvgIcon)>
127
+ </ForwardRef(Icon)>
128
+ `;
129
+
130
+ exports[`renders the Icon prop icon= "uncheck" 1`] = `
131
+ <ForwardRef(Icon)
132
+ icon="uncheck"
133
+ >
134
+ <ForwardRef(SvgIcon)
135
+ className="govgr-svg-icon--uncheck"
136
+ >
137
+ <ForwardRef(Base)
138
+ aria-hidden="true"
139
+ as="svg"
140
+ className="govgr-svg-icon--uncheck govgr-svg-icon"
141
+ focusable="false"
142
+ viewBox="0 0 24 24"
143
+ >
144
+ <svg
145
+ aria-hidden="true"
146
+ className="govgr-svg-icon--uncheck govgr-svg-icon"
147
+ focusable="false"
148
+ viewBox="0 0 24 24"
149
+ >
150
+ <uncheck>
151
+ <polygon
152
+ points="20.59 5.74 18.26 3.41 12 9.67 5.742 3.41 3.41 5.74 9.67 12 3.41 18.26 5.74 20.6 12 14.33 18.26 20.59 20.59 18.26 14.33 12 20.59 5.74"
153
+ />
154
+ </uncheck>
155
+ </svg>
156
+ </ForwardRef(Base)>
157
+ </ForwardRef(SvgIcon)>
158
+ </ForwardRef(Icon)>
159
+ `;
160
+
161
+ exports[`renders the Icon props icon= "moreVert" 1`] = `
162
+ <ForwardRef(Icon)
163
+ icon="moreVert"
164
+ >
165
+ <ForwardRef(SvgIcon)
166
+ className="govgr-svg-icon--moreVert"
167
+ >
168
+ <ForwardRef(Base)
169
+ aria-hidden="true"
170
+ as="svg"
171
+ className="govgr-svg-icon--moreVert govgr-svg-icon"
172
+ focusable="false"
173
+ viewBox="0 0 24 24"
174
+ >
175
+ <svg
176
+ aria-hidden="true"
177
+ className="govgr-svg-icon--moreVert govgr-svg-icon"
178
+ focusable="false"
179
+ viewBox="0 0 24 24"
180
+ >
181
+ <moreVert>
182
+ <circle
183
+ cx="12"
184
+ cy="5"
185
+ r="2"
186
+ />
187
+ <circle
188
+ cx="12"
189
+ cy="12"
190
+ r="2"
191
+ />
192
+ <circle
193
+ cx="12"
194
+ cy="19"
195
+ r="2"
196
+ />
197
+ </moreVert>
198
+ </svg>
199
+ </ForwardRef(Base)>
200
+ </ForwardRef(SvgIcon)>
201
+ </ForwardRef(Icon)>
202
+ `;
203
+
204
+ exports[`renders the Icon with no props 1`] = `
205
+ <ForwardRef(Icon)>
206
+ <ForwardRef(SvgIcon)
207
+ className="govgr-svg-icon--arrow"
208
+ >
209
+ <ForwardRef(Base)
210
+ aria-hidden="true"
211
+ as="svg"
212
+ className="govgr-svg-icon--arrow govgr-svg-icon"
213
+ focusable="false"
214
+ viewBox="0 0 24 24"
215
+ >
216
+ <svg
217
+ aria-hidden="true"
218
+ className="govgr-svg-icon--arrow govgr-svg-icon"
219
+ focusable="false"
220
+ viewBox="0 0 24 24"
221
+ >
222
+ <arrow>
223
+ <path
224
+ d="M8.5,2L6.1,4.3l7.6,7.7l-7.6,7.6L8.5,22l10-10L8.5,2z"
225
+ />
226
+ </arrow>
227
+ </svg>
228
+ </ForwardRef(Base)>
229
+ </ForwardRef(SvgIcon)>
230
+ </ForwardRef(Icon)>
231
+ `;
232
+
233
+ exports[`renders the Icon with prop icon=arrow and direction=up 1`] = `
234
+ <ForwardRef(Icon)
235
+ direction="up"
236
+ >
237
+ <ForwardRef(SvgIcon)
238
+ className="govgr-svg-icon--arrow"
239
+ >
240
+ <ForwardRef(Base)
241
+ aria-hidden="true"
242
+ as="svg"
243
+ className="govgr-svg-icon--arrow govgr-svg-icon"
244
+ focusable="false"
245
+ viewBox="0 0 24 24"
246
+ >
247
+ <svg
248
+ aria-hidden="true"
249
+ className="govgr-svg-icon--arrow govgr-svg-icon"
250
+ focusable="false"
251
+ viewBox="0 0 24 24"
252
+ >
253
+ <arrow
254
+ direction="up"
255
+ >
256
+ <path
257
+ d="M2,15.8l2.3,2.4l7.7-7.6l7.6,7.6l2.4-2.4l-10-10L2,15.8z"
258
+ />
259
+ </arrow>
260
+ </svg>
261
+ </ForwardRef(Base)>
262
+ </ForwardRef(SvgIcon)>
263
+ </ForwardRef(Icon)>
264
+ `;
265
+
266
+ exports[`renders the Icon with prop prop icon=burger 1`] = `
267
+ <ForwardRef(Icon)
268
+ icon="burger"
269
+ >
270
+ <ForwardRef(SvgIcon)
271
+ className="govgr-svg-icon--burger"
272
+ >
273
+ <ForwardRef(Base)
274
+ aria-hidden="true"
275
+ as="svg"
276
+ className="govgr-svg-icon--burger govgr-svg-icon"
277
+ focusable="false"
278
+ viewBox="0 0 24 24"
279
+ >
280
+ <svg
281
+ aria-hidden="true"
282
+ className="govgr-svg-icon--burger govgr-svg-icon"
283
+ focusable="false"
284
+ viewBox="0 0 24 24"
285
+ >
286
+ <burger>
287
+ <g
288
+ className=""
289
+ >
290
+ <rect
291
+ height="3.3"
292
+ id="govgr-svg-icon--burger__line-1"
293
+ width="20"
294
+ />
295
+ <rect
296
+ height="3.3"
297
+ id="govgr-svg-icon--burger__line-2"
298
+ width="20"
299
+ />
300
+ <rect
301
+ height="3.3"
302
+ id="govgr-svg-icon--burger__line-3"
303
+ width="20"
304
+ />
305
+ </g>
306
+ </burger>
307
+ </svg>
308
+ </ForwardRef(Base)>
309
+ </ForwardRef(SvgIcon)>
310
+ </ForwardRef(Icon)>
311
+ `;
312
+
313
+ exports[`renders the Icon with prop prop icon=globe 1`] = `
314
+ <ForwardRef(Icon)
315
+ icon="globe"
316
+ >
317
+ <ForwardRef(SvgIcon)
318
+ className="govgr-svg-icon--globe"
319
+ >
320
+ <ForwardRef(Base)
321
+ aria-hidden="true"
322
+ as="svg"
323
+ className="govgr-svg-icon--globe govgr-svg-icon"
324
+ focusable="false"
325
+ viewBox="0 0 24 24"
326
+ >
327
+ <svg
328
+ aria-hidden="true"
329
+ className="govgr-svg-icon--globe govgr-svg-icon"
330
+ focusable="false"
331
+ viewBox="0 0 24 24"
332
+ >
333
+ <globe>
334
+ <path
335
+ d="M12,0C5.4,0,0,5.4,0,12s5.4,12,12,12s12-5.4,12-12S18.6,0,12,0z M22.4,13.1C22.4,13.1,22.4,13.2,22.4,13.1 c0,0.4-0.1,0.8-0.2,1.1v0h-3.6c0.2-1.5,0.2-3,0-4.5h3.6v0c0.1,0.4,0.1,0.7,0.2,1.1c0,0,0,0,0,0C22.5,11.6,22.5,12.4,22.4,13.1z M16,21.7c1.1-1.5,2-3.5,2.4-6h3.4c0,0,0,0,0,0C20.8,18.4,18.7,20.6,16,21.7z M21.8,8.2C21.8,8.2,21.8,8.2,21.8,8.2l-3.4,0 c-0.4-2.4-1.3-4.5-2.4-6C18.7,3.4,20.8,5.6,21.8,8.2L21.8,8.2z M17.1,9.7c0.2,1.5,0.2,3,0,4.5h-4.4V9.7L17.1,9.7L17.1,9.7z M12.7,8.2V1.6c1.9,0.6,3.5,3.2,4.1,6.6L12.7,8.2L12.7,8.2z M12.7,15.7h4.1c-0.7,3.4-2.3,6.1-4.1,6.6V15.7L12.7,15.7z M2.2,15.8 C2.2,15.8,2.2,15.8,2.2,15.8l3.4,0c0.4,2.4,1.3,4.5,2.4,6C5.3,20.6,3.2,18.4,2.2,15.8L2.2,15.8z M8,2.3c-1.1,1.5-2,3.5-2.4,6H2.2 c0,0,0,0,0,0C3.2,5.6,5.3,3.4,8,2.3z M6.9,14.3c-0.2-1.5-0.2-3,0-4.5h4.4v4.5H6.9L6.9,14.3z M11.2,15.8v6.6 c-1.9-0.6-3.5-3.2-4.1-6.6L11.2,15.8L11.2,15.8z M11.2,8.3H7.1c0.7-3.4,2.3-6.1,4.1-6.6V8.3L11.2,8.3z M1.6,10.9 C1.6,10.9,1.6,10.8,1.6,10.9c0-0.4,0.1-0.8,0.2-1.1v0h3.6c-0.2,1.5-0.2,3,0,4.5H1.7v0c-0.1-0.4-0.1-0.7-0.2-1.1c0,0,0,0,0,0 C1.5,12.4,1.5,11.6,1.6,10.9z"
336
+ />
337
+
338
+ </globe>
339
+ </svg>
340
+ </ForwardRef(Base)>
341
+ </ForwardRef(SvgIcon)>
342
+ </ForwardRef(Icon)>
343
+ `;
@@ -0,0 +1,36 @@
1
+ import React from 'react';
2
+ import { mount } from 'enzyme';
3
+
4
+ import Icon from '@digigov/react-core/Icon';
5
+
6
+ it('renders the Icon with no props', () => {
7
+ expect(mount(<Icon />)).toMatchSnapshot();
8
+ });
9
+
10
+ it('renders the Icon with prop icon=arrow and direction=up', () => {
11
+ expect(mount(<Icon direction="up" />)).toMatchSnapshot();
12
+ });
13
+ it('renders the Icon with prop prop icon=burger', () => {
14
+ expect(mount(<Icon icon="burger" />)).toMatchSnapshot();
15
+ });
16
+ it('renders the Icon prop icon= "caret"', () => {
17
+ expect(mount(<Icon icon="caret" />)).toMatchSnapshot();
18
+ });
19
+ it('renders the Icon prop icon= "caret" and direction=left', () => {
20
+ expect(mount(<Icon icon="caret" direction="left" />)).toMatchSnapshot();
21
+ });
22
+ it('renders the Icon prop icon= "check"', () => {
23
+ expect(mount(<Icon icon="check" />)).toMatchSnapshot();
24
+ });
25
+ it('renders the Icon prop icon= "close"', () => {
26
+ expect(mount(<Icon icon="close" />)).toMatchSnapshot();
27
+ });
28
+ it('renders the Icon with prop prop icon=globe', () => {
29
+ expect(mount(<Icon icon="globe" />)).toMatchSnapshot();
30
+ });
31
+ it('renders the Icon props icon= "moreVert"', () => {
32
+ expect(mount(<Icon icon="moreVert" />)).toMatchSnapshot();
33
+ });
34
+ it('renders the Icon prop icon= "uncheck"', () => {
35
+ expect(mount(<Icon icon="uncheck" />)).toMatchSnapshot();
36
+ });
@@ -0,0 +1,63 @@
1
+ import React from 'react';
2
+ import clsx from 'clsx';
3
+ import SvgIcon, { SvgIconProps } from '@digigov/react-core/SvgIcon';
4
+ import * as icons from '@digigov/react-icons/icons';
5
+ import type { IconTypes } from '@digigov/react-icons/icons';
6
+
7
+ export type IconProps<N extends keyof IconTypes> = SvgIconProps &
8
+ IconTypes[N] & {
9
+ /**
10
+ * ref is optional.
11
+ * ref prop declares the reference of the svg icon component.
12
+ * It can be used to to access the DOM element and the React element.
13
+ */
14
+ ref?: React.Ref<SVGSVGElement>;
15
+ /**
16
+ * icon is optional, but strongly recommended.
17
+ * Default value is 'arrow'.
18
+ * Use this prop to display the icon you want.
19
+ */
20
+ icon?: N;
21
+ };
22
+
23
+ type IconComponent = <C extends keyof IconTypes>(
24
+ props: IconProps<C>
25
+ ) => React.ReactElement | null;
26
+ export type IconNames = keyof IconTypes;
27
+ /**
28
+ * Icon is used whenever we need a GOV.GR icon.
29
+ * Choose the icon from the list in icon prop.
30
+ */
31
+ export const Icon: IconComponent = React.forwardRef<
32
+ SVGSVGElement,
33
+ IconProps<IconNames>
34
+ >(function Icon(
35
+ { icon = 'arrow', className, ...props }: IconProps<IconNames>,
36
+ ref
37
+ ) {
38
+ const IconComponent = icons[icon];
39
+ // eslint-disable-next-line @typescript-eslint/ban-ts-comment
40
+ // @ts-ignore
41
+ const iconProps = IconComponent?.props.reduce((compProps, propName) => {
42
+ const value = props[propName];
43
+ delete props[propName];
44
+ return {
45
+ ...compProps,
46
+ [propName]: value,
47
+ };
48
+ }, {});
49
+
50
+ return (
51
+ <SvgIcon
52
+ ref={ref}
53
+ {...props}
54
+ className={clsx(className, {
55
+ [`govgr-svg-icon--${icon}`]: true,
56
+ })}
57
+ >
58
+ <IconComponent {...iconProps} />
59
+ </SvgIcon>
60
+ );
61
+ });
62
+
63
+ export default Icon;
package/src/index.ts CHANGED
@@ -117,6 +117,7 @@ export * from '@digigov/react-core/SummaryListItemAction';
117
117
  export * from '@digigov/react-core/SummaryListItemKey';
118
118
  export * from '@digigov/react-core/SummaryListItemValue';
119
119
  export * from '@digigov/react-core/SvgIcon';
120
+ export * from '@digigov/react-core/Icon';
120
121
  export * from '@digigov/react-core/Table';
121
122
  export * from '@digigov/react-core/TableBody';
122
123
  export * from '@digigov/react-core/TableCaption';
package/src/registry.js CHANGED
@@ -122,6 +122,7 @@ import * as _digigov_react_core_HellenicRepublicLogo_logo_inverted_el from '@dig
122
122
  import * as _digigov_react_core_HellenicRepublicLogo_logo_inverted_en from '@digigov/react-core/HellenicRepublicLogo/logo-inverted-en';
123
123
  import * as _digigov_react_core_Hidden from '@digigov/react-core/Hidden';
124
124
  import * as _digigov_react_core_Hint from '@digigov/react-core/Hint';
125
+ import * as _digigov_react_core_Icon from '@digigov/react-core/Icon';
125
126
  import * as _digigov_react_core from '@digigov/react-core';
126
127
  import * as _digigov_react_core_KitchenSinkAllComponents from '@digigov/react-core/KitchenSinkAllComponents';
127
128
  import * as _digigov_react_core_KitchenSinkCard from '@digigov/react-core/KitchenSinkCard';
@@ -388,6 +389,7 @@ export default {
388
389
  '@digigov/react-core/HellenicRepublicLogo/logo-inverted-en': lazyImport(_digigov_react_core_HellenicRepublicLogo_logo_inverted_en),
389
390
  '@digigov/react-core/Hidden': lazyImport(_digigov_react_core_Hidden),
390
391
  '@digigov/react-core/Hint': lazyImport(_digigov_react_core_Hint),
392
+ '@digigov/react-core/Icon': lazyImport(_digigov_react_core_Icon),
391
393
  '@digigov/react-core': lazyImport(_digigov_react_core),
392
394
  '@digigov/react-core/KitchenSinkAllComponents': lazyImport(_digigov_react_core_KitchenSinkAllComponents),
393
395
  '@digigov/react-core/KitchenSinkCard': lazyImport(_digigov_react_core_KitchenSinkCard),