@ansible/ansible-ui-framework 0.0.356 → 0.0.357

Sign up to get free protection for your applications and to get access to all the features.
@@ -67,11 +67,10 @@ export type PageTableProps<T extends object> = {
67
67
  * ```
68
68
  */
69
69
  export declare function PageTable<T extends object>(props: PageTableProps<T>): JSX.Element;
70
- type CellFn<T extends object> = (item: T) => ReactNode;
71
- export interface ITableColumn<T extends object> {
70
+ type CellFn<T extends object, R> = (item: T) => R;
71
+ export interface ITableColumnCommon<T extends object> {
72
72
  id?: string;
73
73
  header: string;
74
- cell: CellFn<T>;
75
74
  minWidth?: number;
76
75
  maxWidth?: number;
77
76
  enabled?: boolean;
@@ -79,17 +78,48 @@ export interface ITableColumn<T extends object> {
79
78
  sort?: string;
80
79
  defaultSortDirection?: 'asc' | 'desc';
81
80
  defaultSort?: boolean;
82
- /**
83
- * @deprecated The method should not be used
84
- */
85
- type?: 'labels' | 'progress' | 'date';
86
- /**
87
- * @deprecated The method should not be used
88
- */
89
- sortFn?: (l: T, r: T) => number;
90
- card?: 'description' | 'hidden' | 'count';
91
- list?: 'primary' | 'secondary';
92
- hideLabel?: boolean;
93
- primary?: boolean;
81
+ icon?: (item: T) => ReactNode;
82
+ card?: 'name' | 'subtitle' | 'description' | 'hidden';
83
+ list?: 'name' | 'subtitle' | 'description' | 'hidden' | 'primary' | 'secondary';
94
84
  }
85
+ export declare enum TableColumnSomething {
86
+ 'id' = 0,
87
+ 'name' = 1,
88
+ 'description' = 2
89
+ }
90
+ export declare enum TableColumnCardType {
91
+ 'description' = 0,
92
+ 'hidden' = 1,
93
+ 'count' = 2
94
+ }
95
+ export interface ITableColumnTypeReactNode<T extends object> extends ITableColumnCommon<T> {
96
+ type?: undefined;
97
+ value?: CellFn<T, string | string[] | number | boolean>;
98
+ cell: CellFn<T, ReactNode | undefined>;
99
+ }
100
+ export interface ITableColumnTypeCount<T extends object> extends ITableColumnCommon<T> {
101
+ type: 'count';
102
+ value: CellFn<T, number | undefined>;
103
+ }
104
+ export interface ITableColumnTypeLabels<T extends object> extends ITableColumnCommon<T> {
105
+ type: 'labels';
106
+ value: CellFn<T, string[] | undefined>;
107
+ }
108
+ export interface ITableColumnTypeDateTime<T extends object> extends ITableColumnCommon<T> {
109
+ type: 'datetime';
110
+ value: CellFn<T, number | string | undefined>;
111
+ }
112
+ export interface ITableColumnTypeDescription<T extends object> extends ITableColumnCommon<T> {
113
+ type: 'description';
114
+ value: CellFn<T, string | undefined>;
115
+ }
116
+ export interface ITableColumnTypeText<T extends object> extends ITableColumnCommon<T> {
117
+ type: 'text';
118
+ value: CellFn<T, string | undefined>;
119
+ }
120
+ export type ITableColumn<T extends object> = ITableColumnTypeReactNode<T> | ITableColumnTypeDateTime<T> | ITableColumnTypeLabels<T> | ITableColumnTypeCount<T> | ITableColumnTypeText<T> | ITableColumnTypeDescription<T>;
121
+ export declare function TableColumnCell<T extends object>(props: {
122
+ item: T;
123
+ column?: ITableColumn<T>;
124
+ }): JSX.Element;
95
125
  export {};
package/cjs/PageTable.js CHANGED
@@ -30,13 +30,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
30
30
  return (mod && mod.__esModule) ? mod : { "default": mod };
31
31
  };
32
32
  Object.defineProperty(exports, "__esModule", { value: true });
33
- exports.PageTable = exports.TablePage = void 0;
33
+ exports.TableColumnCell = exports.TableColumnCardType = exports.TableColumnSomething = exports.PageTable = exports.TablePage = void 0;
34
34
  var jsx_runtime_1 = require("react/jsx-runtime");
35
35
  var react_core_1 = require("@patternfly/react-core");
36
36
  var react_icons_1 = require("@patternfly/react-icons");
37
37
  var react_table_1 = require("@patternfly/react-table");
38
38
  var resize_observer_1 = __importDefault(require("@react-hook/resize-observer"));
39
39
  var react_1 = require("react");
40
+ var DateTimeCell_1 = require("./cells/DateTimeCell");
41
+ var LabelsCell_1 = require("./cells/LabelsCell");
42
+ var TextCell_1 = require("./cells/TextCell");
40
43
  var Scrollable_1 = require("./components/Scrollable");
41
44
  var useBreakPoint_1 = require("./components/useBreakPoint");
42
45
  var PageBody_1 = require("./PageBody");
@@ -71,7 +74,7 @@ exports.TablePage = TablePage;
71
74
  */
72
75
  function PageTable(props) {
73
76
  var _a;
74
- var disableBodyPadding = props.disableBodyPadding;
77
+ // const { disableBodyPadding } = props
75
78
  var toolbarActions = props.toolbarActions, filters = props.filters, error = props.error, itemCount = props.itemCount;
76
79
  var _b = (0, PageColumnModal_1.useColumnModal)(props.tableColumns), openColumnModal = _b.openColumnModal, columnModal = _b.columnModal, managedColumns = _b.managedColumns;
77
80
  var showSelect = (toolbarActions === null || toolbarActions === void 0 ? void 0 : toolbarActions.find(function (toolbarAction) { return TypedActions_1.TypedActionType.bulk === toolbarAction.type; })) !==
@@ -88,6 +91,7 @@ function PageTable(props) {
88
91
  : PageTableViewType_1.PageTableViewTypeE.Cards);
89
92
  }), 2), viewType = _c[0], setViewType = _c[1];
90
93
  var settings = (0, Settings_1.useSettings)();
94
+ var usePadding = (0, useBreakPoint_1.useBreakpoint)('md') && props.disableBodyPadding !== true;
91
95
  if (error) {
92
96
  return ((0, jsx_runtime_1.jsx)("div", __assign({ style: {
93
97
  backgroundColor: settings.theme === 'dark' ? 'var(--pf-global--BackgroundColor--300)' : undefined,
@@ -102,7 +106,14 @@ function PageTable(props) {
102
106
  if (itemCount === undefined) {
103
107
  return ((0, jsx_runtime_1.jsx)(react_core_1.PageSection, __assign({ isFilled: true, variant: "light" }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Bullseye, { children: (0, jsx_runtime_1.jsx)(react_core_1.Spinner, {}) }) })));
104
108
  }
105
- return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(PageToolbar_1.PageTableToolbar, __assign({}, props, { openColumnModal: openColumnModal, showSelect: showSelect, viewType: viewType, setViewType: setViewType })), viewType === PageTableViewType_1.PageTableViewTypeE.Table && ((0, jsx_runtime_1.jsx)(PageBody_1.PageBody, __assign({ disablePadding: disableBodyPadding }, { children: (0, jsx_runtime_1.jsx)(PageTableView, __assign({}, props, { tableColumns: managedColumns })) }))), viewType === PageTableViewType_1.PageTableViewTypeE.List && ((0, jsx_runtime_1.jsx)(PageBody_1.PageBody, { children: (0, jsx_runtime_1.jsx)(Scrollable_1.Scrollable, { children: (0, jsx_runtime_1.jsx)(PageTableList_1.PageTableList, __assign({}, props, { showSelect: showSelect })) }) })), viewType === PageTableViewType_1.PageTableViewTypeE.Cards && ((0, jsx_runtime_1.jsx)(Scrollable_1.Scrollable, { children: (0, jsx_runtime_1.jsx)(PageTableCards_1.PageTableCards, __assign({}, props, { showSelect: showSelect })) })), (!props.autoHidePagination || ((_a = props.itemCount) !== null && _a !== void 0 ? _a : 0) > props.perPage) && ((0, jsx_runtime_1.jsx)(PagePagination_1.PagePagination, __assign({}, props))), columnModal] }));
109
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(PageToolbar_1.PageTableToolbar, __assign({}, props, { openColumnModal: openColumnModal, showSelect: showSelect, viewType: viewType, setViewType: setViewType })), viewType === PageTableViewType_1.PageTableViewTypeE.Table && ((0, jsx_runtime_1.jsx)(PageBody_1.PageBody, __assign({ disablePadding: true }, { children: (0, jsx_runtime_1.jsx)(PageTableView, __assign({}, props, { tableColumns: managedColumns })) }))), viewType === PageTableViewType_1.PageTableViewTypeE.List && ((0, jsx_runtime_1.jsx)(Scrollable_1.Scrollable, { children: (0, jsx_runtime_1.jsx)(react_core_1.PageSection, __assign({ padding: { default: 'noPadding', md: 'padding' } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
110
+ borderLeft: usePadding
111
+ ? 'thin solid var(--pf-global--BorderColor--100)'
112
+ : undefined,
113
+ borderRight: usePadding
114
+ ? 'thin solid var(--pf-global--BorderColor--100)'
115
+ : undefined,
116
+ } }, { children: (0, jsx_runtime_1.jsx)(PageTableList_1.PageTableList, __assign({}, props, { showSelect: showSelect })) })) })) })), viewType === PageTableViewType_1.PageTableViewTypeE.Cards && ((0, jsx_runtime_1.jsx)(Scrollable_1.Scrollable, { children: (0, jsx_runtime_1.jsx)(PageTableCards_1.PageTableCards, __assign({}, props, { showSelect: showSelect })) })), (!props.autoHidePagination || ((_a = props.itemCount) !== null && _a !== void 0 ? _a : 0) > props.perPage) && ((0, jsx_runtime_1.jsx)(PagePagination_1.PagePagination, __assign({}, props))), columnModal] }));
106
117
  }
107
118
  exports.PageTable = PageTable;
108
119
  function PageTableView(props) {
@@ -229,7 +240,7 @@ function TableCells(props) {
229
240
  return ((0, jsx_runtime_1.jsxs)(react_1.Fragment, { children: [columns
230
241
  .filter(function (column) { return column.enabled !== false; })
231
242
  .map(function (column) {
232
- return ((0, jsx_runtime_1.jsx)(react_table_1.Td, __assign({ dataLabel: column.header, modifier: "nowrap" }, { children: column.cell(item) }), column.header));
243
+ return ((0, jsx_runtime_1.jsx)(react_table_1.Td, __assign({ dataLabel: column.header, modifier: "nowrap" }, { children: (0, jsx_runtime_1.jsx)(TableColumnCell, { item: item, column: column }) }), column.header));
233
244
  }), actions !== undefined && actions.length > 0 && ((0, jsx_runtime_1.jsx)(react_table_1.Th
234
245
  // isActionCell
235
246
  , __assign({
@@ -247,3 +258,36 @@ function TableCells(props) {
247
258
  // dropdownDirection="up" // TODO handle....
248
259
  items: actions }) })) })))] }));
249
260
  }
261
+ var TableColumnSomething;
262
+ (function (TableColumnSomething) {
263
+ TableColumnSomething[TableColumnSomething["id"] = 0] = "id";
264
+ TableColumnSomething[TableColumnSomething["name"] = 1] = "name";
265
+ TableColumnSomething[TableColumnSomething["description"] = 2] = "description";
266
+ })(TableColumnSomething = exports.TableColumnSomething || (exports.TableColumnSomething = {}));
267
+ var TableColumnCardType;
268
+ (function (TableColumnCardType) {
269
+ TableColumnCardType[TableColumnCardType["description"] = 0] = "description";
270
+ TableColumnCardType[TableColumnCardType["hidden"] = 1] = "hidden";
271
+ TableColumnCardType[TableColumnCardType["count"] = 2] = "count";
272
+ })(TableColumnCardType = exports.TableColumnCardType || (exports.TableColumnCardType = {}));
273
+ function TableColumnCell(props) {
274
+ var _a, _b;
275
+ var item = props.item, column = props.column;
276
+ if (!column)
277
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
278
+ switch (column.type) {
279
+ case 'text':
280
+ return (0, jsx_runtime_1.jsx)(TextCell_1.TextCell, { text: column.value(item) });
281
+ case 'labels':
282
+ return (0, jsx_runtime_1.jsx)(LabelsCell_1.LabelsCell, { labels: (_a = column.value(item)) !== null && _a !== void 0 ? _a : [] });
283
+ case 'description':
284
+ return (0, jsx_runtime_1.jsx)(TextCell_1.TextCell, { text: column.value(item) });
285
+ case 'count':
286
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: (_b = column.value(item)) !== null && _b !== void 0 ? _b : '-' });
287
+ case 'datetime':
288
+ return (0, jsx_runtime_1.jsx)(DateTimeCell_1.SinceCell, { value: column.value(item) });
289
+ default:
290
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: column.cell(item) });
291
+ }
292
+ }
293
+ exports.TableColumnCell = TableColumnCell;
@@ -6,7 +6,7 @@ export interface IPageTableCard {
6
6
  id: string | number;
7
7
  icon?: ReactNode;
8
8
  title: ReactNode;
9
- description?: ReactNode;
9
+ subtitle?: ReactNode;
10
10
  cardBody: ReactNode;
11
11
  labels?: {
12
12
  label: string;
@@ -10,6 +10,17 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
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
+ };
13
24
  Object.defineProperty(exports, "__esModule", { value: true });
14
25
  exports.useColumnsToTableCardFn = exports.PageTableCard = void 0;
15
26
  var jsx_runtime_1 = require("react/jsx-runtime");
@@ -19,6 +30,7 @@ var react_core_1 = require("@patternfly/react-core");
19
30
  var react_1 = require("react");
20
31
  var Details_1 = require("./components/Details");
21
32
  var IconWrapper_1 = require("./components/IconWrapper");
33
+ var PageTable_1 = require("./PageTable");
22
34
  var TypedActions_1 = require("./TypedActions");
23
35
  function PageTableCard(props) {
24
36
  var _a;
@@ -38,65 +50,107 @@ function PageTableCard(props) {
38
50
  return ((0, jsx_runtime_1.jsxs)(react_core_1.Card, __assign({ id: card.id, isFlat: true, isLarge: true, isRounded: true, isSelectable: isItemSelected, isSelected: isItemSelected, style: {
39
51
  transition: 'box-shadow 0.25s',
40
52
  cursor: 'default',
41
- } }, { children: [(0, jsx_runtime_1.jsxs)(react_core_1.CardHeader, { children: [(0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true, style: { width: '100%' } }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SplitItem, __assign({ isFilled: true }, { children: (0, jsx_runtime_1.jsxs)("div", __assign({ style: { display: 'flex', alignItems: 'center' } }, { children: [card.icon && ((0, jsx_runtime_1.jsx)("div", __assign({ style: {
42
- display: 'flex',
43
- height: 40,
44
- width: 40,
45
- marginTop: -20,
46
- marginBottom: -20,
47
- marginRight: 12,
48
- alignItems: 'center',
49
- justifyItems: 'stretch',
50
- } }, { children: (0, jsx_runtime_1.jsx)(IconWrapper_1.IconWrapper, __assign({ size: "lg" }, { children: card.icon })) }))), (0, jsx_runtime_1.jsxs)(react_core_1.Stack, { children: [(0, jsx_runtime_1.jsx)(react_core_1.CardTitle, { children: card.title }), card.description ? ((0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7 } }, { children: card.description }))) : (defaultCardSubtitle && (0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small" }, { children: defaultCardSubtitle })))] })] })) })), card.badge && card.badgeTooltip && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: (0, jsx_runtime_1.jsx)("div", __assign({ onClick: function (e) { return e.stopPropagation(); } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Popover, __assign({ headerContent: card.badgeTooltipTitle, bodyContent: card.badgeTooltip, removeFindDomNode: true }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Label, __assign({ color: card.badgeColor }, { children: card.badge })) })) })) })), card.badge && !card.badgeTooltip && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: (0, jsx_runtime_1.jsx)(react_core_1.Label, __assign({ color: card.badgeColor }, { children: card.badge })) }))] })), showActions && ((0, jsx_runtime_1.jsxs)(react_core_1.CardActions, { children: [itemActions && itemActions.length && ((0, jsx_runtime_1.jsx)(TypedActions_1.TypedActions, { actions: itemActions, position: react_core_1.DropdownPosition.right, selectedItem: item, iconOnly: true, collapse: "always" })), showSelect && ((0, jsx_runtime_1.jsx)(react_core_1.Checkbox, { isChecked: isSelected === null || isSelected === void 0 ? void 0 : isSelected(item), onChange: onSelectClick,
53
+ maxWidth: '100%',
54
+ overflow: 'hidden',
55
+ } }, { children: [(0, jsx_runtime_1.jsxs)(react_core_1.CardHeader, __assign({ style: { display: 'flex', flexWrap: 'nowrap', maxWidth: '100%', overflow: 'hidden' } }, { children: [(0, jsx_runtime_1.jsxs)("div", __assign({ style: {
56
+ display: 'flex',
57
+ flexWrap: 'nowrap',
58
+ maxWidth: '100%',
59
+ overflow: 'hidden',
60
+ } }, { children: [(0, jsx_runtime_1.jsxs)("div", __assign({ style: {
61
+ display: 'flex',
62
+ flexWrap: 'wrap',
63
+ alignItems: 'center',
64
+ gap: 16,
65
+ maxWidth: '100%',
66
+ } }, { children: [card.icon && (0, jsx_runtime_1.jsx)(IconWrapper_1.IconWrapper, __assign({ size: "xl" }, { children: card.icon })), (0, jsx_runtime_1.jsxs)("div", __assign({ style: { maxWidth: '100%' } }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.CardTitle, { children: card.title }), card.subtitle ? ((0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7 } }, { children: card.subtitle }))) : (defaultCardSubtitle && ((0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7 } }, { children: defaultCardSubtitle }))))] }))] })), card.badge && card.badgeTooltip && ((0, jsx_runtime_1.jsx)(react_core_1.FlexItem, { children: (0, jsx_runtime_1.jsx)("div", __assign({ onClick: function (e) { return e.stopPropagation(); } }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Popover, __assign({ headerContent: card.badgeTooltipTitle, bodyContent: card.badgeTooltip, removeFindDomNode: true }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Label, __assign({ color: card.badgeColor }, { children: card.badge })) })) })) })), card.badge && !card.badgeTooltip && ((0, jsx_runtime_1.jsx)(react_core_1.FlexItem, { children: (0, jsx_runtime_1.jsx)(react_core_1.Label, __assign({ color: card.badgeColor }, { children: card.badge })) }))] })), showActions && ((0, jsx_runtime_1.jsxs)(react_core_1.CardActions, { children: [itemActions && itemActions.length && ((0, jsx_runtime_1.jsx)(TypedActions_1.TypedActions, { actions: itemActions, position: react_core_1.DropdownPosition.right, selectedItem: item, iconOnly: true, collapse: "always" })), showSelect && ((0, jsx_runtime_1.jsx)(react_core_1.Checkbox, { isChecked: isSelected === null || isSelected === void 0 ? void 0 : isSelected(item), onChange: onSelectClick,
51
67
  // aria-label="card checkbox example"
52
- id: "check-1" }))] }))] }), card.cardBody, card.labels && ((0, jsx_runtime_1.jsx)(react_core_1.CardFooter, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
68
+ id: "check-1" }))] }))] })), card.cardBody, card.labels && ((0, jsx_runtime_1.jsx)(react_core_1.CardFooter, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
53
69
  display: 'flex',
54
70
  flexDirection: 'row',
55
71
  alignItems: 'end',
56
72
  gap: 16,
57
- } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { flexGrow: 1 } }, { children: card.labels && ((0, jsx_runtime_1.jsx)(react_core_1.LabelGroup, { children: card.labels.map(function (item) { return ((0, jsx_runtime_1.jsx)(react_core_1.Label, __assign({ color: item.color }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Truncate, { content: item.label, style: { minWidth: 0 } }) }), item.label)); }) })) })) })) })), card.alertTitle && ((0, jsx_runtime_1.jsx)(react_core_1.Alert, __assign({ title: card.alertTitle, isInline: true, variant: card.alertVariant }, { children: card.alertContent })))] }), (_a = card.id) !== null && _a !== void 0 ? _a : card.title));
73
+ } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { flexGrow: 1 } }, { children: card.labels && ((0, jsx_runtime_1.jsx)(react_core_1.LabelGroup, __assign({ numLabels: 999 }, { children: card.labels.map(function (item) { return ((0, jsx_runtime_1.jsx)(react_core_1.Label, __assign({ color: item.color }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Truncate, { content: item.label, style: { minWidth: 0 } }) }), item.label)); }) }))) })) })) })), card.alertTitle && ((0, jsx_runtime_1.jsx)(react_core_1.Alert, __assign({ title: card.alertTitle, isInline: true, variant: card.alertVariant }, { children: card.alertContent })))] }), (_a = card.id) !== null && _a !== void 0 ? _a : card.title));
58
74
  }
59
75
  exports.PageTableCard = PageTableCard;
60
76
  function useColumnsToTableCardFn(columns, keyFn) {
61
- var cardData = (0, react_1.useMemo)(function () {
62
- var _a;
63
- var cols = columns.filter(function (column) { return column.card !== 'hidden'; });
64
- var countColumns = cols.filter(function (column) { return column.card === 'count'; });
65
- cols = cols.filter(function (column) { return column.card !== 'count'; });
66
- var nameColumn = (_a = cols.find(function (column) { return column.primary; })) !== null && _a !== void 0 ? _a : cols[0];
67
- cols = cols.filter(function (column) { return column !== nameColumn; });
68
- var descriptionColumn = cols.find(function (column) { return column.card === 'description'; });
69
- if (descriptionColumn) {
70
- cols = cols.filter(function (column) { return column !== descriptionColumn; });
77
+ var data = (0, react_1.useMemo)(function () {
78
+ var e_1, _a;
79
+ var nameColumn;
80
+ var subtitleColumn;
81
+ var descriptionColumn;
82
+ var countColumns = [];
83
+ var labelColumn;
84
+ var cardColumns = [];
85
+ try {
86
+ for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
87
+ var column = columns_1_1.value;
88
+ switch (column.type) {
89
+ case 'description':
90
+ if (!descriptionColumn)
91
+ descriptionColumn = column;
92
+ break;
93
+ case 'labels':
94
+ if (!labelColumn)
95
+ labelColumn = column;
96
+ break;
97
+ case 'count':
98
+ countColumns.push(column);
99
+ break;
100
+ default:
101
+ switch (column.card) {
102
+ case 'name':
103
+ nameColumn = column;
104
+ break;
105
+ case 'subtitle':
106
+ subtitleColumn = column;
107
+ break;
108
+ case 'description':
109
+ descriptionColumn = column;
110
+ break;
111
+ case 'hidden':
112
+ break;
113
+ default:
114
+ cardColumns.push(column);
115
+ break;
116
+ }
117
+ break;
118
+ }
119
+ }
120
+ }
121
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
122
+ finally {
123
+ try {
124
+ if (columns_1_1 && !columns_1_1.done && (_a = columns_1.return)) _a.call(columns_1);
125
+ }
126
+ finally { if (e_1) throw e_1.error; }
71
127
  }
72
128
  return {
73
129
  nameColumn: nameColumn,
130
+ subtitleColumn: subtitleColumn,
74
131
  descriptionColumn: descriptionColumn,
75
132
  countColumns: countColumns,
76
- columns: cols,
133
+ cardColumns: cardColumns,
134
+ labelColumn: labelColumn,
77
135
  };
78
136
  }, [columns]);
137
+ var nameColumn = data.nameColumn, subtitleColumn = data.subtitleColumn, descriptionColumn = data.descriptionColumn, countColumns = data.countColumns, cardColumns = data.cardColumns, labelColumn = data.labelColumn;
79
138
  return (0, react_1.useMemo)(function () {
80
139
  return function (item) {
81
140
  var _a, _b;
82
141
  var pageTableCard = {
83
142
  id: keyFn(item),
84
- title: (_a = cardData.nameColumn) === null || _a === void 0 ? void 0 : _a.cell(item),
85
- description: (_b = cardData.descriptionColumn) === null || _b === void 0 ? void 0 : _b.cell(item),
86
- cardBody: ((0, jsx_runtime_1.jsx)(react_core_1.CardBody, { children: (0, jsx_runtime_1.jsxs)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: [cardData.columns.map(function (column) { return ((0, jsx_runtime_1.jsx)(Details_1.Detail, __assign({ label: column.hideLabel ? undefined : column.header }, { children: column.cell(item) }), column.id)); }), cardData.countColumns.length > 0 && ((0, jsx_runtime_1.jsx)(Details_1.Detail, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { display: 'flex', gap: 16 } }, { children: cardData.countColumns.map(function (column, i) { return ((0, jsx_runtime_1.jsxs)("div", __assign({ style: { display: 'flex', gap: 6, alignItems: 'baseline' } }, { children: [column.cell(item), (0, jsx_runtime_1.jsx)("small", __assign({ style: { opacity: 0.7 } }, { children: column.header }))] }), i)); }) })) }))] })) })),
87
- // labels: [{ label: 'hhh' }],
143
+ icon: (_a = nameColumn === null || nameColumn === void 0 ? void 0 : nameColumn.icon) === null || _a === void 0 ? void 0 : _a.call(nameColumn, item),
144
+ title: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: nameColumn, item: item }),
145
+ subtitle: subtitleColumn && (!subtitleColumn.value || subtitleColumn.value(item)) && ((0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: subtitleColumn, item: item })),
146
+ cardBody: ((0, jsx_runtime_1.jsx)(react_core_1.CardBody, { children: (0, jsx_runtime_1.jsxs)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: [descriptionColumn && (!descriptionColumn.value || descriptionColumn.value(item)) && ((0, jsx_runtime_1.jsx)(Details_1.Detail, { children: descriptionColumn.type === 'description' ? ((0, jsx_runtime_1.jsx)("div", { children: descriptionColumn.value(item) })) : ((0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: descriptionColumn, item: item })) }, descriptionColumn.id)), cardColumns.map(function (column) { return ((0, jsx_runtime_1.jsx)(Details_1.Detail, __assign({ label: column.header }, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: column, item: item }) }), column.id)); }), countColumns.length > 0 && ((0, jsx_runtime_1.jsx)(Details_1.Detail, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: { display: 'flex', gap: 16, marginTop: 8, flexWrap: 'wrap' } }, { children: countColumns.map(function (column, i) { return ((0, jsx_runtime_1.jsxs)("div", __assign({ style: { display: 'flex', gap: 6, alignItems: 'baseline' } }, { children: [(0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: column, item: item }), (0, jsx_runtime_1.jsx)("small", __assign({ style: { opacity: 0.7 } }, { children: column.header }))] }), i)); }) })) }))] })) })),
147
+ labels: labelColumn && ((_b = labelColumn.value(item)) === null || _b === void 0 ? void 0 : _b.map(function (label) { return ({ label: label }); })),
88
148
  };
89
- if (cardData.columns.length === 0 && cardData.countColumns.length === 0) {
149
+ if (!descriptionColumn && cardColumns.length === 0 && countColumns.length === 0) {
90
150
  pageTableCard.cardBody = undefined;
91
151
  }
92
152
  return pageTableCard;
93
153
  };
94
- }, [
95
- cardData.columns,
96
- cardData.countColumns,
97
- cardData.descriptionColumn,
98
- cardData.nameColumn,
99
- keyFn,
100
- ]);
154
+ }, [cardColumns, countColumns, descriptionColumn, labelColumn, nameColumn, subtitleColumn, keyFn]);
101
155
  }
102
156
  exports.useColumnsToTableCardFn = useColumnsToTableCardFn;
@@ -21,7 +21,7 @@ function PageTableCards(props) {
21
21
  var keyFn = props.keyFn, items = props.pageItems, tableColumns = props.tableColumns, isSelected = props.isSelected, selectItem = props.selectItem, unselectItem = props.unselectItem, rowActions = props.rowActions, showSelect = props.showSelect, defaultCardSubtitle = props.defaultCardSubtitle;
22
22
  var itemToCardFn = (0, PageTableCard_1.useColumnsToTableCardFn)(tableColumns, keyFn);
23
23
  var catalogCards = (0, react_1.useMemo)(function () {
24
- return ((0, jsx_runtime_1.jsx)(Grid_1.Grid, __assign({ size: 470 }, { children: items === null || items === void 0 ? void 0 : items.map(function (item) { return ((0, jsx_runtime_1.jsx)(PageTableCard_1.PageTableCard, { item: item, itemToCardFn: itemToCardFn, isSelected: isSelected, selectItem: selectItem, unselectItem: unselectItem, itemActions: rowActions, showSelect: showSelect, defaultCardSubtitle: defaultCardSubtitle }, keyFn(item))); }) })));
24
+ return ((0, jsx_runtime_1.jsx)(Grid_1.Grid, __assign({ size: 400 }, { children: items === null || items === void 0 ? void 0 : items.map(function (item) { return ((0, jsx_runtime_1.jsx)(PageTableCard_1.PageTableCard, { item: item, itemToCardFn: itemToCardFn, isSelected: isSelected, selectItem: selectItem, unselectItem: unselectItem, itemActions: rowActions, showSelect: showSelect, defaultCardSubtitle: defaultCardSubtitle }, keyFn(item))); }) })));
25
25
  }, [
26
26
  items,
27
27
  keyFn,
@@ -17,10 +17,11 @@ var jsx_runtime_1 = require("react/jsx-runtime");
17
17
  /* eslint-disable @typescript-eslint/no-empty-function */
18
18
  var react_core_1 = require("@patternfly/react-core");
19
19
  var Details_1 = require("./components/Details");
20
+ var PageTable_1 = require("./PageTable");
20
21
  function TableDetails(props) {
21
22
  var item = props.item, columns = props.columns;
22
23
  if (!item)
23
24
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
24
- return ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: columns.map(function (column) { return ((0, jsx_runtime_1.jsx)(Details_1.Detail, __assign({ label: column.hideLabel ? undefined : column.header }, { children: column.cell(item) }), column.id)); }) })));
25
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: columns.map(function (column) { return ((0, jsx_runtime_1.jsx)(Details_1.Detail, __assign({ label: column.header }, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: column, item: item }) }), column.id)); }) })));
25
26
  }
26
27
  exports.TableDetails = TableDetails;
@@ -10,33 +10,95 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
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
+ };
13
24
  Object.defineProperty(exports, "__esModule", { value: true });
14
25
  exports.useColumnsToDataList = exports.PageTableList = void 0;
15
26
  var jsx_runtime_1 = require("react/jsx-runtime");
16
27
  var react_core_1 = require("@patternfly/react-core");
17
28
  var react_1 = require("react");
29
+ var IconWrapper_1 = require("./components/IconWrapper");
30
+ var PageTable_1 = require("./PageTable");
18
31
  var TypedActions_1 = require("./TypedActions");
19
32
  function PageTableList(props) {
20
33
  var keyFn = props.keyFn, pageItems = props.pageItems, tableColumns = props.tableColumns, isSelected = props.isSelected, selectItem = props.selectItem, unselectItem = props.unselectItem, rowActions = props.rowActions, defaultCardSubtitle = props.defaultCardSubtitle, showSelect = props.showSelect;
21
34
  var columnsToDataList = useColumnsToDataList(tableColumns, keyFn, isSelected, selectItem, unselectItem, rowActions, defaultCardSubtitle, showSelect);
22
- return ((0, jsx_runtime_1.jsx)(react_core_1.DataList, __assign({ "aria-label": "TODO", style: { marginTop: -1 } }, { children: pageItems === null || pageItems === void 0 ? void 0 : pageItems.map(columnsToDataList) })));
35
+ return ((0, jsx_runtime_1.jsx)(react_core_1.DataList, __assign({ "aria-label": "TODO", style: { marginTop: -1, maxWidth: '100%', overflow: 'hidden' } }, { children: pageItems === null || pageItems === void 0 ? void 0 : pageItems.map(columnsToDataList) })));
23
36
  }
24
37
  exports.PageTableList = PageTableList;
25
38
  function useColumnsToDataList(tableColumns, keyFn, isSelected, selectItem, unselectItem, rowActions, defaultCardSubtitle, showSelect) {
26
39
  var data = (0, react_1.useMemo)(function () {
27
- var _a;
28
- var cols = tableColumns.filter(function (column) { return column.card !== 'hidden'; });
29
- var nameColumn = (_a = cols.find(function (column) { return column.primary; })) !== null && _a !== void 0 ? _a : cols[0];
30
- cols = cols.filter(function (column) { return column !== nameColumn; });
31
- var descriptionColumn = cols.find(function (column) { return column.card === 'description'; });
32
- if (descriptionColumn) {
33
- cols = cols.filter(function (column) { return column !== descriptionColumn; });
40
+ var e_1, _a;
41
+ var nameColumn;
42
+ var subtitleColumn;
43
+ var descriptionColumn;
44
+ var countColumns = [];
45
+ var labelColumn;
46
+ var primaryColumns = [];
47
+ var secondaryColumns = [];
48
+ try {
49
+ for (var tableColumns_1 = __values(tableColumns), tableColumns_1_1 = tableColumns_1.next(); !tableColumns_1_1.done; tableColumns_1_1 = tableColumns_1.next()) {
50
+ var column = tableColumns_1_1.value;
51
+ switch (column.type) {
52
+ case 'description':
53
+ if (!descriptionColumn)
54
+ descriptionColumn = column;
55
+ break;
56
+ case 'labels':
57
+ if (!labelColumn)
58
+ labelColumn = column;
59
+ break;
60
+ case 'count':
61
+ countColumns.push(column);
62
+ break;
63
+ default:
64
+ switch (column.list) {
65
+ case 'name':
66
+ nameColumn = column;
67
+ break;
68
+ case 'subtitle':
69
+ subtitleColumn = column;
70
+ break;
71
+ case 'description':
72
+ descriptionColumn = column;
73
+ break;
74
+ case 'hidden':
75
+ break;
76
+ case 'secondary':
77
+ secondaryColumns.push(column);
78
+ break;
79
+ default:
80
+ primaryColumns.push(column);
81
+ break;
82
+ }
83
+ break;
84
+ }
85
+ }
86
+ }
87
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
88
+ finally {
89
+ try {
90
+ if (tableColumns_1_1 && !tableColumns_1_1.done && (_a = tableColumns_1.return)) _a.call(tableColumns_1);
91
+ }
92
+ finally { if (e_1) throw e_1.error; }
34
93
  }
35
94
  return {
36
95
  nameColumn: nameColumn,
96
+ subtitleColumn: subtitleColumn,
37
97
  descriptionColumn: descriptionColumn,
38
- columns: cols.filter(function (column) { return column.list !== 'secondary'; }),
39
- secondary: cols.filter(function (column) { return column.list === 'secondary'; }),
98
+ countColumns: countColumns,
99
+ primaryColumns: primaryColumns,
100
+ secondaryColumns: secondaryColumns,
101
+ labelColumn: labelColumn,
40
102
  };
41
103
  }, [tableColumns]);
42
104
  var onSelectClick = (0, react_1.useCallback)(function (item) {
@@ -47,35 +109,45 @@ function useColumnsToDataList(tableColumns, keyFn, isSelected, selectItem, unsel
47
109
  selectItem === null || selectItem === void 0 ? void 0 : selectItem(item);
48
110
  }
49
111
  }, [isSelected, selectItem, unselectItem]);
112
+ var nameColumn = data.nameColumn, subtitleColumn = data.subtitleColumn, descriptionColumn = data.descriptionColumn, countColumns = data.countColumns, primaryColumns = data.primaryColumns, secondaryColumns = data.secondaryColumns, labelColumn = data.labelColumn;
50
113
  return (0, react_1.useCallback)(function (item) {
51
- var _a;
52
114
  var key = keyFn(item);
53
115
  var isItemSelected = isSelected === null || isSelected === void 0 ? void 0 : isSelected(item);
54
116
  return ((0, jsx_runtime_1.jsx)(react_core_1.DataListItem, __assign({ "aria-labelledby": "data-list-".concat(key), isExpanded: isItemSelected }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.DataListItemRow, { children: [showSelect && ((0, jsx_runtime_1.jsx)(react_core_1.DataListCheck, { "aria-labelledby": "data-list-check-".concat(key), name: "data-list-check-".concat(key), isChecked: isSelected === null || isSelected === void 0 ? void 0 : isSelected(item), onClick: function () { return onSelectClick(item); } })), (0, jsx_runtime_1.jsx)(react_core_1.DataListItemCells, { dataListCells: [
55
- (0, jsx_runtime_1.jsx)(react_core_1.DataListCell, __assign({ width: 5 }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Flex, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Stack, __assign({ hasGutter: true }, { children: [(0, jsx_runtime_1.jsxs)(react_core_1.Stack, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Title, __assign({ headingLevel: "h2", style: { marginTop: -4 } }, { children: (0, jsx_runtime_1.jsx)("span", __assign({ id: "data-list-".concat(key) }, { children: (_a = data.nameColumn) === null || _a === void 0 ? void 0 : _a.cell(item) })) })), data.descriptionColumn ? ((0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7 } }, { children: data.descriptionColumn.cell(item) }))) : (defaultCardSubtitle && ((0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7 } }, { children: defaultCardSubtitle }))))] }), data.columns.length > 0 && ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: data.columns.map(function (column) {
56
- var value = column.cell(item);
57
- if (!value)
58
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
59
- return ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionListGroup, { children: [!column.hideLabel && ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionListTerm, { children: (0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7, whiteSpace: 'nowrap' } }, { children: column.header })) })), (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, { children: column.cell(item) })] }, column.header));
60
- }) })))] })) }) }), "primary"),
61
- data.secondary.length > 0 ? ((0, jsx_runtime_1.jsx)(react_core_1.DataListCell, { children: (0, jsx_runtime_1.jsx)(react_core_1.Flex, { children: (0, jsx_runtime_1.jsx)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: data.secondary.map(function (column) {
62
- var value = column.cell(item);
63
- if (!value)
64
- return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
65
- return ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionListGroup, { children: [!column.hideLabel && ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionListTerm, { children: (0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7, whiteSpace: 'nowrap' } }, { children: column.header })) })), (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, { children: column.cell(item) })] }, column.header));
66
- }) })) }) }, "secondary")) : null,
117
+ (0, jsx_runtime_1.jsx)(react_core_1.DataListCell, __assign({ width: 5 }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Flex, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Stack, __assign({ hasGutter: true }, { children: [(0, jsx_runtime_1.jsxs)(react_core_1.Flex, __assign({ alignItems: { default: 'alignItemsCenter' } }, { children: [(nameColumn === null || nameColumn === void 0 ? void 0 : nameColumn.icon) && ((0, jsx_runtime_1.jsx)(IconWrapper_1.IconWrapper, __assign({ size: "xl" }, { children: nameColumn === null || nameColumn === void 0 ? void 0 : nameColumn.icon(item) }))), (0, jsx_runtime_1.jsxs)(react_core_1.Stack, { children: [(0, jsx_runtime_1.jsx)(react_core_1.Title, __assign({ headingLevel: "h2", style: { marginTop: -4, fontWeight: 'bold' } }, { children: (0, jsx_runtime_1.jsx)("span", __assign({ id: "data-list-".concat(key) }, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: nameColumn, item: item }) })) })), subtitleColumn ? ((0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7 } }, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: subtitleColumn, item: item }) }))) : (defaultCardSubtitle && ((0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7 } }, { children: defaultCardSubtitle }))))] })] })), (descriptionColumn ||
118
+ primaryColumns.length > 0 ||
119
+ countColumns.length > 0 ||
120
+ labelColumn) && ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: [descriptionColumn &&
121
+ (!descriptionColumn.value || descriptionColumn.value(item)) && ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionListGroup, { children: (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: descriptionColumn, item: item }) }) }, descriptionColumn.header)), primaryColumns.map(function (column) {
122
+ if (column.value && !column.value(item))
123
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
124
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionListGroup, { children: [(0, jsx_runtime_1.jsx)(react_core_1.DescriptionListTerm, { children: (0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7, whiteSpace: 'nowrap' } }, { children: column.header })) }), (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: column, item: item }) })] }, column.header));
125
+ }), countColumns.length > 0 && ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionListGroup, { children: (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
126
+ display: 'flex',
127
+ gap: 16,
128
+ marginTop: 8,
129
+ flexWrap: 'wrap',
130
+ } }, { children: countColumns.map(function (column, i) { return ((0, jsx_runtime_1.jsxs)("div", __assign({ style: { display: 'flex', gap: 6, alignItems: 'baseline' } }, { children: [(0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: column, item: item }), (0, jsx_runtime_1.jsx)("small", __assign({ style: { opacity: 0.7 } }, { children: column.header }))] }), i)); }) })) }) }, "counts")), labelColumn && ((0, jsx_runtime_1.jsx)(react_core_1.DescriptionListGroup, { children: (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: labelColumn, item: item }) }) }, labelColumn.header))] })))] })) }) }), "primary"),
131
+ secondaryColumns.length > 0 ? ((0, jsx_runtime_1.jsx)(react_core_1.DataListCell, { children: (0, jsx_runtime_1.jsx)(react_core_1.DescriptionList, __assign({ isCompact: true }, { children: secondaryColumns.map(function (column) {
132
+ if (column.value && !column.value(item))
133
+ return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
134
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.DescriptionListGroup, { children: [(0, jsx_runtime_1.jsx)(react_core_1.DescriptionListTerm, { children: (0, jsx_runtime_1.jsx)(react_core_1.Text, __assign({ component: "small", style: { opacity: 0.7, whiteSpace: 'nowrap' } }, { children: column.header })) }), (0, jsx_runtime_1.jsx)(react_core_1.DescriptionListDescription, { children: (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { column: column, item: item }) })] }, column.header));
135
+ }) })) }, "secondary")) : null,
67
136
  ] }), rowActions && ((0, jsx_runtime_1.jsx)(react_core_1.DataListAction, __assign({ "aria-labelledby": "check-action-item1 check-action-action1", id: "check-action-action1", "aria-label": "Actions", isPlainButtonAction: true, style: { whiteSpace: 'nowrap' } }, { children: (0, jsx_runtime_1.jsx)(TypedActions_1.TypedActions, { actions: rowActions, position: react_core_1.DropdownPosition.right, selectedItem: item, iconOnly: true }) })))] }) }), key));
68
137
  }, [
69
- data.columns,
70
- data.descriptionColumn,
71
- data.nameColumn,
72
- data.secondary,
73
- defaultCardSubtitle,
74
- isSelected,
75
138
  keyFn,
76
- onSelectClick,
77
- rowActions,
139
+ isSelected,
78
140
  showSelect,
141
+ nameColumn,
142
+ subtitleColumn,
143
+ defaultCardSubtitle,
144
+ primaryColumns,
145
+ descriptionColumn,
146
+ countColumns,
147
+ labelColumn,
148
+ secondaryColumns,
149
+ rowActions,
150
+ onSelectClick,
79
151
  ]);
80
152
  }
81
153
  exports.useColumnsToDataList = useColumnsToDataList;
@@ -3,7 +3,7 @@ export declare function DateCell(props: {
3
3
  value: number | string;
4
4
  }): JSX.Element;
5
5
  export declare function SinceCell(props: {
6
- value: string | undefined | null;
6
+ value: string | number | undefined | null;
7
7
  author?: string;
8
8
  onClick?: () => void;
9
9
  t?: (t: string) => string;
@@ -43,11 +43,17 @@ function SinceCell(props) {
43
43
  var author = props.author, onClick = props.onClick;
44
44
  var _a = __read((0, react_1.useState)(null), 2), dateTime = _a[0], setDateTime = _a[1];
45
45
  (0, react_1.useEffect)(function () {
46
- if (props.value) {
46
+ if (typeof props.value === 'number') {
47
+ setDateTime(luxon_1.DateTime.fromMillis(props.value).toRelative());
48
+ }
49
+ else if (props.value) {
47
50
  setDateTime(luxon_1.DateTime.fromISO(props.value).toRelative());
48
51
  }
49
52
  var timeout = setInterval(function () {
50
- if (props.value) {
53
+ if (typeof props.value === 'number') {
54
+ setDateTime(luxon_1.DateTime.fromMillis(props.value).toRelative());
55
+ }
56
+ else if (props.value) {
51
57
  setDateTime(luxon_1.DateTime.fromISO(props.value).toRelative());
52
58
  }
53
59
  }, 1000);
@@ -20,7 +20,7 @@ var usePageNavigate_1 = require("../components/usePageNavigate");
20
20
  function TextCell(props) {
21
21
  var _a, _b, _c;
22
22
  var navigate = (0, usePageNavigate_1.usePageNavigate)();
23
- return ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ style: { maxWidth: '100%' } }, { children: [props.icon && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: (0, jsx_runtime_1.jsx)(IconWrapper_1.IconWrapper, __assign({ size: (_a = props.iconSize) !== null && _a !== void 0 ? _a : 'sm', color: (_b = props.iconColor) !== null && _b !== void 0 ? _b : props.color }, { children: props.icon })) })), props.text && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, __assign({ style: { maxWidth: '100%' } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
23
+ return ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ style: { maxWidth: '100%' } }, { children: [props.icon && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, { children: (0, jsx_runtime_1.jsx)(IconWrapper_1.IconWrapper, __assign({ size: (_a = props.iconSize) !== null && _a !== void 0 ? _a : 'sm', color: (_b = props.iconColor) !== null && _b !== void 0 ? _b : props.color, padRight: true }, { children: props.icon })) })), props.text && ((0, jsx_runtime_1.jsx)(react_core_1.SplitItem, __assign({ style: { maxWidth: '100%' } }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
24
24
  maxWidth: (_c = props.maxWidth) !== null && _c !== void 0 ? _c : '100%',
25
25
  whiteSpace: 'nowrap',
26
26
  textOverflow: 'ellipsis',
@@ -3,6 +3,6 @@ import { PFColor } from './pfcolors';
3
3
  export declare function IconWrapper(props: {
4
4
  children: ReactNode;
5
5
  color?: PFColor;
6
- size?: 'sm' | 'md' | 'lg';
7
- noPadding?: boolean;
6
+ size?: 'sm' | 'md' | 'lg' | 'xl';
7
+ padRight?: boolean;
8
8
  }): JSX.Element;
@@ -20,36 +20,34 @@ function IconWrapper(props) {
20
20
  if (props.color) {
21
21
  newProps.color = (0, pfcolors_1.getPatternflyColor)(props.color);
22
22
  }
23
- var marginOffset = undefined;
24
- var marginRight = undefined;
25
23
  if (props.size) {
26
24
  newProps.size = props.size;
25
+ }
26
+ var paddingRight = 0;
27
+ if (props.padRight) {
27
28
  switch (props.size) {
28
29
  case 'sm':
29
- marginRight = 6;
30
+ paddingRight = 4;
30
31
  break;
31
32
  case 'md':
32
- marginOffset = -2;
33
- marginRight = 6;
33
+ paddingRight = 6;
34
34
  break;
35
35
  case 'lg':
36
- marginOffset = -6;
37
- marginRight = 6;
36
+ paddingRight = 8;
37
+ break;
38
+ case 'xl':
39
+ paddingRight = 12;
38
40
  break;
39
41
  }
40
42
  }
41
- if (props.noPadding) {
42
- marginRight = undefined;
43
- }
44
43
  var newChildren = react_1.Children.toArray(props.children).map(function (child) {
45
44
  if ((0, react_1.isValidElement)(child)) {
46
- var newChild = (0, react_1.cloneElement)(child, newProps);
47
- return newChild;
45
+ return (0, react_1.cloneElement)(child, newProps);
48
46
  }
49
47
  else {
50
48
  return child;
51
49
  }
52
50
  });
53
- return ((0, jsx_runtime_1.jsx)("div", __assign({ style: { marginTop: marginOffset, marginBottom: marginOffset, marginRight: marginRight } }, { children: newChildren })));
51
+ return (0, jsx_runtime_1.jsx)("div", __assign({ style: { paddingRight: paddingRight } }, { children: newChildren }));
54
52
  }
55
53
  exports.IconWrapper = IconWrapper;
@@ -66,9 +66,9 @@ function SelectDialog(props) {
66
66
  onClose();
67
67
  }, isAriaDisabled: view.selectedItems.length === 0 }, { children: confirm }), "confirm"),
68
68
  (0, jsx_runtime_1.jsx)(react_core_1.Button, __assign({ variant: "link", onClick: onClose }, { children: cancel }), "cancel"),
69
- ], hasNoBodyWrapper: true }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.ModalBoxBody, __assign({ style: { overflow: 'hidden' } }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SplitItem, __assign({ style: { opacity: view.selectedItems.length === 0 ? 0 : undefined } }, { children: selected })), (0, jsx_runtime_1.jsxs)("b", { children: [view.selectedItems.map(function (item) {
69
+ ], hasNoBodyWrapper: true }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.ModalBoxBody, __assign({ style: { overflow: 'hidden' } }, { children: (0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: true }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SplitItem, __assign({ style: { opacity: view.selectedItems.length === 0 ? 0 : undefined } }, { children: selected })), (0, jsx_runtime_1.jsxs)("b", { children: [view.selectedItems.map(function (item, i) {
70
70
  if (tableColumns && tableColumns.length > 0) {
71
- return (0, jsx_runtime_1.jsx)("span", { children: tableColumns[0].cell(item) }, props.keyFn(item));
71
+ return (0, jsx_runtime_1.jsx)(PageTable_1.TableColumnCell, { item: item, column: tableColumns[0] }, i);
72
72
  }
73
73
  return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
74
74
  }), (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {})] })] })) })), (0, jsx_runtime_1.jsx)(Collapse_1.Collapse, __assign({ open: view.itemCount === undefined }, { children: (0, jsx_runtime_1.jsx)(react_core_1.Skeleton, { height: "80px" }) })), (0, jsx_runtime_1.jsx)(Collapse_1.Collapse, __assign({ open: view.itemCount !== undefined }, { children: (0, jsx_runtime_1.jsx)("div", __assign({ style: {
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ansible/ansible-ui-framework",
3
3
  "description": "A framework for building applications using PatternFly.",
4
- "version": "0.0.356",
4
+ "version": "0.0.357",
5
5
  "author": "Red Hat",
6
6
  "license": "MIT",
7
7
  "repository": {