@knime/kds-table 6.12.2 → 7.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,27 @@
1
1
  # @knime/kds-table
2
2
 
3
+ ## 7.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 2c25f9d: `TableUI`: added optional `rowCountItems` to `ActionConfig` — when given, the row count in the action bar becomes a dropdown offering these menu items (e.g. to choose how many rows to fetch), each carrying its own handler like `settingsItems`.
8
+ - 2c25f9d: `TableUI`: the action bar no longer replaces the table size with a "No data" placeholder when a table has neither rows nor columns; it shows the plain counts ("Rows: 0") instead.
9
+ - 2c25f9d: `TableUI`: `tableState.tableSizes.totalNumRows` may now be `null` for a table whose row count is unknown (e.g. a database table). The action bar then shows "Rows: -" instead of "Rows: 0", and never renders an "m of n" range against an unknown total.
10
+
11
+ ### Patch Changes
12
+
13
+ - Updated dependencies
14
+ - @knime/kds-components@7.1.0
15
+ - @knime/kds-styles@7.1.0
16
+
17
+ ## 7.0.0
18
+
19
+ ### Patch Changes
20
+
21
+ - Updated dependencies [f9928f3, 3ddf326, 2270bce, 6c94688, c2d1454, 16a64c0]
22
+ - @knime/kds-styles@7.0.0
23
+ - @knime/kds-components@7.0.0
24
+
3
25
  ## 6.12.2
4
26
 
5
27
  ### Patch Changes
package/dist/index.css CHANGED
@@ -215,7 +215,7 @@ tr {
215
215
  }
216
216
 
217
217
  .kds-table-action-bar {
218
- &[data-v-b0b2c849] {
218
+ &[data-v-6aefb7ab] {
219
219
  display: grid;
220
220
  grid-template-columns: 1fr 1fr 1fr;
221
221
  min-height: var(--kds-dimension-component-height-2-5x);
@@ -223,42 +223,61 @@ tr {
223
223
  padding-left: var(--kds-spacing-container-0-5x);
224
224
  border-bottom: var(--kds-border-base-subtle);
225
225
  }
226
- &.temporary-view[data-v-b0b2c849] {
226
+ &.temporary-view[data-v-6aefb7ab] {
227
227
  background-color: var(--kds-color-background-static-info-muted);
228
228
  }
229
- & .dimension[data-v-b0b2c849] {
230
- font: var(--kds-font-base-title-small);
231
- color: var(--kds-color-text-and-icon-muted);
229
+ & .dimension {
230
+ &[data-v-6aefb7ab] {
231
+ --dimension-font: var(--kds-font-base-title-small);
232
+ --dimension-color: var(--kds-color-text-and-icon-muted);
233
+
234
+ font: var(--dimension-font);
235
+ color: var(--dimension-color);
232
236
  white-space: pre;
237
+
238
+ /*
239
+ * Match the row-count dropdown trigger's label to the dimension text.
240
+ * :deep() is needed since KdsMenuButton is a multi-root component, so the
241
+ * scope id is not inherited by the button element the class lands on.
242
+ */
243
+ }
244
+ &.with-row-count-dropdown[data-v-6aefb7ab] {
245
+ display: inline-flex;
246
+ align-items: center;
247
+ }
248
+ &[data-v-6aefb7ab] .row-count-menu-button {
249
+ font: var(--dimension-font);
250
+ color: var(--dimension-color);
251
+ }
233
252
  }
234
253
  & .preview {
235
- &[data-v-b0b2c849] {
254
+ &[data-v-6aefb7ab] {
236
255
  display: flex;
237
256
  gap: var(--kds-spacing-container-0-12x);
238
257
  align-items: center;
239
258
  }
240
- & .preview-label[data-v-b0b2c849] {
259
+ & .preview-label[data-v-6aefb7ab] {
241
260
  font: var(--kds-font-base-title-small-strong);
242
261
  color: var(--kds-color-text-and-icon-neutral);
243
262
  }
244
263
  }
245
- & .left[data-v-b0b2c849],
246
- & .center[data-v-b0b2c849],
247
- & .right[data-v-b0b2c849] {
264
+ & .left[data-v-6aefb7ab],
265
+ & .center[data-v-6aefb7ab],
266
+ & .right[data-v-6aefb7ab] {
248
267
  display: flex;
249
268
  flex: 1;
250
269
  align-items: center;
251
270
  min-width: 0;
252
271
  padding: var(--kds-spacing-container-0-12x) 0;
253
272
  }
254
- & .left[data-v-b0b2c849],
255
- & .center[data-v-b0b2c849] {
273
+ & .left[data-v-6aefb7ab],
274
+ & .center[data-v-6aefb7ab] {
256
275
  gap: var(--kds-spacing-container-0-5x);
257
276
  }
258
- & .center[data-v-b0b2c849] {
277
+ & .center[data-v-6aefb7ab] {
259
278
  justify-content: center;
260
279
  }
261
- & .right[data-v-b0b2c849] {
280
+ & .right[data-v-6aefb7ab] {
262
281
  gap: var(--kds-spacing-container-0-25x);
263
282
  justify-content: flex-end;
264
283
  }
package/dist/index.js CHANGED
@@ -92,13 +92,13 @@ var border = {
92
92
  h: 345,
93
93
  s: 0,
94
94
  l: 11.4,
95
- alpha: 0
95
+ a: 0
96
96
  },
97
97
  dark: {
98
98
  h: 345,
99
99
  s: 0,
100
100
  l: 11.4,
101
- alpha: 0
101
+ a: 0
102
102
  }
103
103
  },
104
104
  width: {
@@ -117,13 +117,13 @@ var border = {
117
117
  h: 330,
118
118
  s: 0,
119
119
  l: 10.2,
120
- alpha: .4
120
+ a: .4
121
121
  },
122
122
  dark: {
123
123
  h: 330,
124
124
  s: 0,
125
125
  l: 99,
126
- alpha: .5
126
+ a: .5
127
127
  }
128
128
  },
129
129
  width: {
@@ -142,13 +142,13 @@ var border = {
142
142
  h: 0,
143
143
  s: 0,
144
144
  l: 72.5,
145
- alpha: 1
145
+ a: 1
146
146
  },
147
147
  dark: {
148
148
  h: 0,
149
149
  s: 0,
150
150
  l: 48.2,
151
- alpha: 1
151
+ a: 1
152
152
  }
153
153
  },
154
154
  width: {
@@ -167,13 +167,13 @@ var border = {
167
167
  h: 209.4,
168
168
  s: 57.3,
169
169
  l: 49.6,
170
- alpha: 1
170
+ a: 1
171
171
  },
172
172
  dark: {
173
173
  h: 213.6,
174
174
  s: 91.6,
175
175
  l: 76.7,
176
- alpha: 1
176
+ a: 1
177
177
  }
178
178
  },
179
179
  width: {
@@ -192,13 +192,13 @@ var border = {
192
192
  h: 171.8,
193
193
  s: 27,
194
194
  l: 47.8,
195
- alpha: 1
195
+ a: 1
196
196
  },
197
197
  dark: {
198
198
  h: 168,
199
199
  s: 46.7,
200
200
  l: 85.3,
201
- alpha: 1
201
+ a: 1
202
202
  }
203
203
  },
204
204
  width: {
@@ -217,13 +217,13 @@ var border = {
217
217
  h: 209.4,
218
218
  s: 57.3,
219
219
  l: 49.6,
220
- alpha: 1
220
+ a: 1
221
221
  },
222
222
  dark: {
223
223
  h: 213.6,
224
224
  s: 91.6,
225
225
  l: 76.7,
226
- alpha: 1
226
+ a: 1
227
227
  }
228
228
  },
229
229
  width: {
@@ -242,13 +242,13 @@ var border = {
242
242
  h: 348.8,
243
243
  s: 90.9,
244
244
  l: 34.5,
245
- alpha: 1
245
+ a: 1
246
246
  },
247
247
  dark: {
248
248
  h: 3.5,
249
249
  s: 100,
250
250
  l: 79.6,
251
- alpha: 1
251
+ a: 1
252
252
  }
253
253
  },
254
254
  width: {
@@ -267,13 +267,13 @@ var border = {
267
267
  h: 176.7,
268
268
  s: 82,
269
269
  l: 17.5,
270
- alpha: 1
270
+ a: 1
271
271
  },
272
272
  dark: {
273
273
  h: 176.7,
274
274
  s: 82,
275
275
  l: 17.5,
276
- alpha: 1
276
+ a: 1
277
277
  }
278
278
  },
279
279
  width: {
@@ -292,13 +292,13 @@ var border = {
292
292
  h: 330,
293
293
  s: 0,
294
294
  l: 10.2,
295
- alpha: .4
295
+ a: .4
296
296
  },
297
297
  dark: {
298
298
  h: 330,
299
299
  s: 0,
300
300
  l: 99,
301
- alpha: .5
301
+ a: .5
302
302
  }
303
303
  },
304
304
  width: {
@@ -319,13 +319,13 @@ var border = {
319
319
  h: 330,
320
320
  s: 0,
321
321
  l: 10.2,
322
- alpha: .4
322
+ a: .4
323
323
  },
324
324
  dark: {
325
325
  h: 330,
326
326
  s: 0,
327
327
  l: 99,
328
- alpha: .5
328
+ a: .5
329
329
  }
330
330
  },
331
331
  width: {
@@ -344,13 +344,13 @@ var border = {
344
344
  h: 330,
345
345
  s: 0,
346
346
  l: 10.2,
347
- alpha: .2
347
+ a: .2
348
348
  },
349
349
  dark: {
350
350
  h: 330,
351
351
  s: 0,
352
352
  l: 99,
353
- alpha: .2
353
+ a: .2
354
354
  }
355
355
  },
356
356
  width: {
@@ -369,13 +369,13 @@ var border = {
369
369
  h: 330,
370
370
  s: 0,
371
371
  l: 10.2,
372
- alpha: .1
372
+ a: .1
373
373
  },
374
374
  dark: {
375
375
  h: 330,
376
376
  s: 0,
377
377
  l: 99,
378
- alpha: .1
378
+ a: .1
379
379
  }
380
380
  },
381
381
  width: {
@@ -394,13 +394,13 @@ var border = {
394
394
  h: 50.8,
395
395
  s: 100,
396
396
  l: 50,
397
- alpha: 1
397
+ a: 1
398
398
  },
399
399
  dark: {
400
400
  h: 50.8,
401
401
  s: 100,
402
402
  l: 50,
403
- alpha: 1
403
+ a: 1
404
404
  }
405
405
  },
406
406
  width: {
@@ -419,13 +419,13 @@ var border = {
419
419
  h: 3.4,
420
420
  s: 100,
421
421
  l: 86.1,
422
- alpha: 1
422
+ a: 1
423
423
  },
424
424
  dark: {
425
425
  h: 348,
426
426
  s: 94.3,
427
427
  l: 20.8,
428
- alpha: 1
428
+ a: 1
429
429
  }
430
430
  },
431
431
  width: {
@@ -444,13 +444,13 @@ var border = {
444
444
  h: 30.8,
445
445
  s: 79.3,
446
446
  l: 73.5,
447
- alpha: 1
447
+ a: 1
448
448
  },
449
449
  dark: {
450
450
  h: 13.1,
451
451
  s: 66.1,
452
452
  l: 23.1,
453
- alpha: 1
453
+ a: 1
454
454
  }
455
455
  },
456
456
  width: {
@@ -469,13 +469,13 @@ var border = {
469
469
  h: 112,
470
470
  s: 56.5,
471
471
  l: 71.2,
472
- alpha: 1
472
+ a: 1
473
473
  },
474
474
  dark: {
475
475
  h: 123.7,
476
476
  s: 46.7,
477
477
  l: 20.6,
478
- alpha: 1
478
+ a: 1
479
479
  }
480
480
  },
481
481
  width: {
@@ -494,13 +494,13 @@ var border = {
494
494
  h: 214.5,
495
495
  s: 100,
496
496
  l: 84.3,
497
- alpha: 1
497
+ a: 1
498
498
  },
499
499
  dark: {
500
500
  h: 210,
501
501
  s: 50,
502
502
  l: 27.5,
503
- alpha: 1
503
+ a: 1
504
504
  }
505
505
  },
506
506
  width: {
@@ -521,13 +521,13 @@ var border = {
521
521
  h: 0,
522
522
  s: 0,
523
523
  l: 90.2,
524
- alpha: 1
524
+ a: 1
525
525
  },
526
526
  dark: {
527
527
  h: 0,
528
528
  s: 0,
529
529
  l: 32.2,
530
- alpha: 1
530
+ a: 1
531
531
  }
532
532
  },
533
533
  width: {
@@ -546,13 +546,13 @@ var border = {
546
546
  h: 348,
547
547
  s: 94.3,
548
548
  l: 20.8,
549
- alpha: 1
549
+ a: 1
550
550
  },
551
551
  dark: {
552
552
  h: 2.6,
553
553
  s: 100,
554
554
  l: 72.4,
555
- alpha: 1
555
+ a: 1
556
556
  }
557
557
  },
558
558
  width: {
@@ -571,13 +571,13 @@ var border = {
571
571
  h: 19,
572
572
  s: 63.1,
573
573
  l: 38.2,
574
- alpha: 1
574
+ a: 1
575
575
  },
576
576
  dark: {
577
577
  h: 49.1,
578
578
  s: 99.1,
579
579
  l: 43.7,
580
- alpha: 1
580
+ a: 1
581
581
  }
582
582
  },
583
583
  width: {
@@ -596,13 +596,13 @@ var border = {
596
596
  h: 116.1,
597
597
  s: 46.6,
598
598
  l: 25.7,
599
- alpha: 1
599
+ a: 1
600
600
  },
601
601
  dark: {
602
602
  h: 106.5,
603
603
  s: 42.6,
604
604
  l: 54.9,
605
- alpha: 1
605
+ a: 1
606
606
  }
607
607
  },
608
608
  width: {
@@ -623,13 +623,13 @@ var border = {
623
623
  h: 330,
624
624
  s: 0,
625
625
  l: 10.2,
626
- alpha: .4
626
+ a: .4
627
627
  },
628
628
  dark: {
629
629
  h: 330,
630
630
  s: 0,
631
631
  l: 99,
632
- alpha: .4
632
+ a: .4
633
633
  }
634
634
  },
635
635
  width: {
@@ -648,13 +648,13 @@ var border = {
648
648
  h: 330,
649
649
  s: 0,
650
650
  l: 10.2,
651
- alpha: .64
651
+ a: .64
652
652
  },
653
653
  dark: {
654
654
  h: 330,
655
655
  s: 0,
656
656
  l: 99,
657
- alpha: .58
657
+ a: .58
658
658
  }
659
659
  },
660
660
  width: {
@@ -673,13 +673,13 @@ var border = {
673
673
  h: 330,
674
674
  s: 0,
675
675
  l: 10.2,
676
- alpha: .74
676
+ a: .74
677
677
  },
678
678
  dark: {
679
679
  h: 330,
680
680
  s: 0,
681
681
  l: 99,
682
- alpha: .68
682
+ a: .68
683
683
  }
684
684
  },
685
685
  width: {
@@ -699,13 +699,13 @@ var border = {
699
699
  h: 0,
700
700
  s: 0,
701
701
  l: 99,
702
- alpha: 1
702
+ a: 1
703
703
  },
704
704
  dark: {
705
705
  h: 0,
706
706
  s: 0,
707
707
  l: 99,
708
- alpha: 1
708
+ a: 1
709
709
  }
710
710
  },
711
711
  width: {
@@ -5654,9 +5654,13 @@ var _hoisted_3$1 = {
5654
5654
  };
5655
5655
  var _hoisted_4$1 = {
5656
5656
  key: 1,
5657
+ class: "dimension with-row-count-dropdown"
5658
+ };
5659
+ var _hoisted_5 = {
5660
+ key: 2,
5657
5661
  class: "dimension"
5658
5662
  };
5659
- var _hoisted_5 = { class: "right" };
5663
+ var _hoisted_6 = { class: "right" };
5660
5664
  //#endregion
5661
5665
  //#region src/components/control/TableActionBar.vue
5662
5666
  var TableActionBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -5688,19 +5692,24 @@ var TableActionBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
5688
5692
  /**
5689
5693
  * Renders "total" by default, and "current of total" only when `current` is
5690
5694
  * given and strictly below `total`. The `current >= total` guard prevents an
5691
- * inconsistent "m of n" where m would not be smaller than n.
5695
+ * inconsistent "m of n" where m would not be smaller than n. An unknown total
5696
+ * (`null`) renders as "-".
5692
5697
  */
5693
5698
  const formatCount = (label, total, current) => {
5699
+ if (total === null) return `${label}: -`;
5694
5700
  return `${label}: ${current !== void 0 && current < total ? `${current} of ${total}` : total}`;
5695
5701
  };
5696
- const dimensionText = computed(() => {
5697
- const totalNumRows = __props.tableSizes?.totalNumRows ?? 0;
5702
+ const rowText = computed(() => formatCount(__props.rowLabel, __props.tableSizes ? __props.tableSizes.totalNumRows : 0, __props.tableSizes?.currentNumRows));
5703
+ const columnText = computed(() => {
5698
5704
  const totalNumColumns = __props.tableSizes?.totalNumColumns ?? 0;
5699
- if (totalNumRows === 0 && totalNumColumns === 0) return "No data";
5700
- const rowText = formatCount(__props.rowLabel, totalNumRows, __props.tableSizes?.currentNumRows);
5701
- if (totalNumColumns < 2) return rowText;
5702
- return `${rowText} | ${formatCount("Cols", totalNumColumns, __props.tableSizes?.currentNumColumns)}`;
5705
+ if (totalNumColumns < 2) return;
5706
+ return formatCount("Cols", totalNumColumns, __props.tableSizes?.currentNumColumns);
5703
5707
  });
5708
+ const dimensionText = computed(() => {
5709
+ if (columnText.value === void 0) return rowText.value;
5710
+ return `${rowText.value} | ${columnText.value}`;
5711
+ });
5712
+ const showRowCountDropdown = computed(() => Boolean(__props.actionConfig.rowCountItems?.length));
5704
5713
  const emit = __emit;
5705
5714
  return (_ctx, _cache) => {
5706
5715
  return hasContent.value ? (openBlock(), createElementBlock("div", {
@@ -5716,8 +5725,15 @@ var TableActionBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
5716
5725
  createElementVNode("div", _hoisted_2$3, [isPreview.value ? (openBlock(), createElementBlock("div", _hoisted_3$1, [_cache[3] || (_cache[3] = createElementVNode("span", { class: "preview-label" }, "Preview", -1)), __props.actionState?.previewDescription ? (openBlock(), createBlock(unref(KdsInfoToggleButton), {
5717
5726
  key: 0,
5718
5727
  content: __props.actionState.previewDescription
5719
- }, null, 8, ["content"])) : createCommentVNode("", true)])) : createCommentVNode("", true), __props.showTableSize ? (openBlock(), createElementBlock("span", _hoisted_4$1, toDisplayString(dimensionText.value), 1)) : createCommentVNode("", true)]),
5720
- createElementVNode("div", _hoisted_5, [
5728
+ }, null, 8, ["content"])) : createCommentVNode("", true)])) : createCommentVNode("", true), __props.showTableSize && showRowCountDropdown.value ? (openBlock(), createElementBlock("span", _hoisted_4$1, [createVNode(unref(KdsMenuButton), {
5729
+ class: "row-count-menu-button",
5730
+ label: rowText.value,
5731
+ size: "small",
5732
+ variant: "transparent",
5733
+ "trailing-icon": "chevron-down",
5734
+ items: __props.actionConfig.rowCountItems ?? []
5735
+ }, null, 8, ["label", "items"]), columnText.value ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [createTextVNode(toDisplayString(` | ${columnText.value}`), 1)], 64)) : createCommentVNode("", true)])) : __props.showTableSize ? (openBlock(), createElementBlock("span", _hoisted_5, toDisplayString(dimensionText.value), 1)) : createCommentVNode("", true)]),
5736
+ createElementVNode("div", _hoisted_6, [
5721
5737
  __props.actionConfig.enableSearch ? (openBlock(), createBlock(unref(KdsSearchInput), {
5722
5738
  key: 0,
5723
5739
  ariaLabel: "Search table",
@@ -5745,7 +5761,7 @@ var TableActionBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
5745
5761
  ], 2)) : createCommentVNode("", true);
5746
5762
  };
5747
5763
  }
5748
- }), [["__scopeId", "data-v-b0b2c849"]]);
5764
+ }), [["__scopeId", "data-v-6aefb7ab"]]);
5749
5765
  //#endregion
5750
5766
  //#region src/utils/columnHeaderActionButtons.ts
5751
5767
  /**