@ansible/ansible-ui-framework 0.0.190

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. package/LICENSE +21 -0
  2. package/cjs/framework/BulkActionDialog.js +217 -0
  3. package/cjs/framework/BulkProgressDialog.js +240 -0
  4. package/cjs/framework/FilterDrawer.js +64 -0
  5. package/cjs/framework/PageBody.js +47 -0
  6. package/cjs/framework/PageCatalog.js +178 -0
  7. package/cjs/framework/PageCells.js +141 -0
  8. package/cjs/framework/PageColumnModal.js +130 -0
  9. package/cjs/framework/PageDataList.js +61 -0
  10. package/cjs/framework/PageDialog.js +28 -0
  11. package/cjs/framework/PageForm.js +376 -0
  12. package/cjs/framework/PageFramework.js +11 -0
  13. package/cjs/framework/PageHeader.js +96 -0
  14. package/cjs/framework/PageLayout.js +41 -0
  15. package/cjs/framework/PagePagination.js +28 -0
  16. package/cjs/framework/PageTable.js +205 -0
  17. package/cjs/framework/PageTabs.js +82 -0
  18. package/cjs/framework/PageToolbar.js +209 -0
  19. package/cjs/framework/Settings.js +122 -0
  20. package/cjs/framework/TypedActions.js +303 -0
  21. package/cjs/framework/components/BulkSelector.js +89 -0
  22. package/cjs/framework/components/Collapse.js +22 -0
  23. package/cjs/framework/components/DetailInfo.js +23 -0
  24. package/cjs/framework/components/Details.js +88 -0
  25. package/cjs/framework/components/Dotted.js +19 -0
  26. package/cjs/framework/components/DropdownControlled.js +28 -0
  27. package/cjs/framework/components/ErrorBoundary.js +45 -0
  28. package/cjs/framework/components/Grid.js +64 -0
  29. package/cjs/framework/components/Help.js +24 -0
  30. package/cjs/framework/components/IconWrapper.js +55 -0
  31. package/cjs/framework/components/LoadingPage.js +14 -0
  32. package/cjs/framework/components/Masonry.js +113 -0
  33. package/cjs/framework/components/Scrollable.js +87 -0
  34. package/cjs/framework/components/SingleSelect.js +70 -0
  35. package/cjs/framework/components/patternfly-colors.js +32 -0
  36. package/cjs/framework/components/useBreakPoint.js +145 -0
  37. package/cjs/framework/components/useOpen.js +36 -0
  38. package/cjs/framework/components/useWindowLocation.js +70 -0
  39. package/cjs/framework/index.js +39 -0
  40. package/cjs/framework/useFrameworkTranslations.js +38 -0
  41. package/cjs/framework/useSelectDialog.js +81 -0
  42. package/cjs/framework/useSelectMultipleDialog.js +62 -0
  43. package/cjs/framework/useTableItems.js +485 -0
  44. package/cjs/framework/useView.js +155 -0
  45. package/cjs/framework/utils/compare.js +59 -0
  46. package/cjs/framework/utils/download-file.js +23 -0
  47. package/cjs/framework/utils/random-string.js +17 -0
  48. package/cjs/frontend/controller/access/organizations/Organization.js +2 -0
  49. package/mjs/framework/BulkActionDialog.d.ts +25 -0
  50. package/mjs/framework/BulkActionDialog.js +104 -0
  51. package/mjs/framework/BulkProgressDialog.d.ts +20 -0
  52. package/mjs/framework/BulkProgressDialog.js +131 -0
  53. package/mjs/framework/FilterDrawer.d.ts +8 -0
  54. package/mjs/framework/FilterDrawer.js +24 -0
  55. package/mjs/framework/PageBody.d.ts +4 -0
  56. package/mjs/framework/PageBody.js +29 -0
  57. package/mjs/framework/PageCatalog.d.ts +113 -0
  58. package/mjs/framework/PageCatalog.js +140 -0
  59. package/mjs/framework/PageCells.d.ts +35 -0
  60. package/mjs/framework/PageCells.js +102 -0
  61. package/mjs/framework/PageColumnModal.d.ts +7 -0
  62. package/mjs/framework/PageColumnModal.js +64 -0
  63. package/mjs/framework/PageDataList.d.ts +46 -0
  64. package/mjs/framework/PageDataList.js +45 -0
  65. package/mjs/framework/PageDialog.d.ts +10 -0
  66. package/mjs/framework/PageDialog.js +12 -0
  67. package/mjs/framework/PageForm.d.ts +147 -0
  68. package/mjs/framework/PageForm.js +316 -0
  69. package/mjs/framework/PageFramework.d.ts +4 -0
  70. package/mjs/framework/PageFramework.js +7 -0
  71. package/mjs/framework/PageHeader.d.ts +45 -0
  72. package/mjs/framework/PageHeader.js +80 -0
  73. package/mjs/framework/PageLayout.d.ts +15 -0
  74. package/mjs/framework/PageLayout.js +23 -0
  75. package/mjs/framework/PagePagination.d.ts +10 -0
  76. package/mjs/framework/PagePagination.js +22 -0
  77. package/mjs/framework/PageTable.d.ts +68 -0
  78. package/mjs/framework/PageTable.js +170 -0
  79. package/mjs/framework/PageTabs.d.ts +15 -0
  80. package/mjs/framework/PageTabs.js +45 -0
  81. package/mjs/framework/PageToolbar.d.ts +57 -0
  82. package/mjs/framework/PageToolbar.js +148 -0
  83. package/mjs/framework/Settings.d.ts +19 -0
  84. package/mjs/framework/Settings.js +87 -0
  85. package/mjs/framework/TypedActions.d.ts +80 -0
  86. package/mjs/framework/TypedActions.js +251 -0
  87. package/mjs/framework/components/BulkSelector.d.ts +11 -0
  88. package/mjs/framework/components/BulkSelector.js +56 -0
  89. package/mjs/framework/components/Collapse.d.ts +5 -0
  90. package/mjs/framework/components/Collapse.js +7 -0
  91. package/mjs/framework/components/DetailInfo.d.ts +5 -0
  92. package/mjs/framework/components/DetailInfo.js +8 -0
  93. package/mjs/framework/components/Details.d.ts +38 -0
  94. package/mjs/framework/components/Details.js +68 -0
  95. package/mjs/framework/components/Dotted.d.ts +4 -0
  96. package/mjs/framework/components/Dotted.js +4 -0
  97. package/mjs/framework/components/DropdownControlled.d.ts +4 -0
  98. package/mjs/framework/components/DropdownControlled.js +8 -0
  99. package/mjs/framework/components/ErrorBoundary.d.ts +15 -0
  100. package/mjs/framework/components/ErrorBoundary.js +25 -0
  101. package/mjs/framework/components/Grid.d.ts +6 -0
  102. package/mjs/framework/components/Grid.js +27 -0
  103. package/mjs/framework/components/Help.d.ts +5 -0
  104. package/mjs/framework/components/Help.js +9 -0
  105. package/mjs/framework/components/IconWrapper.d.ts +8 -0
  106. package/mjs/framework/components/IconWrapper.js +40 -0
  107. package/mjs/framework/components/LoadingPage.d.ts +6 -0
  108. package/mjs/framework/components/LoadingPage.js +9 -0
  109. package/mjs/framework/components/Masonry.d.ts +6 -0
  110. package/mjs/framework/components/Masonry.js +69 -0
  111. package/mjs/framework/components/Scrollable.d.ts +7 -0
  112. package/mjs/framework/components/Scrollable.js +60 -0
  113. package/mjs/framework/components/SingleSelect.d.ts +18 -0
  114. package/mjs/framework/components/SingleSelect.js +37 -0
  115. package/mjs/framework/components/patternfly-colors.d.ts +13 -0
  116. package/mjs/framework/components/patternfly-colors.js +28 -0
  117. package/mjs/framework/components/useBreakPoint.d.ts +5 -0
  118. package/mjs/framework/components/useBreakPoint.js +118 -0
  119. package/mjs/framework/components/useOpen.d.ts +4 -0
  120. package/mjs/framework/components/useOpen.js +16 -0
  121. package/mjs/framework/components/useWindowLocation.d.ts +6 -0
  122. package/mjs/framework/components/useWindowLocation.js +48 -0
  123. package/mjs/framework/index.d.ts +23 -0
  124. package/mjs/framework/index.js +23 -0
  125. package/mjs/framework/useFrameworkTranslations.d.ts +17 -0
  126. package/mjs/framework/useFrameworkTranslations.js +22 -0
  127. package/mjs/framework/useSelectDialog.d.ts +30 -0
  128. package/mjs/framework/useSelectDialog.js +49 -0
  129. package/mjs/framework/useSelectMultipleDialog.d.ts +21 -0
  130. package/mjs/framework/useSelectMultipleDialog.js +29 -0
  131. package/mjs/framework/useTableItems.d.ts +76 -0
  132. package/mjs/framework/useTableItems.js +371 -0
  133. package/mjs/framework/useView.d.ts +15 -0
  134. package/mjs/framework/useView.js +108 -0
  135. package/mjs/framework/utils/compare.d.ts +3 -0
  136. package/mjs/framework/utils/compare.js +53 -0
  137. package/mjs/framework/utils/download-file.d.ts +2 -0
  138. package/mjs/framework/utils/download-file.js +18 -0
  139. package/mjs/framework/utils/random-string.d.ts +1 -0
  140. package/mjs/framework/utils/random-string.js +12 -0
  141. package/mjs/frontend/controller/access/organizations/Organization.d.ts +44 -0
  142. package/mjs/frontend/controller/access/organizations/Organization.js +1 -0
  143. package/package.json +39 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2019 Red Hat, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,217 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __read = (this && this.__read) || function (o, n) {
50
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
51
+ if (!m) return o;
52
+ var i = m.call(o), r, ar = [], e;
53
+ try {
54
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
55
+ }
56
+ catch (error) { e = { error: error }; }
57
+ finally {
58
+ try {
59
+ if (r && !r.done && (m = i["return"])) m.call(i);
60
+ }
61
+ finally { if (e) throw e.error; }
62
+ }
63
+ return ar;
64
+ };
65
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
66
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
67
+ if (ar || !(i in from)) {
68
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
69
+ ar[i] = from[i];
70
+ }
71
+ }
72
+ return to.concat(ar || Array.prototype.slice.call(from));
73
+ };
74
+ var __importDefault = (this && this.__importDefault) || function (mod) {
75
+ return (mod && mod.__esModule) ? mod : { "default": mod };
76
+ };
77
+ Object.defineProperty(exports, "__esModule", { value: true });
78
+ exports.BulkActionDialog = void 0;
79
+ var jsx_runtime_1 = require("react/jsx-runtime");
80
+ var react_core_1 = require("@patternfly/react-core");
81
+ var react_icons_1 = require("@patternfly/react-icons");
82
+ var p_limit_1 = __importDefault(require("p-limit"));
83
+ var react_1 = require("react");
84
+ var Collapse_1 = require("./components/Collapse");
85
+ var PageDialog_1 = require("./PageDialog");
86
+ var PageTable_1 = require("./PageTable");
87
+ var useFrameworkTranslations_1 = require("./useFrameworkTranslations");
88
+ var useTableItems_1 = require("./useTableItems");
89
+ function BulkActionDialog(props) {
90
+ var _a, _b, _c, _d, _e;
91
+ var _f = __read((0, PageDialog_1.usePageDialog)(), 2), _ = _f[0], setDialog = _f[1];
92
+ var _g = __read((0, useFrameworkTranslations_1.useFrameworkTranslations)(), 1), translations = _g[0];
93
+ var _h = __read((0, react_1.useState)(false), 2), isSubmitting = _h[0], setSubmitting = _h[1];
94
+ var _j = __read((0, react_1.useState)(false), 2), isSubmited = _j[0], setSubmited = _j[1];
95
+ var _k = __read((0, react_1.useState)(0), 2), progress = _k[0], setProgress = _k[1];
96
+ var _l = __read((0, react_1.useState)(''), 2), error = _l[0], setError = _l[1];
97
+ var _m = __read((0, react_1.useState)(), 2), statuses = _m[0], setStatuses = _m[1];
98
+ var onClose = (0, react_1.useCallback)(function () {
99
+ var _a;
100
+ (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props, props.items.filter(function (item) { return (statuses === null || statuses === void 0 ? void 0 : statuses[props.keyFn(item)]) === null; }));
101
+ setDialog(undefined);
102
+ }, [props, setDialog, statuses]);
103
+ var onConfirm = function () {
104
+ function handleConfirm() {
105
+ return __awaiter(this, void 0, void 0, function () {
106
+ var limit, progress;
107
+ var _this = this;
108
+ return __generator(this, function (_a) {
109
+ switch (_a.label) {
110
+ case 0:
111
+ limit = (0, p_limit_1.default)(5);
112
+ setSubmitting(true);
113
+ progress = 0;
114
+ return [4 /*yield*/, Promise.all(props.items.map(function (item) {
115
+ return limit(function () { return __awaiter(_this, void 0, void 0, function () {
116
+ var key, err_1, message_1;
117
+ return __generator(this, function (_a) {
118
+ switch (_a.label) {
119
+ case 0:
120
+ key = props.keyFn(item);
121
+ _a.label = 1;
122
+ case 1:
123
+ _a.trys.push([1, 3, 4, 5]);
124
+ return [4 /*yield*/, props.action(item)];
125
+ case 2:
126
+ _a.sent();
127
+ setStatuses(function (statuses) {
128
+ var _a;
129
+ return (__assign(__assign({}, (statuses !== null && statuses !== void 0 ? statuses : {})), (_a = {}, _a[key] = null, _a)));
130
+ });
131
+ return [3 /*break*/, 5];
132
+ case 3:
133
+ err_1 = _a.sent();
134
+ if (err_1 instanceof Error) {
135
+ message_1 = err_1.message;
136
+ setStatuses(function (statuses) {
137
+ var _a;
138
+ return (__assign(__assign({}, (statuses !== null && statuses !== void 0 ? statuses : {})), (_a = {}, _a[key] = message_1, _a)));
139
+ });
140
+ }
141
+ else {
142
+ setStatuses(function (statuses) {
143
+ var _a;
144
+ return (__assign(__assign({}, (statuses !== null && statuses !== void 0 ? statuses : {})), (_a = {}, _a[key] = "Unknown error", _a)));
145
+ });
146
+ }
147
+ setError(props.error);
148
+ return [3 /*break*/, 5];
149
+ case 4:
150
+ setProgress(++progress);
151
+ return [7 /*endfinally*/];
152
+ case 5: return [2 /*return*/];
153
+ }
154
+ });
155
+ }); });
156
+ }))];
157
+ case 1:
158
+ _a.sent();
159
+ setSubmitting(false);
160
+ setSubmited(true);
161
+ return [2 /*return*/];
162
+ }
163
+ });
164
+ });
165
+ }
166
+ void handleConfirm();
167
+ };
168
+ var _o = (0, useTableItems_1.usePaged)(props.items), paged = _o.paged, page = _o.page, perPage = _o.perPage, setPage = _o.setPage, setPerPage = _o.setPerPage;
169
+ var _p = __read((0, react_1.useState)(!props.confirmText), 2), confirmed = _p[0], setConfirmed = _p[1];
170
+ return ((0, jsx_runtime_1.jsx)(react_core_1.Modal, __assign({ titleIconVariant: props.isDanger ? 'warning' : undefined, title: props.title, variant: react_core_1.ModalVariant.medium, isOpen: true, onClose: onClose, actions: !isSubmited
171
+ ? [
172
+ (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: props.isDanger ? 'danger' : 'primary', onClick: onConfirm, isDisabled: !confirmed || isSubmitting || isSubmited, isLoading: isSubmitting }, { children: isSubmitting
173
+ ? (_a = props.submitting) !== null && _a !== void 0 ? _a : translations.submittingText
174
+ : (_b = props.submitText) !== null && _b !== void 0 ? _b : translations.submitText }), "submit"),
175
+ (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "link", onClick: onClose }, { children: (_c = props.cancelText) !== null && _c !== void 0 ? _c : translations.cancelText }), "cancel"),
176
+ ]
177
+ : [
178
+ (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "secondary", onClick: onClose }, { children: (_d = props.closeText) !== null && _d !== void 0 ? _d : translations.closeText }), "close"),
179
+ ], description: (0, jsx_runtime_1.jsx)(Collapse_1.Collapse, __assign({ open: !isSubmitting && !isSubmited }, { children: props.prompt })), hasNoBodyWrapper: true }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.ModalBoxBody, __assign({ style: { paddingLeft: 0, paddingRight: 0 } }, { children: [(0, jsx_runtime_1.jsx)(Collapse_1.Collapse, __assign({ open: isSubmitting || isSubmited }, { children: (0, jsx_runtime_1.jsx)(react_core_1.ModalBoxBody, __assign({ style: { paddingTop: 0 } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Progress, { value: (progress / props.items.length) * 100, title: error
180
+ ? props.error
181
+ : progress === props.items.length
182
+ ? (_e = props.successText) !== null && _e !== void 0 ? _e : translations.successText
183
+ : props.submittingTitle, size: react_core_1.ProgressSize.lg, variant: error
184
+ ? react_core_1.ProgressVariant.danger
185
+ : progress === props.items.length
186
+ ? react_core_1.ProgressVariant.success
187
+ : undefined, measureLocation: error && progress === props.items.length ? react_core_1.ProgressMeasureLocation.none : undefined }) })) })), (0, jsx_runtime_1.jsx)("div", __assign({ style: {
188
+ display: 'flex',
189
+ flexDirection: 'column',
190
+ maxHeight: 500,
191
+ overflow: 'hidden',
192
+ borderTop: 'thin solid var(--pf-global--BorderColor--100)',
193
+ } }, { children: !isSubmitting && !isSubmited ? ((0, jsx_runtime_1.jsx)(PageTable_1.PageTable, { pageItems: paged, itemCount: props.items.length, tableColumns: props.columns, keyFn: props.keyFn, page: page, perPage: perPage, setPage: setPage, setPerPage: setPerPage, compact: true, errorStateTitle: "Error", emptyStateTitle: "No items" }, "items")) : ((0, jsx_runtime_1.jsx)(PageTable_1.PageTable, { pageItems: __spreadArray([], __read(paged), false), itemCount: props.items.length, tableColumns: __spreadArray(__spreadArray([], __read(props.errorColumns), false), [
194
+ {
195
+ header: 'Status',
196
+ cell: function (item) {
197
+ var _a, _b;
198
+ var key = props.keyFn(item);
199
+ var status = statuses === null || statuses === void 0 ? void 0 : statuses[key];
200
+ if (status === undefined) {
201
+ return ((0, jsx_runtime_1.jsxs)("span", __assign({ style: {
202
+ color: 'var(--pf-global--info-color--100)',
203
+ } }, { children: [(0, jsx_runtime_1.jsx)(react_icons_1.PendingIcon, {}), "\u00A0 ", (_a = props.pendingText) !== null && _a !== void 0 ? _a : translations.pendingText, ' ', JSON.stringify(status)] })));
204
+ }
205
+ if (status === null) {
206
+ return ((0, jsx_runtime_1.jsxs)("span", __assign({ style: {
207
+ color: 'var(--pf-global--success-color--100)',
208
+ } }, { children: [(0, jsx_runtime_1.jsx)(react_icons_1.CheckCircleIcon, {}), "\u00A0", ' ', (_b = props.successText) !== null && _b !== void 0 ? _b : translations.successText] })));
209
+ }
210
+ return ((0, jsx_runtime_1.jsxs)("span", __assign({ style: {
211
+ color: 'var(--pf-global--danger-color--100)',
212
+ } }, { children: [(0, jsx_runtime_1.jsx)(react_icons_1.ExclamationCircleIcon, {}), "\u00A0 ", statuses === null || statuses === void 0 ? void 0 : statuses[key]] })));
213
+ },
214
+ },
215
+ ], false), keyFn: props.keyFn, page: page, perPage: perPage, setPage: setPage, setPerPage: setPerPage, compact: true, errorStateTitle: "", emptyStateTitle: "No items" }, "status")) })), props.confirmText && ((0, jsx_runtime_1.jsx)(Collapse_1.Collapse, __assign({ open: !isSubmitting && !isSubmited }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { marginLeft: 32, marginTop: 0, marginBottom: 8 } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Checkbox, { id: "confirm", label: props.confirmText, isChecked: confirmed, onChange: setConfirmed }) })) })))] })) })));
216
+ }
217
+ exports.BulkActionDialog = BulkActionDialog;
@@ -0,0 +1,240 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ var __generator = (this && this.__generator) || function (thisArg, body) {
23
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
+ function verb(n) { return function (v) { return step([n, v]); }; }
26
+ function step(op) {
27
+ if (f) throw new TypeError("Generator is already executing.");
28
+ while (_) try {
29
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
+ if (y = 0, t) op = [op[0] & 2, t.value];
31
+ switch (op[0]) {
32
+ case 0: case 1: t = op; break;
33
+ case 4: _.label++; return { value: op[1], done: false };
34
+ case 5: _.label++; y = op[1]; op = [0]; continue;
35
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
+ default:
37
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
+ if (t[2]) _.ops.pop();
42
+ _.trys.pop(); continue;
43
+ }
44
+ op = body.call(thisArg, _);
45
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
+ }
48
+ };
49
+ var __read = (this && this.__read) || function (o, n) {
50
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
51
+ if (!m) return o;
52
+ var i = m.call(o), r, ar = [], e;
53
+ try {
54
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
55
+ }
56
+ catch (error) { e = { error: error }; }
57
+ finally {
58
+ try {
59
+ if (r && !r.done && (m = i["return"])) m.call(i);
60
+ }
61
+ finally { if (e) throw e.error; }
62
+ }
63
+ return ar;
64
+ };
65
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
66
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
67
+ if (ar || !(i in from)) {
68
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
69
+ ar[i] = from[i];
70
+ }
71
+ }
72
+ return to.concat(ar || Array.prototype.slice.call(from));
73
+ };
74
+ var __importDefault = (this && this.__importDefault) || function (mod) {
75
+ return (mod && mod.__esModule) ? mod : { "default": mod };
76
+ };
77
+ Object.defineProperty(exports, "__esModule", { value: true });
78
+ exports.useBulkProgressDialog = exports.BulkProgressDialog = void 0;
79
+ var jsx_runtime_1 = require("react/jsx-runtime");
80
+ var react_core_1 = require("@patternfly/react-core");
81
+ var react_icons_1 = require("@patternfly/react-icons");
82
+ var p_limit_1 = __importDefault(require("p-limit"));
83
+ var react_1 = require("react");
84
+ var PageDialog_1 = require("./PageDialog");
85
+ var PageTable_1 = require("./PageTable");
86
+ var useFrameworkTranslations_1 = require("./useFrameworkTranslations");
87
+ var useTableItems_1 = require("./useTableItems");
88
+ function BulkProgressDialog(props) {
89
+ var title = props.title, keyFn = props.keyFn, items = props.items, columns = props.columns, actionFn = props.actionFn, onClose = props.onClose, processingText = props.processingText, errorText = props.errorText, itemPendingText = props.itemPendingText, itemSuccessText = props.itemSuccessText, successText = props.successText, cancelText = props.cancelText, closeText = props.closeText, isDanger = props.isDanger;
90
+ var _a = __read((0, useFrameworkTranslations_1.useFrameworkTranslations)(), 1), translations = _a[0];
91
+ var _b = __read((0, react_1.useState)(true), 2), isProcessing = _b[0], setProcessing = _b[1];
92
+ var _c = __read((0, react_1.useState)(0), 2), progress = _c[0], setProgress = _c[1];
93
+ var _d = __read((0, react_1.useState)(''), 2), error = _d[0], setError = _d[1];
94
+ var _e = __read((0, react_1.useState)(), 2), statuses = _e[0], setStatuses = _e[1];
95
+ var _f = __read((0, react_1.useState)(function () { return new AbortController(); }), 1), abortController = _f[0];
96
+ var onCancelClicked = (0, react_1.useCallback)(function () {
97
+ abortController.abort();
98
+ setProcessing(false);
99
+ }, [abortController]);
100
+ var onCloseClicked = (0, react_1.useCallback)(function () {
101
+ onClose === null || onClose === void 0 ? void 0 : onClose(items.filter(function (item) { return (statuses === null || statuses === void 0 ? void 0 : statuses[keyFn(item)]) === null; }));
102
+ }, [items, keyFn, onClose, statuses]);
103
+ (0, react_1.useEffect)(function () {
104
+ function process() {
105
+ return __awaiter(this, void 0, void 0, function () {
106
+ var limit, progress;
107
+ var _this = this;
108
+ return __generator(this, function (_a) {
109
+ switch (_a.label) {
110
+ case 0:
111
+ limit = (0, p_limit_1.default)(5);
112
+ progress = 0;
113
+ return [4 /*yield*/, Promise.all(items.map(function (item) {
114
+ return limit(function () { return __awaiter(_this, void 0, void 0, function () {
115
+ var key, err_1, message_1;
116
+ return __generator(this, function (_a) {
117
+ switch (_a.label) {
118
+ case 0:
119
+ if (abortController.signal.aborted)
120
+ return [2 /*return*/];
121
+ key = keyFn(item);
122
+ _a.label = 1;
123
+ case 1:
124
+ _a.trys.push([1, 3, 4, 5]);
125
+ return [4 /*yield*/, actionFn(item, abortController.signal)];
126
+ case 2:
127
+ _a.sent();
128
+ if (!abortController.signal.aborted) {
129
+ setStatuses(function (statuses) {
130
+ var _a;
131
+ return (__assign(__assign({}, (statuses !== null && statuses !== void 0 ? statuses : {})), (_a = {}, _a[key] = null, _a)));
132
+ });
133
+ }
134
+ return [3 /*break*/, 5];
135
+ case 3:
136
+ err_1 = _a.sent();
137
+ if (!abortController.signal.aborted) {
138
+ if (err_1 instanceof Error) {
139
+ message_1 = err_1.message;
140
+ setStatuses(function (statuses) {
141
+ var _a;
142
+ return (__assign(__assign({}, (statuses !== null && statuses !== void 0 ? statuses : {})), (_a = {}, _a[key] = message_1, _a)));
143
+ });
144
+ }
145
+ else {
146
+ setStatuses(function (statuses) {
147
+ var _a;
148
+ return (__assign(__assign({}, (statuses !== null && statuses !== void 0 ? statuses : {})), (_a = {}, _a[key] = "Unknown error", _a)));
149
+ });
150
+ }
151
+ setError(errorText !== null && errorText !== void 0 ? errorText : translations.errorText);
152
+ }
153
+ return [3 /*break*/, 5];
154
+ case 4:
155
+ if (!abortController.signal.aborted) {
156
+ setProgress(++progress);
157
+ }
158
+ return [7 /*endfinally*/];
159
+ case 5: return [2 /*return*/];
160
+ }
161
+ });
162
+ }); });
163
+ }))];
164
+ case 1:
165
+ _a.sent();
166
+ if (!abortController.signal.aborted) {
167
+ setProcessing(false);
168
+ }
169
+ return [2 /*return*/];
170
+ }
171
+ });
172
+ });
173
+ }
174
+ void process();
175
+ }, [abortController, actionFn, errorText, items, keyFn, translations.errorText]);
176
+ var _g = (0, useTableItems_1.usePaged)(items), paged = _g.paged, page = _g.page, perPage = _g.perPage, setPage = _g.setPage, setPerPage = _g.setPerPage;
177
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.Modal, __assign({ titleIconVariant: isDanger ? 'warning' : undefined, title: title, variant: react_core_1.ModalVariant.medium, isOpen: true, onClose: function () {
178
+ onCancelClicked();
179
+ onCloseClicked();
180
+ }, actions: isProcessing
181
+ ? [
182
+ (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "link", onClick: onCancelClicked }, { children: cancelText !== null && cancelText !== void 0 ? cancelText : translations.cancelText }), "cancel"),
183
+ ]
184
+ : [
185
+ (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "secondary", onClick: onCloseClicked }, { children: closeText !== null && closeText !== void 0 ? closeText : translations.closeText }), "close"),
186
+ ], hasNoBodyWrapper: true }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.ModalBoxBody, { children: (0, jsx_runtime_1.jsx)(react_core_1.Progress, { value: (progress / items.length) * 100, title: abortController.signal.aborted
187
+ ? 'Cancelled'
188
+ : error
189
+ ? errorText !== null && errorText !== void 0 ? errorText : translations.errorText
190
+ : progress === items.length
191
+ ? successText !== null && successText !== void 0 ? successText : translations.successText
192
+ : processingText !== null && processingText !== void 0 ? processingText : translations.processingText, size: react_core_1.ProgressSize.lg, variant: error
193
+ ? react_core_1.ProgressVariant.danger
194
+ : progress === items.length
195
+ ? react_core_1.ProgressVariant.success
196
+ : undefined }) }), (0, jsx_runtime_1.jsx)("div", __assign({ style: {
197
+ display: 'flex',
198
+ flexDirection: 'column',
199
+ maxHeight: 560,
200
+ overflow: 'hidden',
201
+ paddingTop: 16,
202
+ } }, { children: (0, jsx_runtime_1.jsx)(PageTable_1.PageTable, { pageItems: __spreadArray([], __read(paged), false), itemCount: items.length, tableColumns: __spreadArray(__spreadArray([], __read(columns), false), [
203
+ {
204
+ header: 'Status',
205
+ cell: function (item) {
206
+ var key = keyFn(item);
207
+ var status = statuses === null || statuses === void 0 ? void 0 : statuses[key];
208
+ if (status === undefined) {
209
+ return ((0, jsx_runtime_1.jsxs)("span", __assign({ style: { color: 'var(--pf-global--info-color--100)' } }, { children: [(0, jsx_runtime_1.jsx)(react_icons_1.PendingIcon, {}), "\u00A0 ", itemPendingText !== null && itemPendingText !== void 0 ? itemPendingText : translations.pendingText, ' ', JSON.stringify(status)] })));
210
+ }
211
+ if (status === null) {
212
+ return ((0, jsx_runtime_1.jsxs)("span", __assign({ style: {
213
+ color: 'var(--pf-global--success-color--100)',
214
+ } }, { children: [(0, jsx_runtime_1.jsx)(react_icons_1.CheckCircleIcon, {}), "\u00A0 ", itemSuccessText !== null && itemSuccessText !== void 0 ? itemSuccessText : translations.successText] })));
215
+ }
216
+ return ((0, jsx_runtime_1.jsxs)("span", __assign({ style: { color: 'var(--pf-global--danger-color--100)' } }, { children: [(0, jsx_runtime_1.jsx)(react_icons_1.ExclamationCircleIcon, {}), "\u00A0 ", statuses === null || statuses === void 0 ? void 0 : statuses[key]] })));
217
+ },
218
+ },
219
+ ], false), keyFn: keyFn, page: page, perPage: perPage, setPage: setPage, setPerPage: setPerPage, compact: true, errorStateTitle: "", emptyStateTitle: "No items" }, "status") }))] })));
220
+ }
221
+ exports.BulkProgressDialog = BulkProgressDialog;
222
+ function useBulkProgressDialog() {
223
+ var _a = __read((0, PageDialog_1.usePageDialog)(), 2), _ = _a[0], setDialog = _a[1];
224
+ var _b = __read((0, react_1.useState)(), 2), props = _b[0], setProps = _b[1];
225
+ (0, react_1.useEffect)(function () {
226
+ if (props) {
227
+ var onCloseHandler = function (items) {
228
+ var _a;
229
+ setProps(undefined);
230
+ (_a = props.onClose) === null || _a === void 0 ? void 0 : _a.call(props, items);
231
+ };
232
+ setDialog((0, jsx_runtime_1.jsx)(BulkProgressDialog, __assign({}, props, { onClose: onCloseHandler })));
233
+ }
234
+ else {
235
+ setDialog(undefined);
236
+ }
237
+ }, [props, setDialog]);
238
+ return setProps;
239
+ }
240
+ exports.useBulkProgressDialog = useBulkProgressDialog;
@@ -0,0 +1,64 @@
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.FilterDrawer = void 0;
40
+ var jsx_runtime_1 = require("react/jsx-runtime");
41
+ /* eslint-disable @typescript-eslint/no-non-null-assertion */
42
+ /* eslint-disable @typescript-eslint/no-empty-function */
43
+ var react_core_1 = require("@patternfly/react-core");
44
+ var react_1 = require("react");
45
+ function FilterDrawer(props) {
46
+ var t = props.t;
47
+ t = t ? t : function (t) { return t; };
48
+ var filters = props.filters, filterState = props.filterState, setFilterValues = props.setFilterValues;
49
+ var toggleFilterValue = (0, react_1.useCallback)(function (filter, filterValues, option) {
50
+ if (filterValues === null || filterValues === void 0 ? void 0 : filterValues.includes(option)) {
51
+ setFilterValues(filter, filterValues.filter(function (o) { return o !== option; }));
52
+ }
53
+ else {
54
+ setFilterValues(filter, __spreadArray(__spreadArray([], __read((filterValues !== null && filterValues !== void 0 ? filterValues : [])), false), [option], false));
55
+ }
56
+ }, [setFilterValues]);
57
+ if (!filters)
58
+ return (0, jsx_runtime_1.jsx)(react_1.Fragment, {});
59
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DrawerPanelContent, __assign({ minSize: "250px", defaultSize: "250px", maxSize: "250px" }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.DrawerPanelBody, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Title, __assign({ headingLevel: "h2", style: { paddingBottom: 24 } }, { children: t('Filters') })), filters === null || filters === void 0 ? void 0 : filters.map(function (filter) {
60
+ var filterValues = filterState[filter.label];
61
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DrawerSection, __assign({ style: { paddingBottom: 32 } }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Stack, __assign({ hasGutter: true }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Title, __assign({ headingLevel: "h4" }, { children: filter.label })), filter.options.map(function (option) { return ((0, jsx_runtime_1.jsx)(react_core_1.Checkbox, { id: option.label, isChecked: filterValues === null || filterValues === void 0 ? void 0 : filterValues.includes(option.value), onChange: function () { return toggleFilterValue(filter, filterValues, option.value); }, label: option.label }, option.label)); })] })) }), filter.label));
62
+ })] }) })));
63
+ }
64
+ exports.FilterDrawer = FilterDrawer;
@@ -0,0 +1,47 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.PageBody = void 0;
18
+ var jsx_runtime_1 = require("react/jsx-runtime");
19
+ var react_i18next_1 = require("react-i18next");
20
+ var _1 = require(".");
21
+ var ErrorBoundary_1 = __importDefault(require("./components/ErrorBoundary"));
22
+ var Settings_1 = require("./Settings");
23
+ function PageBody(props) {
24
+ var usePadding = (0, _1.useBreakpoint)('xxl');
25
+ var settings = (0, Settings_1.useSettings)();
26
+ var t = (0, react_i18next_1.useTranslation)().t;
27
+ return ((0, jsx_runtime_1.jsx)(ErrorBoundary_1.default, __assign({ message: t('Error') }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
28
+ display: 'flex',
29
+ flexDirection: 'column',
30
+ height: '100%',
31
+ maxHeight: '100%',
32
+ overflow: 'hidden',
33
+ backgroundColor: 'var(--pf-c-page__main-section--BackgroundColor)',
34
+ } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
35
+ display: 'flex',
36
+ flexDirection: 'column',
37
+ height: '100%',
38
+ maxHeight: '100%',
39
+ margin: usePadding ? 24 : 0,
40
+ overflow: 'hidden',
41
+ border: settings.borders && usePadding
42
+ ? 'thin solid var(--pf-global--BorderColor--100)'
43
+ : undefined,
44
+ backgroundColor: 'var(--pf-global--BackgroundColor--100)',
45
+ } }, { children: props.children })) })) })));
46
+ }
47
+ exports.PageBody = PageBody;