@freegridjs/core 1.9.5 → 1.11.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/README.md +2 -2
- package/dist/cdn/freegrid.css +35 -25
- package/dist/cdn/freegrid.esm.js +24 -25
- package/dist/cdn/freegrid.min.js +24 -25
- package/dist/index.d.ts +3 -3
- package/dist/index.js +538 -536
- package/dist/locales/de.d.ts +1 -1
- package/dist/locales/de.js +2 -1
- package/dist/locales/en.d.ts +1 -1
- package/dist/locales/en.js +2 -1
- package/dist/locales/es.d.ts +1 -1
- package/dist/locales/es.js +2 -1
- package/dist/locales/fr.d.ts +1 -1
- package/dist/locales/fr.js +2 -1
- package/dist/locales/id.d.ts +1 -1
- package/dist/locales/id.js +2 -1
- package/dist/locales/it.d.ts +1 -1
- package/dist/locales/it.js +2 -1
- package/dist/locales/ja.d.ts +1 -1
- package/dist/locales/ja.js +2 -1
- package/dist/locales/ko.d.ts +1 -1
- package/dist/locales/ko.js +2 -1
- package/dist/locales/pt-BR.d.ts +1 -1
- package/dist/locales/pt-BR.js +2 -1
- package/dist/locales/ru.d.ts +1 -1
- package/dist/locales/ru.js +2 -1
- package/dist/locales/th.d.ts +1 -1
- package/dist/locales/th.js +2 -1
- package/dist/locales/vi.d.ts +1 -1
- package/dist/locales/vi.js +2 -1
- package/dist/locales/zh-CN.d.ts +1 -1
- package/dist/locales/zh-CN.js +2 -1
- package/dist/locales/zh-TW.d.ts +1 -1
- package/dist/locales/zh-TW.js +2 -1
- package/dist/styles.css +35 -25
- package/dist/{types-CIOv3MoN.d.ts → types-8dux3w2p.d.ts} +28 -142
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -54,8 +54,8 @@ printing, themes, languages) is free for everyone, companies included.
|
|
|
54
54
|
|
|
55
55
|
Paid features need a key after a 30-day trial per domain: row grouping and aggregation, pivot, charts,
|
|
56
56
|
cell range selection, range copy and paste, fill handle, Excel and PDF export, workbook, server-side groups,
|
|
57
|
-
advanced filter, side bar panels, context menu, summary rows, formulas, find, conditional formatting
|
|
58
|
-
|
|
57
|
+
advanced filter, side bar panels, context menu, summary rows, formulas, find, conditional formatting
|
|
58
|
+
and merged cells. Development hosts (localhost, private networks, .local, .test) always
|
|
59
59
|
have every feature.
|
|
60
60
|
|
|
61
61
|
- Personal, educational and non-commercial projects: a free personal key, valid 6 months and renewable
|
package/dist/cdn/freegrid.css
CHANGED
|
@@ -55,8 +55,14 @@
|
|
|
55
55
|
margin-left: auto; display: inline-grid; place-items: center; width: 22px; height: 22px; flex: none;
|
|
56
56
|
border: 0; border-radius: 5px; background: none; color: var(--fg-muted); cursor: pointer; opacity: 0; transition: opacity .12s;
|
|
57
57
|
}
|
|
58
|
+
/* the hidden button takes no room, so narrow columns keep their label; on hover it shows over the label's end.
|
|
59
|
+
An active filter's button stays in the row, always visible. */
|
|
60
|
+
.fg-menu-btn:not(.fg-filter-active) {
|
|
61
|
+
position: absolute; inset-inline-end: 6px; top: 50%; transform: translateY(-50%); margin: 0; background: var(--fg-header-bg);
|
|
62
|
+
}
|
|
58
63
|
.fg-header-cell.fg-align-right .fg-menu-btn { margin-left: 0; margin-right: auto; }
|
|
59
|
-
.fg-header-cell
|
|
64
|
+
.fg-header-cell.fg-align-right .fg-menu-btn:not(.fg-filter-active) { inset-inline-end: auto; inset-inline-start: 6px; }
|
|
65
|
+
.fg-header-cell:hover .fg-menu-btn, .fg-menu-btn:focus-visible, .fg-menu-btn.fg-filter-active { opacity: 1; }
|
|
60
66
|
.fg-menu-btn:hover { background: var(--fg-row-hover); color: var(--fg-fg); }
|
|
61
67
|
.fg-menu-btn.fg-filter-active { color: var(--fg-accent); }
|
|
62
68
|
.fg-resize { position: absolute; right: 0; top: 0; bottom: 0; width: 8px; cursor: col-resize; z-index: 1; }
|
|
@@ -101,7 +107,8 @@
|
|
|
101
107
|
.fg-summary-label { color: var(--fg-muted); }
|
|
102
108
|
.fg-overlay { position: absolute; left: 0; right: 0; bottom: 0; display: grid; place-items: center; color: var(--fg-muted); pointer-events: none; }
|
|
103
109
|
.fg-menu {
|
|
104
|
-
|
|
110
|
+
/* border-box: the max-height set from the window size includes padding and border */
|
|
111
|
+
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
112
|
font: var(--fg-font-size)/1.4 var(--fg-font); color: var(--fg-fg); background: var(--fg-popup-bg);
|
|
106
113
|
border: 1px solid var(--fg-border); box-shadow: var(--fg-shadow);
|
|
107
114
|
}
|
|
@@ -133,7 +140,7 @@
|
|
|
133
140
|
.fg-btn-primary { background: var(--fg-accent); border-color: var(--fg-accent); color: var(--fg-accent-fg); }
|
|
134
141
|
.fg-btn-primary:hover { background: var(--fg-accent); filter: brightness(1.08); }
|
|
135
142
|
.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); }
|
|
143
|
+
.fg-sidebar-panel { width: min(240px, 50vw); display: flex; flex-direction: column; border-right: 1px solid var(--fg-border); background: var(--fg-bg); }
|
|
137
144
|
.fg-sidebar-tabs { width: 28px; display: flex; flex-direction: column; }
|
|
138
145
|
.fg-sidebar-tab {
|
|
139
146
|
writing-mode: vertical-rl; padding: 12px 0; border: 0; background: none; color: var(--fg-header-fg);
|
|
@@ -151,7 +158,7 @@
|
|
|
151
158
|
}
|
|
152
159
|
.fg-sidebar-open .fg-sidebar-tab:focus-visible { outline: 2px solid var(--fg-accent); outline-offset: -2px; }
|
|
153
160
|
.fg-chooser { display: flex; flex-direction: column; gap: 6px; padding: 8px; min-height: 0; flex: 1; }
|
|
154
|
-
.fg-chooser-dialog { width:
|
|
161
|
+
.fg-chooser-dialog { width: 294px; }
|
|
155
162
|
.fg-chooser-dialog .fg-chooser { max-height: 420px; }
|
|
156
163
|
.fg-chooser-head { display: flex; align-items: center; justify-content: space-between; padding: 2px 2px 0 0; }
|
|
157
164
|
.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 +242,7 @@
|
|
|
235
242
|
/* ── cell ranges, context menu, toast ───────────────────────────────── */
|
|
236
243
|
.fg-cell-range { background: var(--fg-range-bg, color-mix(in srgb, var(--fg-accent) 13%, transparent)); }
|
|
237
244
|
.fg-range-dragging, .fg-range-dragging * { user-select: none; cursor: cell; }
|
|
238
|
-
.fg-context-menu { width:
|
|
245
|
+
.fg-context-menu { width: 250px; }
|
|
239
246
|
.fg-cm-item { display: flex; align-items: center; gap: 12px; width: 100%; }
|
|
240
247
|
.fg-cm-item:disabled { opacity: .45; cursor: default; background: none; }
|
|
241
248
|
.fg-cm-label { flex: 1; }
|
|
@@ -410,9 +417,9 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
|
|
|
410
417
|
.fg-free-badge {
|
|
411
418
|
position: absolute; right: 22px; bottom: 22px; z-index: 30; display: inline-flex; align-items: center; gap: 6px;
|
|
412
419
|
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: .
|
|
420
|
+
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;
|
|
421
|
+
pointer-events: none; user-select: none;
|
|
414
422
|
}
|
|
415
|
-
.fg-free-badge:hover { opacity: 1; }
|
|
416
423
|
.fg-free-badge svg { flex: none; }
|
|
417
424
|
|
|
418
425
|
/* column spans */
|
|
@@ -495,9 +502,28 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
|
|
|
495
502
|
.fg-filter-join { display: flex; gap: 14px; padding: 2px 2px 0; font-size: .92em; color: var(--fg-muted); }
|
|
496
503
|
.fg-filter-join label { display: flex; align-items: center; gap: 4px; cursor: pointer; }
|
|
497
504
|
|
|
505
|
+
/* advanced filter builder: one condition per line (column, operator, value, ×) */
|
|
506
|
+
.fg-filter-builder { width: 520px; display: flex; flex-direction: column; gap: 8px; }
|
|
507
|
+
.fg-filter-builder .fg-filter-join { padding: 0 4px; }
|
|
508
|
+
.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; }
|
|
509
|
+
.fg-fb-list:empty { display: none; }
|
|
510
|
+
.fg-fb-row { display: flex; align-items: center; gap: 6px; padding: 6px 2px; }
|
|
511
|
+
.fg-fb-row + .fg-fb-row { border-top: 1px dashed var(--fg-border); }
|
|
512
|
+
.fg-fb-row > select, .fg-fb-row > input { flex: 1 1 0; min-width: 0; }
|
|
513
|
+
.fg-fb-row > .fg-fb-col, .fg-fb-row > .fg-fb-value { flex-grow: 1.3; }
|
|
514
|
+
.fg-fb-remove { flex: none; }
|
|
515
|
+
.fg-fb-group-label { flex: 1; min-width: 0; padding: 0 6px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--fg-muted); }
|
|
516
|
+
.fg-fb-add { align-self: flex-start; }
|
|
517
|
+
@media (max-width: 560px) {
|
|
518
|
+
/* narrow screens: the column on its own line, operator and value under it */
|
|
519
|
+
.fg-fb-row { flex-wrap: wrap; }
|
|
520
|
+
.fg-fb-row > .fg-fb-col { flex-basis: calc(100% - 32px); }
|
|
521
|
+
}
|
|
522
|
+
|
|
498
523
|
/* autoHeight: grow with the rows */
|
|
499
524
|
.fg-root.fg-auto-height { height: auto; }
|
|
500
|
-
|
|
525
|
+
/* only the height follows the rows: .fg-main still fills the width (the root is a flex row) */
|
|
526
|
+
.fg-auto-height .fg-grid { flex: none; }
|
|
501
527
|
.fg-auto-height .fg-body { flex: none; min-height: 0; }
|
|
502
528
|
.fg-auto-height .fg-body-pane-center { overflow-y: hidden; }
|
|
503
529
|
|
|
@@ -512,7 +538,7 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
|
|
|
512
538
|
/* conditional formats */
|
|
513
539
|
.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
540
|
.fg-cf-icon { display: inline-block; margin-inline-end: 6px; font-size: .9em; line-height: 1; }
|
|
515
|
-
.fg-cf-dialog { width:
|
|
541
|
+
.fg-cf-dialog { width: 354px; }
|
|
516
542
|
.fg-cf-list { display: flex; flex-direction: column; gap: 4px; margin: 6px 0 10px; }
|
|
517
543
|
.fg-cf-rule { display: flex; align-items: center; gap: 8px; padding: 5px 6px; border: 1px solid var(--fg-border); border-radius: 6px; }
|
|
518
544
|
.fg-cf-rule-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
@@ -524,19 +550,3 @@ textarea.fg-editor-control { padding-top: 8px; resize: none; }
|
|
|
524
550
|
.fg-cf-swatch[aria-pressed="true"] { outline: 2px solid var(--fg-accent); outline-offset: 1px; }
|
|
525
551
|
.fg-cf-empty { color: var(--fg-muted); padding: 4px 0; }
|
|
526
552
|
|
|
527
|
-
/* AI assistant */
|
|
528
|
-
.fg-ai-panel { width: 360px; display: flex; flex-direction: column; gap: 8px; }
|
|
529
|
-
.fg-ai-log { display: flex; flex-direction: column; gap: 6px; max-height: 300px; overflow-y: auto; }
|
|
530
|
-
.fg-ai-log:empty { display: none; }
|
|
531
|
-
.fg-ai-msg { padding: 7px 10px; border-radius: 10px; line-height: 1.45; white-space: pre-wrap; overflow-wrap: anywhere; max-width: 92%; }
|
|
532
|
-
.fg-ai-user { align-self: flex-end; background: var(--fg-accent); color: var(--fg-accent-fg); border-bottom-right-radius: 3px; }
|
|
533
|
-
.fg-ai-ai { align-self: flex-start; background: var(--fg-header-bg); border: 1px solid var(--fg-border); border-bottom-left-radius: 3px; }
|
|
534
|
-
.fg-ai-error { align-self: flex-start; color: #b91c1c; background: #fef2f2; border: 1px solid #fecaca; }
|
|
535
|
-
.fg-ai-wait { color: var(--fg-muted); }
|
|
536
|
-
.fg-ai-note { margin-top: 4px; font-size: .9em; color: var(--fg-muted); }
|
|
537
|
-
.fg-ai-undo { margin-top: 6px; height: 24px; padding: 0 10px; }
|
|
538
|
-
.fg-ai-form { display: flex; gap: 6px; align-items: flex-end; }
|
|
539
|
-
.fg-ai-input { flex: 1; resize: vertical; min-height: 40px; max-height: 140px; padding: 6px 8px; font: inherit; }
|
|
540
|
-
.fg-ai-tips { display: flex; flex-wrap: wrap; gap: 6px; }
|
|
541
|
-
.fg-ai-tip { border: 1px solid var(--fg-border); border-radius: 999px; background: none; color: inherit; font: inherit; font-size: .92em; padding: 3px 10px; cursor: pointer; }
|
|
542
|
-
.fg-ai-tip:hover { background: var(--fg-row-hover); }
|