@kanunilabs/datagrid-react 1.8.2 → 1.8.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/dist/styles.css CHANGED
@@ -679,6 +679,48 @@
679
679
  font-size: 11px;
680
680
  }
681
681
 
682
+ /* The search box's own refusal (`toolbar.search.validate`), right after it. */
683
+ .kanuni-datagrid-toolbar-search-error {
684
+ color: var(--dg-danger-text);
685
+ font-size: 11px;
686
+ }
687
+
688
+ .kanuni-datagrid-toolbar-search[aria-invalid='true'] {
689
+ border-color: var(--dg-danger);
690
+ }
691
+
692
+ /* An app's own button (GridToolbarButton / toolbarButton()), drawn like the
693
+ grid's commands wherever it sits: the toolbar's rule above reaches only its
694
+ DIRECT children, and the status bar has none. */
695
+ .kanuni-datagrid-app-button {
696
+ display: inline-flex;
697
+ align-items: center;
698
+ justify-content: center;
699
+ gap: 5px;
700
+ padding: 3px 10px;
701
+ border: 1px solid var(--dg-border-strong);
702
+ border-radius: var(--dg-radius-control);
703
+ background: var(--dg-surface);
704
+ color: inherit;
705
+ font: inherit;
706
+ font-size: var(--dg-control-font-size);
707
+ cursor: pointer;
708
+ }
709
+
710
+ .kanuni-datagrid-app-button.kanuni-datagrid-toolbar-icon-button {
711
+ padding: 0;
712
+ }
713
+
714
+ .kanuni-datagrid-app-button:hover:not([aria-disabled='true']) {
715
+ background: var(--dg-surface-hover);
716
+ }
717
+
718
+ /* Unavailable but still focusable, so its reason can be read. */
719
+ .kanuni-datagrid-app-button[aria-disabled='true'] {
720
+ opacity: 0.6;
721
+ cursor: not-allowed;
722
+ }
723
+
682
724
  /*
683
725
  * The same message, but floating where a context menu just was — the cell
684
726
  * menu's Export entries have nowhere else to report a missing optional peer.
@@ -1886,6 +1928,17 @@
1886
1928
  flex: none;
1887
1929
  }
1888
1930
 
1931
+ /* A row of a server's list whose piece has not arrived: the slot is held (the
1932
+ scroll bar describes the whole list), the value is not known yet. */
1933
+ .kanuni-datagrid-filter-item--pending {
1934
+ color: var(--dg-text-muted);
1935
+ cursor: default;
1936
+ }
1937
+
1938
+ .kanuni-datagrid-filter-item--pending:hover {
1939
+ background: transparent;
1940
+ }
1941
+
1889
1942
  .kanuni-datagrid-filter-item:hover,
1890
1943
  .kanuni-datagrid-filter-item--active {
1891
1944
  background: var(--dg-surface-hover);
@@ -2846,6 +2899,19 @@
2846
2899
  margin: 0 calc(var(--dg-cell-padding-x) * -1);
2847
2900
  }
2848
2901
 
2902
+ /* ...but the TEXT stays where the cell drew it. Widened to the cell's edges
2903
+ with only 4px of padding, the value jumped left by the cell padding as the
2904
+ editor opened; in row mode, with every cell open, no value lined up with the
2905
+ column above it (2026-10-19, content session). The date editor's own input
2906
+ keeps its 4px, so its wrapper makes up the rest. */
2907
+ .kanuni-datagrid-root .kanuni-datagrid-cell > .kanuni-datagrid-editor:not([type='checkbox']) {
2908
+ padding-inline: var(--dg-cell-padding-x);
2909
+ }
2910
+
2911
+ .kanuni-datagrid-root .kanuni-datagrid-cell > .kanuni-datagrid-date-editor {
2912
+ padding-inline: max(0px, calc(var(--dg-cell-padding-x) - 4px)) 0;
2913
+ }
2914
+
2849
2915
  /* In a WRAPPED cell the editor takes the LINE BOX, not the row height.
2850
2916
  A wrapping cell is as tall as its own text: one line of it is
2851
2917
  `padding-block x2 + --dg-wrap-line-height`, which is shorter than a standard
@@ -2883,6 +2949,38 @@
2883
2949
  background: var(--dg-surface);
2884
2950
  }
2885
2951
 
2952
+ /* Row mode opens every cell of the row at once and marks none of them
2953
+ `--editing`, so the focused one kept its ring around the underlined editor —
2954
+ the double rectangle above, on one cell of the row (2026-10-19, content
2955
+ session). Any cell that holds an editor drops the ring. */
2956
+ .kanuni-datagrid-root .kanuni-datagrid-cell--focused:has(> .kanuni-datagrid-editor),
2957
+ .kanuni-datagrid-root .kanuni-datagrid-cell--focused:has(> .kanuni-datagrid-date-editor) {
2958
+ outline: none;
2959
+ }
2960
+
2961
+ /* A number is typed where it is read: right-aligned, as the cell shows it.
2962
+ Left-aligned editors made the value jump across the column the moment the
2963
+ cell opened, and in row mode two number editors side by side read as one
2964
+ field. */
2965
+ .kanuni-datagrid-root .kanuni-datagrid-cell--number > .kanuni-datagrid-editor {
2966
+ text-align: right;
2967
+ }
2968
+
2969
+ /* Chrome keeps ~15px at the end of a number input for its spin buttons, shown
2970
+ or not, so a right-aligned value still stopped short of the column's
2971
+ numbers. In a row-high cell the arrows are too small to use anyway; the
2972
+ keyboard's arrow keys move between cells here. */
2973
+ .kanuni-datagrid-root input.kanuni-datagrid-editor[type='number'] {
2974
+ appearance: textfield;
2975
+ -moz-appearance: textfield;
2976
+ }
2977
+
2978
+ .kanuni-datagrid-root input.kanuni-datagrid-editor[type='number']::-webkit-inner-spin-button,
2979
+ .kanuni-datagrid-root input.kanuni-datagrid-editor[type='number']::-webkit-outer-spin-button {
2980
+ -webkit-appearance: none;
2981
+ margin: 0;
2982
+ }
2983
+
2886
2984
  .kanuni-datagrid-root input.kanuni-datagrid-editor[type='checkbox'] {
2887
2985
  width: auto;
2888
2986
  height: auto;
@@ -3366,6 +3464,51 @@ input[type='checkbox'].kanuni-datagrid-edit-form-input {
3366
3464
  outline-offset: -1px;
3367
3465
  }
3368
3466
 
3467
+ /* The date and lookup editors in a form are the CELL editors (one control per
3468
+ column), whose look is an underline sized to a row. In a form that read as a
3469
+ different kind of field from its boxed neighbours (2026-10-19, content
3470
+ session), so here they take the form's box: on the date editor's wrapper,
3471
+ which holds the calendar button too, and on a lookup's input directly. */
3472
+ .kanuni-datagrid-root .kanuni-datagrid-edit-form-lookup > .kanuni-datagrid-editor,
3473
+ .kanuni-datagrid-edit-form-lookup > .kanuni-datagrid-date-editor {
3474
+ height: auto;
3475
+ padding: 4px 6px;
3476
+ border: 1px solid var(--dg-border-strong);
3477
+ border-radius: var(--dg-radius-control);
3478
+ background: var(--dg-surface);
3479
+ }
3480
+
3481
+ .kanuni-datagrid-root .kanuni-datagrid-edit-form-lookup > .kanuni-datagrid-date-editor > .kanuni-datagrid-editor {
3482
+ height: auto;
3483
+ padding: 0;
3484
+ border: none;
3485
+ }
3486
+
3487
+ .kanuni-datagrid-root .kanuni-datagrid-edit-form-lookup > .kanuni-datagrid-editor:focus,
3488
+ .kanuni-datagrid-edit-form-lookup > .kanuni-datagrid-date-editor:focus-within {
3489
+ outline: 2px solid var(--dg-primary);
3490
+ outline-offset: -1px;
3491
+ }
3492
+
3493
+ /* A field the user cannot change must not look like one they can.
3494
+ `editable: false` columns were drawn as disabled inputs with the same
3495
+ surface, border and text as the open ones: readers clicked them and nothing
3496
+ happened (2026-10-19, content session). Recessed surface, muted text, a
3497
+ lighter border and the not-allowed cursor — the value stays readable. */
3498
+ .kanuni-datagrid-edit-form-input:disabled,
3499
+ .kanuni-datagrid-root .kanuni-datagrid-edit-form-lookup > .kanuni-datagrid-editor:disabled,
3500
+ .kanuni-datagrid-edit-form-lookup > .kanuni-datagrid-date-editor:has(.kanuni-datagrid-editor:disabled) {
3501
+ border-color: var(--dg-border);
3502
+ background: var(--dg-surface-header);
3503
+ color: var(--dg-text-muted);
3504
+ cursor: not-allowed;
3505
+ }
3506
+
3507
+ .kanuni-datagrid-root .kanuni-datagrid-edit-form-lookup .kanuni-datagrid-date-editor .kanuni-datagrid-editor:disabled {
3508
+ color: var(--dg-text-muted);
3509
+ cursor: not-allowed;
3510
+ }
3511
+
3369
3512
  .kanuni-datagrid-edit-form-field[data-invalid] .kanuni-datagrid-edit-form-input {
3370
3513
  border-color: var(--dg-danger);
3371
3514
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kanunilabs/datagrid-react",
3
- "version": "1.8.2",
3
+ "version": "1.8.3",
4
4
  "description": "High-performance React data grid — virtualized rows and columns, sticky pinned columns, sorting, filtering and theming",
5
5
  "keywords": [
6
6
  "react",
@@ -57,7 +57,7 @@
57
57
  "access": "public"
58
58
  },
59
59
  "dependencies": {
60
- "@kanunilabs/datagrid-core": "1.10.2"
60
+ "@kanunilabs/datagrid-core": "1.10.3"
61
61
  },
62
62
  "peerDependencies": {
63
63
  "react": ">=18.0.0",