@entur/alert 0.14.10 → 0.14.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BannerAlertBox.d.ts +21 -21
- package/dist/BaseAlertBox.d.ts +29 -29
- package/dist/CopyableText.d.ts +16 -16
- package/dist/ExpandableAlertBox.d.ts +28 -28
- package/dist/SmallAlertBox.d.ts +23 -23
- package/dist/ToastAlertBox.d.ts +19 -19
- package/dist/ToastProvider.d.ts +28 -28
- package/dist/alert.cjs.development.js +40 -46
- package/dist/alert.cjs.development.js.map +1 -1
- package/dist/alert.cjs.production.min.js +1 -1
- package/dist/alert.cjs.production.min.js.map +1 -1
- package/dist/index.d.ts +7 -7
- package/dist/styles.css +90 -94
- package/package.json +6 -6
package/dist/BannerAlertBox.d.ts
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export type BannerAlertBoxProps = {
|
|
3
|
-
/** Innholdet i alert-boksen */
|
|
4
|
-
children: React.ReactNode;
|
|
5
|
-
/** Ekstra klassenavn */
|
|
6
|
-
className?: string;
|
|
7
|
-
/** Skjermleser-label for lukkeknappen, om den vises */
|
|
8
|
-
closeButtonLabel?: string;
|
|
9
|
-
/** Callback som kalles når man lukker boksen */
|
|
10
|
-
onClose?: () => void;
|
|
11
|
-
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne
|
|
12
|
-
* @default false
|
|
13
|
-
*/
|
|
14
|
-
closable?: boolean;
|
|
15
|
-
/** Tittel på boksen - oppsummer virkning */
|
|
16
|
-
title?: string;
|
|
17
|
-
/** Farge og uttrykk på alert-boksen */
|
|
18
|
-
variant: 'success' | 'info' | 'warning' | 'error';
|
|
19
|
-
[key: string]: any;
|
|
20
|
-
};
|
|
21
|
-
export declare const BannerAlertBox: React.FC<BannerAlertBoxProps>;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type BannerAlertBoxProps = {
|
|
3
|
+
/** Innholdet i alert-boksen */
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Ekstra klassenavn */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Skjermleser-label for lukkeknappen, om den vises */
|
|
8
|
+
closeButtonLabel?: string;
|
|
9
|
+
/** Callback som kalles når man lukker boksen */
|
|
10
|
+
onClose?: () => void;
|
|
11
|
+
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne
|
|
12
|
+
* @default false
|
|
13
|
+
*/
|
|
14
|
+
closable?: boolean;
|
|
15
|
+
/** Tittel på boksen - oppsummer virkning */
|
|
16
|
+
title?: string;
|
|
17
|
+
/** Farge og uttrykk på alert-boksen */
|
|
18
|
+
variant: 'success' | 'info' | 'warning' | 'error';
|
|
19
|
+
[key: string]: any;
|
|
20
|
+
};
|
|
21
|
+
export declare const BannerAlertBox: React.FC<BannerAlertBoxProps>;
|
package/dist/BaseAlertBox.d.ts
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import './styles.scss';
|
|
3
|
-
type BaseAlertBoxProps = {
|
|
4
|
-
/** Innholdet i alert-boksen */
|
|
5
|
-
children?: React.ReactNode;
|
|
6
|
-
/** Ekstra klassenavn */
|
|
7
|
-
className?: string;
|
|
8
|
-
/** Skjermleser-label for lukkeknappen, om den vises
|
|
9
|
-
* @default "Lukk"
|
|
10
|
-
*/
|
|
11
|
-
closeButtonLabel?: string;
|
|
12
|
-
/** Callback som kalles når man lukker boksen
|
|
13
|
-
* @default () => {}
|
|
14
|
-
*/
|
|
15
|
-
onClose?: () => void;
|
|
16
|
-
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne
|
|
17
|
-
* @default false
|
|
18
|
-
*/
|
|
19
|
-
closable?: boolean;
|
|
20
|
-
/** Tittel på boksen - oppsummer virkning */
|
|
21
|
-
title?: React.ReactNode;
|
|
22
|
-
/** Farge og uttrykk på alert-boksen */
|
|
23
|
-
variant: 'success' | 'info' | 'warning' | 'error';
|
|
24
|
-
/** Typen boks (internt bruk) */
|
|
25
|
-
size: 'banner' | 'toast' | 'small';
|
|
26
|
-
[key: string]: any;
|
|
27
|
-
};
|
|
28
|
-
export declare const BaseAlertBox: React.FC<BaseAlertBoxProps>;
|
|
29
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './styles.scss';
|
|
3
|
+
type BaseAlertBoxProps = {
|
|
4
|
+
/** Innholdet i alert-boksen */
|
|
5
|
+
children?: React.ReactNode;
|
|
6
|
+
/** Ekstra klassenavn */
|
|
7
|
+
className?: string;
|
|
8
|
+
/** Skjermleser-label for lukkeknappen, om den vises
|
|
9
|
+
* @default "Lukk"
|
|
10
|
+
*/
|
|
11
|
+
closeButtonLabel?: string;
|
|
12
|
+
/** Callback som kalles når man lukker boksen
|
|
13
|
+
* @default () => {}
|
|
14
|
+
*/
|
|
15
|
+
onClose?: () => void;
|
|
16
|
+
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne
|
|
17
|
+
* @default false
|
|
18
|
+
*/
|
|
19
|
+
closable?: boolean;
|
|
20
|
+
/** Tittel på boksen - oppsummer virkning */
|
|
21
|
+
title?: React.ReactNode;
|
|
22
|
+
/** Farge og uttrykk på alert-boksen */
|
|
23
|
+
variant: 'success' | 'info' | 'warning' | 'error';
|
|
24
|
+
/** Typen boks (internt bruk) */
|
|
25
|
+
size: 'banner' | 'toast' | 'small';
|
|
26
|
+
[key: string]: any;
|
|
27
|
+
};
|
|
28
|
+
export declare const BaseAlertBox: React.FC<BaseAlertBoxProps>;
|
|
29
|
+
export {};
|
package/dist/CopyableText.d.ts
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import './CopyableText.scss';
|
|
3
|
-
export type CopyableTextProps = {
|
|
4
|
-
/** Ekstra klassenavn */
|
|
5
|
-
className?: string;
|
|
6
|
-
/** Tekstinnhold som vises og kopieres */
|
|
7
|
-
children: string;
|
|
8
|
-
/** Hvis du ønsker å kopiere noe annet enn
|
|
9
|
-
* innholdet i children kan du legge det inn her */
|
|
10
|
-
textToCopy?: string;
|
|
11
|
-
/** Overskrift i toast-varselet */
|
|
12
|
-
successHeading?: string;
|
|
13
|
-
/** Bekreftelsesmelding i toast-varselet */
|
|
14
|
-
successMessage?: string;
|
|
15
|
-
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;
|
|
16
|
-
export declare const CopyableText: ({ children, successHeading, successMessage, textToCopy, className, ...rest }: CopyableTextProps) => JSX.Element;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './CopyableText.scss';
|
|
3
|
+
export type CopyableTextProps = {
|
|
4
|
+
/** Ekstra klassenavn */
|
|
5
|
+
className?: string;
|
|
6
|
+
/** Tekstinnhold som vises og kopieres */
|
|
7
|
+
children: string;
|
|
8
|
+
/** Hvis du ønsker å kopiere noe annet enn
|
|
9
|
+
* innholdet i children kan du legge det inn her */
|
|
10
|
+
textToCopy?: string;
|
|
11
|
+
/** Overskrift i toast-varselet */
|
|
12
|
+
successHeading?: string;
|
|
13
|
+
/** Bekreftelsesmelding i toast-varselet */
|
|
14
|
+
successMessage?: string;
|
|
15
|
+
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;
|
|
16
|
+
export declare const CopyableText: ({ children, successHeading, successMessage, textToCopy, className, ...rest }: CopyableTextProps) => JSX.Element;
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import { BannerAlertBoxProps } from './BannerAlertBox';
|
|
3
|
-
import './ExpandableAlertBox.scss';
|
|
4
|
-
import { SmallAlertBoxProps } from './SmallAlertBox';
|
|
5
|
-
export type SmallExpandableAlertBoxProps = ExpandableAlertBoxProps & SmallAlertBoxProps;
|
|
6
|
-
export declare const SmallExpandableAlertBox: React.FC<SmallExpandableAlertBoxProps>;
|
|
7
|
-
export type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps & BannerAlertBoxProps;
|
|
8
|
-
export declare const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps>;
|
|
9
|
-
type ExpandableAlertBoxProps = {
|
|
10
|
-
/**Farge og uttrykk på alert-boksen */
|
|
11
|
-
variant: 'success' | 'info' | 'warning' | 'error';
|
|
12
|
-
/** Tittelen til ExpandableAlertBox */
|
|
13
|
-
title: React.ReactNode;
|
|
14
|
-
/**Innhold som vises ved ekspandering */
|
|
15
|
-
children: React.ReactNode;
|
|
16
|
-
/**Ekstra klassenavn */
|
|
17
|
-
className?: string;
|
|
18
|
-
/** Tekst som vises på ekspanderingsknappen før åpning
|
|
19
|
-
* @default "Les mer"
|
|
20
|
-
*/
|
|
21
|
-
openLabel?: string;
|
|
22
|
-
/** Tekst som vises på ekspanderingsknappen når den er åpnet
|
|
23
|
-
* @default "Lukk"
|
|
24
|
-
*/
|
|
25
|
-
closeLabel?: string;
|
|
26
|
-
[key: string]: any;
|
|
27
|
-
};
|
|
28
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BannerAlertBoxProps } from './BannerAlertBox';
|
|
3
|
+
import './ExpandableAlertBox.scss';
|
|
4
|
+
import { SmallAlertBoxProps } from './SmallAlertBox';
|
|
5
|
+
export type SmallExpandableAlertBoxProps = ExpandableAlertBoxProps & SmallAlertBoxProps;
|
|
6
|
+
export declare const SmallExpandableAlertBox: React.FC<SmallExpandableAlertBoxProps>;
|
|
7
|
+
export type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps & BannerAlertBoxProps;
|
|
8
|
+
export declare const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps>;
|
|
9
|
+
type ExpandableAlertBoxProps = {
|
|
10
|
+
/**Farge og uttrykk på alert-boksen */
|
|
11
|
+
variant: 'success' | 'info' | 'warning' | 'error';
|
|
12
|
+
/** Tittelen til ExpandableAlertBox */
|
|
13
|
+
title: React.ReactNode;
|
|
14
|
+
/**Innhold som vises ved ekspandering */
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
/**Ekstra klassenavn */
|
|
17
|
+
className?: string;
|
|
18
|
+
/** Tekst som vises på ekspanderingsknappen før åpning
|
|
19
|
+
* @default "Les mer"
|
|
20
|
+
*/
|
|
21
|
+
openLabel?: string;
|
|
22
|
+
/** Tekst som vises på ekspanderingsknappen når den er åpnet
|
|
23
|
+
* @default "Lukk"
|
|
24
|
+
*/
|
|
25
|
+
closeLabel?: string;
|
|
26
|
+
[key: string]: any;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
package/dist/SmallAlertBox.d.ts
CHANGED
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export type SmallAlertBoxProps = {
|
|
3
|
-
/** Innholdet i alert-boksen */
|
|
4
|
-
children: React.ReactNode;
|
|
5
|
-
/** Ekstra klassenavn */
|
|
6
|
-
className?: string;
|
|
7
|
-
/** Skjermleser-label for lukkeknappen, om den vises */
|
|
8
|
-
closeButtonLabel?: string;
|
|
9
|
-
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne
|
|
10
|
-
* @default false
|
|
11
|
-
*/
|
|
12
|
-
closable?: boolean;
|
|
13
|
-
/** Callback som kalles når man lukker boksen */
|
|
14
|
-
onClose?: () => void;
|
|
15
|
-
/** Tittel på boksen - oppsummer virkning */
|
|
16
|
-
title?: string;
|
|
17
|
-
/** Bredden på boksen - fullbredde eller tilpasset innholdet */
|
|
18
|
-
width?: 'fluid' | 'fit-content';
|
|
19
|
-
/** Farge og uttrykk på alert-boksen */
|
|
20
|
-
variant: 'success' | 'info' | 'warning' | 'error';
|
|
21
|
-
[key: string]: any;
|
|
22
|
-
};
|
|
23
|
-
export declare const SmallAlertBox: React.FC<SmallAlertBoxProps>;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type SmallAlertBoxProps = {
|
|
3
|
+
/** Innholdet i alert-boksen */
|
|
4
|
+
children: React.ReactNode;
|
|
5
|
+
/** Ekstra klassenavn */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Skjermleser-label for lukkeknappen, om den vises */
|
|
8
|
+
closeButtonLabel?: string;
|
|
9
|
+
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne
|
|
10
|
+
* @default false
|
|
11
|
+
*/
|
|
12
|
+
closable?: boolean;
|
|
13
|
+
/** Callback som kalles når man lukker boksen */
|
|
14
|
+
onClose?: () => void;
|
|
15
|
+
/** Tittel på boksen - oppsummer virkning */
|
|
16
|
+
title?: string;
|
|
17
|
+
/** Bredden på boksen - fullbredde eller tilpasset innholdet */
|
|
18
|
+
width?: 'fluid' | 'fit-content';
|
|
19
|
+
/** Farge og uttrykk på alert-boksen */
|
|
20
|
+
variant: 'success' | 'info' | 'warning' | 'error';
|
|
21
|
+
[key: string]: any;
|
|
22
|
+
};
|
|
23
|
+
export declare const SmallAlertBox: React.FC<SmallAlertBoxProps>;
|
package/dist/ToastAlertBox.d.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
export type ToastAlertBoxProps = {
|
|
3
|
-
/** Innholdet i toasten */
|
|
4
|
-
children?: React.ReactNode;
|
|
5
|
-
/** Ekstra klassenavn */
|
|
6
|
-
className?: string;
|
|
7
|
-
/** Skjermleser-label for lukkeknappen, om den vises */
|
|
8
|
-
closeButtonLabel?: string;
|
|
9
|
-
/** Callback som kalles når man lukker boksen */
|
|
10
|
-
onClose?: () => void;
|
|
11
|
-
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne */
|
|
12
|
-
closable?: boolean;
|
|
13
|
-
/** Tittel på boksen - oppsummer virkning */
|
|
14
|
-
title?: string;
|
|
15
|
-
/** Farge og uttrykk på toasten */
|
|
16
|
-
variant: 'success' | 'info';
|
|
17
|
-
[key: string]: any;
|
|
18
|
-
};
|
|
19
|
-
export declare const ToastAlertBox: React.FC<ToastAlertBoxProps>;
|
|
1
|
+
import React from 'react';
|
|
2
|
+
export type ToastAlertBoxProps = {
|
|
3
|
+
/** Innholdet i toasten */
|
|
4
|
+
children?: React.ReactNode;
|
|
5
|
+
/** Ekstra klassenavn */
|
|
6
|
+
className?: string;
|
|
7
|
+
/** Skjermleser-label for lukkeknappen, om den vises */
|
|
8
|
+
closeButtonLabel?: string;
|
|
9
|
+
/** Callback som kalles når man lukker boksen */
|
|
10
|
+
onClose?: () => void;
|
|
11
|
+
/** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne */
|
|
12
|
+
closable?: boolean;
|
|
13
|
+
/** Tittel på boksen - oppsummer virkning */
|
|
14
|
+
title?: string;
|
|
15
|
+
/** Farge og uttrykk på toasten */
|
|
16
|
+
variant: 'success' | 'info';
|
|
17
|
+
[key: string]: any;
|
|
18
|
+
};
|
|
19
|
+
export declare const ToastAlertBox: React.FC<ToastAlertBoxProps>;
|
package/dist/ToastProvider.d.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
type ToastVariants = 'success' | 'info';
|
|
3
|
-
type AddToastPayload = {
|
|
4
|
-
title?: string;
|
|
5
|
-
content: React.ReactNode;
|
|
6
|
-
variant?: ToastVariants;
|
|
7
|
-
} | string;
|
|
8
|
-
export type ToastProviderProps = {
|
|
9
|
-
/** Antall millisekunder før toasts forsvinner av seg selv
|
|
10
|
-
* @default 6000
|
|
11
|
-
*/
|
|
12
|
-
delay?: number;
|
|
13
|
-
/** Plasseringen av toasts
|
|
14
|
-
* @default "bottom-right"
|
|
15
|
-
*/
|
|
16
|
-
position?: 'bottom-right' | 'top-right';
|
|
17
|
-
/** Ekstra klassenavn til ToastProvider-wrapperen */
|
|
18
|
-
className?: string;
|
|
19
|
-
/** Ekstra styling som sendes til ToastProvider-wrapperen */
|
|
20
|
-
style?: React.CSSProperties;
|
|
21
|
-
/** Innholdet */
|
|
22
|
-
children: React.ReactNode;
|
|
23
|
-
};
|
|
24
|
-
export declare const ToastProvider: React.FC<ToastProviderProps>;
|
|
25
|
-
export declare const useToast: () => {
|
|
26
|
-
addToast: (payload: AddToastPayload) => void;
|
|
27
|
-
};
|
|
28
|
-
export {};
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type ToastVariants = 'success' | 'info';
|
|
3
|
+
type AddToastPayload = {
|
|
4
|
+
title?: string;
|
|
5
|
+
content: React.ReactNode;
|
|
6
|
+
variant?: ToastVariants;
|
|
7
|
+
} | string;
|
|
8
|
+
export type ToastProviderProps = {
|
|
9
|
+
/** Antall millisekunder før toasts forsvinner av seg selv
|
|
10
|
+
* @default 6000
|
|
11
|
+
*/
|
|
12
|
+
delay?: number;
|
|
13
|
+
/** Plasseringen av toasts
|
|
14
|
+
* @default "bottom-right"
|
|
15
|
+
*/
|
|
16
|
+
position?: 'bottom-right' | 'top-right';
|
|
17
|
+
/** Ekstra klassenavn til ToastProvider-wrapperen */
|
|
18
|
+
className?: string;
|
|
19
|
+
/** Ekstra styling som sendes til ToastProvider-wrapperen */
|
|
20
|
+
style?: React.CSSProperties;
|
|
21
|
+
/** Innholdet */
|
|
22
|
+
children: React.ReactNode;
|
|
23
|
+
};
|
|
24
|
+
export declare const ToastProvider: React.FC<ToastProviderProps>;
|
|
25
|
+
export declare const useToast: () => {
|
|
26
|
+
addToast: (payload: AddToastPayload) => void;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
@@ -10,12 +10,6 @@ var copy = require('copy-text-to-clipboard');
|
|
|
10
10
|
var typography = require('@entur/typography');
|
|
11
11
|
var _ = require('@entur/expand/');
|
|
12
12
|
|
|
13
|
-
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
14
|
-
|
|
15
|
-
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
16
|
-
var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
|
|
17
|
-
var copy__default = /*#__PURE__*/_interopDefaultLegacy(copy);
|
|
18
|
-
|
|
19
13
|
function _extends() {
|
|
20
14
|
_extends = Object.assign ? Object.assign.bind() : function (target) {
|
|
21
15
|
for (var i = 1; i < arguments.length; i++) {
|
|
@@ -78,7 +72,7 @@ var BaseAlertBox = function BaseAlertBox(_ref) {
|
|
|
78
72
|
title = _ref.title,
|
|
79
73
|
toastIsBeingRemoved = _ref.toastIsBeingRemoved,
|
|
80
74
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
81
|
-
var _React$useState =
|
|
75
|
+
var _React$useState = React.useState(false),
|
|
82
76
|
isClosed = _React$useState[0],
|
|
83
77
|
setClosed = _React$useState[1];
|
|
84
78
|
if (isClosed) {
|
|
@@ -89,37 +83,37 @@ var BaseAlertBox = function BaseAlertBox(_ref) {
|
|
|
89
83
|
onClose();
|
|
90
84
|
};
|
|
91
85
|
var Icon = iconsMap[variant].icon;
|
|
92
|
-
return
|
|
93
|
-
className:
|
|
86
|
+
return React.createElement("div", _extends({
|
|
87
|
+
className: classNames('eds-alert-box', "eds-alert-box--" + size, "eds-alert-box--" + variant, {
|
|
94
88
|
'eds-alert-box--toast--exit-animation': toastIsBeingRemoved
|
|
95
89
|
}, className)
|
|
96
|
-
}, rest), closable &&
|
|
90
|
+
}, rest), closable && React.createElement("button", {
|
|
97
91
|
"aria-label": closeButtonLabel,
|
|
98
92
|
className: "eds-alert-box__close-button",
|
|
99
93
|
type: "button",
|
|
100
94
|
onClick: handleClose
|
|
101
|
-
},
|
|
95
|
+
}, React.createElement(icons.CloseIcon, null)), React.createElement(Icon, {
|
|
102
96
|
role: "img",
|
|
103
97
|
className: "eds-alert-box__icon",
|
|
104
98
|
"aria-label": iconsMap[variant].description
|
|
105
|
-
}),
|
|
106
|
-
className:
|
|
99
|
+
}), React.createElement("div", {
|
|
100
|
+
className: classNames('eds-alert-box__content', {
|
|
107
101
|
'eds-alert-box__content--no-title': !title,
|
|
108
102
|
'eds-alert-box__content--no-children': !children
|
|
109
103
|
})
|
|
110
|
-
}, title &&
|
|
104
|
+
}, title && React.createElement("div", {
|
|
111
105
|
className: "eds-alert-box__title"
|
|
112
106
|
}, title), children && children));
|
|
113
107
|
};
|
|
114
108
|
|
|
115
109
|
var BannerAlertBox = function BannerAlertBox(props) {
|
|
116
|
-
return
|
|
110
|
+
return React.createElement(BaseAlertBox, _extends({}, props, {
|
|
117
111
|
size: "banner"
|
|
118
112
|
}));
|
|
119
113
|
};
|
|
120
114
|
|
|
121
115
|
var ToastAlertBox = function ToastAlertBox(props) {
|
|
122
|
-
return
|
|
116
|
+
return React.createElement(BaseAlertBox, _extends({}, props, {
|
|
123
117
|
size: "toast",
|
|
124
118
|
role: "status"
|
|
125
119
|
}));
|
|
@@ -134,8 +128,8 @@ var SmallAlertBox = function SmallAlertBox(_ref) {
|
|
|
134
128
|
closable = _ref$closable === void 0 ? false : _ref$closable,
|
|
135
129
|
closeButtonLabel = _ref.closeButtonLabel,
|
|
136
130
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
137
|
-
return
|
|
138
|
-
className:
|
|
131
|
+
return React.createElement(BaseAlertBox, _extends({
|
|
132
|
+
className: classNames(className, {
|
|
139
133
|
'eds-alert-box--fit-content': width === 'fit-content'
|
|
140
134
|
})
|
|
141
135
|
}, rest, {
|
|
@@ -147,7 +141,7 @@ var SmallAlertBox = function SmallAlertBox(_ref) {
|
|
|
147
141
|
};
|
|
148
142
|
|
|
149
143
|
var EXIT_ANIMATION_TIME = 400;
|
|
150
|
-
var ToastContext = /*#__PURE__*/
|
|
144
|
+
var ToastContext = /*#__PURE__*/React.createContext(null);
|
|
151
145
|
var toastReducer = function toastReducer(prevToasts, action) {
|
|
152
146
|
switch (action.type) {
|
|
153
147
|
case 'ADD_TOAST':
|
|
@@ -192,14 +186,14 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
192
186
|
position = _ref$position === void 0 ? 'bottom-right' : _ref$position,
|
|
193
187
|
className = _ref.className,
|
|
194
188
|
style = _ref.style;
|
|
195
|
-
var _React$useReducer =
|
|
189
|
+
var _React$useReducer = React.useReducer(toastReducer, []),
|
|
196
190
|
toasts = _React$useReducer[0],
|
|
197
191
|
dispatch = _React$useReducer[1];
|
|
198
|
-
var _React$useState =
|
|
192
|
+
var _React$useState = React.useState(),
|
|
199
193
|
hoveringId = _React$useState[0],
|
|
200
194
|
setHovering = _React$useState[1];
|
|
201
|
-
var timeoutIdRefs =
|
|
202
|
-
var removeToast =
|
|
195
|
+
var timeoutIdRefs = React.useRef({});
|
|
196
|
+
var removeToast = React.useCallback(function (id) {
|
|
203
197
|
window.clearTimeout(timeoutIdRefs.current[id]);
|
|
204
198
|
dispatch({
|
|
205
199
|
type: 'REMOVE_TOAST',
|
|
@@ -207,7 +201,7 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
207
201
|
});
|
|
208
202
|
delete timeoutIdRefs.current[id];
|
|
209
203
|
}, []);
|
|
210
|
-
var playExitAnimation =
|
|
204
|
+
var playExitAnimation = React.useCallback(function (id) {
|
|
211
205
|
window.clearTimeout(timeoutIdRefs.current[id + 'animation']);
|
|
212
206
|
dispatch({
|
|
213
207
|
type: 'PLAY_EXIT_ANIMATION',
|
|
@@ -215,7 +209,7 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
215
209
|
});
|
|
216
210
|
delete timeoutIdRefs.current[id + 'animation'];
|
|
217
211
|
}, []);
|
|
218
|
-
var removeToastWithAnimationAfterDelay =
|
|
212
|
+
var removeToastWithAnimationAfterDelay = React.useCallback(function (id, delay) {
|
|
219
213
|
timeoutIdRefs.current[id + 'animation'] = window.setTimeout(function () {
|
|
220
214
|
return playExitAnimation(id);
|
|
221
215
|
}, delay - EXIT_ANIMATION_TIME);
|
|
@@ -223,7 +217,7 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
223
217
|
return removeToast(id);
|
|
224
218
|
}, delay);
|
|
225
219
|
}, [timeoutIdRefs, playExitAnimation, removeToast]);
|
|
226
|
-
var addToast =
|
|
220
|
+
var addToast = React.useCallback(function (toast) {
|
|
227
221
|
var id = createUniqueId();
|
|
228
222
|
var payload = createToast(toast, id);
|
|
229
223
|
dispatch({
|
|
@@ -254,20 +248,20 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
254
248
|
handleMouseLeave();
|
|
255
249
|
};
|
|
256
250
|
};
|
|
257
|
-
var contextValue =
|
|
251
|
+
var contextValue = React.useMemo(function () {
|
|
258
252
|
return {
|
|
259
253
|
toasts: toasts,
|
|
260
254
|
addToast: addToast,
|
|
261
255
|
removeToast: removeToast
|
|
262
256
|
};
|
|
263
257
|
}, [addToast, removeToast, toasts]);
|
|
264
|
-
return
|
|
258
|
+
return React.createElement(ToastContext.Provider, {
|
|
265
259
|
value: contextValue
|
|
266
|
-
}, toasts.length > 0 &&
|
|
267
|
-
className:
|
|
260
|
+
}, toasts.length > 0 && React.createElement("div", {
|
|
261
|
+
className: classNames('eds-toast-container', "eds-toast-container--" + position, className),
|
|
268
262
|
style: style
|
|
269
263
|
}, toasts.slice(0, 3).map(function (toastToShow) {
|
|
270
|
-
return
|
|
264
|
+
return React.createElement(ToastAlertBox, {
|
|
271
265
|
variant: toastToShow.variant,
|
|
272
266
|
title: toastToShow.title,
|
|
273
267
|
onClose: handleClose(toastToShow.id),
|
|
@@ -280,7 +274,7 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
280
274
|
})), children);
|
|
281
275
|
};
|
|
282
276
|
var useToast = function useToast() {
|
|
283
|
-
var context =
|
|
277
|
+
var context = React.useContext(ToastContext);
|
|
284
278
|
if (!context) {
|
|
285
279
|
throw new Error('You need to wrap your component in a ToastProvider component in ' + 'order to use the useToast hook');
|
|
286
280
|
}
|
|
@@ -302,35 +296,35 @@ var CopyableText = function CopyableText(_ref) {
|
|
|
302
296
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
303
297
|
var _useToast = useToast(),
|
|
304
298
|
addToast = _useToast.addToast;
|
|
305
|
-
var buttonRef =
|
|
299
|
+
var buttonRef = React.useRef(null);
|
|
306
300
|
var handleClick = function handleClick() {
|
|
307
|
-
buttonRef.current &&
|
|
301
|
+
buttonRef.current && copy(textToCopy !== undefined ? textToCopy : children, {
|
|
308
302
|
target: buttonRef.current
|
|
309
303
|
}) && addToast({
|
|
310
304
|
title: successHeading,
|
|
311
305
|
content: successMessage
|
|
312
306
|
});
|
|
313
307
|
};
|
|
314
|
-
return
|
|
308
|
+
return React.createElement("button", _extends({
|
|
315
309
|
className: 'copyable-text ' + className,
|
|
316
310
|
style: _extends({}, rest.style),
|
|
317
311
|
type: "button",
|
|
318
312
|
onClick: handleClick,
|
|
319
313
|
ref: buttonRef,
|
|
320
314
|
"aria-label": "Kopier innhold"
|
|
321
|
-
}, rest),
|
|
315
|
+
}, rest), React.createElement(typography.PreformattedText, null, children), React.createElement(icons.CopyIcon, {
|
|
322
316
|
className: "copyable-text__icon"
|
|
323
317
|
}));
|
|
324
318
|
};
|
|
325
319
|
|
|
326
320
|
var _excluded = ["variant", "title", "children", "size", "className", "openLabel", "closeLabel"];
|
|
327
321
|
var SmallExpandableAlertBox = function SmallExpandableAlertBox(props) {
|
|
328
|
-
return
|
|
322
|
+
return React.createElement(ExpandableAlertBox, _extends({
|
|
329
323
|
size: "small"
|
|
330
324
|
}, props));
|
|
331
325
|
};
|
|
332
326
|
var BannerExpandableAlertBox = function BannerExpandableAlertBox(props) {
|
|
333
|
-
return
|
|
327
|
+
return React.createElement(ExpandableAlertBox, _extends({
|
|
334
328
|
size: "banner"
|
|
335
329
|
}, props));
|
|
336
330
|
};
|
|
@@ -343,14 +337,14 @@ var ExpandableAlertBox = function ExpandableAlertBox(_ref) {
|
|
|
343
337
|
openLabel = _ref.openLabel,
|
|
344
338
|
closeLabel = _ref.closeLabel,
|
|
345
339
|
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
346
|
-
var _React$useState =
|
|
340
|
+
var _React$useState = React.useState(false),
|
|
347
341
|
open = _React$useState[0],
|
|
348
342
|
setopen = _React$useState[1];
|
|
349
|
-
return
|
|
343
|
+
return React.createElement(BaseAlertBox, _extends({
|
|
350
344
|
size: size,
|
|
351
345
|
variant: variant,
|
|
352
|
-
className:
|
|
353
|
-
title:
|
|
346
|
+
className: classNames('eds-expandable-alert-box', className),
|
|
347
|
+
title: React.createElement(ExpandableAlertBoxTitle, {
|
|
354
348
|
open: open,
|
|
355
349
|
title: title,
|
|
356
350
|
onClick: function onClick() {
|
|
@@ -359,7 +353,7 @@ var ExpandableAlertBox = function ExpandableAlertBox(_ref) {
|
|
|
359
353
|
openLabel: openLabel,
|
|
360
354
|
closeLabel: closeLabel
|
|
361
355
|
})
|
|
362
|
-
}, rest),
|
|
356
|
+
}, rest), React.createElement(_.BaseExpand, {
|
|
363
357
|
open: open
|
|
364
358
|
}, children));
|
|
365
359
|
};
|
|
@@ -371,13 +365,13 @@ var ExpandableAlertBoxTitle = function ExpandableAlertBoxTitle(_ref2) {
|
|
|
371
365
|
_ref2$closeLabel = _ref2.closeLabel,
|
|
372
366
|
closeLabel = _ref2$closeLabel === void 0 ? 'Lukk' : _ref2$closeLabel,
|
|
373
367
|
onClick = _ref2.onClick;
|
|
374
|
-
return
|
|
368
|
+
return React.createElement("div", {
|
|
375
369
|
className: "eds-expandable-alert-box__title"
|
|
376
|
-
},
|
|
370
|
+
}, React.createElement("div", null, title), React.createElement("button", {
|
|
377
371
|
className: "eds-expandable-alert-box__button",
|
|
378
372
|
onClick: onClick,
|
|
379
373
|
type: "button"
|
|
380
|
-
}, open ? closeLabel : openLabel,
|
|
374
|
+
}, open ? closeLabel : openLabel, React.createElement(_.ExpandArrow, {
|
|
381
375
|
open: open,
|
|
382
376
|
inline: true
|
|
383
377
|
})));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.cjs.development.js","sources":["../src/BaseAlertBox.tsx","../src/BannerAlertBox.tsx","../src/ToastAlertBox.tsx","../src/SmallAlertBox.tsx","../src/ToastProvider.tsx","../src/CopyableText.tsx","../src/ExpandableAlertBox.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport {\n CloseIcon,\n OutlinedValidationCheckIcon,\n OutlinedValidationExclamationIcon,\n OutlinedValidationInfoIcon,\n OutlinedValidationErrorIcon,\n} from '@entur/icons';\nimport './styles.scss';\n\nconst iconsMap = {\n success: {\n icon: OutlinedValidationCheckIcon,\n description: 'Suksessmelding',\n },\n info: { icon: OutlinedValidationInfoIcon, description: 'Infomelding' },\n warning: {\n icon: OutlinedValidationExclamationIcon,\n description: 'Varselmelding',\n },\n error: { icon: OutlinedValidationErrorIcon, description: 'Feilmelding' },\n};\n\ntype BaseAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises\n * @default \"Lukk\"\n */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen\n * @default () => {}\n */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: React.ReactNode;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Typen boks (internt bruk) */\n size: 'banner' | 'toast' | 'small';\n [key: string]: any;\n};\n\nexport const BaseAlertBox: React.FC<BaseAlertBoxProps> = ({\n children,\n className,\n closable = false,\n closeButtonLabel = 'Lukk',\n variant,\n onClose = () => ({}),\n size,\n title,\n toastIsBeingRemoved,\n ...rest\n}) => {\n const [isClosed, setClosed] = React.useState(false);\n if (isClosed) {\n return null;\n }\n const handleClose = () => {\n setClosed(true);\n onClose();\n };\n const Icon = iconsMap[variant].icon;\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\n { 'eds-alert-box--toast--exit-animation': toastIsBeingRemoved },\n className,\n )}\n {...rest}\n >\n {closable && (\n <button\n aria-label={closeButtonLabel}\n className=\"eds-alert-box__close-button\"\n type=\"button\"\n onClick={handleClose}\n >\n <CloseIcon />\n </button>\n )}\n <Icon\n role=\"img\"\n className=\"eds-alert-box__icon\"\n aria-label={iconsMap[variant].description}\n />\n <div\n className={classNames('eds-alert-box__content', {\n 'eds-alert-box__content--no-title': !title,\n 'eds-alert-box__content--no-children': !children,\n })}\n >\n {title && <div className=\"eds-alert-box__title\">{title}</div>}\n {children && children}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type BannerAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const BannerAlertBox: React.FC<BannerAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"banner\" />\n);\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type ToastAlertBoxProps = {\n /** Innholdet i toasten */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på toasten */\n variant: 'success' | 'info';\n [key: string]: any;\n};\n\nexport const ToastAlertBox: React.FC<ToastAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"toast\" role=\"status\" />\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type SmallAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Bredden på boksen - fullbredde eller tilpasset innholdet */\n width?: 'fluid' | 'fit-content';\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const SmallAlertBox: React.FC<SmallAlertBoxProps> = ({\n className,\n width,\n onClose,\n closable = false,\n closeButtonLabel,\n ...rest\n}) => (\n <BaseAlertBox\n className={classNames(className, {\n 'eds-alert-box--fit-content': width === 'fit-content',\n })}\n {...rest}\n onClose={onClose}\n closable={closable}\n closeButtonLabel={closeButtonLabel}\n size=\"small\"\n />\n);\n","import React from 'react';\nimport { ToastAlertBox } from './ToastAlertBox';\nimport classNames from 'classnames';\n\ntype ToastId = string;\n\ntype ToastVariants = 'success' | 'info';\n\ntype ToastType = {\n title?: string;\n content: React.ReactNode;\n id: ToastId;\n variant: ToastVariants;\n isBeingRemoved: boolean;\n};\n\ntype ToastContextType = {\n addToast: (payload: AddToastPayload) => void;\n removeToast: (id: ToastId) => void;\n toasts: ToastType[];\n};\n\ntype AddToastPayload =\n | { title?: string; content: React.ReactNode; variant?: ToastVariants }\n | string;\n\ntype ToastAction =\n | { type: 'ADD_TOAST'; payload: ToastType }\n | { type: 'REMOVE_TOAST'; payload: ToastId }\n | { type: 'PLAY_EXIT_ANIMATION'; payload: ToastId };\n\nconst EXIT_ANIMATION_TIME = 400;\n\nconst ToastContext = React.createContext<ToastContextType | null>(null);\n\nconst toastReducer = (\n prevToasts: ToastType[],\n action: ToastAction,\n): ToastType[] => {\n switch (action.type) {\n case 'ADD_TOAST':\n return [action.payload, ...prevToasts];\n case 'PLAY_EXIT_ANIMATION':\n return prevToasts.map(toast => {\n if (toast.id === action.payload)\n return { ...toast, isBeingRemoved: true };\n return toast;\n });\n case 'REMOVE_TOAST':\n return prevToasts.filter(toast => toast.id !== action.payload);\n }\n};\n\nconst createUniqueId = () => Math.random().toString().substring(2);\n\nconst createToast = (toast: AddToastPayload, id: ToastId): ToastType => {\n if (typeof toast === 'string') {\n return { id, content: toast, variant: 'success', isBeingRemoved: false };\n } else {\n return { id, variant: 'success', isBeingRemoved: false, ...toast };\n }\n};\n\nexport type ToastProviderProps = {\n /** Antall millisekunder før toasts forsvinner av seg selv\n * @default 6000\n */\n delay?: number;\n /** Plasseringen av toasts\n * @default \"bottom-right\"\n */\n position?: 'bottom-right' | 'top-right';\n /** Ekstra klassenavn til ToastProvider-wrapperen */\n className?: string;\n /** Ekstra styling som sendes til ToastProvider-wrapperen */\n style?: React.CSSProperties;\n /** Innholdet */\n children: React.ReactNode;\n};\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n delay = 6000,\n children,\n position = 'bottom-right',\n className,\n style,\n}) => {\n const [toasts, dispatch] = React.useReducer(toastReducer, []);\n const [hoveringId, setHovering] = React.useState<string>();\n const timeoutIdRefs = React.useRef<{ [key: string]: number }>({});\n\n const removeToast = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id]);\n dispatch({ type: 'REMOVE_TOAST', payload: id });\n delete timeoutIdRefs.current[id];\n }, []);\n\n const playExitAnimation = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id + 'animation']);\n dispatch({ type: 'PLAY_EXIT_ANIMATION', payload: id });\n delete timeoutIdRefs.current[id + 'animation'];\n }, []);\n\n const removeToastWithAnimationAfterDelay = React.useCallback(\n (id: ToastId, delay: number) => {\n timeoutIdRefs.current[id + 'animation'] = window.setTimeout(\n () => playExitAnimation(id),\n delay - EXIT_ANIMATION_TIME,\n );\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [timeoutIdRefs, playExitAnimation, removeToast],\n );\n\n const addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n removeToastWithAnimationAfterDelay(id, delay);\n },\n [delay, removeToastWithAnimationAfterDelay],\n );\n\n const handleMouseEnter = (toast: ToastType) => () => {\n if (toast.isBeingRemoved) return;\n setHovering(toast.id);\n Object.values(timeoutIdRefs.current).forEach(timeoutId => {\n window.clearTimeout(timeoutId);\n });\n timeoutIdRefs.current = {};\n };\n\n const handleMouseLeave = () => {\n setHovering(undefined);\n toasts.forEach(toast => {\n removeToastWithAnimationAfterDelay(toast.id, delay);\n });\n };\n\n const handleClose = (toastId: ToastId) => () => {\n removeToast(toastId);\n handleMouseLeave();\n };\n\n const contextValue = React.useMemo(\n () => ({ toasts, addToast, removeToast }),\n [addToast, removeToast, toasts],\n );\n\n return (\n <ToastContext.Provider value={contextValue}>\n {toasts.length > 0 && (\n <div\n className={classNames(\n 'eds-toast-container',\n `eds-toast-container--${position}`,\n className,\n )}\n style={style}\n >\n {toasts.slice(0, 3).map(toastToShow => (\n <ToastAlertBox\n variant={toastToShow.variant}\n title={toastToShow.title}\n onClose={handleClose(toastToShow.id)}\n onMouseEnter={handleMouseEnter(toastToShow)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\n toastIsBeingRemoved={toastToShow.isBeingRemoved}\n key={toastToShow.id}\n >\n {toastToShow.content}\n </ToastAlertBox>\n ))}\n </div>\n )}\n {children}\n </ToastContext.Provider>\n );\n};\n\nexport const useToast: () => {\n addToast: (payload: AddToastPayload) => void;\n} = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your component in a ToastProvider component in ' +\n 'order to use the useToast hook',\n );\n }\n const { addToast } = context;\n return {\n addToast,\n };\n};\n","import React from 'react';\n\nimport copy from 'copy-text-to-clipboard';\n\nimport { useToast } from './ToastProvider';\nimport { CopyIcon } from '@entur/icons';\nimport { PreformattedText } from '@entur/typography';\n\nimport './CopyableText.scss';\n\nexport type CopyableTextProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Tekstinnhold som vises og kopieres */\n children: string;\n /** Hvis du ønsker å kopiere noe annet enn\n * innholdet i children kan du legge det inn her */\n textToCopy?: string;\n /** Overskrift i toast-varselet */\n successHeading?: string;\n /** Bekreftelsesmelding i toast-varselet */\n successMessage?: string;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;\n\nexport const CopyableText = ({\n children,\n successHeading = 'Kopiert!',\n successMessage = 'Innholdet ble kopiert til utklippstavlen.',\n textToCopy,\n className,\n ...rest\n}: CopyableTextProps): JSX.Element => {\n const { addToast } = useToast();\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const handleClick = () => {\n buttonRef.current &&\n copy(textToCopy !== undefined ? textToCopy : children, {\n target: buttonRef.current,\n }) &&\n addToast({ title: successHeading, content: successMessage });\n };\n return (\n <button\n className={'copyable-text ' + className}\n style={{ ...rest.style }}\n type=\"button\"\n onClick={handleClick}\n ref={buttonRef}\n aria-label=\"Kopier innhold\"\n {...rest}\n >\n <PreformattedText>{children}</PreformattedText>\n <CopyIcon className=\"copyable-text__icon\" />\n </button>\n );\n};\n","import { BaseExpand, ExpandArrow } from '@entur/expand/';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { BannerAlertBoxProps } from './BannerAlertBox';\nimport { BaseAlertBox } from './BaseAlertBox';\nimport './ExpandableAlertBox.scss';\nimport { SmallAlertBoxProps } from './SmallAlertBox';\n\nexport type SmallExpandableAlertBoxProps = ExpandableAlertBoxProps &\n SmallAlertBoxProps;\n\nexport const SmallExpandableAlertBox: React.FC<SmallExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n };\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"banner\" {...props} />;\n };\n\ntype ExpandableAlertBoxProps = {\n /**Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Tittelen til ExpandableAlertBox */\n title: React.ReactNode;\n /**Innhold som vises ved ekspandering */\n children: React.ReactNode;\n /**Ekstra klassenavn */\n className?: string;\n /** Tekst som vises på ekspanderingsknappen før åpning\n * @default \"Les mer\"\n */\n openLabel?: string;\n /** Tekst som vises på ekspanderingsknappen når den er åpnet\n * @default \"Lukk\"\n */\n closeLabel?: string;\n [key: string]: any;\n};\n\nconst ExpandableAlertBox: React.FC<ExpandableAlertBoxProps> = ({\n variant,\n title,\n children,\n size,\n className,\n openLabel,\n closeLabel,\n ...rest\n}) => {\n const [open, setopen] = React.useState(false);\n return (\n <BaseAlertBox\n size={size}\n variant={variant}\n className={classNames('eds-expandable-alert-box', className)}\n title={\n <ExpandableAlertBoxTitle\n open={open}\n title={title}\n onClick={() => setopen(!open)}\n openLabel={openLabel}\n closeLabel={closeLabel}\n />\n }\n {...rest}\n >\n <BaseExpand open={open}>{children}</BaseExpand>\n </BaseAlertBox>\n );\n};\n\ntype ExpandableAlertBoxTitleProps = {\n title: React.ReactNode;\n open: boolean;\n openLabel?: string;\n closeLabel?: string;\n onClick: (e: React.MouseEvent) => void;\n};\n\nconst ExpandableAlertBoxTitle: React.FC<ExpandableAlertBoxTitleProps> = ({\n title,\n open,\n openLabel = 'Les mer',\n closeLabel = 'Lukk',\n onClick,\n}) => {\n return (\n <div className=\"eds-expandable-alert-box__title\">\n <div>{title}</div>\n <button\n className=\"eds-expandable-alert-box__button\"\n onClick={onClick}\n type=\"button\"\n >\n {open ? closeLabel : openLabel}\n <ExpandArrow open={open} inline />\n </button>\n </div>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('alert', 'icons');\n\nexport { BannerAlertBox } from './BannerAlertBox';\nexport { ToastAlertBox } from './ToastAlertBox';\nexport { SmallAlertBox } from './SmallAlertBox';\nexport { ToastProvider, useToast } from './ToastProvider';\nexport { CopyableText } from './CopyableText';\nexport * from './ExpandableAlertBox';\n"],"names":["iconsMap","success","icon","OutlinedValidationCheckIcon","description","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","toastIsBeingRemoved","rest","_excluded","React","useState","isClosed","setClosed","handleClose","Icon","createElement","classNames","type","onClick","CloseIcon","role","BannerAlertBox","props","ToastAlertBox","SmallAlertBox","width","EXIT_ANIMATION_TIME","ToastContext","createContext","toastReducer","prevToasts","action","payload","map","toast","id","isBeingRemoved","filter","createUniqueId","Math","random","toString","substring","createToast","content","ToastProvider","delay","position","style","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","useRef","removeToast","useCallback","window","clearTimeout","current","playExitAnimation","removeToastWithAnimationAfterDelay","setTimeout","addToast","handleMouseEnter","Object","values","forEach","timeoutId","handleMouseLeave","undefined","toastId","contextValue","useMemo","Provider","value","length","slice","toastToShow","onMouseEnter","onMouseLeave","key","useToast","context","useContext","Error","CopyableText","successHeading","successMessage","textToCopy","buttonRef","handleClick","copy","target","ref","PreformattedText","CopyIcon","SmallExpandableAlertBox","ExpandableAlertBox","BannerExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","ExpandArrow","inline","warnAboutMissingStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alert.cjs.development.js","sources":["../src/BaseAlertBox.tsx","../src/BannerAlertBox.tsx","../src/ToastAlertBox.tsx","../src/SmallAlertBox.tsx","../src/ToastProvider.tsx","../src/CopyableText.tsx","../src/ExpandableAlertBox.tsx","../src/index.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport {\n CloseIcon,\n OutlinedValidationCheckIcon,\n OutlinedValidationExclamationIcon,\n OutlinedValidationInfoIcon,\n OutlinedValidationErrorIcon,\n} from '@entur/icons';\nimport './styles.scss';\n\nconst iconsMap = {\n success: {\n icon: OutlinedValidationCheckIcon,\n description: 'Suksessmelding',\n },\n info: { icon: OutlinedValidationInfoIcon, description: 'Infomelding' },\n warning: {\n icon: OutlinedValidationExclamationIcon,\n description: 'Varselmelding',\n },\n error: { icon: OutlinedValidationErrorIcon, description: 'Feilmelding' },\n};\n\ntype BaseAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises\n * @default \"Lukk\"\n */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen\n * @default () => {}\n */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: React.ReactNode;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Typen boks (internt bruk) */\n size: 'banner' | 'toast' | 'small';\n [key: string]: any;\n};\n\nexport const BaseAlertBox: React.FC<BaseAlertBoxProps> = ({\n children,\n className,\n closable = false,\n closeButtonLabel = 'Lukk',\n variant,\n onClose = () => ({}),\n size,\n title,\n toastIsBeingRemoved,\n ...rest\n}) => {\n const [isClosed, setClosed] = React.useState(false);\n if (isClosed) {\n return null;\n }\n const handleClose = () => {\n setClosed(true);\n onClose();\n };\n const Icon = iconsMap[variant].icon;\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\n { 'eds-alert-box--toast--exit-animation': toastIsBeingRemoved },\n className,\n )}\n {...rest}\n >\n {closable && (\n <button\n aria-label={closeButtonLabel}\n className=\"eds-alert-box__close-button\"\n type=\"button\"\n onClick={handleClose}\n >\n <CloseIcon />\n </button>\n )}\n <Icon\n role=\"img\"\n className=\"eds-alert-box__icon\"\n aria-label={iconsMap[variant].description}\n />\n <div\n className={classNames('eds-alert-box__content', {\n 'eds-alert-box__content--no-title': !title,\n 'eds-alert-box__content--no-children': !children,\n })}\n >\n {title && <div className=\"eds-alert-box__title\">{title}</div>}\n {children && children}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type BannerAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const BannerAlertBox: React.FC<BannerAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"banner\" />\n);\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type ToastAlertBoxProps = {\n /** Innholdet i toasten */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på toasten */\n variant: 'success' | 'info';\n [key: string]: any;\n};\n\nexport const ToastAlertBox: React.FC<ToastAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"toast\" role=\"status\" />\n);\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type SmallAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Bredden på boksen - fullbredde eller tilpasset innholdet */\n width?: 'fluid' | 'fit-content';\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const SmallAlertBox: React.FC<SmallAlertBoxProps> = ({\n className,\n width,\n onClose,\n closable = false,\n closeButtonLabel,\n ...rest\n}) => (\n <BaseAlertBox\n className={classNames(className, {\n 'eds-alert-box--fit-content': width === 'fit-content',\n })}\n {...rest}\n onClose={onClose}\n closable={closable}\n closeButtonLabel={closeButtonLabel}\n size=\"small\"\n />\n);\n","import React from 'react';\nimport { ToastAlertBox } from './ToastAlertBox';\nimport classNames from 'classnames';\n\ntype ToastId = string;\n\ntype ToastVariants = 'success' | 'info';\n\ntype ToastType = {\n title?: string;\n content: React.ReactNode;\n id: ToastId;\n variant: ToastVariants;\n isBeingRemoved: boolean;\n};\n\ntype ToastContextType = {\n addToast: (payload: AddToastPayload) => void;\n removeToast: (id: ToastId) => void;\n toasts: ToastType[];\n};\n\ntype AddToastPayload =\n | { title?: string; content: React.ReactNode; variant?: ToastVariants }\n | string;\n\ntype ToastAction =\n | { type: 'ADD_TOAST'; payload: ToastType }\n | { type: 'REMOVE_TOAST'; payload: ToastId }\n | { type: 'PLAY_EXIT_ANIMATION'; payload: ToastId };\n\nconst EXIT_ANIMATION_TIME = 400;\n\nconst ToastContext = React.createContext<ToastContextType | null>(null);\n\nconst toastReducer = (\n prevToasts: ToastType[],\n action: ToastAction,\n): ToastType[] => {\n switch (action.type) {\n case 'ADD_TOAST':\n return [action.payload, ...prevToasts];\n case 'PLAY_EXIT_ANIMATION':\n return prevToasts.map(toast => {\n if (toast.id === action.payload)\n return { ...toast, isBeingRemoved: true };\n return toast;\n });\n case 'REMOVE_TOAST':\n return prevToasts.filter(toast => toast.id !== action.payload);\n }\n};\n\nconst createUniqueId = () => Math.random().toString().substring(2);\n\nconst createToast = (toast: AddToastPayload, id: ToastId): ToastType => {\n if (typeof toast === 'string') {\n return { id, content: toast, variant: 'success', isBeingRemoved: false };\n } else {\n return { id, variant: 'success', isBeingRemoved: false, ...toast };\n }\n};\n\nexport type ToastProviderProps = {\n /** Antall millisekunder før toasts forsvinner av seg selv\n * @default 6000\n */\n delay?: number;\n /** Plasseringen av toasts\n * @default \"bottom-right\"\n */\n position?: 'bottom-right' | 'top-right';\n /** Ekstra klassenavn til ToastProvider-wrapperen */\n className?: string;\n /** Ekstra styling som sendes til ToastProvider-wrapperen */\n style?: React.CSSProperties;\n /** Innholdet */\n children: React.ReactNode;\n};\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n delay = 6000,\n children,\n position = 'bottom-right',\n className,\n style,\n}) => {\n const [toasts, dispatch] = React.useReducer(toastReducer, []);\n const [hoveringId, setHovering] = React.useState<string>();\n const timeoutIdRefs = React.useRef<{ [key: string]: number }>({});\n\n const removeToast = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id]);\n dispatch({ type: 'REMOVE_TOAST', payload: id });\n delete timeoutIdRefs.current[id];\n }, []);\n\n const playExitAnimation = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id + 'animation']);\n dispatch({ type: 'PLAY_EXIT_ANIMATION', payload: id });\n delete timeoutIdRefs.current[id + 'animation'];\n }, []);\n\n const removeToastWithAnimationAfterDelay = React.useCallback(\n (id: ToastId, delay: number) => {\n timeoutIdRefs.current[id + 'animation'] = window.setTimeout(\n () => playExitAnimation(id),\n delay - EXIT_ANIMATION_TIME,\n );\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [timeoutIdRefs, playExitAnimation, removeToast],\n );\n\n const addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n removeToastWithAnimationAfterDelay(id, delay);\n },\n [delay, removeToastWithAnimationAfterDelay],\n );\n\n const handleMouseEnter = (toast: ToastType) => () => {\n if (toast.isBeingRemoved) return;\n setHovering(toast.id);\n Object.values(timeoutIdRefs.current).forEach(timeoutId => {\n window.clearTimeout(timeoutId);\n });\n timeoutIdRefs.current = {};\n };\n\n const handleMouseLeave = () => {\n setHovering(undefined);\n toasts.forEach(toast => {\n removeToastWithAnimationAfterDelay(toast.id, delay);\n });\n };\n\n const handleClose = (toastId: ToastId) => () => {\n removeToast(toastId);\n handleMouseLeave();\n };\n\n const contextValue = React.useMemo(\n () => ({ toasts, addToast, removeToast }),\n [addToast, removeToast, toasts],\n );\n\n return (\n <ToastContext.Provider value={contextValue}>\n {toasts.length > 0 && (\n <div\n className={classNames(\n 'eds-toast-container',\n `eds-toast-container--${position}`,\n className,\n )}\n style={style}\n >\n {toasts.slice(0, 3).map(toastToShow => (\n <ToastAlertBox\n variant={toastToShow.variant}\n title={toastToShow.title}\n onClose={handleClose(toastToShow.id)}\n onMouseEnter={handleMouseEnter(toastToShow)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\n toastIsBeingRemoved={toastToShow.isBeingRemoved}\n key={toastToShow.id}\n >\n {toastToShow.content}\n </ToastAlertBox>\n ))}\n </div>\n )}\n {children}\n </ToastContext.Provider>\n );\n};\n\nexport const useToast: () => {\n addToast: (payload: AddToastPayload) => void;\n} = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your component in a ToastProvider component in ' +\n 'order to use the useToast hook',\n );\n }\n const { addToast } = context;\n return {\n addToast,\n };\n};\n","import React from 'react';\n\nimport copy from 'copy-text-to-clipboard';\n\nimport { useToast } from './ToastProvider';\nimport { CopyIcon } from '@entur/icons';\nimport { PreformattedText } from '@entur/typography';\n\nimport './CopyableText.scss';\n\nexport type CopyableTextProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Tekstinnhold som vises og kopieres */\n children: string;\n /** Hvis du ønsker å kopiere noe annet enn\n * innholdet i children kan du legge det inn her */\n textToCopy?: string;\n /** Overskrift i toast-varselet */\n successHeading?: string;\n /** Bekreftelsesmelding i toast-varselet */\n successMessage?: string;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;\n\nexport const CopyableText = ({\n children,\n successHeading = 'Kopiert!',\n successMessage = 'Innholdet ble kopiert til utklippstavlen.',\n textToCopy,\n className,\n ...rest\n}: CopyableTextProps): JSX.Element => {\n const { addToast } = useToast();\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const handleClick = () => {\n buttonRef.current &&\n copy(textToCopy !== undefined ? textToCopy : children, {\n target: buttonRef.current,\n }) &&\n addToast({ title: successHeading, content: successMessage });\n };\n return (\n <button\n className={'copyable-text ' + className}\n style={{ ...rest.style }}\n type=\"button\"\n onClick={handleClick}\n ref={buttonRef}\n aria-label=\"Kopier innhold\"\n {...rest}\n >\n <PreformattedText>{children}</PreformattedText>\n <CopyIcon className=\"copyable-text__icon\" />\n </button>\n );\n};\n","import { BaseExpand, ExpandArrow } from '@entur/expand/';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { BannerAlertBoxProps } from './BannerAlertBox';\nimport { BaseAlertBox } from './BaseAlertBox';\nimport './ExpandableAlertBox.scss';\nimport { SmallAlertBoxProps } from './SmallAlertBox';\n\nexport type SmallExpandableAlertBoxProps = ExpandableAlertBoxProps &\n SmallAlertBoxProps;\n\nexport const SmallExpandableAlertBox: React.FC<SmallExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n };\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"banner\" {...props} />;\n };\n\ntype ExpandableAlertBoxProps = {\n /**Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Tittelen til ExpandableAlertBox */\n title: React.ReactNode;\n /**Innhold som vises ved ekspandering */\n children: React.ReactNode;\n /**Ekstra klassenavn */\n className?: string;\n /** Tekst som vises på ekspanderingsknappen før åpning\n * @default \"Les mer\"\n */\n openLabel?: string;\n /** Tekst som vises på ekspanderingsknappen når den er åpnet\n * @default \"Lukk\"\n */\n closeLabel?: string;\n [key: string]: any;\n};\n\nconst ExpandableAlertBox: React.FC<ExpandableAlertBoxProps> = ({\n variant,\n title,\n children,\n size,\n className,\n openLabel,\n closeLabel,\n ...rest\n}) => {\n const [open, setopen] = React.useState(false);\n return (\n <BaseAlertBox\n size={size}\n variant={variant}\n className={classNames('eds-expandable-alert-box', className)}\n title={\n <ExpandableAlertBoxTitle\n open={open}\n title={title}\n onClick={() => setopen(!open)}\n openLabel={openLabel}\n closeLabel={closeLabel}\n />\n }\n {...rest}\n >\n <BaseExpand open={open}>{children}</BaseExpand>\n </BaseAlertBox>\n );\n};\n\ntype ExpandableAlertBoxTitleProps = {\n title: React.ReactNode;\n open: boolean;\n openLabel?: string;\n closeLabel?: string;\n onClick: (e: React.MouseEvent) => void;\n};\n\nconst ExpandableAlertBoxTitle: React.FC<ExpandableAlertBoxTitleProps> = ({\n title,\n open,\n openLabel = 'Les mer',\n closeLabel = 'Lukk',\n onClick,\n}) => {\n return (\n <div className=\"eds-expandable-alert-box__title\">\n <div>{title}</div>\n <button\n className=\"eds-expandable-alert-box__button\"\n onClick={onClick}\n type=\"button\"\n >\n {open ? closeLabel : openLabel}\n <ExpandArrow open={open} inline />\n </button>\n </div>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('alert', 'icons');\n\nexport { BannerAlertBox } from './BannerAlertBox';\nexport { ToastAlertBox } from './ToastAlertBox';\nexport { SmallAlertBox } from './SmallAlertBox';\nexport { ToastProvider, useToast } from './ToastProvider';\nexport { CopyableText } from './CopyableText';\nexport * from './ExpandableAlertBox';\n"],"names":["iconsMap","success","icon","OutlinedValidationCheckIcon","description","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","toastIsBeingRemoved","rest","_excluded","React","useState","isClosed","setClosed","handleClose","Icon","createElement","classNames","type","onClick","CloseIcon","role","BannerAlertBox","props","ToastAlertBox","SmallAlertBox","width","EXIT_ANIMATION_TIME","ToastContext","createContext","toastReducer","prevToasts","action","payload","map","toast","id","isBeingRemoved","filter","createUniqueId","Math","random","toString","substring","createToast","content","ToastProvider","delay","position","style","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","useRef","removeToast","useCallback","window","clearTimeout","current","playExitAnimation","removeToastWithAnimationAfterDelay","setTimeout","addToast","handleMouseEnter","Object","values","forEach","timeoutId","handleMouseLeave","undefined","toastId","contextValue","useMemo","Provider","value","length","slice","toastToShow","onMouseEnter","onMouseLeave","key","useToast","context","useContext","Error","CopyableText","successHeading","successMessage","textToCopy","buttonRef","handleClick","copy","target","ref","PreformattedText","CopyIcon","SmallExpandableAlertBox","ExpandableAlertBox","BannerExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","ExpandArrow","inline","warnAboutMissingStyles"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("classnames"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("classnames"),o=require("@entur/icons"),a=require("copy-text-to-clipboard"),r=require("@entur/typography"),i=require("@entur/expand/");function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var o in n)Object.prototype.hasOwnProperty.call(n,o)&&(e[o]=n[o])}return e},l.apply(this,arguments)}function s(e,t){if(null==e)return{};var n,o,a={},r=Object.keys(e);for(o=0;o<r.length;o++)t.indexOf(n=r[o])>=0||(a[n]=e[n]);return a}var c=["children","className","closable","closeButtonLabel","variant","onClose","size","title","toastIsBeingRemoved"],u={success:{icon:o.OutlinedValidationCheckIcon,description:"Suksessmelding"},info:{icon:o.OutlinedValidationInfoIcon,description:"Infomelding"},warning:{icon:o.OutlinedValidationExclamationIcon,description:"Varselmelding"},error:{icon:o.OutlinedValidationErrorIcon,description:"Feilmelding"}},d=function(e){var a=e.children,r=e.className,i=e.closable,d=void 0!==i&&i,m=e.closeButtonLabel,p=void 0===m?"Lukk":m,b=e.variant,v=e.onClose,f=void 0===v?function(){return{}}:v,x=e.size,E=e.title,y=e.toastIsBeingRemoved,T=s(e,c),g=t.useState(!1),_=g[1];if(g[0])return null;var h=u[b].icon;return t.createElement("div",l({className:n("eds-alert-box","eds-alert-box--"+x,"eds-alert-box--"+b,{"eds-alert-box--toast--exit-animation":y},r)},T),d&&t.createElement("button",{"aria-label":p,className:"eds-alert-box__close-button",type:"button",onClick:function(){_(!0),f()}},t.createElement(o.CloseIcon,null)),t.createElement(h,{role:"img",className:"eds-alert-box__icon","aria-label":u[b].description}),t.createElement("div",{className:n("eds-alert-box__content",{"eds-alert-box__content--no-title":!E,"eds-alert-box__content--no-children":!a})},E&&t.createElement("div",{className:"eds-alert-box__title"},E),a&&a))},m=function(e){return t.createElement(d,l({},e,{size:"toast",role:"status"}))},p=["className","width","onClose","closable","closeButtonLabel"],b=t.createContext(null),v=function(e,t){switch(t.type){case"ADD_TOAST":return[t.payload].concat(e);case"PLAY_EXIT_ANIMATION":return e.map((function(e){return e.id===t.payload?l({},e,{isBeingRemoved:!0}):e}));case"REMOVE_TOAST":return e.filter((function(e){return e.id!==t.payload}))}},f=function(){var e=t.useContext(b);if(!e)throw new Error("You need to wrap your component in a ToastProvider component in order to use the useToast hook");return{addToast:e.addToast}},x=["children","successHeading","successMessage","textToCopy","className"],E=["variant","title","children","size","className","openLabel","closeLabel"],y=function(e){var o=e.variant,a=e.title,r=e.children,c=e.size,u=e.className,m=e.openLabel,p=e.closeLabel,b=s(e,E),v=t.useState(!1),f=v[0],x=v[1];return t.createElement(d,l({size:c,variant:o,className:n("eds-expandable-alert-box",u),title:t.createElement(T,{open:f,title:a,onClick:function(){return x(!f)},openLabel:m,closeLabel:p})},b),t.createElement(i.BaseExpand,{open:f},r))},T=function(e){var n=e.open,o=e.openLabel,a=void 0===o?"Les mer":o,r=e.closeLabel,l=void 0===r?"Lukk":r,s=e.onClick;return t.createElement("div",{className:"eds-expandable-alert-box__title"},t.createElement("div",null,e.title),t.createElement("button",{className:"eds-expandable-alert-box__button",onClick:s,type:"button"},n?l:a,t.createElement(i.ExpandArrow,{open:n,inline:!0})))};e.warnAboutMissingStyles("alert","icons"),exports.BannerAlertBox=function(e){return t.createElement(d,l({},e,{size:"banner"}))},exports.BannerExpandableAlertBox=function(e){return t.createElement(y,l({size:"banner"},e))},exports.CopyableText=function(e){var n=e.children,i=e.successHeading,c=void 0===i?"Kopiert!":i,u=e.successMessage,d=void 0===u?"Innholdet ble kopiert til utklippstavlen.":u,m=e.textToCopy,p=e.className,b=s(e,x),v=f().addToast,E=t.useRef(null);return t.createElement("button",l({className:"copyable-text "+p,style:l({},b.style),type:"button",onClick:function(){E.current&&a(void 0!==m?m:n,{target:E.current})&&v({title:c,content:d})},ref:E,"aria-label":"Kopier innhold"},b),t.createElement(r.PreformattedText,null,n),t.createElement(o.CopyIcon,{className:"copyable-text__icon"}))},exports.SmallAlertBox=function(e){var o=e.className,a=e.width,r=e.onClose,i=e.closable,c=void 0!==i&&i,u=e.closeButtonLabel,m=s(e,p);return t.createElement(d,l({className:n(o,{"eds-alert-box--fit-content":"fit-content"===a})},m,{onClose:r,closable:c,closeButtonLabel:u,size:"small"}))},exports.SmallExpandableAlertBox=function(e){return t.createElement(y,l({size:"small"},e))},exports.ToastAlertBox=m,exports.ToastProvider=function(e){var o=e.delay,a=void 0===o?6e3:o,r=e.children,i=e.position,s=void 0===i?"bottom-right":i,c=e.className,u=e.style,d=t.useReducer(v,[]),p=d[0],f=d[1],x=t.useState(),E=x[0],y=x[1],T=t.useRef({}),g=t.useCallback((function(e){window.clearTimeout(T.current[e]),f({type:"REMOVE_TOAST",payload:e}),delete T.current[e]}),[]),_=t.useCallback((function(e){window.clearTimeout(T.current[e+"animation"]),f({type:"PLAY_EXIT_ANIMATION",payload:e}),delete T.current[e+"animation"]}),[]),h=t.useCallback((function(e,t){T.current[e+"animation"]=window.setTimeout((function(){return _(e)}),t-400),T.current[e]=window.setTimeout((function(){return g(e)}),t)}),[T,_,g]),N=t.useCallback((function(e){var t=Math.random().toString().substring(2),n=function(e,t){return"string"==typeof e?{id:t,content:e,variant:"success",isBeingRemoved:!1}:l({id:t,variant:"success",isBeingRemoved:!1},e)}(e,t);f({type:"ADD_TOAST",payload:n}),h(t,a)}),[a,h]),C=function(){y(void 0),p.forEach((function(e){h(e.id,a)}))},B=t.useMemo((function(){return{toasts:p,addToast:N,removeToast:g}}),[N,g,p]);return t.createElement(b.Provider,{value:B},p.length>0&&t.createElement("div",{className:n("eds-toast-container","eds-toast-container--"+s,c),style:u},p.slice(0,3).map((function(e){return t.createElement(m,{variant:e.variant,title:e.title,onClose:(o=e.id,function(){g(o),C()}),onMouseEnter:(n=e,function(){n.isBeingRemoved||(y(n.id),Object.values(T.current).forEach((function(e){window.clearTimeout(e)})),T.current={})}),onMouseLeave:C,closable:E===e.id,toastIsBeingRemoved:e.isBeingRemoved,key:e.id},e.content);var n,o}))),r)},exports.useToast=f;
|
|
2
2
|
//# sourceMappingURL=alert.cjs.production.min.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.cjs.production.min.js","sources":["../src/BaseAlertBox.tsx","../src/ToastAlertBox.tsx","../src/ToastProvider.tsx","../src/ExpandableAlertBox.tsx","../src/index.tsx","../src/BannerAlertBox.tsx","../src/CopyableText.tsx","../src/SmallAlertBox.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport {\n CloseIcon,\n OutlinedValidationCheckIcon,\n OutlinedValidationExclamationIcon,\n OutlinedValidationInfoIcon,\n OutlinedValidationErrorIcon,\n} from '@entur/icons';\nimport './styles.scss';\n\nconst iconsMap = {\n success: {\n icon: OutlinedValidationCheckIcon,\n description: 'Suksessmelding',\n },\n info: { icon: OutlinedValidationInfoIcon, description: 'Infomelding' },\n warning: {\n icon: OutlinedValidationExclamationIcon,\n description: 'Varselmelding',\n },\n error: { icon: OutlinedValidationErrorIcon, description: 'Feilmelding' },\n};\n\ntype BaseAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises\n * @default \"Lukk\"\n */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen\n * @default () => {}\n */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: React.ReactNode;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Typen boks (internt bruk) */\n size: 'banner' | 'toast' | 'small';\n [key: string]: any;\n};\n\nexport const BaseAlertBox: React.FC<BaseAlertBoxProps> = ({\n children,\n className,\n closable = false,\n closeButtonLabel = 'Lukk',\n variant,\n onClose = () => ({}),\n size,\n title,\n toastIsBeingRemoved,\n ...rest\n}) => {\n const [isClosed, setClosed] = React.useState(false);\n if (isClosed) {\n return null;\n }\n const handleClose = () => {\n setClosed(true);\n onClose();\n };\n const Icon = iconsMap[variant].icon;\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\n { 'eds-alert-box--toast--exit-animation': toastIsBeingRemoved },\n className,\n )}\n {...rest}\n >\n {closable && (\n <button\n aria-label={closeButtonLabel}\n className=\"eds-alert-box__close-button\"\n type=\"button\"\n onClick={handleClose}\n >\n <CloseIcon />\n </button>\n )}\n <Icon\n role=\"img\"\n className=\"eds-alert-box__icon\"\n aria-label={iconsMap[variant].description}\n />\n <div\n className={classNames('eds-alert-box__content', {\n 'eds-alert-box__content--no-title': !title,\n 'eds-alert-box__content--no-children': !children,\n })}\n >\n {title && <div className=\"eds-alert-box__title\">{title}</div>}\n {children && children}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type ToastAlertBoxProps = {\n /** Innholdet i toasten */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på toasten */\n variant: 'success' | 'info';\n [key: string]: any;\n};\n\nexport const ToastAlertBox: React.FC<ToastAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"toast\" role=\"status\" />\n);\n","import React from 'react';\nimport { ToastAlertBox } from './ToastAlertBox';\nimport classNames from 'classnames';\n\ntype ToastId = string;\n\ntype ToastVariants = 'success' | 'info';\n\ntype ToastType = {\n title?: string;\n content: React.ReactNode;\n id: ToastId;\n variant: ToastVariants;\n isBeingRemoved: boolean;\n};\n\ntype ToastContextType = {\n addToast: (payload: AddToastPayload) => void;\n removeToast: (id: ToastId) => void;\n toasts: ToastType[];\n};\n\ntype AddToastPayload =\n | { title?: string; content: React.ReactNode; variant?: ToastVariants }\n | string;\n\ntype ToastAction =\n | { type: 'ADD_TOAST'; payload: ToastType }\n | { type: 'REMOVE_TOAST'; payload: ToastId }\n | { type: 'PLAY_EXIT_ANIMATION'; payload: ToastId };\n\nconst EXIT_ANIMATION_TIME = 400;\n\nconst ToastContext = React.createContext<ToastContextType | null>(null);\n\nconst toastReducer = (\n prevToasts: ToastType[],\n action: ToastAction,\n): ToastType[] => {\n switch (action.type) {\n case 'ADD_TOAST':\n return [action.payload, ...prevToasts];\n case 'PLAY_EXIT_ANIMATION':\n return prevToasts.map(toast => {\n if (toast.id === action.payload)\n return { ...toast, isBeingRemoved: true };\n return toast;\n });\n case 'REMOVE_TOAST':\n return prevToasts.filter(toast => toast.id !== action.payload);\n }\n};\n\nconst createUniqueId = () => Math.random().toString().substring(2);\n\nconst createToast = (toast: AddToastPayload, id: ToastId): ToastType => {\n if (typeof toast === 'string') {\n return { id, content: toast, variant: 'success', isBeingRemoved: false };\n } else {\n return { id, variant: 'success', isBeingRemoved: false, ...toast };\n }\n};\n\nexport type ToastProviderProps = {\n /** Antall millisekunder før toasts forsvinner av seg selv\n * @default 6000\n */\n delay?: number;\n /** Plasseringen av toasts\n * @default \"bottom-right\"\n */\n position?: 'bottom-right' | 'top-right';\n /** Ekstra klassenavn til ToastProvider-wrapperen */\n className?: string;\n /** Ekstra styling som sendes til ToastProvider-wrapperen */\n style?: React.CSSProperties;\n /** Innholdet */\n children: React.ReactNode;\n};\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n delay = 6000,\n children,\n position = 'bottom-right',\n className,\n style,\n}) => {\n const [toasts, dispatch] = React.useReducer(toastReducer, []);\n const [hoveringId, setHovering] = React.useState<string>();\n const timeoutIdRefs = React.useRef<{ [key: string]: number }>({});\n\n const removeToast = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id]);\n dispatch({ type: 'REMOVE_TOAST', payload: id });\n delete timeoutIdRefs.current[id];\n }, []);\n\n const playExitAnimation = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id + 'animation']);\n dispatch({ type: 'PLAY_EXIT_ANIMATION', payload: id });\n delete timeoutIdRefs.current[id + 'animation'];\n }, []);\n\n const removeToastWithAnimationAfterDelay = React.useCallback(\n (id: ToastId, delay: number) => {\n timeoutIdRefs.current[id + 'animation'] = window.setTimeout(\n () => playExitAnimation(id),\n delay - EXIT_ANIMATION_TIME,\n );\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [timeoutIdRefs, playExitAnimation, removeToast],\n );\n\n const addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n removeToastWithAnimationAfterDelay(id, delay);\n },\n [delay, removeToastWithAnimationAfterDelay],\n );\n\n const handleMouseEnter = (toast: ToastType) => () => {\n if (toast.isBeingRemoved) return;\n setHovering(toast.id);\n Object.values(timeoutIdRefs.current).forEach(timeoutId => {\n window.clearTimeout(timeoutId);\n });\n timeoutIdRefs.current = {};\n };\n\n const handleMouseLeave = () => {\n setHovering(undefined);\n toasts.forEach(toast => {\n removeToastWithAnimationAfterDelay(toast.id, delay);\n });\n };\n\n const handleClose = (toastId: ToastId) => () => {\n removeToast(toastId);\n handleMouseLeave();\n };\n\n const contextValue = React.useMemo(\n () => ({ toasts, addToast, removeToast }),\n [addToast, removeToast, toasts],\n );\n\n return (\n <ToastContext.Provider value={contextValue}>\n {toasts.length > 0 && (\n <div\n className={classNames(\n 'eds-toast-container',\n `eds-toast-container--${position}`,\n className,\n )}\n style={style}\n >\n {toasts.slice(0, 3).map(toastToShow => (\n <ToastAlertBox\n variant={toastToShow.variant}\n title={toastToShow.title}\n onClose={handleClose(toastToShow.id)}\n onMouseEnter={handleMouseEnter(toastToShow)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\n toastIsBeingRemoved={toastToShow.isBeingRemoved}\n key={toastToShow.id}\n >\n {toastToShow.content}\n </ToastAlertBox>\n ))}\n </div>\n )}\n {children}\n </ToastContext.Provider>\n );\n};\n\nexport const useToast: () => {\n addToast: (payload: AddToastPayload) => void;\n} = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your component in a ToastProvider component in ' +\n 'order to use the useToast hook',\n );\n }\n const { addToast } = context;\n return {\n addToast,\n };\n};\n","import { BaseExpand, ExpandArrow } from '@entur/expand/';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { BannerAlertBoxProps } from './BannerAlertBox';\nimport { BaseAlertBox } from './BaseAlertBox';\nimport './ExpandableAlertBox.scss';\nimport { SmallAlertBoxProps } from './SmallAlertBox';\n\nexport type SmallExpandableAlertBoxProps = ExpandableAlertBoxProps &\n SmallAlertBoxProps;\n\nexport const SmallExpandableAlertBox: React.FC<SmallExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n };\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"banner\" {...props} />;\n };\n\ntype ExpandableAlertBoxProps = {\n /**Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Tittelen til ExpandableAlertBox */\n title: React.ReactNode;\n /**Innhold som vises ved ekspandering */\n children: React.ReactNode;\n /**Ekstra klassenavn */\n className?: string;\n /** Tekst som vises på ekspanderingsknappen før åpning\n * @default \"Les mer\"\n */\n openLabel?: string;\n /** Tekst som vises på ekspanderingsknappen når den er åpnet\n * @default \"Lukk\"\n */\n closeLabel?: string;\n [key: string]: any;\n};\n\nconst ExpandableAlertBox: React.FC<ExpandableAlertBoxProps> = ({\n variant,\n title,\n children,\n size,\n className,\n openLabel,\n closeLabel,\n ...rest\n}) => {\n const [open, setopen] = React.useState(false);\n return (\n <BaseAlertBox\n size={size}\n variant={variant}\n className={classNames('eds-expandable-alert-box', className)}\n title={\n <ExpandableAlertBoxTitle\n open={open}\n title={title}\n onClick={() => setopen(!open)}\n openLabel={openLabel}\n closeLabel={closeLabel}\n />\n }\n {...rest}\n >\n <BaseExpand open={open}>{children}</BaseExpand>\n </BaseAlertBox>\n );\n};\n\ntype ExpandableAlertBoxTitleProps = {\n title: React.ReactNode;\n open: boolean;\n openLabel?: string;\n closeLabel?: string;\n onClick: (e: React.MouseEvent) => void;\n};\n\nconst ExpandableAlertBoxTitle: React.FC<ExpandableAlertBoxTitleProps> = ({\n title,\n open,\n openLabel = 'Les mer',\n closeLabel = 'Lukk',\n onClick,\n}) => {\n return (\n <div className=\"eds-expandable-alert-box__title\">\n <div>{title}</div>\n <button\n className=\"eds-expandable-alert-box__button\"\n onClick={onClick}\n type=\"button\"\n >\n {open ? closeLabel : openLabel}\n <ExpandArrow open={open} inline />\n </button>\n </div>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('alert', 'icons');\n\nexport { BannerAlertBox } from './BannerAlertBox';\nexport { ToastAlertBox } from './ToastAlertBox';\nexport { SmallAlertBox } from './SmallAlertBox';\nexport { ToastProvider, useToast } from './ToastProvider';\nexport { CopyableText } from './CopyableText';\nexport * from './ExpandableAlertBox';\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type BannerAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const BannerAlertBox: React.FC<BannerAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"banner\" />\n);\n","import React from 'react';\n\nimport copy from 'copy-text-to-clipboard';\n\nimport { useToast } from './ToastProvider';\nimport { CopyIcon } from '@entur/icons';\nimport { PreformattedText } from '@entur/typography';\n\nimport './CopyableText.scss';\n\nexport type CopyableTextProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Tekstinnhold som vises og kopieres */\n children: string;\n /** Hvis du ønsker å kopiere noe annet enn\n * innholdet i children kan du legge det inn her */\n textToCopy?: string;\n /** Overskrift i toast-varselet */\n successHeading?: string;\n /** Bekreftelsesmelding i toast-varselet */\n successMessage?: string;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;\n\nexport const CopyableText = ({\n children,\n successHeading = 'Kopiert!',\n successMessage = 'Innholdet ble kopiert til utklippstavlen.',\n textToCopy,\n className,\n ...rest\n}: CopyableTextProps): JSX.Element => {\n const { addToast } = useToast();\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const handleClick = () => {\n buttonRef.current &&\n copy(textToCopy !== undefined ? textToCopy : children, {\n target: buttonRef.current,\n }) &&\n addToast({ title: successHeading, content: successMessage });\n };\n return (\n <button\n className={'copyable-text ' + className}\n style={{ ...rest.style }}\n type=\"button\"\n onClick={handleClick}\n ref={buttonRef}\n aria-label=\"Kopier innhold\"\n {...rest}\n >\n <PreformattedText>{children}</PreformattedText>\n <CopyIcon className=\"copyable-text__icon\" />\n </button>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type SmallAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Bredden på boksen - fullbredde eller tilpasset innholdet */\n width?: 'fluid' | 'fit-content';\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const SmallAlertBox: React.FC<SmallAlertBoxProps> = ({\n className,\n width,\n onClose,\n closable = false,\n closeButtonLabel,\n ...rest\n}) => (\n <BaseAlertBox\n className={classNames(className, {\n 'eds-alert-box--fit-content': width === 'fit-content',\n })}\n {...rest}\n onClose={onClose}\n closable={closable}\n closeButtonLabel={closeButtonLabel}\n size=\"small\"\n />\n);\n"],"names":["iconsMap","success","icon","OutlinedValidationCheckIcon","description","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","_ref","children","className","_ref$closable","closable","_ref$closeButtonLabel","closeButtonLabel","variant","_ref$onClose","onClose","size","title","toastIsBeingRemoved","rest","_objectWithoutPropertiesLoose","_excluded","_React$useState","React","useState","setClosed","Icon","createElement","_extends","classNames","type","onClick","CloseIcon","role","ToastAlertBox","props","ToastContext","createContext","toastReducer","prevToasts","action","payload","concat","map","toast","id","isBeingRemoved","filter","useToast","context","useContext","Error","addToast","ExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","_ref2","_ref2$openLabel","_ref2$closeLabel","ExpandArrow","inline","warnAboutMissingStyles","_ref$successHeading","successHeading","_ref$successMessage","successMessage","textToCopy","buttonRef","useRef","style","current","copy","undefined","target","content","ref","PreformattedText","CopyIcon","width","_ref$delay","delay","_ref$position","position","_React$useReducer","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","removeToast","useCallback","window","clearTimeout","playExitAnimation","removeToastWithAnimationAfterDelay","setTimeout","Math","random","toString","substring","createToast","handleMouseLeave","forEach","contextValue","useMemo","Provider","value","length","slice","toastToShow","toastId","onMouseEnter","Object","values","timeoutId","onMouseLeave","key"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alert.cjs.production.min.js","sources":["../src/BaseAlertBox.tsx","../src/ToastAlertBox.tsx","../src/ToastProvider.tsx","../src/ExpandableAlertBox.tsx","../src/index.tsx","../src/BannerAlertBox.tsx","../src/CopyableText.tsx","../src/SmallAlertBox.tsx"],"sourcesContent":["import React from 'react';\nimport classNames from 'classnames';\nimport {\n CloseIcon,\n OutlinedValidationCheckIcon,\n OutlinedValidationExclamationIcon,\n OutlinedValidationInfoIcon,\n OutlinedValidationErrorIcon,\n} from '@entur/icons';\nimport './styles.scss';\n\nconst iconsMap = {\n success: {\n icon: OutlinedValidationCheckIcon,\n description: 'Suksessmelding',\n },\n info: { icon: OutlinedValidationInfoIcon, description: 'Infomelding' },\n warning: {\n icon: OutlinedValidationExclamationIcon,\n description: 'Varselmelding',\n },\n error: { icon: OutlinedValidationErrorIcon, description: 'Feilmelding' },\n};\n\ntype BaseAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises\n * @default \"Lukk\"\n */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen\n * @default () => {}\n */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: React.ReactNode;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Typen boks (internt bruk) */\n size: 'banner' | 'toast' | 'small';\n [key: string]: any;\n};\n\nexport const BaseAlertBox: React.FC<BaseAlertBoxProps> = ({\n children,\n className,\n closable = false,\n closeButtonLabel = 'Lukk',\n variant,\n onClose = () => ({}),\n size,\n title,\n toastIsBeingRemoved,\n ...rest\n}) => {\n const [isClosed, setClosed] = React.useState(false);\n if (isClosed) {\n return null;\n }\n const handleClose = () => {\n setClosed(true);\n onClose();\n };\n const Icon = iconsMap[variant].icon;\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\n { 'eds-alert-box--toast--exit-animation': toastIsBeingRemoved },\n className,\n )}\n {...rest}\n >\n {closable && (\n <button\n aria-label={closeButtonLabel}\n className=\"eds-alert-box__close-button\"\n type=\"button\"\n onClick={handleClose}\n >\n <CloseIcon />\n </button>\n )}\n <Icon\n role=\"img\"\n className=\"eds-alert-box__icon\"\n aria-label={iconsMap[variant].description}\n />\n <div\n className={classNames('eds-alert-box__content', {\n 'eds-alert-box__content--no-title': !title,\n 'eds-alert-box__content--no-children': !children,\n })}\n >\n {title && <div className=\"eds-alert-box__title\">{title}</div>}\n {children && children}\n </div>\n </div>\n );\n};\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type ToastAlertBoxProps = {\n /** Innholdet i toasten */\n children?: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på toasten */\n variant: 'success' | 'info';\n [key: string]: any;\n};\n\nexport const ToastAlertBox: React.FC<ToastAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"toast\" role=\"status\" />\n);\n","import React from 'react';\nimport { ToastAlertBox } from './ToastAlertBox';\nimport classNames from 'classnames';\n\ntype ToastId = string;\n\ntype ToastVariants = 'success' | 'info';\n\ntype ToastType = {\n title?: string;\n content: React.ReactNode;\n id: ToastId;\n variant: ToastVariants;\n isBeingRemoved: boolean;\n};\n\ntype ToastContextType = {\n addToast: (payload: AddToastPayload) => void;\n removeToast: (id: ToastId) => void;\n toasts: ToastType[];\n};\n\ntype AddToastPayload =\n | { title?: string; content: React.ReactNode; variant?: ToastVariants }\n | string;\n\ntype ToastAction =\n | { type: 'ADD_TOAST'; payload: ToastType }\n | { type: 'REMOVE_TOAST'; payload: ToastId }\n | { type: 'PLAY_EXIT_ANIMATION'; payload: ToastId };\n\nconst EXIT_ANIMATION_TIME = 400;\n\nconst ToastContext = React.createContext<ToastContextType | null>(null);\n\nconst toastReducer = (\n prevToasts: ToastType[],\n action: ToastAction,\n): ToastType[] => {\n switch (action.type) {\n case 'ADD_TOAST':\n return [action.payload, ...prevToasts];\n case 'PLAY_EXIT_ANIMATION':\n return prevToasts.map(toast => {\n if (toast.id === action.payload)\n return { ...toast, isBeingRemoved: true };\n return toast;\n });\n case 'REMOVE_TOAST':\n return prevToasts.filter(toast => toast.id !== action.payload);\n }\n};\n\nconst createUniqueId = () => Math.random().toString().substring(2);\n\nconst createToast = (toast: AddToastPayload, id: ToastId): ToastType => {\n if (typeof toast === 'string') {\n return { id, content: toast, variant: 'success', isBeingRemoved: false };\n } else {\n return { id, variant: 'success', isBeingRemoved: false, ...toast };\n }\n};\n\nexport type ToastProviderProps = {\n /** Antall millisekunder før toasts forsvinner av seg selv\n * @default 6000\n */\n delay?: number;\n /** Plasseringen av toasts\n * @default \"bottom-right\"\n */\n position?: 'bottom-right' | 'top-right';\n /** Ekstra klassenavn til ToastProvider-wrapperen */\n className?: string;\n /** Ekstra styling som sendes til ToastProvider-wrapperen */\n style?: React.CSSProperties;\n /** Innholdet */\n children: React.ReactNode;\n};\n\nexport const ToastProvider: React.FC<ToastProviderProps> = ({\n delay = 6000,\n children,\n position = 'bottom-right',\n className,\n style,\n}) => {\n const [toasts, dispatch] = React.useReducer(toastReducer, []);\n const [hoveringId, setHovering] = React.useState<string>();\n const timeoutIdRefs = React.useRef<{ [key: string]: number }>({});\n\n const removeToast = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id]);\n dispatch({ type: 'REMOVE_TOAST', payload: id });\n delete timeoutIdRefs.current[id];\n }, []);\n\n const playExitAnimation = React.useCallback((id: ToastId) => {\n window.clearTimeout(timeoutIdRefs.current[id + 'animation']);\n dispatch({ type: 'PLAY_EXIT_ANIMATION', payload: id });\n delete timeoutIdRefs.current[id + 'animation'];\n }, []);\n\n const removeToastWithAnimationAfterDelay = React.useCallback(\n (id: ToastId, delay: number) => {\n timeoutIdRefs.current[id + 'animation'] = window.setTimeout(\n () => playExitAnimation(id),\n delay - EXIT_ANIMATION_TIME,\n );\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [timeoutIdRefs, playExitAnimation, removeToast],\n );\n\n const addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n removeToastWithAnimationAfterDelay(id, delay);\n },\n [delay, removeToastWithAnimationAfterDelay],\n );\n\n const handleMouseEnter = (toast: ToastType) => () => {\n if (toast.isBeingRemoved) return;\n setHovering(toast.id);\n Object.values(timeoutIdRefs.current).forEach(timeoutId => {\n window.clearTimeout(timeoutId);\n });\n timeoutIdRefs.current = {};\n };\n\n const handleMouseLeave = () => {\n setHovering(undefined);\n toasts.forEach(toast => {\n removeToastWithAnimationAfterDelay(toast.id, delay);\n });\n };\n\n const handleClose = (toastId: ToastId) => () => {\n removeToast(toastId);\n handleMouseLeave();\n };\n\n const contextValue = React.useMemo(\n () => ({ toasts, addToast, removeToast }),\n [addToast, removeToast, toasts],\n );\n\n return (\n <ToastContext.Provider value={contextValue}>\n {toasts.length > 0 && (\n <div\n className={classNames(\n 'eds-toast-container',\n `eds-toast-container--${position}`,\n className,\n )}\n style={style}\n >\n {toasts.slice(0, 3).map(toastToShow => (\n <ToastAlertBox\n variant={toastToShow.variant}\n title={toastToShow.title}\n onClose={handleClose(toastToShow.id)}\n onMouseEnter={handleMouseEnter(toastToShow)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\n toastIsBeingRemoved={toastToShow.isBeingRemoved}\n key={toastToShow.id}\n >\n {toastToShow.content}\n </ToastAlertBox>\n ))}\n </div>\n )}\n {children}\n </ToastContext.Provider>\n );\n};\n\nexport const useToast: () => {\n addToast: (payload: AddToastPayload) => void;\n} = () => {\n const context = React.useContext(ToastContext);\n if (!context) {\n throw new Error(\n 'You need to wrap your component in a ToastProvider component in ' +\n 'order to use the useToast hook',\n );\n }\n const { addToast } = context;\n return {\n addToast,\n };\n};\n","import { BaseExpand, ExpandArrow } from '@entur/expand/';\nimport classNames from 'classnames';\nimport React from 'react';\nimport { BannerAlertBoxProps } from './BannerAlertBox';\nimport { BaseAlertBox } from './BaseAlertBox';\nimport './ExpandableAlertBox.scss';\nimport { SmallAlertBoxProps } from './SmallAlertBox';\n\nexport type SmallExpandableAlertBoxProps = ExpandableAlertBoxProps &\n SmallAlertBoxProps;\n\nexport const SmallExpandableAlertBox: React.FC<SmallExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n };\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> =\n props => {\n return <ExpandableAlertBox size=\"banner\" {...props} />;\n };\n\ntype ExpandableAlertBoxProps = {\n /**Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n /** Tittelen til ExpandableAlertBox */\n title: React.ReactNode;\n /**Innhold som vises ved ekspandering */\n children: React.ReactNode;\n /**Ekstra klassenavn */\n className?: string;\n /** Tekst som vises på ekspanderingsknappen før åpning\n * @default \"Les mer\"\n */\n openLabel?: string;\n /** Tekst som vises på ekspanderingsknappen når den er åpnet\n * @default \"Lukk\"\n */\n closeLabel?: string;\n [key: string]: any;\n};\n\nconst ExpandableAlertBox: React.FC<ExpandableAlertBoxProps> = ({\n variant,\n title,\n children,\n size,\n className,\n openLabel,\n closeLabel,\n ...rest\n}) => {\n const [open, setopen] = React.useState(false);\n return (\n <BaseAlertBox\n size={size}\n variant={variant}\n className={classNames('eds-expandable-alert-box', className)}\n title={\n <ExpandableAlertBoxTitle\n open={open}\n title={title}\n onClick={() => setopen(!open)}\n openLabel={openLabel}\n closeLabel={closeLabel}\n />\n }\n {...rest}\n >\n <BaseExpand open={open}>{children}</BaseExpand>\n </BaseAlertBox>\n );\n};\n\ntype ExpandableAlertBoxTitleProps = {\n title: React.ReactNode;\n open: boolean;\n openLabel?: string;\n closeLabel?: string;\n onClick: (e: React.MouseEvent) => void;\n};\n\nconst ExpandableAlertBoxTitle: React.FC<ExpandableAlertBoxTitleProps> = ({\n title,\n open,\n openLabel = 'Les mer',\n closeLabel = 'Lukk',\n onClick,\n}) => {\n return (\n <div className=\"eds-expandable-alert-box__title\">\n <div>{title}</div>\n <button\n className=\"eds-expandable-alert-box__button\"\n onClick={onClick}\n type=\"button\"\n >\n {open ? closeLabel : openLabel}\n <ExpandArrow open={open} inline />\n </button>\n </div>\n );\n};\n","import { warnAboutMissingStyles } from '@entur/utils';\nimport './index.scss';\n\nwarnAboutMissingStyles('alert', 'icons');\n\nexport { BannerAlertBox } from './BannerAlertBox';\nexport { ToastAlertBox } from './ToastAlertBox';\nexport { SmallAlertBox } from './SmallAlertBox';\nexport { ToastProvider, useToast } from './ToastProvider';\nexport { CopyableText } from './CopyableText';\nexport * from './ExpandableAlertBox';\n","import React from 'react';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type BannerAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const BannerAlertBox: React.FC<BannerAlertBoxProps> = props => (\n <BaseAlertBox {...props} size=\"banner\" />\n);\n","import React from 'react';\n\nimport copy from 'copy-text-to-clipboard';\n\nimport { useToast } from './ToastProvider';\nimport { CopyIcon } from '@entur/icons';\nimport { PreformattedText } from '@entur/typography';\n\nimport './CopyableText.scss';\n\nexport type CopyableTextProps = {\n /** Ekstra klassenavn */\n className?: string;\n /** Tekstinnhold som vises og kopieres */\n children: string;\n /** Hvis du ønsker å kopiere noe annet enn\n * innholdet i children kan du legge det inn her */\n textToCopy?: string;\n /** Overskrift i toast-varselet */\n successHeading?: string;\n /** Bekreftelsesmelding i toast-varselet */\n successMessage?: string;\n} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;\n\nexport const CopyableText = ({\n children,\n successHeading = 'Kopiert!',\n successMessage = 'Innholdet ble kopiert til utklippstavlen.',\n textToCopy,\n className,\n ...rest\n}: CopyableTextProps): JSX.Element => {\n const { addToast } = useToast();\n const buttonRef = React.useRef<HTMLButtonElement>(null);\n const handleClick = () => {\n buttonRef.current &&\n copy(textToCopy !== undefined ? textToCopy : children, {\n target: buttonRef.current,\n }) &&\n addToast({ title: successHeading, content: successMessage });\n };\n return (\n <button\n className={'copyable-text ' + className}\n style={{ ...rest.style }}\n type=\"button\"\n onClick={handleClick}\n ref={buttonRef}\n aria-label=\"Kopier innhold\"\n {...rest}\n >\n <PreformattedText>{children}</PreformattedText>\n <CopyIcon className=\"copyable-text__icon\" />\n </button>\n );\n};\n","import React from 'react';\nimport classNames from 'classnames';\nimport { BaseAlertBox } from './BaseAlertBox';\n\nexport type SmallAlertBoxProps = {\n /** Innholdet i alert-boksen */\n children: React.ReactNode;\n /** Ekstra klassenavn */\n className?: string;\n /** Skjermleser-label for lukkeknappen, om den vises */\n closeButtonLabel?: string;\n /** Om denne er true, vil boksen få en lukkeknapp i høyre hjørne\n * @default false\n */\n closable?: boolean;\n /** Callback som kalles når man lukker boksen */\n onClose?: () => void;\n /** Tittel på boksen - oppsummer virkning */\n title?: string;\n /** Bredden på boksen - fullbredde eller tilpasset innholdet */\n width?: 'fluid' | 'fit-content';\n /** Farge og uttrykk på alert-boksen */\n variant: 'success' | 'info' | 'warning' | 'error';\n [key: string]: any;\n};\n\nexport const SmallAlertBox: React.FC<SmallAlertBoxProps> = ({\n className,\n width,\n onClose,\n closable = false,\n closeButtonLabel,\n ...rest\n}) => (\n <BaseAlertBox\n className={classNames(className, {\n 'eds-alert-box--fit-content': width === 'fit-content',\n })}\n {...rest}\n onClose={onClose}\n closable={closable}\n closeButtonLabel={closeButtonLabel}\n size=\"small\"\n />\n);\n"],"names":["iconsMap","success","icon","OutlinedValidationCheckIcon","description","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","_ref","children","className","_ref$closable","closable","_ref$closeButtonLabel","closeButtonLabel","variant","_ref$onClose","onClose","size","title","toastIsBeingRemoved","rest","_objectWithoutPropertiesLoose","_excluded","_React$useState","React","useState","setClosed","Icon","createElement","_extends","classNames","type","onClick","CloseIcon","role","ToastAlertBox","props","ToastContext","createContext","toastReducer","prevToasts","action","payload","concat","map","toast","id","isBeingRemoved","filter","useToast","context","useContext","Error","addToast","ExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","_ref2","_ref2$openLabel","_ref2$closeLabel","ExpandArrow","inline","warnAboutMissingStyles","_ref$successHeading","successHeading","_ref$successMessage","successMessage","textToCopy","buttonRef","useRef","style","current","copy","undefined","target","content","ref","PreformattedText","CopyIcon","width","_ref$delay","delay","_ref$position","position","_React$useReducer","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","removeToast","useCallback","window","clearTimeout","playExitAnimation","removeToastWithAnimationAfterDelay","setTimeout","Math","random","toString","substring","createToast","handleMouseLeave","forEach","contextValue","useMemo","Provider","value","length","slice","toastToShow","toastId","onMouseEnter","Object","values","timeoutId","onMouseLeave","key"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import './index.scss';
|
|
2
|
-
export { BannerAlertBox } from './BannerAlertBox';
|
|
3
|
-
export { ToastAlertBox } from './ToastAlertBox';
|
|
4
|
-
export { SmallAlertBox } from './SmallAlertBox';
|
|
5
|
-
export { ToastProvider, useToast } from './ToastProvider';
|
|
6
|
-
export { CopyableText } from './CopyableText';
|
|
7
|
-
export * from './ExpandableAlertBox';
|
|
1
|
+
import './index.scss';
|
|
2
|
+
export { BannerAlertBox } from './BannerAlertBox';
|
|
3
|
+
export { ToastAlertBox } from './ToastAlertBox';
|
|
4
|
+
export { SmallAlertBox } from './SmallAlertBox';
|
|
5
|
+
export { ToastProvider, useToast } from './ToastProvider';
|
|
6
|
+
export { CopyableText } from './CopyableText';
|
|
7
|
+
export * from './ExpandableAlertBox';
|
package/dist/styles.css
CHANGED
|
@@ -1,97 +1,3 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--eds-alert: 1;
|
|
3
|
-
}
|
|
4
|
-
/* DO NOT CHANGE!*/
|
|
5
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
6
|
-
/* DO NOT CHANGE!*/
|
|
7
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
8
|
-
.eds-expandable-alert-box .eds-alert-box__content {
|
|
9
|
-
width: 100%;
|
|
10
|
-
}
|
|
11
|
-
.eds-expandable-alert-box.eds-alert-box--banner .eds-alert-box__icon {
|
|
12
|
-
margin-top: 0.0625rem;
|
|
13
|
-
}
|
|
14
|
-
@media screen and (min-width: 50rem) {
|
|
15
|
-
.eds-expandable-alert-box.eds-alert-box--banner .eds-alert-box__icon {
|
|
16
|
-
margin-top: -0.375rem;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
.eds-expandable-alert-box.eds-alert-box--small .eds-alert-box__icon {
|
|
20
|
-
margin-top: 0.125rem;
|
|
21
|
-
}
|
|
22
|
-
@media screen and (min-width: 50rem) {
|
|
23
|
-
.eds-expandable-alert-box.eds-alert-box--small .eds-alert-box__icon {
|
|
24
|
-
margin-top: 0.125rem;
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
.eds-expandable-alert-box__title {
|
|
28
|
-
display: flex;
|
|
29
|
-
justify-content: space-between;
|
|
30
|
-
align-items: baseline;
|
|
31
|
-
}
|
|
32
|
-
.eds-expandable-alert-box__button {
|
|
33
|
-
color: inherit;
|
|
34
|
-
background: none;
|
|
35
|
-
border: none;
|
|
36
|
-
cursor: pointer;
|
|
37
|
-
font-family: inherit;
|
|
38
|
-
font-size: inherit;
|
|
39
|
-
line-height: 1.5rem;
|
|
40
|
-
padding: 0 0.25rem;
|
|
41
|
-
flex-shrink: 0;
|
|
42
|
-
}
|
|
43
|
-
.eds-expandable-alert-box__button:focus {
|
|
44
|
-
outline: 2px solid #181c56;
|
|
45
|
-
outline-offset: 0.125rem;
|
|
46
|
-
}
|
|
47
|
-
.eds-expandable-alert-box__button .eds-icon {
|
|
48
|
-
font-size: 1rem;
|
|
49
|
-
padding-left: 0.25rem;
|
|
50
|
-
}
|
|
51
|
-
/* DO NOT CHANGE!*/
|
|
52
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
53
|
-
.copyable-text {
|
|
54
|
-
-webkit-appearance: none;
|
|
55
|
-
-moz-appearance: none;
|
|
56
|
-
appearance: none;
|
|
57
|
-
background: none;
|
|
58
|
-
border: 0;
|
|
59
|
-
border-radius: 0;
|
|
60
|
-
color: inherit;
|
|
61
|
-
cursor: pointer;
|
|
62
|
-
display: block;
|
|
63
|
-
font-size: inherit;
|
|
64
|
-
padding: 0;
|
|
65
|
-
position: relative;
|
|
66
|
-
margin: 0 0 1rem 0;
|
|
67
|
-
text-align: left;
|
|
68
|
-
width: 100%;
|
|
69
|
-
}
|
|
70
|
-
.copyable-text > * {
|
|
71
|
-
margin: 0;
|
|
72
|
-
}
|
|
73
|
-
.copyable-text:focus {
|
|
74
|
-
outline-offset: 0.125rem;
|
|
75
|
-
outline: none;
|
|
76
|
-
box-shadow: 0 0 0 0.125rem #ffffff, 0 0 0 0.25rem #181c56;
|
|
77
|
-
}
|
|
78
|
-
.eds-contrast .copyable-text:focus {
|
|
79
|
-
box-shadow: 0 0 0 0.125rem #181c56, 0 0 0 0.25rem #ffffff;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.copyable-text__icon {
|
|
83
|
-
display: none;
|
|
84
|
-
position: absolute;
|
|
85
|
-
right: 1.5rem;
|
|
86
|
-
top: 1rem;
|
|
87
|
-
bottom: 1rem;
|
|
88
|
-
}
|
|
89
|
-
.copyable-text:hover .copyable-text__icon, .copyable-text:focus .copyable-text__icon {
|
|
90
|
-
display: block;
|
|
91
|
-
color: #181c56;
|
|
92
|
-
}
|
|
93
|
-
/* DO NOT CHANGE!*/
|
|
94
|
-
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
95
1
|
/* DO NOT CHANGE!*/
|
|
96
2
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
97
3
|
.eds-alert-box {
|
|
@@ -284,3 +190,93 @@
|
|
|
284
190
|
transform: translate3d(2000px, 0, 0) scaleX(2);
|
|
285
191
|
}
|
|
286
192
|
}
|
|
193
|
+
/* DO NOT CHANGE!*/
|
|
194
|
+
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
195
|
+
.copyable-text {
|
|
196
|
+
-webkit-appearance: none;
|
|
197
|
+
-moz-appearance: none;
|
|
198
|
+
appearance: none;
|
|
199
|
+
background: none;
|
|
200
|
+
border: 0;
|
|
201
|
+
border-radius: 0;
|
|
202
|
+
color: inherit;
|
|
203
|
+
cursor: pointer;
|
|
204
|
+
display: block;
|
|
205
|
+
font-size: inherit;
|
|
206
|
+
padding: 0;
|
|
207
|
+
position: relative;
|
|
208
|
+
margin: 0 0 1rem 0;
|
|
209
|
+
text-align: left;
|
|
210
|
+
width: 100%;
|
|
211
|
+
}
|
|
212
|
+
.copyable-text > * {
|
|
213
|
+
margin: 0;
|
|
214
|
+
}
|
|
215
|
+
.copyable-text:focus {
|
|
216
|
+
outline-offset: 0.125rem;
|
|
217
|
+
outline: none;
|
|
218
|
+
box-shadow: 0 0 0 0.125rem #ffffff, 0 0 0 0.25rem #181c56;
|
|
219
|
+
}
|
|
220
|
+
.eds-contrast .copyable-text:focus {
|
|
221
|
+
box-shadow: 0 0 0 0.125rem #181c56, 0 0 0 0.25rem #ffffff;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
.copyable-text__icon {
|
|
225
|
+
display: none;
|
|
226
|
+
position: absolute;
|
|
227
|
+
right: 1.5rem;
|
|
228
|
+
top: 1rem;
|
|
229
|
+
bottom: 1rem;
|
|
230
|
+
}
|
|
231
|
+
.copyable-text:hover .copyable-text__icon, .copyable-text:focus .copyable-text__icon {
|
|
232
|
+
display: block;
|
|
233
|
+
color: #181c56;
|
|
234
|
+
}
|
|
235
|
+
/* DO NOT CHANGE!*/
|
|
236
|
+
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
237
|
+
.eds-expandable-alert-box .eds-alert-box__content {
|
|
238
|
+
width: 100%;
|
|
239
|
+
}
|
|
240
|
+
.eds-expandable-alert-box.eds-alert-box--banner .eds-alert-box__icon {
|
|
241
|
+
margin-top: 0.0625rem;
|
|
242
|
+
}
|
|
243
|
+
@media screen and (min-width: 50rem) {
|
|
244
|
+
.eds-expandable-alert-box.eds-alert-box--banner .eds-alert-box__icon {
|
|
245
|
+
margin-top: -0.375rem;
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
.eds-expandable-alert-box.eds-alert-box--small .eds-alert-box__icon {
|
|
249
|
+
margin-top: 0.125rem;
|
|
250
|
+
}
|
|
251
|
+
@media screen and (min-width: 50rem) {
|
|
252
|
+
.eds-expandable-alert-box.eds-alert-box--small .eds-alert-box__icon {
|
|
253
|
+
margin-top: 0.125rem;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
.eds-expandable-alert-box__title {
|
|
257
|
+
display: flex;
|
|
258
|
+
justify-content: space-between;
|
|
259
|
+
align-items: baseline;
|
|
260
|
+
}
|
|
261
|
+
.eds-expandable-alert-box__button {
|
|
262
|
+
color: inherit;
|
|
263
|
+
background: none;
|
|
264
|
+
border: none;
|
|
265
|
+
cursor: pointer;
|
|
266
|
+
font-family: inherit;
|
|
267
|
+
font-size: inherit;
|
|
268
|
+
line-height: 1.5rem;
|
|
269
|
+
padding: 0 0.25rem;
|
|
270
|
+
flex-shrink: 0;
|
|
271
|
+
}
|
|
272
|
+
.eds-expandable-alert-box__button:focus {
|
|
273
|
+
outline: 2px solid #181c56;
|
|
274
|
+
outline-offset: 0.125rem;
|
|
275
|
+
}
|
|
276
|
+
.eds-expandable-alert-box__button .eds-icon {
|
|
277
|
+
font-size: 1rem;
|
|
278
|
+
padding-left: 0.25rem;
|
|
279
|
+
}
|
|
280
|
+
:root {
|
|
281
|
+
--eds-alert: 1;
|
|
282
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur/alert",
|
|
3
|
-
"version": "0.14.
|
|
3
|
+
"version": "0.14.13",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/alert.esm.js",
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
"react-dom": ">=16.8.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@entur/expand": "^3.4.
|
|
31
|
-
"@entur/icons": "^6.
|
|
30
|
+
"@entur/expand": "^3.4.11",
|
|
31
|
+
"@entur/icons": "^6.8.0",
|
|
32
32
|
"@entur/tokens": "^3.10.0",
|
|
33
|
-
"@entur/typography": "^1.8.
|
|
34
|
-
"@entur/utils": "^0.9.
|
|
33
|
+
"@entur/typography": "^1.8.10",
|
|
34
|
+
"@entur/utils": "^0.9.5",
|
|
35
35
|
"classnames": "^2.3.1",
|
|
36
36
|
"copy-text-to-clipboard": "^2.2"
|
|
37
37
|
},
|
|
@@ -39,5 +39,5 @@
|
|
|
39
39
|
"node": "16.17.0",
|
|
40
40
|
"yarn": "1.22.19"
|
|
41
41
|
},
|
|
42
|
-
"gitHead": "
|
|
42
|
+
"gitHead": "9e5cbcf10c3e18dff42f0afb3b4cb40df557c14c"
|
|
43
43
|
}
|