@ansible/ansible-ui-framework 0.0.240 → 0.0.241
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/PageAlertToaster.js +92 -0
- package/cjs/PageFramework.js +2 -1
- package/mjs/PageAlertToaster.d.ts +14 -0
- package/mjs/PageAlertToaster.js +48 -0
- package/mjs/PageFramework.js +2 -1
- package/package.json +1 -1
@@ -0,0 +1,92 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __read = (this && this.__read) || function (o, n) {
|
14
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
15
|
+
if (!m) return o;
|
16
|
+
var i = m.call(o), r, ar = [], e;
|
17
|
+
try {
|
18
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
19
|
+
}
|
20
|
+
catch (error) { e = { error: error }; }
|
21
|
+
finally {
|
22
|
+
try {
|
23
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
24
|
+
}
|
25
|
+
finally { if (e) throw e.error; }
|
26
|
+
}
|
27
|
+
return ar;
|
28
|
+
};
|
29
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
30
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
31
|
+
if (ar || !(i in from)) {
|
32
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
33
|
+
ar[i] = from[i];
|
34
|
+
}
|
35
|
+
}
|
36
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
37
|
+
};
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
39
|
+
exports.PageAlertToasterProvider = exports.usePageAlertToaster = exports.PageAlertToasterContext = void 0;
|
40
|
+
var react_1 = require("react");
|
41
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
42
|
+
var react_core_1 = require("@patternfly/react-core");
|
43
|
+
var react_2 = require("react");
|
44
|
+
exports.PageAlertToasterContext = (0, react_2.createContext)({
|
45
|
+
addAlert: function () { return null; },
|
46
|
+
removeAlert: function () { return null; },
|
47
|
+
replaceAlert: function () { return null; },
|
48
|
+
removeAlerts: function () { return null; },
|
49
|
+
});
|
50
|
+
function usePageAlertToaster() {
|
51
|
+
return (0, react_2.useContext)(exports.PageAlertToasterContext);
|
52
|
+
}
|
53
|
+
exports.usePageAlertToaster = usePageAlertToaster;
|
54
|
+
function PageAlertToasterProvider(props) {
|
55
|
+
var _a = __read((0, react_2.useState)([]), 2), toasterAlerts = _a[0], setToasterAlerts = _a[1];
|
56
|
+
var _b = __read((0, react_2.useState)(function () {
|
57
|
+
function removeAlerts(filter) {
|
58
|
+
setToasterAlerts(function (alerts) { return (filter ? alerts.filter(filter) : []); });
|
59
|
+
}
|
60
|
+
function removeAlert(alert) {
|
61
|
+
setToasterAlerts(function (alerts) { return alerts.filter(function (a) { return a !== alert; }); });
|
62
|
+
}
|
63
|
+
function addAlert(alert) {
|
64
|
+
if (Number.isInteger(alert.timeout)) {
|
65
|
+
setTimeout(function () { return removeAlert(alert); }, alert.timeout);
|
66
|
+
delete alert.timeout;
|
67
|
+
}
|
68
|
+
setToasterAlerts(function (alerts) { return __spreadArray(__spreadArray([], __read(alerts), false), [alert], false); });
|
69
|
+
}
|
70
|
+
function replaceAlert(oldAlert, alert) {
|
71
|
+
setToasterAlerts(function (alerts) {
|
72
|
+
var oldAlertIndex = alerts.findIndex(function (a) { return a === oldAlert; });
|
73
|
+
if (oldAlertIndex !== -1) {
|
74
|
+
if (Number.isInteger(alert.timeout)) {
|
75
|
+
setTimeout(function () { return removeAlert(alert); }, alert.timeout);
|
76
|
+
delete alert.timeout;
|
77
|
+
}
|
78
|
+
var newAlerts = __spreadArray([], __read(alerts), false);
|
79
|
+
newAlerts[oldAlertIndex] = alert;
|
80
|
+
return newAlerts;
|
81
|
+
}
|
82
|
+
return alerts;
|
83
|
+
});
|
84
|
+
}
|
85
|
+
return { addAlert: addAlert, removeAlert: removeAlert, removeAlerts: removeAlerts, replaceAlert: replaceAlert };
|
86
|
+
}), 1), pageAlertToaster = _b[0];
|
87
|
+
return ((0, jsx_runtime_1.jsxs)(exports.PageAlertToasterContext.Provider, __assign({ value: pageAlertToaster }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.AlertGroup, __assign({ isToast: true, isLiveRegion: true }, { children: toasterAlerts.map(function (alertProps, index) {
|
88
|
+
var _a, _b;
|
89
|
+
return ((0, react_1.createElement)(react_core_1.Alert, __assign({}, alertProps, { key: (_b = (_a = alertProps.key) !== null && _a !== void 0 ? _a : alertProps.id) !== null && _b !== void 0 ? _b : index, actionClose: (0, jsx_runtime_1.jsx)(react_core_1.AlertActionCloseButton, { onClose: function () { return pageAlertToaster.removeAlert(alertProps); } }) })));
|
90
|
+
}) })), props.children] })));
|
91
|
+
}
|
92
|
+
exports.PageAlertToasterProvider = PageAlertToasterProvider;
|
package/cjs/PageFramework.js
CHANGED
@@ -2,10 +2,11 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.PageFrameworkProvider = void 0;
|
4
4
|
var jsx_runtime_1 = require("react/jsx-runtime");
|
5
|
+
var PageAlertToaster_1 = require("./PageAlertToaster");
|
5
6
|
var PageDialog_1 = require("./PageDialog");
|
6
7
|
var Settings_1 = require("./Settings");
|
7
8
|
var useFrameworkTranslations_1 = require("./useFrameworkTranslations");
|
8
9
|
function PageFrameworkProvider(props) {
|
9
|
-
return ((0, jsx_runtime_1.jsx)(useFrameworkTranslations_1.FrameworkTranslationsProvider, { children: (0, jsx_runtime_1.jsx)(Settings_1.SettingsProvider, { children: (0, jsx_runtime_1.jsx)(PageDialog_1.PageDialogProvider, { children: props.children }) }) }));
|
10
|
+
return ((0, jsx_runtime_1.jsx)(useFrameworkTranslations_1.FrameworkTranslationsProvider, { children: (0, jsx_runtime_1.jsx)(Settings_1.SettingsProvider, { children: (0, jsx_runtime_1.jsx)(PageDialog_1.PageDialogProvider, { children: (0, jsx_runtime_1.jsx)(PageAlertToaster_1.PageAlertToasterProvider, { children: props.children }) }) }) }));
|
10
11
|
}
|
11
12
|
exports.PageFrameworkProvider = PageFrameworkProvider;
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { AlertProps } from '@patternfly/react-core';
|
2
|
+
import { ReactNode } from 'react';
|
3
|
+
export declare type AlertToasterProps = AlertProps;
|
4
|
+
export interface IPageAlertToaster {
|
5
|
+
addAlert: (alert: AlertToasterProps) => void;
|
6
|
+
removeAlert: (alert: AlertToasterProps) => void;
|
7
|
+
replaceAlert: (oldAlert: AlertToasterProps, newAlert: AlertToasterProps) => void;
|
8
|
+
removeAlerts: (filter?: (alert: AlertToasterProps) => boolean) => void;
|
9
|
+
}
|
10
|
+
export declare const PageAlertToasterContext: import("react").Context<IPageAlertToaster>;
|
11
|
+
export declare function usePageAlertToaster(): IPageAlertToaster;
|
12
|
+
export declare function PageAlertToasterProvider(props: {
|
13
|
+
children: ReactNode;
|
14
|
+
}): JSX.Element;
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import { createElement as _createElement } from "react";
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
3
|
+
import { Alert, AlertActionCloseButton, AlertGroup } from '@patternfly/react-core';
|
4
|
+
import { createContext, useContext, useState } from 'react';
|
5
|
+
export const PageAlertToasterContext = createContext({
|
6
|
+
addAlert: () => null,
|
7
|
+
removeAlert: () => null,
|
8
|
+
replaceAlert: () => null,
|
9
|
+
removeAlerts: () => null,
|
10
|
+
});
|
11
|
+
export function usePageAlertToaster() {
|
12
|
+
return useContext(PageAlertToasterContext);
|
13
|
+
}
|
14
|
+
export function PageAlertToasterProvider(props) {
|
15
|
+
const [toasterAlerts, setToasterAlerts] = useState([]);
|
16
|
+
const [pageAlertToaster] = useState(() => {
|
17
|
+
function removeAlerts(filter) {
|
18
|
+
setToasterAlerts((alerts) => (filter ? alerts.filter(filter) : []));
|
19
|
+
}
|
20
|
+
function removeAlert(alert) {
|
21
|
+
setToasterAlerts((alerts) => alerts.filter((a) => a !== alert));
|
22
|
+
}
|
23
|
+
function addAlert(alert) {
|
24
|
+
if (Number.isInteger(alert.timeout)) {
|
25
|
+
setTimeout(() => removeAlert(alert), alert.timeout);
|
26
|
+
delete alert.timeout;
|
27
|
+
}
|
28
|
+
setToasterAlerts((alerts) => [...alerts, alert]);
|
29
|
+
}
|
30
|
+
function replaceAlert(oldAlert, alert) {
|
31
|
+
setToasterAlerts((alerts) => {
|
32
|
+
const oldAlertIndex = alerts.findIndex((a) => a === oldAlert);
|
33
|
+
if (oldAlertIndex !== -1) {
|
34
|
+
if (Number.isInteger(alert.timeout)) {
|
35
|
+
setTimeout(() => removeAlert(alert), alert.timeout);
|
36
|
+
delete alert.timeout;
|
37
|
+
}
|
38
|
+
const newAlerts = [...alerts];
|
39
|
+
newAlerts[oldAlertIndex] = alert;
|
40
|
+
return newAlerts;
|
41
|
+
}
|
42
|
+
return alerts;
|
43
|
+
});
|
44
|
+
}
|
45
|
+
return { addAlert, removeAlert, removeAlerts, replaceAlert };
|
46
|
+
});
|
47
|
+
return (_jsxs(PageAlertToasterContext.Provider, { value: pageAlertToaster, children: [_jsx(AlertGroup, { isToast: true, isLiveRegion: true, children: toasterAlerts.map((alertProps, index) => (_createElement(Alert, { ...alertProps, key: alertProps.key ?? alertProps.id ?? index, actionClose: _jsx(AlertActionCloseButton, { onClose: () => pageAlertToaster.removeAlert(alertProps) }) }))) }), props.children] }));
|
48
|
+
}
|
package/mjs/PageFramework.js
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
2
|
+
import { PageAlertToasterProvider } from './PageAlertToaster';
|
2
3
|
import { PageDialogProvider } from './PageDialog';
|
3
4
|
import { SettingsProvider } from './Settings';
|
4
5
|
import { FrameworkTranslationsProvider } from './useFrameworkTranslations';
|
5
6
|
export function PageFrameworkProvider(props) {
|
6
|
-
return (_jsx(FrameworkTranslationsProvider, { children: _jsx(SettingsProvider, { children: _jsx(PageDialogProvider, { children: props.children }) }) }));
|
7
|
+
return (_jsx(FrameworkTranslationsProvider, { children: _jsx(SettingsProvider, { children: _jsx(PageDialogProvider, { children: _jsx(PageAlertToasterProvider, { children: props.children }) }) }) }));
|
7
8
|
}
|
package/package.json
CHANGED