@entur/alert 0.8.3 → 0.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/CopyableText.d.ts +13 -0
- package/dist/SmallAlertBox.d.ts +4 -0
- package/dist/alert.cjs.development.js +94 -42
- package/dist/alert.cjs.development.js.map +1 -1
- package/dist/alert.cjs.production.min.js +1 -1
- package/dist/alert.cjs.production.min.js.map +1 -1
- package/dist/alert.esm.js +60 -13
- package/dist/alert.esm.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/styles.css +44 -2
- package/package.json +17 -11
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,32 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [0.10.1](https://bitbucket.org/enturas/design-system/compare/@entur/alert@0.10.0...@entur/alert@0.10.1) (2022-02-09)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @entur/alert
|
|
9
|
+
|
|
10
|
+
# [0.10.0](https://bitbucket.org/enturas/design-system/compare/@entur/alert@0.9.1...@entur/alert@0.10.0) (2022-01-21)
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **copyable text:** add new CopyableText component ([b793604](https://bitbucket.org/enturas/design-system/commits/b7936040b0fe054e061af4d6a0b56279b3e6ed1c))
|
|
15
|
+
|
|
16
|
+
## [0.9.1](https://bitbucket.org/enturas/design-system/compare/@entur/alert@0.9.0...@entur/alert@0.9.1) (2021-11-17)
|
|
17
|
+
|
|
18
|
+
### Bug Fixes
|
|
19
|
+
|
|
20
|
+
- **smallalertbox:** fix closable prop warning ([7808494](https://bitbucket.org/enturas/design-system/commits/780849470227e2e1edf847b3d58c1b81b5b70c1c))
|
|
21
|
+
|
|
22
|
+
# [0.9.0](https://bitbucket.org/enturas/design-system/compare/@entur/alert@0.8.3...@entur/alert@0.9.0) (2021-10-18)
|
|
23
|
+
|
|
24
|
+
### Bug Fixes
|
|
25
|
+
|
|
26
|
+
- **alert box:** adjust close button focus styling ([b163918](https://bitbucket.org/enturas/design-system/commits/b1639187829e5f8d8ae971ea68f80ad0d7115c88))
|
|
27
|
+
|
|
28
|
+
### Features
|
|
29
|
+
|
|
30
|
+
- **smallalertbox:** add closable prop ([f07bba6](https://bitbucket.org/enturas/design-system/commits/f07bba67ecb0829cd13f81ddb425771129efda33))
|
|
31
|
+
|
|
6
32
|
## [0.8.3](https://bitbucket.org/enturas/design-system/compare/@entur/alert@0.8.2...@entur/alert@0.8.3) (2021-09-23)
|
|
7
33
|
|
|
8
34
|
### Bug Fixes
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import './CopyableText.scss';
|
|
3
|
+
export declare type CopyableTextProps = {
|
|
4
|
+
/** Ekstra klassenavn */
|
|
5
|
+
className?: string;
|
|
6
|
+
/** Tekstinnhold som vises og kopieres */
|
|
7
|
+
children: string;
|
|
8
|
+
/** Overskrift i toast-varselet */
|
|
9
|
+
successHeading?: string;
|
|
10
|
+
/** Bekreftelsesmelding i toast-varselet */
|
|
11
|
+
successMessage?: string;
|
|
12
|
+
} & Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'>;
|
|
13
|
+
export declare const CopyableText: ({ children, successHeading, successMessage, className, ...rest }: CopyableTextProps) => JSX.Element;
|
package/dist/SmallAlertBox.d.ts
CHANGED
|
@@ -6,6 +6,10 @@ export declare type SmallAlertBoxProps = {
|
|
|
6
6
|
className?: string;
|
|
7
7
|
/** Skjermleser-label for lukkeknappen, om den vises */
|
|
8
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;
|
|
9
13
|
/** Callback som kalles når man lukker boksen */
|
|
10
14
|
onClose?: () => void;
|
|
11
15
|
/** Tittel på boksen - oppsummer virkning */
|
|
@@ -2,14 +2,20 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
4
|
|
|
5
|
-
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
6
|
-
|
|
7
5
|
var utils = require('@entur/utils');
|
|
8
|
-
var React =
|
|
9
|
-
var classNames =
|
|
6
|
+
var React = require('react');
|
|
7
|
+
var classNames = require('classnames');
|
|
10
8
|
var icons = require('@entur/icons');
|
|
9
|
+
var copy = require('copy-text-to-clipboard');
|
|
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
|
+
|
|
13
19
|
function _extends() {
|
|
14
20
|
_extends = Object.assign || function (target) {
|
|
15
21
|
for (var i = 1; i < arguments.length; i++) {
|
|
@@ -43,6 +49,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
43
49
|
return target;
|
|
44
50
|
}
|
|
45
51
|
|
|
52
|
+
var _excluded$3 = ["children", "className", "closable", "closeButtonLabel", "variant", "onClose", "size", "title"];
|
|
46
53
|
var iconsMap = {
|
|
47
54
|
success: icons.OutlinedValidationCheckIcon,
|
|
48
55
|
info: icons.OutlinedValidationInfoIcon,
|
|
@@ -63,9 +70,9 @@ var BaseAlertBox = function BaseAlertBox(_ref) {
|
|
|
63
70
|
} : _ref$onClose,
|
|
64
71
|
size = _ref.size,
|
|
65
72
|
title = _ref.title,
|
|
66
|
-
rest = _objectWithoutPropertiesLoose(_ref,
|
|
73
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
67
74
|
|
|
68
|
-
var _React$useState =
|
|
75
|
+
var _React$useState = React__default["default"].useState(false),
|
|
69
76
|
isClosed = _React$useState[0],
|
|
70
77
|
setClosed = _React$useState[1];
|
|
71
78
|
|
|
@@ -79,54 +86,61 @@ var BaseAlertBox = function BaseAlertBox(_ref) {
|
|
|
79
86
|
};
|
|
80
87
|
|
|
81
88
|
var Icon = iconsMap[variant];
|
|
82
|
-
return
|
|
83
|
-
className:
|
|
84
|
-
}, rest), closable &&
|
|
89
|
+
return React__default["default"].createElement("div", _extends({
|
|
90
|
+
className: classNames__default["default"]('eds-alert-box', "eds-alert-box--" + size, "eds-alert-box--" + variant, className)
|
|
91
|
+
}, rest), closable && React__default["default"].createElement("button", {
|
|
85
92
|
"aria-label": closeButtonLabel,
|
|
86
93
|
className: "eds-alert-box__close-button",
|
|
87
94
|
type: "button",
|
|
88
95
|
onClick: handleClose
|
|
89
|
-
},
|
|
96
|
+
}, React__default["default"].createElement(icons.CloseIcon, null)), React__default["default"].createElement(Icon, {
|
|
90
97
|
className: "eds-alert-box__icon"
|
|
91
|
-
}),
|
|
92
|
-
className:
|
|
98
|
+
}), React__default["default"].createElement("div", {
|
|
99
|
+
className: classNames__default["default"]('eds-alert-box__content', {
|
|
93
100
|
'eds-alert-box__content--no-title': !title,
|
|
94
101
|
'eds-alert-box__content--no-children': !children
|
|
95
102
|
})
|
|
96
|
-
}, title &&
|
|
103
|
+
}, title && React__default["default"].createElement("div", {
|
|
97
104
|
className: "eds-alert-box__title"
|
|
98
105
|
}, title), children && children));
|
|
99
106
|
};
|
|
100
107
|
|
|
101
108
|
var BannerAlertBox = function BannerAlertBox(props) {
|
|
102
|
-
return
|
|
109
|
+
return React__default["default"].createElement(BaseAlertBox, _extends({}, props, {
|
|
103
110
|
size: "banner"
|
|
104
111
|
}));
|
|
105
112
|
};
|
|
106
113
|
|
|
107
114
|
var ToastAlertBox = function ToastAlertBox(props) {
|
|
108
|
-
return
|
|
115
|
+
return React__default["default"].createElement(BaseAlertBox, _extends({}, props, {
|
|
109
116
|
size: "toast",
|
|
110
117
|
role: "status"
|
|
111
118
|
}));
|
|
112
119
|
};
|
|
113
120
|
|
|
121
|
+
var _excluded$2 = ["className", "width", "onClose", "closable", "closeButtonLabel"];
|
|
114
122
|
var SmallAlertBox = function SmallAlertBox(_ref) {
|
|
115
123
|
var className = _ref.className,
|
|
116
124
|
width = _ref.width,
|
|
117
|
-
|
|
125
|
+
onClose = _ref.onClose,
|
|
126
|
+
_ref$closable = _ref.closable,
|
|
127
|
+
closable = _ref$closable === void 0 ? false : _ref$closable,
|
|
128
|
+
closeButtonLabel = _ref.closeButtonLabel,
|
|
129
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
118
130
|
|
|
119
|
-
return
|
|
120
|
-
className:
|
|
131
|
+
return React__default["default"].createElement(BaseAlertBox, _extends({
|
|
132
|
+
className: classNames__default["default"](className, {
|
|
121
133
|
'eds-alert-box--fit-content': width === 'fit-content'
|
|
122
134
|
})
|
|
123
135
|
}, rest, {
|
|
124
|
-
|
|
136
|
+
onClose: onClose,
|
|
137
|
+
closable: closable,
|
|
138
|
+
closeButtonLabel: closeButtonLabel,
|
|
125
139
|
size: "small"
|
|
126
140
|
}));
|
|
127
141
|
};
|
|
128
142
|
|
|
129
|
-
var ToastContext = /*#__PURE__*/
|
|
143
|
+
var ToastContext = /*#__PURE__*/React__default["default"].createContext(null);
|
|
130
144
|
|
|
131
145
|
var toastReducer = function toastReducer(prevToasts, action) {
|
|
132
146
|
switch (action.type) {
|
|
@@ -168,16 +182,16 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
168
182
|
className = _ref.className,
|
|
169
183
|
style = _ref.style;
|
|
170
184
|
|
|
171
|
-
var _React$useReducer =
|
|
185
|
+
var _React$useReducer = React__default["default"].useReducer(toastReducer, []),
|
|
172
186
|
toasts = _React$useReducer[0],
|
|
173
187
|
dispatch = _React$useReducer[1];
|
|
174
188
|
|
|
175
|
-
var _React$useState =
|
|
189
|
+
var _React$useState = React__default["default"].useState(),
|
|
176
190
|
hoveringId = _React$useState[0],
|
|
177
191
|
setHovering = _React$useState[1];
|
|
178
192
|
|
|
179
|
-
var timeoutIdRefs =
|
|
180
|
-
var removeToast =
|
|
193
|
+
var timeoutIdRefs = React__default["default"].useRef({});
|
|
194
|
+
var removeToast = React__default["default"].useCallback(function (id) {
|
|
181
195
|
window.clearTimeout(timeoutIdRefs.current[id]);
|
|
182
196
|
dispatch({
|
|
183
197
|
type: 'REMOVE_TOAST',
|
|
@@ -185,7 +199,7 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
185
199
|
});
|
|
186
200
|
delete timeoutIdRefs.current[id];
|
|
187
201
|
}, []);
|
|
188
|
-
var addToast =
|
|
202
|
+
var addToast = React__default["default"].useCallback(function (toast) {
|
|
189
203
|
var id = createUniqueId();
|
|
190
204
|
var payload = createToast(toast, id);
|
|
191
205
|
dispatch({
|
|
@@ -223,20 +237,20 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
223
237
|
};
|
|
224
238
|
};
|
|
225
239
|
|
|
226
|
-
var contextValue =
|
|
240
|
+
var contextValue = React__default["default"].useMemo(function () {
|
|
227
241
|
return {
|
|
228
242
|
toasts: toasts,
|
|
229
243
|
addToast: addToast,
|
|
230
244
|
removeToast: removeToast
|
|
231
245
|
};
|
|
232
246
|
}, [addToast, removeToast, toasts]);
|
|
233
|
-
return
|
|
247
|
+
return React__default["default"].createElement(ToastContext.Provider, {
|
|
234
248
|
value: contextValue
|
|
235
|
-
}, toasts.length > 0 &&
|
|
236
|
-
className:
|
|
249
|
+
}, toasts.length > 0 && React__default["default"].createElement("div", {
|
|
250
|
+
className: classNames__default["default"]('eds-toast-container', "eds-toast-container--" + position, className),
|
|
237
251
|
style: style
|
|
238
252
|
}, toasts.slice(0, 3).map(function (toastToShow) {
|
|
239
|
-
return
|
|
253
|
+
return React__default["default"].createElement(ToastAlertBox, {
|
|
240
254
|
variant: toastToShow.variant,
|
|
241
255
|
title: toastToShow.title,
|
|
242
256
|
onClose: handleClose(toastToShow.id),
|
|
@@ -248,7 +262,7 @@ var ToastProvider = function ToastProvider(_ref) {
|
|
|
248
262
|
})), children);
|
|
249
263
|
};
|
|
250
264
|
var useToast = function useToast() {
|
|
251
|
-
var context =
|
|
265
|
+
var context = React__default["default"].useContext(ToastContext);
|
|
252
266
|
|
|
253
267
|
if (!context) {
|
|
254
268
|
throw new Error('You need to wrap your component in a ToastProvider component in ' + 'order to use the useToast hook');
|
|
@@ -260,13 +274,50 @@ var useToast = function useToast() {
|
|
|
260
274
|
};
|
|
261
275
|
};
|
|
262
276
|
|
|
277
|
+
var _excluded$1 = ["children", "successHeading", "successMessage", "className"];
|
|
278
|
+
var CopyableText = function CopyableText(_ref) {
|
|
279
|
+
var children = _ref.children,
|
|
280
|
+
_ref$successHeading = _ref.successHeading,
|
|
281
|
+
successHeading = _ref$successHeading === void 0 ? 'Kopiert!' : _ref$successHeading,
|
|
282
|
+
_ref$successMessage = _ref.successMessage,
|
|
283
|
+
successMessage = _ref$successMessage === void 0 ? 'Innholdet ble kopiert til utklippstavlen.' : _ref$successMessage,
|
|
284
|
+
className = _ref.className,
|
|
285
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
286
|
+
|
|
287
|
+
var _useToast = useToast(),
|
|
288
|
+
addToast = _useToast.addToast;
|
|
289
|
+
|
|
290
|
+
var buttonRef = React__default["default"].useRef(null);
|
|
291
|
+
|
|
292
|
+
var handleClick = function handleClick() {
|
|
293
|
+
buttonRef.current && copy__default["default"](children, {
|
|
294
|
+
target: buttonRef.current
|
|
295
|
+
}) && addToast({
|
|
296
|
+
title: successHeading,
|
|
297
|
+
content: successMessage
|
|
298
|
+
});
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
return React__default["default"].createElement("button", _extends({
|
|
302
|
+
className: 'copyable-text ' + className,
|
|
303
|
+
style: _extends({}, rest.style),
|
|
304
|
+
type: "button",
|
|
305
|
+
onClick: handleClick,
|
|
306
|
+
ref: buttonRef,
|
|
307
|
+
"aria-label": "Kopier innhold"
|
|
308
|
+
}, rest), React__default["default"].createElement(typography.PreformattedText, null, children), React__default["default"].createElement(icons.ReportsIcon, {
|
|
309
|
+
className: "copyable-text__icon"
|
|
310
|
+
}));
|
|
311
|
+
};
|
|
312
|
+
|
|
313
|
+
var _excluded = ["variant", "title", "children", "size", "className", "openLabel", "closeLabel"];
|
|
263
314
|
var SmallExpandableAlertBox = function SmallExpandableAlertBox(props) {
|
|
264
|
-
return
|
|
315
|
+
return React__default["default"].createElement(ExpandableAlertBox, _extends({
|
|
265
316
|
size: "small"
|
|
266
317
|
}, props));
|
|
267
318
|
};
|
|
268
319
|
var BannerExpandableAlertBox = function BannerExpandableAlertBox(props) {
|
|
269
|
-
return
|
|
320
|
+
return React__default["default"].createElement(ExpandableAlertBox, _extends({
|
|
270
321
|
size: "banner"
|
|
271
322
|
}, props));
|
|
272
323
|
};
|
|
@@ -279,17 +330,17 @@ var ExpandableAlertBox = function ExpandableAlertBox(_ref) {
|
|
|
279
330
|
className = _ref.className,
|
|
280
331
|
openLabel = _ref.openLabel,
|
|
281
332
|
closeLabel = _ref.closeLabel,
|
|
282
|
-
rest = _objectWithoutPropertiesLoose(_ref,
|
|
333
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
283
334
|
|
|
284
|
-
var _React$useState =
|
|
335
|
+
var _React$useState = React__default["default"].useState(false),
|
|
285
336
|
open = _React$useState[0],
|
|
286
337
|
setopen = _React$useState[1];
|
|
287
338
|
|
|
288
|
-
return
|
|
339
|
+
return React__default["default"].createElement(BaseAlertBox, _extends({
|
|
289
340
|
size: size,
|
|
290
341
|
variant: variant,
|
|
291
|
-
className:
|
|
292
|
-
title:
|
|
342
|
+
className: classNames__default["default"]('eds-expandable-alert-box', className),
|
|
343
|
+
title: React__default["default"].createElement(ExpandableAlertBoxTitle, {
|
|
293
344
|
open: open,
|
|
294
345
|
title: title,
|
|
295
346
|
onClick: function onClick() {
|
|
@@ -298,7 +349,7 @@ var ExpandableAlertBox = function ExpandableAlertBox(_ref) {
|
|
|
298
349
|
openLabel: openLabel,
|
|
299
350
|
closeLabel: closeLabel
|
|
300
351
|
})
|
|
301
|
-
}, rest),
|
|
352
|
+
}, rest), React__default["default"].createElement(_.BaseExpand, {
|
|
302
353
|
open: open
|
|
303
354
|
}, children));
|
|
304
355
|
};
|
|
@@ -311,13 +362,13 @@ var ExpandableAlertBoxTitle = function ExpandableAlertBoxTitle(_ref2) {
|
|
|
311
362
|
_ref2$closeLabel = _ref2.closeLabel,
|
|
312
363
|
closeLabel = _ref2$closeLabel === void 0 ? 'Lukk' : _ref2$closeLabel,
|
|
313
364
|
onClick = _ref2.onClick;
|
|
314
|
-
return
|
|
365
|
+
return React__default["default"].createElement("div", {
|
|
315
366
|
className: "eds-expandable-alert-box__title"
|
|
316
|
-
},
|
|
367
|
+
}, React__default["default"].createElement("div", null, title), React__default["default"].createElement("button", {
|
|
317
368
|
className: "eds-expandable-alert-box__button",
|
|
318
369
|
onClick: onClick,
|
|
319
370
|
type: "button"
|
|
320
|
-
}, open ? closeLabel : openLabel,
|
|
371
|
+
}, open ? closeLabel : openLabel, React__default["default"].createElement(_.ExpandArrow, {
|
|
321
372
|
open: open,
|
|
322
373
|
inline: true
|
|
323
374
|
})));
|
|
@@ -327,6 +378,7 @@ utils.warnAboutMissingStyles('alert', 'icons');
|
|
|
327
378
|
|
|
328
379
|
exports.BannerAlertBox = BannerAlertBox;
|
|
329
380
|
exports.BannerExpandableAlertBox = BannerExpandableAlertBox;
|
|
381
|
+
exports.CopyableText = CopyableText;
|
|
330
382
|
exports.SmallAlertBox = SmallAlertBox;
|
|
331
383
|
exports.SmallExpandableAlertBox = SmallExpandableAlertBox;
|
|
332
384
|
exports.ToastAlertBox = ToastAlertBox;
|
|
@@ -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/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: OutlinedValidationCheckIcon,\n info: OutlinedValidationInfoIcon,\n warning: OutlinedValidationExclamationIcon,\n error: OutlinedValidationErrorIcon,\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 ...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];\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\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 className=\"eds-alert-box__icon\" />\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 /** 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 ...rest\n}) => (\n <BaseAlertBox\n className={classNames(className, {\n 'eds-alert-box--fit-content': width === 'fit-content',\n })}\n {...rest}\n closable={false}\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};\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\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 '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' };\n } else {\n return { id, variant: 'success', ...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};\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 addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [delay, removeToast],\n );\n\n const handleMouseEnter = (toastId: ToastId) => () => {\n setHovering(toastId);\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 timeoutIdRefs.current[toast.id] = window.setTimeout(\n () => removeToast(toast.id),\n delay,\n );\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.id)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\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> = props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n};\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> = 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 * from './ExpandableAlertBox';\n"],"names":["iconsMap","success","OutlinedValidationCheckIcon","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","rest","React","useState","isClosed","setClosed","handleClose","Icon","classNames","type","onClick","CloseIcon","BannerAlertBox","props","ToastAlertBox","role","SmallAlertBox","width","ToastContext","createContext","toastReducer","prevToasts","action","payload","filter","toast","id","createUniqueId","Math","random","toString","substring","createToast","content","ToastProvider","delay","position","style","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","useRef","removeToast","useCallback","window","clearTimeout","current","addToast","setTimeout","handleMouseEnter","toastId","Object","values","forEach","timeoutId","handleMouseLeave","undefined","contextValue","useMemo","Provider","value","length","slice","map","toastToShow","onMouseEnter","onMouseLeave","key","useToast","context","useContext","Error","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: OutlinedValidationCheckIcon,\n info: OutlinedValidationInfoIcon,\n warning: OutlinedValidationExclamationIcon,\n error: OutlinedValidationErrorIcon,\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 ...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];\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\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 className=\"eds-alert-box__icon\" />\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};\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\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 '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' };\n } else {\n return { id, variant: 'success', ...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};\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 addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [delay, removeToast],\n );\n\n const handleMouseEnter = (toastId: ToastId) => () => {\n setHovering(toastId);\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 timeoutIdRefs.current[toast.id] = window.setTimeout(\n () => removeToast(toast.id),\n delay,\n );\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.id)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\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 { ReportsIcon } 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 /** 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 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(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 <ReportsIcon 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> = props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n};\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> = 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","OutlinedValidationCheckIcon","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","rest","React","useState","isClosed","setClosed","handleClose","Icon","classNames","type","onClick","CloseIcon","BannerAlertBox","props","ToastAlertBox","role","SmallAlertBox","width","ToastContext","createContext","toastReducer","prevToasts","action","payload","filter","toast","id","createUniqueId","Math","random","toString","substring","createToast","content","ToastProvider","delay","position","style","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","useRef","removeToast","useCallback","window","clearTimeout","current","addToast","setTimeout","handleMouseEnter","toastId","Object","values","forEach","timeoutId","handleMouseLeave","undefined","contextValue","useMemo","Provider","value","length","slice","map","toastToShow","onMouseEnter","onMouseLeave","key","useToast","context","useContext","Error","CopyableText","successHeading","successMessage","buttonRef","handleClick","copy","target","ref","PreformattedText","ReportsIcon","SmallExpandableAlertBox","ExpandableAlertBox","BannerExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","ExpandArrow","inline","warnAboutMissingStyles"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@entur/utils"),t=require("react"),n=require("classnames"),a=require("@entur/icons"),l=require("copy-text-to-clipboard"),r=require("@entur/typography"),o=require("@entur/expand/");function s(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=s(t),i=s(n),c=s(l);function d(){return d=Object.assign||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,l={},r=Object.keys(e);for(a=0;a<r.length;a++)t.indexOf(n=r[a])>=0||(l[n]=e[n]);return l}var b=["children","className","closable","closeButtonLabel","variant","onClose","size","title"],m={success:a.OutlinedValidationCheckIcon,info:a.OutlinedValidationInfoIcon,warning:a.OutlinedValidationExclamationIcon,error:a.OutlinedValidationErrorIcon},p=function(e){var t=e.children,n=e.className,l=e.closable,r=void 0!==l&&l,o=e.closeButtonLabel,s=void 0===o?"Lukk":o,c=e.variant,p=e.onClose,v=void 0===p?function(){return{}}:p,x=e.size,E=e.title,y=f(e,b),h=u.default.useState(!1),T=h[1];if(h[0])return null;var _=m[c];return u.default.createElement("div",d({className:i.default("eds-alert-box","eds-alert-box--"+x,"eds-alert-box--"+c,n)},y),r&&u.default.createElement("button",{"aria-label":s,className:"eds-alert-box__close-button",type:"button",onClick:function(){T(!0),v()}},u.default.createElement(a.CloseIcon,null)),u.default.createElement(_,{className:"eds-alert-box__icon"}),u.default.createElement("div",{className:i.default("eds-alert-box__content",{"eds-alert-box__content--no-title":!E,"eds-alert-box__content--no-children":!t})},E&&u.default.createElement("div",{className:"eds-alert-box__title"},E),t&&t))},v=function(e){return u.default.createElement(p,d({},e,{size:"toast",role:"status"}))},x=["className","width","onClose","closable","closeButtonLabel"],E=u.default.createContext(null),y=function(e,t){switch(t.type){case"ADD_TOAST":return[t.payload].concat(e);case"REMOVE_TOAST":return e.filter((function(e){return e.id!==t.payload}))}},h=function(){var e=u.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}},T=["children","successHeading","successMessage","className"],_=["variant","title","children","size","className","openLabel","closeLabel"],N=function(e){var t=e.variant,n=e.title,a=e.children,l=e.size,r=e.className,s=e.openLabel,c=e.closeLabel,b=f(e,_),m=u.default.useState(!1),v=m[0],x=m[1];return u.default.createElement(p,d({size:l,variant:t,className:i.default("eds-expandable-alert-box",r),title:u.default.createElement(w,{open:v,title:n,onClick:function(){return x(!v)},openLabel:s,closeLabel:c})},b),u.default.createElement(o.BaseExpand,{open:v},a))},w=function(e){var t=e.open,n=e.openLabel,a=void 0===n?"Les mer":n,l=e.closeLabel,r=void 0===l?"Lukk":l,s=e.onClick;return u.default.createElement("div",{className:"eds-expandable-alert-box__title"},u.default.createElement("div",null,e.title),u.default.createElement("button",{className:"eds-expandable-alert-box__button",onClick:s,type:"button"},t?r:a,u.default.createElement(o.ExpandArrow,{open:t,inline:!0})))};e.warnAboutMissingStyles("alert","icons"),exports.BannerAlertBox=function(e){return u.default.createElement(p,d({},e,{size:"banner"}))},exports.BannerExpandableAlertBox=function(e){return u.default.createElement(N,d({size:"banner"},e))},exports.CopyableText=function(e){var t=e.children,n=e.successHeading,l=void 0===n?"Kopiert!":n,o=e.successMessage,s=void 0===o?"Innholdet ble kopiert til utklippstavlen.":o,i=e.className,b=f(e,T),m=h().addToast,p=u.default.useRef(null);return u.default.createElement("button",d({className:"copyable-text "+i,style:d({},b.style),type:"button",onClick:function(){p.current&&c.default(t,{target:p.current})&&m({title:l,content:s})},ref:p,"aria-label":"Kopier innhold"},b),u.default.createElement(r.PreformattedText,null,t),u.default.createElement(a.ReportsIcon,{className:"copyable-text__icon"}))},exports.SmallAlertBox=function(e){var t=e.className,n=e.width,a=e.onClose,l=e.closable,r=void 0!==l&&l,o=e.closeButtonLabel,s=f(e,x);return u.default.createElement(p,d({className:i.default(t,{"eds-alert-box--fit-content":"fit-content"===n})},s,{onClose:a,closable:r,closeButtonLabel:o,size:"small"}))},exports.SmallExpandableAlertBox=function(e){return u.default.createElement(N,d({size:"small"},e))},exports.ToastAlertBox=v,exports.ToastProvider=function(e){var t=e.delay,n=void 0===t?6e3:t,a=e.children,l=e.position,r=void 0===l?"bottom-right":l,o=e.className,s=e.style,c=u.default.useReducer(y,[]),f=c[0],b=c[1],m=u.default.useState(),p=m[0],x=m[1],h=u.default.useRef({}),T=u.default.useCallback((function(e){window.clearTimeout(h.current[e]),b({type:"REMOVE_TOAST",payload:e}),delete h.current[e]}),[]),_=u.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"}:d({id:t,variant:"success"},e)}(e,t);b({type:"ADD_TOAST",payload:a}),h.current[t]=window.setTimeout((function(){return T(t)}),n)}),[n,T]),N=function(e){return function(){x(e),Object.values(h.current).forEach((function(e){return window.clearTimeout(e)})),h.current={}}},w=function(){x(void 0),f.forEach((function(e){h.current[e.id]=window.setTimeout((function(){return T(e.id)}),n)}))},C=u.default.useMemo((function(){return{toasts:f,addToast:_,removeToast:T}}),[_,T,f]);return u.default.createElement(E.Provider,{value:C},f.length>0&&u.default.createElement("div",{className:i.default("eds-toast-container","eds-toast-container--"+r,o),style:s},f.slice(0,3).map((function(e){return u.default.createElement(v,{variant:e.variant,title:e.title,onClose:(t=e.id,function(){T(t),w()}),onMouseEnter:N(e.id),onMouseLeave:w,closable:p===e.id,key:e.id},e.content);var t}))),a)},exports.useToast=h;
|
|
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/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: OutlinedValidationCheckIcon,\n info: OutlinedValidationInfoIcon,\n warning: OutlinedValidationExclamationIcon,\n error: OutlinedValidationErrorIcon,\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 ...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];\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\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 className=\"eds-alert-box__icon\" />\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};\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\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 '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' };\n } else {\n return { id, variant: 'success', ...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};\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 addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [delay, removeToast],\n );\n\n const handleMouseEnter = (toastId: ToastId) => () => {\n setHovering(toastId);\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 timeoutIdRefs.current[toast.id] = window.setTimeout(\n () => removeToast(toast.id),\n delay,\n );\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.id)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\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> = props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n};\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> = 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 * 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';\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 /** 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 ...rest\n}) => (\n <BaseAlertBox\n className={classNames(className, {\n 'eds-alert-box--fit-content': width === 'fit-content',\n })}\n {...rest}\n closable={false}\n size=\"small\"\n />\n);\n"],"names":["iconsMap","success","OutlinedValidationCheckIcon","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","rest","React","useState","setClosed","Icon","classNames","type","onClick","CloseIcon","ToastAlertBox","props","role","ToastContext","createContext","toastReducer","prevToasts","action","payload","filter","toast","id","ExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","ExpandArrow","inline","warnAboutMissingStyles","width","delay","position","style","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","useRef","removeToast","useCallback","window","clearTimeout","current","addToast","Math","random","toString","substring","content","createToast","setTimeout","handleMouseEnter","toastId","Object","values","forEach","timeoutId","handleMouseLeave","undefined","contextValue","useMemo","Provider","value","length","slice","map","toastToShow","onMouseEnter","onMouseLeave","key","context","useContext","Error"],"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: OutlinedValidationCheckIcon,\n info: OutlinedValidationInfoIcon,\n warning: OutlinedValidationExclamationIcon,\n error: OutlinedValidationErrorIcon,\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 ...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];\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\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 className=\"eds-alert-box__icon\" />\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};\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\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 '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' };\n } else {\n return { id, variant: 'success', ...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};\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 addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [delay, removeToast],\n );\n\n const handleMouseEnter = (toastId: ToastId) => () => {\n setHovering(toastId);\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 timeoutIdRefs.current[toast.id] = window.setTimeout(\n () => removeToast(toast.id),\n delay,\n );\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.id)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\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> = props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n};\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> = 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 { ReportsIcon } 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 /** 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 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(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 <ReportsIcon 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","OutlinedValidationCheckIcon","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","rest","React","useState","setClosed","Icon","classNames","type","onClick","CloseIcon","ToastAlertBox","props","role","ToastContext","createContext","toastReducer","prevToasts","action","payload","filter","toast","id","useToast","context","useContext","Error","addToast","ExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","ExpandArrow","inline","warnAboutMissingStyles","successHeading","successMessage","buttonRef","useRef","style","current","copy","target","content","ref","PreformattedText","ReportsIcon","width","delay","position","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","removeToast","useCallback","window","clearTimeout","Math","random","toString","substring","createToast","setTimeout","handleMouseEnter","toastId","Object","values","forEach","timeoutId","handleMouseLeave","undefined","contextValue","useMemo","Provider","value","length","slice","map","toastToShow","onMouseEnter","onMouseLeave","key"],"mappings":"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"}
|
package/dist/alert.esm.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { warnAboutMissingStyles } from '@entur/utils';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import classNames from 'classnames';
|
|
4
|
-
import { CloseIcon, OutlinedValidationCheckIcon, OutlinedValidationInfoIcon, OutlinedValidationExclamationIcon, OutlinedValidationErrorIcon } from '@entur/icons';
|
|
4
|
+
import { CloseIcon, OutlinedValidationCheckIcon, OutlinedValidationInfoIcon, OutlinedValidationExclamationIcon, OutlinedValidationErrorIcon, ReportsIcon } from '@entur/icons';
|
|
5
|
+
import copy from 'copy-text-to-clipboard';
|
|
6
|
+
import { PreformattedText } from '@entur/typography';
|
|
5
7
|
import { BaseExpand, ExpandArrow } from '@entur/expand/';
|
|
6
8
|
|
|
7
9
|
function _extends() {
|
|
@@ -37,6 +39,7 @@ function _objectWithoutPropertiesLoose(source, excluded) {
|
|
|
37
39
|
return target;
|
|
38
40
|
}
|
|
39
41
|
|
|
42
|
+
var _excluded$3 = ["children", "className", "closable", "closeButtonLabel", "variant", "onClose", "size", "title"];
|
|
40
43
|
var iconsMap = {
|
|
41
44
|
success: OutlinedValidationCheckIcon,
|
|
42
45
|
info: OutlinedValidationInfoIcon,
|
|
@@ -57,7 +60,7 @@ var BaseAlertBox = function BaseAlertBox(_ref) {
|
|
|
57
60
|
} : _ref$onClose,
|
|
58
61
|
size = _ref.size,
|
|
59
62
|
title = _ref.title,
|
|
60
|
-
rest = _objectWithoutPropertiesLoose(_ref,
|
|
63
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$3);
|
|
61
64
|
|
|
62
65
|
var _React$useState = React.useState(false),
|
|
63
66
|
isClosed = _React$useState[0],
|
|
@@ -73,7 +76,7 @@ var BaseAlertBox = function BaseAlertBox(_ref) {
|
|
|
73
76
|
};
|
|
74
77
|
|
|
75
78
|
var Icon = iconsMap[variant];
|
|
76
|
-
return React.createElement("div",
|
|
79
|
+
return React.createElement("div", _extends({
|
|
77
80
|
className: classNames('eds-alert-box', "eds-alert-box--" + size, "eds-alert-box--" + variant, className)
|
|
78
81
|
}, rest), closable && React.createElement("button", {
|
|
79
82
|
"aria-label": closeButtonLabel,
|
|
@@ -93,29 +96,36 @@ var BaseAlertBox = function BaseAlertBox(_ref) {
|
|
|
93
96
|
};
|
|
94
97
|
|
|
95
98
|
var BannerAlertBox = function BannerAlertBox(props) {
|
|
96
|
-
return React.createElement(BaseAlertBox,
|
|
99
|
+
return React.createElement(BaseAlertBox, _extends({}, props, {
|
|
97
100
|
size: "banner"
|
|
98
101
|
}));
|
|
99
102
|
};
|
|
100
103
|
|
|
101
104
|
var ToastAlertBox = function ToastAlertBox(props) {
|
|
102
|
-
return React.createElement(BaseAlertBox,
|
|
105
|
+
return React.createElement(BaseAlertBox, _extends({}, props, {
|
|
103
106
|
size: "toast",
|
|
104
107
|
role: "status"
|
|
105
108
|
}));
|
|
106
109
|
};
|
|
107
110
|
|
|
111
|
+
var _excluded$2 = ["className", "width", "onClose", "closable", "closeButtonLabel"];
|
|
108
112
|
var SmallAlertBox = function SmallAlertBox(_ref) {
|
|
109
113
|
var className = _ref.className,
|
|
110
114
|
width = _ref.width,
|
|
111
|
-
|
|
115
|
+
onClose = _ref.onClose,
|
|
116
|
+
_ref$closable = _ref.closable,
|
|
117
|
+
closable = _ref$closable === void 0 ? false : _ref$closable,
|
|
118
|
+
closeButtonLabel = _ref.closeButtonLabel,
|
|
119
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$2);
|
|
112
120
|
|
|
113
|
-
return React.createElement(BaseAlertBox,
|
|
121
|
+
return React.createElement(BaseAlertBox, _extends({
|
|
114
122
|
className: classNames(className, {
|
|
115
123
|
'eds-alert-box--fit-content': width === 'fit-content'
|
|
116
124
|
})
|
|
117
125
|
}, rest, {
|
|
118
|
-
|
|
126
|
+
onClose: onClose,
|
|
127
|
+
closable: closable,
|
|
128
|
+
closeButtonLabel: closeButtonLabel,
|
|
119
129
|
size: "small"
|
|
120
130
|
}));
|
|
121
131
|
};
|
|
@@ -254,13 +264,50 @@ var useToast = function useToast() {
|
|
|
254
264
|
};
|
|
255
265
|
};
|
|
256
266
|
|
|
267
|
+
var _excluded$1 = ["children", "successHeading", "successMessage", "className"];
|
|
268
|
+
var CopyableText = function CopyableText(_ref) {
|
|
269
|
+
var children = _ref.children,
|
|
270
|
+
_ref$successHeading = _ref.successHeading,
|
|
271
|
+
successHeading = _ref$successHeading === void 0 ? 'Kopiert!' : _ref$successHeading,
|
|
272
|
+
_ref$successMessage = _ref.successMessage,
|
|
273
|
+
successMessage = _ref$successMessage === void 0 ? 'Innholdet ble kopiert til utklippstavlen.' : _ref$successMessage,
|
|
274
|
+
className = _ref.className,
|
|
275
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded$1);
|
|
276
|
+
|
|
277
|
+
var _useToast = useToast(),
|
|
278
|
+
addToast = _useToast.addToast;
|
|
279
|
+
|
|
280
|
+
var buttonRef = React.useRef(null);
|
|
281
|
+
|
|
282
|
+
var handleClick = function handleClick() {
|
|
283
|
+
buttonRef.current && copy(children, {
|
|
284
|
+
target: buttonRef.current
|
|
285
|
+
}) && addToast({
|
|
286
|
+
title: successHeading,
|
|
287
|
+
content: successMessage
|
|
288
|
+
});
|
|
289
|
+
};
|
|
290
|
+
|
|
291
|
+
return React.createElement("button", _extends({
|
|
292
|
+
className: 'copyable-text ' + className,
|
|
293
|
+
style: _extends({}, rest.style),
|
|
294
|
+
type: "button",
|
|
295
|
+
onClick: handleClick,
|
|
296
|
+
ref: buttonRef,
|
|
297
|
+
"aria-label": "Kopier innhold"
|
|
298
|
+
}, rest), React.createElement(PreformattedText, null, children), React.createElement(ReportsIcon, {
|
|
299
|
+
className: "copyable-text__icon"
|
|
300
|
+
}));
|
|
301
|
+
};
|
|
302
|
+
|
|
303
|
+
var _excluded = ["variant", "title", "children", "size", "className", "openLabel", "closeLabel"];
|
|
257
304
|
var SmallExpandableAlertBox = function SmallExpandableAlertBox(props) {
|
|
258
|
-
return React.createElement(ExpandableAlertBox,
|
|
305
|
+
return React.createElement(ExpandableAlertBox, _extends({
|
|
259
306
|
size: "small"
|
|
260
307
|
}, props));
|
|
261
308
|
};
|
|
262
309
|
var BannerExpandableAlertBox = function BannerExpandableAlertBox(props) {
|
|
263
|
-
return React.createElement(ExpandableAlertBox,
|
|
310
|
+
return React.createElement(ExpandableAlertBox, _extends({
|
|
264
311
|
size: "banner"
|
|
265
312
|
}, props));
|
|
266
313
|
};
|
|
@@ -273,13 +320,13 @@ var ExpandableAlertBox = function ExpandableAlertBox(_ref) {
|
|
|
273
320
|
className = _ref.className,
|
|
274
321
|
openLabel = _ref.openLabel,
|
|
275
322
|
closeLabel = _ref.closeLabel,
|
|
276
|
-
rest = _objectWithoutPropertiesLoose(_ref,
|
|
323
|
+
rest = _objectWithoutPropertiesLoose(_ref, _excluded);
|
|
277
324
|
|
|
278
325
|
var _React$useState = React.useState(false),
|
|
279
326
|
open = _React$useState[0],
|
|
280
327
|
setopen = _React$useState[1];
|
|
281
328
|
|
|
282
|
-
return React.createElement(BaseAlertBox,
|
|
329
|
+
return React.createElement(BaseAlertBox, _extends({
|
|
283
330
|
size: size,
|
|
284
331
|
variant: variant,
|
|
285
332
|
className: classNames('eds-expandable-alert-box', className),
|
|
@@ -319,5 +366,5 @@ var ExpandableAlertBoxTitle = function ExpandableAlertBoxTitle(_ref2) {
|
|
|
319
366
|
|
|
320
367
|
warnAboutMissingStyles('alert', 'icons');
|
|
321
368
|
|
|
322
|
-
export { BannerAlertBox, BannerExpandableAlertBox, SmallAlertBox, SmallExpandableAlertBox, ToastAlertBox, ToastProvider, useToast };
|
|
369
|
+
export { BannerAlertBox, BannerExpandableAlertBox, CopyableText, SmallAlertBox, SmallExpandableAlertBox, ToastAlertBox, ToastProvider, useToast };
|
|
323
370
|
//# sourceMappingURL=alert.esm.js.map
|
package/dist/alert.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alert.esm.js","sources":["../src/BaseAlertBox.tsx","../src/BannerAlertBox.tsx","../src/ToastAlertBox.tsx","../src/SmallAlertBox.tsx","../src/ToastProvider.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: OutlinedValidationCheckIcon,\n info: OutlinedValidationInfoIcon,\n warning: OutlinedValidationExclamationIcon,\n error: OutlinedValidationErrorIcon,\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 ...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];\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\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 className=\"eds-alert-box__icon\" />\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 /** 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 ...rest\n}) => (\n <BaseAlertBox\n className={classNames(className, {\n 'eds-alert-box--fit-content': width === 'fit-content',\n })}\n {...rest}\n closable={false}\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};\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\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 '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' };\n } else {\n return { id, variant: 'success', ...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};\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 addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [delay, removeToast],\n );\n\n const handleMouseEnter = (toastId: ToastId) => () => {\n setHovering(toastId);\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 timeoutIdRefs.current[toast.id] = window.setTimeout(\n () => removeToast(toast.id),\n delay,\n );\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.id)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\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> = props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n};\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> = 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 * from './ExpandableAlertBox';\n"],"names":["iconsMap","success","OutlinedValidationCheckIcon","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","rest","React","useState","isClosed","setClosed","handleClose","Icon","classNames","type","onClick","CloseIcon","BannerAlertBox","props","ToastAlertBox","role","SmallAlertBox","width","ToastContext","createContext","toastReducer","prevToasts","action","payload","filter","toast","id","createUniqueId","Math","random","toString","substring","createToast","content","ToastProvider","delay","position","style","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","useRef","removeToast","useCallback","window","clearTimeout","current","addToast","setTimeout","handleMouseEnter","toastId","Object","values","forEach","timeoutId","handleMouseLeave","undefined","contextValue","useMemo","Provider","value","length","slice","map","toastToShow","onMouseEnter","onMouseLeave","key","useToast","context","useContext","Error","SmallExpandableAlertBox","ExpandableAlertBox","BannerExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","ExpandArrow","inline","warnAboutMissingStyles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"alert.esm.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: OutlinedValidationCheckIcon,\n info: OutlinedValidationInfoIcon,\n warning: OutlinedValidationExclamationIcon,\n error: OutlinedValidationErrorIcon,\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 ...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];\n return (\n <div\n className={classNames(\n 'eds-alert-box',\n `eds-alert-box--${size}`,\n `eds-alert-box--${variant}`,\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 className=\"eds-alert-box__icon\" />\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};\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\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 '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' };\n } else {\n return { id, variant: 'success', ...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};\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 addToast = React.useCallback(\n (toast: AddToastPayload) => {\n const id = createUniqueId();\n const payload = createToast(toast, id);\n dispatch({ type: 'ADD_TOAST', payload });\n timeoutIdRefs.current[id] = window.setTimeout(\n () => removeToast(id),\n delay,\n );\n },\n [delay, removeToast],\n );\n\n const handleMouseEnter = (toastId: ToastId) => () => {\n setHovering(toastId);\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 timeoutIdRefs.current[toast.id] = window.setTimeout(\n () => removeToast(toast.id),\n delay,\n );\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.id)}\n onMouseLeave={handleMouseLeave}\n closable={hoveringId === toastToShow.id}\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 { ReportsIcon } 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 /** 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 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(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 <ReportsIcon 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> = props => {\n return <ExpandableAlertBox size=\"small\" {...props} />;\n};\n\nexport type BannerExpandableAlertBoxProps = ExpandableAlertBoxProps &\n BannerAlertBoxProps;\n\nexport const BannerExpandableAlertBox: React.FC<BannerExpandableAlertBoxProps> = 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","OutlinedValidationCheckIcon","info","OutlinedValidationInfoIcon","warning","OutlinedValidationExclamationIcon","error","OutlinedValidationErrorIcon","BaseAlertBox","children","className","closable","closeButtonLabel","variant","onClose","size","title","rest","React","useState","isClosed","setClosed","handleClose","Icon","classNames","type","onClick","CloseIcon","BannerAlertBox","props","ToastAlertBox","role","SmallAlertBox","width","ToastContext","createContext","toastReducer","prevToasts","action","payload","filter","toast","id","createUniqueId","Math","random","toString","substring","createToast","content","ToastProvider","delay","position","style","useReducer","toasts","dispatch","hoveringId","setHovering","timeoutIdRefs","useRef","removeToast","useCallback","window","clearTimeout","current","addToast","setTimeout","handleMouseEnter","toastId","Object","values","forEach","timeoutId","handleMouseLeave","undefined","contextValue","useMemo","Provider","value","length","slice","map","toastToShow","onMouseEnter","onMouseLeave","key","useToast","context","useContext","Error","CopyableText","successHeading","successMessage","buttonRef","handleClick","copy","target","ref","PreformattedText","ReportsIcon","SmallExpandableAlertBox","ExpandableAlertBox","BannerExpandableAlertBox","openLabel","closeLabel","open","setopen","ExpandableAlertBoxTitle","BaseExpand","ExpandArrow","inline","warnAboutMissingStyles"],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,4 +3,5 @@ export { BannerAlertBox } from './BannerAlertBox';
|
|
|
3
3
|
export { ToastAlertBox } from './ToastAlertBox';
|
|
4
4
|
export { SmallAlertBox } from './SmallAlertBox';
|
|
5
5
|
export { ToastProvider, useToast } from './ToastProvider';
|
|
6
|
+
export { CopyableText } from './CopyableText';
|
|
6
7
|
export * from './ExpandableAlertBox';
|
package/dist/styles.css
CHANGED
|
@@ -2,6 +2,45 @@
|
|
|
2
2
|
--eds-alert: 1;
|
|
3
3
|
}/* DO NOT CHANGE!*/
|
|
4
4
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
5
|
+
.copyable-text {
|
|
6
|
+
appearance: none;
|
|
7
|
+
background: none;
|
|
8
|
+
border: 0;
|
|
9
|
+
border-radius: 0;
|
|
10
|
+
color: inherit;
|
|
11
|
+
cursor: pointer;
|
|
12
|
+
display: block;
|
|
13
|
+
font-size: inherit;
|
|
14
|
+
padding: 0;
|
|
15
|
+
position: relative;
|
|
16
|
+
margin: 0 0 1rem 0;
|
|
17
|
+
text-align: left;
|
|
18
|
+
width: 100%;
|
|
19
|
+
}
|
|
20
|
+
.copyable-text > * {
|
|
21
|
+
margin: 0;
|
|
22
|
+
}
|
|
23
|
+
.copyable-text:focus {
|
|
24
|
+
outline-offset: 0.125rem;
|
|
25
|
+
outline: none;
|
|
26
|
+
box-shadow: 0 0 0 0.125rem #ffffff, 0 0 0 0.25rem #181c56;
|
|
27
|
+
}
|
|
28
|
+
.eds-contrast .copyable-text:focus {
|
|
29
|
+
box-shadow: 0 0 0 0.125rem #181c56, 0 0 0 0.25rem #ffffff;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
.copyable-text__icon {
|
|
33
|
+
display: none;
|
|
34
|
+
position: absolute;
|
|
35
|
+
right: 1.5rem;
|
|
36
|
+
top: 1rem;
|
|
37
|
+
bottom: 1rem;
|
|
38
|
+
}
|
|
39
|
+
.copyable-text:hover .copyable-text__icon, .copyable-text:focus .copyable-text__icon {
|
|
40
|
+
display: block;
|
|
41
|
+
color: #181c56;
|
|
42
|
+
}/* DO NOT CHANGE!*/
|
|
43
|
+
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
5
44
|
/* DO NOT CHANGE!*/
|
|
6
45
|
/* This file is automatically generated from @entur/tokens! Changes will be overwritten. */
|
|
7
46
|
.eds-expandable-alert-box .eds-alert-box__content {
|
|
@@ -151,6 +190,8 @@
|
|
|
151
190
|
color: #181c56;
|
|
152
191
|
cursor: pointer;
|
|
153
192
|
font-size: 1rem;
|
|
193
|
+
height: 1.5rem;
|
|
194
|
+
width: 1.5rem;
|
|
154
195
|
padding: 0;
|
|
155
196
|
position: absolute;
|
|
156
197
|
right: 1rem;
|
|
@@ -158,14 +199,15 @@
|
|
|
158
199
|
}
|
|
159
200
|
.eds-alert-box__close-button:focus {
|
|
160
201
|
outline-offset: 0.125rem;
|
|
161
|
-
outline:
|
|
162
|
-
box-shadow: 0 0 0 0.125rem #ffffff, 0 0 0 0.25rem #181c56;
|
|
202
|
+
outline: 2px solid #181c56;
|
|
163
203
|
}
|
|
164
204
|
@media screen and (min-width: 50rem) {
|
|
165
205
|
.eds-alert-box__close-button {
|
|
166
206
|
font-size: 1.5rem;
|
|
167
207
|
right: 1.5rem;
|
|
168
208
|
top: 1.5rem;
|
|
209
|
+
height: 1.5rem;
|
|
210
|
+
width: 1.5rem;
|
|
169
211
|
}
|
|
170
212
|
.eds-alert-box--toast .eds-alert-box__close-button {
|
|
171
213
|
right: 1rem;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@entur/alert",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.1",
|
|
4
4
|
"license": "EUPL-1.2",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/alert.esm.js",
|
|
@@ -17,23 +17,29 @@
|
|
|
17
17
|
"access": "public"
|
|
18
18
|
},
|
|
19
19
|
"scripts": {
|
|
20
|
-
"start": "
|
|
21
|
-
"build": "
|
|
22
|
-
"test": "
|
|
23
|
-
"lint": "
|
|
20
|
+
"start": "dts watch --noClean",
|
|
21
|
+
"build": "dts build",
|
|
22
|
+
"test": "dts test --env=jsdom",
|
|
23
|
+
"lint": "dts lint"
|
|
24
24
|
},
|
|
25
25
|
"peerDependencies": {
|
|
26
26
|
"react": ">=16.8.0",
|
|
27
27
|
"react-dom": ">=16.8.0"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@entur/expand": "^3.3.
|
|
31
|
-
"@entur/icons": "^3.
|
|
32
|
-
"@entur/
|
|
33
|
-
"
|
|
30
|
+
"@entur/expand": "^3.3.7",
|
|
31
|
+
"@entur/icons": "^3.4.1",
|
|
32
|
+
"@entur/typography": "^1.6.11",
|
|
33
|
+
"@entur/utils": "^0.4.3",
|
|
34
|
+
"classnames": "^2.3.1",
|
|
35
|
+
"copy-text-to-clipboard": "2.2"
|
|
34
36
|
},
|
|
35
37
|
"devDependencies": {
|
|
36
|
-
"@entur/tokens": "^3.
|
|
38
|
+
"@entur/tokens": "^3.3.1"
|
|
37
39
|
},
|
|
38
|
-
"
|
|
40
|
+
"volta": {
|
|
41
|
+
"node": "14.17.0",
|
|
42
|
+
"yarn": "1.18.0"
|
|
43
|
+
},
|
|
44
|
+
"gitHead": "61e643371cfc5653c93160b7c220152e5b2bafeb"
|
|
39
45
|
}
|