@perspective-dev/viewer 5.3.0 → 5.4.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 (265) hide show
  1. package/dist/cdn/perspective-viewer.js +8 -8
  2. package/dist/cdn/perspective-viewer.js.map +3 -3
  3. package/dist/css/blueprint.css +1 -0
  4. package/dist/css/botanical.css +1 -1
  5. package/dist/css/dracula.css +1 -1
  6. package/dist/css/eggplant.css +1 -0
  7. package/dist/css/gruvbox-dark.css +1 -1
  8. package/dist/css/gruvbox.css +1 -1
  9. package/dist/css/icons.css +1 -1
  10. package/dist/css/intl/ar.css +1 -0
  11. package/dist/css/intl/de.css +1 -1
  12. package/dist/css/intl/es.css +1 -1
  13. package/dist/css/intl/fr.css +1 -1
  14. package/dist/css/intl/ja.css +1 -1
  15. package/dist/css/intl/pt.css +1 -1
  16. package/dist/css/intl/zh.css +1 -1
  17. package/dist/css/intl.css +1 -1
  18. package/dist/css/ledger.css +1 -0
  19. package/dist/css/monokai.css +1 -1
  20. package/dist/css/nord.css +1 -0
  21. package/dist/css/phosphor.css +1 -1
  22. package/dist/css/pro-dark.css +1 -1
  23. package/dist/css/pro.css +1 -1
  24. package/dist/css/solarized-dark.css +1 -1
  25. package/dist/css/solarized.css +1 -1
  26. package/dist/css/themes.css +1 -1
  27. package/dist/css/vaporwave.css +1 -1
  28. package/dist/css/velvet.css +1 -0
  29. package/dist/docs/perspective-docs.json +1 -1
  30. package/dist/esm/column-format.d.ts +16 -3
  31. package/dist/esm/extensions.d.ts +0 -5
  32. package/dist/esm/perspective-viewer.inline.js +7 -7
  33. package/dist/esm/perspective-viewer.inline.js.map +3 -3
  34. package/dist/esm/perspective-viewer.js +8 -8
  35. package/dist/esm/perspective-viewer.js.map +3 -3
  36. package/dist/esm/ts-rs/ViewOnUpdateResp.d.ts +1 -1
  37. package/dist/wasm/perspective-viewer.d.ts +62 -73
  38. package/dist/wasm/perspective-viewer.js +230 -238
  39. package/dist/wasm/perspective-viewer.wasm +0 -0
  40. package/dist/wasm/perspective-viewer.wasm.d.ts +18 -28
  41. package/package.json +7 -7
  42. package/src/css/_context_menu.css +1 -1
  43. package/src/css/_dropdown_menu.css +1 -1
  44. package/src/css/_viewer_bundle.css +7 -8
  45. package/src/css/column-dropdown.css +0 -3
  46. package/src/css/column-selector.css +8 -5
  47. package/src/css/column-settings-panel.css +0 -206
  48. package/src/css/column-style.css +95 -0
  49. package/src/css/config-selector.css +18 -10
  50. package/src/css/filter-dropdown.css +5 -5
  51. package/src/css/form/debug.css +28 -4
  52. package/src/css/function-dropdown.css +5 -5
  53. package/src/css/panel-tab.css +23 -0
  54. package/src/css/plugin-selector.css +6 -5
  55. package/src/css/render-warning.css +1 -1
  56. package/src/css/status-bar.css +52 -21
  57. package/src/css/type-icon.css +1 -3
  58. package/src/css/{containers → ui/containers}/context-menu.css +22 -16
  59. package/src/css/ui/containers/dropdown-menu-items.css +66 -0
  60. package/src/css/{containers → ui/containers}/dropdown-menu.css +8 -53
  61. package/src/css/{containers → ui/containers}/tabs.css +13 -3
  62. package/src/css/{dom → ui/dom}/select.css +19 -8
  63. package/src/css/viewer.css +32 -31
  64. package/src/rust/agent/tools.rs +5 -2
  65. package/src/rust/components/chat_panel.rs +1 -1
  66. package/src/rust/components/{form/code_editor.rs → code_editor.rs} +4 -2
  67. package/src/rust/components/column_dropdown.rs +2 -2
  68. package/src/rust/components/column_selector/active_column.rs +15 -9
  69. package/src/rust/components/column_selector/aggregate_selector.rs +1 -1
  70. package/src/rust/components/column_selector/config_selector.rs +2 -2
  71. package/src/rust/components/column_selector/filter_column.rs +8 -5
  72. package/src/rust/components/column_selector/inactive_column.rs +4 -2
  73. package/src/rust/components/column_selector/pivot_column.rs +4 -3
  74. package/src/rust/components/column_selector/sort_column.rs +7 -4
  75. package/src/rust/components/column_selector.rs +3 -3
  76. package/src/rust/components/column_settings_sidebar/style_tab/agg_depth_selector.rs +1 -1
  77. package/src/rust/components/column_settings_sidebar/style_tab/primitive_field.rs +15 -17
  78. package/src/rust/components/column_settings_sidebar/style_tab/symbol/symbol_selector.rs +1 -1
  79. package/src/rust/components/column_settings_sidebar/style_tab.rs +296 -238
  80. package/src/rust/components/column_settings_sidebar.rs +3 -4
  81. package/src/rust/components/copy_dropdown.rs +1 -1
  82. package/src/rust/components/datetime_column_style/custom.rs +1 -3
  83. package/src/rust/components/datetime_column_style/simple.rs +16 -6
  84. package/src/rust/components/datetime_column_style.rs +51 -12
  85. package/src/rust/components/{form/debug.rs → debug_panel.rs} +5 -5
  86. package/src/rust/components/{containers/dragdrop_list.rs → dragdrop_list.rs} +2 -10
  87. package/src/rust/components/export_dropdown.rs +1 -1
  88. package/src/rust/components/expression_editor.rs +1 -1
  89. package/src/rust/components/filter_dropdown.rs +2 -2
  90. package/src/rust/components/function_dropdown.rs +2 -2
  91. package/src/rust/components/main_panel/frame_theme.rs +3 -59
  92. package/src/rust/components/main_panel/reconcile.rs +9 -4
  93. package/src/rust/components/main_panel/render.rs +62 -11
  94. package/src/rust/components/main_panel/update.rs +39 -10
  95. package/src/rust/components/main_panel.rs +26 -2
  96. package/src/rust/components/mod.rs +5 -7
  97. package/src/rust/components/new_panel_menu.rs +97 -0
  98. package/src/rust/components/number_series_style.rs +2 -3
  99. package/src/rust/components/panel_menu.rs +61 -87
  100. package/src/rust/components/panel_tab.rs +100 -43
  101. package/src/rust/components/plugin_tab.rs +125 -87
  102. package/src/rust/components/render_warning.rs +2 -2
  103. package/src/rust/components/{status_bar_counter.rs → rows_counter.rs} +10 -10
  104. package/src/rust/components/settings_panel.rs +3 -2
  105. package/src/rust/components/status_bar.rs +113 -20
  106. package/src/rust/components/status_indicator.rs +5 -14
  107. package/src/rust/components/string_column_style.rs +1 -2
  108. package/src/rust/components/{style/mod.rs → style.rs} +32 -15
  109. package/src/rust/components/style_controls/number_string_format/digits_section.rs +25 -15
  110. package/src/rust/components/style_controls/number_string_format/misc_section.rs +7 -3
  111. package/src/rust/components/style_controls/number_string_format/style_section.rs +2 -1
  112. package/src/rust/components/style_controls/number_string_format/types.rs +24 -0
  113. package/src/rust/components/style_controls/number_string_format.rs +37 -14
  114. package/src/rust/components/viewer/msg.rs +43 -30
  115. package/src/rust/components/viewer/panels.rs +50 -19
  116. package/src/rust/components/viewer/render.rs +15 -13
  117. package/src/rust/components/viewer/settings.rs +137 -68
  118. package/src/rust/components/viewer/snapshots.rs +5 -10
  119. package/src/rust/components/viewer/wiring.rs +1 -21
  120. package/src/rust/components/viewer.rs +15 -10
  121. package/src/rust/components/window_editor.rs +8 -9
  122. package/src/rust/config/column_config_schema.rs +358 -52
  123. package/src/rust/config/datetime_column_style.rs +4 -21
  124. package/src/rust/config/mod.rs +0 -2
  125. package/src/rust/config/number_string_format.rs +211 -18
  126. package/src/rust/config/workspace_config.rs +2 -1
  127. package/src/rust/custom_elements/debug_plugin.rs +1 -10
  128. package/src/rust/custom_elements/mod.rs +0 -3
  129. package/src/rust/custom_elements/viewer.rs +0 -18
  130. package/src/rust/js/plugin.rs +0 -86
  131. package/src/rust/lib.rs +12 -15
  132. package/src/rust/presentation/column_locator.rs +3 -7
  133. package/src/rust/presentation.rs +85 -38
  134. package/src/rust/queries/hosted_tables.rs +38 -0
  135. package/src/rust/queries/mod.rs +2 -0
  136. package/src/rust/queries/palette_set.rs +1 -1
  137. package/src/rust/queries/plugin_column_styles.rs +2 -2
  138. package/src/rust/renderer/activate.rs +1 -3
  139. package/src/rust/renderer/dispatch.rs +117 -30
  140. package/src/rust/renderer/limits.rs +24 -5
  141. package/src/rust/renderer/plugin_config.rs +56 -8
  142. package/src/rust/renderer/props.rs +2 -1
  143. package/src/rust/renderer.rs +14 -27
  144. package/src/rust/session/props.rs +4 -3
  145. package/src/rust/session/view_subscription.rs +19 -6
  146. package/src/rust/session.rs +38 -70
  147. package/src/rust/tasks/create_panel.rs +1 -1
  148. package/src/rust/tasks/dismiss_render_warning.rs +1 -1
  149. package/src/rust/tasks/eject.rs +1 -0
  150. package/src/rust/tasks/pipeline.rs +0 -60
  151. package/src/rust/tasks/presize_panels.rs +24 -1
  152. package/src/rust/tasks/restore_and_render.rs +0 -17
  153. package/src/rust/tasks/send_column_config.rs +1 -1
  154. package/src/rust/tasks/send_plugin_config.rs +1 -1
  155. package/src/rust/tasks/set_edit_mode.rs +1 -1
  156. package/src/rust/ui/containers/control_group.rs +113 -0
  157. package/src/rust/{components → ui}/containers/dropdown_menu.rs +5 -2
  158. package/src/rust/{components → ui}/containers/mod.rs +1 -4
  159. package/src/rust/{components → ui}/containers/scroll_panel.rs +0 -22
  160. package/src/rust/{components → ui}/containers/scroll_panel_item.rs +0 -13
  161. package/src/rust/{components → ui}/containers/select.rs +8 -8
  162. package/src/rust/{components → ui}/containers/sidebar.rs +5 -32
  163. package/src/rust/{components → ui}/containers/split_panel.rs +8 -80
  164. package/src/rust/{components → ui}/containers/tab_list.rs +15 -9
  165. package/src/rust/{components → ui}/context_menu.rs +8 -13
  166. package/src/rust/{presentation/drag_helpers.rs → ui/dragdrop.rs} +26 -31
  167. package/src/rust/{components → ui}/font_loader.rs +0 -26
  168. package/src/rust/{components → ui}/form/color_selector.rs +4 -2
  169. package/src/rust/ui/form/intl_label.rs +81 -0
  170. package/src/rust/{components → ui}/form/mirrored_textarea.rs +0 -53
  171. package/src/rust/{components → ui}/form/mod.rs +1 -10
  172. package/src/rust/{components → ui}/form/multi_stop_gradient_selector.rs +4 -5
  173. package/src/rust/{components → ui}/form/named_value_picker.rs +1 -6
  174. package/src/rust/{components → ui}/form/number_field.rs +1 -1
  175. package/src/rust/{components → ui}/form/number_range_field.rs +1 -1
  176. package/src/rust/{components → ui}/form/optional_field.rs +3 -1
  177. package/src/rust/{components → ui}/form/palette_selector.rs +4 -5
  178. package/src/rust/{components → ui}/form/select_enum_field.rs +2 -2
  179. package/src/rust/{components → ui}/form/select_value_field.rs +2 -2
  180. package/src/rust/ui/mod.rs +56 -0
  181. package/src/rust/ui/modal.rs +61 -0
  182. package/src/rust/{components → ui}/portal.rs +174 -79
  183. package/src/rust/{components/style/style_provider.rs → ui/style.rs} +4 -34
  184. package/src/rust/utils/completion.rs +0 -6
  185. package/src/rust/{config/css_scale.rs → utils/css.rs} +38 -35
  186. package/src/rust/utils/mod.rs +2 -0
  187. package/src/rust/workspace.rs +35 -0
  188. package/src/svg/boolean-type.svg +3 -2
  189. package/src/svg/checkbox-checked-icon.svg +4 -7
  190. package/src/svg/checkbox-hover.svg +3 -3
  191. package/src/svg/checkbox-off.svg +2 -3
  192. package/src/svg/checkbox-on.svg +3 -3
  193. package/src/svg/checkbox-unchecked-icon.svg +3 -3
  194. package/src/svg/datagrid-select-column.svg +8 -15
  195. package/src/svg/datagrid-select-region.svg +8 -15
  196. package/src/svg/datagrid-select-row-tree.svg +7 -12
  197. package/src/svg/datagrid-select-row.svg +8 -13
  198. package/src/svg/date-type.svg +4 -23
  199. package/src/svg/drawer-tab-hover.svg +4 -6
  200. package/src/svg/drawer-tab-invert-hover.svg +5 -5
  201. package/src/svg/drawer-tab-invert.svg +3 -5
  202. package/src/svg/drawer-tab.svg +5 -5
  203. package/src/svg/mega-menu-icons-candlestick.svg +5 -37
  204. package/src/svg/mega-menu-icons-ohlc.svg +4 -39
  205. package/src/svg/mega-menu-icons-sunburst.svg +4 -38
  206. package/src/svg/mega-menu-icons-treemap.svg +3 -43
  207. package/src/svg/mega-menu-icons-y-scatter.svg +12 -72
  208. package/src/svg/new-panel-icon.svg +4 -0
  209. package/src/svg/number-type.svg +3 -3
  210. package/src/svg/radio-hover.svg +3 -3
  211. package/src/svg/radio-off.svg +3 -3
  212. package/src/svg/radio-on.svg +3 -3
  213. package/src/svg/status_ok.svg +3 -26
  214. package/src/svg/string-type.svg +4 -8
  215. package/src/svg/theme-icon.svg +5 -5
  216. package/src/themes/blueprint.css +133 -0
  217. package/src/themes/botanical.css +3 -52
  218. package/src/themes/defaults.css +3 -144
  219. package/src/themes/dracula.css +1 -71
  220. package/src/themes/eggplant.css +131 -0
  221. package/src/themes/gruvbox-dark.css +2 -79
  222. package/src/themes/gruvbox.css +2 -40
  223. package/src/themes/icons.css +2 -10
  224. package/src/themes/intl/ar.css +185 -0
  225. package/src/themes/intl/de.css +65 -33
  226. package/src/themes/intl/es.css +60 -28
  227. package/src/themes/intl/fr.css +60 -28
  228. package/src/themes/intl/ja.css +62 -30
  229. package/src/themes/intl/pt.css +58 -26
  230. package/src/themes/intl/zh.css +68 -36
  231. package/src/themes/intl.css +42 -7
  232. package/src/themes/ledger.css +137 -0
  233. package/src/themes/monokai.css +1 -64
  234. package/src/themes/nord.css +131 -0
  235. package/src/themes/phosphor.css +1 -61
  236. package/src/themes/pro-dark.css +1 -52
  237. package/src/themes/pro.css +98 -0
  238. package/src/themes/solarized-dark.css +1 -46
  239. package/src/themes/solarized.css +1 -24
  240. package/src/themes/themes.css +10 -5
  241. package/src/themes/vaporwave.css +1 -57
  242. package/src/themes/velvet.css +132 -0
  243. package/src/ts/column-format.ts +52 -2
  244. package/src/ts/extensions.ts +0 -13
  245. package/src/ts/ts-rs/ViewOnUpdateResp.ts +1 -1
  246. package/src/css/plugin-settings-panel.css +0 -99
  247. package/src/rust/components/modal.rs +0 -177
  248. package/src/rust/custom_elements/copy_dropdown.rs +0 -219
  249. package/src/rust/custom_elements/export_dropdown.rs +0 -216
  250. package/src/rust/custom_elements/modal.rs +0 -299
  251. package/src/svg/dropdown-selector-light.svg +0 -3
  252. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-adc6f3f79141112b}/inline0.js +0 -0
  253. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-adc6f3f79141112b}/inline1.js +0 -0
  254. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-adc6f3f79141112b}/inline2.js +0 -0
  255. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-adc6f3f79141112b}/inline3.js +0 -0
  256. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-adc6f3f79141112b}/inline4.js +0 -0
  257. /package/dist/wasm/snippets/{perspective-viewer-39c3c3b28e3cbd48 → perspective-viewer-adc6f3f79141112b}/inline5.js +0 -0
  258. /package/src/css/{containers → ui/containers}/scroll-panel.css +0 -0
  259. /package/src/css/{containers → ui/containers}/split-panel.css +0 -0
  260. /package/src/css/{dom → ui/dom}/checkbox.css +0 -0
  261. /package/src/css/{dom → ui/dom}/scrollbar.css +0 -0
  262. /package/src/css/{form → ui/form}/mirrored-textarea.css +0 -0
  263. /package/src/rust/components/{form → code_editor}/highlight.rs +0 -0
  264. /package/src/rust/{components → ui}/containers/sidebar_close_button.rs +0 -0
  265. /package/src/rust/{components → ui}/form/number_input.rs +0 -0
@@ -12,10 +12,6 @@
12
12
  */
13
13
 
14
14
  :host {
15
- div.tab-title#Debug:before {
16
- content: var(--psp-label--debug-tab--content, "Debug JSON");
17
- }
18
-
19
15
  #debug-panel-overflow {
20
16
  overflow: hidden;
21
17
  display: flex;
@@ -56,6 +52,34 @@
56
52
  color: var(--psp--background-color);
57
53
  }
58
54
 
55
+ &#debug-panel-apply:before {
56
+ content: var(
57
+ --psp-label--apply-button--content,
58
+ var(--psp-missing)
59
+ );
60
+ }
61
+
62
+ &#debug-panel-reset:before {
63
+ content: var(
64
+ --psp-label--reset-button--content,
65
+ var(--psp-missing)
66
+ );
67
+ }
68
+
69
+ &#debug-panel-copy:before {
70
+ content: var(
71
+ --psp-label--copy-button--content,
72
+ var(--psp-missing)
73
+ );
74
+ }
75
+
76
+ &#debug-panel-paste:before {
77
+ content: var(
78
+ --psp-label--paste-button--content,
79
+ var(--psp-missing)
80
+ );
81
+ }
82
+
59
83
  &[disabled] {
60
84
  cursor: not-allowed;
61
85
  opacity: 0.2;
@@ -12,14 +12,14 @@
12
12
  */
13
13
 
14
14
  :host {
15
- position: fixed;
16
- z-index: 10000;
15
+ background-color: var(--psp--background-color, #ffffff);
16
+ color: var(--psp--color, #161616);
17
+ border: 1px solid var(--psp-inactive--color, #ababab);
18
+ border-radius: 0 0 2px 2px;
17
19
  outline: none;
18
20
  font-size: 0.75em;
19
- border: inherit;
20
- box-shadow: 0 2px 4px 0 rgb(0 0 0 / 10%);
21
+ box-shadow: var(--psp-dropdown--box-shadow);
21
22
  user-select: none;
22
- background-color: white;
23
23
  padding: 6px;
24
24
  display: flex;
25
25
  flex-direction: column;
@@ -90,6 +90,10 @@
90
90
  mask-image: var(--psp-icon--active-indicator--mask-image);
91
91
  }
92
92
 
93
+ :host([part~="tab"].closing) {
94
+ pointer-events: none;
95
+ }
96
+
93
97
  /* A lone tab (its viewer has a single plugin child) has no stack to open —
94
98
  * no caret. Must follow the `.active` rule (equal specificity) to win when
95
99
  * the lone tab is also active. */
@@ -139,6 +143,25 @@
139
143
  outline: none;
140
144
  }
141
145
 
146
+ span#rows {
147
+ display: flex;
148
+ align-items: baseline;
149
+ gap: 6px;
150
+ margin-left: 12px;
151
+ margin-right: 6px;
152
+ pointer-events: none;
153
+ white-space: nowrap;
154
+ overflow: hidden;
155
+ text-overflow: ellipsis;
156
+ flex: 0 100000000 auto;
157
+ }
158
+
159
+ span#rows span.x,
160
+ span#rows span.total {
161
+ text-overflow: ellipsis;
162
+ color: var(--psp-inactive--color);
163
+ }
164
+
142
165
  .psp-tab-master {
143
166
  margin-right: 6px;
144
167
  }
@@ -34,15 +34,17 @@
34
34
  margin: 0 0px 0 -9px;
35
35
 
36
36
  #plugin_selector_border {
37
- height: 2px;
38
- min-height: 2px;
37
+ height: 3px;
38
+ min-height: 3px;
39
39
  width: 100%;
40
- background-color: var(--psp-inactive--color, #6e6e6e);
41
- margin-top: 2px;
40
+ margin-top: 1px;
41
+ background-color: #00000020;
42
+ border-bottom: 1px solid var(--psp-inactive--color, #6e6e6e);
42
43
  }
43
44
 
44
45
  .plugin-selector-options {
45
46
  overflow-y: auto;
47
+ height: 100%;
46
48
  }
47
49
 
48
50
  &.open {
@@ -84,7 +86,6 @@
84
86
  );
85
87
  display: flex;
86
88
  align-items: center;
87
- border-bottom: 1px solid transparent;
88
89
  box-shadow: 0px 1px var(--psp-inactive--color, #6e6e6e);
89
90
  cursor: pointer;
90
91
  }
@@ -46,7 +46,7 @@
46
46
  }
47
47
 
48
48
  .plugin_information__icon:before {
49
- content: var(--psp-icon-overflow-hint--content);
49
+ content: var(--psp-icon-overflow-hint--content, var(--psp-missing));
50
50
  height: 20px;
51
51
  font-family: var(
52
52
  --overflow_hint--font-family,
@@ -46,10 +46,9 @@
46
46
  box-shadow: 0 1px 0 0px var(--psp-inactive--color);
47
47
  z-index: 6;
48
48
  display: var(--psp-status-bar--display, flex);
49
- gap: 4px;
50
49
  align-items: center;
51
50
  background: var(--psp--background-color);
52
- padding: var(--psp-status-bar--padding, 0 31px 0 4px);
51
+ padding: var(--psp-status-bar--padding, 0 26px 0 4px);
53
52
  position: relative;
54
53
  height: var(--psp-status-bar--height, 38px);
55
54
  min-height: var(--psp-status-bar--height, 38px);
@@ -69,21 +68,28 @@
69
68
  flex: 1 1000 auto;
70
69
  }
71
70
 
72
- span#rows {
73
- display: flex;
74
- align-items: flex-end;
75
- gap: 6px;
76
- flex: 0 1000 auto;
77
- overflow: hidden;
78
- margin: 0px 0px;
79
- pointer-events: none;
80
- span {
81
- margin: 0 !important;
71
+ #panel-bar {
72
+ flex: 0 0 auto;
73
+ height: 100%;
74
+ }
75
+
76
+ span#new_panel {
77
+ & > .icon {
78
+ -webkit-mask-image: var(--psp-icon--new-panel--mask-image);
79
+ mask-image: var(--psp-icon--new-panel--mask-image);
80
+ display: inline-flex;
81
+ &:before {
82
+ line-height: 0;
83
+ content: var(--psp-icon--new-panel--mask-image);
84
+ visibility: hidden;
85
+ }
82
86
  }
83
87
 
84
- span.x,
85
- span.total {
86
- color: var(--psp-inactive--color);
88
+ span:not(.icon):before {
89
+ content: var(
90
+ --psp-label--new-panel-button--content,
91
+ var(--psp-missing)
92
+ );
87
93
  }
88
94
  }
89
95
 
@@ -371,7 +377,10 @@
371
377
  }
372
378
 
373
379
  span:not(.icon):before {
374
- content: var(--psp-label--export-button--content, "Export");
380
+ content: var(
381
+ --psp-label--export-button--content,
382
+ var(--psp-missing)
383
+ );
375
384
  }
376
385
  }
377
386
 
@@ -400,7 +409,10 @@
400
409
  }
401
410
  }
402
411
  span:not(.icon):before {
403
- content: var(--psp-label--reset-button--content);
412
+ content: var(
413
+ --psp-label--reset-button--content,
414
+ var(--psp-missing)
415
+ );
404
416
  }
405
417
  }
406
418
 
@@ -418,7 +430,10 @@
418
430
  }
419
431
 
420
432
  span:not(.icon):before {
421
- content: var(--psp-label--copy-button--content);
433
+ content: var(
434
+ --psp-label--copy-button--content,
435
+ var(--psp-missing)
436
+ );
422
437
  }
423
438
  }
424
439
 
@@ -440,8 +455,12 @@
440
455
  height: 100%;
441
456
  }
442
457
 
458
+ .select-arrow {
459
+ margin: 0;
460
+ }
461
+
443
462
  & > .icon {
444
- margin: 0 6px 0 4px;
463
+ margin: 0 2px 0 2px;
445
464
  height: auto;
446
465
  -webkit-mask-image: var(--psp-icon--theme--mask-image);
447
466
  mask-image: var(--psp-icon--theme--mask-image);
@@ -452,6 +471,10 @@
452
471
  visibility: hidden;
453
472
  }
454
473
  }
474
+
475
+ & > .dropdown-width-container {
476
+ padding-left: 5px;
477
+ }
455
478
  }
456
479
 
457
480
  #theme_icon.modified:hover + #theme > .icon {
@@ -488,6 +511,10 @@
488
511
  }
489
512
  }
490
513
 
514
+ .modal-target .button > span.icon-label {
515
+ display: none !important;
516
+ }
517
+
491
518
  .hover-target {
492
519
  margin: 0;
493
520
  display: inline-flex;
@@ -495,11 +522,15 @@
495
522
  align-items: center;
496
523
 
497
524
  &:focus-within,
498
- &:hover,
499
- &.modal-target {
525
+ &:hover:not(.modal-target) {
500
526
  box-shadow:
501
527
  -4px 0 0 var(--psp--color),
502
528
  4px 0 0 var(--psp--color);
529
+ }
530
+
531
+ &:focus-within,
532
+ &:hover,
533
+ &.modal-target {
503
534
  background-color: var(--psp--color);
504
535
  }
505
536
 
@@ -13,9 +13,7 @@
13
13
 
14
14
  :host #selected-columns .type-icon,
15
15
  :host #sub-columns .type-icon {
16
- /* position: absolute; */
17
- /* left: 15px; */
18
- margin-left: 4px;
16
+ margin-left: 1px;
19
17
  }
20
18
 
21
19
  :host .icon {
@@ -12,24 +12,30 @@
12
12
  */
13
13
 
14
14
  /* Panel context menu (right-click a panel). The `<perspective-context-menu>`
15
- * host is body-mounted by `PortalModal` (which owns position/z-index inline)
16
- * and themed by the document theme rules' modal selector groups — chrome like
17
- * `background-color`/`color`/`border` lands on the HOST from `defaults.css` /
18
- * each theme's `perspective-context-menu[theme="X"]` group, exactly like the
19
- * Copy/Export menus. Only the interior layout + item states live here. */
15
+ * host is a viewer light-DOM child in the top layer (see `PortalModal`),
16
+ * themed by the `--psp-*` vars it inherits; its chrome lives here, exactly
17
+ * like the Copy/Export menus' surface. */
18
+
19
+ @import "./dropdown-menu-items.css";
20
20
 
21
21
  :host {
22
+ overflow: visible;
23
+ padding: 0;
24
+ background-color: var(--psp--background-color, #ffffff);
25
+ color: var(--psp--color, #161616);
26
+ border: 1px solid var(--psp-inactive--color, #ababab);
27
+ border-radius: 0 0 2px 2px;
22
28
  outline: none;
23
29
  user-select: none;
24
30
  font-size: 12px;
25
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
31
+ box-shadow: var(--psp-dropdown--box-shadow);
26
32
  }
27
33
 
28
34
  .context-menu {
29
35
  display: flex;
30
36
  flex-direction: column;
31
37
  min-width: 120px;
32
- padding: 4px 0;
38
+ padding: 0px 0;
33
39
  }
34
40
 
35
41
  .context-menu-item {
@@ -73,17 +79,11 @@
73
79
  }
74
80
  }
75
81
 
76
- /* Hover flyout. Positioned OUTSIDE the host's box, so the host-level theme
77
- * chrome (see the :host comment above) doesn't paint it — rebuild the same
78
- * chrome from the modal selector groups' vars. Edge-adjacent (`left: 100%`,
79
- * no gap) so the pointer never leaves the hover chain crossing into it;
80
- * `top: -5px` aligns its first row with the parent row (4px menu padding +
81
- * 1px border). */
82
82
  .context-menu-submenu {
83
83
  display: none;
84
84
  position: absolute;
85
85
  left: 100%;
86
- top: -5px;
86
+ top: -1px;
87
87
  max-height: 50vh;
88
88
  overflow-y: auto;
89
89
  background-color: var(--psp--background-color, white);
@@ -93,10 +93,16 @@
93
93
  * foreground. */
94
94
  color: var(--psp--color);
95
95
  border: 1px solid var(--psp-inactive--color);
96
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
96
+ box-shadow: var(--psp-dropdown--box-shadow);
97
+ }
98
+
99
+ .context-menu-submenu > .new-panel-menu {
100
+ display: flex;
101
+ flex-direction: column;
102
+ padding: 8px;
103
+ min-width: 120px;
97
104
  }
98
105
 
99
- /* Non-interactive group label (e.g. client names in the "New" sub-menu). */
100
106
  .context-menu-header {
101
107
  padding: 4px 12px 2px;
102
108
  cursor: default;
@@ -0,0 +1,66 @@
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
+
14
+ .dropdown-group-label {
15
+ font-size: 0.75em;
16
+ color: var(--psp-inactive--color);
17
+ &:not(:first-of-type) {
18
+ margin-top: 16px;
19
+ }
20
+ }
21
+
22
+ .dropdown-group-label[data-label="new-from-table"]::before {
23
+ content: var(--psp-label--new-from-table--content, var(--psp-missing));
24
+ }
25
+
26
+ .dropdown-group-label[data-label="new-from-panel"]::before {
27
+ content: var(--psp-label--new-from-panel--content, var(--psp-missing));
28
+ }
29
+
30
+ .dropdown-group-sublabel {
31
+ font-size: 0.75em;
32
+ text-transform: uppercase;
33
+ color: var(--psp-inactive--color);
34
+ margin-top: 6px;
35
+ }
36
+
37
+ .dropdown-group-container {
38
+ display: flex;
39
+ flex-direction: column;
40
+ margin: 0;
41
+ }
42
+
43
+ .dropdown-group-label,
44
+ .dropdown-group-sublabel,
45
+ .dropdown-group-container > span,
46
+ .no-results {
47
+ display: inline-flex;
48
+ align-items: center;
49
+ margin: 0 -8px;
50
+ padding: 0 8px;
51
+ }
52
+
53
+ .dropdown-menu-item {
54
+ cursor: pointer;
55
+ min-height: 22px;
56
+ &:hover {
57
+ background-color: var(--psp--color);
58
+ color: var(--psp--background-color);
59
+ }
60
+ }
61
+
62
+ .no-results {
63
+ font-style: italic;
64
+ padding: 6px 24px;
65
+ color: #ccc;
66
+ }
@@ -11,15 +11,17 @@
11
11
  * ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
12
12
  */
13
13
 
14
+ @import "./dropdown-menu-items.css";
15
+
14
16
  :host {
15
- position: fixed;
16
- z-index: 10000;
17
+ overflow: visible;
18
+ background-color: var(--psp--background-color, #ffffff);
19
+ color: var(--psp--color, #161616);
20
+ border: 1px solid var(--psp-inactive--color, #ababab);
21
+ border-radius: 0 0 2px 2px;
17
22
  outline: none;
18
- font-size: 0.75em;
19
- border: inherit;
20
- box-shadow: 0 2px 4px 0 rgb(0 0 0 / 10%);
23
+ box-shadow: var(--psp-dropdown--box-shadow);
21
24
  user-select: none;
22
- background-color: white;
23
25
  padding: 8px;
24
26
 
25
27
  display: flex;
@@ -45,51 +47,4 @@
45
47
  color: var(--psp-error--color, #ff0000);
46
48
  border-color: var(--psp-error--color, #ff0000);
47
49
  }
48
-
49
- .selected {
50
- background-color: rgba(0, 0, 0, 0.05);
51
- }
52
-
53
- .dropdown-group-label {
54
- color: var(--psp-inactive--color);
55
-
56
- &:not(:first-of-type) {
57
- margin-top: 16px;
58
- }
59
- }
60
-
61
- .dropdown-group-container {
62
- display: flex;
63
- flex-direction: column;
64
- margin: 0;
65
- }
66
-
67
- span {
68
- min-height: 22px;
69
- display: inline-flex;
70
- align-items: center;
71
- margin: 0 -8px;
72
- padding: 0 8px;
73
- }
74
-
75
- .dropdown-group-container span {
76
- cursor: pointer;
77
- }
78
-
79
- .no-results {
80
- font-style: italics;
81
- padding: 6px 24px;
82
- color: #ccc;
83
- }
84
- }
85
-
86
- :host(:hover) {
87
- .selected {
88
- background-color: transparent;
89
- }
90
-
91
- .dropdown-group-container span:hover {
92
- background-color: var(--psp--color);
93
- color: var(--psp--background-color);
94
- }
95
50
  }
@@ -13,13 +13,23 @@
13
13
 
14
14
  :host {
15
15
  #format-tab {
16
- overflow: scroll;
16
+ overflow: auto;
17
+ scrollbar-gutter: stable;
18
+ }
19
+
20
+ #style-tab {
21
+ margin-right: -6px;
22
+ #column-style-container {
23
+ margin-right: 6px;
24
+ }
17
25
  }
18
26
 
19
27
  #plugin-tab {
20
28
  overflow-x: hidden;
21
- overflow-y: scroll;
22
- padding: 12px 0 0 0;
29
+ overflow-y: auto;
30
+ scrollbar-gutter: stable;
31
+ padding: 12px 0 0 8px;
32
+ margin-left: -8px;
23
33
  }
24
34
 
25
35
  .tab-content {
@@ -33,6 +33,25 @@
33
33
  bottom: 0px;
34
34
  cursor: pointer;
35
35
  }
36
+
37
+ .select-arrow {
38
+ position: absolute;
39
+ pointer-events: none;
40
+ top: 50%;
41
+ right: 6px;
42
+ width: 6px;
43
+ height: 4px;
44
+ transform: translateY(-50%);
45
+ background-color: currentColor;
46
+ -webkit-mask-image: var(--psp-icon--select-arrow--mask-image);
47
+ mask-image: var(--psp-icon--select-arrow--mask-image);
48
+ -webkit-mask-repeat: no-repeat;
49
+ mask-repeat: no-repeat;
50
+ -webkit-mask-position: center;
51
+ mask-position: center;
52
+ -webkit-mask-size: contain;
53
+ mask-size: contain;
54
+ }
36
55
  }
37
56
 
38
57
  select {
@@ -46,14 +65,6 @@
46
65
  /* font-size: 10px; */
47
66
  font-family: inherit;
48
67
  background-color: transparent;
49
- background-image: var(--psp-icon--select-arrow--mask-image);
50
- background-position: right 2px center;
51
- background-repeat: no-repeat;
52
-
53
- &.invert:focus-within,
54
- &.invert:hover {
55
- background-image: var(--psp-icon--select-arrow-hover--mask-image);
56
- }
57
68
 
58
69
  option {
59
70
  color: var(--psp--color, inherit);