@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.
@@ -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;
@@ -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
+ }
@@ -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
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ansible/ansible-ui-framework",
3
3
  "description": "Framework for building consistent responsive web applications using PatternFly.",
4
- "version": "0.0.240",
4
+ "version": "0.0.241",
5
5
  "author": "Red Hat",
6
6
  "license": "MIT",
7
7
  "repository": {