@exmg/exm-grid 1.0.4 → 1.0.7

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.
@@ -1,387 +0,0 @@
1
- @use '@material/typography/mixins' as typography;
2
-
3
- @mixin sortable-col-padding() {
4
- padding-right: calc(var(--exm-table-th-sort-icon-height) + var(--exm-table-th-sort-margin-left));
5
- &.grid-col-number {
6
- padding-right: calc(
7
- var(--exm-table-th-sort-icon-height) + var(--exm-table-th-sort-margin-left) +
8
- var(--exm-table-col-number-padding-right)
9
- );
10
- }
11
- }
12
-
13
- @mixin table-layout-fixed() {
14
- &[data-table-layout='fixed'] {
15
- table-layout: fixed;
16
- td:not(.grid-checkbox-cell):not(.menu-cell) {
17
- overflow: hidden;
18
- white-space: nowrap;
19
- text-overflow: ellipsis;
20
- }
21
- th,
22
- td {
23
- &.grid-checkbox-cell {
24
- width: var(--exm-table-checkbox-cell-width);
25
- }
26
- &.no-ellipsis {
27
- text-overflow: initial;
28
- }
29
- }
30
- }
31
- }
32
-
33
- :host {
34
- @include typography.base;
35
- display: block;
36
-
37
- --exm-arrow-upward-url: url('/node_modules/@exmg/exm-grid/assets/arrow-upward.svg');
38
- --exm-table-card-width: var(--exm-theme-table-card-width, 100%);
39
- --exm-table-card-margin-bottom: var(--exm-theme-table-card-margin-bottom, 5px);
40
-
41
- --exm-table-color: var(--exm-theme-table-on-surface, var(--md-sys-color-on-surface-container));
42
- --exm-table-card-background-color: var(--exm-theme-table-surface, var(--md-sys-color-surface-container));
43
- --exm-table-row-divider-color: var(--exm-theme-table-row-divider-color, var(--md-sys-color-surface-variant));
44
-
45
- --exm-table-row-selected-color: var(--exm-theme-table-row-selected-color, var(--md-sys-color-on-secondary-container));
46
- --exm-table-row-selected-background-color: var(
47
- --exm-theme-table-row-selected-background-color,
48
- var(--md-sys-color-secondary-container)
49
- );
50
- --exm-table-row-hover-color: var(--exm-theme-table-row-hover-color, var(--md-sys-color-on-surface));
51
- --exm-table-row-hover-background-color: var(
52
- --exm-theme-table-row-hover-background-color,
53
- var(--md-sys-color-surface-container-highest)
54
- );
55
- --exm-table-row-dragged-background-color: var(
56
- --exm-theme-table-row-dragged-background-color,
57
- var(--md-sys-color-surface-container-low)
58
- );
59
- --exm-table-rows-expanded-divider-border: var(--exm-theme-table-rows-expanded-divider-border, none);
60
- --exm-table-rows-expanded-border: var(--exm-theme-table-rows-expanded-border, none);
61
- --exm-table-rows-expanded-background-color: var(
62
- --exm-theme-table-rows-expanded-background-color,
63
- var(--md-sys-color-surface-container-low)
64
- );
65
- --exm-table-rows-expanded-color: var(--exm-theme-table-rows-expanded-color, var(--md-sys-color-on-surface));
66
- --exm-table-th-color: var(--exm-theme-table-th-on-surface, var(--md-sys-color-on-surface-container));
67
- --exm-table-th-background-color: var(--exm-theme-table-th-surface, var(--md-sys-color-surface-container));
68
- --exm-table-th-sortable-hover-color: var(--exm-theme-table-th-sortable-hover-color, var(--md-sys-color-on-surface));
69
- --exm-table-columns-background-color: var(--exm-theme-table-columns-background-color, var(--md-sys-color-surface));
70
-
71
- --exm-table-th-height: var(--exm-theme-table-th-height, 48px);
72
- --exm-table-th-sort-margin-left: var(--exm-theme-table-th-sort-margin-left, 0px);
73
- --exm-table-td-height: var(--exm-theme-table-td-height, 48px);
74
- --exm-table-th-sort-icon-height: var(--exm-theme-table-th-sort-icon-height, 1em);
75
- --exm-table-th-sort-icon-width: var(--exm-theme-table-th-sort-icon-width, 1em);
76
-
77
- --exm-table-col-number-padding-right: var(--exm-theme-table-col-number-padding-right, 10px);
78
- --exm-table-checkbox-cell-width: var(--exm-theme-table-checkbox-cell-width, 24px);
79
-
80
- --exm-paper-combobox-selected-item-color: var(var(--md-sys-color-primary), #000000);
81
- --exm-paper-combobox-color: var(--md-sys-color-on-surface);
82
-
83
- /* Adjust toolbar to grid */
84
- --exm-table-toolbar-setting-position: var(--exm-theme-table-toolbar-setting-position, absolute);
85
- /* End Adjust toolbar to grid */
86
- }
87
-
88
- ::slotted([slot='pagination']) {
89
- display: flex;
90
- align-items: center;
91
- justify-content: flex-end;
92
- // overflow-x: auto;
93
- border-top: 1px solid var(--exm-table-row-divider-color);
94
- }
95
-
96
- ::slotted([slot='toolbar']) {
97
- display: block;
98
- }
99
-
100
- .table-card-container {
101
- @include typography.base;
102
- border: none;
103
- width: var(--exm-table-card-width);
104
- margin: 0;
105
- padding: 0;
106
- box-shadow: var(--exm-theme-table-box-shadow, none);
107
- }
108
- :host([with-toolbar]) {
109
- .table-card {
110
- border-top: 1px solid var(--exm-table-row-divider-color);
111
- }
112
- }
113
- .table-card {
114
- @include typography.base;
115
- border: none;
116
- border-bottom-left-radius: 4px;
117
- border-bottom-right-radius: 4px;
118
- width: var(--exm-table-card-width);
119
- background-color: var(--exm-table-card-background-color);
120
- margin-bottom: var(--exm-table-card-margin-bottom);
121
- border-top-left-radius: var(--exm-theme-table-radius, var(--exm-surface-border-radius, 16px));
122
- border-top-right-radius: var(--exm-theme-table-radius, var(--exm-surface-border-radius, 16px));
123
- border-bottom-left-radius: var(--exm-theme-table-radius, var(--exm-surface-border-radius, 16px));
124
- border-bottom-right-radius: var(--exm-theme-table-radius, var(--exm-surface-border-radius, 16px));
125
- }
126
-
127
- /*.table-container {
128
- overflow-x: auto;
129
- }*/
130
-
131
- table {
132
- @include table-layout-fixed();
133
- width: 100%;
134
- color: var(--exm-table-color);
135
- border-spacing: 0;
136
- border: none;
137
-
138
- thead {
139
- tr,
140
- th {
141
- @include typography.typography('caption');
142
- }
143
- }
144
-
145
- tbody,
146
- tfoot {
147
- tr,
148
- td {
149
- @include typography.typography('body2');
150
- }
151
- }
152
- }
153
-
154
- td {
155
- height: var(--exm-table-td-height);
156
- }
157
-
158
- .grid-toolbar th {
159
- padding: 0;
160
- text-align: left;
161
- > * {
162
- overflow-x: auto;
163
- }
164
- }
165
-
166
- .grid-columns {
167
- th {
168
- height: var(--exm-table-th-height);
169
- font-weight: 500;
170
- font-style: normal;
171
- font-stretch: normal;
172
- text-transform: uppercase;
173
- line-height: 1.33;
174
- letter-spacing: 2px;
175
- color: var(--exm-table-th-color);
176
- background-color: var(--exm-table-th-background-color);
177
- vertical-align: middle;
178
- text-align: left;
179
-
180
- user-select: none;
181
- white-space: nowrap;
182
-
183
- > span {
184
- vertical-align: middle;
185
- max-width: 100%;
186
- display: inline-block;
187
- overflow: hidden;
188
- white-space: nowrap;
189
- text-overflow: ellipsis;
190
- }
191
- svg {
192
- fill: var(--exm-table-th-color);
193
- }
194
- }
195
- }
196
-
197
- .grid-columns th,
198
- tbody td {
199
- padding-left: 16px;
200
- }
201
-
202
- .grid-columns th:last-child,
203
- tbody td:last-child {
204
- padding-right: 10px;
205
- }
206
-
207
- th,
208
- td {
209
- border-top: 1px solid var(--exm-table-row-divider-color);
210
- }
211
-
212
- tbody {
213
- td {
214
- height: var(--exm-table-td-height);
215
- @include typography.typography('body2');
216
- font-weight: normal;
217
- font-style: normal;
218
- font-stretch: normal;
219
- line-height: 1.43px;
220
- letter-spacing: 0.3px;
221
- color: var(--exm-table-color);
222
- svg {
223
- fill: var(--exm-table-color);
224
- }
225
- }
226
- }
227
-
228
- /**** COLUMN SORT *********/
229
- th[data-sort] {
230
- cursor: pointer;
231
-
232
- &:hover {
233
- color: var(--exm-table-th-sortable-hover-color);
234
- }
235
-
236
- &::after {
237
- display: inline-block;
238
- content: '';
239
- -webkit-mask-image: var(--exm-arrow-upward-url);
240
- mask-image: var(--exm-arrow-upward-url);
241
- background-color: currentColor;
242
- background-size: contain;
243
- height: var(--exm-table-th-sort-icon-height);
244
- width: var(--exm-table-th-sort-icon-width);
245
- margin-left: var(--exm-table-th-sort-margin-left);
246
- vertical-align: middle;
247
- opacity: 0;
248
- }
249
- }
250
-
251
- th[data-sort-direction]::after {
252
- opacity: 1;
253
- transition: transform 0.1s linear;
254
- }
255
-
256
- th[data-sort-direction='ASC']::after {
257
- transform: rotate(0deg);
258
- }
259
-
260
- th[data-sort-direction='DESC']::after {
261
- transform: rotate(180deg);
262
- }
263
- /**** COLUMN SORT END *********/
264
-
265
- /**** SELECTABLE ROW *********/
266
- tbody > tr:not(.grid-row-detail):hover {
267
- color: var(--exm-table-row-hover-color);
268
- background-color: var(--exm-table-row-hover-background-color);
269
- td {
270
- color: var(--exm-table-row-hover-color);
271
- }
272
- svg {
273
- fill: var(--exm-table-row-hover-color);
274
- }
275
- }
276
-
277
- tr[data-selected] {
278
- color: var(--exm-table-row-selected-color);
279
- background-color: var(--exm-table-row-selected-background-color);
280
- td {
281
- color: var(--exm-table-row-selected-color);
282
- }
283
- svg {
284
- fill: var(--exm-table-row-selected-color);
285
- }
286
- }
287
- /**** END SELECTABLE ROW *********/
288
-
289
- /**** EXPANDABLE ROW *********/
290
- tbody {
291
- tr[data-has-expanded-detail],
292
- tr[data-has-expanded-detail]:hover,
293
- tr[data-is-row-expanded] {
294
- background-color: var(--exm-table-rows-expanded-background-color);
295
- border: var(--exm-table-rows-expanded-border);
296
-
297
- td {
298
- color: var(--exm-table-rows-expanded-color);
299
- svg {
300
- fill: var(--exm-table-rows-expanded-color);
301
- }
302
- }
303
- }
304
-
305
- tr[data-is-row-expanded] td {
306
- border-bottom: none;
307
- }
308
-
309
- tr[data-has-expanded-detail] td,
310
- tr[data-has-expanded-detail]:hover td {
311
- border-bottom: var(--exm-table-rows-expanded-divider-border);
312
- }
313
- }
314
-
315
- tr.grid-row-detail {
316
- display: none;
317
-
318
- &[data-is-row-expanded] {
319
- display: table-row;
320
- }
321
-
322
- td {
323
- padding: 20px;
324
- }
325
- }
326
-
327
- tr .grid-icon-rotate[data-is-expanded] > * {
328
- transition: transform 0.1s linear;
329
- transform: rotate(180deg);
330
- }
331
-
332
- tr .grid-icon-rotate[data-is-expandable]:not([data-is-expanded]) > * {
333
- transition: transform 0.1s linear;
334
- transform: rotate(0deg);
335
- }
336
- /**** END EXPANDABLE ROW *********/
337
-
338
- /**** START SORTABLE ROW *********/
339
- .grid-row-drag-handler {
340
- cursor: move;
341
- vertical-align: middle;
342
- > * {
343
- vertical-align: middle;
344
- }
345
- }
346
- tr {
347
- &.dragged {
348
- background-color: var(--exm-table-row-dragged-background-color);
349
- opacity: 0.25;
350
- box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5) inset;
351
- }
352
-
353
- &.cloned {
354
- background-color: var(--exm-table-row-dragged-background-color);
355
- width: 100%;
356
- box-sizing: border-box;
357
- box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.5);
358
- opacity: 0.9;
359
- }
360
- }
361
- /**** END EXPANDABLE ROW *********/
362
-
363
- /***** GRID UTILS ***/
364
- tr td.grid-cell-visible-on-hover {
365
- text-align: center;
366
- }
367
-
368
- tr td.grid-cell-visible-on-hover > * {
369
- visibility: hidden;
370
- }
371
-
372
- tr:hover td.grid-cell-visible-on-hover > *,
373
- tr[data-has-expanded-detail] td.grid-cell-visible-on-hover > * {
374
- visibility: visible;
375
- }
376
-
377
- tr td.grid-col-number,
378
- tr th.grid-col-number {
379
- padding-right: var(--exm-table-col-number-padding-right);
380
- text-align: right;
381
- }
382
-
383
- tr th.grid-col-number {
384
- > span {
385
- width: 100%;
386
- }
387
- }