@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.
@@ -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>;
@@ -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 {};
@@ -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 {};
@@ -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>;
@@ -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>;
@@ -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 = React__default["default"].useState(false),
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 React__default["default"].createElement("div", _extends({
93
- className: classNames__default["default"]('eds-alert-box', "eds-alert-box--" + size, "eds-alert-box--" + variant, {
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 && React__default["default"].createElement("button", {
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
- }, React__default["default"].createElement(icons.CloseIcon, null)), React__default["default"].createElement(Icon, {
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
- }), React__default["default"].createElement("div", {
106
- className: classNames__default["default"]('eds-alert-box__content', {
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 && React__default["default"].createElement("div", {
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 React__default["default"].createElement(BaseAlertBox, _extends({}, props, {
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 React__default["default"].createElement(BaseAlertBox, _extends({}, props, {
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 React__default["default"].createElement(BaseAlertBox, _extends({
138
- className: classNames__default["default"](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__*/React__default["default"].createContext(null);
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 = React__default["default"].useReducer(toastReducer, []),
189
+ var _React$useReducer = React.useReducer(toastReducer, []),
196
190
  toasts = _React$useReducer[0],
197
191
  dispatch = _React$useReducer[1];
198
- var _React$useState = React__default["default"].useState(),
192
+ var _React$useState = React.useState(),
199
193
  hoveringId = _React$useState[0],
200
194
  setHovering = _React$useState[1];
201
- var timeoutIdRefs = React__default["default"].useRef({});
202
- var removeToast = React__default["default"].useCallback(function (id) {
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 = React__default["default"].useCallback(function (id) {
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 = React__default["default"].useCallback(function (id, delay) {
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 = React__default["default"].useCallback(function (toast) {
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 = React__default["default"].useMemo(function () {
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 React__default["default"].createElement(ToastContext.Provider, {
258
+ return React.createElement(ToastContext.Provider, {
265
259
  value: contextValue
266
- }, toasts.length > 0 && React__default["default"].createElement("div", {
267
- className: classNames__default["default"]('eds-toast-container', "eds-toast-container--" + position, 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 React__default["default"].createElement(ToastAlertBox, {
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 = React__default["default"].useContext(ToastContext);
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 = React__default["default"].useRef(null);
299
+ var buttonRef = React.useRef(null);
306
300
  var handleClick = function handleClick() {
307
- buttonRef.current && copy__default["default"](textToCopy !== undefined ? textToCopy : children, {
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 React__default["default"].createElement("button", _extends({
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), React__default["default"].createElement(typography.PreformattedText, null, children), React__default["default"].createElement(icons.CopyIcon, {
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 React__default["default"].createElement(ExpandableAlertBox, _extends({
322
+ return React.createElement(ExpandableAlertBox, _extends({
329
323
  size: "small"
330
324
  }, props));
331
325
  };
332
326
  var BannerExpandableAlertBox = function BannerExpandableAlertBox(props) {
333
- return React__default["default"].createElement(ExpandableAlertBox, _extends({
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 = React__default["default"].useState(false),
340
+ var _React$useState = React.useState(false),
347
341
  open = _React$useState[0],
348
342
  setopen = _React$useState[1];
349
- return React__default["default"].createElement(BaseAlertBox, _extends({
343
+ return React.createElement(BaseAlertBox, _extends({
350
344
  size: size,
351
345
  variant: variant,
352
- className: classNames__default["default"]('eds-expandable-alert-box', className),
353
- title: React__default["default"].createElement(ExpandableAlertBoxTitle, {
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), React__default["default"].createElement(_.BaseExpand, {
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 React__default["default"].createElement("div", {
368
+ return React.createElement("div", {
375
369
  className: "eds-expandable-alert-box__title"
376
- }, React__default["default"].createElement("div", null, title), React__default["default"].createElement("button", {
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, React__default["default"].createElement(_.ExpandArrow, {
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"),a=require("@entur/icons"),o=require("copy-text-to-clipboard"),l=require("@entur/typography"),r=require("@entur/expand/");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=i(t),c=i(n),u=i(o);function d(){return d=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var a in n)Object.prototype.hasOwnProperty.call(n,a)&&(e[a]=n[a])}return e},d.apply(this,arguments)}function f(e,t){if(null==e)return{};var n,a,o={},l=Object.keys(e);for(a=0;a<l.length;a++)t.indexOf(n=l[a])>=0||(o[n]=e[n]);return o}var m=["children","className","closable","closeButtonLabel","variant","onClose","size","title","toastIsBeingRemoved"],p={success:{icon:a.OutlinedValidationCheckIcon,description:"Suksessmelding"},info:{icon:a.OutlinedValidationInfoIcon,description:"Infomelding"},warning:{icon:a.OutlinedValidationExclamationIcon,description:"Varselmelding"},error:{icon:a.OutlinedValidationErrorIcon,description:"Feilmelding"}},b=function(e){var t=e.children,n=e.className,o=e.closable,l=void 0!==o&&o,r=e.closeButtonLabel,i=void 0===r?"Lukk":r,u=e.variant,b=e.onClose,v=void 0===b?function(){return{}}:b,x=e.size,E=e.title,y=e.toastIsBeingRemoved,T=f(e,m),g=s.default.useState(!1),_=g[1];if(g[0])return null;var h=p[u].icon;return s.default.createElement("div",d({className:c.default("eds-alert-box","eds-alert-box--"+x,"eds-alert-box--"+u,{"eds-alert-box--toast--exit-animation":y},n)},T),l&&s.default.createElement("button",{"aria-label":i,className:"eds-alert-box__close-button",type:"button",onClick:function(){_(!0),v()}},s.default.createElement(a.CloseIcon,null)),s.default.createElement(h,{role:"img",className:"eds-alert-box__icon","aria-label":p[u].description}),s.default.createElement("div",{className:c.default("eds-alert-box__content",{"eds-alert-box__content--no-title":!E,"eds-alert-box__content--no-children":!t})},E&&s.default.createElement("div",{className:"eds-alert-box__title"},E),t&&t))},v=function(e){return s.default.createElement(b,d({},e,{size:"toast",role:"status"}))},x=["className","width","onClose","closable","closeButtonLabel"],E=s.default.createContext(null),y=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?d({},e,{isBeingRemoved:!0}):e}));case"REMOVE_TOAST":return e.filter((function(e){return e.id!==t.payload}))}},T=function(){var e=s.default.useContext(E);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}},g=["children","successHeading","successMessage","textToCopy","className"],_=["variant","title","children","size","className","openLabel","closeLabel"],h=function(e){var t=e.variant,n=e.title,a=e.children,o=e.size,l=e.className,i=e.openLabel,u=e.closeLabel,m=f(e,_),p=s.default.useState(!1),v=p[0],x=p[1];return s.default.createElement(b,d({size:o,variant:t,className:c.default("eds-expandable-alert-box",l),title:s.default.createElement(N,{open:v,title:n,onClick:function(){return x(!v)},openLabel:i,closeLabel:u})},m),s.default.createElement(r.BaseExpand,{open:v},a))},N=function(e){var t=e.open,n=e.openLabel,a=void 0===n?"Les mer":n,o=e.closeLabel,l=void 0===o?"Lukk":o,i=e.onClick;return s.default.createElement("div",{className:"eds-expandable-alert-box__title"},s.default.createElement("div",null,e.title),s.default.createElement("button",{className:"eds-expandable-alert-box__button",onClick:i,type:"button"},t?l:a,s.default.createElement(r.ExpandArrow,{open:t,inline:!0})))};e.warnAboutMissingStyles("alert","icons"),exports.BannerAlertBox=function(e){return s.default.createElement(b,d({},e,{size:"banner"}))},exports.BannerExpandableAlertBox=function(e){return s.default.createElement(h,d({size:"banner"},e))},exports.CopyableText=function(e){var t=e.children,n=e.successHeading,o=void 0===n?"Kopiert!":n,r=e.successMessage,i=void 0===r?"Innholdet ble kopiert til utklippstavlen.":r,c=e.textToCopy,m=e.className,p=f(e,g),b=T().addToast,v=s.default.useRef(null);return s.default.createElement("button",d({className:"copyable-text "+m,style:d({},p.style),type:"button",onClick:function(){v.current&&u.default(void 0!==c?c:t,{target:v.current})&&b({title:o,content:i})},ref:v,"aria-label":"Kopier innhold"},p),s.default.createElement(l.PreformattedText,null,t),s.default.createElement(a.CopyIcon,{className:"copyable-text__icon"}))},exports.SmallAlertBox=function(e){var t=e.className,n=e.width,a=e.onClose,o=e.closable,l=void 0!==o&&o,r=e.closeButtonLabel,i=f(e,x);return s.default.createElement(b,d({className:c.default(t,{"eds-alert-box--fit-content":"fit-content"===n})},i,{onClose:a,closable:l,closeButtonLabel:r,size:"small"}))},exports.SmallExpandableAlertBox=function(e){return s.default.createElement(h,d({size:"small"},e))},exports.ToastAlertBox=v,exports.ToastProvider=function(e){var t=e.delay,n=void 0===t?6e3:t,a=e.children,o=e.position,l=void 0===o?"bottom-right":o,r=e.className,i=e.style,u=s.default.useReducer(y,[]),f=u[0],m=u[1],p=s.default.useState(),b=p[0],x=p[1],T=s.default.useRef({}),g=s.default.useCallback((function(e){window.clearTimeout(T.current[e]),m({type:"REMOVE_TOAST",payload:e}),delete T.current[e]}),[]),_=s.default.useCallback((function(e){window.clearTimeout(T.current[e+"animation"]),m({type:"PLAY_EXIT_ANIMATION",payload:e}),delete T.current[e+"animation"]}),[]),h=s.default.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=s.default.useCallback((function(e){var t=Math.random().toString().substring(2),a=function(e,t){return"string"==typeof e?{id:t,content:e,variant:"success",isBeingRemoved:!1}:d({id:t,variant:"success",isBeingRemoved:!1},e)}(e,t);m({type:"ADD_TOAST",payload:a}),h(t,n)}),[n,h]),C=function(){x(void 0),f.forEach((function(e){h(e.id,n)}))},B=s.default.useMemo((function(){return{toasts:f,addToast:N,removeToast:g}}),[N,g,f]);return s.default.createElement(E.Provider,{value:B},f.length>0&&s.default.createElement("div",{className:c.default("eds-toast-container","eds-toast-container--"+l,r),style:i},f.slice(0,3).map((function(e){return s.default.createElement(v,{variant:e.variant,title:e.title,onClose:(n=e.id,function(){g(n),C()}),onMouseEnter:(t=e,function(){t.isBeingRemoved||(x(t.id),Object.values(T.current).forEach((function(e){window.clearTimeout(e)})),T.current={})}),onMouseLeave:C,closable:b===e.id,toastIsBeingRemoved:e.isBeingRemoved,key:e.id},e.content);var t,n}))),a)},exports.useToast=T;
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.10",
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.8",
31
- "@entur/icons": "^6.4.2",
30
+ "@entur/expand": "^3.4.11",
31
+ "@entur/icons": "^6.8.0",
32
32
  "@entur/tokens": "^3.10.0",
33
- "@entur/typography": "^1.8.7",
34
- "@entur/utils": "^0.9.4",
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": "0da1a9e2532f60cc1a456a79ad3aa689514ca2c7"
42
+ "gitHead": "9e5cbcf10c3e18dff42f0afb3b4cb40df557c14c"
43
43
  }