@aquera/nile-visualization 1.7.0 → 1.9.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/dist/src/index.d.ts +1 -1
- package/dist/src/internal/dashboard-adapters.d.ts +1 -0
- package/dist/src/internal/dashboard-adapters.js +11 -1
- package/dist/src/internal/highcharts-provider.d.ts +6 -0
- package/dist/src/internal/highcharts-provider.js +32 -0
- package/dist/src/internal/types/aq-config.type.d.ts +5 -0
- package/dist/src/nile-anomaly-chart/nile-anomaly-chart.css.js +2 -0
- package/dist/src/nile-anomaly-chart/nile-anomaly-chart.js +1 -1
- package/dist/src/nile-area-chart/nile-area-chart.css.js +2 -0
- package/dist/src/nile-area-chart/nile-area-chart.js +1 -1
- package/dist/src/nile-area-negative-chart/nile-area-negative-chart.css.js +2 -0
- package/dist/src/nile-area-negative-chart/nile-area-negative-chart.js +1 -1
- package/dist/src/nile-area-range-chart/nile-area-range-chart.css.js +2 -0
- package/dist/src/nile-area-range-chart/nile-area-range-chart.js +1 -1
- package/dist/src/nile-area-spline-chart/nile-area-spline-chart.css.js +2 -0
- package/dist/src/nile-area-spline-chart/nile-area-spline-chart.js +1 -1
- package/dist/src/nile-bar-chart/nile-bar-chart.css.js +2 -0
- package/dist/src/nile-bar-chart/nile-bar-chart.js +1 -1
- package/dist/src/nile-bellcurve-chart/nile-bellcurve-chart.css.js +2 -0
- package/dist/src/nile-bellcurve-chart/nile-bellcurve-chart.js +1 -1
- package/dist/src/nile-boxplot-chart/nile-boxplot-chart.css.js +2 -0
- package/dist/src/nile-boxplot-chart/nile-boxplot-chart.js +1 -1
- package/dist/src/nile-bubble-chart/nile-bubble-chart.css.js +2 -0
- package/dist/src/nile-bubble-chart/nile-bubble-chart.js +1 -1
- package/dist/src/nile-chart/index.d.ts +1 -1
- package/dist/src/nile-chart/nile-chart-config.d.ts +69 -1
- package/dist/src/nile-chart/nile-chart.css.d.ts +1 -0
- package/dist/src/nile-chart/nile-chart.css.js +194 -82
- package/dist/src/nile-chart/nile-chart.d.ts +25 -6
- package/dist/src/nile-chart/nile-chart.js +241 -100
- package/dist/src/nile-cluster-chart/nile-cluster-chart.css.js +2 -0
- package/dist/src/nile-cluster-chart/nile-cluster-chart.js +1 -1
- package/dist/src/nile-column-chart/nile-column-chart.css.js +2 -0
- package/dist/src/nile-column-chart/nile-column-chart.js +1 -1
- package/dist/src/nile-column-drilldown-chart/nile-column-drilldown-chart.css.js +2 -0
- package/dist/src/nile-column-drilldown-chart/nile-column-drilldown-chart.js +1 -1
- package/dist/src/nile-column-pyramid-chart/nile-column-pyramid-chart.css.js +2 -0
- package/dist/src/nile-column-pyramid-chart/nile-column-pyramid-chart.js +1 -1
- package/dist/src/nile-column-range-chart/nile-column-range-chart.css.js +2 -0
- package/dist/src/nile-column-range-chart/nile-column-range-chart.js +1 -1
- package/dist/src/nile-dashboard-viewer/nile-dashboard-viewer.css.js +10 -0
- package/dist/src/nile-dashboard-viewer/nile-dashboard-viewer.d.ts +15 -6
- package/dist/src/nile-dashboard-viewer/nile-dashboard-viewer.js +47 -6
- package/dist/src/nile-donut-chart/nile-donut-chart.css.js +2 -0
- package/dist/src/nile-donut-chart/nile-donut-chart.js +1 -1
- package/dist/src/nile-dumbbell-chart/nile-dumbbell-chart.css.js +2 -0
- package/dist/src/nile-dumbbell-chart/nile-dumbbell-chart.js +1 -1
- package/dist/src/nile-dumbbell-lower-chart/nile-dumbbell-lower-chart.css.js +2 -0
- package/dist/src/nile-dumbbell-lower-chart/nile-dumbbell-lower-chart.js +1 -1
- package/dist/src/nile-dumbbell-upper-chart/nile-dumbbell-upper-chart.css.js +2 -0
- package/dist/src/nile-dumbbell-upper-chart/nile-dumbbell-upper-chart.js +1 -1
- package/dist/src/nile-euler-chart/nile-euler-chart.css.js +2 -0
- package/dist/src/nile-euler-chart/nile-euler-chart.js +1 -1
- package/dist/src/nile-fan-chart/nile-fan-chart.css.js +2 -0
- package/dist/src/nile-fan-chart/nile-fan-chart.js +1 -1
- package/dist/src/nile-flame-chart/nile-flame-chart.css.js +2 -0
- package/dist/src/nile-flame-chart/nile-flame-chart.js +1 -1
- package/dist/src/nile-funnel-chart/nile-funnel-chart.css.js +2 -0
- package/dist/src/nile-funnel-chart/nile-funnel-chart.js +1 -1
- package/dist/src/nile-gauge-chart/nile-gauge-chart.css.js +2 -0
- package/dist/src/nile-gauge-chart/nile-gauge-chart.js +1 -1
- package/dist/src/nile-heatmap-chart/nile-heatmap-chart.css.js +2 -0
- package/dist/src/nile-heatmap-chart/nile-heatmap-chart.js +1 -1
- package/dist/src/nile-histogram-chart/nile-histogram-chart.css.js +2 -0
- package/dist/src/nile-histogram-chart/nile-histogram-chart.js +1 -1
- package/dist/src/nile-inverted-area-chart/nile-inverted-area-chart.css.js +2 -0
- package/dist/src/nile-inverted-area-chart/nile-inverted-area-chart.js +1 -1
- package/dist/src/nile-kpi-chart/nile-kpi-chart.css.js +54 -3
- package/dist/src/nile-kpi-chart/nile-kpi-chart.d.ts +29 -1
- package/dist/src/nile-kpi-chart/nile-kpi-chart.js +164 -9
- package/dist/src/nile-line-chart/nile-line-chart.css.js +2 -0
- package/dist/src/nile-line-chart/nile-line-chart.js +1 -1
- package/dist/src/nile-line-column-chart/nile-line-column-chart.css.js +2 -0
- package/dist/src/nile-line-column-chart/nile-line-column-chart.js +1 -1
- package/dist/src/nile-lollipop-chart/nile-lollipop-chart.css.js +2 -0
- package/dist/src/nile-lollipop-chart/nile-lollipop-chart.js +1 -1
- package/dist/src/nile-map-chart/nile-map-chart.css.js +2 -0
- package/dist/src/nile-map-chart/nile-map-chart.js +1 -1
- package/dist/src/nile-organization-chart/nile-organization-chart.css.js +2 -0
- package/dist/src/nile-organization-chart/nile-organization-chart.js +1 -1
- package/dist/src/nile-pie-chart/nile-pie-chart.css.js +2 -0
- package/dist/src/nile-pie-chart/nile-pie-chart.js +1 -1
- package/dist/src/nile-polygon-chart/nile-polygon-chart.css.js +2 -0
- package/dist/src/nile-polygon-chart/nile-polygon-chart.js +1 -1
- package/dist/src/nile-radar-chart/nile-radar-chart.css.js +2 -0
- package/dist/src/nile-radar-chart/nile-radar-chart.js +1 -1
- package/dist/src/nile-radial-bar-chart/nile-radial-bar-chart.css.js +2 -0
- package/dist/src/nile-radial-bar-chart/nile-radial-bar-chart.js +1 -1
- package/dist/src/nile-scatter-chart/nile-scatter-chart.css.js +2 -0
- package/dist/src/nile-scatter-chart/nile-scatter-chart.js +1 -1
- package/dist/src/nile-spiderweb-chart/nile-spiderweb-chart.css.js +2 -0
- package/dist/src/nile-spiderweb-chart/nile-spiderweb-chart.js +1 -1
- package/dist/src/nile-spline-chart/nile-spline-chart.css.js +2 -0
- package/dist/src/nile-spline-chart/nile-spline-chart.js +1 -1
- package/dist/src/nile-stacked-chart/nile-stacked-chart.css.js +2 -0
- package/dist/src/nile-stacked-chart/nile-stacked-chart.js +1 -1
- package/dist/src/nile-timeline-chart/nile-timeline-chart.css.js +2 -0
- package/dist/src/nile-timeline-chart/nile-timeline-chart.js +1 -1
- package/dist/src/nile-trendline-chart/nile-trendline-chart.css.js +2 -0
- package/dist/src/nile-trendline-chart/nile-trendline-chart.js +1 -1
- package/dist/src/nile-variable-pie-chart/nile-variable-pie-chart.css.js +2 -0
- package/dist/src/nile-variable-pie-chart/nile-variable-pie-chart.js +1 -1
- package/dist/src/nile-vector-chart/nile-vector-chart.css.js +2 -0
- package/dist/src/nile-vector-chart/nile-vector-chart.js +1 -1
- package/dist/src/nile-waterfall-chart/nile-waterfall-chart.css.js +2 -0
- package/dist/src/nile-waterfall-chart/nile-waterfall-chart.js +1 -1
- package/dist/src/nile-widget-viewer/nile-widget-viewer.d.ts +4 -0
- package/dist/src/nile-widget-viewer/nile-widget-viewer.js +18 -2
- package/dist/src/nile-xrange-chart/nile-xrange-chart.css.js +2 -0
- package/dist/src/nile-xrange-chart/nile-xrange-chart.js +1 -1
- package/package.json +1 -1
|
@@ -1,31 +1,83 @@
|
|
|
1
1
|
import { css } from 'lit';
|
|
2
|
+
export const tooltipCss = `
|
|
3
|
+
.nile-chart-header-tooltip {
|
|
4
|
+
position: fixed;
|
|
5
|
+
display: none;
|
|
6
|
+
transform: translate(-50%, calc(-100% - 10px));
|
|
7
|
+
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
8
|
+
color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
|
|
9
|
+
font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
|
|
10
|
+
font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs));
|
|
11
|
+
font-weight: var(--nile-font-weight-medium, var(--ng-font-weight-medium));
|
|
12
|
+
line-height: 1.4;
|
|
13
|
+
padding: 4px 10px;
|
|
14
|
+
border-radius: 6px;
|
|
15
|
+
border: 1px solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
|
|
16
|
+
pointer-events: none;
|
|
17
|
+
white-space: nowrap;
|
|
18
|
+
z-index: 2147483647;
|
|
19
|
+
box-shadow: var(--nile-box-shadow-3, var(--ng-shadow-sm));
|
|
20
|
+
}
|
|
21
|
+
.nile-chart-header-tooltip::after {
|
|
22
|
+
content: '';
|
|
23
|
+
position: absolute;
|
|
24
|
+
top: 100%;
|
|
25
|
+
left: 50%;
|
|
26
|
+
transform: translateX(-50%);
|
|
27
|
+
border: 5px solid transparent;
|
|
28
|
+
border-top-color: var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
|
|
29
|
+
}
|
|
30
|
+
`;
|
|
2
31
|
export const styles = css `
|
|
3
32
|
:host {
|
|
4
33
|
display: block;
|
|
5
34
|
width: 100%;
|
|
6
35
|
position: relative;
|
|
36
|
+
container-type: inline-size;
|
|
7
37
|
}
|
|
8
38
|
|
|
9
39
|
:host([hidden]) {
|
|
10
40
|
display: none;
|
|
11
41
|
}
|
|
12
42
|
|
|
43
|
+
/* Fit-to-container mode (set by nile-widget-viewer) — makes the card fill
|
|
44
|
+
its host rather than auto-sizing to content, so the chart reflows to the
|
|
45
|
+
allotted cell instead of overflowing. */
|
|
46
|
+
:host([fit]) {
|
|
47
|
+
height: 100%;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
:host([fit]) .nile-chart-card {
|
|
51
|
+
display: flex;
|
|
52
|
+
flex-direction: column;
|
|
53
|
+
height: 100%;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:host([fit]) .nile-chart-wrapper {
|
|
57
|
+
flex: 1 1 auto;
|
|
58
|
+
min-height: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
:host([fit]) .nile-chart-inner {
|
|
62
|
+
height: 100%;
|
|
63
|
+
}
|
|
64
|
+
|
|
13
65
|
/* ── Unified Card Container ── */
|
|
14
66
|
|
|
15
|
-
.chart-card {
|
|
67
|
+
.nile-chart-card {
|
|
16
68
|
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
17
69
|
border: var(--nile-border-width-1, var(--ng-stroke-width-1)) solid var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
|
|
18
70
|
border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-xl));
|
|
19
71
|
box-shadow: var(--nile-box-shadow-3, var(--ng-shadow-sm));
|
|
20
72
|
transition: box-shadow var(--nile-transition-duration-default, var(--ng-transition-duration-default)) ease;
|
|
21
73
|
}
|
|
22
|
-
.chart-card:hover {
|
|
74
|
+
.nile-chart-card:hover {
|
|
23
75
|
box-shadow: var(--nile-box-shadow-7, var(--ng-shadow-md));
|
|
24
76
|
}
|
|
25
77
|
|
|
26
78
|
/* ── Card Header ── */
|
|
27
79
|
|
|
28
|
-
.chart-header {
|
|
80
|
+
.nile-chart-header {
|
|
29
81
|
display: flex;
|
|
30
82
|
flex-direction: row;
|
|
31
83
|
align-items: center;
|
|
@@ -39,11 +91,11 @@ export const styles = css `
|
|
|
39
91
|
border-radius: var(--nile-radius-radius-3xl, var(--ng-radius-xl)) var(--nile-radius-radius-3xl, var(--ng-radius-xl)) 0 0;
|
|
40
92
|
}
|
|
41
93
|
|
|
42
|
-
.chart-header.chart-header--compact {
|
|
94
|
+
.nile-chart-header.nile-chart-header--compact {
|
|
43
95
|
padding: var(--nile-spacing-xl, var(--ng-spacing-xl)) var(--nile-spacing-3xl, var(--ng-spacing-3xl)) var(--nile-spacing-lg, var(--ng-spacing-lg));
|
|
44
96
|
}
|
|
45
97
|
|
|
46
|
-
.chart-header-titles {
|
|
98
|
+
.nile-chart-header-titles {
|
|
47
99
|
display: flex;
|
|
48
100
|
flex-direction: column;
|
|
49
101
|
align-items: flex-start;
|
|
@@ -52,25 +104,54 @@ export const styles = css `
|
|
|
52
104
|
flex: 1 1 auto;
|
|
53
105
|
}
|
|
54
106
|
|
|
55
|
-
.chart-header-title {
|
|
107
|
+
.nile-chart-header-title {
|
|
56
108
|
margin: 0;
|
|
57
109
|
font-family: var(--nile-font-family-serif-colfax-medium, var(--ng-font-family-display));
|
|
58
110
|
font-size: var(--nile-type-scale-6, var(--ng-font-size-text-l));
|
|
59
|
-
|
|
111
|
+
font-weight: var(--nile-font-weight-semi-bold, var(--ng-font-weight-semibold));
|
|
60
112
|
color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
|
|
61
113
|
line-height: 1.3;
|
|
114
|
+
white-space: nowrap;
|
|
115
|
+
overflow: hidden;
|
|
116
|
+
text-overflow: ellipsis;
|
|
117
|
+
min-width: 0;
|
|
118
|
+
width: 100%;
|
|
62
119
|
}
|
|
63
120
|
|
|
64
|
-
.chart-header-subtitle {
|
|
121
|
+
.nile-chart-header-subtitle {
|
|
65
122
|
margin: var(--nile-spacing-xs, var(--ng-spacing-xs)) 0 0;
|
|
66
123
|
font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
|
|
67
124
|
font-size: var(--nile-type-scale-2, var(--ng-font-size-text-xs));
|
|
68
125
|
font-weight: var(--nile-font-weight-regular, var(--ng-font-weight-regular));
|
|
69
126
|
color: var(--nile-colors-neutral-700, var(--ng-colors-text-secondary-700));
|
|
70
127
|
line-height: 1.4;
|
|
128
|
+
white-space: nowrap;
|
|
129
|
+
overflow: hidden;
|
|
130
|
+
text-overflow: ellipsis;
|
|
131
|
+
min-width: 0;
|
|
132
|
+
width: 100%;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
@container (max-width: 400px) {
|
|
136
|
+
.nile-chart-header {
|
|
137
|
+
padding: var(--nile-spacing-xl, var(--ng-spacing-xl)) var(--nile-spacing-2xl, var(--ng-spacing-2xl)) var(--nile-spacing-lg, var(--ng-spacing-lg));
|
|
138
|
+
}
|
|
139
|
+
.nile-chart-header.nile-chart-header--compact {
|
|
140
|
+
padding: var(--nile-spacing-lg, var(--ng-spacing-lg)) var(--nile-spacing-2xl, var(--ng-spacing-2xl));
|
|
141
|
+
}
|
|
71
142
|
}
|
|
72
143
|
|
|
73
|
-
|
|
144
|
+
@container (max-width: 280px) {
|
|
145
|
+
.nile-chart-header {
|
|
146
|
+
padding: var(--nile-spacing-lg, var(--ng-spacing-lg)) var(--nile-spacing-xl, var(--ng-spacing-xl));
|
|
147
|
+
gap: var(--nile-spacing-sm, var(--ng-spacing-sm));
|
|
148
|
+
}
|
|
149
|
+
.nile-chart-header.nile-chart-header--compact {
|
|
150
|
+
padding: var(--nile-spacing-md, var(--ng-spacing-md)) var(--nile-spacing-xl, var(--ng-spacing-xl));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.nile-chart-header-actions {
|
|
74
155
|
display: flex;
|
|
75
156
|
align-items: center;
|
|
76
157
|
gap: var(--nile-spacing-xs, var(--ng-spacing-xs));
|
|
@@ -80,17 +161,41 @@ export const styles = css `
|
|
|
80
161
|
|
|
81
162
|
/* ── Card Body ── */
|
|
82
163
|
|
|
83
|
-
.chart-wrapper {
|
|
164
|
+
.nile-chart-wrapper {
|
|
84
165
|
position: relative;
|
|
85
166
|
}
|
|
86
167
|
|
|
87
|
-
.chart-inner {
|
|
168
|
+
.nile-chart-inner {
|
|
88
169
|
position: relative;
|
|
89
170
|
overflow: hidden;
|
|
90
171
|
border-radius: 0 0 var(--nile-radius-radius-3xl, var(--ng-radius-xl)) var(--nile-radius-radius-3xl, var(--ng-radius-xl));
|
|
91
172
|
contain: layout style;
|
|
92
173
|
}
|
|
93
174
|
|
|
175
|
+
/* Grid: height applies to the whole card — header + grid together */
|
|
176
|
+
.nile-chart-card--grid {
|
|
177
|
+
display: flex;
|
|
178
|
+
flex-direction: column;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
.nile-chart-card--grid .nile-chart-wrapper {
|
|
182
|
+
flex: 1;
|
|
183
|
+
min-height: 0;
|
|
184
|
+
display: flex;
|
|
185
|
+
flex-direction: column;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
.nile-chart-card--grid .nile-chart-inner {
|
|
189
|
+
flex: 1;
|
|
190
|
+
min-height: 0;
|
|
191
|
+
contain: none;
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
.nile-chart-card--grid nile-data-grid {
|
|
195
|
+
display: block;
|
|
196
|
+
height: 100%;
|
|
197
|
+
}
|
|
198
|
+
|
|
94
199
|
/* ── Default slot (custom chart body only — not named slots) ── */
|
|
95
200
|
slot:not([name])::slotted(*) {
|
|
96
201
|
display: block;
|
|
@@ -130,7 +235,7 @@ export const styles = css `
|
|
|
130
235
|
|
|
131
236
|
/* ── Summary Toggle ── */
|
|
132
237
|
|
|
133
|
-
.chart-toggle {
|
|
238
|
+
.nile-chart-toggle {
|
|
134
239
|
position: absolute;
|
|
135
240
|
bottom: 0;
|
|
136
241
|
left: 0;
|
|
@@ -155,25 +260,25 @@ export const styles = css `
|
|
|
155
260
|
pointer-events: none;
|
|
156
261
|
}
|
|
157
262
|
|
|
158
|
-
.chart-inner:hover .chart-toggle,
|
|
159
|
-
.chart-toggle[aria-expanded='true'] {
|
|
263
|
+
.nile-chart-inner:hover .nile-chart-toggle,
|
|
264
|
+
.nile-chart-toggle[aria-expanded='true'] {
|
|
160
265
|
opacity: 1;
|
|
161
266
|
pointer-events: auto;
|
|
162
267
|
}
|
|
163
268
|
|
|
164
|
-
.chart-toggle:hover {
|
|
269
|
+
.nile-chart-toggle:hover {
|
|
165
270
|
background: var(--nile-colors-white-base, var(--ng-colors-bg-primary));
|
|
166
271
|
box-shadow: var(--nile-box-shadow-3, var(--ng-shadow-sm));
|
|
167
272
|
}
|
|
168
273
|
|
|
169
|
-
.chart-toggle:focus-visible {
|
|
274
|
+
.nile-chart-toggle:focus-visible {
|
|
170
275
|
outline: var(--nile-border-width-2, var(--ng-stroke-width-2)) solid var(--nile-colors-primary-600, var(--ng-colors-fg-brand-primary-600));
|
|
171
276
|
outline-offset: var(--nile-spacing-1px, var(--ng-outline-offset-1));
|
|
172
277
|
}
|
|
173
278
|
|
|
174
279
|
/* ── Summary Overlay ── */
|
|
175
280
|
|
|
176
|
-
.chart-overlay {
|
|
281
|
+
.nile-chart-overlay {
|
|
177
282
|
position: absolute;
|
|
178
283
|
left: 0;
|
|
179
284
|
right: 0;
|
|
@@ -189,29 +294,29 @@ export const styles = css `
|
|
|
189
294
|
padding: var(--nile-spacing-2xl, var(--ng-spacing-2xl)) var(--nile-spacing-3xl, var(--ng-spacing-3xl));
|
|
190
295
|
}
|
|
191
296
|
|
|
192
|
-
.chart-overlay[data-open] {
|
|
297
|
+
.nile-chart-overlay[data-open] {
|
|
193
298
|
transform: translateY(0);
|
|
194
299
|
}
|
|
195
300
|
|
|
196
|
-
.chart-content {
|
|
301
|
+
.nile-chart-content {
|
|
197
302
|
font-family: var(--nile-font-family-serif, var(--ng-font-family-body));
|
|
198
303
|
font-size: var(--nile-type-scale-3, var(--ng-font-size-text-sm));
|
|
199
304
|
color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
|
|
200
305
|
line-height: 1.6;
|
|
201
306
|
}
|
|
202
307
|
|
|
203
|
-
/* ──
|
|
308
|
+
/* ── Actions Menu (in header) ── */
|
|
204
309
|
|
|
205
|
-
.chart-menu-anchor {
|
|
310
|
+
.nile-chart-menu-anchor {
|
|
206
311
|
position: relative;
|
|
207
312
|
}
|
|
208
313
|
|
|
209
|
-
.chart-menu-trigger {
|
|
314
|
+
.nile-chart-menu-trigger {
|
|
210
315
|
display: flex;
|
|
211
316
|
align-items: center;
|
|
212
317
|
justify-content: center;
|
|
213
|
-
width: var(--nile-
|
|
214
|
-
height: var(--nile-
|
|
318
|
+
width: var(--nile-height-28px, var(--ng-height-28px));
|
|
319
|
+
height: var(--nile-height-28px, var(--ng-height-28px));
|
|
215
320
|
padding: 0;
|
|
216
321
|
border: none;
|
|
217
322
|
border-radius: var(--nile-radius-radius-lg, var(--ng-radius-sm));
|
|
@@ -221,17 +326,17 @@ export const styles = css `
|
|
|
221
326
|
transition: background var(--nile-transition-duration-short, var(--ng-transition-duration-fast)) ease, color var(--nile-transition-duration-short, var(--ng-transition-duration-fast)) ease;
|
|
222
327
|
}
|
|
223
328
|
|
|
224
|
-
.chart-menu-trigger:hover {
|
|
329
|
+
.nile-chart-menu-trigger:hover {
|
|
225
330
|
background: transparent;
|
|
226
331
|
color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
|
|
227
332
|
}
|
|
228
333
|
|
|
229
|
-
.chart-menu-trigger:focus-visible {
|
|
334
|
+
.nile-chart-menu-trigger:focus-visible {
|
|
230
335
|
outline: var(--nile-border-width-2, var(--ng-stroke-width-2)) solid var(--nile-colors-primary-600, var(--ng-colors-fg-brand-primary-600));
|
|
231
336
|
outline-offset: var(--nile-spacing-1px, var(--ng-outline-offset-1));
|
|
232
337
|
}
|
|
233
338
|
|
|
234
|
-
.chart-menu-dropdown {
|
|
339
|
+
.nile-chart-menu-dropdown {
|
|
235
340
|
position: absolute;
|
|
236
341
|
top: 100%;
|
|
237
342
|
right: 0;
|
|
@@ -246,7 +351,7 @@ export const styles = css `
|
|
|
246
351
|
z-index: 10;
|
|
247
352
|
}
|
|
248
353
|
|
|
249
|
-
.chart-menu-item {
|
|
354
|
+
.nile-chart-menu-item {
|
|
250
355
|
display: block;
|
|
251
356
|
width: 100%;
|
|
252
357
|
padding: var(--nile-spacing-md, var(--ng-spacing-md)) var(--nile-spacing-14px, var(--ng-spacing-3-5));
|
|
@@ -261,59 +366,66 @@ export const styles = css `
|
|
|
261
366
|
transition: background var(--nile-transition-duration-short, var(--ng-transition-duration-fast)) ease;
|
|
262
367
|
}
|
|
263
368
|
|
|
264
|
-
.chart-menu-item:hover {
|
|
265
|
-
background:
|
|
369
|
+
.nile-chart-menu-item:hover {
|
|
370
|
+
background: var(--nile-colors-neutral-100, var(--ng-colors-bg-secondary));
|
|
371
|
+
color: var(--nile-colors-dark-900, var(--ng-colors-text-primary-900));
|
|
266
372
|
}
|
|
267
373
|
|
|
268
|
-
.chart-menu-item.active {
|
|
374
|
+
.nile-chart-menu-item.active {
|
|
269
375
|
color: var(--nile-colors-primary-600, var(--ng-colors-fg-brand-primary-600));
|
|
270
376
|
font-weight: 600;
|
|
271
377
|
}
|
|
272
378
|
|
|
273
|
-
.chart-menu-item:focus-visible {
|
|
379
|
+
.nile-chart-menu-item:focus-visible {
|
|
274
380
|
outline: var(--nile-border-width-2, var(--ng-stroke-width-2)) solid var(--nile-colors-primary-600, var(--ng-colors-fg-brand-primary-600));
|
|
275
381
|
outline-offset: calc(var(--nile-spacing-2px, var(--ng-outline-offset-2)) * -1);
|
|
276
382
|
}
|
|
277
383
|
|
|
384
|
+
.nile-chart-menu-separator {
|
|
385
|
+
height: var(--nile-border-width-1, var(--ng-stroke-width-1));
|
|
386
|
+
background: var(--nile-colors-neutral-200, var(--ng-colors-border-secondary));
|
|
387
|
+
margin: var(--nile-spacing-xs, var(--ng-spacing-xs)) 0;
|
|
388
|
+
}
|
|
389
|
+
|
|
278
390
|
/* ── AI Chat Trigger (in header) ── */
|
|
279
391
|
|
|
280
|
-
.ai-trigger {
|
|
392
|
+
.nile-ai-trigger {
|
|
281
393
|
display: inline-flex;
|
|
282
394
|
align-items: center;
|
|
283
395
|
justify-content: center;
|
|
284
|
-
width: 28px;
|
|
285
|
-
height: 28px;
|
|
396
|
+
width: var(--nile-height-28px, var(--ng-height-28px));
|
|
397
|
+
height: var(--nile-height-28px, var(--ng-height-28px));
|
|
286
398
|
padding: 0;
|
|
287
|
-
border-radius: var(--ng-radius-md
|
|
399
|
+
border-radius: var(--nile-radius-radius-lg, var(--ng-radius-md));
|
|
288
400
|
background: var(--ng-componentcolors-utility-brand-50, #EFF4FF);
|
|
289
|
-
border: 1
|
|
401
|
+
border: var(--nile-border-width-1, var(--ng-stroke-width-1)) solid var(--ng-componentcolors-utility-brand-200, #C7D7FE);
|
|
290
402
|
box-shadow: 0 4px 20px rgba(41, 112, 255, 0.12);
|
|
291
403
|
color: var(--ng-componentcolors-utility-brand-600, #2970FF);
|
|
292
404
|
cursor: pointer;
|
|
293
|
-
transition: background
|
|
405
|
+
transition: background var(--nile-transition-duration-short, var(--ng-transition-duration-fast)) ease;
|
|
294
406
|
flex-shrink: 0;
|
|
295
407
|
outline: none;
|
|
296
408
|
}
|
|
297
409
|
|
|
298
|
-
.ai-trigger:hover,
|
|
299
|
-
.ai-trigger:focus-visible {
|
|
410
|
+
.nile-ai-trigger:hover,
|
|
411
|
+
.nile-ai-trigger:focus-visible {
|
|
300
412
|
background: var(--ng-componentcolors-utility-brand-100, #DBE8FF);
|
|
301
413
|
}
|
|
302
414
|
|
|
303
|
-
.chart-inner--kpi {
|
|
415
|
+
.nile-chart-inner--kpi {
|
|
304
416
|
overflow-x: hidden;
|
|
305
417
|
overflow-y: auto;
|
|
306
418
|
-webkit-overflow-scrolling: touch;
|
|
307
419
|
contain: none;
|
|
308
420
|
}
|
|
309
421
|
|
|
310
|
-
.ai-trigger.active {
|
|
422
|
+
.nile-ai-trigger.active {
|
|
311
423
|
background: var(--ng-componentcolors-utility-brand-100, #DBE8FF);
|
|
312
424
|
}
|
|
313
425
|
|
|
314
426
|
/* ── AI Chat Panel Overlay ── */
|
|
315
427
|
|
|
316
|
-
.ai-panel-overlay {
|
|
428
|
+
.nile-ai-panel-overlay {
|
|
317
429
|
position: absolute;
|
|
318
430
|
left: 0;
|
|
319
431
|
right: 0;
|
|
@@ -329,90 +441,90 @@ export const styles = css `
|
|
|
329
441
|
overflow: hidden;
|
|
330
442
|
}
|
|
331
443
|
|
|
332
|
-
.ai-panel-overlay[data-open] {
|
|
444
|
+
.nile-ai-panel-overlay[data-open] {
|
|
333
445
|
transform: translateY(0);
|
|
334
446
|
}
|
|
335
447
|
|
|
336
448
|
/* ── Skeleton loader (matches nile-skeleton-loader animation style) ── */
|
|
337
449
|
|
|
338
|
-
:host([loading]) .chart-card {
|
|
450
|
+
:host([loading]) .nile-chart-card {
|
|
339
451
|
pointer-events: none;
|
|
340
452
|
}
|
|
341
453
|
|
|
342
|
-
.chart-skeleton {
|
|
454
|
+
.nile-chart-skeleton {
|
|
343
455
|
display: flex;
|
|
344
456
|
flex-direction: column;
|
|
345
457
|
gap: 0;
|
|
346
|
-
padding: var(--nile-spacing-3xl,
|
|
458
|
+
padding: var(--nile-spacing-3xl, var(--ng-spacing-3xl)) var(--nile-spacing-3xl, var(--ng-spacing-3xl)) var(--nile-spacing-xl, var(--ng-spacing-xl));
|
|
347
459
|
min-height: var(--nile-chart-skeleton-height, 300px);
|
|
348
460
|
}
|
|
349
461
|
|
|
350
|
-
.chart-skeleton-body {
|
|
462
|
+
.nile-chart-skeleton-body {
|
|
351
463
|
display: flex;
|
|
352
464
|
flex-direction: column;
|
|
353
465
|
justify-content: space-around;
|
|
354
466
|
flex: 1;
|
|
355
|
-
gap: var(--nile-spacing-
|
|
467
|
+
gap: var(--nile-spacing-14px, var(--ng-spacing-lg));
|
|
356
468
|
padding-left: 44px;
|
|
357
469
|
position: relative;
|
|
358
470
|
}
|
|
359
471
|
|
|
360
472
|
/* Vertical y-axis rule */
|
|
361
|
-
.chart-skeleton-body::before {
|
|
473
|
+
.nile-chart-skeleton-body::before {
|
|
362
474
|
content: '';
|
|
363
475
|
position: absolute;
|
|
364
476
|
left: 34px;
|
|
365
|
-
top:
|
|
366
|
-
bottom:
|
|
367
|
-
width:
|
|
368
|
-
border-radius:
|
|
369
|
-
background: var(--nile-colors-neutral-400,
|
|
477
|
+
top: var(--nile-spacing-xs, var(--ng-spacing-xs));
|
|
478
|
+
bottom: var(--nile-spacing-xs, var(--ng-spacing-xs));
|
|
479
|
+
width: var(--nile-border-width-2, var(--ng-stroke-width-2));
|
|
480
|
+
border-radius: var(--nile-border-width-1, var(--ng-stroke-width-1));
|
|
481
|
+
background: var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
|
|
370
482
|
}
|
|
371
483
|
|
|
372
|
-
.chart-skeleton-row {
|
|
484
|
+
.nile-chart-skeleton-row {
|
|
373
485
|
display: flex;
|
|
374
486
|
align-items: center;
|
|
375
|
-
gap: var(--nile-spacing-md,
|
|
376
|
-
height:
|
|
487
|
+
gap: var(--nile-spacing-md, var(--ng-spacing-md));
|
|
488
|
+
height: var(--nile-spacing-3xl, var(--ng-spacing-3xl));
|
|
377
489
|
}
|
|
378
490
|
|
|
379
|
-
.chart-skeleton-ylabel {
|
|
380
|
-
width: 26px;
|
|
381
|
-
height: 10px;
|
|
382
|
-
border-radius:
|
|
491
|
+
.nile-chart-skeleton-ylabel {
|
|
492
|
+
width: var(--nile-height-26px, 26px);
|
|
493
|
+
height: var(--nile-spacing-10px, var(--ng-spacing-md-alt));
|
|
494
|
+
border-radius: var(--nile-radius-radius-sm, var(--ng-radius-xs));
|
|
383
495
|
flex-shrink: 0;
|
|
384
|
-
background: var(--nile-colors-neutral-400,
|
|
496
|
+
background: var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
|
|
385
497
|
animation: nile-skeleton-blink 1.2s ease-in-out infinite;
|
|
386
498
|
}
|
|
387
499
|
|
|
388
|
-
.chart-skeleton-bar {
|
|
389
|
-
height:
|
|
500
|
+
.nile-chart-skeleton-bar {
|
|
501
|
+
height: var(--nile-spacing-2xl, var(--ng-spacing-2xl));
|
|
390
502
|
width: var(--w, 60%);
|
|
391
|
-
border-radius: 0
|
|
392
|
-
background: var(--nile-colors-neutral-400,
|
|
503
|
+
border-radius: 0 var(--nile-radius-radius-sm, var(--ng-radius-xs)) var(--nile-radius-radius-sm, var(--ng-radius-xs)) 0;
|
|
504
|
+
background: var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
|
|
393
505
|
animation: nile-skeleton-blink 1.2s ease-in-out infinite;
|
|
394
506
|
}
|
|
395
507
|
|
|
396
508
|
/* Staggered wave across the bars */
|
|
397
|
-
.chart-skeleton-row:nth-child(1) .chart-skeleton-bar { animation-delay: 0ms; }
|
|
398
|
-
.chart-skeleton-row:nth-child(2) .chart-skeleton-bar { animation-delay: 100ms; }
|
|
399
|
-
.chart-skeleton-row:nth-child(3) .chart-skeleton-bar { animation-delay: 200ms; }
|
|
400
|
-
.chart-skeleton-row:nth-child(4) .chart-skeleton-bar { animation-delay: 300ms; }
|
|
401
|
-
.chart-skeleton-row:nth-child(5) .chart-skeleton-bar { animation-delay: 400ms; }
|
|
509
|
+
.nile-chart-skeleton-row:nth-child(1) .nile-chart-skeleton-bar { animation-delay: 0ms; }
|
|
510
|
+
.nile-chart-skeleton-row:nth-child(2) .nile-chart-skeleton-bar { animation-delay: 100ms; }
|
|
511
|
+
.nile-chart-skeleton-row:nth-child(3) .nile-chart-skeleton-bar { animation-delay: 200ms; }
|
|
512
|
+
.nile-chart-skeleton-row:nth-child(4) .nile-chart-skeleton-bar { animation-delay: 300ms; }
|
|
513
|
+
.nile-chart-skeleton-row:nth-child(5) .nile-chart-skeleton-bar { animation-delay: 400ms; }
|
|
402
514
|
|
|
403
515
|
/* Horizontal x-axis labels row */
|
|
404
|
-
.chart-skeleton-xaxis-row {
|
|
516
|
+
.nile-chart-skeleton-xaxis-row {
|
|
405
517
|
display: flex;
|
|
406
518
|
justify-content: space-around;
|
|
407
519
|
padding-left: 44px;
|
|
408
|
-
margin-top: var(--nile-spacing-
|
|
520
|
+
margin-top: var(--nile-spacing-14px, var(--ng-spacing-lg));
|
|
409
521
|
}
|
|
410
522
|
|
|
411
|
-
.chart-skeleton-xlabel {
|
|
412
|
-
height: 10px;
|
|
413
|
-
width: 30px;
|
|
414
|
-
border-radius:
|
|
415
|
-
background: var(--nile-colors-neutral-400,
|
|
523
|
+
.nile-chart-skeleton-xlabel {
|
|
524
|
+
height: var(--nile-spacing-10px, var(--ng-spacing-md-alt));
|
|
525
|
+
width: var(--nile-height-30px, 30px);
|
|
526
|
+
border-radius: var(--nile-radius-radius-sm, var(--ng-radius-xs));
|
|
527
|
+
background: var(--nile-colors-neutral-400, var(--ng-colors-border-secondary));
|
|
416
528
|
animation: nile-skeleton-blink 1.2s ease-in-out infinite;
|
|
417
529
|
animation-delay: var(--d, 0ms);
|
|
418
530
|
}
|
|
@@ -423,9 +535,9 @@ export const styles = css `
|
|
|
423
535
|
}
|
|
424
536
|
|
|
425
537
|
@media (prefers-reduced-motion: reduce) {
|
|
426
|
-
.chart-skeleton-bar,
|
|
427
|
-
.chart-skeleton-ylabel,
|
|
428
|
-
.chart-skeleton-xlabel {
|
|
538
|
+
.nile-chart-skeleton-bar,
|
|
539
|
+
.nile-chart-skeleton-ylabel,
|
|
540
|
+
.nile-chart-skeleton-xlabel {
|
|
429
541
|
animation: none;
|
|
430
542
|
opacity: 0.7;
|
|
431
543
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CSSResultGroup, PropertyValues, TemplateResult } from 'lit';
|
|
2
2
|
import NileElement from '../internal/nile-element.js';
|
|
3
|
-
import type { NileChartConfig } from './nile-chart-config.js';
|
|
3
|
+
import type { NileChartConfig, NileChartMenuConfig } from './nile-chart-config.js';
|
|
4
4
|
import type { NileChartConfigInputType } from '../internal/types/index.js';
|
|
5
5
|
import '../nile-bar-chart/index.js';
|
|
6
6
|
import '../nile-pie-chart/index.js';
|
|
@@ -52,6 +52,7 @@ import '@aquera/nile-data-grid';
|
|
|
52
52
|
import '../nile-ai-panel/index.js';
|
|
53
53
|
export declare class NileChart extends NileElement {
|
|
54
54
|
static styles: CSSResultGroup;
|
|
55
|
+
private _headerTipEl;
|
|
55
56
|
/** Full chart configuration. Accepts flat NileChartConfig or separated { chart, aq } input. */
|
|
56
57
|
config: NileChartConfig | NileChartConfigInputType | null;
|
|
57
58
|
/**
|
|
@@ -71,16 +72,22 @@ export declare class NileChart extends NileElement {
|
|
|
71
72
|
*/
|
|
72
73
|
chartTypeAttr: string;
|
|
73
74
|
/** Summary/insight text — shown as the AI panel's opening message when the chat is opened. */
|
|
75
|
+
summary: string;
|
|
74
76
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
+
* Controls which items appear in the actions menu. All items are opt-in —
|
|
78
|
+
* only items explicitly set to `true` are shown. Merged with (and takes
|
|
79
|
+
* priority over) `config.menu`.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* // PNG + CSV only
|
|
83
|
+
* chart.menu = { enabled: true, downloadPng: true, downloadCsv: true }
|
|
77
84
|
*/
|
|
78
|
-
|
|
79
|
-
summary: string;
|
|
85
|
+
menu: NileChartMenuConfig | null;
|
|
80
86
|
private activeType;
|
|
81
87
|
private activeConfig;
|
|
82
88
|
private menuOpen;
|
|
83
89
|
private chatOpen;
|
|
90
|
+
private _hcChart;
|
|
84
91
|
/** True when elements are projected into the `header` slot (default title/subtitle hidden). */
|
|
85
92
|
private hasHeaderSlotContent;
|
|
86
93
|
/** True when elements are projected into `header-actions` (used to show the header row). */
|
|
@@ -90,6 +97,7 @@ export declare class NileChart extends NileElement {
|
|
|
90
97
|
/** AI panel shows when ai.enabled is true OR when a summary is provided. */
|
|
91
98
|
private get aiEnabled();
|
|
92
99
|
private handleOutsideClick;
|
|
100
|
+
private handleChartReady;
|
|
93
101
|
connectedCallback(): void;
|
|
94
102
|
disconnectedCallback(): void;
|
|
95
103
|
private mergeChartTypeFromAttr;
|
|
@@ -112,8 +120,19 @@ export declare class NileChart extends NileElement {
|
|
|
112
120
|
/** Direct children with `slot=` — header row renders on first paint before slot assignment runs. */
|
|
113
121
|
private lightDomHasSlot;
|
|
114
122
|
private shouldShowHeader;
|
|
115
|
-
private
|
|
123
|
+
private buildExportingOptions;
|
|
124
|
+
/** Ensures exporting modules are loaded and the chart's exporting/fullscreen instances exist. */
|
|
125
|
+
private ensureExporting;
|
|
126
|
+
private viewFullscreen;
|
|
127
|
+
private printChart;
|
|
128
|
+
private exportChart;
|
|
129
|
+
private downloadCsv;
|
|
130
|
+
private renderActionsMenu;
|
|
116
131
|
private renderAiTrigger;
|
|
132
|
+
private _showHeaderTip;
|
|
133
|
+
private _hideHeaderTip;
|
|
134
|
+
private _onTitleEnter;
|
|
135
|
+
private _onSubtitleEnter;
|
|
117
136
|
private renderHeader;
|
|
118
137
|
private renderAiPanel;
|
|
119
138
|
private renderChartContent;
|