@freegridjs/core 1.9.1 → 1.9.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.
@@ -152,6 +152,8 @@ interface ColumnDef {
152
152
  validate?: (value: unknown, row: Row) => true | string;
153
153
  /** Merge consecutive rows with the same value into one tall cell (or decide with a function). */
154
154
  merge?: boolean | ((a: unknown, b: unknown, rowA: Row, rowB: Row) => boolean);
155
+ /** Where the text of a vertically merged cell sits: 'top' (default), 'middle' or 'bottom' of the part of the block in view. */
156
+ mergeAlign?: 'top' | 'middle' | 'bottom';
155
157
  /** Let a long header label wrap onto more lines. */
156
158
  wrapHeaderText?: boolean;
157
159
  /** Rows this cell covers downwards (1 = itself). Takes precedence over `merge`. */
@@ -404,6 +406,9 @@ interface Messages {
404
406
  style: string;
405
407
  wholeRow: string;
406
408
  count: string;
409
+ /** Alignment picker label and its choices ('none' keeps the column's alignment). */
410
+ align: string;
411
+ aligns: Record<'none' | 'left' | 'center' | 'right', string>;
407
412
  types: Record<ConditionalFormatType, string>;
408
413
  ops: {
409
414
  notBetween: string;
@@ -561,6 +566,8 @@ interface CellStyle {
561
566
  bold?: boolean;
562
567
  italic?: boolean;
563
568
  strike?: boolean;
569
+ /** Horizontal alignment of matching cells, over the column's own align (other values are ignored). */
570
+ align?: 'left' | 'center' | 'right';
564
571
  }
565
572
  type ConditionalFormatType = 'value' | 'formula' | 'top' | 'bottom' | 'aboveAverage' | 'belowAverage' | 'duplicate' | 'unique' | 'dataBar' | 'colorScale' | 'iconSet';
566
573
  type ConditionalOp = 'eq' | 'ne' | 'gt' | 'gte' | 'lt' | 'lte' | 'between' | 'notBetween' | 'contains' | 'notContains' | 'startsWith' | 'endsWith' | 'blank' | 'notBlank';
@@ -833,6 +840,12 @@ interface GridOptions {
833
840
  overflowTooltip?: boolean;
834
841
  /** Boxes under the header that filter as you type: text contains; numbers >10, <=5, 10~20; dates >2026-01-01; a list for set columns. */
835
842
  filterRow?: boolean;
843
+ /**
844
+ * With `merge` columns, sorting only reorders rows inside each merged block; the blocks stay where they are.
845
+ * Blocks come from the merge columns that are not being sorted by (the smallest block wins when merges nest).
846
+ * Ignored with a datasource and while rows are grouped, pivoted or shown as a tree. Default false.
847
+ */
848
+ sortWithinMerges?: boolean;
836
849
  /** A pinned column numbering the data rows 1, 2, 3… (continues across pages). Click a number to select the row. */
837
850
  rowNumbers?: boolean | {
838
851
  width?: number;
@@ -1112,6 +1125,9 @@ interface GridApi {
1112
1125
  getXlsxSheet(options?: ExportOptions): XlsxSheet;
1113
1126
  setDensity(density: 'compact' | 'normal' | 'comfortable'): void;
1114
1127
  getDensity(): 'compact' | 'normal' | 'comfortable';
1128
+ /** Turn `sortWithinMerges` on or off; the rows are sorted again at once. */
1129
+ setSortWithinMerges(on: boolean): void;
1130
+ getSortWithinMerges(): boolean;
1115
1131
  /** Show the 'loading' or 'noRows' overlay yourself (for example while your own request runs); null goes back to automatic. */
1116
1132
  showOverlay(kind: 'loading' | 'noRows' | null): void;
1117
1133
  /** Print the rows as a table (current sort and filters, group rows and summary rows) on the paper you choose. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@freegridjs/core",
3
- "version": "1.9.1",
3
+ "version": "1.9.3",
4
4
  "description": "FreeGrid — a fast data grid for the web: virtual scrolling, grouping, pivot, charts, Excel export, 7 languages. Free core; paid features free with a personal key.",
5
5
  "license": "SEE LICENSE IN LICENSE",
6
6
  "type": "module",