@@ -22,51 +22,14 @@ $root: ".widget-datagrid";
2222 background-color : var (--bg-color-secondary , $bg-color-secondary );
2323 border-width : 0 ;
2424 border-color : var (--grid-border-color , $grid-border-color );
25- padding : 0 var (--spacing-medium , $spacing-medium );
25+ padding : var (--spacing-medium , $spacing-medium );
2626 top : 0 ;
2727 min-width : 0 ;
2828 position : relative ;
2929 }
3030 }
3131
3232 .th {
33- & .dragging {
34- opacity : 0.5 ;
35- & .dragging-over-self {
36- opacity : 0.8 ;
37- }
38- }
39-
40- & .drop-after :after ,
41- & .drop-before :after {
42- content : " " ;
43- position : absolute ;
44- top : 0 ;
45- height : 100% ;
46- width : var (--spacing-smaller , $spacing-smaller );
47- background-color : var (--brand-primary , $dragging-color-effect );
48-
49- z-index : 1 ;
50- }
51-
52- & .drop-before {
53- & :after {
54- left : 0 ;
55- }
56- & :not (:first-child ):after {
57- transform : translateX (-50% );
58- }
59- }
60-
61- & .drop-after {
62- & :after {
63- right : 0 ;
64- }
65- & :not (:last-child ):after {
66- transform : translateX (50% );
67- }
68- }
69-
7033 /* Clickable column header (Sortable) */
7134 .clickable {
7235 cursor : pointer ;
@@ -78,6 +41,8 @@ $root: ".widget-datagrid";
7841 align-self : stretch ;
7942 cursor : col-resize ;
8043 margin-right : -12px ;
44+ margin-top : calc (0px - var (--spacing-medium , 16px ));
45+ margin-bottom : calc (0px - var (--spacing-medium , 16px ));
8146
8247 & :hover .column-resizer-bar {
8348 background-color : var (--brand-primary , $brand-primary );
@@ -92,24 +57,31 @@ $root: ".widget-datagrid";
9257 }
9358 }
9459
60+ & .locked-drag-active {
61+ z-index : 2 ;
62+ }
63+
64+ & .dragging-over-self {
65+ opacity : 0.25 ;
66+ }
67+
9568 /* Drag handle */
9669 .drag-handle {
9770 cursor : grab ;
9871 pointer-events : auto ;
9972 position : relative ;
100- padding : 4 px ;
101- // margin-inline-end: 4px ;
73+ width : var ( --spacing-medium , $spacing-medium ) ;
74+ padding : 0 ;
10275 flex-grow : 0 ;
10376 flex-shrink : 0 ;
10477 display : flex ;
10578 justify-content : center ;
106- align-self : normal ;
79+ align-self : center ;
10780 z-index : 1 ;
10881 opacity : 0 ;
10982 transition : opacity 0.15s ease ;
11083
11184 & :hover {
112- // background-color: var(--brand-primary-50, $brand-light);
11385 svg {
11486 color : var (--brand-primary , $brand-primary );
11587 }
@@ -120,14 +92,12 @@ $root: ".widget-datagrid";
12092 & :focus-visible {
12193 opacity : 1 ;
12294 }
123- svg {
95+ > svg {
12496 margin : 0 ;
125- width : 8px ;
12697 }
12798 }
12899
129- & :hover .drag-handle ,
130- & :focus-within .drag-handle {
100+ & :hover .drag-handle {
131101 opacity : 1 ;
132102 }
133103
@@ -136,9 +106,19 @@ $root: ".widget-datagrid";
136106 background-color : var (--brand-primary-50 , $brand-light );
137107 }
138108
139- /* Remove left padding when drag handle is present */
140- & :has (.drag-handle ) {
141- padding-left : 0 ;
109+ /* Drag preview (dnd-kit) should look like hovered header */
110+ & .drag-preview {
111+ background-color : var (--brand-primary-50 , $brand-light );
112+ box-shadow : 0 4px 4px 0 rgba (0 , 0 , 0 , 0.25 );
113+ border : 1px solid var (--gray-light , $gray-light );
114+
115+ .drag-handle {
116+ opacity : 1 ;
117+
118+ svg {
119+ color : var (--brand-primary , $brand-primary );
120+ }
121+ }
142122 }
143123
144124 /* Content of the column header */
@@ -148,7 +128,6 @@ $root: ".widget-datagrid";
148128 flex-grow : 1 ;
149129 align-self : stretch ;
150130 min-width : 0 ;
151- padding : var (--spacing-small , $spacing-small ) 0 ;
152131
153132 & :not (:has (.filter )) {
154133 .column-header {
@@ -164,7 +143,12 @@ $root: ".widget-datagrid";
164143 align-items : baseline ;
165144 font-weight : 600 ;
166145
167- span {
146+ .column-caption {
147+ user-select : text ;
148+ cursor : text ;
149+ }
150+
151+ span :not (.drag-handle ) {
168152 min-width : 0 ;
169153 flex-grow : 1 ;
170154 text-overflow : ellipsis ;
@@ -174,26 +158,56 @@ $root: ".widget-datagrid";
174158 }
175159
176160 svg {
177- margin-left : 8px ;
161+ margin-inline-start : 8px ;
178162 flex : 0 0 var (--btn-font-size , $btn-font-size );
179163 color : var (--gray-dark , $gray-dark );
180164 height : var (--btn-font-size , $btn-font-size );
181165 align-self : center ;
182166 }
183167
168+ .sort-button {
169+ background : none ;
170+ border : none ;
171+ padding : 0 ;
172+ cursor : pointer ;
173+ display : flex ;
174+ align-items : center ;
175+ font-size : inherit ;
176+ color : inherit ;
177+ height : 100% ;
178+
179+ & :focus:not (:focus-visible ) {
180+ outline : none ;
181+ }
182+
183+ & :focus-visible {
184+ outline : 1px solid var (--brand-primary , $brand-primary );
185+ }
186+ }
187+
184188 & :focus:not (:focus-visible ) {
185189 outline : none ;
186190 }
187191
188192 & :focus-visible {
189193 outline : 1px solid var (--brand-primary , $brand-primary );
190194 }
195+
196+ & :has (.drag-handle ) {
197+ margin-inline-start : calc (var (--spacing-medium , 16px ) * -1 + 1px );
198+ .drag-handle svg {
199+ flex : none ;
200+ margin : 0 ;
201+ }
202+ }
191203 }
192204
193205 /* Header filter */
194206 .filter {
195207 display : flex ;
196- margin-top : 4px ;
208+ > * {
209+ margin-top : 4px ;
210+ }
197211 > .form-group {
198212 margin-bottom : 0 ;
199213 }
@@ -351,6 +365,12 @@ $root: ".widget-datagrid";
351365 }
352366}
353367
368+ .table-compact .table .th :hover .column-header :has (.drag-handle ),
369+ .table-compact .table .th.drag-preview .column-header :has (.drag-handle ) {
370+ margin-inline-start : 0 ;
371+ transition : margin-inline-start 0.2s ease ;
372+ }
373+
354374:where(.table .th .filter input :not ([type = " checkbox" ])) {
355375 font-weight : normal ;
356376 flex-grow : 1 ;
0 commit comments