@perspective-dev/viewer-datagrid 4.0.1 → 4.1.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.
Files changed (99) hide show
  1. package/dist/cdn/perspective-viewer-datagrid.js +4 -17
  2. package/dist/cdn/perspective-viewer-datagrid.js.map +4 -4
  3. package/dist/css/perspective-viewer-datagrid.css +1 -1
  4. package/dist/esm/color_utils.d.ts +9 -0
  5. package/dist/esm/custom_elements/datagrid.d.ts +52 -0
  6. package/dist/esm/custom_elements/toolbar.d.ts +10 -0
  7. package/dist/esm/data_listener/format_cell.d.ts +8 -0
  8. package/dist/esm/data_listener/format_tree_header.d.ts +13 -0
  9. package/dist/esm/data_listener/formatter_cache.d.ts +16 -0
  10. package/dist/esm/data_listener/index.d.ts +10 -0
  11. package/dist/esm/event_handlers/click/edit_click.d.ts +3 -0
  12. package/dist/esm/event_handlers/click.d.ts +7 -0
  13. package/dist/esm/event_handlers/deselect_all.d.ts +5 -0
  14. package/dist/esm/event_handlers/dispatch_click.d.ts +3 -0
  15. package/dist/esm/event_handlers/expand_collapse.d.ts +2 -0
  16. package/dist/esm/event_handlers/focus.d.ts +5 -0
  17. package/dist/esm/event_handlers/header_click.d.ts +3 -0
  18. package/dist/esm/event_handlers/keydown/edit_keydown.d.ts +4 -0
  19. package/dist/esm/event_handlers/row_select_click.d.ts +4 -0
  20. package/dist/esm/event_handlers/select_region.d.ts +9 -0
  21. package/dist/esm/event_handlers/sort.d.ts +7 -0
  22. package/dist/esm/get_cell_config.d.ts +8 -0
  23. package/dist/esm/index.d.ts +6 -0
  24. package/dist/esm/model/column_overrides.d.ts +23 -0
  25. package/dist/esm/model/create.d.ts +3 -0
  26. package/dist/esm/model/index.d.ts +4 -0
  27. package/dist/esm/model/toolbar.d.ts +4 -0
  28. package/dist/esm/perspective-viewer-datagrid.js +3 -3
  29. package/dist/esm/perspective-viewer-datagrid.js.map +4 -4
  30. package/dist/esm/plugin/activate.d.ts +6 -0
  31. package/dist/esm/plugin/column_style_controls.d.ts +28 -0
  32. package/dist/esm/plugin/draw.d.ts +7 -0
  33. package/dist/esm/plugin/restore.d.ts +10 -0
  34. package/dist/esm/plugin/save.d.ts +2 -0
  35. package/dist/esm/style_handlers/body.d.ts +7 -0
  36. package/dist/esm/style_handlers/column_header.d.ts +13 -0
  37. package/dist/esm/style_handlers/consolidated.d.ts +57 -0
  38. package/dist/esm/style_handlers/editable.d.ts +7 -0
  39. package/dist/esm/style_handlers/focus.d.ts +16 -0
  40. package/dist/esm/style_handlers/group_header.d.ts +7 -0
  41. package/dist/esm/style_handlers/table_cell/boolean.d.ts +7 -0
  42. package/dist/esm/style_handlers/table_cell/cell_flash.d.ts +3 -0
  43. package/dist/esm/style_handlers/table_cell/datetime.d.ts +7 -0
  44. package/dist/esm/style_handlers/table_cell/numeric.d.ts +15 -0
  45. package/dist/esm/style_handlers/table_cell/row_header.d.ts +4 -0
  46. package/dist/esm/style_handlers/table_cell/string.d.ts +11 -0
  47. package/dist/esm/style_handlers/types.d.ts +20 -0
  48. package/dist/esm/types.d.ts +193 -0
  49. package/package.json +10 -5
  50. package/src/less/mitered-headers.less +65 -0
  51. package/src/less/pro.less +196 -0
  52. package/src/less/regular_table.less +509 -0
  53. package/src/less/row-hover.less +88 -0
  54. package/{index.d.ts → src/less/scrollbar.less} +18 -19
  55. package/src/less/sub-cell-scroll.less +82 -0
  56. package/src/less/toolbar.less +201 -0
  57. package/src/ts/color_utils.ts +70 -0
  58. package/src/ts/custom_elements/datagrid.ts +250 -0
  59. package/src/ts/custom_elements/toolbar.ts +75 -0
  60. package/src/ts/data_listener/format_cell.ts +84 -0
  61. package/src/ts/data_listener/format_tree_header.ts +82 -0
  62. package/src/ts/data_listener/formatter_cache.ts +191 -0
  63. package/src/ts/data_listener/index.ts +242 -0
  64. package/src/ts/event_handlers/click/edit_click.ts +73 -0
  65. package/src/ts/event_handlers/click.ts +92 -0
  66. package/src/ts/event_handlers/deselect_all.ts +28 -0
  67. package/src/ts/event_handlers/dispatch_click.ts +44 -0
  68. package/src/ts/event_handlers/expand_collapse.ts +44 -0
  69. package/src/ts/event_handlers/focus.ts +63 -0
  70. package/src/ts/event_handlers/header_click.ts +85 -0
  71. package/src/ts/event_handlers/keydown/edit_keydown.ts +213 -0
  72. package/src/ts/event_handlers/row_select_click.ts +87 -0
  73. package/src/ts/event_handlers/select_region.ts +427 -0
  74. package/src/ts/event_handlers/sort.ts +118 -0
  75. package/src/ts/get_cell_config.ts +68 -0
  76. package/src/ts/index.ts +49 -0
  77. package/src/ts/model/column_overrides.ts +112 -0
  78. package/src/ts/model/create.ts +247 -0
  79. package/src/ts/model/index.ts +19 -0
  80. package/src/ts/model/toolbar.ts +64 -0
  81. package/src/ts/plugin/activate.ts +235 -0
  82. package/src/ts/plugin/column_style_controls.ts +76 -0
  83. package/src/ts/plugin/draw.ts +69 -0
  84. package/src/ts/plugin/restore.ts +110 -0
  85. package/src/ts/plugin/save.ts +45 -0
  86. package/src/ts/style_handlers/body.ts +228 -0
  87. package/src/ts/style_handlers/column_header.ts +183 -0
  88. package/src/ts/style_handlers/consolidated.ts +223 -0
  89. package/src/ts/style_handlers/editable.ts +94 -0
  90. package/src/ts/style_handlers/focus.ts +106 -0
  91. package/src/ts/style_handlers/group_header.ts +78 -0
  92. package/src/ts/style_handlers/table_cell/boolean.ts +39 -0
  93. package/src/ts/style_handlers/table_cell/cell_flash.ts +75 -0
  94. package/src/ts/style_handlers/table_cell/datetime.ts +64 -0
  95. package/src/ts/style_handlers/table_cell/numeric.ts +186 -0
  96. package/src/ts/style_handlers/table_cell/row_header.ts +53 -0
  97. package/src/ts/style_handlers/table_cell/string.ts +102 -0
  98. package/src/ts/style_handlers/types.ts +41 -0
  99. package/src/ts/types.ts +279 -0
@@ -0,0 +1,196 @@
1
+ // ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
+ // ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
+ // ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
+ // ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
+ // ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
+ // ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
+ // ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
+ // ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
+ // ┃ This file is part of the Perspective library, distributed under the terms ┃
10
+ // ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
+ // ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
+
13
+ @row-height: 19px;
14
+
15
+ regular-table {
16
+ padding: 0;
17
+ margin: 12px 0 0 12px;
18
+ font-family: inherit;
19
+ --rt-hover--border-color: var(--inactive--color, #c5c9d080);
20
+
21
+ div[tabindex] {
22
+ outline: none;
23
+ }
24
+
25
+ & > div {
26
+ position: absolute;
27
+ top: 0;
28
+ left: 0;
29
+ right: 0;
30
+ bottom: 0;
31
+ overflow: hidden;
32
+ }
33
+
34
+ th {
35
+ text-align: center;
36
+ }
37
+
38
+ // Header groups should overflow and not contribute to auto-sizing.
39
+ thead tr:not(.rt-autosize) th {
40
+ overflow: hidden;
41
+ max-width: 0px;
42
+ }
43
+
44
+ thead tr:last-child .rt-float,
45
+ tbody .rt-float {
46
+ text-align: right;
47
+ }
48
+
49
+ thead .rt-integer,
50
+ tbody .rt-integer {
51
+ text-align: right;
52
+ }
53
+
54
+ tbody th {
55
+ text-align: left;
56
+ }
57
+
58
+ span.rt-tree-container {
59
+ display: flex;
60
+ align-items: center;
61
+ height: 100%;
62
+ }
63
+
64
+ thead .rt-string,
65
+ tbody .rt-string,
66
+ thead .rt-date,
67
+ tbody .rt-date,
68
+ thead .rt-datetime,
69
+ tbody .rt-datetime {
70
+ text-align: left;
71
+ }
72
+
73
+ // frozen rows
74
+
75
+ thead tr:last-child th {
76
+ border-bottom: 1px solid #8b868045;
77
+ }
78
+
79
+ tbody tr:first-child td,
80
+ tbody tr:first-child th {
81
+ border-top: 1px solid transparent !important;
82
+ }
83
+
84
+ th {
85
+ position: relative;
86
+ }
87
+
88
+ tr th span.rt-tree-group {
89
+ margin-left: 5px;
90
+ margin-right: 15px;
91
+ border-left: 1px solid #eee;
92
+ height: 100%;
93
+ }
94
+
95
+ td,
96
+ th {
97
+ white-space: nowrap;
98
+ font-size: 12px;
99
+ padding-right: 5px;
100
+ padding-left: 5px;
101
+ padding-top: 0px;
102
+ padding-bottom: 0px;
103
+ height: @row-height;
104
+ }
105
+
106
+ table * {
107
+ box-sizing: border-box;
108
+ }
109
+
110
+ table {
111
+ position: absolute;
112
+ color: #666;
113
+ outline: none;
114
+ }
115
+
116
+ span.rt-row-header-icon {
117
+ color: #aaa;
118
+ padding-right: 4px;
119
+ font-family: var(--button--font-family);
120
+ }
121
+
122
+ span.rt-column-header-icon {
123
+ font-size: 10px;
124
+ padding-left: 3px;
125
+ display: inline-block;
126
+ width: 10px;
127
+ font-family: var(--button--font-family);
128
+ }
129
+
130
+ span.rt-row-header-icon:hover {
131
+ color: #1a7da1;
132
+ text-shadow: 0px 0px 3px #1a7da1;
133
+ }
134
+
135
+ .rt-selected td {
136
+ background-color: #eee;
137
+ }
138
+
139
+ .rt-cell-clip {
140
+ overflow: hidden;
141
+ text-overflow: ellipsis;
142
+ }
143
+
144
+ // OPTIONAL zebra striping
145
+
146
+ // @zebra-stripe-color: rgb(238,238,238);
147
+
148
+ // tbody tr:nth-child(even) td:not(.rt-group-header) {
149
+ // background: @zebra-stripe-color;
150
+ // }
151
+
152
+ // tbody tr:nth-child(even) span.rt-group-name {
153
+ // background: @zebra-stripe-color;
154
+ // }
155
+
156
+ td span.rt-group-name,
157
+ th span.rt-group-name {
158
+ margin-right: -5px;
159
+ padding-right: 5px;
160
+ padding-left: 8px;
161
+ flex: 1;
162
+ height: 100%;
163
+ }
164
+
165
+ th span.rt-group-name {
166
+ text-align: left;
167
+ }
168
+
169
+ td th span.rt-group-leaf,
170
+ th span.rt-group-leaf {
171
+ margin-left: 16px;
172
+ height: 100%;
173
+ }
174
+
175
+ .rt-column-resize {
176
+ height: 100%;
177
+ width: 10px;
178
+ position: absolute;
179
+ top: 0;
180
+ right: 0;
181
+ cursor: col-resize;
182
+ }
183
+
184
+ a {
185
+ color: var(--rt-pos-cell--color);
186
+ }
187
+
188
+ a:visited {
189
+ color: var(--active--color);
190
+ }
191
+
192
+ td.psp-null:after,
193
+ th.psp-null:after {
194
+ content: var(--null--content, "-");
195
+ }
196
+ }
@@ -0,0 +1,509 @@
1
+ // ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
2
+ // ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
3
+ // ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
4
+ // ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
5
+ // ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
6
+ // ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
7
+ // ┃ Copyright (c) 2017, the Perspective Authors. ┃
8
+ // ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
9
+ // ┃ This file is part of the Perspective library, distributed under the terms ┃
10
+ // ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
11
+ // ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
+
13
+ @import "./pro.less";
14
+ @import "./mitered-headers.less";
15
+ @import "./row-hover.less";
16
+ @import "./sub-cell-scroll.less";
17
+ @import "./scrollbar.less";
18
+
19
+ // Row Selection
20
+
21
+ @mixin icon {
22
+ background-repeat: no-repeat;
23
+ background-color: var(--icon--color);
24
+ content: "";
25
+ display: inline-block;
26
+ -webkit-mask-size: cover;
27
+ mask-size: cover;
28
+ }
29
+
30
+ // // TODO this makes the UI flash a CSS layout for a millsiecond when toggling
31
+ // // settings butit could be fixed.
32
+
33
+ // perspective-viewer:not([settings]) {
34
+ // @include settings-not-open;
35
+ // }
36
+
37
+ // :host-context(perspective-viewer:not([settings])) {
38
+ // @include settings-not-open;
39
+ // }
40
+
41
+ // @mixin settings-not-open {
42
+ // regular-table table tr.rt-autosize + tr th {
43
+ // height: 0px;
44
+ // span {
45
+ // display: none;
46
+ // }
47
+ // }
48
+ // }
49
+
50
+ @mixin settings-open {
51
+ .psp-menu-enabled {
52
+ padding: 0 6px;
53
+ font-size: 8px;
54
+ border-radius: 3px 3px 0 0;
55
+ }
56
+
57
+ .psp-menu-enabled:hover,
58
+ tr:not(.rt-autosize) th.psp-menu-open {
59
+ color: var(--plugin--background);
60
+ background-color: var(--icon--color);
61
+ border-bottom-color: var(--icon--color);
62
+ cursor: pointer;
63
+ }
64
+
65
+ tr:not(.rt-autosize) th.psp-menu-open {
66
+ &:before {
67
+ @include icon;
68
+ height: 8px;
69
+ width: 10px;
70
+ -webkit-mask-image: var(--column-settings-icon--mask-image);
71
+ mask-image: var(--column-settings-icon--mask-image);
72
+ margin-right: 4px;
73
+ background-color: var(--plugin--background);
74
+ }
75
+ }
76
+
77
+ td.psp-menu-open {
78
+ box-shadow:
79
+ inset -2px 0px 0px var(--icon--color),
80
+ inset 2px 0px 0px var(--icon--color);
81
+ }
82
+
83
+ tr:first-child td.psp-menu-open {
84
+ border-top-color: var(--icon--color) !important;
85
+ }
86
+
87
+ tr:last-child td.psp-menu-open {
88
+ box-shadow:
89
+ inset -2px 0px 0px var(--icon--color),
90
+ inset 2px 0px 0px var(--icon--color),
91
+ inset 0px -2px 0px var(--icon--color);
92
+ }
93
+ }
94
+
95
+ perspective-viewer {
96
+ @include settings-open;
97
+ }
98
+
99
+ :host {
100
+ @include settings-open;
101
+ }
102
+
103
+ @mixin viewer-table-styles {
104
+ regular-table table thead tr:last-child th {
105
+ border-bottom-width: 1px;
106
+ border-bottom-color: var(--inactive--border-color, #8b868045);
107
+ }
108
+ }
109
+
110
+ perspective-viewer {
111
+ @include viewer-table-styles;
112
+ }
113
+
114
+ :host-context(perspective-viewer) {
115
+ @include viewer-table-styles;
116
+ }
117
+
118
+ .psp-sort-enabled:hover {
119
+ cursor: pointer;
120
+ }
121
+
122
+ .psp-row-selected,
123
+ :hover .psp-row-selected,
124
+ :hover th.psp-tree-leaf.psp-row-selected,
125
+ :hover th.psp-tree-label.psp-row-selected {
126
+ color: white !important;
127
+ background-color: var(--selected-row--background-color, #ea7319) !important;
128
+ border-color: var(--selected-row--background-color, #ea7319) !important;
129
+ }
130
+
131
+ .psp-row-selected.psp-tree-label:not(:hover):before {
132
+ color: white;
133
+ }
134
+
135
+ .psp-row-subselected,
136
+ :hover .psp-row-subselected,
137
+ :hover th.psp-tree-leaf.psp-row-subselected,
138
+ :hover th.psp-tree-label.psp-row-subselected {
139
+ background: rgba(234, 115, 25, 0.2) !important;
140
+ }
141
+
142
+ .psp-error {
143
+ color: red;
144
+ }
145
+
146
+ td:focus {
147
+ outline: #666;
148
+ outline-style: dotted;
149
+ outline-width: 1px;
150
+ }
151
+
152
+ @mixin table-no-dragging {
153
+ regular-table {
154
+ pointer-events: none;
155
+ }
156
+ }
157
+ perspective-viewer.dragging {
158
+ @include table-no-dragging;
159
+ }
160
+ :host-context(perspective-viewer.dragging) {
161
+ @include table-no-dragging;
162
+ }
163
+
164
+ .psp-header-border:last-child {
165
+ border-right-width: 0px;
166
+ }
167
+
168
+ .psp-header-sort-desc:after {
169
+ @include icon;
170
+ width: 14px;
171
+ height: 11px;
172
+ margin-left: 4px;
173
+ -webkit-mask-image: var(--sort-desc-icon--mask-image);
174
+ mask-image: var(--sort-desc-icon--mask-image);
175
+ }
176
+
177
+ .psp-header-sort-asc:after {
178
+ @include icon;
179
+ width: 14px;
180
+ height: 11px;
181
+ margin-left: 4px;
182
+ -webkit-mask-image: var(--sort-asc-icon--mask-image);
183
+ mask-image: var(--sort-asc-icon--mask-image);
184
+ }
185
+
186
+ .psp-header-sort-col-desc:after {
187
+ @include icon;
188
+ width: 14px;
189
+ height: 11px;
190
+ margin-left: 4px;
191
+ -webkit-mask-image: var(--sort-col-desc-icon--mask-image);
192
+ mask-image: var(--sort-col-desc-icon--mask-image);
193
+ }
194
+
195
+ .psp-header-sort-col-asc:after {
196
+ @include icon;
197
+ width: 14px;
198
+ height: 11px;
199
+ margin-left: 4px;
200
+ -webkit-mask-image: var(--sort-col-asc-icon--mask-image);
201
+ mask-image: var(--sort-col-asc-icon--mask-image);
202
+ }
203
+
204
+ .psp-header-sort-abs-desc:after {
205
+ @include icon;
206
+ width: 14px;
207
+ height: 11px;
208
+ margin-left: 4px;
209
+ -webkit-mask-image: var(--sort-abs-desc-icon--mask-image);
210
+ mask-image: var(--sort-abs-desc-icon--mask-image);
211
+ }
212
+
213
+ .psp-header-sort-abs-asc:after {
214
+ @include icon;
215
+ width: 14px;
216
+ height: 11px;
217
+ margin-left: 4px;
218
+ -webkit-mask-image: var(--sort-abs-asc-icon--mask-image);
219
+ mask-image: var(--sort-abs-asc-icon--mask-image);
220
+ }
221
+
222
+ .psp-header-sort-abs-col-desc:after {
223
+ @include icon;
224
+ width: 14px;
225
+ height: 11px;
226
+ margin-left: 4px;
227
+ -webkit-mask-image: var(--sort-abs-col-desc-icon--mask-image);
228
+ mask-image: var(--sort-abs-col-desc-icon--mask-image);
229
+ }
230
+
231
+ .psp-header-sort-abs-col-asc:after {
232
+ @include icon;
233
+ width: 14px;
234
+ height: 11px;
235
+ margin-left: 4px;
236
+ -webkit-mask-image: var(--sort-abs-col-asc-icon--mask-image);
237
+ mask-image: var(--sort-abs-col-asc-icon--mask-image);
238
+ }
239
+
240
+ tbody th:last-of-type {
241
+ border-right: 1px solid var(--inactive--border-color, #8b868045);
242
+ overflow: hidden;
243
+ text-overflow: ellipsis;
244
+ }
245
+ tbody th:empty {
246
+ background-image: linear-gradient(
247
+ to right,
248
+ transparent 9px,
249
+ var(--inactive--border-color, #eee) 10px,
250
+ transparent 11px
251
+ );
252
+ background-repeat: no-repeat;
253
+ min-width: 20px;
254
+ max-width: 20px;
255
+ pointer-events: none;
256
+ }
257
+ .psp-tree-label {
258
+ max-width: 0px;
259
+ min-width: 0px;
260
+ }
261
+ .psp-tree-label:before {
262
+ color: var(--icon--color);
263
+ font-family: var(--button--font-family, inherit);
264
+ padding-right: 11px;
265
+ }
266
+ .psp-tree-label-expand:before {
267
+ content: var(--tree-label-expand--content, "+");
268
+ }
269
+ .psp-tree-label-collapse:before {
270
+ content: var(--tree-label-collapse--content, "-");
271
+ }
272
+ .psp-tree-label-expand,
273
+ .psp-tree-label-collapse {
274
+ cursor: pointer;
275
+ }
276
+
277
+ .psp-tree-label:hover:before {
278
+ color: var(--active--color);
279
+ text-shadow: 0px 0px 5px var(--active--color);
280
+ }
281
+
282
+ .psp-tree-leaf {
283
+ padding-left: 24px;
284
+ }
285
+
286
+ .psp-align-right {
287
+ text-align: right;
288
+ }
289
+ .psp-align-left {
290
+ text-align: left;
291
+ }
292
+ .psp-positive:not(:focus) {
293
+ color: var(--rt-pos-cell--color);
294
+ }
295
+ .psp-negative:not(:focus) {
296
+ color: var(--rt-neg-cell--color);
297
+ }
298
+
299
+ regular-table table tbody td {
300
+ min-width: 52px !important;
301
+ }
302
+
303
+ .psp-is-width-override .rt-column-resize,
304
+ .rt-column-resize:hover {
305
+ border: 1px dashed #999;
306
+ border-bottom-width: 0px;
307
+ border-left-width: 0px;
308
+ }
309
+
310
+ .boolean-editable {
311
+ cursor: pointer;
312
+ }
313
+
314
+ regular-table table {
315
+ user-select: none;
316
+ color: inherit;
317
+ border-collapse: separate;
318
+
319
+ th {
320
+ font-weight: 400;
321
+ }
322
+
323
+ td,
324
+ th {
325
+ border-color: var(--inactive--border-color, #8b868045);
326
+ height: 23px;
327
+ }
328
+
329
+ .psp-header-group {
330
+ text-overflow: ellipsis;
331
+ }
332
+
333
+ th.psp-header-leaf {
334
+ border-bottom-width: 0px;
335
+ span {
336
+ height: 23px;
337
+ min-height: 23px;
338
+ }
339
+ }
340
+
341
+ td,
342
+ th.psp-tree-label,
343
+ th.psp-tree-label,
344
+ th.psp-tree-leaf,
345
+ tbody tr:first-child th {
346
+ border-style: solid;
347
+ border-width: 0px;
348
+ border-top-width: 1px;
349
+ }
350
+
351
+ tbody th:empty {
352
+ background-position: 0px -10px;
353
+ }
354
+
355
+ td.psp-select-region,
356
+ th.psp-select-region {
357
+ // transition: background-color 0.5s, color 0.5s, border-color 0.5s;
358
+ background-color: var(--icon--color) !important;
359
+ color: var(--plugin--background) !important;
360
+ border-color: var(--plugin--background) !important;
361
+ }
362
+ }
363
+
364
+ regular-table
365
+ tbody
366
+ tr:hover
367
+ td.psp-select-region:not(.psp-row-selected):not(.psp-row-subselected),
368
+ regular-table
369
+ tbody
370
+ tr:hover
371
+ + tr
372
+ td.psp-select-region:not(.psp-row-selected):not(.psp-row-subselected) {
373
+ border-color: var(--plugin--background) !important;
374
+ }
375
+
376
+ regular-table tbody tr:hover {
377
+ td.psp-select-region.psp-menu-open {
378
+ &:not(.psp-row-selected):not(.psp-row-subselected) {
379
+ box-shadow:
380
+ inset -2px 0px 0px var(--plugin--background),
381
+ inset 2px 0px 0px var(--plugin--background);
382
+ }
383
+ }
384
+ }
385
+
386
+ :host-context(perspective-viewer[settings]) td.psp-select-region.psp-menu-open {
387
+ box-shadow:
388
+ inset -2px 0px 0px var(--plugin--background),
389
+ inset 2px 0px 0px var(--plugin--background);
390
+ }
391
+
392
+ // This is a design/architecture bug. When the datagrid draws during a sidepanel
393
+ // collapse/uncollapse, the `settings` attribute is set to the _previous_ state
394
+ // as this collapse takes a while and we dont want the new state CSS to apply
395
+ // until the drawing is done. However, this causes the datagrid to draw its
396
+ // _first_ frame as if its in the wrong state, as it detects sidepanel state
397
+ // via HTML attribute checking.
398
+ @mixin design-slash-architecture-bug {
399
+ regular-table #psp-column-edit-buttons:after {
400
+ content: none;
401
+ }
402
+ }
403
+
404
+ regular-table
405
+ #psp-column-edit-buttons
406
+ th:not(.rt-group-corner)
407
+ span:not(.rt-column-resize):before {
408
+ content: var(--datagrid-column-edit-button--content, "Edit");
409
+ }
410
+
411
+ perspective-viewer:not([settings]) {
412
+ @include design-slash-architecture-bug;
413
+ }
414
+
415
+ :host-context(perspective-viewer:not([settings])) {
416
+ @include design-slash-architecture-bug;
417
+ }
418
+
419
+ // Style the last row of the `<thead>` so that is has a bottom border.
420
+ regular-table table thead tr:last-child:after {
421
+ width: 10000px;
422
+ box-sizing: border-box;
423
+ display: block;
424
+ height: 23px;
425
+ content: " ";
426
+ border-bottom: 1px solid var(--inactive--border-color);
427
+ }
428
+
429
+ // Extend every row to the right edge of the page with a fake column.
430
+ regular-table table tbody tr:after {
431
+ width: 10000px;
432
+ box-sizing: border-box;
433
+ display: block;
434
+ height: 23px;
435
+ content: " ";
436
+ border-top: 1px solid transparent;
437
+ }
438
+
439
+ regular-table table tbody tr:not(:first-child):after {
440
+ border-top: 1px solid var(--inactive--border-color);
441
+ }
442
+
443
+ regular-table table tbody tr:hover:not(:first-child):after {
444
+ border-top: 1px solid var(--rt-hover--border-color);
445
+ }
446
+
447
+ regular-table table tbody tr:hover + tr:after {
448
+ border-top: 1px solid var(--rt-hover--border-color);
449
+ }
450
+
451
+ @keyframes pulse_pos {
452
+ 0% {
453
+ background-color: var(
454
+ --pulse--background-color-start,
455
+ rgba(0, 128, 255, 0.5)
456
+ );
457
+ }
458
+ 100% {
459
+ background-color: var(
460
+ --pulse--background-color-end,
461
+ rgba(0, 128, 255, 0)
462
+ );
463
+ }
464
+ }
465
+
466
+ @keyframes pulse_pos2 {
467
+ 0% {
468
+ background-color: var(
469
+ --pulse--background-color-start,
470
+ rgba(0, 128, 255, 0.5)
471
+ );
472
+ }
473
+ 100% {
474
+ background-color: var(
475
+ --pulse--background-color-end,
476
+ rgba(0, 128, 255, 0)
477
+ );
478
+ }
479
+ }
480
+
481
+ @keyframes pulse_neg {
482
+ 0% {
483
+ background-color: var(
484
+ --pulse--background-color-start,
485
+ rgba(255, 25, 0, 0.5)
486
+ );
487
+ }
488
+ 100% {
489
+ background-color: var(
490
+ --pulse--background-color-end,
491
+ rgba(255, 25, 0, 0)
492
+ );
493
+ }
494
+ }
495
+
496
+ @keyframes pulse_neg2 {
497
+ 0% {
498
+ background-color: var(
499
+ --pulse--background-color-start,
500
+ rgba(255, 25, 0, 0.5)
501
+ );
502
+ }
503
+ 100% {
504
+ background-color: var(
505
+ --pulse--background-color-end,
506
+ rgba(255, 25, 0, 0)
507
+ );
508
+ }
509
+ }