@ansible/ansible-ui-framework 0.0.372 → 0.0.373
Sign up to get free protection for your applications and to get access to all the features.
package/cjs/PageTable.js
CHANGED
@@ -243,7 +243,7 @@ function TableCells(props) {
|
|
243
243
|
width: '0%',
|
244
244
|
right: 0,
|
245
245
|
// display: 'flex',
|
246
|
-
}, isStickyColumn: true, stickyMinWidth: "0px", className: props.scrollRight ? 'pf-m-border-left' : undefined }, { children: (0, jsx_runtime_1.jsx)(TypedActions_1.TypedActions, { actions: rowActions, selectedItem: item, position: react_core_1.DropdownPosition.right, iconOnly: true }) })))] }));
|
246
|
+
}, isStickyColumn: true, stickyMinWidth: "0px", className: props.scrollRight ? 'pf-m-border-left' : undefined }, { children: (0, jsx_runtime_1.jsx)(TypedActions_1.TypedActions, { actions: rowActions, selectedItem: item, position: react_core_1.DropdownPosition.right, iconOnly: true, isFilled: true }) })))] }));
|
247
247
|
}
|
248
248
|
var TableColumnSomething;
|
249
249
|
(function (TableColumnSomething) {
|
@@ -33,20 +33,27 @@ export type ITypedSingleAction<T extends object> = ITypedActionCommon & {
|
|
33
33
|
variant?: ButtonVariant;
|
34
34
|
onClick: (item: T) => void;
|
35
35
|
isDisabled?: (item: T) => string;
|
36
|
+
isHidden?: (item: T) => boolean;
|
36
37
|
};
|
37
38
|
export type ITypedDropdownAction<T extends object> = ITypedActionCommon & {
|
38
39
|
type: TypedActionType.dropdown;
|
39
40
|
variant?: ButtonVariant;
|
41
|
+
isHidden?: (item: T) => boolean;
|
42
|
+
isDisabled?: (item: T) => string;
|
40
43
|
options: ITypedAction<T>[];
|
41
44
|
};
|
42
45
|
export type ITypedAction<T extends object> = ITypedActionSeperator | ITypedActionButton | ITypedBulkAction<T> | ITypedSingleAction<T> | ITypedDropdownAction<T>;
|
43
46
|
export declare function TypedActionsDropdown<T extends object>(props: {
|
44
47
|
actions: ITypedAction<T>[];
|
45
48
|
label?: string;
|
49
|
+
icon?: ComponentClass | FunctionComponent;
|
50
|
+
isDisabled?: boolean;
|
51
|
+
tooltip?: string;
|
46
52
|
isPrimary?: boolean;
|
47
53
|
selectedItems?: T[];
|
48
54
|
selectedItem?: T;
|
49
55
|
position?: DropdownPosition;
|
56
|
+
iconOnly?: boolean;
|
50
57
|
}): JSX.Element;
|
51
58
|
export declare function DropdownActionItem<T extends object>(props: {
|
52
59
|
action: ITypedAction<T>;
|
@@ -54,7 +61,7 @@ export declare function DropdownActionItem<T extends object>(props: {
|
|
54
61
|
selectedItem?: T;
|
55
62
|
hasIcons: boolean;
|
56
63
|
index: number;
|
57
|
-
}): JSX.Element;
|
64
|
+
}): JSX.Element | null;
|
58
65
|
export declare function TypedActions<T extends object>(props: {
|
59
66
|
actions: ITypedAction<T>[];
|
60
67
|
selectedItems?: T[];
|
@@ -64,5 +71,6 @@ export declare function TypedActions<T extends object>(props: {
|
|
64
71
|
noPrimary?: boolean;
|
65
72
|
position?: DropdownPosition;
|
66
73
|
iconOnly?: boolean;
|
74
|
+
isFilled?: boolean;
|
67
75
|
}): JSX.Element;
|
68
76
|
export {};
|
@@ -43,7 +43,7 @@ var TypedActionType;
|
|
43
43
|
TypedActionType["dropdown"] = "dropdown";
|
44
44
|
})(TypedActionType = exports.TypedActionType || (exports.TypedActionType = {}));
|
45
45
|
function TypedActionsDropdown(props) {
|
46
|
-
var actions = props.actions, label = props.label, _a = props.isPrimary, isPrimary = _a === void 0 ? false : _a, selectedItems = props.selectedItems, selectedItem = props.selectedItem;
|
46
|
+
var actions = props.actions, label = props.label, icon = props.icon, _a = props.isPrimary, isPrimary = _a === void 0 ? false : _a, selectedItems = props.selectedItems, selectedItem = props.selectedItem, iconOnly = props.iconOnly, isDisabled = props.isDisabled, tooltip = props.tooltip;
|
47
47
|
var _b = __read((0, react_1.useState)(false), 2), dropdownOpen = _b[0], setDropdownOpen = _b[1];
|
48
48
|
var hasItemActions = (0, react_1.useMemo)(function () { return !actions.every(function (action) { return action.type !== TypedActionType.bulk; }); }, [actions]);
|
49
49
|
var hasIcons = (0, react_1.useMemo)(function () {
|
@@ -51,12 +51,16 @@ function TypedActionsDropdown(props) {
|
|
51
51
|
}, [actions]);
|
52
52
|
if (actions.length === 0)
|
53
53
|
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
54
|
-
var
|
55
|
-
|
54
|
+
var Icon = icon;
|
55
|
+
var Toggle = label || Icon ? react_core_1.DropdownToggle : react_core_1.KebabToggle;
|
56
|
+
var dropdown = ((0, jsx_runtime_1.jsx)(react_core_1.Dropdown, { onSelect: function () { return setDropdownOpen(false); }, toggle: (0, jsx_runtime_1.jsx)(Toggle, __assign({ id: "toggle-kebab", isDisabled: isDisabled, onToggle: function () { return setDropdownOpen(!dropdownOpen); }, toggleVariant: hasItemActions && (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) ? 'primary' : undefined, isPrimary: isPrimary, toggleIndicator: Icon ? null : undefined, style: isPrimary && !label
|
56
57
|
? {
|
57
58
|
color: 'var(--pf-global--Color--light-100)',
|
58
59
|
}
|
59
|
-
: {} }, { children: label })), isOpen: dropdownOpen, isPlain: !label, dropdownItems: actions.map(function (action, index) { return ((0, jsx_runtime_1.jsx)(DropdownActionItem, { action: action, selectedItems: selectedItems !== null && selectedItems !== void 0 ? selectedItems : [], selectedItem: selectedItem, hasIcons: hasIcons, index: index }, 'label' in action ? action.label : "action-".concat(index))); }), position: props.position, style: {
|
60
|
+
: {} }, { children: Icon ? (0, jsx_runtime_1.jsx)(Icon, {}) : label })), isOpen: dropdownOpen, isPlain: !label || iconOnly, dropdownItems: actions.map(function (action, index) { return ((0, jsx_runtime_1.jsx)(DropdownActionItem, { action: action, selectedItems: selectedItems !== null && selectedItems !== void 0 ? selectedItems : [], selectedItem: selectedItem, hasIcons: hasIcons, index: index }, 'label' in action ? action.label : "action-".concat(index))); }), position: props.position, style: {
|
61
|
+
zIndex: 201,
|
62
|
+
} }));
|
63
|
+
return tooltip && (iconOnly || isDisabled) ? ((0, jsx_runtime_1.jsx)(react_core_1.Tooltip, __assign({ content: tooltip, trigger: tooltip ? undefined : 'manual' }, { children: dropdown }))) : (__assign({}, dropdown));
|
60
64
|
}
|
61
65
|
exports.TypedActionsDropdown = TypedActionsDropdown;
|
62
66
|
function DropdownActionItem(props) {
|
@@ -69,6 +73,10 @@ function DropdownActionItem(props) {
|
|
69
73
|
var tooltip = action.tooltip;
|
70
74
|
var isDisabled = action.isDisabled !== undefined && selectedItem ? action.isDisabled(selectedItem) : false;
|
71
75
|
tooltip = isDisabled ? isDisabled : tooltip;
|
76
|
+
var isHidden = action.isHidden !== undefined && selectedItem ? action.isHidden(selectedItem) : false;
|
77
|
+
if (isHidden) {
|
78
|
+
return null;
|
79
|
+
}
|
72
80
|
return ((0, jsx_runtime_1.jsx)(react_core_1.Tooltip, __assign({ content: tooltip, trigger: tooltip ? undefined : 'manual' }, { children: (0, jsx_runtime_1.jsx)(react_core_1.DropdownItem, __assign({ onClick: function () { return selectedItem && action.onClick(selectedItem); }, isAriaDisabled: Boolean(isDisabled), icon: Icon ? ((0, jsx_runtime_1.jsx)("span", __assign({ style: { paddingRight: 4 } }, { children: (0, jsx_runtime_1.jsx)(Icon, {}) }))) : undefined, style: {
|
73
81
|
color: action.isDanger && !isDisabled ? 'var(--pf-global--danger-color--100)' : undefined,
|
74
82
|
} }, { children: action.label })) }), action.label));
|
@@ -88,8 +96,16 @@ function DropdownActionItem(props) {
|
|
88
96
|
color: action.isDanger && !isDisabled ? 'var(--pf-global--danger-color--100)' : undefined,
|
89
97
|
} }, { children: action.label })) }), action.label));
|
90
98
|
}
|
91
|
-
case TypedActionType.dropdown:
|
92
|
-
|
99
|
+
case TypedActionType.dropdown: {
|
100
|
+
var isHidden = action.isHidden !== undefined && selectedItem ? action.isHidden(selectedItem) : false;
|
101
|
+
if (isHidden) {
|
102
|
+
return null;
|
103
|
+
}
|
104
|
+
var tooltip = action.label;
|
105
|
+
var isDisabled = action.isDisabled !== undefined && selectedItem ? action.isDisabled(selectedItem) : '';
|
106
|
+
tooltip = isDisabled ? isDisabled : tooltip;
|
107
|
+
return ((0, jsx_runtime_1.jsx)(TypedActionsDropdown, { label: action.label, actions: action.options, selectedItem: selectedItem, isDisabled: Boolean(isDisabled), tooltip: tooltip }, action.label));
|
108
|
+
}
|
93
109
|
case TypedActionType.seperator:
|
94
110
|
return (0, jsx_runtime_1.jsx)(react_core_1.DropdownSeparator, {}, "separator-".concat(index));
|
95
111
|
default:
|
@@ -110,27 +126,34 @@ function TypedActions(props) {
|
|
110
126
|
];
|
111
127
|
return action.type !== TypedActionType.seperator && actionVariants.includes(action.variant);
|
112
128
|
}, []);
|
129
|
+
var isHidden = (0, react_1.useCallback)(function (action) {
|
130
|
+
return (action.type === TypedActionType.single || action.type === TypedActionType.dropdown) &&
|
131
|
+
action.isHidden !== undefined &&
|
132
|
+
props.selectedItem
|
133
|
+
? action.isHidden(props.selectedItem)
|
134
|
+
: false;
|
135
|
+
}, [props.selectedItem]);
|
113
136
|
var buttonActions = (0, react_1.useMemo)(function () {
|
114
137
|
var _a;
|
115
138
|
if (collapseButtons) {
|
116
139
|
return [];
|
117
140
|
}
|
118
|
-
return (_a = actions === null || actions === void 0 ? void 0 : actions.filter(isButtonAction)) !== null && _a !== void 0 ? _a : [];
|
119
|
-
}, [collapseButtons, actions, isButtonAction]);
|
141
|
+
return ((_a = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) { return isButtonAction(action) && !isHidden(action); })) !== null && _a !== void 0 ? _a : []);
|
142
|
+
}, [collapseButtons, actions, isButtonAction, isHidden]);
|
120
143
|
var dropdownActions = (0, react_1.useMemo)(function () {
|
121
144
|
var _a;
|
122
145
|
if (collapseButtons) {
|
123
146
|
return actions !== null && actions !== void 0 ? actions : [];
|
124
147
|
}
|
125
|
-
var dropdownActions = (_a = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) { return !isButtonAction(action); })) !== null && _a !== void 0 ? _a : [];
|
148
|
+
var dropdownActions = (_a = actions === null || actions === void 0 ? void 0 : actions.filter(function (action) { return !isButtonAction(action) && !isHidden(action); })) !== null && _a !== void 0 ? _a : [];
|
126
149
|
while (dropdownActions.length && dropdownActions[0].type === TypedActionType.seperator)
|
127
150
|
dropdownActions.shift();
|
128
151
|
while (dropdownActions.length &&
|
129
152
|
dropdownActions[dropdownActions.length - 1].type === TypedActionType.seperator)
|
130
153
|
dropdownActions.pop();
|
131
154
|
return dropdownActions;
|
132
|
-
}, [collapseButtons, actions, isButtonAction]);
|
133
|
-
return ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ hasGutter: !props.iconOnly }, { children: [(0, jsx_runtime_1.jsx)(TypedActionsButtons_1.TypedActionsButtons, __assign({}, props, { actions: buttonActions })), (0, jsx_runtime_1.jsx)(TypedActionsDropdown, __assign({}, props, { actions: dropdownActions, position: props.position, isPrimary: !!((_b = props.selectedItems) === null || _b === void 0 ? void 0 : _b.length) }))] })));
|
155
|
+
}, [collapseButtons, actions, isButtonAction, isHidden]);
|
156
|
+
return ((0, jsx_runtime_1.jsxs)(react_core_1.Split, __assign({ style: props.isFilled ? { width: '100%' } : undefined, hasGutter: !props.iconOnly }, { children: [(0, jsx_runtime_1.jsx)(react_core_1.SplitItem, __assign({ isFilled: true }, { children: (0, jsx_runtime_1.jsx)(TypedActionsButtons_1.TypedActionsButtons, __assign({}, props, { actions: buttonActions })) })), (0, jsx_runtime_1.jsx)(TypedActionsDropdown, __assign({}, props, { actions: dropdownActions, selectedItem: props.selectedItem, position: props.position, isPrimary: !!((_b = props.selectedItems) === null || _b === void 0 ? void 0 : _b.length) }))] })));
|
134
157
|
}
|
135
158
|
exports.TypedActions = TypedActions;
|
136
159
|
var TransparentIcon = function () { return (0, jsx_runtime_1.jsx)(react_icons_1.CircleIcon, { style: { opacity: 0 } }); };
|
@@ -39,7 +39,13 @@ function TypedActionButton(props) {
|
|
39
39
|
return ((0, jsx_runtime_1.jsx)(ActionButton, { action: action, selectedItems: selectedItems, noPrimary: noPrimary, wrapper: wrapper }));
|
40
40
|
}
|
41
41
|
case TypedActions_1.TypedActionType.dropdown: {
|
42
|
-
|
42
|
+
var tooltip = action.label;
|
43
|
+
var isDisabled = action.isDisabled !== undefined && selectedItem ? action.isDisabled(selectedItem) : '';
|
44
|
+
tooltip = isDisabled ? isDisabled : tooltip;
|
45
|
+
return ((0, jsx_runtime_1.jsx)(TypedActions_1.TypedActionsDropdown, { actions: action.options, selectedItems: selectedItems, selectedItem: selectedItem, label: action.label, icon: action.icon, iconOnly: props.iconOnly, position: react_core_1.DropdownPosition.right, isDisabled: Boolean(isDisabled), tooltip: props.iconOnly || isDisabled ? tooltip : undefined, isPrimary: action.variant === react_core_1.ButtonVariant.primary && !(selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.length) }));
|
46
|
+
}
|
47
|
+
default: {
|
48
|
+
return (0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, {});
|
43
49
|
}
|
44
50
|
}
|
45
51
|
}
|