@meshmakers/shared-ui 3.4.370 → 3.4.380

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@meshmakers/shared-ui",
3
- "version": "3.4.370",
3
+ "version": "3.4.380",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^22.0.0",
6
6
  "@angular/core": "^22.0.0",
@@ -69,6 +69,23 @@ interface TableColumn {
69
69
  * Column width in pixels. If not set, the column will auto-size.
70
70
  */
71
71
  width?: number;
72
+ /**
73
+ * Minimum width in pixels for auto-sized columns (columns without `width`).
74
+ * Without it, fixed-width siblings can squeeze an auto column to zero on narrow
75
+ * viewports. When the available space per auto column drops below this value, the
76
+ * column is pinned to `minWidth` and the grid overflows into a horizontal scrollbar
77
+ * instead of collapsing the column. Also applied as the Kendo `minResizableWidth`,
78
+ * so user resizing cannot shrink the column below it either.
79
+ */
80
+ minWidth?: number;
81
+ /**
82
+ * Hides the column while the list view is narrower than this many pixels.
83
+ * Measured against the component's own width (not the browser viewport), so the
84
+ * column set also adapts when surrounding layout (drawer, split panes) takes space.
85
+ * Use it to declare column priority: give low-value detail columns a breakpoint so
86
+ * the identifying columns keep their room on small screens.
87
+ */
88
+ hideBelow?: number;
72
89
  /**
73
90
  * Status mapping for single-field statusIcons columns.
74
91
  * Use this when the column displays icons for a single field.
@@ -112,6 +129,13 @@ interface TableColumn {
112
129
  * have to handle every possible enum value explicitly.
113
130
  */
114
131
  badgeMapping?: BadgeMappingTable;
132
+ /**
133
+ * When true, values without a `badgeMapping` entry render an empty cell instead of the
134
+ * neutral raw-value pill (only consulted for `dataType: 'badge'`). Use for flag-style
135
+ * columns where only some values carry a badge — e.g. a boolean marker column that shows
136
+ * a pill for `true` and nothing (rather than a "false" pill) for `false`.
137
+ */
138
+ badgeHideUnmapped?: boolean;
115
139
  /**
116
140
  * Optional callback that produces the cell's display string.
117
141
  * When set, this overrides the default rendering selected by `dataType`.
@@ -225,6 +249,15 @@ declare class ListViewComponent extends CommandBaseService implements OnDestroy,
225
249
  protected _showRowFilter: boolean;
226
250
  /** Indicates if the data source is currently loading data */
227
251
  protected isLoading: i0.WritableSignal<boolean>;
252
+ /**
253
+ * The component's own width in pixels, kept current via ResizeObserver.
254
+ * `null` until the first measurement (before that, all columns render visible
255
+ * and auto-sized). Drives `hideBelow` column hiding and `minWidth` pinning.
256
+ */
257
+ protected readonly containerWidth: i0.WritableSignal<number | null>;
258
+ private readonly hostElement;
259
+ private readonly ngZone;
260
+ private resizeObserver?;
228
261
  private gridComponent?;
229
262
  private dataBindingDirective?;
230
263
  gridContextMenu?: ContextMenuComponent;
@@ -247,6 +280,26 @@ declare class ListViewComponent extends CommandBaseService implements OnDestroy,
247
280
  sortable: boolean;
248
281
  rowFilterEnabled: boolean;
249
282
  searchTextBoxEnabled: boolean;
283
+ /** Whether users can resize columns by dragging the header edges. */
284
+ resizable: boolean;
285
+ /**
286
+ * Width in pixels of the trailing actions command column. The default fits the
287
+ * historical five-button layouts; lists with only an edit button plus the
288
+ * context-menu trigger should pass something around 100.
289
+ */
290
+ actionsColumnWidth: number;
291
+ /**
292
+ * Hides the row-checkbox column while the list view is narrower than this many
293
+ * pixels — on phone-sized layouts multi-select via checkboxes is impractical and
294
+ * the 40px are better spent on the data columns. Pass `null` to always show them.
295
+ */
296
+ hideCheckboxesBelow: number | null;
297
+ /**
298
+ * Compact-toolbar breakpoint: below this component width the host gets the
299
+ * `mm-list-view-narrow` class, which wraps the grid toolbar and stretches the
300
+ * search input to a full row instead of stacking every control vertically.
301
+ */
302
+ protected get isNarrow(): boolean;
250
303
  /**
251
304
  * Callback for applying CSS classes to grid rows based on row data.
252
305
  * Passed through to Kendo Grid's [rowClass] input.
@@ -262,6 +315,20 @@ declare class ListViewComponent extends CommandBaseService implements OnDestroy,
262
315
  constructor();
263
316
  ngAfterViewInit(): void;
264
317
  ngOnDestroy(): void;
318
+ /** Whether the column is hidden at the current component width (`hideBelow`). */
319
+ protected isColumnHidden(column: TableColumn): boolean;
320
+ /** Whether the row-checkbox column is rendered (selection enabled AND above `hideCheckboxesBelow`). */
321
+ protected showCheckboxColumn(): boolean;
322
+ /**
323
+ * Resolves the width passed to the Kendo column. Fixed-width columns keep their
324
+ * configured width. Auto columns normally stay auto (undefined) so they stretch into
325
+ * the remaining space — but once the space left over per auto column drops below the
326
+ * column's `minWidth`, the column is pinned to `minWidth`. The grid's total width then
327
+ * exceeds the container and Kendo shows a horizontal scrollbar instead of silently
328
+ * collapsing the auto columns to zero.
329
+ */
330
+ protected getEffectiveWidth(column: TableColumn): number | undefined;
331
+ protected readonly checkboxColumnWidth = 40;
265
332
  protected getDisplayName(column: TableColumn): string;
266
333
  protected getIsDisabled(commandItem: CommandItem, dataItem?: unknown): boolean;
267
334
  protected getValue(element: Record<string, unknown>, column: TableColumn): unknown;
@@ -337,7 +404,7 @@ declare class ListViewComponent extends CommandBaseService implements OnDestroy,
337
404
  protected getPdfPageText(pageNum: number, totalPages: number): string;
338
405
  protected readonly moreVerticalIcon: SVGIcon$1;
339
406
  static ɵfac: i0.ɵɵFactoryDeclaration<ListViewComponent, never>;
340
- static ɵcmp: i0.ɵɵComponentDeclaration<ListViewComponent, "mm-list-view", never, { "pageSize": { "alias": "pageSize"; "required": false; }; "skip": { "alias": "skip"; "required": false; }; "rowIsClickable": { "alias": "rowIsClickable"; "required": false; }; "showRowCheckBoxes": { "alias": "showRowCheckBoxes"; "required": false; }; "showRowSelectAllCheckBox": { "alias": "showRowSelectAllCheckBox"; "required": false; }; "contextMenuType": { "alias": "contextMenuType"; "required": false; }; "leftToolbarActions": { "alias": "leftToolbarActions"; "required": false; }; "rightToolbarActions": { "alias": "rightToolbarActions"; "required": false; }; "actionCommandItems": { "alias": "actionCommandItems"; "required": false; }; "contextMenuCommandItems": { "alias": "contextMenuCommandItems"; "required": false; }; "excelExportFileName": { "alias": "excelExportFileName"; "required": false; }; "pdfExportFileName": { "alias": "pdfExportFileName"; "required": false; }; "pageable": { "alias": "pageable"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "rowFilterEnabled": { "alias": "rowFilterEnabled"; "required": false; }; "searchTextBoxEnabled": { "alias": "searchTextBoxEnabled"; "required": false; }; "rowClass": { "alias": "rowClass"; "required": false; }; "messages": { "alias": "messages"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; }, { "rowClicked": "rowClicked"; }, never, never, true, never>;
407
+ static ɵcmp: i0.ɵɵComponentDeclaration<ListViewComponent, "mm-list-view", never, { "pageSize": { "alias": "pageSize"; "required": false; }; "skip": { "alias": "skip"; "required": false; }; "rowIsClickable": { "alias": "rowIsClickable"; "required": false; }; "showRowCheckBoxes": { "alias": "showRowCheckBoxes"; "required": false; }; "showRowSelectAllCheckBox": { "alias": "showRowSelectAllCheckBox"; "required": false; }; "contextMenuType": { "alias": "contextMenuType"; "required": false; }; "leftToolbarActions": { "alias": "leftToolbarActions"; "required": false; }; "rightToolbarActions": { "alias": "rightToolbarActions"; "required": false; }; "actionCommandItems": { "alias": "actionCommandItems"; "required": false; }; "contextMenuCommandItems": { "alias": "contextMenuCommandItems"; "required": false; }; "excelExportFileName": { "alias": "excelExportFileName"; "required": false; }; "pdfExportFileName": { "alias": "pdfExportFileName"; "required": false; }; "pageable": { "alias": "pageable"; "required": false; }; "sortable": { "alias": "sortable"; "required": false; }; "rowFilterEnabled": { "alias": "rowFilterEnabled"; "required": false; }; "searchTextBoxEnabled": { "alias": "searchTextBoxEnabled"; "required": false; }; "resizable": { "alias": "resizable"; "required": false; }; "actionsColumnWidth": { "alias": "actionsColumnWidth"; "required": false; }; "hideCheckboxesBelow": { "alias": "hideCheckboxesBelow"; "required": false; }; "rowClass": { "alias": "rowClass"; "required": false; }; "messages": { "alias": "messages"; "required": false; }; "selectable": { "alias": "selectable"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; }, { "rowClicked": "rowClicked"; }, never, never, true, never>;
341
408
  }
342
409
 
343
410
  declare class UploadFileDialogComponent extends DialogContentBase {