@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
@@ -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;