@ansible/ansible-ui-framework 0.0.190
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +21 -0
- package/cjs/framework/BulkActionDialog.js +217 -0
- package/cjs/framework/BulkProgressDialog.js +240 -0
- package/cjs/framework/FilterDrawer.js +64 -0
- package/cjs/framework/PageBody.js +47 -0
- package/cjs/framework/PageCatalog.js +178 -0
- package/cjs/framework/PageCells.js +141 -0
- package/cjs/framework/PageColumnModal.js +130 -0
- package/cjs/framework/PageDataList.js +61 -0
- package/cjs/framework/PageDialog.js +28 -0
- package/cjs/framework/PageForm.js +376 -0
- package/cjs/framework/PageFramework.js +11 -0
- package/cjs/framework/PageHeader.js +96 -0
- package/cjs/framework/PageLayout.js +41 -0
- package/cjs/framework/PagePagination.js +28 -0
- package/cjs/framework/PageTable.js +205 -0
- package/cjs/framework/PageTabs.js +82 -0
- package/cjs/framework/PageToolbar.js +209 -0
- package/cjs/framework/Settings.js +122 -0
- package/cjs/framework/TypedActions.js +303 -0
- package/cjs/framework/components/BulkSelector.js +89 -0
- package/cjs/framework/components/Collapse.js +22 -0
- package/cjs/framework/components/DetailInfo.js +23 -0
- package/cjs/framework/components/Details.js +88 -0
- package/cjs/framework/components/Dotted.js +19 -0
- package/cjs/framework/components/DropdownControlled.js +28 -0
- package/cjs/framework/components/ErrorBoundary.js +45 -0
- package/cjs/framework/components/Grid.js +64 -0
- package/cjs/framework/components/Help.js +24 -0
- package/cjs/framework/components/IconWrapper.js +55 -0
- package/cjs/framework/components/LoadingPage.js +14 -0
- package/cjs/framework/components/Masonry.js +113 -0
- package/cjs/framework/components/Scrollable.js +87 -0
- package/cjs/framework/components/SingleSelect.js +70 -0
- package/cjs/framework/components/patternfly-colors.js +32 -0
- package/cjs/framework/components/useBreakPoint.js +145 -0
- package/cjs/framework/components/useOpen.js +36 -0
- package/cjs/framework/components/useWindowLocation.js +70 -0
- package/cjs/framework/index.js +39 -0
- package/cjs/framework/useFrameworkTranslations.js +38 -0
- package/cjs/framework/useSelectDialog.js +81 -0
- package/cjs/framework/useSelectMultipleDialog.js +62 -0
- package/cjs/framework/useTableItems.js +485 -0
- package/cjs/framework/useView.js +155 -0
- package/cjs/framework/utils/compare.js +59 -0
- package/cjs/framework/utils/download-file.js +23 -0
- package/cjs/framework/utils/random-string.js +17 -0
- package/cjs/frontend/controller/access/organizations/Organization.js +2 -0
- package/mjs/framework/BulkActionDialog.d.ts +25 -0
- package/mjs/framework/BulkActionDialog.js +104 -0
- package/mjs/framework/BulkProgressDialog.d.ts +20 -0
- package/mjs/framework/BulkProgressDialog.js +131 -0
- package/mjs/framework/FilterDrawer.d.ts +8 -0
- package/mjs/framework/FilterDrawer.js +24 -0
- package/mjs/framework/PageBody.d.ts +4 -0
- package/mjs/framework/PageBody.js +29 -0
- package/mjs/framework/PageCatalog.d.ts +113 -0
- package/mjs/framework/PageCatalog.js +140 -0
- package/mjs/framework/PageCells.d.ts +35 -0
- package/mjs/framework/PageCells.js +102 -0
- package/mjs/framework/PageColumnModal.d.ts +7 -0
- package/mjs/framework/PageColumnModal.js +64 -0
- package/mjs/framework/PageDataList.d.ts +46 -0
- package/mjs/framework/PageDataList.js +45 -0
- package/mjs/framework/PageDialog.d.ts +10 -0
- package/mjs/framework/PageDialog.js +12 -0
- package/mjs/framework/PageForm.d.ts +147 -0
- package/mjs/framework/PageForm.js +316 -0
- package/mjs/framework/PageFramework.d.ts +4 -0
- package/mjs/framework/PageFramework.js +7 -0
- package/mjs/framework/PageHeader.d.ts +45 -0
- package/mjs/framework/PageHeader.js +80 -0
- package/mjs/framework/PageLayout.d.ts +15 -0
- package/mjs/framework/PageLayout.js +23 -0
- package/mjs/framework/PagePagination.d.ts +10 -0
- package/mjs/framework/PagePagination.js +22 -0
- package/mjs/framework/PageTable.d.ts +68 -0
- package/mjs/framework/PageTable.js +170 -0
- package/mjs/framework/PageTabs.d.ts +15 -0
- package/mjs/framework/PageTabs.js +45 -0
- package/mjs/framework/PageToolbar.d.ts +57 -0
- package/mjs/framework/PageToolbar.js +148 -0
- package/mjs/framework/Settings.d.ts +19 -0
- package/mjs/framework/Settings.js +87 -0
- package/mjs/framework/TypedActions.d.ts +80 -0
- package/mjs/framework/TypedActions.js +251 -0
- package/mjs/framework/components/BulkSelector.d.ts +11 -0
- package/mjs/framework/components/BulkSelector.js +56 -0
- package/mjs/framework/components/Collapse.d.ts +5 -0
- package/mjs/framework/components/Collapse.js +7 -0
- package/mjs/framework/components/DetailInfo.d.ts +5 -0
- package/mjs/framework/components/DetailInfo.js +8 -0
- package/mjs/framework/components/Details.d.ts +38 -0
- package/mjs/framework/components/Details.js +68 -0
- package/mjs/framework/components/Dotted.d.ts +4 -0
- package/mjs/framework/components/Dotted.js +4 -0
- package/mjs/framework/components/DropdownControlled.d.ts +4 -0
- package/mjs/framework/components/DropdownControlled.js +8 -0
- package/mjs/framework/components/ErrorBoundary.d.ts +15 -0
- package/mjs/framework/components/ErrorBoundary.js +25 -0
- package/mjs/framework/components/Grid.d.ts +6 -0
- package/mjs/framework/components/Grid.js +27 -0
- package/mjs/framework/components/Help.d.ts +5 -0
- package/mjs/framework/components/Help.js +9 -0
- package/mjs/framework/components/IconWrapper.d.ts +8 -0
- package/mjs/framework/components/IconWrapper.js +40 -0
- package/mjs/framework/components/LoadingPage.d.ts +6 -0
- package/mjs/framework/components/LoadingPage.js +9 -0
- package/mjs/framework/components/Masonry.d.ts +6 -0
- package/mjs/framework/components/Masonry.js +69 -0
- package/mjs/framework/components/Scrollable.d.ts +7 -0
- package/mjs/framework/components/Scrollable.js +60 -0
- package/mjs/framework/components/SingleSelect.d.ts +18 -0
- package/mjs/framework/components/SingleSelect.js +37 -0
- package/mjs/framework/components/patternfly-colors.d.ts +13 -0
- package/mjs/framework/components/patternfly-colors.js +28 -0
- package/mjs/framework/components/useBreakPoint.d.ts +5 -0
- package/mjs/framework/components/useBreakPoint.js +118 -0
- package/mjs/framework/components/useOpen.d.ts +4 -0
- package/mjs/framework/components/useOpen.js +16 -0
- package/mjs/framework/components/useWindowLocation.d.ts +6 -0
- package/mjs/framework/components/useWindowLocation.js +48 -0
- package/mjs/framework/index.d.ts +23 -0
- package/mjs/framework/index.js +23 -0
- package/mjs/framework/useFrameworkTranslations.d.ts +17 -0
- package/mjs/framework/useFrameworkTranslations.js +22 -0
- package/mjs/framework/useSelectDialog.d.ts +30 -0
- package/mjs/framework/useSelectDialog.js +49 -0
- package/mjs/framework/useSelectMultipleDialog.d.ts +21 -0
- package/mjs/framework/useSelectMultipleDialog.js +29 -0
- package/mjs/framework/useTableItems.d.ts +76 -0
- package/mjs/framework/useTableItems.js +371 -0
- package/mjs/framework/useView.d.ts +15 -0
- package/mjs/framework/useView.js +108 -0
- package/mjs/framework/utils/compare.d.ts +3 -0
- package/mjs/framework/utils/compare.js +53 -0
- package/mjs/framework/utils/download-file.d.ts +2 -0
- package/mjs/framework/utils/download-file.js +18 -0
- package/mjs/framework/utils/random-string.d.ts +1 -0
- package/mjs/framework/utils/random-string.js +12 -0
- package/mjs/frontend/controller/access/organizations/Organization.d.ts +44 -0
- package/mjs/frontend/controller/access/organizations/Organization.js +1 -0
- package/package.json +39 -0
@@ -0,0 +1,205 @@
|
|
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 __importDefault = (this && this.__importDefault) || function (mod) {
|
30
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
31
|
+
};
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
33
|
+
exports.PageTable = exports.TablePage = void 0;
|
34
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
35
|
+
var react_core_1 = require("@patternfly/react-core");
|
36
|
+
var react_icons_1 = require("@patternfly/react-icons");
|
37
|
+
var react_table_1 = require("@patternfly/react-table");
|
38
|
+
var resize_observer_1 = __importDefault(require("@react-hook/resize-observer"));
|
39
|
+
var react_1 = require("react");
|
40
|
+
var useBreakPoint_1 = require("./components/useBreakPoint");
|
41
|
+
var PageBody_1 = require("./PageBody");
|
42
|
+
var PageColumnModal_1 = require("./PageColumnModal");
|
43
|
+
var PageHeader_1 = require("./PageHeader");
|
44
|
+
var PageLayout_1 = require("./PageLayout");
|
45
|
+
var PagePagination_1 = require("./PagePagination");
|
46
|
+
var PageToolbar_1 = require("./PageToolbar");
|
47
|
+
var Settings_1 = require("./Settings");
|
48
|
+
var TypedActions_1 = require("./TypedActions");
|
49
|
+
function TablePage(props) {
|
50
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsxs)(PageLayout_1.PageLayout, { children: [(0, jsx_runtime_1.jsx)(PageHeader_1.PageHeader, __assign({}, props)), (0, jsx_runtime_1.jsx)(PageBody_1.PageBody, { children: (0, jsx_runtime_1.jsx)(PageTable, __assign({}, props)) })] }) }));
|
51
|
+
}
|
52
|
+
exports.TablePage = TablePage;
|
53
|
+
function PageTable(props) {
|
54
|
+
var tableColumns = props.tableColumns, pageItems = props.pageItems, selectItem = props.selectItem, unselectItem = props.unselectItem, isSelected = props.isSelected, keyFn = props.keyFn, rowActions = props.rowActions, toolbarActions = props.toolbarActions, itemCount = props.itemCount, perPage = props.perPage, clearAllFilters = props.clearAllFilters, filters = props.filters, error = props.error, onSelect = props.onSelect, unselectAll = props.unselectAll;
|
55
|
+
var t = props.t;
|
56
|
+
t = t ? t : function (t) { return t; };
|
57
|
+
var showSelect = props.showSelect ||
|
58
|
+
(toolbarActions === null || toolbarActions === void 0 ? void 0 : toolbarActions.find(function (toolbarAction) { return TypedActions_1.TypedActionType.bulk === toolbarAction.type; })) !==
|
59
|
+
undefined;
|
60
|
+
var containerRef = (0, react_1.useRef)(null);
|
61
|
+
var _a = __read((0, react_1.useState)({
|
62
|
+
left: 0,
|
63
|
+
right: 0,
|
64
|
+
top: 0,
|
65
|
+
bottom: 0,
|
66
|
+
}), 2), scroll = _a[0], setScroll = _a[1];
|
67
|
+
var updateScroll = (0, react_1.useCallback)(function (div) {
|
68
|
+
if (!div)
|
69
|
+
return;
|
70
|
+
setScroll({
|
71
|
+
top: div.scrollTop,
|
72
|
+
bottom: div.scrollHeight - div.clientHeight - div.scrollTop,
|
73
|
+
left: div.scrollLeft,
|
74
|
+
right: div.scrollWidth - div.clientWidth - div.scrollLeft,
|
75
|
+
});
|
76
|
+
}, []);
|
77
|
+
var onScroll = (0, react_1.useCallback)(function (event) { return updateScroll(event.currentTarget); }, [updateScroll]);
|
78
|
+
(0, resize_observer_1.default)(containerRef, function () { return updateScroll(containerRef.current); });
|
79
|
+
(0, react_1.useEffect)(function () { return updateScroll(containerRef.current); }, [updateScroll]);
|
80
|
+
var settings = (0, Settings_1.useSettings)();
|
81
|
+
var _b = (0, PageColumnModal_1.useColumnModal)(tableColumns), openColumnModal = _b.openColumnModal, columnModal = _b.columnModal, managedColumns = _b.managedColumns;
|
82
|
+
if (error) {
|
83
|
+
return ((0, jsx_runtime_1.jsx)("div", __assign({ style: {
|
84
|
+
backgroundColor: settings.theme === 'dark' ? 'var(--pf-global--BackgroundColor--300)' : undefined,
|
85
|
+
height: '100%',
|
86
|
+
} }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.EmptyState, __assign({ variant: react_core_1.EmptyStateVariant.small, style: {
|
87
|
+
paddingTop: 64,
|
88
|
+
} }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.EmptyStateIcon, { icon: react_icons_1.ExclamationCircleIcon, color: "var(--pf-global--danger-color--100)" }), (0, jsx_runtime_1.jsx)(react_core_1.Title, __assign({ headingLevel: "h2", size: "lg" }, { children: props.errorStateTitle })), (0, jsx_runtime_1.jsx)(react_core_1.EmptyStateBody, { children: error.message })] })) })));
|
89
|
+
}
|
90
|
+
if (itemCount === 0 && Object.keys(filters !== null && filters !== void 0 ? filters : {}).length === 0) {
|
91
|
+
return ((0, jsx_runtime_1.jsxs)(react_core_1.EmptyState, __assign({ variant: react_core_1.EmptyStateVariant.large, style: { paddingTop: 64 } }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.EmptyStateIcon, { icon: react_icons_1.PlusCircleIcon }), (0, jsx_runtime_1.jsx)(react_core_1.Title, __assign({ headingLevel: "h4", size: "lg" }, { children: props.emptyStateTitle })), props.emptyStateDescription && ((0, jsx_runtime_1.jsx)(react_core_1.EmptyStateBody, { children: props.emptyStateDescription })), props.emptyStateButtonClick && ((0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "primary", onClick: props.emptyStateButtonClick }, { children: props.emptyStateButtonText })))] })));
|
92
|
+
}
|
93
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [columnModal, (0, jsx_runtime_1.jsx)(PageToolbar_1.PageTableToolbar, __assign({}, props, { openColumnModal: openColumnModal, showSelect: showSelect })), (0, jsx_runtime_1.jsxs)("div", __assign({ className: "pf-c-scroll-inner-wrapper", style: { height: '100%' }, ref: containerRef, onScroll: onScroll }, { children: [(0, jsx_runtime_1.jsxs)(react_table_1.TableComposable, __assign({ "aria-label": "Simple table", variant: props.compact ? 'compact' : settings.tableLayout === 'compact' ? 'compact' : undefined, gridBreakPoint: "", isStickyHeader: true }, { children: [itemCount === undefined ? ((0, jsx_runtime_1.jsx)(react_table_1.Thead, { children: (0, jsx_runtime_1.jsx)(react_table_1.Tr, { children: (0, jsx_runtime_1.jsx)(react_table_1.Th, { children: (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, {}) }) }) })) : ((0, jsx_runtime_1.jsx)(TableHead, __assign({}, props, { showSelect: showSelect, scrollLeft: scroll.left > 0, scrollRight: scroll.right > 1, tableColumns: managedColumns, onSelect: onSelect }))), (0, jsx_runtime_1.jsx)(react_table_1.Tbody, { children: itemCount === undefined
|
94
|
+
? new Array(perPage).fill(0).map(function (_, index) { return ((0, jsx_runtime_1.jsx)(react_table_1.Tr, { children: (0, jsx_runtime_1.jsx)(react_table_1.Td, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { paddingTop: 5, paddingBottom: 5 } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, { height: "27px" }) })) }) }, index)); })
|
95
|
+
: pageItems === undefined
|
96
|
+
? new Array(Math.min(perPage, itemCount)).fill(0).map(function (_, index) { return ((0, jsx_runtime_1.jsxs)(react_table_1.Tr, { children: [showSelect && (0, jsx_runtime_1.jsx)(react_table_1.Td, {}), (0, jsx_runtime_1.jsx)(react_table_1.Td, __assign({ colSpan: managedColumns.length }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { paddingTop: 5, paddingBottom: 5 } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, { height: "27px" }) })) }))] }, index)); })
|
97
|
+
: pageItems === null || pageItems === void 0 ? void 0 : pageItems.map(function (item, rowIndex) { return ((0, jsx_runtime_1.jsx)(TableRow, { columns: managedColumns, item: item, isItemSelected: isSelected === null || isSelected === void 0 ? void 0 : isSelected(item), selectItem: selectItem, unselectItem: unselectItem, rowActions: rowActions, rowIndex: rowIndex, showSelect: showSelect, scrollLeft: scroll.left > 0, scrollRight: scroll.right > 1, unselectAll: unselectAll, onSelect: onSelect }, keyFn ? keyFn(item) : rowIndex)); }) })] })), itemCount === 0 && ((0, jsx_runtime_1.jsx)("div", __assign({ style: { margin: 'auto' } }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.EmptyState, { children: [(0, jsx_runtime_1.jsx)(react_core_1.EmptyStateIcon, { icon: react_icons_1.SearchIcon }), (0, jsx_runtime_1.jsx)(react_core_1.Title, __assign({ headingLevel: "h2", size: "lg" }, { children: t('No results found') })), (0, jsx_runtime_1.jsx)(react_core_1.EmptyStateBody, { children: t('No results match this filter criteria. Adjust your filters and try again.') }), clearAllFilters && ((0, jsx_runtime_1.jsx)(react_core_1.EmptyStateSecondaryActions, { children: (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "link", onClick: clearAllFilters }, { children: t('Clear all filters') })) }))] }) })))] })), (!props.autoHidePagination || (itemCount !== null && itemCount !== void 0 ? itemCount : 0) > perPage) && (0, jsx_runtime_1.jsx)(PagePagination_1.PagePagination, __assign({}, props))] }));
|
98
|
+
}
|
99
|
+
exports.PageTable = PageTable;
|
100
|
+
function TableHead(props) {
|
101
|
+
var columns = props.tableColumns, itemActions = props.rowActions, sort = props.sort, setSort = props.setSort, sortDirection = props.sortDirection, setSortDirection = props.setSortDirection, showSelect = props.showSelect, onSelect = props.onSelect;
|
102
|
+
var settings = (0, Settings_1.useSettings)();
|
103
|
+
var getColumnSort = (0, react_1.useCallback)(function (columnIndex, column) {
|
104
|
+
if (!column.sort)
|
105
|
+
return undefined;
|
106
|
+
return {
|
107
|
+
onSort: function (_event, _columnIndex, sortByDirection) {
|
108
|
+
if (column.sort) {
|
109
|
+
setSort === null || setSort === void 0 ? void 0 : setSort(column.sort);
|
110
|
+
setSortDirection === null || setSortDirection === void 0 ? void 0 : setSortDirection(sortByDirection);
|
111
|
+
}
|
112
|
+
},
|
113
|
+
sortBy: {
|
114
|
+
index: column.sort === sort ? columnIndex : undefined,
|
115
|
+
direction: column.sort === sort ? sortDirection : undefined,
|
116
|
+
defaultDirection: column.defaultSortDirection,
|
117
|
+
},
|
118
|
+
columnIndex: columnIndex,
|
119
|
+
};
|
120
|
+
}, [setSort, setSortDirection, sort, sortDirection]);
|
121
|
+
return ((0, jsx_runtime_1.jsx)(react_table_1.Thead, { children: (0, jsx_runtime_1.jsxs)(react_table_1.Tr, { children: [(showSelect || onSelect) && ((0, jsx_runtime_1.jsx)(react_table_1.Th, __assign({ isStickyColumn: true, style: {
|
122
|
+
width: '0%',
|
123
|
+
backgroundColor: settings.theme === 'dark' ? 'var(--pf-global--BackgroundColor--300)' : undefined,
|
124
|
+
}, stickyMinWidth: "45px", hasRightBorder: props.scrollLeft }, { children: "\u00A0" }))), columns
|
125
|
+
.filter(function (column) { return column.enabled !== false; })
|
126
|
+
.map(function (column, index) {
|
127
|
+
return ((0, jsx_runtime_1.jsx)(react_table_1.Th, __assign({ modifier: "fitContent", style: {
|
128
|
+
minWidth: column.minWidth,
|
129
|
+
maxWidth: column.maxWidth,
|
130
|
+
backgroundColor: settings.theme === 'dark'
|
131
|
+
? 'var(--pf-global--BackgroundColor--300)'
|
132
|
+
: undefined,
|
133
|
+
}, sort: getColumnSort(index, column) }, { children: column.header }), column.header));
|
134
|
+
}), itemActions !== undefined && ((0, jsx_runtime_1.jsx)(react_table_1.Th, __assign({ style: {
|
135
|
+
paddingRight: 8,
|
136
|
+
paddingLeft: 0,
|
137
|
+
width: '0%',
|
138
|
+
right: 0,
|
139
|
+
backgroundColor: settings.theme === 'dark' ? 'var(--pf-global--BackgroundColor--300)' : undefined,
|
140
|
+
}, isStickyColumn: true, stickyMinWidth: "45px", className: props.scrollRight ? 'pf-m-border-left' : undefined }, { children: "\u00A0" })))] }) }));
|
141
|
+
}
|
142
|
+
function TableRow(props) {
|
143
|
+
var columns = props.columns, selectItem = props.selectItem, unselectItem = props.unselectItem, unselectAll = props.unselectAll, isItemSelected = props.isItemSelected, item = props.item, rowActions = props.rowActions, rowIndex = props.rowIndex, showSelect = props.showSelect, onSelect = props.onSelect;
|
144
|
+
var md = (0, useBreakPoint_1.useBreakpoint)('xl');
|
145
|
+
return ((0, jsx_runtime_1.jsxs)(react_table_1.Tr, __assign({ className: isItemSelected ? 'selected' : undefined,
|
146
|
+
// style={{ backgroundColor: theme === ThemeE.Dark ? 'transparent' : undefined }}
|
147
|
+
isRowSelected: isItemSelected, style: { boxShadow: 'unset' } }, { children: [showSelect && ((0, jsx_runtime_1.jsx)(react_table_1.Th, { select: isItemSelected !== undefined
|
148
|
+
? {
|
149
|
+
onSelect: function (_event, isSelecting) {
|
150
|
+
if (isSelecting) {
|
151
|
+
selectItem === null || selectItem === void 0 ? void 0 : selectItem(item);
|
152
|
+
}
|
153
|
+
else {
|
154
|
+
unselectItem === null || unselectItem === void 0 ? void 0 : unselectItem(item);
|
155
|
+
}
|
156
|
+
},
|
157
|
+
isSelected: isItemSelected,
|
158
|
+
}
|
159
|
+
: undefined, style: { width: '0%', paddingLeft: md ? undefined : 20, paddingRight: 16 }, isStickyColumn: true, stickyMinWidth: "0px", hasRightBorder: props.scrollLeft })), onSelect && ((0, jsx_runtime_1.jsx)(react_table_1.Td, { select: {
|
160
|
+
rowIndex: rowIndex,
|
161
|
+
onSelect: function () {
|
162
|
+
unselectAll === null || unselectAll === void 0 ? void 0 : unselectAll();
|
163
|
+
selectItem === null || selectItem === void 0 ? void 0 : selectItem(item);
|
164
|
+
onSelect === null || onSelect === void 0 ? void 0 : onSelect(item);
|
165
|
+
},
|
166
|
+
isSelected: isItemSelected !== null && isItemSelected !== void 0 ? isItemSelected : false,
|
167
|
+
// disable: !isRepoSelectable(repo),
|
168
|
+
variant: 'radio',
|
169
|
+
}, style: {
|
170
|
+
width: '0%',
|
171
|
+
paddingLeft: md ? undefined : 20,
|
172
|
+
position: 'sticky',
|
173
|
+
left: 0,
|
174
|
+
background: 'var(--pf-c-table__sticky-column--BackgroundColor)',
|
175
|
+
zIndex: 1,
|
176
|
+
} })), (0, jsx_runtime_1.jsx)(TableCells, { rowIndex: rowIndex, columns: columns, item: item, rowActions: rowActions, scrollLeft: props.scrollLeft, scrollRight: props.scrollRight })] })));
|
177
|
+
}
|
178
|
+
function TableCells(props) {
|
179
|
+
var columns = props.columns, item = props.item, rowActions = props.rowActions, rowIndex = props.rowIndex;
|
180
|
+
var actions = (0, TypedActions_1.useTypedActionsToTableActions)({
|
181
|
+
actions: rowActions !== null && rowActions !== void 0 ? rowActions : [],
|
182
|
+
item: item,
|
183
|
+
collapse: 'xxl',
|
184
|
+
});
|
185
|
+
return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [columns
|
186
|
+
.filter(function (column) { return column.enabled !== false; })
|
187
|
+
.map(function (column) {
|
188
|
+
return ((0, jsx_runtime_1.jsx)(react_table_1.Td, __assign({ dataLabel: column.header, modifier: "nowrap" }, { children: column.cell(item) }), column.header));
|
189
|
+
}), actions !== undefined && actions.length > 0 && ((0, jsx_runtime_1.jsx)(react_table_1.Th
|
190
|
+
// isActionCell
|
191
|
+
, __assign({
|
192
|
+
// isActionCell
|
193
|
+
style: {
|
194
|
+
zIndex: 100 - rowIndex,
|
195
|
+
paddingRight: 8,
|
196
|
+
paddingLeft: 8,
|
197
|
+
width: '0%',
|
198
|
+
right: 0,
|
199
|
+
// display: 'flex',
|
200
|
+
}, isStickyColumn: true, stickyMinWidth: "0px", className: props.scrollRight ? 'pf-m-border-left' : undefined }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { display: 'flex' } }, { children: (0, jsx_runtime_1.jsx)(react_table_1.ActionsColumn
|
201
|
+
// dropdownDirection="up" // TODO handle....
|
202
|
+
, {
|
203
|
+
// dropdownDirection="up" // TODO handle....
|
204
|
+
items: actions }) })) })))] }));
|
205
|
+
}
|
@@ -0,0 +1,82 @@
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
30
|
+
exports.PageTabsOld = exports.PageTab = exports.PageTabs = void 0;
|
31
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
32
|
+
var react_core_1 = require("@patternfly/react-core");
|
33
|
+
var react_1 = require("react");
|
34
|
+
function PageTabs(props) {
|
35
|
+
var _a;
|
36
|
+
var _b = __read((0, react_1.useState)(0), 2), activeKey = _b[0], setActiveKey = _b[1];
|
37
|
+
var onSelect = (0, react_1.useCallback)(function (_, key) { return setActiveKey(key); }, [setActiveKey]);
|
38
|
+
var children = react_1.Children.toArray(props.children);
|
39
|
+
var tabs = children.map(function (child, index) {
|
40
|
+
if ((0, react_1.isValidElement)(child)) {
|
41
|
+
if (child.type === PageTab) {
|
42
|
+
var title = child.props.title;
|
43
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.Tab, { title: title ? title : (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, { width: "60px" }), eventKey: index }, title !== null && title !== void 0 ? title : index));
|
44
|
+
}
|
45
|
+
}
|
46
|
+
return child;
|
47
|
+
});
|
48
|
+
var content = children[activeKey];
|
49
|
+
return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_core_1.PageSection, __assign({ type: react_core_1.PageSectionTypes.tabs }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Flex, __assign({ spaceItems: { default: 'spaceItemsNone' } }, { children: [props.preComponents && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_core_1.FlexItem
|
50
|
+
// style={{ paddingLeft: 16 }}
|
51
|
+
, { children: props.preComponents }), (0, jsx_runtime_1.jsx)(react_core_1.Divider, { orientation: { default: 'vertical' }, component: "div" })] })), (0, jsx_runtime_1.jsx)(react_core_1.FlexItem, __assign({ grow: { default: 'grow' } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Tabs, __assign({ activeKey: activeKey, onSelect: onSelect, inset: props.preComponents
|
52
|
+
? undefined
|
53
|
+
: (_a = {
|
54
|
+
default: 'insetNone',
|
55
|
+
sm: 'insetNone',
|
56
|
+
md: 'insetNone',
|
57
|
+
lg: 'insetNone',
|
58
|
+
xl: 'insetSm'
|
59
|
+
},
|
60
|
+
_a['2xl'] = 'insetSm',
|
61
|
+
_a), hasBorderBottom: false }, { children: tabs })) })), props.postComponents && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Divider, { orientation: { default: 'vertical' } }), (0, jsx_runtime_1.jsx)(react_core_1.FlexItem, __assign({ style: { paddingRight: 16 } }, { children: props.postComponents }))] }))] })) })), (0, jsx_runtime_1.jsx)(react_core_1.Divider, {}), content] }));
|
62
|
+
}
|
63
|
+
exports.PageTabs = PageTabs;
|
64
|
+
function PageTab(props) {
|
65
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: props.children });
|
66
|
+
}
|
67
|
+
exports.PageTab = PageTab;
|
68
|
+
function PageTabsOld(props) {
|
69
|
+
var _a;
|
70
|
+
var activeKey = props.activeKey, setActiveKey = props.setActiveKey;
|
71
|
+
var onSelect = (0, react_1.useCallback)(function (_, key) { return setActiveKey(key); }, [setActiveKey]);
|
72
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.PageSection, __assign({ type: react_core_1.PageSectionTypes.tabs, style: { flexGrow: 1 } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Tabs, __assign({ activeKey: activeKey, onSelect: onSelect, inset: (_a = {
|
73
|
+
default: 'insetNone',
|
74
|
+
sm: 'insetNone',
|
75
|
+
md: 'insetNone',
|
76
|
+
lg: 'insetNone',
|
77
|
+
xl: 'insetSm'
|
78
|
+
},
|
79
|
+
_a['2xl'] = 'insetSm',
|
80
|
+
_a) }, { children: props.children })) })));
|
81
|
+
}
|
82
|
+
exports.PageTabsOld = PageTabsOld;
|
@@ -0,0 +1,209 @@
|
|
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 __values = (this && this.__values) || function(o) {
|
14
|
+
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
|
15
|
+
if (m) return m.call(o);
|
16
|
+
if (o && typeof o.length === "number") return {
|
17
|
+
next: function () {
|
18
|
+
if (o && i >= o.length) o = void 0;
|
19
|
+
return { value: o && o[i++], done: !o };
|
20
|
+
}
|
21
|
+
};
|
22
|
+
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
23
|
+
};
|
24
|
+
var __read = (this && this.__read) || function (o, n) {
|
25
|
+
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
26
|
+
if (!m) return o;
|
27
|
+
var i = m.call(o), r, ar = [], e;
|
28
|
+
try {
|
29
|
+
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
30
|
+
}
|
31
|
+
catch (error) { e = { error: error }; }
|
32
|
+
finally {
|
33
|
+
try {
|
34
|
+
if (r && !r.done && (m = i["return"])) m.call(i);
|
35
|
+
}
|
36
|
+
finally { if (e) throw e.error; }
|
37
|
+
}
|
38
|
+
return ar;
|
39
|
+
};
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
41
|
+
exports.PageTableToolbar = exports.toolbarActionsHaveBulkActions = void 0;
|
42
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
43
|
+
var react_core_1 = require("@patternfly/react-core");
|
44
|
+
var react_icons_1 = require("@patternfly/react-icons");
|
45
|
+
var react_1 = require("react");
|
46
|
+
var react_i18next_1 = require("react-i18next");
|
47
|
+
var BulkSelector_1 = require("./components/BulkSelector");
|
48
|
+
var SingleSelect_1 = require("./components/SingleSelect");
|
49
|
+
var useBreakPoint_1 = require("./components/useBreakPoint");
|
50
|
+
var Settings_1 = require("./Settings");
|
51
|
+
var TypedActions_1 = require("./TypedActions");
|
52
|
+
function toolbarActionsHaveBulkActions(actions) {
|
53
|
+
var e_1, _a;
|
54
|
+
if (!actions)
|
55
|
+
return false;
|
56
|
+
try {
|
57
|
+
for (var actions_1 = __values(actions), actions_1_1 = actions_1.next(); !actions_1_1.done; actions_1_1 = actions_1.next()) {
|
58
|
+
var action = actions_1_1.value;
|
59
|
+
if (action.type === 'bulk')
|
60
|
+
return true;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
64
|
+
finally {
|
65
|
+
try {
|
66
|
+
if (actions_1_1 && !actions_1_1.done && (_a = actions_1.return)) _a.call(actions_1);
|
67
|
+
}
|
68
|
+
finally { if (e_1) throw e_1.error; }
|
69
|
+
}
|
70
|
+
return false;
|
71
|
+
}
|
72
|
+
exports.toolbarActionsHaveBulkActions = toolbarActionsHaveBulkActions;
|
73
|
+
function PageTableToolbar(props) {
|
74
|
+
var _a;
|
75
|
+
var itemCount = props.itemCount, page = props.page, perPage = props.perPage, setPage = props.setPage, setPerPage = props.setPerPage, toolbarFilters = props.toolbarFilters, selectedItems = props.selectedItems, filters = props.filters, setFilters = props.setFilters, clearAllFilters = props.clearAllFilters, openColumnModal = props.openColumnModal, disableBorderBottom = props.disableBorderBottom;
|
76
|
+
var sm = (0, useBreakPoint_1.useBreakpoint)('md');
|
77
|
+
var toolbarActions = props.toolbarActions;
|
78
|
+
toolbarActions = toolbarActions !== null && toolbarActions !== void 0 ? toolbarActions : [];
|
79
|
+
var onSetPage = (0, react_1.useCallback)(function (_event, page) { return setPage(page); }, [setPage]);
|
80
|
+
var onPerPageSelect = (0, react_1.useCallback)(function (_event, perPage) { return setPerPage(perPage); }, [setPerPage]);
|
81
|
+
var showSearchAndFilters = toolbarFilters !== undefined;
|
82
|
+
var showToolbarActions = toolbarActions !== undefined && toolbarActions.length > 0;
|
83
|
+
var showSelect = props.showSelect === true ||
|
84
|
+
(selectedItems !== undefined &&
|
85
|
+
toolbarActions &&
|
86
|
+
toolbarActions.find(function (toolbarAction) { return TypedActions_1.TypedActionType.bulk === toolbarAction.type; }));
|
87
|
+
var showToolbar = showSelect || showSearchAndFilters || showToolbarActions;
|
88
|
+
var _b = __read((0, react_1.useState)(function () {
|
89
|
+
return toolbarFilters ? ((toolbarFilters === null || toolbarFilters === void 0 ? void 0 : toolbarFilters.length) > 0 ? toolbarFilters[0].key : '') : '';
|
90
|
+
}), 2), selectedFilter = _b[0], setSeletedFilter = _b[1];
|
91
|
+
var settings = (0, Settings_1.useSettings)();
|
92
|
+
if (!showToolbar) {
|
93
|
+
return (0, jsx_runtime_1.jsx)(react_1.Fragment, {});
|
94
|
+
}
|
95
|
+
if (itemCount === undefined) {
|
96
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.Toolbar, __assign({ style: {
|
97
|
+
borderBottom: disableBorderBottom
|
98
|
+
? undefined
|
99
|
+
: 'thin solid var(--pf-global--BorderColor--100)',
|
100
|
+
paddingBottom: sm ? undefined : 8,
|
101
|
+
paddingTop: sm ? undefined : 8,
|
102
|
+
backgroundColor: settings.theme === 'dark' ? 'var(--pf-global--BackgroundColor--300)' : undefined,
|
103
|
+
} }, { children: (0, jsx_runtime_1.jsx)(react_core_1.ToolbarContent, { children: (0, jsx_runtime_1.jsx)(react_core_1.ToolbarItem, __assign({ style: { width: '100%' } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, { height: "36px" }) })) }) })));
|
104
|
+
}
|
105
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.Toolbar, __assign({ clearAllFilters: clearAllFilters, style: {
|
106
|
+
borderBottom: disableBorderBottom
|
107
|
+
? undefined
|
108
|
+
: 'thin solid var(--pf-global--BorderColor--100)',
|
109
|
+
paddingBottom: sm ? undefined : 8,
|
110
|
+
paddingTop: sm ? undefined : 8,
|
111
|
+
backgroundColor: settings.theme === 'dark' ? 'var(--pf-global--BackgroundColor--300)' : undefined,
|
112
|
+
} }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.ToolbarContent, { children: [showSelect && ((0, jsx_runtime_1.jsx)(react_core_1.ToolbarGroup, { children: (0, jsx_runtime_1.jsx)(react_core_1.ToolbarItem, __assign({ variant: "bulk-select" }, { children: (0, jsx_runtime_1.jsx)(BulkSelector_1.BulkSelector, __assign({}, props)) })) })), toolbarFilters && toolbarFilters.length > 0 && ((0, jsx_runtime_1.jsx)(react_core_1.ToolbarToggleGroup, __assign({ toggleIcon: (0, jsx_runtime_1.jsx)(react_icons_1.FilterIcon, {}), breakpoint: "md", style: { zIndex: 302 } }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.ToolbarGroup, __assign({ variant: "filter-group" }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.ToolbarItem, { children: (0, jsx_runtime_1.jsx)(SingleSelect_1.SingleSelect2, __assign({ onChange: setSeletedFilter, value: selectedFilter }, { children: toolbarFilters.map(function (filter) { return ((0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: filter.key }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Flex, __assign({ spaceItems: { default: 'spaceItemsNone' }, alignItems: { default: 'alignItemsCenter' }, flexWrap: { default: 'nowrap' } }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.FlexItem, __assign({ style: { paddingLeft: 4, paddingRight: 8 } }, { children: (0, jsx_runtime_1.jsx)(react_icons_1.FilterIcon, {}) })), (0, jsx_runtime_1.jsx)(react_core_1.FlexItem, { children: filter.label })] })) }), filter.key)); }) })) }), (0, jsx_runtime_1.jsx)(react_core_1.ToolbarItem, { children: (0, jsx_runtime_1.jsx)(ToolbarFilterInput, { filter: toolbarFilters.find(function (filter) { return filter.key === selectedFilter; }), addFilter: function (value) {
|
113
|
+
var _a;
|
114
|
+
var values = filters === null || filters === void 0 ? void 0 : filters[selectedFilter];
|
115
|
+
if (!values)
|
116
|
+
values = [];
|
117
|
+
if (!values.includes(value))
|
118
|
+
values.push(value);
|
119
|
+
setFilters === null || setFilters === void 0 ? void 0 : setFilters(__assign(__assign({}, filters), (_a = {}, _a[selectedFilter] = values, _a)));
|
120
|
+
}, removeFilter: function (value) {
|
121
|
+
var _a;
|
122
|
+
var values = filters === null || filters === void 0 ? void 0 : filters[selectedFilter];
|
123
|
+
if (!values)
|
124
|
+
values = [];
|
125
|
+
values = values.filter(function (v) { return v !== value; });
|
126
|
+
setFilters === null || setFilters === void 0 ? void 0 : setFilters(__assign(__assign({}, filters), (_a = {}, _a[selectedFilter] = values, _a)));
|
127
|
+
}, values: (_a = filters === null || filters === void 0 ? void 0 : filters[selectedFilter]) !== null && _a !== void 0 ? _a : [] }) }), toolbarFilters.map(function (filter) {
|
128
|
+
var _a;
|
129
|
+
var values = (_a = filters === null || filters === void 0 ? void 0 : filters[filter.key]) !== null && _a !== void 0 ? _a : [];
|
130
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.ToolbarFilter, __assign({ categoryName: filter.label, chips: values.map(function (value) {
|
131
|
+
var _a, _b;
|
132
|
+
return 'options' in filter
|
133
|
+
? (_b = (_a = filter.options.find(function (o) { return o.value === value; })) === null || _a === void 0 ? void 0 : _a.label) !== null && _b !== void 0 ? _b : value
|
134
|
+
: value;
|
135
|
+
}), deleteChip: function (_group, value) {
|
136
|
+
setFilters === null || setFilters === void 0 ? void 0 : setFilters(function (filters) {
|
137
|
+
//TODO bug here where value is actually select filter option label... need to map
|
138
|
+
var newState = __assign({}, filters);
|
139
|
+
value = typeof value === 'string' ? value : value.key;
|
140
|
+
var values = filters[filter.key];
|
141
|
+
if (values) {
|
142
|
+
values = values.filter(function (v) { return v !== value; });
|
143
|
+
if (values.length === 0) {
|
144
|
+
delete newState[filter.key];
|
145
|
+
}
|
146
|
+
else {
|
147
|
+
newState[filter.key] = values;
|
148
|
+
}
|
149
|
+
}
|
150
|
+
return newState;
|
151
|
+
});
|
152
|
+
}, deleteChipGroup: function () {
|
153
|
+
setFilters === null || setFilters === void 0 ? void 0 : setFilters(function (filters) {
|
154
|
+
var newState = __assign({}, filters);
|
155
|
+
delete newState[filter.key];
|
156
|
+
return newState;
|
157
|
+
});
|
158
|
+
}, showToolbarItem: false }, { children: (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {}) }), filter.label));
|
159
|
+
})] })) }))), (0, jsx_runtime_1.jsxs)(react_core_1.ToolbarGroup, __assign({ variant: "button-group", style: { zIndex: 302 } }, { children: [(0, jsx_runtime_1.jsx)(TypedActions_1.TypedActions, { actions: toolbarActions, selectedItems: selectedItems, wrapper: react_core_1.ToolbarItem }), openColumnModal && ((0, jsx_runtime_1.jsx)(react_core_1.ToolbarItem, { children: (0, jsx_runtime_1.jsx)(react_core_1.Tooltip, __assign({ content: 'Manage columns' }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Button, { variant: "plain", icon: (0, jsx_runtime_1.jsx)(react_icons_1.ColumnsIcon, {}), onClick: openColumnModal }) })) }))] })), (0, jsx_runtime_1.jsx)(react_core_1.ToolbarItem, __assign({ variant: "pagination", visibility: { default: 'hidden', '2xl': 'visible' } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Pagination, { variant: react_core_1.PaginationVariant.top, isCompact: true, itemCount: itemCount, perPage: perPage, page: page, onSetPage: onSetPage, onPerPageSelect: onPerPageSelect, style: { marginTop: -8, marginBottom: -8 } }) }))] }) })));
|
160
|
+
}
|
161
|
+
exports.PageTableToolbar = PageTableToolbar;
|
162
|
+
function ToolbarFilterInput(props) {
|
163
|
+
var filter = props.filter;
|
164
|
+
switch (filter === null || filter === void 0 ? void 0 : filter.type) {
|
165
|
+
case 'string':
|
166
|
+
return (0, jsx_runtime_1.jsx)(ToolbarTextFilter, __assign({}, props, { placeholder: filter.placeholder }));
|
167
|
+
case 'select':
|
168
|
+
return ((0, jsx_runtime_1.jsx)(ToolbarSelectFilter, __assign({}, props, { options: filter.options, placeholder: filter.placeholder })));
|
169
|
+
}
|
170
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
171
|
+
}
|
172
|
+
function ToolbarTextFilter(props) {
|
173
|
+
var _a = __read((0, react_1.useState)(''), 2), value = _a[0], setValue = _a[1];
|
174
|
+
return ((0, jsx_runtime_1.jsxs)(react_core_1.InputGroup, { children: [(0, jsx_runtime_1.jsxs)(react_core_1.TextInputGroup, __assign({ style: { minWidth: 220 } }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.TextInputGroupMain
|
175
|
+
// ref={ref}
|
176
|
+
, {
|
177
|
+
// ref={ref}
|
178
|
+
value: value, onChange: setValue, onKeyUp: function (event) {
|
179
|
+
if (value && event.key === 'Enter') {
|
180
|
+
props.addFilter(value);
|
181
|
+
setValue('');
|
182
|
+
// ref.current?.focus() // Does not work because PF does not expose ref
|
183
|
+
}
|
184
|
+
}, placeholder: props.placeholder }), value !== '' && ((0, jsx_runtime_1.jsx)(react_core_1.TextInputGroupUtilities, { children: (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "plain", "aria-label": "add filter", onClick: function () { return setValue(''); }, style: { opacity: value ? undefined : 0 },
|
185
|
+
// tabIndex={value ? undefined : -1}
|
186
|
+
tabIndex: -1 }, { children: (0, jsx_runtime_1.jsx)(react_icons_1.TimesIcon, {}) })) }))] })), !value ? ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})) : (
|
187
|
+
// <Button variant={'control'} aria-label="add filter">
|
188
|
+
// <SearchIcon />
|
189
|
+
// </Button>
|
190
|
+
(0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: value ? 'primary' : 'control', "aria-label": "add filter", onClick: function () {
|
191
|
+
props.addFilter(value);
|
192
|
+
setValue('');
|
193
|
+
} }, { children: (0, jsx_runtime_1.jsx)(react_icons_1.ArrowRightIcon, {}) })))] }));
|
194
|
+
}
|
195
|
+
function ToolbarSelectFilter(props) {
|
196
|
+
var t = (0, react_i18next_1.useTranslation)().t;
|
197
|
+
var addFilter = props.addFilter, removeFilter = props.removeFilter, options = props.options, values = props.values;
|
198
|
+
var _a = __read((0, react_1.useState)(false), 2), open = _a[0], setOpen = _a[1];
|
199
|
+
var onSelect = (0, react_1.useCallback)(function (e, value) {
|
200
|
+
if (values.includes(value.toString())) {
|
201
|
+
removeFilter(value.toString());
|
202
|
+
}
|
203
|
+
else {
|
204
|
+
addFilter(value.toString());
|
205
|
+
}
|
206
|
+
}, [addFilter, removeFilter, values]);
|
207
|
+
var selections = values;
|
208
|
+
return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (0, jsx_runtime_1.jsx)(react_core_1.Select, __assign({ variant: react_core_1.SelectVariant.checkbox, isOpen: open, onToggle: setOpen, selections: selections, onSelect: onSelect, placeholderText: values.length ? t('Selected') : (0, jsx_runtime_1.jsx)("span", __assign({ style: { opacity: 0.7 } }, { children: props.placeholder })) }, { children: options.map(function (option) { return ((0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ id: option.value, value: option.value }, { children: option.label }), option.value)); }) })) }));
|
209
|
+
}
|
@@ -0,0 +1,122 @@
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
30
|
+
exports.SettingsDialog = exports.useSettingsDialog = exports.SettingsProvider = exports.useSettings = exports.SettingsContext = void 0;
|
31
|
+
var jsx_runtime_1 = require("react/jsx-runtime");
|
32
|
+
var react_core_1 = require("@patternfly/react-core");
|
33
|
+
var react_1 = require("react");
|
34
|
+
var SingleSelect_1 = require("./components/SingleSelect");
|
35
|
+
var PageDialog_1 = require("./PageDialog");
|
36
|
+
exports.SettingsContext = (0, react_1.createContext)([
|
37
|
+
{},
|
38
|
+
function () { return null; },
|
39
|
+
]);
|
40
|
+
function useSettings() {
|
41
|
+
var _a = __read((0, react_1.useContext)(exports.SettingsContext), 1), settings = _a[0];
|
42
|
+
return settings;
|
43
|
+
}
|
44
|
+
exports.useSettings = useSettings;
|
45
|
+
function SettingsProvider(props) {
|
46
|
+
var _a = __read((0, react_1.useState)(function () {
|
47
|
+
var settings = {
|
48
|
+
theme: localStorage.getItem('theme'),
|
49
|
+
tableLayout: localStorage.getItem('tableLayout'),
|
50
|
+
formColumns: localStorage.getItem('formColumns'),
|
51
|
+
formLayout: localStorage.getItem('formLayout'),
|
52
|
+
borders: localStorage.getItem('borders') !== 'false',
|
53
|
+
};
|
54
|
+
var activeTheme = settings.theme !== 'dark' && settings.theme !== 'light'
|
55
|
+
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
56
|
+
? 'dark'
|
57
|
+
: 'light'
|
58
|
+
: settings.theme;
|
59
|
+
if (activeTheme === 'dark') {
|
60
|
+
document.documentElement.classList.add('pf-theme-dark');
|
61
|
+
}
|
62
|
+
else {
|
63
|
+
document.documentElement.classList.remove('pf-theme-dark');
|
64
|
+
}
|
65
|
+
return settings;
|
66
|
+
}), 2), settings = _a[0], setSettingsState = _a[1];
|
67
|
+
var setSettings = (0, react_1.useCallback)(function (settings) {
|
68
|
+
var _a, _b, _c, _d;
|
69
|
+
localStorage.setItem('theme', (_a = settings.theme) !== null && _a !== void 0 ? _a : 'system');
|
70
|
+
localStorage.setItem('tableLayout', (_b = settings.tableLayout) !== null && _b !== void 0 ? _b : 'comfortable');
|
71
|
+
localStorage.setItem('formColumns', (_c = settings.formColumns) !== null && _c !== void 0 ? _c : 'multiple');
|
72
|
+
localStorage.setItem('formLayout', (_d = settings.formLayout) !== null && _d !== void 0 ? _d : 'vertical');
|
73
|
+
localStorage.setItem('borders', settings.borders ? 'true' : 'false');
|
74
|
+
setSettingsState(settings);
|
75
|
+
var activeTheme = settings.theme === 'system'
|
76
|
+
? window.matchMedia('(prefers-color-scheme: dark)').matches
|
77
|
+
? 'dark'
|
78
|
+
: 'light'
|
79
|
+
: settings.theme;
|
80
|
+
if (activeTheme === 'dark') {
|
81
|
+
document.documentElement.classList.add('pf-theme-dark');
|
82
|
+
}
|
83
|
+
else {
|
84
|
+
document.documentElement.classList.remove('pf-theme-dark');
|
85
|
+
}
|
86
|
+
}, []);
|
87
|
+
return ((0, jsx_runtime_1.jsx)(exports.SettingsContext.Provider, __assign({ value: [settings, setSettings] }, { children: props.children })));
|
88
|
+
}
|
89
|
+
exports.SettingsProvider = SettingsProvider;
|
90
|
+
function useSettingsDialog(t) {
|
91
|
+
var _a = __read((0, react_1.useState)(false), 2), open = _a[0], setOpen = _a[1];
|
92
|
+
var openSetting = (0, react_1.useCallback)(function () { return setOpen(true); }, []);
|
93
|
+
var _b = __read((0, PageDialog_1.usePageDialog)(), 2), _ = _b[0], setDialog = _b[1];
|
94
|
+
(0, react_1.useEffect)(function () {
|
95
|
+
if (open) {
|
96
|
+
setDialog((0, jsx_runtime_1.jsx)(SettingsDialog, { open: open, setOpen: setOpen, t: t }));
|
97
|
+
}
|
98
|
+
else {
|
99
|
+
setDialog(undefined);
|
100
|
+
}
|
101
|
+
}, [open, setDialog, t]);
|
102
|
+
return openSetting;
|
103
|
+
}
|
104
|
+
exports.useSettingsDialog = useSettingsDialog;
|
105
|
+
function SettingsDialog(props) {
|
106
|
+
var _a, _b, _c, _d;
|
107
|
+
var onClose = function () { return props.setOpen(false); };
|
108
|
+
var _e = __read((0, react_1.useContext)(exports.SettingsContext), 2), settings = _e[0], setSettings = _e[1];
|
109
|
+
var t = props.t;
|
110
|
+
return ((0, jsx_runtime_1.jsx)(react_core_1.Modal, __assign({ title: "Settings", isOpen: props.open, onClose: onClose, variant: react_core_1.ModalVariant.medium, tabIndex: 0, actions: [
|
111
|
+
(0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "primary", onClick: onClose }, { children: t('Close') }), "close"),
|
112
|
+
] }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Form, __assign({ isHorizontal: settings.formLayout === 'horizontal' }, { children: [(0, jsx_runtime_1.jsxs)(SingleSelect_1.SingleSelect, __assign({ label: "Theme", value: (_a = settings.theme) !== null && _a !== void 0 ? _a : 'system', onChange: function (theme) {
|
113
|
+
return setSettings(__assign(__assign({}, settings), { theme: theme }));
|
114
|
+
} }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "system" }, { children: t('System default') })), (0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "light" }, { children: t('Light') })), (0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "dark" }, { children: t('Dark') }))] })), (0, jsx_runtime_1.jsxs)(SingleSelect_1.SingleSelect, __assign({ label: "Table Layout", value: (_b = settings.tableLayout) !== null && _b !== void 0 ? _b : 'comfortable', onChange: function (tableLayout) {
|
115
|
+
return setSettings(__assign(__assign({}, settings), { tableLayout: tableLayout }));
|
116
|
+
} }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "comfortable" }, { children: t('Comfortable') })), (0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "compact" }, { children: t('Compact') }))] })), (0, jsx_runtime_1.jsxs)(SingleSelect_1.SingleSelect, __assign({ label: "Form Columns", value: (_c = settings.formColumns) !== null && _c !== void 0 ? _c : 'multiple', onChange: function (formColumns) {
|
117
|
+
return setSettings(__assign(__assign({}, settings), { formColumns: formColumns }));
|
118
|
+
} }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "multiple" }, { children: t('Multiple columns') })), (0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "single" }, { children: t('Single column') }))] })), (0, jsx_runtime_1.jsxs)(SingleSelect_1.SingleSelect, __assign({ label: "Form Layout", value: (_d = settings.formLayout) !== null && _d !== void 0 ? _d : 'vertical', onChange: function (formLayout) {
|
119
|
+
return setSettings(__assign(__assign({}, settings), { formLayout: formLayout }));
|
120
|
+
} }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "vertical" }, { children: t('Vertical labels') })), (0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "horizontal" }, { children: t('Horizontal labels') }))] })), (0, jsx_runtime_1.jsxs)(SingleSelect_1.SingleSelect, __assign({ label: "Borders", value: settings.borders ? 'true' : 'false', onChange: function (value) { return setSettings(__assign(__assign({}, settings), { borders: value === 'true' })); }, style: { paddingBottom: 120 } }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "true" }, { children: t('Yes') })), (0, jsx_runtime_1.jsx)(react_core_1.SelectOption, __assign({ value: "false" }, { children: t('No') }))] }))] })) })));
|
121
|
+
}
|
122
|
+
exports.SettingsDialog = SettingsDialog;
|