@oneuptime/common 11.5.0 → 11.5.2
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/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.ts +2 -2
- package/Server/Infrastructure/Postgres/SchemaMigrations/1783937343400-MigrationName.ts +386 -0
- package/Server/Infrastructure/Postgres/SchemaMigrations/Index.ts +4 -0
- package/Server/Services/AnalyticsDatabaseService.ts +59 -7
- package/Server/Services/MetricService.ts +124 -28
- package/Server/Services/SpanService.ts +11 -0
- package/Server/Types/AnalyticsDatabase/AggregateBy.ts +39 -0
- package/Server/Utils/AnalyticsDatabase/StatementGenerator.ts +8 -5
- package/Tests/Server/Services/AnalyticsDatabaseService.test.ts +84 -0
- package/Tests/Server/Services/MetricServiceAggregate.test.ts +167 -0
- package/Tests/Types/BaseDatabase/AggregationIntervalUtil.test.ts +40 -0
- package/Types/BaseDatabase/AggregateBy.ts +11 -1
- package/Types/BaseDatabase/AggregationInterval.ts +10 -0
- package/Types/BaseDatabase/AggregationIntervalUtil.ts +23 -0
- package/Types/Metrics/MetricFormulaConfigData.ts +5 -0
- package/Types/Metrics/MetricQueryConfigData.ts +19 -0
- package/UI/Components/Charts/Area/AreaChart.tsx +15 -2
- package/UI/Components/Charts/Bar/BarChart.tsx +16 -2
- package/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.tsx +31 -32
- package/UI/Components/Charts/ChartLibrary/BarChart/BarChart.tsx +41 -17
- package/UI/Components/Charts/ChartLibrary/LineChart/LineChart.tsx +38 -34
- package/UI/Components/Charts/ChartLibrary/SparkChart/SparkChart.tsx +4 -3
- package/UI/Components/Charts/ChartLibrary/Utils/ChartColors.ts +48 -10
- package/UI/Components/Charts/Line/LineChart.tsx +15 -2
- package/UI/Components/MoreMenu/MoreMenu.tsx +61 -2
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js +2 -2
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783650000000-AddAdditionalParamsToLlmProvider.js.map +1 -1
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783937343400-MigrationName.js +384 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/1783937343400-MigrationName.js.map +1 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js +4 -0
- package/build/dist/Server/Infrastructure/Postgres/SchemaMigrations/Index.js.map +1 -1
- package/build/dist/Server/Services/AnalyticsDatabaseService.js +43 -5
- package/build/dist/Server/Services/AnalyticsDatabaseService.js.map +1 -1
- package/build/dist/Server/Services/MetricService.js +110 -23
- package/build/dist/Server/Services/MetricService.js.map +1 -1
- package/build/dist/Server/Services/SpanService.js +10 -0
- package/build/dist/Server/Services/SpanService.js.map +1 -1
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js +32 -0
- package/build/dist/Server/Types/AnalyticsDatabase/AggregateBy.js.map +1 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js +2 -1
- package/build/dist/Server/Utils/AnalyticsDatabase/StatementGenerator.js.map +1 -1
- package/build/dist/Types/BaseDatabase/AggregationInterval.js +10 -0
- package/build/dist/Types/BaseDatabase/AggregationInterval.js.map +1 -1
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js +13 -0
- package/build/dist/Types/BaseDatabase/AggregationIntervalUtil.js.map +1 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js +3 -1
- package/build/dist/UI/Components/Charts/Area/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js +3 -1
- package/build/dist/UI/Components/Charts/Bar/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js +13 -9
- package/build/dist/UI/Components/Charts/ChartLibrary/AreaChart/AreaChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js +19 -7
- package/build/dist/UI/Components/Charts/ChartLibrary/BarChart/BarChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js +21 -9
- package/build/dist/UI/Components/Charts/ChartLibrary/LineChart/LineChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/SparkChart/SparkChart.js.map +1 -1
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js +26 -0
- package/build/dist/UI/Components/Charts/ChartLibrary/Utils/ChartColors.js.map +1 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js +3 -1
- package/build/dist/UI/Components/Charts/Line/LineChart.js.map +1 -1
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js +44 -4
- package/build/dist/UI/Components/MoreMenu/MoreMenu.js.map +1 -1
- package/package.json +1 -1
|
@@ -79,6 +79,16 @@ export const chartColors = {
|
|
|
79
79
|
},
|
|
80
80
|
};
|
|
81
81
|
export const AvailableChartColors = Object.keys(chartColors);
|
|
82
|
+
/*
|
|
83
|
+
* True when the value is a raw hex color rather than a named palette key.
|
|
84
|
+
* The chart renderers use this to decide between an inline style (hex) and
|
|
85
|
+
* a Tailwind color class (named key). Accepts ChartColorValue (which widens
|
|
86
|
+
* to `string | number` because `chartColors` has a string index signature) —
|
|
87
|
+
* only actual `#…` strings return true.
|
|
88
|
+
*/
|
|
89
|
+
export const isHexColorValue = (color) => {
|
|
90
|
+
return typeof color === "string" && color.trim().startsWith("#");
|
|
91
|
+
};
|
|
82
92
|
export const constructCategoryColors = (categories, colors) => {
|
|
83
93
|
const categoryColors = new Map();
|
|
84
94
|
categories.forEach((category, index) => {
|
|
@@ -94,10 +104,26 @@ export const getColorClassName = (color, type) => {
|
|
|
94
104
|
fill: "fill-gray-500",
|
|
95
105
|
text: "text-gray-500",
|
|
96
106
|
};
|
|
107
|
+
/*
|
|
108
|
+
* Hex values have no Tailwind class — callers apply them via inline style,
|
|
109
|
+
* so return an empty string here rather than the gray fallback (which would
|
|
110
|
+
* otherwise paint a custom-colored series gray).
|
|
111
|
+
*/
|
|
112
|
+
if (isHexColorValue(color)) {
|
|
113
|
+
return "";
|
|
114
|
+
}
|
|
97
115
|
return (_b = (_a = chartColors[color]) === null || _a === void 0 ? void 0 : _a[type]) !== null && _b !== void 0 ? _b : fallbackColor[type];
|
|
98
116
|
};
|
|
117
|
+
/*
|
|
118
|
+
* Resolve any chart color value to a concrete hex string. Named palette keys
|
|
119
|
+
* map to their `chartColors` hex; raw hex values pass through unchanged. Used
|
|
120
|
+
* for SVG fill/stroke and inline style props where a class name won't work.
|
|
121
|
+
*/
|
|
99
122
|
export const getColorHex = (color) => {
|
|
100
123
|
var _a, _b;
|
|
124
|
+
if (isHexColorValue(color)) {
|
|
125
|
+
return color;
|
|
126
|
+
}
|
|
101
127
|
return (_b = (_a = chartColors[color]) === null || _a === void 0 ? void 0 : _a.hex) !== null && _b !== void 0 ? _b : "#6b7280";
|
|
102
128
|
};
|
|
103
129
|
//# sourceMappingURL=ChartColors.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChartColors.js","sourceRoot":"","sources":["../../../../../../../UI/Components/Charts/ChartLibrary/Utils/ChartColors.ts"],"names":[],"mappings":"AAAA,kCAAkC;AAIlC,MAAM,CAAC,MAAM,WAAW,GAIpB;IACF,IAAI,EAAE;QACJ,EAAE,EAAE,aAAa;QACjB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,SAAS;KACf;IACD,OAAO,EAAE;QACP,EAAE,EAAE,gBAAgB;QACpB,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,SAAS;KACf;IACD,MAAM,EAAE;QACN,EAAE,EAAE,eAAe;QACnB,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,SAAS;KACf;IACD,KAAK,EAAE;QACL,EAAE,EAAE,cAAc;QAClB,MAAM,EAAE,kBAAkB;QAC1B,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB;QACtB,GAAG,EAAE,SAAS;KACf;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,aAAa;QACjB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,SAAS;KACf;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,aAAa;QACjB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,SAAS;KACf;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,aAAa;QACjB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,SAAS;KACf;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,aAAa;QACjB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,SAAS;KACf;IACD,OAAO,EAAE;QACP,EAAE,EAAE,gBAAgB;QACpB,MAAM,EAAE,oBAAoB;QAC5B,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,kBAAkB;QACxB,GAAG,EAAE,SAAS;KACf;IACD,MAAM,EAAE;QACN,EAAE,EAAE,eAAe;QACnB,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,SAAS;KACf;IACD,IAAI,EAAE;QACJ,EAAE,EAAE,aAAa;QACjB,MAAM,EAAE,iBAAiB;QACzB,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,eAAe;QACrB,GAAG,EAAE,SAAS;KACf;CACF,CAAC;AAIF,MAAM,CAAC,MAAM,oBAAoB,GAA+B,MAAM,CAAC,IAAI,CACzE,WAAW,CACuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ChartColors.js","sourceRoot":"","sources":["../../../../../../../UI/Components/Charts/ChartLibrary/Utils/ChartColors.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,7 +62,9 @@ const LineChartElement = (props) => {
|
|
|
62
62
|
const minValueProp = typeof yAxisMinOption === "number" ? { minValue: yAxisMinOption } : {};
|
|
63
63
|
const maxValueProp = typeof yAxisMaxOption === "number" ? { maxValue: yAxisMaxOption } : {};
|
|
64
64
|
return (React.createElement("div", { className: "relative flex flex-1", style: props.heightInPx ? { height: `${props.heightInPx}px` } : undefined },
|
|
65
|
-
React.createElement(LineChart, Object.assign({ data: records, tickGap: 30, index: "Time", categories: categories, colors:
|
|
65
|
+
React.createElement(LineChart, Object.assign({ data: records, tickGap: 30, index: "Time", categories: categories, colors: props.colors && props.colors.length > 0
|
|
66
|
+
? props.colors
|
|
67
|
+
: LineChartPalette, valueFormatter: props.yAxis.options.formatter || undefined, showTooltip: true, showLegend: props.showLegend !== false, connectNulls: true, curve: props.curve, syncid: props.sync ? props.syncid : undefined, yAxisWidth: 64, autoMinValue: autoMinValue }, minValueProp, maxValueProp, { onValueChange: () => { }, referenceLines: props.referenceLines, formattedExemplarPoints: formattedExemplars.length > 0 ? formattedExemplars : undefined, onExemplarClick: props.onExemplarClick })),
|
|
66
68
|
hasNoData && React.createElement(NoDataMessage, null)));
|
|
67
69
|
};
|
|
68
70
|
export default LineChartElement;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LineChart.js","sourceRoot":"","sources":["../../../../../../UI/Components/Charts/Line/LineChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;
|
|
1
|
+
{"version":3,"file":"LineChart.js","sourceRoot":"","sources":["../../../../../../UI/Components/Charts/Line/LineChart.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qCAAqC,CAAC;AAKhE,OAAO,KAAK,EAAE,EAGZ,SAAS,EACT,OAAO,GACR,MAAM,OAAO,CAAC;AAOf,OAAO,aAAa,MAAM,oBAAoB,CAAC;AAG/C,OAAO,SAAS,MAAM,gBAAgB,CAAC;AACvC,OAAO,aAAa,MAAM,6BAA6B,CAAC;AAExD,MAAM,CAAC,MAAM,gBAAgB,GAAoC;IAC/D,QAAQ;IACR,MAAM;IACN,SAAS;IACT,OAAO;IACP,MAAM;IACN,MAAM;IACN,MAAM;IACN,MAAM;IACN,SAAS;CACV,CAAC;AAyBF,MAAM,gBAAgB,GAAyC,CAC7D,KAAwB,EACV,EAAE;IAChB,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAwB,EAAE,CAAC,CAAC;IAExE,MAAM,UAAU,GAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAiB,EAAE,EAAE;QACrE,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAA0B,aAAa,CAAC,kBAAkB,CAAC;YACtE,YAAY,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,UAAU,CAAC,OAAO,CAAC,CAAC;IACtB,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAEjB,8DAA8D;IAC9D,MAAM,kBAAkB,GAAkC,OAAO,CAAC,GAAG,EAAE;QACrE,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,SAAS,GAA4B,SAAS,CAAC,YAAY,CAAC;YAChE,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;YACjC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG;SAClC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,QAAuB,EAAE,EAAE;YAC1D,OAAO;gBACL,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACjC,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACb,QAAQ,EAAE,QAAQ;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAExC,MAAM,SAAS,GACb,CAAC,KAAK,CAAC,IAAI;QACX,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAmB,EAAE,EAAE;YACvC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IAEL;;;;;;OAMG;IACH,MAAM,cAAc,GAAoB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IAChE,MAAM,cAAc,GAAoB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;IAChE,MAAM,YAAY,GAAY,cAAc,KAAK,MAAM,CAAC;IACxD,MAAM,YAAY,GAChB,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,MAAM,YAAY,GAChB,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAEzE,OAAO,CACL,6BACE,SAAS,EAAC,sBAAsB,EAChC,KAAK,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;QAEzE,oBAAC,SAAS,kBACR,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,EAAE,EACX,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,UAAU,EACtB,MAAM,EACJ,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBACrC,CAAC,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC,gBAAgB,EAEtB,cAAc,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,SAAS,EAC1D,WAAW,EAAE,IAAI,EACjB,UAAU,EAAE,KAAK,CAAC,UAAU,KAAK,KAAK,EACtC,YAAY,EAAE,IAAI,EAClB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAC7C,UAAU,EAAE,EAAE,EACd,YAAY,EAAE,YAAY,IACtB,YAAY,EACZ,YAAY,IAChB,aAAa,EAAE,GAAG,EAAE,GAAE,CAAC,EACvB,cAAc,EAAE,KAAK,CAAC,cAAc,EACpC,uBAAuB,EACrB,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS,EAEhE,eAAe,EAAE,KAAK,CAAC,eAAe,IACtC;QACD,SAAS,IAAI,oBAAC,aAAa,OAAG,CAC3B,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
|
|
@@ -38,6 +38,23 @@ const MoreMenu = forwardRef((props, componentRef) => {
|
|
|
38
38
|
(_a = menuItemRefs.current[focusedIndex]) === null || _a === void 0 ? void 0 : _a.focus();
|
|
39
39
|
}
|
|
40
40
|
}, [focusedIndex]);
|
|
41
|
+
const restoreFocusToTrigger = useCallback(() => {
|
|
42
|
+
/*
|
|
43
|
+
* Return focus to the trigger after the menu closes via Escape or item
|
|
44
|
+
* selection (WAI-ARIA menu-button pattern). Deferred to the next frame so
|
|
45
|
+
* the menu has unmounted, and only reclaimed if focus fell back to
|
|
46
|
+
* <body> — so we never steal focus that the activated item intentionally
|
|
47
|
+
* moved elsewhere (e.g. into a dialog it opened). Not called on
|
|
48
|
+
* outside-click dismissal, which should leave focus where the user clicked.
|
|
49
|
+
*/
|
|
50
|
+
requestAnimationFrame(() => {
|
|
51
|
+
var _a;
|
|
52
|
+
const activeElement = document.activeElement;
|
|
53
|
+
if (!activeElement || activeElement === document.body) {
|
|
54
|
+
(_a = document.getElementById(buttonId)) === null || _a === void 0 ? void 0 : _a.focus();
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
}, [buttonId]);
|
|
41
58
|
const handleKeyDown = useCallback((event) => {
|
|
42
59
|
if (!isComponentVisible) {
|
|
43
60
|
return;
|
|
@@ -47,6 +64,7 @@ const MoreMenu = forwardRef((props, componentRef) => {
|
|
|
47
64
|
case "Escape":
|
|
48
65
|
event.preventDefault();
|
|
49
66
|
setIsComponentVisible(false);
|
|
67
|
+
restoreFocusToTrigger();
|
|
50
68
|
break;
|
|
51
69
|
case "ArrowDown":
|
|
52
70
|
event.preventDefault();
|
|
@@ -69,15 +87,36 @@ const MoreMenu = forwardRef((props, componentRef) => {
|
|
|
69
87
|
setFocusedIndex(itemCount - 1);
|
|
70
88
|
break;
|
|
71
89
|
}
|
|
72
|
-
}, [
|
|
90
|
+
}, [
|
|
91
|
+
isComponentVisible,
|
|
92
|
+
props.children.length,
|
|
93
|
+
setIsComponentVisible,
|
|
94
|
+
restoreFocusToTrigger,
|
|
95
|
+
]);
|
|
73
96
|
return (React.createElement("div", { className: "relative inline-block text-left", onKeyDown: handleKeyDown },
|
|
74
97
|
!props.elementToBeShownInsteadOfButton && (React.createElement(Button, { id: buttonId, icon: props.menuIcon || IconProp.More, title: props.text || "", buttonStyle: ButtonStyleType.OUTLINE, onClick: () => {
|
|
75
98
|
setIsComponentVisible(!isDropdownVisible);
|
|
76
99
|
}, ariaLabel: props.text || "More options", ariaExpanded: isComponentVisible, ariaHaspopup: "menu", ariaControls: isComponentVisible ? menuId : undefined })),
|
|
77
|
-
props.elementToBeShownInsteadOfButton && (React.createElement("div", {
|
|
100
|
+
props.elementToBeShownInsteadOfButton && (React.createElement("div", {
|
|
101
|
+
/*
|
|
102
|
+
* The id lets the menu's aria-labelledby resolve and lets focus
|
|
103
|
+
* return here on close. But the menu-button ARIA (haspopup/expanded/
|
|
104
|
+
* label) is only applied when a caller opts in with triggerClassName
|
|
105
|
+
* — callers that pass their own element (some already a real
|
|
106
|
+
* <button>) keep a bare wrapper to avoid layering redundant button
|
|
107
|
+
* semantics on top.
|
|
108
|
+
*/
|
|
109
|
+
id: buttonId, className: props.triggerClassName, onClick: () => {
|
|
78
110
|
setIsComponentVisible(!isDropdownVisible);
|
|
79
|
-
}, role: "button", tabIndex: 0, onKeyDown: (e) => {
|
|
80
|
-
|
|
111
|
+
}, role: "button", tabIndex: 0, "aria-label": props.triggerClassName ? props.text || "More options" : undefined, "aria-haspopup": props.triggerClassName ? "menu" : undefined, "aria-expanded": props.triggerClassName ? isComponentVisible : undefined, "aria-controls": props.triggerClassName && isComponentVisible ? menuId : undefined, onKeyDown: (e) => {
|
|
112
|
+
/*
|
|
113
|
+
* Only respond to the wrapper's own keys, never a focusable
|
|
114
|
+
* child's (e.g. an input inside a custom trigger), so typing
|
|
115
|
+
* isn't hijacked.
|
|
116
|
+
*/
|
|
117
|
+
if ((e.key === "Enter" || e.key === " ") &&
|
|
118
|
+
e.target === e.currentTarget) {
|
|
119
|
+
e.preventDefault();
|
|
81
120
|
setIsComponentVisible(!isDropdownVisible);
|
|
82
121
|
}
|
|
83
122
|
} }, props.elementToBeShownInsteadOfButton)),
|
|
@@ -87,6 +126,7 @@ const MoreMenu = forwardRef((props, componentRef) => {
|
|
|
87
126
|
}, role: "menuitem", tabIndex: focusedIndex === index ? 0 : -1, onClick: () => {
|
|
88
127
|
if (isComponentVisible) {
|
|
89
128
|
setIsComponentVisible(false);
|
|
129
|
+
restoreFocusToTrigger();
|
|
90
130
|
}
|
|
91
131
|
}, onKeyDown: (e) => {
|
|
92
132
|
if (e.key === "Enter" || e.key === " ") {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MoreMenu.js","sourceRoot":"","sources":["../../../../../UI/Components/MoreMenu/MoreMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EACZ,UAAU,EAEV,WAAW,EACX,SAAS,EACT,KAAK,EACL,mBAAmB,EACnB,MAAM,EACN,QAAQ,GACT,MAAM,OAAO,CAAC;AACf,OAAO,QAAQ,MAAM,8BAA8B,CAAC;AACpD,OAAO,wBAAwB,MAAM,sCAAsC,CAAC;AAC5E,OAAO,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"MoreMenu.js","sourceRoot":"","sources":["../../../../../UI/Components/MoreMenu/MoreMenu.tsx"],"names":[],"mappings":"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"}
|