@cakemail-org/ui-components-v2 2.2.121 → 2.2.123
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/scopePicker/index.d.ts +10 -1
- package/dist/cjs/factories/eventTracking/types.d.ts +1 -1
- package/dist/cjs/index.js +26 -16
- package/dist/cjs/services/eventTracking/types.d.ts +7 -5
- package/dist/esm/components/scopePicker/index.d.ts +10 -1
- package/dist/esm/factories/eventTracking/types.d.ts +1 -1
- package/dist/esm/index.js +26 -16
- package/dist/esm/services/eventTracking/types.d.ts +7 -5
- package/package.json +1 -1
|
@@ -2,10 +2,19 @@ import React from "react";
|
|
|
2
2
|
import "./styles.scss";
|
|
3
3
|
export { groupScopesByCategory } from "./scopeGroups";
|
|
4
4
|
export type { TScopeCategorySummary } from "./scopeGroups";
|
|
5
|
+
export type TScopePickerLabels = {
|
|
6
|
+
presetsHeading?: string;
|
|
7
|
+
presets?: Record<string, string>;
|
|
8
|
+
categories?: Record<string, string>;
|
|
9
|
+
impliedHint?: string;
|
|
10
|
+
unrecognizedHint?: string;
|
|
11
|
+
selectedPermissions?: (count: number) => string;
|
|
12
|
+
};
|
|
5
13
|
export type TScopePicker = {
|
|
6
14
|
value: string[];
|
|
7
15
|
onChange: (scopes: string[]) => void;
|
|
8
16
|
isPartner?: boolean;
|
|
9
17
|
disabled?: boolean;
|
|
18
|
+
labels?: TScopePickerLabels;
|
|
10
19
|
};
|
|
11
|
-
export declare function ScopePicker({ value, onChange, isPartner, disabled }: TScopePicker): React.JSX.Element;
|
|
20
|
+
export declare function ScopePicker({ value, onChange, isPartner, disabled, labels }: TScopePicker): React.JSX.Element;
|
|
@@ -55,7 +55,7 @@ export type TTimeseriesPointBreakdown = {
|
|
|
55
55
|
};
|
|
56
56
|
export type TEventTimeseries = {
|
|
57
57
|
granularity: string;
|
|
58
|
-
event_type?: string | null;
|
|
58
|
+
event_type?: string | string[] | null;
|
|
59
59
|
breakdown?: string | null;
|
|
60
60
|
series: Array<TTimeseriesPoint | TTimeseriesPointBreakdown>;
|
|
61
61
|
};
|
package/dist/cjs/index.js
CHANGED
|
@@ -11449,12 +11449,18 @@ exports.EEventSortField = void 0;
|
|
|
11449
11449
|
})(exports.EEventSortField || (exports.EEventSortField = {}));
|
|
11450
11450
|
|
|
11451
11451
|
var eventsBaseUrl = uiKitConfig.GATEWAY_PROXY + "/events";
|
|
11452
|
+
var MULTI_VALUE_QUERY_FIELDS = ["eventType", "entityId"];
|
|
11453
|
+
function serializeMultiValueQueryFields(query) {
|
|
11454
|
+
MULTI_VALUE_QUERY_FIELDS.forEach(function (field) {
|
|
11455
|
+
if (Array.isArray(query[field])) {
|
|
11456
|
+
query[field] = query[field].join(",");
|
|
11457
|
+
}
|
|
11458
|
+
});
|
|
11459
|
+
}
|
|
11452
11460
|
function buildEventQuery(options) {
|
|
11453
11461
|
if (options === void 0) { options = {}; }
|
|
11454
11462
|
var query = __assign({}, options);
|
|
11455
|
-
|
|
11456
|
-
query.eventType = query.eventType.join(",");
|
|
11457
|
-
}
|
|
11463
|
+
serializeMultiValueQueryFields(query);
|
|
11458
11464
|
if (query.properties && typeof query.properties === "object") {
|
|
11459
11465
|
query.properties = JSON.stringify(query.properties);
|
|
11460
11466
|
}
|
|
@@ -19639,8 +19645,9 @@ function getImpliedScopes(scope) {
|
|
|
19639
19645
|
return implied.map(function (a) { return "".concat(resource, ":").concat(a); }).filter(function (s) { return ALL_GRANULAR_SCOPES.has(s); });
|
|
19640
19646
|
}
|
|
19641
19647
|
function ScopePicker(_a) {
|
|
19642
|
-
var
|
|
19643
|
-
var
|
|
19648
|
+
var _b;
|
|
19649
|
+
var value = _a.value, onChange = _a.onChange, _c = _a.isPartner, isPartner = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.labels, labels = _e === void 0 ? {} : _e;
|
|
19650
|
+
var _f = React.useState(new Set()), expandedCategories = _f[0], setExpandedCategories = _f[1];
|
|
19644
19651
|
var selectedSet = React.useMemo(function () { return new Set(value); }, [value]);
|
|
19645
19652
|
var visibleCategories = React.useMemo(function () { return SCOPE_CATEGORIES.filter(function (c) { return !c.adminOnly || isPartner; }); }, [isPartner]);
|
|
19646
19653
|
var toggleCategory = React.useCallback(function (categoryId) {
|
|
@@ -19736,39 +19743,42 @@ function ScopePicker(_a) {
|
|
|
19736
19743
|
}, [selectedSet]);
|
|
19737
19744
|
return (React.createElement("div", { className: "scopePicker", "aria-label": "Permission scope picker" },
|
|
19738
19745
|
!disabled && (React.createElement("div", { className: "scopePicker__presets" },
|
|
19739
|
-
React.createElement("span", { className: "scopePicker__presetsLabel" }, "Quick presets:"),
|
|
19740
|
-
React.createElement("div", { className: "scopePicker__presetButtons" }, SCOPE_PRESETS.map(function (preset) {
|
|
19746
|
+
React.createElement("span", { className: "scopePicker__presetsLabel" }, (_b = labels.presetsHeading) !== null && _b !== void 0 ? _b : "Quick presets:"),
|
|
19747
|
+
React.createElement("div", { className: "scopePicker__presetButtons" }, SCOPE_PRESETS.map(function (preset) {
|
|
19748
|
+
var _a, _b;
|
|
19749
|
+
return (React.createElement("button", { key: preset.id, type: "button", className: "scopePicker__presetBtn", onClick: function () { return handlePreset(preset.id); } }, (_b = (_a = labels.presets) === null || _a === void 0 ? void 0 : _a[preset.id]) !== null && _b !== void 0 ? _b : preset.label));
|
|
19750
|
+
})))),
|
|
19741
19751
|
React.createElement("div", { className: "scopePicker__categories" }, visibleCategories.map(function (category) {
|
|
19752
|
+
var _a, _b, _c, _d, _e, _f;
|
|
19742
19753
|
var isExpanded = expandedCategories.has(category.id);
|
|
19743
19754
|
var allSelected = isCategoryAllSelected(category.id);
|
|
19744
19755
|
var someSelected = isCategorySomeSelected(category.id);
|
|
19745
19756
|
return (React.createElement("div", { key: category.id, className: "scopePicker__category ".concat(category.adminOnly ? "scopePicker__category--admin" : "") },
|
|
19746
19757
|
React.createElement("div", { className: "scopePicker__categoryHeader" },
|
|
19747
19758
|
React.createElement("label", { className: "scopePicker__categorySelect" },
|
|
19748
|
-
React.createElement(IndeterminateCheckbox, { checked: allSelected, indeterminate: someSelected && !allSelected, onChange: function (checked) { return handleCategorySelectAll(category.id, checked); }, disabled: disabled, ariaLabel: "Select all ".concat(category.label, " scopes") }),
|
|
19749
|
-
React.createElement("span", { className: "scopePicker__categoryLabel" }, category.label)),
|
|
19750
|
-
React.createElement("button", { type: "button", className: "scopePicker__categoryToggle", onClick: function () { return toggleCategory(category.id); }, "aria-expanded": isExpanded, "aria-label": "".concat(isExpanded ? "Collapse" : "Expand", " ").concat(category.label) }, isExpanded ? "▲" : "▼")),
|
|
19759
|
+
React.createElement(IndeterminateCheckbox, { checked: allSelected, indeterminate: someSelected && !allSelected, onChange: function (checked) { return handleCategorySelectAll(category.id, checked); }, disabled: disabled, ariaLabel: "Select all ".concat((_b = (_a = labels.categories) === null || _a === void 0 ? void 0 : _a[category.id]) !== null && _b !== void 0 ? _b : category.label, " scopes") }),
|
|
19760
|
+
React.createElement("span", { className: "scopePicker__categoryLabel" }, (_d = (_c = labels.categories) === null || _c === void 0 ? void 0 : _c[category.id]) !== null && _d !== void 0 ? _d : category.label)),
|
|
19761
|
+
React.createElement("button", { type: "button", className: "scopePicker__categoryToggle", onClick: function () { return toggleCategory(category.id); }, "aria-expanded": isExpanded, "aria-label": "".concat(isExpanded ? "Collapse" : "Expand", " ").concat((_f = (_e = labels.categories) === null || _e === void 0 ? void 0 : _e[category.id]) !== null && _f !== void 0 ? _f : category.label) }, isExpanded ? "▲" : "▼")),
|
|
19751
19762
|
isExpanded && (React.createElement("div", { className: "scopePicker__categoryBody" }, category.resources.map(function (resource) { return (React.createElement("div", { key: resource.resource, className: "scopePicker__resource" },
|
|
19752
19763
|
React.createElement("span", { className: "scopePicker__resourceLabel" }, resource.label),
|
|
19753
19764
|
React.createElement("div", { className: "scopePicker__actions" }, resource.actions.map(function (action) {
|
|
19765
|
+
var _a;
|
|
19754
19766
|
var scope = "".concat(resource.resource, ":").concat(action);
|
|
19755
19767
|
var checked = selectedSet.has(scope);
|
|
19756
19768
|
var implied = isImplied(scope);
|
|
19757
|
-
return (React.createElement("label", { key: action, className: "scopePicker__action ".concat(implied ? "scopePicker__action--implied" : ""), title: implied ? "Automatically included by another selected permission" : undefined },
|
|
19769
|
+
return (React.createElement("label", { key: action, className: "scopePicker__action ".concat(implied ? "scopePicker__action--implied" : ""), title: implied ? ((_a = labels.impliedHint) !== null && _a !== void 0 ? _a : "Automatically included by another selected permission") : undefined },
|
|
19758
19770
|
React.createElement("input", { type: "checkbox", checked: checked, onChange: function (e) { return handleScopeToggle(scope, e.target.checked); }, disabled: disabled || implied, "aria-label": "".concat(resource.label, " ").concat(action) }),
|
|
19759
19771
|
React.createElement("span", null, action)));
|
|
19760
19772
|
})))); })))));
|
|
19761
19773
|
})),
|
|
19762
19774
|
value.length > 0 && (React.createElement("details", { className: "scopePicker__summary" },
|
|
19763
|
-
React.createElement("summary", null,
|
|
19764
|
-
"Selected permissions (",
|
|
19765
|
-
value.length,
|
|
19766
|
-
")"),
|
|
19775
|
+
React.createElement("summary", null, labels.selectedPermissions ? labels.selectedPermissions(value.length) : "Selected permissions (".concat(value.length, ")")),
|
|
19767
19776
|
React.createElement("div", { className: "scopePicker__summaryList" }, __spreadArray([], value, true).sort().map(function (scope) {
|
|
19777
|
+
var _a;
|
|
19768
19778
|
// Scopes not in the catalog (e.g. enum drift) get a
|
|
19769
19779
|
// distinct style + tooltip so they're never invisible.
|
|
19770
19780
|
var unrecognized = !ALL_GRANULAR_SCOPES.has(scope);
|
|
19771
|
-
return (React.createElement("span", { key: scope, className: "scopePicker__summaryChip ".concat(unrecognized ? "scopePicker__summaryChip--unknown" : ""), title: unrecognized ? "Not in the current permission catalog — kept as-is on save" : undefined }, scope));
|
|
19781
|
+
return (React.createElement("span", { key: scope, className: "scopePicker__summaryChip ".concat(unrecognized ? "scopePicker__summaryChip--unknown" : ""), title: unrecognized ? ((_a = labels.unrecognizedHint) !== null && _a !== void 0 ? _a : "Not in the current permission catalog — kept as-is on save") : undefined }, scope));
|
|
19772
19782
|
}))))));
|
|
19773
19783
|
}
|
|
19774
19784
|
|
|
@@ -33,8 +33,10 @@ export type TEventDateRangeParams = {
|
|
|
33
33
|
fromDate?: string;
|
|
34
34
|
toDate?: string;
|
|
35
35
|
};
|
|
36
|
+
export type TMultiValueEntityId = string | Array<string>;
|
|
37
|
+
export type TMultiValueEventType = ETrackedEventType | string | Array<ETrackedEventType | string>;
|
|
36
38
|
export type TEventEntityFilterParams = {
|
|
37
|
-
entityId?:
|
|
39
|
+
entityId?: TMultiValueEntityId;
|
|
38
40
|
entityType?: ETrackedEntityType | string;
|
|
39
41
|
};
|
|
40
42
|
export type TEventAttributionFilterParams = {
|
|
@@ -52,7 +54,7 @@ export type TEventLineageParams = {
|
|
|
52
54
|
};
|
|
53
55
|
export type TEventCommonFilterParams = TEventDateRangeParams & TEventEntityFilterParams & TEventAttributionFilterParams & TEventLineageParams;
|
|
54
56
|
export type TListEvents = TEventCommonFilterParams & {
|
|
55
|
-
eventType?:
|
|
57
|
+
eventType?: TMultiValueEventType;
|
|
56
58
|
sortBy?: EEventSortField | string;
|
|
57
59
|
sortOrder?: "asc" | "desc";
|
|
58
60
|
properties?: string | Record<string, unknown>;
|
|
@@ -66,18 +68,18 @@ export type TGetEventSummary = TEventCommonFilterParams & {
|
|
|
66
68
|
useImpersonationTree?: boolean;
|
|
67
69
|
};
|
|
68
70
|
export type TGetEventTimeseries = TEventCommonFilterParams & {
|
|
69
|
-
eventType?:
|
|
71
|
+
eventType?: TMultiValueEventType;
|
|
70
72
|
granularity?: EEventTimeseriesGranularity | string;
|
|
71
73
|
breakdown?: EEventBreakdownDimension | string;
|
|
72
74
|
useImpersonationTree?: boolean;
|
|
73
75
|
};
|
|
74
76
|
export type TGetEventBreakdown = TEventCommonFilterParams & {
|
|
75
77
|
dimension: EEventBreakdownDimension | string;
|
|
76
|
-
eventType?:
|
|
78
|
+
eventType?: TMultiValueEventType;
|
|
77
79
|
useImpersonationTree?: boolean;
|
|
78
80
|
};
|
|
79
81
|
export type TGetEventPropertyKeys = TEventDateRangeParams & TEventEntityFilterParams & TEventLineageParams & {
|
|
80
|
-
eventType?:
|
|
82
|
+
eventType?: TMultiValueEventType;
|
|
81
83
|
search?: string;
|
|
82
84
|
email?: string;
|
|
83
85
|
useImpersonationTree?: boolean;
|
|
@@ -2,10 +2,19 @@ import React from "react";
|
|
|
2
2
|
import "./styles.scss";
|
|
3
3
|
export { groupScopesByCategory } from "./scopeGroups";
|
|
4
4
|
export type { TScopeCategorySummary } from "./scopeGroups";
|
|
5
|
+
export type TScopePickerLabels = {
|
|
6
|
+
presetsHeading?: string;
|
|
7
|
+
presets?: Record<string, string>;
|
|
8
|
+
categories?: Record<string, string>;
|
|
9
|
+
impliedHint?: string;
|
|
10
|
+
unrecognizedHint?: string;
|
|
11
|
+
selectedPermissions?: (count: number) => string;
|
|
12
|
+
};
|
|
5
13
|
export type TScopePicker = {
|
|
6
14
|
value: string[];
|
|
7
15
|
onChange: (scopes: string[]) => void;
|
|
8
16
|
isPartner?: boolean;
|
|
9
17
|
disabled?: boolean;
|
|
18
|
+
labels?: TScopePickerLabels;
|
|
10
19
|
};
|
|
11
|
-
export declare function ScopePicker({ value, onChange, isPartner, disabled }: TScopePicker): React.JSX.Element;
|
|
20
|
+
export declare function ScopePicker({ value, onChange, isPartner, disabled, labels }: TScopePicker): React.JSX.Element;
|
|
@@ -55,7 +55,7 @@ export type TTimeseriesPointBreakdown = {
|
|
|
55
55
|
};
|
|
56
56
|
export type TEventTimeseries = {
|
|
57
57
|
granularity: string;
|
|
58
|
-
event_type?: string | null;
|
|
58
|
+
event_type?: string | string[] | null;
|
|
59
59
|
breakdown?: string | null;
|
|
60
60
|
series: Array<TTimeseriesPoint | TTimeseriesPointBreakdown>;
|
|
61
61
|
};
|
package/dist/esm/index.js
CHANGED
|
@@ -11429,12 +11429,18 @@ var EEventSortField;
|
|
|
11429
11429
|
})(EEventSortField || (EEventSortField = {}));
|
|
11430
11430
|
|
|
11431
11431
|
var eventsBaseUrl = uiKitConfig.GATEWAY_PROXY + "/events";
|
|
11432
|
+
var MULTI_VALUE_QUERY_FIELDS = ["eventType", "entityId"];
|
|
11433
|
+
function serializeMultiValueQueryFields(query) {
|
|
11434
|
+
MULTI_VALUE_QUERY_FIELDS.forEach(function (field) {
|
|
11435
|
+
if (Array.isArray(query[field])) {
|
|
11436
|
+
query[field] = query[field].join(",");
|
|
11437
|
+
}
|
|
11438
|
+
});
|
|
11439
|
+
}
|
|
11432
11440
|
function buildEventQuery(options) {
|
|
11433
11441
|
if (options === void 0) { options = {}; }
|
|
11434
11442
|
var query = __assign({}, options);
|
|
11435
|
-
|
|
11436
|
-
query.eventType = query.eventType.join(",");
|
|
11437
|
-
}
|
|
11443
|
+
serializeMultiValueQueryFields(query);
|
|
11438
11444
|
if (query.properties && typeof query.properties === "object") {
|
|
11439
11445
|
query.properties = JSON.stringify(query.properties);
|
|
11440
11446
|
}
|
|
@@ -19619,8 +19625,9 @@ function getImpliedScopes(scope) {
|
|
|
19619
19625
|
return implied.map(function (a) { return "".concat(resource, ":").concat(a); }).filter(function (s) { return ALL_GRANULAR_SCOPES.has(s); });
|
|
19620
19626
|
}
|
|
19621
19627
|
function ScopePicker(_a) {
|
|
19622
|
-
var
|
|
19623
|
-
var
|
|
19628
|
+
var _b;
|
|
19629
|
+
var value = _a.value, onChange = _a.onChange, _c = _a.isPartner, isPartner = _c === void 0 ? false : _c, _d = _a.disabled, disabled = _d === void 0 ? false : _d, _e = _a.labels, labels = _e === void 0 ? {} : _e;
|
|
19630
|
+
var _f = useState(new Set()), expandedCategories = _f[0], setExpandedCategories = _f[1];
|
|
19624
19631
|
var selectedSet = useMemo(function () { return new Set(value); }, [value]);
|
|
19625
19632
|
var visibleCategories = useMemo(function () { return SCOPE_CATEGORIES.filter(function (c) { return !c.adminOnly || isPartner; }); }, [isPartner]);
|
|
19626
19633
|
var toggleCategory = useCallback(function (categoryId) {
|
|
@@ -19716,39 +19723,42 @@ function ScopePicker(_a) {
|
|
|
19716
19723
|
}, [selectedSet]);
|
|
19717
19724
|
return (React__default.createElement("div", { className: "scopePicker", "aria-label": "Permission scope picker" },
|
|
19718
19725
|
!disabled && (React__default.createElement("div", { className: "scopePicker__presets" },
|
|
19719
|
-
React__default.createElement("span", { className: "scopePicker__presetsLabel" }, "Quick presets:"),
|
|
19720
|
-
React__default.createElement("div", { className: "scopePicker__presetButtons" }, SCOPE_PRESETS.map(function (preset) {
|
|
19726
|
+
React__default.createElement("span", { className: "scopePicker__presetsLabel" }, (_b = labels.presetsHeading) !== null && _b !== void 0 ? _b : "Quick presets:"),
|
|
19727
|
+
React__default.createElement("div", { className: "scopePicker__presetButtons" }, SCOPE_PRESETS.map(function (preset) {
|
|
19728
|
+
var _a, _b;
|
|
19729
|
+
return (React__default.createElement("button", { key: preset.id, type: "button", className: "scopePicker__presetBtn", onClick: function () { return handlePreset(preset.id); } }, (_b = (_a = labels.presets) === null || _a === void 0 ? void 0 : _a[preset.id]) !== null && _b !== void 0 ? _b : preset.label));
|
|
19730
|
+
})))),
|
|
19721
19731
|
React__default.createElement("div", { className: "scopePicker__categories" }, visibleCategories.map(function (category) {
|
|
19732
|
+
var _a, _b, _c, _d, _e, _f;
|
|
19722
19733
|
var isExpanded = expandedCategories.has(category.id);
|
|
19723
19734
|
var allSelected = isCategoryAllSelected(category.id);
|
|
19724
19735
|
var someSelected = isCategorySomeSelected(category.id);
|
|
19725
19736
|
return (React__default.createElement("div", { key: category.id, className: "scopePicker__category ".concat(category.adminOnly ? "scopePicker__category--admin" : "") },
|
|
19726
19737
|
React__default.createElement("div", { className: "scopePicker__categoryHeader" },
|
|
19727
19738
|
React__default.createElement("label", { className: "scopePicker__categorySelect" },
|
|
19728
|
-
React__default.createElement(IndeterminateCheckbox, { checked: allSelected, indeterminate: someSelected && !allSelected, onChange: function (checked) { return handleCategorySelectAll(category.id, checked); }, disabled: disabled, ariaLabel: "Select all ".concat(category.label, " scopes") }),
|
|
19729
|
-
React__default.createElement("span", { className: "scopePicker__categoryLabel" }, category.label)),
|
|
19730
|
-
React__default.createElement("button", { type: "button", className: "scopePicker__categoryToggle", onClick: function () { return toggleCategory(category.id); }, "aria-expanded": isExpanded, "aria-label": "".concat(isExpanded ? "Collapse" : "Expand", " ").concat(category.label) }, isExpanded ? "▲" : "▼")),
|
|
19739
|
+
React__default.createElement(IndeterminateCheckbox, { checked: allSelected, indeterminate: someSelected && !allSelected, onChange: function (checked) { return handleCategorySelectAll(category.id, checked); }, disabled: disabled, ariaLabel: "Select all ".concat((_b = (_a = labels.categories) === null || _a === void 0 ? void 0 : _a[category.id]) !== null && _b !== void 0 ? _b : category.label, " scopes") }),
|
|
19740
|
+
React__default.createElement("span", { className: "scopePicker__categoryLabel" }, (_d = (_c = labels.categories) === null || _c === void 0 ? void 0 : _c[category.id]) !== null && _d !== void 0 ? _d : category.label)),
|
|
19741
|
+
React__default.createElement("button", { type: "button", className: "scopePicker__categoryToggle", onClick: function () { return toggleCategory(category.id); }, "aria-expanded": isExpanded, "aria-label": "".concat(isExpanded ? "Collapse" : "Expand", " ").concat((_f = (_e = labels.categories) === null || _e === void 0 ? void 0 : _e[category.id]) !== null && _f !== void 0 ? _f : category.label) }, isExpanded ? "▲" : "▼")),
|
|
19731
19742
|
isExpanded && (React__default.createElement("div", { className: "scopePicker__categoryBody" }, category.resources.map(function (resource) { return (React__default.createElement("div", { key: resource.resource, className: "scopePicker__resource" },
|
|
19732
19743
|
React__default.createElement("span", { className: "scopePicker__resourceLabel" }, resource.label),
|
|
19733
19744
|
React__default.createElement("div", { className: "scopePicker__actions" }, resource.actions.map(function (action) {
|
|
19745
|
+
var _a;
|
|
19734
19746
|
var scope = "".concat(resource.resource, ":").concat(action);
|
|
19735
19747
|
var checked = selectedSet.has(scope);
|
|
19736
19748
|
var implied = isImplied(scope);
|
|
19737
|
-
return (React__default.createElement("label", { key: action, className: "scopePicker__action ".concat(implied ? "scopePicker__action--implied" : ""), title: implied ? "Automatically included by another selected permission" : undefined },
|
|
19749
|
+
return (React__default.createElement("label", { key: action, className: "scopePicker__action ".concat(implied ? "scopePicker__action--implied" : ""), title: implied ? ((_a = labels.impliedHint) !== null && _a !== void 0 ? _a : "Automatically included by another selected permission") : undefined },
|
|
19738
19750
|
React__default.createElement("input", { type: "checkbox", checked: checked, onChange: function (e) { return handleScopeToggle(scope, e.target.checked); }, disabled: disabled || implied, "aria-label": "".concat(resource.label, " ").concat(action) }),
|
|
19739
19751
|
React__default.createElement("span", null, action)));
|
|
19740
19752
|
})))); })))));
|
|
19741
19753
|
})),
|
|
19742
19754
|
value.length > 0 && (React__default.createElement("details", { className: "scopePicker__summary" },
|
|
19743
|
-
React__default.createElement("summary", null,
|
|
19744
|
-
"Selected permissions (",
|
|
19745
|
-
value.length,
|
|
19746
|
-
")"),
|
|
19755
|
+
React__default.createElement("summary", null, labels.selectedPermissions ? labels.selectedPermissions(value.length) : "Selected permissions (".concat(value.length, ")")),
|
|
19747
19756
|
React__default.createElement("div", { className: "scopePicker__summaryList" }, __spreadArray([], value, true).sort().map(function (scope) {
|
|
19757
|
+
var _a;
|
|
19748
19758
|
// Scopes not in the catalog (e.g. enum drift) get a
|
|
19749
19759
|
// distinct style + tooltip so they're never invisible.
|
|
19750
19760
|
var unrecognized = !ALL_GRANULAR_SCOPES.has(scope);
|
|
19751
|
-
return (React__default.createElement("span", { key: scope, className: "scopePicker__summaryChip ".concat(unrecognized ? "scopePicker__summaryChip--unknown" : ""), title: unrecognized ? "Not in the current permission catalog — kept as-is on save" : undefined }, scope));
|
|
19761
|
+
return (React__default.createElement("span", { key: scope, className: "scopePicker__summaryChip ".concat(unrecognized ? "scopePicker__summaryChip--unknown" : ""), title: unrecognized ? ((_a = labels.unrecognizedHint) !== null && _a !== void 0 ? _a : "Not in the current permission catalog — kept as-is on save") : undefined }, scope));
|
|
19752
19762
|
}))))));
|
|
19753
19763
|
}
|
|
19754
19764
|
|
|
@@ -33,8 +33,10 @@ export type TEventDateRangeParams = {
|
|
|
33
33
|
fromDate?: string;
|
|
34
34
|
toDate?: string;
|
|
35
35
|
};
|
|
36
|
+
export type TMultiValueEntityId = string | Array<string>;
|
|
37
|
+
export type TMultiValueEventType = ETrackedEventType | string | Array<ETrackedEventType | string>;
|
|
36
38
|
export type TEventEntityFilterParams = {
|
|
37
|
-
entityId?:
|
|
39
|
+
entityId?: TMultiValueEntityId;
|
|
38
40
|
entityType?: ETrackedEntityType | string;
|
|
39
41
|
};
|
|
40
42
|
export type TEventAttributionFilterParams = {
|
|
@@ -52,7 +54,7 @@ export type TEventLineageParams = {
|
|
|
52
54
|
};
|
|
53
55
|
export type TEventCommonFilterParams = TEventDateRangeParams & TEventEntityFilterParams & TEventAttributionFilterParams & TEventLineageParams;
|
|
54
56
|
export type TListEvents = TEventCommonFilterParams & {
|
|
55
|
-
eventType?:
|
|
57
|
+
eventType?: TMultiValueEventType;
|
|
56
58
|
sortBy?: EEventSortField | string;
|
|
57
59
|
sortOrder?: "asc" | "desc";
|
|
58
60
|
properties?: string | Record<string, unknown>;
|
|
@@ -66,18 +68,18 @@ export type TGetEventSummary = TEventCommonFilterParams & {
|
|
|
66
68
|
useImpersonationTree?: boolean;
|
|
67
69
|
};
|
|
68
70
|
export type TGetEventTimeseries = TEventCommonFilterParams & {
|
|
69
|
-
eventType?:
|
|
71
|
+
eventType?: TMultiValueEventType;
|
|
70
72
|
granularity?: EEventTimeseriesGranularity | string;
|
|
71
73
|
breakdown?: EEventBreakdownDimension | string;
|
|
72
74
|
useImpersonationTree?: boolean;
|
|
73
75
|
};
|
|
74
76
|
export type TGetEventBreakdown = TEventCommonFilterParams & {
|
|
75
77
|
dimension: EEventBreakdownDimension | string;
|
|
76
|
-
eventType?:
|
|
78
|
+
eventType?: TMultiValueEventType;
|
|
77
79
|
useImpersonationTree?: boolean;
|
|
78
80
|
};
|
|
79
81
|
export type TGetEventPropertyKeys = TEventDateRangeParams & TEventEntityFilterParams & TEventLineageParams & {
|
|
80
|
-
eventType?:
|
|
82
|
+
eventType?: TMultiValueEventType;
|
|
81
83
|
search?: string;
|
|
82
84
|
email?: string;
|
|
83
85
|
useImpersonationTree?: boolean;
|