@splunk/react-field-summary 28.0.0 → 28.2.0
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/.loki/reference/chrome_a4_react_field_summary_FieldSummary_Action_On_Click.png +0 -0
- package/.loki/reference/chrome_a4_react_field_summary_FieldSummary_Value_On_Click.png +0 -0
- package/.prettierrc +7 -0
- package/CHANGELOG.external.md +53 -46
- package/components/FieldSummary/FieldActions.js +1 -1
- package/components/FieldSummary/FieldActions.js.map +2 -2
- package/components/FieldSummary/FieldSummary.js +20 -30
- package/components/FieldSummary/FieldSummary.js.map +4 -4
- package/components/FieldSummary/FieldSummaryTable.js +6 -15
- package/components/FieldSummary/FieldSummaryTable.js.map +4 -4
- package/components/FieldSummary/SelectionButtons.js +1 -1
- package/components/FieldSummary/SelectionButtons.js.map +2 -2
- package/components/FieldSummary/SplitButton.js +2 -3
- package/components/FieldSummary/SplitButton.js.map +2 -2
- package/components/FieldSummary/index.js +20 -30
- package/components/FieldSummary/index.js.map +4 -4
- package/components/FieldSummaryList/FieldSummaryList.js +27 -36
- package/components/FieldSummaryList/FieldSummaryList.js.map +4 -4
- package/components/FieldSummaryList/index.js +27 -36
- package/components/FieldSummaryList/index.js.map +4 -4
- package/index.js +27 -36
- package/index.js.map +4 -4
- package/package.json +17 -19
- package/types/components/FieldSummary/FieldSummaryTable.d.ts +3 -3
- package/types/components/FieldSummaryList/FieldSummaryList.d.ts +2 -3
|
Binary file
|
|
Binary file
|
package/.prettierrc
ADDED
package/CHANGELOG.external.md
CHANGED
|
@@ -3,155 +3,162 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
|
|
7
|
+
# 28.2.0 (2025-09-30)
|
|
6
8
|
|
|
7
|
-
# 28.0.0 (2025-07-14)
|
|
8
9
|
|
|
9
10
|
|
|
10
|
-
### BREAKING CHANGES
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
**Note:** Version bump only for package @splunk/react-field-summary
|
|
13
|
+
|
|
13
14
|
|
|
15
|
+
All notable changes to this project will be documented in this file.
|
|
16
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
14
17
|
|
|
18
|
+
# 28.1.0 (2025-08-19)
|
|
15
19
|
|
|
20
|
+
**Note:** Version bump only for package @splunk/react-field-summary
|
|
16
21
|
|
|
17
22
|
# Change Log
|
|
18
23
|
|
|
19
24
|
All notable changes to this project will be documented in this file.
|
|
20
25
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
21
26
|
|
|
27
|
+
# 28.0.0 (2025-07-14)
|
|
22
28
|
|
|
23
|
-
|
|
29
|
+
### BREAKING CHANGES
|
|
24
30
|
|
|
31
|
+
- **SCP-68696:** Upgrade to React 18 and SUI 5, see Migration docs for details (3ba06ca)
|
|
25
32
|
|
|
33
|
+
# Change Log
|
|
26
34
|
|
|
35
|
+
All notable changes to this project will be documented in this file.
|
|
36
|
+
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
37
|
+
|
|
38
|
+
# 27.5.0 (2025-06-24)
|
|
27
39
|
|
|
28
40
|
**Note:** Version bump only for package @splunk/react-field-summary
|
|
29
41
|
|
|
30
42
|
# 27.4.0 (2025-05-27)
|
|
31
43
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
44
|
**Note:** Version bump only for package @splunk/react-field-summary
|
|
36
45
|
|
|
37
|
-
|
|
38
|
-
|
|
39
46
|
# 27.3.0 (2025-04-15)
|
|
40
47
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
48
|
**Note:** Version bump only for package @splunk/react-field-summary
|
|
45
49
|
|
|
46
50
|
## 27.2.1 (2025-03-04)
|
|
47
|
-
**Note:** Version bump due to ownership transfer of react-field-summary to vision repo
|
|
48
|
-
|
|
49
51
|
|
|
52
|
+
**Note:** Version bump due to ownership transfer of react-field-summary to vision repo
|
|
50
53
|
|
|
51
54
|
**Note:** Version bump only for package @splunk/react-field-summary
|
|
52
55
|
|
|
53
|
-
|
|
54
56
|
## 0.11.0
|
|
55
|
-
### Fixed
|
|
56
|
-
* Updated `@splunk/react-ui`, `@splunk/themes`, `@splunk/react-icons`, and `styled-components` dependencies and peerDependencies to fix a mismatched peerDependency issue
|
|
57
57
|
|
|
58
|
-
## 0.10.1 (2023-06-07)
|
|
59
58
|
### Fixed
|
|
60
|
-
* Updated dependency on `@splunk/react-ui` to fix security issues (SCP-64394).
|
|
61
59
|
|
|
62
|
-
|
|
63
|
-
### Features
|
|
64
|
-
* upgraded app-px and libs
|
|
60
|
+
- Updated `@splunk/react-ui`, `@splunk/themes`, `@splunk/react-icons`, and `styled-components` dependencies and peerDependencies to fix a mismatched peerDependency issue
|
|
65
61
|
|
|
62
|
+
## 0.10.1 (2023-06-07)
|
|
66
63
|
|
|
67
|
-
|
|
64
|
+
### Fixed
|
|
68
65
|
|
|
66
|
+
- Updated dependency on `@splunk/react-ui` to fix security issues (SCP-64394).
|
|
69
67
|
|
|
70
|
-
|
|
68
|
+
## 0.10.0 (2023-05-02)
|
|
71
69
|
|
|
70
|
+
### Features
|
|
72
71
|
|
|
73
|
-
|
|
72
|
+
- upgraded app-px and libs
|
|
74
73
|
|
|
74
|
+
- using webpack 5
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
- upgrading webpack-dev-server
|
|
77
77
|
|
|
78
|
+
- upgrading webpack-cli to 4.10.0
|
|
78
79
|
|
|
79
|
-
|
|
80
|
+
- upgrading to the latest webpack 4
|
|
80
81
|
|
|
82
|
+
- SUI-5097,generate external docs builds for search-components without source code links
|
|
81
83
|
|
|
82
84
|
## 0.9.0 (2021-10-07)
|
|
83
85
|
|
|
84
86
|
### Changed
|
|
85
|
-
* [Breaking] Relicensed package to Apache-2.0
|
|
86
87
|
|
|
88
|
+
- [Breaking] Relicensed package to Apache-2.0
|
|
87
89
|
|
|
88
90
|
## 0.8.1 (2021-06-24)
|
|
91
|
+
|
|
89
92
|
### Fixed
|
|
90
|
-
* Updated dependency on `@splunk/react-ui` to fix a11y issues (SUI-2608).
|
|
91
93
|
|
|
94
|
+
- Updated dependency on `@splunk/react-ui` to fix a11y issues (SUI-2608).
|
|
92
95
|
|
|
93
96
|
## 0.8.0 (2021-02-18)
|
|
97
|
+
|
|
94
98
|
### Changed
|
|
95
|
-
* [Breaking] Updated to use 4.0 series of Splunk UI packages. Includes breaking changes to theming,
|
|
96
|
-
layout, and colors. The `themes` module was removed. (PX-918).
|
|
97
|
-
* [Breaking] IE11 is no longer supported.
|
|
98
|
-
* [Breaking] Updated peer dependency `styled-components` to `^5.1`.
|
|
99
|
-
* Removed peer dependencies: `@splunk/react-ui`, `@splunk/react-icons`.
|
|
100
99
|
|
|
100
|
+
- [Breaking] Updated to use 4.0 series of Splunk UI packages. Includes breaking changes to theming,
|
|
101
|
+
layout, and colors. The `themes` module was removed. (PX-918).
|
|
102
|
+
- [Breaking] IE11 is no longer supported.
|
|
103
|
+
- [Breaking] Updated peer dependency `styled-components` to `^5.1`.
|
|
104
|
+
- Removed peer dependencies: `@splunk/react-ui`, `@splunk/react-icons`.
|
|
101
105
|
|
|
102
106
|
## [0.7.0] - 2020-08-31
|
|
103
107
|
|
|
104
108
|
### Fixed
|
|
105
|
-
* Fixed clear text icon overlapping magnifying search icon in field summary list (PX-94).
|
|
106
|
-
* Fixed field summary values getting truncated too early (PX-337).
|
|
107
109
|
|
|
110
|
+
- Fixed clear text icon overlapping magnifying search icon in field summary list (PX-94).
|
|
111
|
+
- Fixed field summary values getting truncated too early (PX-337).
|
|
108
112
|
|
|
109
113
|
## [0.6.1] - 2020-07-27
|
|
110
114
|
|
|
111
115
|
### Fixed
|
|
112
|
-
* Added missing dependency on `@splunk/react-icons`
|
|
113
116
|
|
|
117
|
+
- Added missing dependency on `@splunk/react-icons`
|
|
114
118
|
|
|
115
119
|
## [0.6.0] - 2020-07-24
|
|
116
120
|
|
|
117
121
|
### Changed
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
122
|
+
|
|
123
|
+
- Updated following peer dependencies (SCP-25802).
|
|
124
|
+
- [Breaking] react-ui: ^3
|
|
125
|
+
- [Breaking] styled-components: ^5.1
|
|
121
126
|
|
|
122
127
|
### Fixed
|
|
123
|
-
* Removed direct dependency on `@splunk/react-ui` since it's a peer dependency
|
|
124
|
-
* Added missing dependency on `prop-types`
|
|
125
128
|
|
|
129
|
+
- Removed direct dependency on `@splunk/react-ui` since it's a peer dependency
|
|
130
|
+
- Added missing dependency on `prop-types`
|
|
126
131
|
|
|
127
132
|
## [0.5.0] - 2020-06-12
|
|
128
133
|
|
|
129
134
|
### Fixed
|
|
130
|
-
Closed field-summary popover when an action or field value is clicked (SCP-27832).
|
|
131
135
|
|
|
136
|
+
Closed field-summary popover when an action or field value is clicked (SCP-27832).
|
|
132
137
|
|
|
133
138
|
## [0.4.0] - 2020-05-27
|
|
134
139
|
|
|
135
140
|
### Fixed
|
|
141
|
+
|
|
136
142
|
Increased the space afforded to field values in the field summary popup (SCP-26797).
|
|
137
143
|
|
|
138
144
|
## [0.3.0] - 2020-04-20
|
|
139
145
|
|
|
140
146
|
### Added
|
|
147
|
+
|
|
141
148
|
Made the `FieldSummary` a part of the public API (SCP-25687).
|
|
142
149
|
|
|
143
150
|
### Changed
|
|
144
|
-
* Updated the `FieldSummary` design (SCP-25014).
|
|
145
151
|
|
|
152
|
+
- Updated the `FieldSummary` design (SCP-25014).
|
|
146
153
|
|
|
147
154
|
## [0.2.0] - 2020-04-08
|
|
148
155
|
|
|
149
156
|
### Added
|
|
150
|
-
Tooltip for bars in field summary now show the total events.(SCP-25550).
|
|
151
157
|
|
|
158
|
+
Tooltip for bars in field summary now show the total events.(SCP-25550).
|
|
152
159
|
|
|
153
160
|
## [0.1.0] - 2020-03-24
|
|
154
161
|
|
|
155
162
|
### Added
|
|
156
163
|
|
|
157
|
-
|
|
164
|
+
- `FieldSummaryList` component accepts field summary data from the results of a search and lists the fields, each with a popup for its values (SCP-23652).
|
|
@@ -112,7 +112,7 @@ var Actions = ({ field, actions, selected, onActionClicked }) => actions && acti
|
|
|
112
112
|
disabled: !onActionClicked || requiresSelection && selected.length === 0,
|
|
113
113
|
onClick: (e) => {
|
|
114
114
|
e.preventDefault();
|
|
115
|
-
onActionClicked(e, { action: name, field, selected });
|
|
115
|
+
onActionClicked == null ? void 0 : onActionClicked(e, { action: name, field, selected });
|
|
116
116
|
}
|
|
117
117
|
},
|
|
118
118
|
label
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/components/FieldSummary/FieldActions.tsx", "esm-externals:react", "esm-externals:styled-components", "esm-externals:@splunk/react-ui/Link", "esm-externals:@splunk/themes", "esm-externals:@splunk/ui-utils/i18n"],
|
|
4
|
-
"sourcesContent": ["import React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport Link from '@splunk/react-ui/Link';\nimport { variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nexport interface Action {\n name: string;\n label: string;\n requiresSelection?: boolean;\n}\n\nexport type ActionClicked = (\n e: SyntheticEvent,\n data: { action: string; field: string; selected: string[] }\n) => void;\n\nexport interface ActionsProps {\n field: string;\n actions?: Action[];\n selected: string[];\n onActionClicked?: ActionClicked;\n}\n\nconst StyledActions = styled.div`\n padding-left: ${variables.spacingMedium};\n\n h3 {\n font-size: ${variables.fontSize};\n margin: 0;\n padding: 1px;\n margin-top: 2px;\n }\n\n ul {\n list-style-type: none;\n padding: 0;\n margin: 0;\n\n button {\n line-height: calc(${variables.lineHeight} * 0.8);\n margin-bottom: ${variables.spacingXSmall};\n }\n }\n`;\n\nconst Actions: React.FC<ActionsProps> = ({ field, actions, selected, onActionClicked }: ActionsProps) =>\n actions && actions.length > 0 ? (\n <StyledActions>\n <h3>{_('Actions')}</h3>\n <ul>\n {actions.map(({ name, label, requiresSelection }) => (\n <li key={name}>\n <Link\n role=\"button\"\n appearance=\"standalone\"\n disabled={!onActionClicked || (requiresSelection && selected.length === 0)}\n onClick={(e: SyntheticEvent): void => {\n e.preventDefault();\n onActionClicked(e, { action: name, field, selected });\n }}\n >\n {label}\n </Link>\n </li>\n ))}\n </ul>\n </StyledActions>\n ) : null;\n\nexport default Actions;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Link\";\nexport * from \"@splunk/react-ui/Link\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes\";\nexport * from \"@splunk/themes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,0BAAc;AACd,IAAO,gBAAS,aAAa,gBAA8B,wBAAU;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAA,iBAA+B;AAC/B,sCAAc;AACd,IAAO,4BAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,yBAAc;AACd,IAAO,eAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,2BAAc;AACd,IAAO,iBAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,yBAAc;AACd,IAAO,eAAS,aAAaA,iBAA8B,yBAAUA;;;ALsBrE,IAAM,gBAAgB,0BAAO;AAAA,oBACT,yBAAU,aAAa;AAAA;AAAA;AAAA,qBAGtB,yBAAU,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAYP,yBAAU,UAAU;AAAA,6BACvB,yBAAU,aAAa;AAAA;AAAA;AAAA;AAKpD,IAAM,UAAkC,CAAC,EAAE,OAAO,SAAS,UAAU,gBAAgB,MACjF,WAAW,QAAQ,SAAS,IACxB,4CAAC,qBACG,4CAAC,gBAAI,gBAAE,SAAS,CAAE,GAClB,4CAAC,YACI,QAAQ,IAAI,CAAC,EAAE,MAAM,OAAO,kBAAkB,MAC3C,4CAAC,QAAG,KAAK,QACL;AAAA,EAAC;AAAA;AAAA,IACG,MAAK;AAAA,IACL,YAAW;AAAA,IACX,UAAU,CAAC,mBAAoB,qBAAqB,SAAS,WAAW;AAAA,IACxE,SAAS,CAAC,MAA4B;AAClC,QAAE,eAAe;AACjB,
|
|
4
|
+
"sourcesContent": ["import React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport Link from '@splunk/react-ui/Link';\nimport { variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nexport interface Action {\n name: string;\n label: string;\n requiresSelection?: boolean;\n}\n\nexport type ActionClicked = (\n e: SyntheticEvent,\n data: { action: string; field: string; selected: string[] }\n) => void;\n\nexport interface ActionsProps {\n field: string;\n actions?: Action[];\n selected: string[];\n onActionClicked?: ActionClicked;\n}\n\nconst StyledActions = styled.div`\n padding-left: ${variables.spacingMedium};\n\n h3 {\n font-size: ${variables.fontSize};\n margin: 0;\n padding: 1px;\n margin-top: 2px;\n }\n\n ul {\n list-style-type: none;\n padding: 0;\n margin: 0;\n\n button {\n line-height: calc(${variables.lineHeight} * 0.8);\n margin-bottom: ${variables.spacingXSmall};\n }\n }\n`;\n\nconst Actions: React.FC<ActionsProps> = ({ field, actions, selected, onActionClicked }: ActionsProps) =>\n actions && actions.length > 0 ? (\n <StyledActions>\n <h3>{_('Actions')}</h3>\n <ul>\n {actions.map(({ name, label, requiresSelection }) => (\n <li key={name}>\n <Link\n role=\"button\"\n appearance=\"standalone\"\n disabled={!onActionClicked || (requiresSelection && selected.length === 0)}\n onClick={(e: SyntheticEvent): void => {\n e.preventDefault();\n onActionClicked?.(e, { action: name, field, selected });\n }}\n >\n {label}\n </Link>\n </li>\n ))}\n </ul>\n </StyledActions>\n ) : null;\n\nexport default Actions;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Link\";\nexport * from \"@splunk/react-ui/Link\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes\";\nexport * from \"@splunk/themes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,0BAAc;AACd,IAAO,gBAAS,aAAa,gBAA8B,wBAAU;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAA,iBAA+B;AAC/B,sCAAc;AACd,IAAO,4BAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,yBAAc;AACd,IAAO,eAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,2BAAc;AACd,IAAO,iBAAS,aAAaA,iBAA8B,yBAAUA;;;ACHrE;AAAA;AAAA;AAAA;AACA,IAAAC,iBAA+B;AAC/B,yBAAc;AACd,IAAO,eAAS,aAAaA,iBAA8B,yBAAUA;;;ALsBrE,IAAM,gBAAgB,0BAAO;AAAA,oBACT,yBAAU,aAAa;AAAA;AAAA;AAAA,qBAGtB,yBAAU,QAAQ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,gCAYP,yBAAU,UAAU;AAAA,6BACvB,yBAAU,aAAa;AAAA;AAAA;AAAA;AAKpD,IAAM,UAAkC,CAAC,EAAE,OAAO,SAAS,UAAU,gBAAgB,MACjF,WAAW,QAAQ,SAAS,IACxB,4CAAC,qBACG,4CAAC,gBAAI,gBAAE,SAAS,CAAE,GAClB,4CAAC,YACI,QAAQ,IAAI,CAAC,EAAE,MAAM,OAAO,kBAAkB,MAC3C,4CAAC,QAAG,KAAK,QACL;AAAA,EAAC;AAAA;AAAA,IACG,MAAK;AAAA,IACL,YAAW;AAAA,IACX,UAAU,CAAC,mBAAoB,qBAAqB,SAAS,WAAW;AAAA,IACxE,SAAS,CAAC,MAA4B;AAClC,QAAE,eAAe;AACjB,yDAAkB,GAAG,EAAE,QAAQ,MAAM,OAAO,SAAS;AAAA,IACzD;AAAA;AAAA,EAEC;AACL,CACJ,CACH,CACL,CACJ,IACA;AAER,IAAO,uBAAQ;",
|
|
6
6
|
"names": ["defaultImport", "defaultImport", "defaultImport", "defaultImport"]
|
|
7
7
|
}
|
|
@@ -231,7 +231,7 @@ var Actions = ({ field, actions, selected, onActionClicked }) => actions && acti
|
|
|
231
231
|
disabled: !onActionClicked || requiresSelection && selected.length === 0,
|
|
232
232
|
onClick: (e) => {
|
|
233
233
|
e.preventDefault();
|
|
234
|
-
onActionClicked(e, { action: name, field, selected });
|
|
234
|
+
onActionClicked == null ? void 0 : onActionClicked(e, { action: name, field, selected });
|
|
235
235
|
}
|
|
236
236
|
},
|
|
237
237
|
label
|
|
@@ -269,15 +269,6 @@ var defaultImport9 = __toESM(require("@splunk/react-ui/Switch"));
|
|
|
269
269
|
__reExport(Switch_exports, require("@splunk/react-ui/Switch"));
|
|
270
270
|
var Switch_default = "default" in defaultImport9 ? defaultImport9.default : defaultImport9;
|
|
271
271
|
|
|
272
|
-
// esm-externals:@splunk/ui-utils/id
|
|
273
|
-
var id_exports = {};
|
|
274
|
-
__export(id_exports, {
|
|
275
|
-
default: () => id_default
|
|
276
|
-
});
|
|
277
|
-
var defaultImport10 = __toESM(require("@splunk/ui-utils/id"));
|
|
278
|
-
__reExport(id_exports, require("@splunk/ui-utils/id"));
|
|
279
|
-
var id_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
|
|
280
|
-
|
|
281
272
|
// src/components/FieldSummary/FieldSummaryTable.tsx
|
|
282
273
|
var BAR_WIDTH = "100px";
|
|
283
274
|
var BAR_HEIGHT = "20px";
|
|
@@ -344,16 +335,16 @@ var FieldSummaryTable = ({
|
|
|
344
335
|
percent: formatNumber(percent),
|
|
345
336
|
total: formatNumber(total)
|
|
346
337
|
});
|
|
347
|
-
const
|
|
348
|
-
return /* @__PURE__ */ react_default.createElement("tr", { key:
|
|
338
|
+
const fieldValueId = `field-value-${value}`;
|
|
339
|
+
return /* @__PURE__ */ react_default.createElement("tr", { key: fieldValueId }, onFieldValueSelected && /* @__PURE__ */ react_default.createElement("td", { style: { padding: 0, margin: 0 } }, /* @__PURE__ */ react_default.createElement(
|
|
349
340
|
StyledSwitch,
|
|
350
341
|
{
|
|
351
|
-
key:
|
|
342
|
+
key: fieldValueId,
|
|
352
343
|
value,
|
|
353
344
|
selected: selected.indexOf(value) >= 0,
|
|
354
345
|
appearance: "checkbox",
|
|
355
346
|
onClick: onFieldValueSelected,
|
|
356
|
-
labelledBy:
|
|
347
|
+
labelledBy: fieldValueId
|
|
357
348
|
}
|
|
358
349
|
)), /* @__PURE__ */ react_default.createElement(ValueCell, { title: value }, onFieldValueClicked ? /* @__PURE__ */ react_default.createElement(
|
|
359
350
|
Link_default,
|
|
@@ -365,8 +356,8 @@ var FieldSummaryTable = ({
|
|
|
365
356
|
onFieldValueClicked(e, { value });
|
|
366
357
|
}
|
|
367
358
|
},
|
|
368
|
-
/* @__PURE__ */ react_default.createElement(Truncated, { id:
|
|
369
|
-
) : /* @__PURE__ */ react_default.createElement(Truncated, { id:
|
|
359
|
+
/* @__PURE__ */ react_default.createElement(Truncated, { id: fieldValueId }, value)
|
|
360
|
+
) : /* @__PURE__ */ react_default.createElement(Truncated, { id: fieldValueId }, value)), /* @__PURE__ */ react_default.createElement(NumericCell, { title: percentOfEvents }, formatNumber(count)), /* @__PURE__ */ react_default.createElement("td", { title: percentOfEvents }, /* @__PURE__ */ react_default.createElement(BarContainer, null, /* @__PURE__ */ react_default.createElement(Bar, { style: { width: `${percent}%` } }))));
|
|
370
361
|
})));
|
|
371
362
|
};
|
|
372
363
|
var FieldSummaryTable_default = FieldSummaryTable;
|
|
@@ -376,45 +367,45 @@ var Caret_exports = {};
|
|
|
376
367
|
__export(Caret_exports, {
|
|
377
368
|
default: () => Caret_default
|
|
378
369
|
});
|
|
379
|
-
var
|
|
370
|
+
var defaultImport10 = __toESM(require("@splunk/react-icons/enterprise/Caret"));
|
|
380
371
|
__reExport(Caret_exports, require("@splunk/react-icons/enterprise/Caret"));
|
|
381
|
-
var Caret_default = "default" in
|
|
372
|
+
var Caret_default = "default" in defaultImport10 ? defaultImport10.default : defaultImport10;
|
|
382
373
|
|
|
383
374
|
// esm-externals:@splunk/react-ui/Menu
|
|
384
375
|
var Menu_exports = {};
|
|
385
376
|
__export(Menu_exports, {
|
|
386
377
|
default: () => Menu_default
|
|
387
378
|
});
|
|
388
|
-
var
|
|
379
|
+
var defaultImport11 = __toESM(require("@splunk/react-ui/Menu"));
|
|
389
380
|
__reExport(Menu_exports, require("@splunk/react-ui/Menu"));
|
|
390
|
-
var Menu_default = "default" in
|
|
381
|
+
var Menu_default = "default" in defaultImport11 ? defaultImport11.default : defaultImport11;
|
|
391
382
|
|
|
392
383
|
// esm-externals:@splunk/react-ui/Button
|
|
393
384
|
var Button_exports = {};
|
|
394
385
|
__export(Button_exports, {
|
|
395
386
|
default: () => Button_default
|
|
396
387
|
});
|
|
397
|
-
var
|
|
388
|
+
var defaultImport12 = __toESM(require("@splunk/react-ui/Button"));
|
|
398
389
|
__reExport(Button_exports, require("@splunk/react-ui/Button"));
|
|
399
|
-
var Button_default = "default" in
|
|
390
|
+
var Button_default = "default" in defaultImport12 ? defaultImport12.default : defaultImport12;
|
|
400
391
|
|
|
401
392
|
// esm-externals:@splunk/react-ui/ButtonGroup
|
|
402
393
|
var ButtonGroup_exports = {};
|
|
403
394
|
__export(ButtonGroup_exports, {
|
|
404
395
|
default: () => ButtonGroup_default
|
|
405
396
|
});
|
|
406
|
-
var
|
|
397
|
+
var defaultImport13 = __toESM(require("@splunk/react-ui/ButtonGroup"));
|
|
407
398
|
__reExport(ButtonGroup_exports, require("@splunk/react-ui/ButtonGroup"));
|
|
408
|
-
var ButtonGroup_default = "default" in
|
|
399
|
+
var ButtonGroup_default = "default" in defaultImport13 ? defaultImport13.default : defaultImport13;
|
|
409
400
|
|
|
410
401
|
// esm-externals:@splunk/react-ui/Dropdown
|
|
411
402
|
var Dropdown_exports = {};
|
|
412
403
|
__export(Dropdown_exports, {
|
|
413
404
|
default: () => Dropdown_default
|
|
414
405
|
});
|
|
415
|
-
var
|
|
406
|
+
var defaultImport14 = __toESM(require("@splunk/react-ui/Dropdown"));
|
|
416
407
|
__reExport(Dropdown_exports, require("@splunk/react-ui/Dropdown"));
|
|
417
|
-
var Dropdown_default = "default" in
|
|
408
|
+
var Dropdown_default = "default" in defaultImport14 ? defaultImport14.default : defaultImport14;
|
|
418
409
|
|
|
419
410
|
// src/components/FieldSummary/SplitButton.tsx
|
|
420
411
|
var SplitButton = (_a) => {
|
|
@@ -431,7 +422,7 @@ var SplitButton = (_a) => {
|
|
|
431
422
|
return null;
|
|
432
423
|
}
|
|
433
424
|
const [first, ...rest] = actions;
|
|
434
|
-
const clickHandler = onActionClicked ? (
|
|
425
|
+
const clickHandler = onActionClicked ? (actionName) => (event) => onActionClicked(event, { action: actionName }) : () => void 0;
|
|
435
426
|
let popup = null;
|
|
436
427
|
if (rest.length > 0) {
|
|
437
428
|
const toggle = /* @__PURE__ */ react_default.createElement(
|
|
@@ -452,8 +443,7 @@ var SplitButton = (_a) => {
|
|
|
452
443
|
"data-test": action.name,
|
|
453
444
|
onClick: clickHandler(action.name)
|
|
454
445
|
},
|
|
455
|
-
action.label
|
|
456
|
-
" "
|
|
446
|
+
action.label
|
|
457
447
|
))));
|
|
458
448
|
}
|
|
459
449
|
return /* @__PURE__ */ react_default.createElement(ButtonGroup_default, __spreadValues({ "data-test": "split-button" }, otherProps), /* @__PURE__ */ react_default.createElement(
|
|
@@ -549,7 +539,7 @@ var FieldSummary = (_a) => {
|
|
|
549
539
|
]);
|
|
550
540
|
const [selected, setSelected] = (0, react_exports.useState)([]);
|
|
551
541
|
const handleSelectValue = (0, react_exports.useCallback)(
|
|
552
|
-
(
|
|
542
|
+
(_event, data) => {
|
|
553
543
|
setSelected((prev) => {
|
|
554
544
|
const filtered = prev.filter((x) => x !== data.value);
|
|
555
545
|
if (prev.length !== filtered.length) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/FieldSummary/FieldSummary.tsx", "esm-externals:react", "esm-externals:styled-components", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/themes", "esm-externals:@splunk/react-icons/enterprise/Number", "esm-externals:@splunk/react-icons/enterprise/String", "../../src/components/FieldList/FieldList.tsx", "esm-externals:@splunk/ui-utils/format", "../../src/components/FieldSummary/Abbreviate.tsx", "esm-externals:@splunk/react-ui/Link", "../../src/components/FieldSummary/FieldActions.tsx", "../../src/components/FieldSummary/FieldStats.tsx", "esm-externals:@splunk/react-ui/Switch", "
|
|
4
|
-
"sourcesContent": ["import React, { FC, SyntheticEvent, ReactElement, useCallback, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { _ } from '@splunk/ui-utils/i18n';\n\nimport { variables } from '@splunk/themes';\n\nimport { isNumeric } from '../FieldList';\nimport Abbreviate, { formatNumber } from './Abbreviate';\nimport FieldActions, { Action } from './FieldActions';\n\nimport FieldStats, { FieldStatsProps } from './FieldStats';\nimport FieldSummaryTable, { FieldValue } from './FieldSummaryTable';\nimport SplitButton from './SplitButton';\n\nexport { FieldValue };\n\nexport interface FieldData extends FieldStatsProps {\n name: string;\n count: number;\n distinctCount: number;\n numericCount?: number;\n modes: FieldValue[];\n}\n\nexport type ActionsForField = (field: FieldData, defaultActions: Action[]) => Action[];\n\nconst defaultActionsForField = (field: FieldData, actionsForField?: ActionsForField): Action[] => {\n const actions = [];\n\n if (isNumeric(field)) {\n actions.push({ name: 'avgByTime', label: _('Average over time') });\n actions.push({ name: 'maxByTime', label: _('Maximum value over time') });\n actions.push({ name: 'minByTime', label: _('Minimum value over time') });\n }\n\n actions.push({ name: 'topValues', label: _('Top values') });\n actions.push({ name: 'topValuesByTime', label: _('Top values by time') });\n actions.push({ name: 'rareValues', label: _('Rare values') });\n actions.push({ name: 'allValues', label: _('Events with this field') });\n\n actions.push({\n name: 'includeValues',\n label: _('Include Selected'),\n requiresSelection: true,\n });\n actions.push({\n name: 'excludeValues',\n label: _('Exclude Selected'),\n requiresSelection: true,\n });\n\n return actionsForField ? actionsForField(field, actions) : actions;\n};\n\nexport interface FieldSummaryOptions {\n /** The total number of events that the query saw */\n eventCount?: number;\n\n /** Augment / replace the default actions available in the field summary\n *\n * Example Action:\n * ```\n * { \"name\": \"actionName\", \"label\": \"Action label\", requiresSelection: false }\n * ```\n */\n actionsForField?: (field: FieldData, defaultActions: Action[]) => Action[];\n\n /** Event triggered by the user clicking on one of the actions available in the field summary. */\n onActionClicked?: (\n e: SyntheticEvent,\n data: { action: string; field: string; selected: string[] }\n ) => void;\n\n /** Event triggered by the user clicking on one of the field values in the field summary. */\n onFieldValueClicked?: (e: SyntheticEvent, data: { field: string; value: string }) => void;\n}\n\nexport interface FieldSummaryProps extends FieldSummaryOptions {\n /** The field data to show summaries for\n *\n * Example Field:\n * ```\n * {\"name\": \"METHOD\", \"count\": 123456, \"distinctCount\": 2, \"numericCount\": 0,\n * \"mean\": null, \"min\": null, \"max\": null, \"stdev\": null,\n * \"modes\": [\n * { \"value\": \"GET\", \"count\": 113456 },\n * { \"value\": \"POST\", \"count\": 10000 }\n * ]}\n * ```\n */\n field: FieldData;\n}\n\nconst Name = styled.h2`\n font-size: ${variables.fontSizeXLarge};\n margin: ${variables.spacingSmall} 0;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nconst StyledCoverage = styled.div`\n color: ${variables.contentColorDefault};\n margin-bottom: ${variables.spacingSmall};\n`;\n\nconst TableAndActions = styled.div`\n display: flex;\n\n & > div:nth-child(1) {\n flex: 1 1;\n table {\n width: 100%;\n }\n }\n\n & > div:nth-child(2) {\n width: 150px;\n }\n`;\n\nconst Coverage = ({\n distinctCount,\n count,\n eventCount,\n}: {\n distinctCount: number;\n count: number;\n eventCount?: number;\n}): ReactElement => {\n const content = [<Abbreviate key=\"values\" value={distinctCount} />, _(' values')];\n if (eventCount) {\n content.push(_(' in '));\n content.push(`${formatNumber((count / eventCount) * 100)}%`);\n content.push(_(' of '));\n content.push(<Abbreviate key=\"events\" value={eventCount} />);\n content.push(_(' events'));\n }\n return <StyledCoverage>{content}</StyledCoverage>;\n};\n\nconst FieldSummary: FC<FieldSummaryProps> = ({\n field,\n eventCount,\n actionsForField,\n onActionClicked,\n onFieldValueClicked,\n ...rest\n}: FieldSummaryProps) => {\n const [selected, setSelected] = useState([]);\n const handleSelectValue = useCallback(\n (e: React.MouseEvent<HTMLButtonElement>, data: { selected: boolean; value?: string }) => {\n setSelected(prev => {\n const filtered = prev.filter((x: string) => x !== data.value);\n if (prev.length !== filtered.length) {\n return filtered;\n }\n return [...filtered, data.value];\n });\n },\n []\n );\n\n const actions = useMemo(() => defaultActionsForField(field, actionsForField), [field, actionsForField]);\n const selectionActions = useMemo(() => actions.filter(action => action.requiresSelection), [actions]);\n const nonSelectionActions = useMemo(() => actions.filter(action => !action.requiresSelection), [actions]);\n\n const handleActionClicked = useMemo(() => {\n if (!onActionClicked) {\n return undefined;\n }\n\n return (e, { action }): void => onActionClicked(e, { action, field: field.name, selected });\n }, [onActionClicked, field.name, selected]);\n\n const handleFieldValueClicked = useMemo(() => {\n if (!onFieldValueClicked) {\n return undefined;\n }\n\n return (e, { value }): void => onFieldValueClicked(e, { field: field.name, value });\n }, [onFieldValueClicked, field.name]);\n\n return (\n <div data-test=\"field-summary\" {...rest}>\n <Name title={field.name}>{field.name}</Name>\n <Coverage distinctCount={field.distinctCount} count={field.count} eventCount={eventCount} />\n <FieldStats {...field} />\n <SplitButton\n actions={selectionActions}\n selectionCount={selected.length}\n onActionClicked={handleActionClicked}\n />\n <TableAndActions>\n <div>\n <FieldSummaryTable\n total={field.count}\n values={field.modes}\n selected={selected}\n onFieldValueSelected={selectionActions.length > 0 ? handleSelectValue : undefined}\n onFieldValueClicked={handleFieldValueClicked}\n />\n </div>\n <FieldActions\n field={field.name}\n actions={nonSelectionActions}\n selected={selected}\n onActionClicked={onActionClicked}\n />\n </TableAndActions>\n </div>\n );\n};\n\nexport default FieldSummary;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes\";\nexport * from \"@splunk/themes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-icons/enterprise/Number\";\nexport * from \"@splunk/react-icons/enterprise/Number\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-icons/enterprise/String\";\nexport * from \"@splunk/react-icons/enterprise/String\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport NumberIcon from '@splunk/react-icons/enterprise/Number';\nimport StringIcon from '@splunk/react-icons/enterprise/String';\nimport { variables } from '@splunk/themes';\n\nconst ICON_SIZE = 0.6;\n\nexport interface FieldType {\n name: string;\n count: number;\n distinctCount: number;\n numericCount?: number;\n}\n\ntype FieldClicked = (e: SyntheticEvent, data: FieldType) => void;\n\ntype FieldListProps = {\n /** The name of the currently selected field */\n active?: string;\n /** FieldType {name:string, type:string, count: number} */\n fields: FieldType[];\n /** Callback (event:SyntheticEvent, data:FieldType) => void */\n onFieldClicked?: FieldClicked;\n};\n\ntype FieldProps = { active: boolean; field: FieldType; onFieldClicked?: FieldClicked };\n\nconst Container = styled.ol`\n list-style-type: none;\n margin: 0;\n padding: 0;\n svg {\n padding-right: ${variables.spacingXSmall};\n color: ${variables.contentColorMuted};\n }\n\n button {\n display: flex;\n align-items: baseline;\n border: none;\n text-align: left;\n width: 100%;\n height: 100%;\n color: ${variables.contentColorDefault};\n font-size: ${variables.fontSize};\n padding: calc(${variables.spacingXSmall} / 2) ${variables.spacingXSmall};\n margin: 0;\n background-color: inherit;\n }\n\n button:not([disabled]) {\n cursor: pointer;\n color: ${variables.linkColor};\n }\n\n li {\n background-color: inherit;\n\n padding: 0;\n margin: 0;\n }\n\n button:not([disabled]):hover,\n button[aria-pressed='true'] {\n background-color: ${variables.actionColorBackgroundSecondaryHover};\n button:not([disabled]):focus {\n outline: 0;\n box-shadow: ${variables.focusShadowInset};\n\n ::-moz-focus-inner {\n border: 0;\n }\n }\n`;\n\nconst Name = styled.span`\n min-width: 0;\n flex-shrink: 2;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst Count = styled.span`\n padding-left: ${variables.spacingXSmall};\n color: ${variables.contentColorMuted};\n`;\n\nexport const isNumeric = (field: FieldType): boolean =>\n field.numericCount && Number(field.numericCount) / Number(field.count) > 0.7;\n\nconst Field: React.FC<FieldProps> = ({ active, field, onFieldClicked }: FieldProps) => {\n const clickHandler = onFieldClicked ? (e: SyntheticEvent): void => onFieldClicked(e, field) : undefined;\n const numeric = isNumeric(field);\n return (\n <li>\n <button type=\"button\" onClick={clickHandler} disabled={!onFieldClicked} aria-pressed={active}>\n {numeric ? <NumberIcon size={ICON_SIZE} /> : <StringIcon size={ICON_SIZE} />}\n <Name title={field.name}>{field.name}</Name>\n <Count>{field.distinctCount > 100 ? '100+' : field.distinctCount}</Count>\n </button>\n </li>\n );\n};\n\nconst FieldList: React.FC<FieldListProps> = ({ active, fields, onFieldClicked }: FieldListProps) => (\n <Container data-test=\"field-list\">\n {fields.map(field => (\n <Field\n key={field.name}\n field={field}\n onFieldClicked={onFieldClicked}\n active={field.name === active}\n />\n ))}\n </Container>\n);\n\nexport default FieldList;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/format\";\nexport * from \"@splunk/ui-utils/format\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { ReactElement } from 'react';\nimport { abbreviateNumber } from '@splunk/ui-utils/format';\n\nexport const formatNumber = new Intl.NumberFormat().format;\n\nconst Abbreviate = ({ value }: { value: number }): ReactElement => (\n <span title={formatNumber(value)}>{abbreviateNumber(value)}</span>\n);\n\nexport default Abbreviate;\n", "\nimport * as defaultImport from \"@splunk/react-ui/Link\";\nexport * from \"@splunk/react-ui/Link\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport Link from '@splunk/react-ui/Link';\nimport { variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nexport interface Action {\n name: string;\n label: string;\n requiresSelection?: boolean;\n}\n\nexport type ActionClicked = (\n e: SyntheticEvent,\n data: { action: string; field: string; selected: string[] }\n) => void;\n\nexport interface ActionsProps {\n field: string;\n actions?: Action[];\n selected: string[];\n onActionClicked?: ActionClicked;\n}\n\nconst StyledActions = styled.div`\n padding-left: ${variables.spacingMedium};\n\n h3 {\n font-size: ${variables.fontSize};\n margin: 0;\n padding: 1px;\n margin-top: 2px;\n }\n\n ul {\n list-style-type: none;\n padding: 0;\n margin: 0;\n\n button {\n line-height: calc(${variables.lineHeight} * 0.8);\n margin-bottom: ${variables.spacingXSmall};\n }\n }\n`;\n\nconst Actions: React.FC<ActionsProps> = ({ field, actions, selected, onActionClicked }: ActionsProps) =>\n actions && actions.length > 0 ? (\n <StyledActions>\n <h3>{_('Actions')}</h3>\n <ul>\n {actions.map(({ name, label, requiresSelection }) => (\n <li key={name}>\n <Link\n role=\"button\"\n appearance=\"standalone\"\n disabled={!onActionClicked || (requiresSelection && selected.length === 0)}\n onClick={(e: SyntheticEvent): void => {\n e.preventDefault();\n onActionClicked(e, { action: name, field, selected });\n }}\n >\n {label}\n </Link>\n </li>\n ))}\n </ul>\n </StyledActions>\n ) : null;\n\nexport default Actions;\n", "import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nimport Abbreviate from './Abbreviate';\n\nconst DL = styled.dl`\n color: ${variables.contentColorDefault};\n margin-top: ${variables.spacingSmall};\n margin-bottom: ${variables.spacingSmall};\n dt {\n display: inline-block;\n font-weight: bold;\n }\n dt::after {\n content: ':';\n }\n dd {\n display: inline-block;\n margin-left: ${variables.spacingXSmall};\n margin-right: ${variables.spacingSmall};\n }\n`;\n\nexport interface FieldStatsProps {\n mean?: number;\n min?: number;\n max?: number;\n stdev?: number;\n}\n\nconst Stat = ({ label, value }: { label: string; value: number }): ReactElement => (\n <>\n <dt>{label}</dt>\n <dd>\n <Abbreviate value={value} />\n </dd>\n </>\n);\n\nconst FieldStats: React.FC<FieldStatsProps> = ({ mean, min, max, stdev }: FieldStatsProps) =>\n typeof mean !== 'number' ? null : (\n <DL>\n <Stat label={_('Min')} value={min} />\n <Stat label={_('Max')} value={max} />\n <Stat label={_('Avg')} value={mean} />\n <Stat label={_('Std Dev')} value={stdev} />\n </DL>\n );\n\nexport default FieldStats;\n", "\nimport * as defaultImport from \"@splunk/react-ui/Switch\";\nexport * from \"@splunk/react-ui/Switch\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/id\";\nexport * from \"@splunk/ui-utils/id\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable jsx-a11y/control-has-associated-label */\nimport React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport Link from '@splunk/react-ui/Link';\nimport Switch from '@splunk/react-ui/Switch';\nimport { variables } from '@splunk/themes';\nimport { sprintf } from '@splunk/ui-utils/format';\nimport { _ } from '@splunk/ui-utils/i18n';\nimport { createDOMID } from '@splunk/ui-utils/id';\n\nimport { formatNumber } from './Abbreviate';\n\nexport interface FieldValue {\n count: number;\n value: string;\n}\n\nexport interface FieldSummaryProps {\n total: number;\n values: FieldValue[];\n selected: string[];\n onFieldValueSelected?: (\n e: React.MouseEvent<HTMLButtonElement>,\n data: { selected: boolean; value?: string }\n ) => void;\n onFieldValueClicked?: (e: any, { value }) => void;\n}\n\nconst BAR_WIDTH = '100px';\nconst BAR_HEIGHT = '20px';\n\nconst BarContainer = styled.div`\n width: ${BAR_WIDTH};\n height: ${BAR_HEIGHT};\n background-color: ${variables.neutral200};\n`;\n\nconst Bar = styled.div`\n height: ${BAR_HEIGHT};\n background-color: ${variables.interactiveColorAccent};\n`;\n\nconst StyledSwitch = styled(Switch)`\n margin: -5px ${variables.spacingXSmall} -5px 0;\n padding: 0;\n`;\n\nconst NumericCell = styled.td`\n text-align: right;\n`;\n\nconst ValueCell = styled.td`\n width: 100%;\n`;\n\nconst NumericHeading = styled.th`\n text-align: right;\n`;\n\nconst Truncated = styled.span`\n text-overflow: ellipsis;\n min-width: 0;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-wrap: anywhere;\n word-break: break-all;\n`;\n\nconst Table = styled.table`\n tbody {\n line-height: 1;\n td {\n font-family: ${variables.monoFontFamily};\n a {\n font-family: ${variables.monoFontFamily};\n display: inline-block;\n vertical-align: middle;\n line-height: normal;\n }\n }\n th:last-child {\n width: ${BAR_WIDTH};\n }\n }\n`;\n\nconst FieldSummaryTable: React.FC<FieldSummaryProps> = ({\n total,\n values,\n selected,\n onFieldValueSelected,\n onFieldValueClicked,\n}: FieldSummaryProps) => {\n const firstColSpan = onFieldValueSelected ? 2 : 1;\n return (\n <Table>\n <thead>\n <tr>\n <th colSpan={firstColSpan}>{_('Top Values')}</th>\n <NumericHeading>{_('Count')}</NumericHeading>\n <th />\n </tr>\n </thead>\n <tbody>\n {values.map(({ count, value }) => {\n const percent = count < total ? (count / total) * 100 : 100;\n const percentOfEvents = sprintf(_('%(percent)s%% of %(total)s events'), {\n percent: formatNumber(percent),\n total: formatNumber(total),\n });\n const labelId = createDOMID();\n return (\n <tr key={value}>\n {onFieldValueSelected && (\n <td style={{ padding: 0, margin: 0 }}>\n <StyledSwitch\n key={value}\n value={value}\n selected={selected.indexOf(value) >= 0}\n appearance=\"checkbox\"\n onClick={onFieldValueSelected}\n labelledBy={labelId}\n />\n </td>\n )}\n <ValueCell title={value}>\n {onFieldValueClicked ? (\n <Link\n role=\"button\"\n appearance=\"standalone\"\n onClick={(e: SyntheticEvent): void => {\n e.preventDefault();\n onFieldValueClicked(e, { value });\n }}\n >\n <Truncated id={labelId}>{value}</Truncated>\n </Link>\n ) : (\n <Truncated id={labelId}>{value}</Truncated>\n )}\n </ValueCell>\n <NumericCell title={percentOfEvents}>{formatNumber(count)}</NumericCell>\n\n <td title={percentOfEvents}>\n <BarContainer>\n <Bar style={{ width: `${percent}%` }} />\n </BarContainer>\n </td>\n </tr>\n );\n })}\n </tbody>\n </Table>\n );\n};\n\nexport default FieldSummaryTable;\n", "\nimport * as defaultImport from \"@splunk/react-icons/enterprise/Caret\";\nexport * from \"@splunk/react-icons/enterprise/Caret\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Menu\";\nexport * from \"@splunk/react-ui/Menu\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Button\";\nexport * from \"@splunk/react-ui/Button\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/ButtonGroup\";\nexport * from \"@splunk/react-ui/ButtonGroup\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Dropdown\";\nexport * from \"@splunk/react-ui/Dropdown\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { SyntheticEvent } from 'react';\n\nimport Caret from '@splunk/react-icons/enterprise/Caret';\n\nimport Menu from '@splunk/react-ui/Menu';\nimport Button from '@splunk/react-ui/Button';\nimport ButtonGroup from '@splunk/react-ui/ButtonGroup';\nimport Dropdown from '@splunk/react-ui/Dropdown';\n\nimport { _ } from '@splunk/ui-utils/i18n';\n\ntype Action = {\n name: string;\n label: string;\n};\n\ninterface SplitButtonProps {\n actions: Action[];\n selectionCount: number;\n onActionClicked: (e: SyntheticEvent, { action }: { action: string }) => void;\n}\n\nconst SplitButton: React.FC<SplitButtonProps> = ({\n actions,\n selectionCount,\n onActionClicked,\n ...otherProps\n}: SplitButtonProps) => {\n if (actions.length === 0) {\n return null;\n }\n\n const [first, ...rest] = actions;\n\n const clickHandler = onActionClicked\n ? (action: string) =>\n (e: SyntheticEvent): void =>\n onActionClicked(e, { action })\n : (): (() => void) => undefined;\n\n let popup = null;\n if (rest.length > 0) {\n const toggle = (\n <Button\n prepend\n key=\"more-actions\"\n data-test=\"more-actions\"\n icon={<Caret screenReaderText={_('More Actions')} />}\n appearance=\"default\"\n disabled={selectionCount === 0}\n />\n );\n popup = (\n <Dropdown toggle={toggle}>\n <Menu>\n {rest.map(action => (\n <Menu.Item\n key={action.name}\n data-test={action.name}\n onClick={clickHandler(action.name)}\n >\n {action.label}{' '}\n </Menu.Item>\n ))}\n </Menu>\n </Dropdown>\n );\n }\n return (\n <ButtonGroup data-test=\"split-button\" {...otherProps}>\n <Button\n key={first.name}\n data-test={first.name}\n label={first.label}\n appearance=\"default\"\n onClick={clickHandler(first.name)}\n disabled={selectionCount === 0}\n />\n {popup}\n </ButtonGroup>\n );\n};\n\nexport default SplitButton;\n"],
|
|
5
|
-
"mappings": "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
|
|
6
|
-
"names": ["defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "
|
|
3
|
+
"sources": ["../../src/components/FieldSummary/FieldSummary.tsx", "esm-externals:react", "esm-externals:styled-components", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/themes", "esm-externals:@splunk/react-icons/enterprise/Number", "esm-externals:@splunk/react-icons/enterprise/String", "../../src/components/FieldList/FieldList.tsx", "esm-externals:@splunk/ui-utils/format", "../../src/components/FieldSummary/Abbreviate.tsx", "esm-externals:@splunk/react-ui/Link", "../../src/components/FieldSummary/FieldActions.tsx", "../../src/components/FieldSummary/FieldStats.tsx", "esm-externals:@splunk/react-ui/Switch", "../../src/components/FieldSummary/FieldSummaryTable.tsx", "esm-externals:@splunk/react-icons/enterprise/Caret", "esm-externals:@splunk/react-ui/Menu", "esm-externals:@splunk/react-ui/Button", "esm-externals:@splunk/react-ui/ButtonGroup", "esm-externals:@splunk/react-ui/Dropdown", "../../src/components/FieldSummary/SplitButton.tsx"],
|
|
4
|
+
"sourcesContent": ["import React, { FC, SyntheticEvent, ReactElement, useCallback, useMemo, useState } from 'react';\nimport styled from 'styled-components';\n\nimport { _ } from '@splunk/ui-utils/i18n';\n\nimport { variables } from '@splunk/themes';\n\nimport { isNumeric } from '../FieldList';\nimport Abbreviate, { formatNumber } from './Abbreviate';\nimport FieldActions, { Action } from './FieldActions';\n\nimport FieldStats, { FieldStatsProps } from './FieldStats';\nimport FieldSummaryTable, { FieldValue } from './FieldSummaryTable';\nimport SplitButton from './SplitButton';\n\nexport { FieldValue };\n\nexport interface FieldData extends FieldStatsProps {\n name: string;\n count: number;\n distinctCount: number;\n numericCount?: number;\n modes: FieldValue[];\n}\n\nexport type ActionsForField = (field: FieldData, defaultActions: Action[]) => Action[];\n\nconst defaultActionsForField = (field: FieldData, actionsForField?: ActionsForField): Action[] => {\n const actions = [];\n\n if (isNumeric(field)) {\n actions.push({ name: 'avgByTime', label: _('Average over time') });\n actions.push({ name: 'maxByTime', label: _('Maximum value over time') });\n actions.push({ name: 'minByTime', label: _('Minimum value over time') });\n }\n\n actions.push({ name: 'topValues', label: _('Top values') });\n actions.push({ name: 'topValuesByTime', label: _('Top values by time') });\n actions.push({ name: 'rareValues', label: _('Rare values') });\n actions.push({ name: 'allValues', label: _('Events with this field') });\n\n actions.push({\n name: 'includeValues',\n label: _('Include Selected'),\n requiresSelection: true,\n });\n actions.push({\n name: 'excludeValues',\n label: _('Exclude Selected'),\n requiresSelection: true,\n });\n\n return actionsForField ? actionsForField(field, actions) : actions;\n};\n\nexport interface FieldSummaryOptions {\n /** The total number of events that the query saw */\n eventCount?: number;\n\n /** Augment / replace the default actions available in the field summary\n *\n * Example Action:\n * ```\n * { \"name\": \"actionName\", \"label\": \"Action label\", requiresSelection: false }\n * ```\n */\n actionsForField?: (field: FieldData, defaultActions: Action[]) => Action[];\n\n /** Event triggered by the user clicking on one of the actions available in the field summary. */\n onActionClicked?: (\n e: SyntheticEvent,\n data: { action: string; field: string; selected: string[] }\n ) => void;\n\n /** Event triggered by the user clicking on one of the field values in the field summary. */\n onFieldValueClicked?: (e: SyntheticEvent, data: { field: string; value: string }) => void;\n}\n\nexport interface FieldSummaryProps extends FieldSummaryOptions {\n /** The field data to show summaries for\n *\n * Example Field:\n * ```\n * {\"name\": \"METHOD\", \"count\": 123456, \"distinctCount\": 2, \"numericCount\": 0,\n * \"mean\": null, \"min\": null, \"max\": null, \"stdev\": null,\n * \"modes\": [\n * { \"value\": \"GET\", \"count\": 113456 },\n * { \"value\": \"POST\", \"count\": 10000 }\n * ]}\n * ```\n */\n field: FieldData;\n}\n\nconst Name = styled.h2`\n font-size: ${variables.fontSizeXLarge};\n margin: ${variables.spacingSmall} 0;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nconst StyledCoverage = styled.div`\n color: ${variables.contentColorDefault};\n margin-bottom: ${variables.spacingSmall};\n`;\n\nconst TableAndActions = styled.div`\n display: flex;\n\n & > div:nth-child(1) {\n flex: 1 1;\n table {\n width: 100%;\n }\n }\n\n & > div:nth-child(2) {\n width: 150px;\n }\n`;\n\nconst Coverage = ({\n distinctCount,\n count,\n eventCount,\n}: {\n distinctCount: number;\n count: number;\n eventCount?: number;\n}): ReactElement => {\n const content = [<Abbreviate key=\"values\" value={distinctCount} />, _(' values')];\n if (eventCount) {\n content.push(_(' in '));\n content.push(`${formatNumber((count / eventCount) * 100)}%`);\n content.push(_(' of '));\n content.push(<Abbreviate key=\"events\" value={eventCount} />);\n content.push(_(' events'));\n }\n return <StyledCoverage>{content}</StyledCoverage>;\n};\n\nconst FieldSummary: FC<FieldSummaryProps> = ({\n field,\n eventCount,\n actionsForField,\n onActionClicked,\n onFieldValueClicked,\n ...rest\n}: FieldSummaryProps) => {\n const [selected, setSelected] = useState<string[]>([]);\n const handleSelectValue = useCallback(\n (_event: React.MouseEvent<HTMLButtonElement>, data: { selected: boolean; value?: string }) => {\n setSelected(prev => {\n const filtered = prev.filter((x: string) => x !== data.value);\n if (prev.length !== filtered.length) {\n return filtered;\n }\n return [...filtered, data.value];\n });\n },\n []\n );\n\n const actions = useMemo(() => defaultActionsForField(field, actionsForField), [field, actionsForField]);\n const selectionActions = useMemo(() => actions.filter(action => action.requiresSelection), [actions]);\n const nonSelectionActions = useMemo(() => actions.filter(action => !action.requiresSelection), [actions]);\n\n const handleActionClicked = useMemo(() => {\n if (!onActionClicked) {\n return undefined;\n }\n\n return (e, { action }): void => onActionClicked(e, { action, field: field.name, selected });\n }, [onActionClicked, field.name, selected]);\n\n const handleFieldValueClicked = useMemo(() => {\n if (!onFieldValueClicked) {\n return undefined;\n }\n\n return (e, { value }): void => onFieldValueClicked(e, { field: field.name, value });\n }, [onFieldValueClicked, field.name]);\n\n return (\n <div data-test=\"field-summary\" {...rest}>\n <Name title={field.name}>{field.name}</Name>\n <Coverage distinctCount={field.distinctCount} count={field.count} eventCount={eventCount} />\n <FieldStats {...field} />\n <SplitButton\n actions={selectionActions}\n selectionCount={selected.length}\n onActionClicked={handleActionClicked}\n />\n <TableAndActions>\n <div>\n <FieldSummaryTable\n total={field.count}\n values={field.modes}\n selected={selected}\n onFieldValueSelected={selectionActions.length > 0 ? handleSelectValue : undefined}\n onFieldValueClicked={handleFieldValueClicked}\n />\n </div>\n <FieldActions\n field={field.name}\n actions={nonSelectionActions}\n selected={selected}\n onActionClicked={onActionClicked}\n />\n </TableAndActions>\n </div>\n );\n};\n\nexport default FieldSummary;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"styled-components\";\nexport * from \"styled-components\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/themes\";\nexport * from \"@splunk/themes\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-icons/enterprise/Number\";\nexport * from \"@splunk/react-icons/enterprise/Number\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-icons/enterprise/String\";\nexport * from \"@splunk/react-icons/enterprise/String\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport NumberIcon from '@splunk/react-icons/enterprise/Number';\nimport StringIcon from '@splunk/react-icons/enterprise/String';\nimport { variables } from '@splunk/themes';\n\nconst ICON_SIZE = 0.6;\n\nexport interface FieldType {\n name: string;\n count: number;\n distinctCount: number;\n numericCount?: number;\n}\n\ntype FieldClicked = (e: SyntheticEvent, data: FieldType) => void;\n\ntype FieldListProps = {\n /** The name of the currently selected field */\n active?: string;\n /** FieldType {name:string, type:string, count: number} */\n fields: FieldType[];\n /** Callback (event:SyntheticEvent, data:FieldType) => void */\n onFieldClicked?: FieldClicked;\n};\n\ntype FieldProps = { active: boolean; field: FieldType; onFieldClicked?: FieldClicked };\n\nconst Container = styled.ol`\n list-style-type: none;\n margin: 0;\n padding: 0;\n svg {\n padding-right: ${variables.spacingXSmall};\n color: ${variables.contentColorMuted};\n }\n\n button {\n display: flex;\n align-items: baseline;\n border: none;\n text-align: left;\n width: 100%;\n height: 100%;\n color: ${variables.contentColorDefault};\n font-size: ${variables.fontSize};\n padding: calc(${variables.spacingXSmall} / 2) ${variables.spacingXSmall};\n margin: 0;\n background-color: inherit;\n }\n\n button:not([disabled]) {\n cursor: pointer;\n color: ${variables.linkColor};\n }\n\n li {\n background-color: inherit;\n\n padding: 0;\n margin: 0;\n }\n\n button:not([disabled]):hover,\n button[aria-pressed='true'] {\n background-color: ${variables.actionColorBackgroundSecondaryHover};\n button:not([disabled]):focus {\n outline: 0;\n box-shadow: ${variables.focusShadowInset};\n\n ::-moz-focus-inner {\n border: 0;\n }\n }\n`;\n\nconst Name = styled.span`\n min-width: 0;\n flex-shrink: 2;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst Count = styled.span`\n padding-left: ${variables.spacingXSmall};\n color: ${variables.contentColorMuted};\n`;\n\nexport const isNumeric = (field: FieldType): boolean =>\n field.numericCount && Number(field.numericCount) / Number(field.count) > 0.7;\n\nconst Field: React.FC<FieldProps> = ({ active, field, onFieldClicked }: FieldProps) => {\n const clickHandler = onFieldClicked ? (e: SyntheticEvent): void => onFieldClicked(e, field) : undefined;\n const numeric = isNumeric(field);\n return (\n <li>\n <button type=\"button\" onClick={clickHandler} disabled={!onFieldClicked} aria-pressed={active}>\n {numeric ? <NumberIcon size={ICON_SIZE} /> : <StringIcon size={ICON_SIZE} />}\n <Name title={field.name}>{field.name}</Name>\n <Count>{field.distinctCount > 100 ? '100+' : field.distinctCount}</Count>\n </button>\n </li>\n );\n};\n\nconst FieldList: React.FC<FieldListProps> = ({ active, fields, onFieldClicked }: FieldListProps) => (\n <Container data-test=\"field-list\">\n {fields.map(field => (\n <Field\n key={field.name}\n field={field}\n onFieldClicked={onFieldClicked}\n active={field.name === active}\n />\n ))}\n </Container>\n);\n\nexport default FieldList;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/format\";\nexport * from \"@splunk/ui-utils/format\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { ReactElement } from 'react';\nimport { abbreviateNumber } from '@splunk/ui-utils/format';\n\nexport const formatNumber = new Intl.NumberFormat().format;\n\nconst Abbreviate = ({ value }: { value: number }): ReactElement => (\n <span title={formatNumber(value)}>{abbreviateNumber(value)}</span>\n);\n\nexport default Abbreviate;\n", "\nimport * as defaultImport from \"@splunk/react-ui/Link\";\nexport * from \"@splunk/react-ui/Link\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport Link from '@splunk/react-ui/Link';\nimport { variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nexport interface Action {\n name: string;\n label: string;\n requiresSelection?: boolean;\n}\n\nexport type ActionClicked = (\n e: SyntheticEvent,\n data: { action: string; field: string; selected: string[] }\n) => void;\n\nexport interface ActionsProps {\n field: string;\n actions?: Action[];\n selected: string[];\n onActionClicked?: ActionClicked;\n}\n\nconst StyledActions = styled.div`\n padding-left: ${variables.spacingMedium};\n\n h3 {\n font-size: ${variables.fontSize};\n margin: 0;\n padding: 1px;\n margin-top: 2px;\n }\n\n ul {\n list-style-type: none;\n padding: 0;\n margin: 0;\n\n button {\n line-height: calc(${variables.lineHeight} * 0.8);\n margin-bottom: ${variables.spacingXSmall};\n }\n }\n`;\n\nconst Actions: React.FC<ActionsProps> = ({ field, actions, selected, onActionClicked }: ActionsProps) =>\n actions && actions.length > 0 ? (\n <StyledActions>\n <h3>{_('Actions')}</h3>\n <ul>\n {actions.map(({ name, label, requiresSelection }) => (\n <li key={name}>\n <Link\n role=\"button\"\n appearance=\"standalone\"\n disabled={!onActionClicked || (requiresSelection && selected.length === 0)}\n onClick={(e: SyntheticEvent): void => {\n e.preventDefault();\n onActionClicked?.(e, { action: name, field, selected });\n }}\n >\n {label}\n </Link>\n </li>\n ))}\n </ul>\n </StyledActions>\n ) : null;\n\nexport default Actions;\n", "import React, { ReactElement } from 'react';\nimport styled from 'styled-components';\n\nimport { variables } from '@splunk/themes';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nimport Abbreviate from './Abbreviate';\n\nconst DL = styled.dl`\n color: ${variables.contentColorDefault};\n margin-top: ${variables.spacingSmall};\n margin-bottom: ${variables.spacingSmall};\n dt {\n display: inline-block;\n font-weight: bold;\n }\n dt::after {\n content: ':';\n }\n dd {\n display: inline-block;\n margin-left: ${variables.spacingXSmall};\n margin-right: ${variables.spacingSmall};\n }\n`;\n\nexport interface FieldStatsProps {\n mean?: number;\n min?: number;\n max?: number;\n stdev?: number;\n}\n\nconst Stat = ({ label, value }: { label: string; value: number }): ReactElement => (\n <>\n <dt>{label}</dt>\n <dd>\n <Abbreviate value={value} />\n </dd>\n </>\n);\n\nconst FieldStats: React.FC<FieldStatsProps> = ({ mean, min, max, stdev }: FieldStatsProps) =>\n typeof mean !== 'number' ? null : (\n <DL>\n <Stat label={_('Min')} value={min} />\n <Stat label={_('Max')} value={max} />\n <Stat label={_('Avg')} value={mean} />\n <Stat label={_('Std Dev')} value={stdev} />\n </DL>\n );\n\nexport default FieldStats;\n", "\nimport * as defaultImport from \"@splunk/react-ui/Switch\";\nexport * from \"@splunk/react-ui/Switch\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable jsx-a11y/control-has-associated-label */\nimport React, { SyntheticEvent } from 'react';\nimport styled from 'styled-components';\n\nimport Link from '@splunk/react-ui/Link';\nimport Switch from '@splunk/react-ui/Switch';\nimport { variables } from '@splunk/themes';\nimport { sprintf } from '@splunk/ui-utils/format';\nimport { _ } from '@splunk/ui-utils/i18n';\n\nimport { formatNumber } from './Abbreviate';\n\nexport interface FieldValue {\n count: number;\n value: string;\n}\n\nexport interface FieldSummaryProps {\n total: number;\n values: FieldValue[];\n selected: string[];\n onFieldValueSelected?: (\n e: React.MouseEvent<HTMLButtonElement>,\n data: { selected: boolean; value?: string }\n ) => void;\n onFieldValueClicked?: (e: SyntheticEvent, { value }: { value: string }) => void;\n}\n\nconst BAR_WIDTH = '100px';\nconst BAR_HEIGHT = '20px';\n\nconst BarContainer = styled.div`\n width: ${BAR_WIDTH};\n height: ${BAR_HEIGHT};\n background-color: ${variables.neutral200};\n`;\n\nconst Bar = styled.div`\n height: ${BAR_HEIGHT};\n background-color: ${variables.interactiveColorAccent};\n`;\n\nconst StyledSwitch = styled(Switch)`\n margin: -5px ${variables.spacingXSmall} -5px 0;\n padding: 0;\n`;\n\nconst NumericCell = styled.td`\n text-align: right;\n`;\n\nconst ValueCell = styled.td`\n width: 100%;\n`;\n\nconst NumericHeading = styled.th`\n text-align: right;\n`;\n\nconst Truncated = styled.span`\n text-overflow: ellipsis;\n min-width: 0;\n display: -webkit-box;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-wrap: anywhere;\n word-break: break-all;\n`;\n\nconst Table = styled.table`\n tbody {\n line-height: 1;\n td {\n font-family: ${variables.monoFontFamily};\n a {\n font-family: ${variables.monoFontFamily};\n display: inline-block;\n vertical-align: middle;\n line-height: normal;\n }\n }\n th:last-child {\n width: ${BAR_WIDTH};\n }\n }\n`;\n\nconst FieldSummaryTable: React.FC<FieldSummaryProps> = ({\n total,\n values,\n selected,\n onFieldValueSelected,\n onFieldValueClicked,\n}: FieldSummaryProps) => {\n const firstColSpan = onFieldValueSelected ? 2 : 1;\n return (\n <Table>\n <thead>\n <tr>\n <th colSpan={firstColSpan}>{_('Top Values')}</th>\n <NumericHeading>{_('Count')}</NumericHeading>\n <th />\n </tr>\n </thead>\n <tbody>\n {values.map(({ count, value }) => {\n const percent = count < total ? (count / total) * 100 : 100;\n const percentOfEvents = sprintf(_('%(percent)s%% of %(total)s events'), {\n percent: formatNumber(percent),\n total: formatNumber(total),\n });\n const fieldValueId = `field-value-${value}`;\n return (\n <tr key={fieldValueId}>\n {onFieldValueSelected && (\n <td style={{ padding: 0, margin: 0 }}>\n <StyledSwitch\n key={fieldValueId}\n value={value}\n selected={selected.indexOf(value) >= 0}\n appearance=\"checkbox\"\n onClick={onFieldValueSelected}\n labelledBy={fieldValueId}\n />\n </td>\n )}\n <ValueCell title={value}>\n {onFieldValueClicked ? (\n <Link\n role=\"button\"\n appearance=\"standalone\"\n onClick={(e: SyntheticEvent): void => {\n e.preventDefault();\n onFieldValueClicked(e, { value });\n }}\n >\n <Truncated id={fieldValueId}>{value}</Truncated>\n </Link>\n ) : (\n <Truncated id={fieldValueId}>{value}</Truncated>\n )}\n </ValueCell>\n <NumericCell title={percentOfEvents}>{formatNumber(count)}</NumericCell>\n <td title={percentOfEvents}>\n <BarContainer>\n <Bar style={{ width: `${percent}%` }} />\n </BarContainer>\n </td>\n </tr>\n );\n })}\n </tbody>\n </Table>\n );\n};\n\nexport default FieldSummaryTable;\n", "\nimport * as defaultImport from \"@splunk/react-icons/enterprise/Caret\";\nexport * from \"@splunk/react-icons/enterprise/Caret\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Menu\";\nexport * from \"@splunk/react-ui/Menu\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Button\";\nexport * from \"@splunk/react-ui/Button\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/ButtonGroup\";\nexport * from \"@splunk/react-ui/ButtonGroup\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/react-ui/Dropdown\";\nexport * from \"@splunk/react-ui/Dropdown\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "import React, { SyntheticEvent } from 'react';\n\nimport Caret from '@splunk/react-icons/enterprise/Caret';\n\nimport Menu from '@splunk/react-ui/Menu';\nimport Button from '@splunk/react-ui/Button';\nimport ButtonGroup from '@splunk/react-ui/ButtonGroup';\nimport Dropdown from '@splunk/react-ui/Dropdown';\n\nimport { _ } from '@splunk/ui-utils/i18n';\n\ntype Action = {\n name: string;\n label: string;\n};\n\ninterface SplitButtonProps {\n actions: Action[];\n selectionCount: number;\n onActionClicked: (e: SyntheticEvent, { action }: { action: string }) => void;\n}\n\nconst SplitButton: React.FC<SplitButtonProps> = ({\n actions,\n selectionCount,\n onActionClicked,\n ...otherProps\n}: SplitButtonProps) => {\n if (actions.length === 0) {\n return null;\n }\n\n const [first, ...rest] = actions;\n\n const clickHandler = onActionClicked\n ? (actionName: string) =>\n (event: SyntheticEvent): void =>\n onActionClicked(event, { action: actionName })\n : (): (() => void) => undefined;\n\n let popup = null;\n if (rest.length > 0) {\n const toggle = (\n <Button\n prepend\n key=\"more-actions\"\n data-test=\"more-actions\"\n icon={<Caret screenReaderText={_('More Actions')} />}\n appearance=\"default\"\n disabled={selectionCount === 0}\n />\n );\n popup = (\n <Dropdown toggle={toggle}>\n <Menu>\n {rest.map(action => (\n <Menu.Item\n key={action.name}\n data-test={action.name}\n onClick={clickHandler(action.name)}\n >\n {action.label}\n </Menu.Item>\n ))}\n </Menu>\n </Dropdown>\n );\n }\n return (\n <ButtonGroup data-test=\"split-button\" {...otherProps}>\n <Button\n key={first.name}\n data-test={first.name}\n label={first.label}\n appearance=\"default\"\n onClick={clickHandler(first.name)}\n disabled={selectionCount === 0}\n />\n {popup}\n </ButtonGroup>\n );\n};\n\nexport default SplitButton;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "defaultImport", "Name"]
|
|
7
7
|
}
|