@veltra/sheet 2.1.1 → 2.3.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 (212) hide show
  1. package/dist/components/report/binding-badge.js +100 -0
  2. package/dist/components/report/designer/cell-coords.js +46 -0
  3. package/dist/components/report/designer/col-widths.js +29 -0
  4. package/dist/components/report/designer/conditional-rules/helpers.js +139 -0
  5. package/dist/components/report/designer/drop-highlight-overlay.js +76 -0
  6. package/dist/components/report/designer/float-panel.js +422 -0
  7. package/dist/components/report/designer/role.js +17 -0
  8. package/dist/components/report/designer/rule-preview.js +33 -0
  9. package/dist/components/report/designer/rule-row.js +253 -0
  10. package/dist/components/report/designer/rules-dialog.js +118 -0
  11. package/dist/components/report/designer/topology-overlay.js +122 -0
  12. package/dist/components/report/designer/topology.js +64 -0
  13. package/dist/components/report/designer/use-grid-overlay.js +75 -0
  14. package/dist/components/report/designer-hub.js +177 -0
  15. package/dist/components/report/field-panel-helpers.js +33 -0
  16. package/dist/components/report/field-panel.js +132 -0
  17. package/dist/components/report/filter-bar.js +74 -0
  18. package/dist/components/report/hub-connection-form.js +145 -0
  19. package/dist/components/report/hub-dataset-editor.js +394 -0
  20. package/dist/components/report/preview-grid-size.js +32 -0
  21. package/dist/components/report/report-designer.js +393 -0
  22. package/dist/components/report/report-viewer.js +124 -0
  23. package/dist/components/report/style.d.ts +17 -0
  24. package/dist/components/report/style.js +18 -0
  25. package/dist/components/report/style2.css +874 -0
  26. package/dist/components/report/use-report-designer.js +382 -0
  27. package/dist/components/report/use-report-viewer.js +55 -0
  28. package/dist/{vue → components/sheet}/formula-bar.js +1 -1
  29. package/dist/{vue → components/sheet}/formula-suggest-list.js +1 -1
  30. package/dist/{vue → components/sheet}/import-file.js +1 -1
  31. package/dist/{vue → components/sheet}/insert-count-menu-item.js +1 -1
  32. package/dist/{vue → components/sheet}/insert-image.js +1 -1
  33. package/dist/{vue → components/sheet}/popup-helpers.js +1 -1
  34. package/dist/{vue → components/sheet}/popups/border-popup.js +31 -3
  35. package/dist/{vue → components/sheet}/popups/border-preset-glyph.js +1 -1
  36. package/dist/{vue → components/sheet}/popups/export-popup.js +2 -2
  37. package/dist/{vue → components/sheet}/popups/fill-color-popup.js +3 -3
  38. package/dist/{vue → components/sheet}/popups/find-popup.js +1 -1
  39. package/dist/{vue → components/sheet}/popups/font-color-popup.js +3 -3
  40. package/dist/{vue → components/sheet}/popups/font-size-popup.js +3 -3
  41. package/dist/{vue → components/sheet}/popups/import.worker.d.ts +1 -1
  42. package/dist/{vue → components/sheet}/popups/import.worker.js +1 -1
  43. package/dist/{vue → components/sheet}/popups/insert-image-popup.js +1 -1
  44. package/dist/{vue → components/sheet}/sheet-context-menu.js +7 -4
  45. package/dist/{vue → components/sheet}/sheet-tabs.js +1 -1
  46. package/dist/{vue → components/sheet}/sheet-toolbar.js +1 -1
  47. package/dist/{vue → components/sheet}/sheet.js +16 -1
  48. package/dist/{vue → components/sheet}/use-find-replace.js +1 -1
  49. package/dist/{vue → components/sheet}/use-formula-ref-select.js +1 -1
  50. package/dist/{vue → components/sheet}/use-sheet-grid.js +22 -4
  51. package/dist/{vue → components/sheet}/use-sheet-state.js +6 -5
  52. package/dist/{vue → components/sheet}/use-sheet-tabs-bar.js +1 -1
  53. package/dist/{vue → components/sheet}/use-tool-groups.js +2 -2
  54. package/dist/{vue → components/sheet}/use-tool-popup.js +2 -2
  55. package/dist/{vue → components/sheet}/use-toolbar-scroll.js +1 -1
  56. package/dist/index.d.ts +17 -3
  57. package/dist/index.js +13 -3
  58. package/dist/report/binding.d.ts +83 -0
  59. package/dist/report/binding.js +332 -0
  60. package/dist/report/connector.d.ts +66 -0
  61. package/dist/report/connector.js +159 -0
  62. package/dist/report/export-xlsx.d.ts +17 -0
  63. package/dist/report/export-xlsx.js +92 -0
  64. package/dist/report/filter-bar.d.ts +10 -0
  65. package/dist/report/filter-bar.js +31 -0
  66. package/dist/report/index.d.ts +12 -0
  67. package/dist/report/params.d.ts +13 -0
  68. package/dist/report/params.js +61 -0
  69. package/dist/report/render/aggregate.js +169 -0
  70. package/dist/report/render/builder.d.ts +12 -0
  71. package/dist/report/render/builder.js +139 -0
  72. package/dist/report/render/coordinate.d.ts +25 -0
  73. package/dist/report/render/coordinate.js +733 -0
  74. package/dist/report/render/index.d.ts +14 -0
  75. package/dist/report/render/index.js +21 -0
  76. package/dist/report/render/style-resolver.js +50 -0
  77. package/dist/report/render/template-index.d.ts +24 -0
  78. package/dist/report/render/template-index.js +137 -0
  79. package/dist/report/rules/evaluate.d.ts +25 -0
  80. package/dist/report/rules/evaluate.js +82 -0
  81. package/dist/report/rules/index.d.ts +2 -0
  82. package/dist/report/template.d.ts +63 -0
  83. package/dist/report/template.js +83 -0
  84. package/dist/report/types.d.ts +85 -0
  85. package/dist/tools/apply-style.js +29 -0
  86. package/dist/tools/builtin.js +17 -17
  87. package/dist/tools/context.d.ts +39 -6
  88. package/dist/tools/context.js +38 -1
  89. package/dist/types/index.d.ts +3 -2
  90. package/dist/types/report-designer.d.ts +38 -0
  91. package/dist/types/report-viewer.d.ts +38 -0
  92. package/dist/types/sheet.d.ts +21 -1
  93. package/package.json +6 -8
  94. package/src/components/report/__test__/conditional-rules-helpers.test.ts +88 -0
  95. package/src/components/report/__test__/field-panel-helpers.test.ts +65 -0
  96. package/src/components/report/__test__/float-panel-position.test.ts +45 -0
  97. package/src/components/report/__test__/preview-grid-size.test.ts +63 -0
  98. package/src/components/report/__test__/report-designer.test.ts +464 -0
  99. package/src/components/report/__test__/report-viewer.test.ts +357 -0
  100. package/src/components/report/__test__/topology.test.ts +143 -0
  101. package/src/components/report/__test__/use-report-designer.test.ts +697 -0
  102. package/src/components/report/binding-badge.ts +92 -0
  103. package/src/components/report/designer/cell-coords.ts +94 -0
  104. package/src/components/report/designer/col-widths.ts +56 -0
  105. package/src/components/report/designer/conditional-rules/helpers.ts +189 -0
  106. package/src/components/report/designer/drop-highlight-overlay.vue +74 -0
  107. package/src/components/report/designer/float-panel.vue +431 -0
  108. package/src/components/report/designer/role.ts +32 -0
  109. package/src/components/report/designer/rule-preview.vue +40 -0
  110. package/src/components/report/designer/rule-row.vue +252 -0
  111. package/src/components/report/designer/rules-dialog.vue +110 -0
  112. package/src/components/report/designer/topology-overlay.vue +127 -0
  113. package/src/components/report/designer/topology.ts +124 -0
  114. package/src/components/report/designer/use-grid-overlay.ts +113 -0
  115. package/src/components/report/designer-hub.vue +198 -0
  116. package/src/components/report/field-panel-helpers.ts +44 -0
  117. package/src/components/report/field-panel.vue +136 -0
  118. package/src/components/report/filter-bar.vue +77 -0
  119. package/src/components/report/hub-connection-form.vue +124 -0
  120. package/src/components/report/hub-dataset-editor.vue +369 -0
  121. package/src/components/report/index.ts +2 -0
  122. package/src/components/report/preview-grid-size.ts +33 -0
  123. package/src/components/report/report-designer.vue +420 -0
  124. package/src/components/report/report-viewer.vue +136 -0
  125. package/src/components/report/style-designer.scss +587 -0
  126. package/src/components/report/style-hub.scss +292 -0
  127. package/src/components/report/style-viewer.scss +104 -0
  128. package/src/components/report/style.scss +3 -0
  129. package/src/components/report/style.ts +20 -0
  130. package/src/components/report/use-report-designer.ts +596 -0
  131. package/src/components/report/use-report-viewer.ts +88 -0
  132. package/src/{vue → components/sheet}/__test__/formula-bar.test.ts +37 -18
  133. package/src/{vue → components/sheet}/__test__/insert-image-popup.test.ts +1 -1
  134. package/src/{vue → components/sheet}/__test__/insert-image.test.ts +1 -1
  135. package/src/{vue → components/sheet}/__test__/sheet-component.test.ts +77 -3
  136. package/src/{vue → components/sheet}/__test__/sheet-context-menu.test.ts +4 -3
  137. package/src/{vue → components/sheet}/formula-bar.vue +1 -1
  138. package/src/{vue → components/sheet}/insert-image.ts +1 -1
  139. package/src/{vue → components/sheet}/popup-helpers.ts +1 -1
  140. package/src/{vue → components/sheet}/popups/border-popup.vue +32 -4
  141. package/src/{vue → components/sheet}/popups/export-popup.vue +2 -2
  142. package/src/{vue → components/sheet}/popups/fill-color-popup.vue +3 -3
  143. package/src/{vue → components/sheet}/popups/find-popup.vue +1 -1
  144. package/src/{vue → components/sheet}/popups/font-color-popup.vue +3 -3
  145. package/src/{vue → components/sheet}/popups/font-size-popup.vue +3 -3
  146. package/src/{vue → components/sheet}/popups/insert-image-popup.vue +1 -1
  147. package/src/{vue → components/sheet}/sheet-context-menu.ts +10 -4
  148. package/src/{vue → components/sheet}/sheet-toolbar.vue +2 -2
  149. package/src/{vue → components/sheet}/sheet.vue +6 -3
  150. package/src/{vue → components/sheet}/use-find-replace.ts +1 -1
  151. package/src/{vue → components/sheet}/use-sheet-grid.ts +23 -5
  152. package/src/{vue → components/sheet}/use-sheet-state.ts +11 -6
  153. package/src/{vue → components/sheet}/use-tool-groups.ts +2 -2
  154. package/src/{vue → components/sheet}/use-tool-popup.ts +2 -2
  155. package/src/index.ts +24 -188
  156. package/src/report/__test__/binding.test.ts +320 -0
  157. package/src/report/__test__/connector.test.ts +239 -0
  158. package/src/report/__test__/export-xlsx.test.ts +118 -0
  159. package/src/report/__test__/filter-bar.test.ts +58 -0
  160. package/src/report/__test__/params.test.ts +156 -0
  161. package/src/report/__test__/render.test.ts +830 -0
  162. package/src/report/__test__/rules.test.ts +131 -0
  163. package/src/report/__test__/template.test.ts +366 -0
  164. package/src/report/binding.ts +474 -0
  165. package/src/report/connector.ts +206 -0
  166. package/src/report/export-xlsx.ts +113 -0
  167. package/src/report/filter-bar.ts +36 -0
  168. package/src/report/index.ts +13 -0
  169. package/src/report/params.ts +96 -0
  170. package/src/report/render/__test__/aggregate.test.ts +16 -0
  171. package/src/report/render/__test__/coordinate.test.ts +405 -0
  172. package/src/report/render/aggregate.ts +261 -0
  173. package/src/report/render/builder.ts +211 -0
  174. package/src/report/render/coordinate.ts +1239 -0
  175. package/src/report/render/index.ts +30 -0
  176. package/src/report/render/style-resolver.ts +68 -0
  177. package/src/report/render/template-index.ts +200 -0
  178. package/src/report/rules/evaluate.ts +113 -0
  179. package/src/report/rules/index.ts +7 -0
  180. package/src/report/template.ts +145 -0
  181. package/src/report/types.ts +96 -0
  182. package/src/tools/__test__/apply-style.test.ts +129 -0
  183. package/src/tools/apply-style.ts +41 -0
  184. package/src/tools/builtin.ts +20 -20
  185. package/src/tools/context.ts +67 -4
  186. package/src/tools/index.ts +1 -0
  187. package/src/types/index.ts +2 -6
  188. package/src/types/report-designer.ts +38 -0
  189. package/src/types/report-viewer.ts +37 -0
  190. package/src/types/sheet.ts +26 -1
  191. /package/dist/{vue → components/sheet}/style.d.ts +0 -0
  192. /package/dist/{vue → components/sheet}/style.js +0 -0
  193. /package/dist/{vue → components/sheet}/style2.css +0 -0
  194. /package/dist/{vue → components/sheet}/use-formula-suggest.js +0 -0
  195. /package/src/{vue → components/sheet}/__test__/import-file.test.ts +0 -0
  196. /package/src/{vue → components/sheet}/__test__/insert-count-menu-item.test.ts +0 -0
  197. /package/src/{vue → components/sheet}/__test__/use-formula-ref-select.test.ts +0 -0
  198. /package/src/{vue → components/sheet}/__test__/use-formula-suggest.test.ts +0 -0
  199. /package/src/{vue → components/sheet}/formula-suggest-list.vue +0 -0
  200. /package/src/{vue → components/sheet}/import-file.ts +0 -0
  201. /package/src/{vue → components/sheet}/index.ts +0 -0
  202. /package/src/{vue → components/sheet}/insert-count-menu-item.vue +0 -0
  203. /package/src/{vue → components/sheet}/parsing.ts +0 -0
  204. /package/src/{vue → components/sheet}/popups/border-preset-glyph.vue +0 -0
  205. /package/src/{vue → components/sheet}/popups/import.worker.ts +0 -0
  206. /package/src/{vue → components/sheet}/sheet-tabs.vue +0 -0
  207. /package/src/{vue → components/sheet}/style.scss +0 -0
  208. /package/src/{vue → components/sheet}/style.ts +0 -0
  209. /package/src/{vue → components/sheet}/use-formula-ref-select.ts +0 -0
  210. /package/src/{vue → components/sheet}/use-formula-suggest.ts +0 -0
  211. /package/src/{vue → components/sheet}/use-sheet-tabs-bar.ts +0 -0
  212. /package/src/{vue → components/sheet}/use-toolbar-scroll.ts +0 -0
@@ -0,0 +1,587 @@
1
+ @use 'pkg:@veltra/styles/mixins' as m;
2
+ @use 'pkg:@veltra/styles/functions' as fn;
3
+
4
+ @include m.b(report-designer) {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: fn.use-var(gap, default);
8
+ min-height: 0;
9
+ height: 100%;
10
+
11
+ @include m.e(toolbar) {
12
+ display: flex;
13
+ flex-wrap: wrap;
14
+ align-items: center;
15
+ gap: fn.use-var(gap, small);
16
+ flex-shrink: 0;
17
+ }
18
+
19
+ @include m.e(hint) {
20
+ font-size: fn.use-var(font-size-main, small);
21
+ color: fn.use-var(text-color, second);
22
+ }
23
+
24
+ @include m.e(body) {
25
+ display: flex;
26
+ flex: 1;
27
+ min-height: 0;
28
+ gap: fn.use-var(gap, default);
29
+ }
30
+
31
+ @include m.e(mode-toggle) {
32
+ display: inline-flex;
33
+ gap: 4px;
34
+ }
35
+
36
+ /* 预览态:内嵌查看器路径(UReportViewer 撑满) */
37
+ @include m.e(preview) {
38
+ display: flex;
39
+ flex-direction: column;
40
+ flex: 1;
41
+ min-height: 0;
42
+
43
+ .u-report-viewer {
44
+ flex: 1;
45
+ min-height: 0;
46
+ }
47
+ }
48
+
49
+ @include m.e(grid) {
50
+ position: relative;
51
+ flex: 1;
52
+ min-width: 0;
53
+ min-height: 0;
54
+ display: flex;
55
+ flex-direction: column;
56
+ }
57
+
58
+ /* USheet 根为 flex 列,grid 区 flex:1;宿主必须给 .u-sheet 明确高度 */
59
+ @include m.e(sheet) {
60
+ flex: 1;
61
+ min-height: 0;
62
+ min-width: 0;
63
+ }
64
+
65
+ @include m.e(pick-hint) {
66
+ position: absolute;
67
+ left: 50%;
68
+ bottom: fn.use-var(gap, small);
69
+ z-index: 17;
70
+ transform: translateX(-50%);
71
+ padding: 4px fn.use-var(gap, small);
72
+ border-radius: fn.use-var(radius, default);
73
+ background: color-mix(in srgb, fn.use-var(bg-color, top) 92%, transparent);
74
+ border: 1px dashed fn.use-var(color, primary);
75
+ font-size: fn.use-var(font-size-main, small);
76
+ color: fn.use-var(text-color, second);
77
+ pointer-events: none;
78
+ white-space: nowrap;
79
+ }
80
+
81
+ /* 数据中枢 drawer 面板宽度(class 经 $attrs 落到 .u-drawer 面板;须压过 .u-drawer.is-right 的 320px) */
82
+ @include m.e(hub-drawer) {
83
+ &.u-drawer {
84
+ width: min(960px, 92vw);
85
+ max-width: 92vw;
86
+ }
87
+ }
88
+ }
89
+
90
+ /* 拓扑连线覆层(SVG 弧线,选中绑定格时高亮父子扩展依赖) */
91
+ @include m.b(report-topology) {
92
+ position: absolute;
93
+ inset: 0;
94
+ z-index: 12;
95
+ pointer-events: none;
96
+ overflow: visible;
97
+
98
+ @include m.e(arc) {
99
+ fill: none;
100
+ stroke-width: 2;
101
+ stroke-linecap: round;
102
+ opacity: 0.72;
103
+
104
+ @include m.em(arc, row) {
105
+ stroke: fn.use-var(color, primary);
106
+ }
107
+
108
+ @include m.em(arc, col) {
109
+ stroke: fn.use-var(color, warning);
110
+ stroke-dasharray: 6 4;
111
+ }
112
+ }
113
+ }
114
+
115
+ /* 字段拖拽落点高亮(虚线框;落空时提示回退当前选区) */
116
+ @include m.b(report-drop-highlight) {
117
+ position: absolute;
118
+ z-index: 16;
119
+ box-sizing: border-box;
120
+ border: 2px dashed fn.use-var(color, primary);
121
+ border-radius: 2px;
122
+ background: color-mix(in srgb, fn.use-var(color, primary) 10%, transparent);
123
+ pointer-events: none;
124
+
125
+ @include m.e(fallback) {
126
+ position: absolute;
127
+ left: 50%;
128
+ bottom: fn.use-var(gap, small);
129
+ z-index: 16;
130
+ transform: translateX(-50%);
131
+ padding: 4px fn.use-var(gap, small);
132
+ border-radius: fn.use-var(radius, default);
133
+ background: color-mix(in srgb, fn.use-var(bg-color, top) 92%, transparent);
134
+ border: 1px dashed fn.use-var(color, primary);
135
+ font-size: fn.use-var(font-size-main, small);
136
+ color: fn.use-var(text-color, second);
137
+ pointer-events: none;
138
+ white-space: nowrap;
139
+ }
140
+ }
141
+
142
+ /* Action Pill:选中绑定格上方的悬浮编辑卡(预设 + 互补的展开/聚合 / 条件样式 / 排序 / 清除绑定) */
143
+ @include m.b(report-float-panel) {
144
+ position: absolute;
145
+ z-index: 18;
146
+ display: flex;
147
+ flex-direction: column;
148
+ width: max-content;
149
+ min-width: 400px;
150
+ max-width: min(480px, calc(100% - 20px));
151
+ border: fn.use-var(border);
152
+ border-radius: 10px;
153
+ background: fn.use-var(bg-color, top);
154
+ box-shadow: 0 8px 24px rgb(15 23 42 / 12%);
155
+ pointer-events: auto;
156
+
157
+ @include m.m(above) {
158
+ transform: translate(-50%, -100%);
159
+ }
160
+
161
+ @include m.m(below) {
162
+ transform: translate(-50%, 0);
163
+ }
164
+
165
+ @include m.e(bar) {
166
+ display: flex;
167
+ flex-direction: column;
168
+ gap: 6px;
169
+ padding: 8px 10px;
170
+ }
171
+
172
+ @include m.e(summary) {
173
+ font-size: 12px;
174
+ font-weight: 600;
175
+ line-height: 1.35;
176
+ color: fn.use-var(color, primary);
177
+ white-space: nowrap;
178
+ overflow: hidden;
179
+ text-overflow: ellipsis;
180
+ }
181
+
182
+ @include m.e(toolbar) {
183
+ display: flex;
184
+ align-items: center;
185
+ gap: 6px;
186
+ flex-wrap: wrap;
187
+ }
188
+
189
+ @include m.e(select) {
190
+ flex: none;
191
+
192
+ @include m.em(select, role) {
193
+ width: 84px;
194
+ }
195
+
196
+ @include m.em(select, aggregate) {
197
+ width: 76px;
198
+ }
199
+ }
200
+
201
+ @include m.e(expand) {
202
+ flex: none;
203
+ margin-left: auto;
204
+ padding-inline: 6px;
205
+ }
206
+
207
+ @include m.e(body) {
208
+ display: flex;
209
+ flex-direction: column;
210
+ gap: 10px;
211
+ padding: 10px 12px 12px;
212
+ border-top: fn.use-var(border-muted);
213
+ background: fn.use-var(bg-color, middle);
214
+ }
215
+
216
+ @include m.e(section) {
217
+ display: flex;
218
+ flex-direction: column;
219
+ gap: 6px;
220
+ }
221
+
222
+ @include m.e(section-label) {
223
+ font-size: 12px;
224
+ font-weight: 600;
225
+ color: fn.use-var(text-color, second);
226
+ }
227
+
228
+ @include m.e(hint) {
229
+ margin: 0;
230
+ font-size: 12px;
231
+ color: fn.use-var(text-color, second);
232
+ }
233
+
234
+ @include m.e(parent-actions) {
235
+ display: flex;
236
+ align-items: center;
237
+ gap: 6px;
238
+ flex-wrap: wrap;
239
+ }
240
+
241
+ @include m.e(parent-select) {
242
+ width: 180px;
243
+ flex: none;
244
+ }
245
+
246
+ @include m.em(select, expand) {
247
+ width: 76px;
248
+ }
249
+
250
+ @include m.e(footer) {
251
+ display: flex;
252
+ justify-content: flex-end;
253
+ padding-top: 4px;
254
+ margin-top: 2px;
255
+ border-top: fn.use-var(border-muted);
256
+ }
257
+ }
258
+
259
+ /* 条件样式规则对话框内容 */
260
+ @include m.b(report-rules-dialog) {
261
+ display: flex;
262
+ flex-direction: column;
263
+ gap: 10px;
264
+
265
+ @include m.e(hint) {
266
+ margin: 0;
267
+ font-size: 12px;
268
+ line-height: 1.5;
269
+ color: fn.use-var(text-color, second);
270
+ }
271
+
272
+ @include m.e(list) {
273
+ margin: 0;
274
+ padding: 0;
275
+ list-style: none;
276
+ display: flex;
277
+ flex-direction: column;
278
+ gap: 8px;
279
+ max-height: 420px;
280
+ overflow: auto;
281
+ }
282
+
283
+ @include m.e(item) {
284
+ margin: 0;
285
+ }
286
+
287
+ @include m.e(empty) {
288
+ margin: 0;
289
+ font-size: 12px;
290
+ color: fn.use-var(text-color, second);
291
+ }
292
+ }
293
+
294
+ @include m.b(report-rule-row) {
295
+ display: flex;
296
+ align-items: flex-start;
297
+ gap: 8px;
298
+ padding: 10px 10px 10px 6px;
299
+ border: fn.use-var(border-muted);
300
+ border-radius: 8px;
301
+ background: fn.use-var(bg-color, middle);
302
+
303
+ @include m.e(handle) {
304
+ flex: none;
305
+ width: 16px;
306
+ margin-top: 6px;
307
+ color: fn.use-var(text-color, placeholder);
308
+ font-size: 12px;
309
+ letter-spacing: -1px;
310
+ line-height: 1;
311
+ cursor: grab;
312
+ user-select: none;
313
+ text-align: center;
314
+
315
+ &:active {
316
+ cursor: grabbing;
317
+ }
318
+ }
319
+
320
+ @include m.e(main) {
321
+ flex: 1;
322
+ min-width: 0;
323
+ display: flex;
324
+ flex-direction: column;
325
+ gap: 8px;
326
+ }
327
+
328
+ @include m.e(when) {
329
+ display: flex;
330
+ align-items: center;
331
+ gap: 6px;
332
+ flex-wrap: wrap;
333
+ }
334
+
335
+ @include m.e(then) {
336
+ display: flex;
337
+ align-items: center;
338
+ gap: 6px;
339
+ flex-wrap: wrap;
340
+ }
341
+
342
+ @include m.e(lead) {
343
+ flex: none;
344
+ font-size: 12px;
345
+ color: fn.use-var(text-color, second);
346
+ }
347
+
348
+ @include m.e(field-select) {
349
+ width: 128px;
350
+ flex: none;
351
+ }
352
+
353
+ @include m.e(operator) {
354
+ width: 96px;
355
+ flex: none;
356
+ }
357
+
358
+ @include m.e(value) {
359
+ display: flex;
360
+ align-items: center;
361
+ gap: 6px;
362
+ flex: 0 1 auto;
363
+ min-width: 0;
364
+ }
365
+
366
+ @include m.e(scalar-input) {
367
+ width: 120px;
368
+ flex: none;
369
+ }
370
+
371
+ @include m.e(between-input) {
372
+ width: 88px;
373
+ flex: none;
374
+ }
375
+
376
+ @include m.e(between-sep) {
377
+ font-size: 12px;
378
+ color: fn.use-var(text-color, second);
379
+ }
380
+
381
+ @include m.e(toggle) {
382
+ min-width: 28px;
383
+ padding-inline: 6px;
384
+ }
385
+
386
+ @include m.e(preview) {
387
+ flex: none;
388
+ }
389
+
390
+ @include m.e(remove) {
391
+ flex: none;
392
+ margin-top: 2px;
393
+ }
394
+ }
395
+
396
+ @include m.b(report-rule-preview) {
397
+ display: inline-flex;
398
+ align-items: center;
399
+ justify-content: center;
400
+ min-width: 36px;
401
+ height: 28px;
402
+ padding: 0 8px;
403
+ border: fn.use-var(border);
404
+ border-radius: 4px;
405
+ font-size: 13px;
406
+ line-height: 1;
407
+ box-sizing: border-box;
408
+
409
+ @include m.m(row) {
410
+ min-width: 48px;
411
+ font-size: 11px;
412
+ }
413
+ }
414
+
415
+ @include m.b(report-field-panel) {
416
+ width: 220px;
417
+ flex-shrink: 0;
418
+ overflow: auto;
419
+ padding: fn.use-var(gap, default);
420
+ border: fn.use-var(border);
421
+ border-radius: fn.use-var(radius, default);
422
+ background: fn.use-var(bg-color, top);
423
+
424
+ @include m.e(title) {
425
+ margin: 0 0 4px;
426
+ font-size: fn.use-var(font-size-title, small);
427
+ font-weight: 600;
428
+ }
429
+
430
+ @include m.e(meta) {
431
+ display: flex;
432
+ align-items: center;
433
+ gap: fn.use-var(gap, small);
434
+ margin: 0 0 fn.use-var(gap, small);
435
+ font-size: fn.use-var(font-size-main, small);
436
+ color: fn.use-var(text-color, second);
437
+ }
438
+
439
+ @include m.e(search) {
440
+ margin-bottom: fn.use-var(gap, small);
441
+ }
442
+
443
+ @include m.e(hint) {
444
+ margin: 0 0 fn.use-var(gap, default);
445
+ font-size: fn.use-var(font-size-assist, small);
446
+ line-height: 1.45;
447
+ color: fn.use-var(text-color, second);
448
+ }
449
+
450
+ @include m.e(empty) {
451
+ margin: fn.use-var(gap, small) 0 0;
452
+ font-size: fn.use-var(font-size-main, small);
453
+ color: fn.use-var(text-color, second);
454
+ }
455
+
456
+ @include m.e(dataset) {
457
+ margin-bottom: fn.use-var(gap, default);
458
+ }
459
+
460
+ @include m.e(dataset-toggle) {
461
+ display: flex;
462
+ align-items: center;
463
+ gap: fn.use-var(gap, small);
464
+ width: 100%;
465
+ margin: 0 0 fn.use-var(gap, small);
466
+ padding: 0;
467
+ justify-content: flex-start;
468
+ height: auto;
469
+ min-height: 0;
470
+ color: inherit;
471
+ }
472
+
473
+ @include m.e(dataset-chevron) {
474
+ display: inline-block;
475
+ font-size: 11px;
476
+ color: fn.use-var(text-color, second);
477
+ transition: transform 0.15s ease;
478
+ transform: rotate(0deg);
479
+
480
+ @include m.is(expanded) {
481
+ transform: rotate(90deg);
482
+ }
483
+ }
484
+
485
+ @include m.e(dataset-name) {
486
+ flex: 1;
487
+ min-width: 0;
488
+ font-size: fn.use-var(font-size-main, small);
489
+ font-weight: 500;
490
+ overflow: hidden;
491
+ text-overflow: ellipsis;
492
+ white-space: nowrap;
493
+ }
494
+
495
+ @include m.e(dataset-count) {
496
+ flex-shrink: 0;
497
+ min-width: 18px;
498
+ padding: 0 6px;
499
+ border-radius: 999px;
500
+ background: fn.use-var(bg-color, hover);
501
+ font-size: 11px;
502
+ line-height: 18px;
503
+ text-align: center;
504
+ color: fn.use-var(text-color, second);
505
+ }
506
+
507
+ @include m.e(fields) {
508
+ display: flex;
509
+ flex-wrap: wrap;
510
+ gap: fn.use-var(gap, small);
511
+ }
512
+
513
+ @include m.e(pill) {
514
+ display: inline-flex;
515
+ align-items: center;
516
+ gap: 4px;
517
+ flex: 0 0 calc(50% - 3px);
518
+ min-width: 0;
519
+ max-width: calc(50% - 3px);
520
+ height: 24px;
521
+ padding: 0 8px 0 4px;
522
+ border: fn.use-var(border-muted);
523
+ border-radius: 999px;
524
+ background: fn.use-var(bg-color, top);
525
+ cursor: grab;
526
+ transition:
527
+ background 0.15s,
528
+ border-color 0.15s;
529
+ outline: none;
530
+
531
+ &:hover {
532
+ background: fn.use-var(bg-color, hover);
533
+ border-color: fn.use-var(color, primary);
534
+ }
535
+
536
+ &:active {
537
+ cursor: grabbing;
538
+ }
539
+
540
+ @include m.is(bound) {
541
+ border-color: fn.use-var(color, success);
542
+ }
543
+ }
544
+
545
+ @include m.e(pill-icon) {
546
+ flex-shrink: 0;
547
+ display: inline-flex;
548
+ align-items: center;
549
+ justify-content: center;
550
+ width: 16px;
551
+ height: 16px;
552
+ border-radius: 999px;
553
+ font-size: 10px;
554
+ font-weight: 700;
555
+ line-height: 1;
556
+ color: fn.use-var(color, info);
557
+ background: fn.use-var(color, info, light-9);
558
+
559
+ &[data-type='number'] {
560
+ color: fn.use-var(color, success);
561
+ background: fn.use-var(color, success, light-9);
562
+ }
563
+
564
+ &[data-type='date'] {
565
+ color: fn.use-var(color, warning);
566
+ background: fn.use-var(color, warning, light-9);
567
+ }
568
+ }
569
+
570
+ @include m.e(pill-label) {
571
+ flex: 1;
572
+ min-width: 0;
573
+ font-size: 11px;
574
+ font-weight: 500;
575
+ overflow: hidden;
576
+ text-overflow: ellipsis;
577
+ white-space: nowrap;
578
+ }
579
+
580
+ @include m.e(pill-bound) {
581
+ flex-shrink: 0;
582
+ color: fn.use-var(color, success);
583
+ font-size: 11px;
584
+ font-weight: 700;
585
+ line-height: 1;
586
+ }
587
+ }