@freegridjs/core 1.9.4 → 1.10.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.
@@ -101,7 +101,8 @@
101
101
  .fg-summary-label { color: var(--fg-muted); }
102
102
  .fg-overlay { position: absolute; left: 0; right: 0; bottom: 0; display: grid; place-items: center; color: var(--fg-muted); pointer-events: none; }
103
103
  .fg-menu {
104
- position: fixed; z-index: 10000; width: 248px; padding: 6px; border-radius: 10px; overflow: auto; overscroll-behavior: contain;
104
+ /* border-box: the max-height set from the window size includes padding and border */
105
+ position: fixed; z-index: 10000; box-sizing: border-box; width: 262px; max-width: calc(100vw - 8px); padding: 6px; border-radius: 10px; overflow: auto; overscroll-behavior: contain;
105
106
  font: var(--fg-font-size)/1.4 var(--fg-font); color: var(--fg-fg); background: var(--fg-popup-bg);
106
107
  border: 1px solid var(--fg-border); box-shadow: var(--fg-shadow);
107
108
  }
@@ -133,7 +134,7 @@
133
134
  .fg-btn-primary { background: var(--fg-accent); border-color: var(--fg-accent); color: var(--fg-accent-fg); }
134
135
  .fg-btn-primary:hover { background: var(--fg-accent); filter: brightness(1.08); }
135
136
  .fg-sidebar { display: flex; flex: none; border-left: 1px solid var(--fg-border); background: var(--fg-header-bg); }
136
- .fg-sidebar-panel { width: 240px; display: flex; flex-direction: column; border-right: 1px solid var(--fg-border); background: var(--fg-bg); }
137
+ .fg-sidebar-panel { width: min(240px, 50vw); display: flex; flex-direction: column; border-right: 1px solid var(--fg-border); background: var(--fg-bg); }
137
138
  .fg-sidebar-tabs { width: 28px; display: flex; flex-direction: column; }
138
139
  .fg-sidebar-tab {
139
140
  writing-mode: vertical-rl; padding: 12px 0; border: 0; background: none; color: var(--fg-header-fg);
@@ -151,7 +152,7 @@
151
152
  }
152
153
  .fg-sidebar-open .fg-sidebar-tab:focus-visible { outline: 2px solid var(--fg-accent); outline-offset: -2px; }
153
154
  .fg-chooser { display: flex; flex-direction: column; gap: 6px; padding: 8px; min-height: 0; flex: 1; }
154
- .fg-chooser-dialog { width: 280px; }
155
+ .fg-chooser-dialog { width: 294px; }
155
156
  .fg-chooser-dialog .fg-chooser { max-height: 420px; }
156
157
  .fg-chooser-head { display: flex; align-items: center; justify-content: space-between; padding: 2px 2px 0 0; }
157
158
  .fg-chooser-close { width: 26px; height: 26px; border: 0; border-radius: 6px; background: none; color: var(--fg-muted); font-size: 18px; cursor: pointer; }
@@ -235,7 +236,7 @@
235
236
  /* ── cell ranges, context menu, toast ───────────────────────────────── */
236
237
  .fg-cell-range { background: var(--fg-range-bg, color-mix(in srgb, var(--fg-accent) 13%, transparent)); }
237
238
  .fg-range-dragging, .fg-range-dragging * { user-select: none; cursor: cell; }
238
- .fg-context-menu { width: 236px; }
239
+ .fg-context-menu { width: 250px; }
239
240
  .fg-cm-item { display: flex; align-items: center; gap: 12px; width: 100%; }
240
241
  .fg-cm-item:disabled { opacity: .45; cursor: default; background: none; }
241
242
  .fg-cm-label { flex: 1; }
@@ -410,9 +411,9 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
410
411
  .fg-free-badge {
411
412
  position: absolute; right: 22px; bottom: 22px; z-index: 30; display: inline-flex; align-items: center; gap: 6px;
412
413
  padding: 4px 10px 4px 6px; border-radius: 999px; background: rgba(255, 255, 255, .92); border: 1px solid rgba(14, 23, 38, .15);
413
- box-shadow: 0 2px 8px rgba(14, 23, 38, .12); color: #0E1726; font: 600 11px/1.2 var(--fg-font); text-decoration: none; opacity: .9;
414
+ box-shadow: 0 2px 8px rgba(14, 23, 38, .12); color: #0E1726; font: 600 11px/1.2 var(--fg-font); text-decoration: none; opacity: .45;
415
+ pointer-events: none; user-select: none;
414
416
  }
415
- .fg-free-badge:hover { opacity: 1; }
416
417
  .fg-free-badge svg { flex: none; }
417
418
 
418
419
  /* column spans */
@@ -495,6 +496,24 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
495
496
  .fg-filter-join { display: flex; gap: 14px; padding: 2px 2px 0; font-size: .92em; color: var(--fg-muted); }
496
497
  .fg-filter-join label { display: flex; align-items: center; gap: 4px; cursor: pointer; }
497
498
 
499
+ /* advanced filter builder: one condition per line (column, operator, value, ×) */
500
+ .fg-filter-builder { width: 520px; display: flex; flex-direction: column; gap: 8px; }
501
+ .fg-filter-builder .fg-filter-join { padding: 0 4px; }
502
+ .fg-fb-list { display: flex; flex-direction: column; border-top: 1px solid var(--fg-border); border-bottom: 1px solid var(--fg-border); max-height: 50vh; overflow: auto; }
503
+ .fg-fb-list:empty { display: none; }
504
+ .fg-fb-row { display: flex; align-items: center; gap: 6px; padding: 6px 2px; }
505
+ .fg-fb-row + .fg-fb-row { border-top: 1px dashed var(--fg-border); }
506
+ .fg-fb-row > select, .fg-fb-row > input { flex: 1 1 0; min-width: 0; }
507
+ .fg-fb-row > .fg-fb-col, .fg-fb-row > .fg-fb-value { flex-grow: 1.3; }
508
+ .fg-fb-remove { flex: none; }
509
+ .fg-fb-group-label { flex: 1; min-width: 0; padding: 0 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fg-muted); }
510
+ .fg-fb-add { align-self: flex-start; }
511
+ @media (max-width: 560px) {
512
+ /* narrow screens: the column on its own line, operator and value under it */
513
+ .fg-fb-row { flex-wrap: wrap; }
514
+ .fg-fb-row > .fg-fb-col { flex-basis: calc(100% - 32px); }
515
+ }
516
+
498
517
  /* autoHeight: grow with the rows */
499
518
  .fg-root.fg-auto-height { height: auto; }
500
519
  .fg-auto-height .fg-main, .fg-auto-height .fg-grid { flex: none; }
@@ -512,7 +531,7 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
512
531
  /* conditional formats */
513
532
  .fg-cf-bar { background-image: linear-gradient(to right, transparent var(--fg-bar-from), color-mix(in srgb, var(--fg-bar-color) 38%, transparent) var(--fg-bar-from), color-mix(in srgb, var(--fg-bar-color) 38%, transparent) var(--fg-bar-to), transparent var(--fg-bar-to)); background-repeat: no-repeat; background-size: 100% 70%; background-position: 0 50%; }
514
533
  .fg-cf-icon { display: inline-block; margin-inline-end: 6px; font-size: .9em; line-height: 1; }
515
- .fg-cf-dialog { width: 340px; }
534
+ .fg-cf-dialog { width: 354px; }
516
535
  .fg-cf-list { display: flex; flex-direction: column; gap: 4px; margin: 6px 0 10px; }
517
536
  .fg-cf-rule { display: flex; align-items: center; gap: 8px; padding: 5px 6px; border: 1px solid var(--fg-border); border-radius: 6px; }
518
537
  .fg-cf-rule-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@@ -525,7 +544,7 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
525
544
  .fg-cf-empty { color: var(--fg-muted); padding: 4px 0; }
526
545
 
527
546
  /* AI assistant */
528
- .fg-ai-panel { width: 360px; display: flex; flex-direction: column; gap: 8px; }
547
+ .fg-ai-panel { width: 374px; display: flex; flex-direction: column; gap: 8px; }
529
548
  .fg-ai-log { display: flex; flex-direction: column; gap: 6px; max-height: 300px; overflow-y: auto; }
530
549
  .fg-ai-log:empty { display: none; }
531
550
  .fg-ai-msg { padding: 7px 10px; border-radius: 10px; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; max-width: 92%; }