photon-grid-core 0.0.1 → 0.0.3
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/README.md +305 -0
- package/icons/icon-sets/core-icons.js +1 -1
- package/icons/icon-sets/core-icons.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/package.json +22 -16
- package/renderer/body-renderer.d.ts.map +1 -1
- package/renderer/body-renderer.js +21 -4
- package/renderer/body-renderer.js.map +1 -1
- package/renderer/cell-renderer.js +1 -1
- package/renderer/cell-renderer.js.map +1 -1
- package/renderer/column-menu.js +24 -25
- package/renderer/column-menu.js.map +1 -1
- package/renderer/column-style-manager.d.ts.map +1 -1
- package/renderer/column-style-manager.js +11 -2
- package/renderer/column-style-manager.js.map +1 -1
- package/renderer/grid-renderer.js +1 -1
- package/renderer/grid-renderer.js.map +1 -1
- package/renderer/header-renderer.d.ts.map +1 -1
- package/renderer/header-renderer.js +17 -3
- package/renderer/header-renderer.js.map +1 -1
- package/renderer/row-drag-renderer.d.ts +18 -0
- package/renderer/row-drag-renderer.d.ts.map +1 -1
- package/renderer/row-drag-renderer.js +53 -0
- package/renderer/row-drag-renderer.js.map +1 -1
- package/styles/base/cells.css.d.ts +9 -0
- package/styles/base/cells.css.d.ts.map +1 -0
- package/styles/base/cells.css.js +233 -0
- package/styles/base/cells.css.js.map +1 -0
- package/styles/base/chart-panel.css.d.ts +9 -0
- package/styles/base/chart-panel.css.d.ts.map +1 -0
- package/styles/base/chart-panel.css.js +140 -0
- package/styles/base/chart-panel.css.js.map +1 -0
- package/styles/base/column-context-menu.css.d.ts +9 -0
- package/styles/base/column-context-menu.css.d.ts.map +1 -0
- package/styles/base/column-context-menu.css.js +153 -0
- package/styles/base/column-context-menu.css.js.map +1 -0
- package/styles/base/column-group-header.css.d.ts +9 -0
- package/styles/base/column-group-header.css.d.ts.map +1 -0
- package/styles/base/column-group-header.css.js +270 -0
- package/styles/base/column-group-header.css.js.map +1 -0
- package/styles/base/context-menu.css.d.ts +9 -0
- package/styles/base/context-menu.css.d.ts.map +1 -0
- package/styles/base/context-menu.css.js +103 -0
- package/styles/base/context-menu.css.js.map +1 -0
- package/styles/base/editors.css.d.ts +9 -0
- package/styles/base/editors.css.d.ts.map +1 -0
- package/styles/base/editors.css.js +291 -0
- package/styles/base/editors.css.js.map +1 -0
- package/styles/base/filter.css.d.ts +9 -0
- package/styles/base/filter.css.d.ts.map +1 -0
- package/styles/base/filter.css.js +312 -0
- package/styles/base/filter.css.js.map +1 -0
- package/styles/base/footer.css.d.ts +9 -0
- package/styles/base/footer.css.d.ts.map +1 -0
- package/styles/base/footer.css.js +78 -0
- package/styles/base/footer.css.js.map +1 -0
- package/styles/base/group-bar-search.css.d.ts +9 -0
- package/styles/base/group-bar-search.css.d.ts.map +1 -0
- package/styles/base/group-bar-search.css.js +86 -0
- package/styles/base/group-bar-search.css.js.map +1 -0
- package/styles/base/group-drop-zone.css.d.ts +9 -0
- package/styles/base/group-drop-zone.css.d.ts.map +1 -0
- package/styles/base/group-drop-zone.css.js +173 -0
- package/styles/base/group-drop-zone.css.js.map +1 -0
- package/styles/base/header.css.d.ts +9 -0
- package/styles/base/header.css.d.ts.map +1 -0
- package/styles/base/header.css.js +206 -0
- package/styles/base/header.css.js.map +1 -0
- package/styles/base/master-detail.css.d.ts +9 -0
- package/styles/base/master-detail.css.d.ts.map +1 -0
- package/styles/base/master-detail.css.js +202 -0
- package/styles/base/master-detail.css.js.map +1 -0
- package/styles/base/misc.css.d.ts +9 -0
- package/styles/base/misc.css.d.ts.map +1 -0
- package/styles/base/misc.css.js +65 -0
- package/styles/base/misc.css.js.map +1 -0
- package/styles/base/panels.css.d.ts +9 -0
- package/styles/base/panels.css.d.ts.map +1 -0
- package/styles/base/panels.css.js +162 -0
- package/styles/base/panels.css.js.map +1 -0
- package/styles/base/photon-ai.css.d.ts +9 -0
- package/styles/base/photon-ai.css.d.ts.map +1 -0
- package/styles/base/photon-ai.css.js +200 -0
- package/styles/base/photon-ai.css.js.map +1 -0
- package/styles/base/root.css.d.ts +9 -0
- package/styles/base/root.css.d.ts.map +1 -0
- package/styles/base/root.css.js +56 -0
- package/styles/base/root.css.js.map +1 -0
- package/styles/base/row-drag.css.d.ts +9 -0
- package/styles/base/row-drag.css.d.ts.map +1 -0
- package/styles/base/row-drag.css.js +93 -0
- package/styles/base/row-drag.css.js.map +1 -0
- package/styles/base/row-group.css.d.ts +9 -0
- package/styles/base/row-group.css.d.ts.map +1 -0
- package/styles/base/row-group.css.js +79 -0
- package/styles/base/row-group.css.js.map +1 -0
- package/styles/base/rows.css.d.ts +9 -0
- package/styles/base/rows.css.d.ts.map +1 -0
- package/styles/base/rows.css.js +83 -0
- package/styles/base/rows.css.js.map +1 -0
- package/styles/base/scrollbars.css.d.ts +9 -0
- package/styles/base/scrollbars.css.d.ts.map +1 -0
- package/styles/base/scrollbars.css.js +56 -0
- package/styles/base/scrollbars.css.js.map +1 -0
- package/styles/base/sparkline.css.d.ts +9 -0
- package/styles/base/sparkline.css.d.ts.map +1 -0
- package/styles/base/sparkline.css.js +109 -0
- package/styles/base/sparkline.css.js.map +1 -0
- package/styles/base/tooltip.css.d.ts +9 -0
- package/styles/base/tooltip.css.d.ts.map +1 -0
- package/styles/base/tooltip.css.js +39 -0
- package/styles/base/tooltip.css.js.map +1 -0
- package/styles/base/tree.css.d.ts +9 -0
- package/styles/base/tree.css.d.ts.map +1 -0
- package/styles/base/tree.css.js +78 -0
- package/styles/base/tree.css.js.map +1 -0
- package/styles/base-styles.d.ts.map +1 -1
- package/styles/base-styles.js +56 -3026
- package/styles/base-styles.js.map +1 -1
- package/styles/themes/theme-alpine.d.ts +1 -1
- package/styles/themes/theme-alpine.d.ts.map +1 -1
- package/styles/themes/theme-alpine.js +1 -1
- package/styles/themes/theme-balham.d.ts +1 -1
- package/styles/themes/theme-balham.d.ts.map +1 -1
- package/styles/themes/theme-balham.js +0 -1
- package/styles/themes/theme-balham.js.map +1 -1
- package/styles/themes/theme-dark.d.ts +1 -1
- package/styles/themes/theme-dark.d.ts.map +1 -1
- package/styles/themes/theme-dark.js +1 -1
- package/styles/themes/theme-material.d.ts +1 -1
- package/styles/themes/theme-material.d.ts.map +1 -1
- package/styles/themes/theme-material.js +0 -1
- package/styles/themes/theme-material.js.map +1 -1
- package/styles/themes/theme-quartz.d.ts +1 -1
- package/styles/themes/theme-quartz.d.ts.map +1 -1
- package/styles/themes/theme-quartz.js +1 -1
- package/LICENSE +0 -1
- package/chart/chart-analyzer.d.ts +0 -12
- package/chart/chart-analyzer.d.ts.map +0 -1
- package/chart/chart-analyzer.js +0 -77
- package/chart/chart-analyzer.js.map +0 -1
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — master-detail section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export const masterDetailCss = `/* ──────────────────── Master/Detail ────────────────────
|
|
9
|
+
The detail layer is a sibling of the left/center/right body panels, not a
|
|
10
|
+
child of any of them — that is what lets a detail row span the full grid
|
|
11
|
+
width regardless of pinned columns. Its content wrapper receives only the
|
|
12
|
+
vertical scroll transform (never the horizontal one center columns use),
|
|
13
|
+
so it structurally cannot shift when the user scrolls horizontally. */
|
|
14
|
+
.pg-detail-layer {
|
|
15
|
+
position: absolute;
|
|
16
|
+
top: 0;
|
|
17
|
+
left: 0;
|
|
18
|
+
bottom: 0;
|
|
19
|
+
/* Stops short of the vertical scrollbar's *current* column width (0 when
|
|
20
|
+
it's hidden) instead of a blanket inset:0 — otherwise an expanded
|
|
21
|
+
detail row's opaque background paints over the native scrollbar
|
|
22
|
+
whenever one is showing. See ScrollController.syncScrollbars. */
|
|
23
|
+
right: var(--pg-scrollbar-v-live-width, 0px);
|
|
24
|
+
overflow: hidden;
|
|
25
|
+
pointer-events: none;
|
|
26
|
+
/* Tied with .pg-panel--left/--right's z-index (2, base-styles.ts ~line
|
|
27
|
+
335) rather than below it — this layer is a later DOM sibling of the
|
|
28
|
+
panels (mounted after them in GridRenderer.buildLayout), so an equal
|
|
29
|
+
z-index still paints on top per normal stacking-order tie-breaking.
|
|
30
|
+
This is what lets an expanded detail row's opaque background cover the
|
|
31
|
+
pinned panels' own edge box-shadow instead of that shadow bleeding
|
|
32
|
+
across the full-width detail content underneath (the panels are
|
|
33
|
+
full-viewport-height flex items, so their shadow would otherwise span
|
|
34
|
+
every detail row too, not just their own pinned cells). Sticky Master/
|
|
35
|
+
Detail rows are unaffected by this ordering — they live in the
|
|
36
|
+
independent, always-on-top .pg-sticky-layer below, not here. */
|
|
37
|
+
z-index: 2;
|
|
38
|
+
}
|
|
39
|
+
.pg-detail-layer__content {
|
|
40
|
+
position: relative;
|
|
41
|
+
width: 100%;
|
|
42
|
+
height: 100%;
|
|
43
|
+
transform: translateY(var(--pg-scroll-y, 0px));
|
|
44
|
+
}
|
|
45
|
+
/* Sticky Master/Detail row layer — a TOP-LEVEL sibling of the left/center/
|
|
46
|
+
right panels and of .pg-detail-layer (not nested inside any of them).
|
|
47
|
+
.pg-panel--left/--right set their own explicit z-index for pinned-column
|
|
48
|
+
elevation, which makes each one its own stacking context — anything
|
|
49
|
+
nested inside is trapped there and can never out-rank a sibling like
|
|
50
|
+
.pg-detail-layer merely by having a higher z-index of its own. Living at
|
|
51
|
+
this same top level lets one z-index correctly out-rank everything, in
|
|
52
|
+
every pinned/non-pinned column, with no stacking-context surprises.
|
|
53
|
+
The container itself is pointer-events:none (so empty space with no
|
|
54
|
+
sticky row never blocks clicks through to what's underneath); the actual
|
|
55
|
+
row element re-enables pointer-events at the default (auto). */
|
|
56
|
+
.pg-sticky-layer {
|
|
57
|
+
position: absolute;
|
|
58
|
+
top: 0;
|
|
59
|
+
left: 0;
|
|
60
|
+
right: var(--pg-scrollbar-v-live-width, 0px);
|
|
61
|
+
bottom: 0;
|
|
62
|
+
pointer-events: none;
|
|
63
|
+
z-index: 3;
|
|
64
|
+
}
|
|
65
|
+
/* Mirrors .pg-panel--left's own pinned-edge shadow. That shadow lives on the
|
|
66
|
+
panel container itself, which a stuck row's own background paints over
|
|
67
|
+
for its own height once moved into this overlay — without repeating it
|
|
68
|
+
here, the pinned-edge shadow has a visible gap wherever a sticky row
|
|
69
|
+
currently sits.
|
|
70
|
+
z-index: 2 (matching .pg-panel--left/--right's own z-index, base-styles.ts
|
|
71
|
+
~line 334) is required, not optional — this shadow bleeds *rightward*,
|
|
72
|
+
into the center region's own horizontal space, and .pg-sticky-layer__center
|
|
73
|
+
is appended after it in the DOM (see GridRenderer.buildStickyLayer); on
|
|
74
|
+
equal stacking contexts a later sibling paints over an earlier one, so
|
|
75
|
+
without an explicit z-index center's own background silently covers the
|
|
76
|
+
bled-through part of this shadow, while the right shadow (appended last)
|
|
77
|
+
was never affected — z-index makes both sides correct regardless of
|
|
78
|
+
append order instead of depending on it. */
|
|
79
|
+
.pg-sticky-layer__left {
|
|
80
|
+
position: absolute;
|
|
81
|
+
top: 0;
|
|
82
|
+
left: 0;
|
|
83
|
+
height: 100%;
|
|
84
|
+
width: var(--pg-left-panel-width, 0px);
|
|
85
|
+
overflow: hidden;
|
|
86
|
+
box-shadow: 2px 0 4px rgba(0,0,0,0.06);
|
|
87
|
+
z-index: 2;
|
|
88
|
+
}
|
|
89
|
+
.pg-sticky-layer__center {
|
|
90
|
+
position: absolute;
|
|
91
|
+
top: 0;
|
|
92
|
+
left: var(--pg-left-panel-width, 0px);
|
|
93
|
+
right: var(--pg-right-panel-width, 0px);
|
|
94
|
+
height: 100%;
|
|
95
|
+
overflow: hidden;
|
|
96
|
+
z-index: 1;
|
|
97
|
+
}
|
|
98
|
+
/* Mirrors .pg-panel--center .pg-panel__content's horizontal-scroll transform
|
|
99
|
+
so a stuck row's center cells track the user's horizontal scroll exactly
|
|
100
|
+
like the real (non-sticky) center panel does. */
|
|
101
|
+
.pg-sticky-layer__center-inner {
|
|
102
|
+
position: relative;
|
|
103
|
+
height: 100%;
|
|
104
|
+
width: var(--pg-center-content-width, 100%);
|
|
105
|
+
transform: translateX(var(--pg-scroll-x, 0px));
|
|
106
|
+
}
|
|
107
|
+
/* Mirrors .pg-panel--right's own pinned-edge shadow — see .pg-sticky-layer__left above. */
|
|
108
|
+
.pg-sticky-layer__right {
|
|
109
|
+
position: absolute;
|
|
110
|
+
top: 0;
|
|
111
|
+
right: 0;
|
|
112
|
+
height: 100%;
|
|
113
|
+
width: var(--pg-right-panel-width, 0px);
|
|
114
|
+
overflow: hidden;
|
|
115
|
+
box-shadow: -2px 0 4px rgba(0,0,0,0.06);
|
|
116
|
+
}
|
|
117
|
+
.pg-row--sticky {
|
|
118
|
+
/* The sticky layer container above is pointer-events:none (so empty space
|
|
119
|
+
with no sticky row never blocks clicks through to whatever's underneath)
|
|
120
|
+
— pointer-events inherits, so without this the row itself, and every
|
|
121
|
+
interactive thing inside it (cells, the tree/group toggle, checkboxes),
|
|
122
|
+
would silently inherit "none" and stop responding to clicks entirely. */
|
|
123
|
+
pointer-events: auto;
|
|
124
|
+
}
|
|
125
|
+
.pg-row--detail-container {
|
|
126
|
+
position: absolute;
|
|
127
|
+
left: 0;
|
|
128
|
+
width: 100%;
|
|
129
|
+
box-sizing: border-box;
|
|
130
|
+
overflow: hidden;
|
|
131
|
+
pointer-events: auto;
|
|
132
|
+
padding: 20px;
|
|
133
|
+
background: var(--pg-colors-surface, #fff);
|
|
134
|
+
border-bottom: 1px solid var(--pg-colors-border, #e2e8f0);
|
|
135
|
+
opacity: 1;
|
|
136
|
+
/* Deliberately not tied to the theme's --pg-transitions-duration-* tokens —
|
|
137
|
+
those are tuned for snappy hover/focus feedback elsewhere; expand/collapse
|
|
138
|
+
reads better slightly slower and more deliberate. */
|
|
139
|
+
transition:
|
|
140
|
+
height 340ms cubic-bezier(0.4, 0, 0.2, 1),
|
|
141
|
+
opacity 260ms ease;
|
|
142
|
+
}
|
|
143
|
+
/* Expand: fades in on first mount; height grows for free once RowPositionSheet
|
|
144
|
+
updates from the initial min/cached height to the auto-measured one. */
|
|
145
|
+
.pg-row--detail-container.pg-row--detail-entering {
|
|
146
|
+
opacity: 0;
|
|
147
|
+
}
|
|
148
|
+
/* Collapse: DetailRowRenderer.beginCollapse freezes top/height as inline
|
|
149
|
+
styles first (the RowPositionSheet rule for this row is about to disappear
|
|
150
|
+
for good), then this class plus height: 0 (set in JS) drives the shrink. */
|
|
151
|
+
.pg-row--detail-container.pg-row--detail-collapsing {
|
|
152
|
+
opacity: 0;
|
|
153
|
+
border-bottom-color: transparent;
|
|
154
|
+
}
|
|
155
|
+
.pg-detail-nested-grid-host {
|
|
156
|
+
width: 100%;
|
|
157
|
+
height: 100%;
|
|
158
|
+
}
|
|
159
|
+
.pg-detail-loading {
|
|
160
|
+
display: flex;
|
|
161
|
+
align-items: center;
|
|
162
|
+
justify-content: center;
|
|
163
|
+
width: 100%;
|
|
164
|
+
height: 100%;
|
|
165
|
+
color: var(--pg-colors-text-secondary, #64748b);
|
|
166
|
+
}
|
|
167
|
+
.pg-detail-toggle {
|
|
168
|
+
display: inline-flex;
|
|
169
|
+
align-items: center;
|
|
170
|
+
justify-content: center;
|
|
171
|
+
flex-shrink: 0;
|
|
172
|
+
width: var(--pg-group-toggle-size, 24px);
|
|
173
|
+
height: var(--pg-group-toggle-size, 24px);
|
|
174
|
+
margin-left: 8px;
|
|
175
|
+
margin-right: 4px;
|
|
176
|
+
border-radius: var(--pg-borders-radius-sm, 4px);
|
|
177
|
+
color: var(--pg-colors-text-secondary, #64748b);
|
|
178
|
+
cursor: pointer;
|
|
179
|
+
transition:
|
|
180
|
+
background var(--pg-transitions-duration-fast, 100ms),
|
|
181
|
+
color var(--pg-transitions-duration-fast, 100ms);
|
|
182
|
+
}
|
|
183
|
+
.pg-detail-toggle:hover {
|
|
184
|
+
background: var(--pg-colors-row-hover, #f0f7ff);
|
|
185
|
+
color: var(--pg-colors-text-primary, #1e293b);
|
|
186
|
+
}
|
|
187
|
+
.pg-detail-resize-handle {
|
|
188
|
+
position: absolute;
|
|
189
|
+
left: 0;
|
|
190
|
+
right: 0;
|
|
191
|
+
bottom: 0;
|
|
192
|
+
height: 6px;
|
|
193
|
+
cursor: row-resize;
|
|
194
|
+
background: transparent;
|
|
195
|
+
transition: background var(--pg-transitions-duration-fast, 100ms);
|
|
196
|
+
}
|
|
197
|
+
.pg-detail-resize-handle:hover {
|
|
198
|
+
background: var(--pg-colors-resize-handle-color, #e2e8f0);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
`;
|
|
202
|
+
//# sourceMappingURL=master-detail.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"master-detail.css.js","sourceRoot":"","sources":["../../../src/styles/base/master-detail.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiM9B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — misc section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const miscCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Overlay \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-overlay {\n position: absolute;\n inset: 0;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n gap: 12px;\n background: var(--pg-colors-surface, #fff);\n z-index: 20;\n}\n.pg-overlay--loading { background: rgba(255,255,255,0.85); }\n.pg-overlay__text { color: var(--pg-colors-text-secondary, #475569); font-size: var(--pg-typography-font-size-md, 13px); }\n.pg-overlay__icon { color: var(--pg-colors-text-disabled, #94a3b8); }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Drag \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-dragging { opacity: 0.5; }\n.pg-drop-before { box-shadow: 0 -2px 0 0 var(--pg-colors-primary, #2563eb); }\n.pg-drop-after { box-shadow: 0 2px 0 0 var(--pg-colors-primary, #2563eb); }\n.pg-drop-over { background: var(--pg-colors-drag-over-highlight, rgba(37,99,235,0.06)) !important; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Fullscreen \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid--fullscreen { position: fixed; inset: 0; z-index: 9999; border-radius: 0; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Chart \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-chart { display: flex; flex-direction: column; gap: 8px; }\n.pg-chart__title { font-size: var(--pg-typography-font-size-lg, 14px); font-weight: var(--pg-typography-font-weight-semi-bold, 600); color: var(--pg-colors-text-primary); padding: 4px 0; }\n.pg-chart__canvas { display: block; max-width: 100%; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Icon \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-icon { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }\n.pg-icon svg { display: block; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Auto Row Height \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid--auto-row-height .pg-row {\n height: auto;\n}\n.pg-grid--auto-row-height .pg-cell {\n overflow: visible;\n}\n.pg-grid--auto-row-height .pg-cell__inner {\n height: auto;\n overflow: visible;\n align-items: flex-start;\n padding-top: 10px;\n padding-bottom: 10px;\n}\n.pg-grid--auto-row-height .pg-cell__value {\n white-space: normal;\n overflow: visible;\n text-overflow: initial;\n overflow-wrap: break-word;\n word-break: break-word;\n}\n\n";
|
|
9
|
+
//# sourceMappingURL=misc.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/misc.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,OAAO,gwGAwDnB,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — misc section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export const miscCss = `/* ──────────────────── Overlay ──────────────────── */
|
|
9
|
+
.pg-overlay {
|
|
10
|
+
position: absolute;
|
|
11
|
+
inset: 0;
|
|
12
|
+
display: flex;
|
|
13
|
+
flex-direction: column;
|
|
14
|
+
align-items: center;
|
|
15
|
+
justify-content: center;
|
|
16
|
+
gap: 12px;
|
|
17
|
+
background: var(--pg-colors-surface, #fff);
|
|
18
|
+
z-index: 20;
|
|
19
|
+
}
|
|
20
|
+
.pg-overlay--loading { background: rgba(255,255,255,0.85); }
|
|
21
|
+
.pg-overlay__text { color: var(--pg-colors-text-secondary, #475569); font-size: var(--pg-typography-font-size-md, 13px); }
|
|
22
|
+
.pg-overlay__icon { color: var(--pg-colors-text-disabled, #94a3b8); }
|
|
23
|
+
|
|
24
|
+
/* ──────────────────── Drag ──────────────────── */
|
|
25
|
+
.pg-dragging { opacity: 0.5; }
|
|
26
|
+
.pg-drop-before { box-shadow: 0 -2px 0 0 var(--pg-colors-primary, #2563eb); }
|
|
27
|
+
.pg-drop-after { box-shadow: 0 2px 0 0 var(--pg-colors-primary, #2563eb); }
|
|
28
|
+
.pg-drop-over { background: var(--pg-colors-drag-over-highlight, rgba(37,99,235,0.06)) !important; }
|
|
29
|
+
|
|
30
|
+
/* ──────────────────── Fullscreen ──────────────────── */
|
|
31
|
+
.pg-grid--fullscreen { position: fixed; inset: 0; z-index: 9999; border-radius: 0; }
|
|
32
|
+
|
|
33
|
+
/* ──────────────────── Chart ──────────────────── */
|
|
34
|
+
.pg-chart { display: flex; flex-direction: column; gap: 8px; }
|
|
35
|
+
.pg-chart__title { font-size: var(--pg-typography-font-size-lg, 14px); font-weight: var(--pg-typography-font-weight-semi-bold, 600); color: var(--pg-colors-text-primary); padding: 4px 0; }
|
|
36
|
+
.pg-chart__canvas { display: block; max-width: 100%; }
|
|
37
|
+
|
|
38
|
+
/* ──────────────────── Icon ──────────────────── */
|
|
39
|
+
.pg-icon { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
|
|
40
|
+
.pg-icon svg { display: block; }
|
|
41
|
+
|
|
42
|
+
/* ──────────────────── Auto Row Height ──────────────────── */
|
|
43
|
+
.pg-grid--auto-row-height .pg-row {
|
|
44
|
+
height: auto;
|
|
45
|
+
}
|
|
46
|
+
.pg-grid--auto-row-height .pg-cell {
|
|
47
|
+
overflow: visible;
|
|
48
|
+
}
|
|
49
|
+
.pg-grid--auto-row-height .pg-cell__inner {
|
|
50
|
+
height: auto;
|
|
51
|
+
overflow: visible;
|
|
52
|
+
align-items: flex-start;
|
|
53
|
+
padding-top: 10px;
|
|
54
|
+
padding-bottom: 10px;
|
|
55
|
+
}
|
|
56
|
+
.pg-grid--auto-row-height .pg-cell__value {
|
|
57
|
+
white-space: normal;
|
|
58
|
+
overflow: visible;
|
|
59
|
+
text-overflow: initial;
|
|
60
|
+
overflow-wrap: break-word;
|
|
61
|
+
word-break: break-word;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
`;
|
|
65
|
+
//# sourceMappingURL=misc.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"misc.css.js","sourceRoot":"","sources":["../../../src/styles/base/misc.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwDtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — panels section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const panelsCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Three-panel header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid__header {\n display: flex;\n flex-direction: row;\n flex-shrink: 0;\n border-bottom: 1px solid var(--pg-colors-header-border, #e2e8f0);\n background: var(--pg-colors-header-background, #f8fafc);\n overflow: hidden;\n z-index: 10;\n position: relative;\n}\n/* Mirrors the vertical-scrollbar flex item that lives in the body row so that\n the center header panel is exactly as wide as the center body panel.\n Without this spacer the header center is scrollbar_width wider and the right\n pinned-column header is shifted right relative to the body cells.\n Uses the *live* scrollbar width (--pg-scrollbar-v-live-width: 0 when the body\n has no scrollbar showing, the real width when it does \u2014 kept in sync every\n scroll/resize by ScrollController.syncScrollbars) rather than the constant\n --pg-scrollbar-v-width, so header\u2194body alignment stays exact whether or not a\n vertical scrollbar is currently present. */\n.pg-header-vscroll-spacer {\n flex-shrink: 0;\n width: var(--pg-scrollbar-v-live-width, 0px);\n background: var(--pg-colors-header-background, #f8fafc);\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Three-panel body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-grid__body {\n display: flex;\n flex-direction: row;\n flex: 1 1 0;\n min-height: 0;\n overflow: hidden;\n position: relative;\n transform: translateZ(10px)\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel base \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel {\n display: flex;\n flex-direction: column;\n overflow: hidden;\n flex-shrink: 0;\n position: relative;\n}\n.pg-panel--left {\n z-index: 2;\n width: var(--pg-left-panel-width, auto);\n}\n.pg-panel--center {\n flex: 1 1 0;\n min-width: 0;\n overflow: hidden;\n}\n.pg-panel--right {\n z-index: 2;\n width: var(--pg-right-panel-width, auto);\n padding-inline: 1px\n}\n/* \u2500\u2500 Pinned-region divider \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Structural boundary between a frozen (pinned) column region and the\n scrollable center. Deliberately independent of showVerticalBorders (which\n only governs interior column grid-lines) \u2014 the frozen edge must stay visible\n even when interior lines are off, otherwise pinned columns visually merge\n into the scrolling area.\n Implemented as an absolutely-positioned 1px overlay (::after) rather than a\n real border or an inset shadow:\n \u2022 a real border would consume 1px of the border-box width and clip the\n last pinned column;\n \u2022 an inset box-shadow paints behind the panel's descendant rows, whose\n opaque backgrounds (--pg-colors-row-background) would hide it.\n The overlay adds no layout box (zero reflow, no width shift) and paints above\n the rows. It only renders while the panel is displayed, i.e. that side\n actually has pinned columns (empty panels are display:none). */\n.pg-panel--left::after,\n.pg-panel--right::after {\n content: \"\";\n position: absolute;\n top: 0;\n bottom: 0;\n width: 1px;\n background: var(--pg-colors-pinned-border, var(--pg-colors-border, #e2e8f0));\n z-index: 4;\n pointer-events: none;\n}\n.pg-panel--left::after { right: 0; }\n.pg-panel--right::after { left: 0; }\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel header \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel__header {\n flex-shrink: 0;\n overflow: hidden;\n position: relative;\n z-index: 2;\n}\n/* Center panel header sits behind pinned-panel headers so that center\n content translated by the scroll transform cannot visually overlap the\n left / right pinned column headers when scrolled near their edges. */\n.pg-panel--center .pg-panel__header {\n z-index: 1;\n}\n.pg-panel__header-inner {\n display: flex;\n flex-direction: column;\n}\n.pg-panel--center .pg-panel__header-inner {\n transform: translateX(var(--pg-scroll-x, 0px));\n width: var(--pg-center-content-width, 100%);\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel body \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel__body {\n flex: 1 1 0;\n min-height: 0;\n overflow: hidden;\n position: relative;\n}\n\n/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Panel content (virtual scroll) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n.pg-panel__content {\n position: relative;\n height: var(--pg-content-height, 0px);\n will-change: transform;\n}\n.pg-panel--left .pg-panel__content,\n.pg-panel--right .pg-panel__content {\n transform: translateY(var(--pg-scroll-y, 0px));\n}\n.pg-panel--center .pg-panel__content {\n transform: translate(var(--pg-scroll-x, 0px), var(--pg-scroll-y, 0px));\n width: var(--pg-center-content-width, 100%);\n}\n/* Master/Detail only (see GridRenderer's pg-grid--has-master-detail class):\n a BODY panel (left/center/right \u2014 scoped via .pg-grid__body so the\n *header* panels, which share the same .pg-panel classes, are untouched\n and stay fully interactive for sort/resize/filter) is a full-height block\n regardless of whether it has a row at a given Y \u2014 including the Y range\n where the full-width detail/nested grid layer shows through underneath.\n Without this, empty panel space (there is no row there \u2014 a detail row\n renders nothing in these panels by design) still geometrically blocks\n clicks meant for whatever is showing through from that layer.\n pointer-events is inherited, so every actual row must explicitly opt\n back in \u2014 scoped to Master/Detail grids only, this has no effect on the\n vast majority of grids that never use it. */\n.pg-grid--has-master-detail .pg-grid__body > .pg-panel,\n.pg-grid--has-master-detail .pg-panel__body,\n.pg-grid--has-master-detail .pg-panel__content {\n pointer-events: none;\n}\n.pg-grid--has-master-detail .pg-row {\n pointer-events: auto;\n}\n\n";
|
|
9
|
+
//# sourceMappingURL=panels.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/panels.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,SAAS,i+NAyJrB,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — panels section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export const panelsCss = `/* ──────────────────── Three-panel header ──────────────────── */
|
|
9
|
+
.pg-grid__header {
|
|
10
|
+
display: flex;
|
|
11
|
+
flex-direction: row;
|
|
12
|
+
flex-shrink: 0;
|
|
13
|
+
border-bottom: 1px solid var(--pg-colors-header-border, #e2e8f0);
|
|
14
|
+
background: var(--pg-colors-header-background, #f8fafc);
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
z-index: 10;
|
|
17
|
+
position: relative;
|
|
18
|
+
}
|
|
19
|
+
/* Mirrors the vertical-scrollbar flex item that lives in the body row so that
|
|
20
|
+
the center header panel is exactly as wide as the center body panel.
|
|
21
|
+
Without this spacer the header center is scrollbar_width wider and the right
|
|
22
|
+
pinned-column header is shifted right relative to the body cells.
|
|
23
|
+
Uses the *live* scrollbar width (--pg-scrollbar-v-live-width: 0 when the body
|
|
24
|
+
has no scrollbar showing, the real width when it does — kept in sync every
|
|
25
|
+
scroll/resize by ScrollController.syncScrollbars) rather than the constant
|
|
26
|
+
--pg-scrollbar-v-width, so header↔body alignment stays exact whether or not a
|
|
27
|
+
vertical scrollbar is currently present. */
|
|
28
|
+
.pg-header-vscroll-spacer {
|
|
29
|
+
flex-shrink: 0;
|
|
30
|
+
width: var(--pg-scrollbar-v-live-width, 0px);
|
|
31
|
+
background: var(--pg-colors-header-background, #f8fafc);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* ──────────────────── Three-panel body ──────────────────── */
|
|
35
|
+
.pg-grid__body {
|
|
36
|
+
display: flex;
|
|
37
|
+
flex-direction: row;
|
|
38
|
+
flex: 1 1 0;
|
|
39
|
+
min-height: 0;
|
|
40
|
+
overflow: hidden;
|
|
41
|
+
position: relative;
|
|
42
|
+
transform: translateZ(10px)
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* ──────────────────── Panel base ──────────────────── */
|
|
46
|
+
.pg-panel {
|
|
47
|
+
display: flex;
|
|
48
|
+
flex-direction: column;
|
|
49
|
+
overflow: hidden;
|
|
50
|
+
flex-shrink: 0;
|
|
51
|
+
position: relative;
|
|
52
|
+
}
|
|
53
|
+
.pg-panel--left {
|
|
54
|
+
z-index: 2;
|
|
55
|
+
width: var(--pg-left-panel-width, auto);
|
|
56
|
+
}
|
|
57
|
+
.pg-panel--center {
|
|
58
|
+
flex: 1 1 0;
|
|
59
|
+
min-width: 0;
|
|
60
|
+
overflow: hidden;
|
|
61
|
+
}
|
|
62
|
+
.pg-panel--right {
|
|
63
|
+
z-index: 2;
|
|
64
|
+
width: var(--pg-right-panel-width, auto);
|
|
65
|
+
padding-inline: 1px
|
|
66
|
+
}
|
|
67
|
+
/* ── Pinned-region divider ──────────────────────────────────────────────
|
|
68
|
+
Structural boundary between a frozen (pinned) column region and the
|
|
69
|
+
scrollable center. Deliberately independent of showVerticalBorders (which
|
|
70
|
+
only governs interior column grid-lines) — the frozen edge must stay visible
|
|
71
|
+
even when interior lines are off, otherwise pinned columns visually merge
|
|
72
|
+
into the scrolling area.
|
|
73
|
+
Implemented as an absolutely-positioned 1px overlay (::after) rather than a
|
|
74
|
+
real border or an inset shadow:
|
|
75
|
+
• a real border would consume 1px of the border-box width and clip the
|
|
76
|
+
last pinned column;
|
|
77
|
+
• an inset box-shadow paints behind the panel's descendant rows, whose
|
|
78
|
+
opaque backgrounds (--pg-colors-row-background) would hide it.
|
|
79
|
+
The overlay adds no layout box (zero reflow, no width shift) and paints above
|
|
80
|
+
the rows. It only renders while the panel is displayed, i.e. that side
|
|
81
|
+
actually has pinned columns (empty panels are display:none). */
|
|
82
|
+
.pg-panel--left::after,
|
|
83
|
+
.pg-panel--right::after {
|
|
84
|
+
content: "";
|
|
85
|
+
position: absolute;
|
|
86
|
+
top: 0;
|
|
87
|
+
bottom: 0;
|
|
88
|
+
width: 1px;
|
|
89
|
+
background: var(--pg-colors-pinned-border, var(--pg-colors-border, #e2e8f0));
|
|
90
|
+
z-index: 4;
|
|
91
|
+
pointer-events: none;
|
|
92
|
+
}
|
|
93
|
+
.pg-panel--left::after { right: 0; }
|
|
94
|
+
.pg-panel--right::after { left: 0; }
|
|
95
|
+
|
|
96
|
+
/* ──────────────────── Panel header ──────────────────── */
|
|
97
|
+
.pg-panel__header {
|
|
98
|
+
flex-shrink: 0;
|
|
99
|
+
overflow: hidden;
|
|
100
|
+
position: relative;
|
|
101
|
+
z-index: 2;
|
|
102
|
+
}
|
|
103
|
+
/* Center panel header sits behind pinned-panel headers so that center
|
|
104
|
+
content translated by the scroll transform cannot visually overlap the
|
|
105
|
+
left / right pinned column headers when scrolled near their edges. */
|
|
106
|
+
.pg-panel--center .pg-panel__header {
|
|
107
|
+
z-index: 1;
|
|
108
|
+
}
|
|
109
|
+
.pg-panel__header-inner {
|
|
110
|
+
display: flex;
|
|
111
|
+
flex-direction: column;
|
|
112
|
+
}
|
|
113
|
+
.pg-panel--center .pg-panel__header-inner {
|
|
114
|
+
transform: translateX(var(--pg-scroll-x, 0px));
|
|
115
|
+
width: var(--pg-center-content-width, 100%);
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/* ──────────────────── Panel body ──────────────────── */
|
|
119
|
+
.pg-panel__body {
|
|
120
|
+
flex: 1 1 0;
|
|
121
|
+
min-height: 0;
|
|
122
|
+
overflow: hidden;
|
|
123
|
+
position: relative;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
/* ──────────────────── Panel content (virtual scroll) ──────────────────── */
|
|
127
|
+
.pg-panel__content {
|
|
128
|
+
position: relative;
|
|
129
|
+
height: var(--pg-content-height, 0px);
|
|
130
|
+
will-change: transform;
|
|
131
|
+
}
|
|
132
|
+
.pg-panel--left .pg-panel__content,
|
|
133
|
+
.pg-panel--right .pg-panel__content {
|
|
134
|
+
transform: translateY(var(--pg-scroll-y, 0px));
|
|
135
|
+
}
|
|
136
|
+
.pg-panel--center .pg-panel__content {
|
|
137
|
+
transform: translate(var(--pg-scroll-x, 0px), var(--pg-scroll-y, 0px));
|
|
138
|
+
width: var(--pg-center-content-width, 100%);
|
|
139
|
+
}
|
|
140
|
+
/* Master/Detail only (see GridRenderer's pg-grid--has-master-detail class):
|
|
141
|
+
a BODY panel (left/center/right — scoped via .pg-grid__body so the
|
|
142
|
+
*header* panels, which share the same .pg-panel classes, are untouched
|
|
143
|
+
and stay fully interactive for sort/resize/filter) is a full-height block
|
|
144
|
+
regardless of whether it has a row at a given Y — including the Y range
|
|
145
|
+
where the full-width detail/nested grid layer shows through underneath.
|
|
146
|
+
Without this, empty panel space (there is no row there — a detail row
|
|
147
|
+
renders nothing in these panels by design) still geometrically blocks
|
|
148
|
+
clicks meant for whatever is showing through from that layer.
|
|
149
|
+
pointer-events is inherited, so every actual row must explicitly opt
|
|
150
|
+
back in — scoped to Master/Detail grids only, this has no effect on the
|
|
151
|
+
vast majority of grids that never use it. */
|
|
152
|
+
.pg-grid--has-master-detail .pg-grid__body > .pg-panel,
|
|
153
|
+
.pg-grid--has-master-detail .pg-panel__body,
|
|
154
|
+
.pg-grid--has-master-detail .pg-panel__content {
|
|
155
|
+
pointer-events: none;
|
|
156
|
+
}
|
|
157
|
+
.pg-grid--has-master-detail .pg-row {
|
|
158
|
+
pointer-events: auto;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
`;
|
|
162
|
+
//# sourceMappingURL=panels.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"panels.css.js","sourceRoot":"","sources":["../../../src/styles/base/panels.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyJxB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Photon Grid base styles — photon-ai section.
|
|
3
|
+
*
|
|
4
|
+
* Auto-split from base-styles.ts. Concatenated back (in order) by
|
|
5
|
+
* base-styles.ts; edit here, not there. Order is preserved because CSS
|
|
6
|
+
* cascade depends on it.
|
|
7
|
+
*/
|
|
8
|
+
export declare const photonAiCss = "/* \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Photon AI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n Floating command bar, anchored to the grid body's bottom-right corner.\n Mounted as a sibling of the pinned-column panels (see PhotonAIPanel.mount /\n GridRenderer.buildLayout) so it floats independently of virtualization and\n scroll; the grid body's own overflow: hidden is what keeps it inside the\n grid container per spec, without this component needing to enforce that\n itself. */\n.pg-ai-launcher {\n position: absolute;\n bottom: 16px;\n right: 16px;\n z-index: 201;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 44px;\n height: 44px;\n border: none;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n box-shadow: var(--pg-shadows-lg, 0 8px 24px rgba(15, 23, 42, 0.16));\n cursor: pointer;\n transition:\n transform var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),\n opacity var(--pg-transitions-duration-base, 150ms) var(--pg-transitions-easing-base, ease),\n background var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-launcher:hover {\n background: var(--pg-colors-primary-hover, #1d4ed8);\n transform: scale(1.06);\n}\n.pg-ai-launcher:active {\n background: var(--pg-colors-primary-active, #1e40af);\n transform: scale(0.97);\n}\n.pg-ai-launcher--hidden {\n opacity: 0;\n transform: scale(0.7);\n pointer-events: none;\n}\n\n.pg-ai-panel {\n position: absolute;\n top: 12px;\n right: 12px;\n bottom: 12px;\n z-index: 201;\n width: min(360px, calc(100% - 24px));\n display: none;\n flex-direction: column;\n background: var(--pg-colors-surface, #ffffff);\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-lg, 10px);\n box-shadow: var(--pg-shadows-dropdown, 0 16px 48px rgba(15, 23, 42, 0.24));\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n color: var(--pg-colors-text-primary, #0f172a);\n}\n.pg-ai-panel--open {\n display: flex;\n}\n\n.pg-ai-panel__header {\n flex-shrink: 0;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 12px;\n border-bottom: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-ai-panel__title {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: var(--pg-typography-font-size-sm, 13px);\n font-weight: var(--pg-typography-font-weight-semi-bold, 600);\n color: var(--pg-colors-primary, #2563eb);\n}\n.pg-ai-panel__close {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 20px;\n height: 20px;\n border: none;\n border-radius: var(--pg-borders-radius-sm, 4px);\n background: transparent;\n color: var(--pg-colors-text-secondary, #64748b);\n cursor: pointer;\n transition: background var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__close:hover {\n background: var(--pg-colors-background-alt, #f1f5f9);\n}\n\n.pg-ai-panel__log {\n flex: 1 1 0;\n min-height: 0;\n overflow-y: auto;\n display: flex;\n flex-direction: column;\n gap: 10px;\n padding: 14px;\n}\n\n.pg-ai-panel__message {\n max-width: 85%;\n padding: 8px 12px;\n border-radius: var(--pg-borders-radius-lg, 10px);\n font-size: var(--pg-typography-font-size-sm, 13px);\n line-height: 1.45;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.pg-ai-panel__message--user {\n align-self: flex-end;\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n border-bottom-right-radius: var(--pg-borders-radius-sm, 4px);\n}\n.pg-ai-panel__message--assistant {\n align-self: flex-start;\n background: var(--pg-colors-background-alt, #f1f5f9);\n color: var(--pg-colors-text-primary, #0f172a);\n border-bottom-left-radius: var(--pg-borders-radius-sm, 4px);\n}\n.pg-ai-panel__message--assistant.pg-ai-panel__message--error {\n background: var(--pg-colors-error-subtle, #fef2f2);\n color: var(--pg-colors-error, #dc2626);\n}\n\n.pg-ai-panel__input-wrap {\n position: relative;\n flex-shrink: 0;\n display: flex;\n padding: 10px 12px 12px;\n border-top: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n}\n.pg-ai-panel__input {\n flex: 1 1 0;\n width: 100%;\n min-height: 36px;\n max-height: 120px;\n padding: 8px 40px 8px 12px;\n border: var(--pg-borders-width-thin, 1px) solid var(--pg-colors-border, #e2e8f0);\n border-radius: var(--pg-borders-radius-md, 6px);\n background: var(--pg-colors-surface, #ffffff);\n color: var(--pg-colors-text-primary, #0f172a);\n font-family: var(--pg-typography-font-family, system-ui, sans-serif);\n font-size: var(--pg-typography-font-size-sm, 13px);\n line-height: 1.4;\n resize: none;\n outline: none;\n transition: border-color var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__input::placeholder {\n color: var(--pg-colors-text-disabled, #94a3b8);\n}\n.pg-ai-panel__input:focus {\n border-color: var(--pg-colors-border-focus, #2563eb);\n}\n.pg-ai-panel__send {\n position: absolute;\n right: 20px;\n bottom: 17px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n flex-shrink: 0;\n border: none;\n border-radius: var(--pg-borders-radius-pill, 9999px);\n background: var(--pg-colors-primary, #2563eb);\n color: var(--pg-colors-primary-text, #ffffff);\n cursor: pointer;\n transition:\n background var(--pg-transitions-duration-fast, 100ms),\n transform var(--pg-transitions-duration-fast, 100ms),\n opacity var(--pg-transitions-duration-fast, 100ms);\n}\n.pg-ai-panel__send:hover:not(:disabled) {\n background: var(--pg-colors-primary-hover, #1d4ed8);\n transform: scale(1.08);\n}\n.pg-ai-panel__send:disabled {\n background: var(--pg-colors-text-disabled, #94a3b8);\n opacity: 0.5;\n cursor: default;\n}\n\n";
|
|
9
|
+
//# sourceMappingURL=photon-ai.css.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"photon-ai.css.d.ts","sourceRoot":"","sources":["../../../src/styles/base/photon-ai.css.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,0iMA+LvB,CAAC"}
|