@elasticias/ui 1.0.27 → 1.0.29

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": "@elasticias/ui",
3
- "version": "1.0.27",
3
+ "version": "1.0.29",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^21.0.0",
6
6
  "@angular/core": "^21.0.0",
@@ -4407,6 +4407,15 @@ type EfTableDensity = 'compact' | 'default' | 'comfortable';
4407
4407
  * 2. **`tbl-head-info` / `tbl-head-actions` slots**: still projected
4408
4408
  * so the consumer can render the count text + density / columns /
4409
4409
  * view-toggle buttons next to the table header.
4410
+ * 3. **`[loading]` is not optional.** Bind the screen's own loading
4411
+ * signal: without it the card can't tell "still fetching" from
4412
+ * "nothing to fetch" and greets a waiting user with the empty
4413
+ * state. While loading with no rows yet it shimmers `ef-skeleton`
4414
+ * rows (table and mobile list alike) and flags `aria-busy`.
4415
+ * 4. **Bind `(retry)` wherever you bind `[errorMsg]`.** An empty result
4416
+ * set that came from a failed request renders the error state, not
4417
+ * the empty one, and its "try again" button is the way out. The card
4418
+ * doesn't know the query, so the screen re-runs it.
4410
4419
  *
4411
4420
  * ```html
4412
4421
  * <ef-data-card
@@ -4499,10 +4508,48 @@ declare class EfDataCardComponent<TRow = any> implements AfterContentInit {
4499
4508
  readonly hidePager: _angular_core.InputSignalWithTransform<boolean, unknown>;
4500
4509
  /** Currently active sort. Header click toggles asc / desc. */
4501
4510
  readonly sort: _angular_core.InputSignal<EfDataCardSort>;
4511
+ /**
4512
+ * First load and every refresh. While true with no rows yet, the body
4513
+ * shimmers `ef-skeleton` placeholders instead of the empty state — a
4514
+ * list that is still loading must never say "nothing here yet". A
4515
+ * refresh that already has rows (paging, sorting, filtering) keeps
4516
+ * them on screen rather than blanking the table; either way the row
4517
+ * container is flagged `aria-busy`, as `ef-card` does.
4518
+ */
4502
4519
  readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
4503
- /** Empty string = no error. Non-empty triggers an error chip in tbl-head. */
4520
+ /**
4521
+ * Empty string = no error. Non-empty triggers the error chip in
4522
+ * `tbl-head` and, when the request came back with nothing, the error
4523
+ * state in the body.
4524
+ *
4525
+ * It is the *trigger*, not the copy: screens set it from
4526
+ * `err?.message`, which is whatever the HTTP layer threw. The body
4527
+ * state words itself from translated keys instead, so a failed list
4528
+ * never shows an operator a status line or an exception string.
4529
+ */
4504
4530
  readonly errorMsg: _angular_core.InputSignal<string>;
4505
4531
  readonly loadingKey: _angular_core.InputSignal<string>;
4532
+ /**
4533
+ * Placeholder rows drawn while the first load is in flight. The page
4534
+ * size is what the operator is about to get, so it sets the height —
4535
+ * clamped so a 100-per-page list doesn't shimmer a full screen of
4536
+ * bars, and a 5-per-page one still reads as a list.
4537
+ */
4538
+ readonly skeletonLines: _angular_core.Signal<number[]>;
4539
+ /** First load: nothing to show yet, so the rows are placeholders. */
4540
+ readonly showSkeleton: _angular_core.Signal<boolean>;
4541
+ /**
4542
+ * The request failed and brought nothing back. Without this the body
4543
+ * falls through to the empty state and tells the operator, calmly and
4544
+ * in the product's own voice, that they have no clients — a false
4545
+ * statement about their data that they may go on to act on.
4546
+ *
4547
+ * Third in the chain, after the skeleton and before the empty state:
4548
+ * a retry that is already in flight shows progress, not the error it
4549
+ * is busy clearing. Rows already on screen stay there and keep the
4550
+ * head chip as the failure signal, the way a failed refresh should.
4551
+ */
4552
+ readonly showError: _angular_core.Signal<boolean>;
4506
4553
  /**
4507
4554
  * When `true`, double-clicking anywhere on a `<tr>` emits the row
4508
4555
  * via `rowDoubleClick` and the body rows render with
@@ -4580,6 +4627,13 @@ declare class EfDataCardComponent<TRow = any> implements AfterContentInit {
4580
4627
  readonly exportRequest: _angular_core.OutputEmitterRef<EfDataCardExportRequest>;
4581
4628
  /** Raised by the empty state's "clear search" action. */
4582
4629
  readonly clearSearch: _angular_core.OutputEmitterRef<void>;
4630
+ /**
4631
+ * Raised by the error state's "try again" button. The card knows the
4632
+ * request failed but not what the request was, so the screen re-runs
4633
+ * it — typically `(retry)="search()"` on a list screen. Unbound, the
4634
+ * button is a dead control, so bind it wherever `[errorMsg]` is bound.
4635
+ */
4636
+ readonly retry: _angular_core.OutputEmitterRef<void>;
4583
4637
  private readonly bodyTemplates;
4584
4638
  private readonly headerTemplates;
4585
4639
  private readonly bodyTemplateMap;
@@ -4739,7 +4793,7 @@ declare class EfDataCardComponent<TRow = any> implements AfterContentInit {
4739
4793
  trackByRow: (_: number, row: TRow) => unknown;
4740
4794
  trackByColumn: (_: number, col: EfDataCardColumn) => string;
4741
4795
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<EfDataCardComponent<any>, never>;
4742
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDataCardComponent<any>, "ef-data-card", never, { "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "trackByField": { "alias": "trackByField"; "required": false; "isSignal": true; }; "pageNumber": { "alias": "pageNumber"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "hidePager": { "alias": "hidePager"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "loadingKey": { "alias": "loadingKey"; "required": false; "isSignal": true; }; "rowDoubleClickable": { "alias": "rowDoubleClickable"; "required": false; "isSignal": true; }; "hasActionsColumn": { "alias": "hasActionsColumn"; "required": false; "isSignal": true; }; "rowActionsContext": { "alias": "rowActionsContext"; "required": false; "isSignal": true; }; "showViewAction": { "alias": "showViewAction"; "required": false; "isSignal": true; }; "showEditAction": { "alias": "showEditAction"; "required": false; "isSignal": true; }; "showDuplicateAction": { "alias": "showDuplicateAction"; "required": false; "isSignal": true; }; "showDeleteAction": { "alias": "showDeleteAction"; "required": false; "isSignal": true; }; "showDensityControl": { "alias": "showDensityControl"; "required": false; "isSignal": true; }; "showColumnPicker": { "alias": "showColumnPicker"; "required": false; "isSignal": true; }; "showExportControl": { "alias": "showExportControl"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "screenContext": { "alias": "screenContext"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "tableKey": { "alias": "tableKey"; "required": false; "isSignal": true; }; "defaultDensity": { "alias": "defaultDensity"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "fixedLayout": { "alias": "fixedLayout"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "sortChange": "sortChange"; "rowDoubleClick": "rowDoubleClick"; "rowAction": "rowAction"; "exportRequest": "exportRequest"; "clearSearch": "clearSearch"; "rowReorder": "rowReorder"; }, ["bodyTemplates", "headerTemplates"], ["[tbl-head-info]", "[tbl-head-actions]", "[empty-state-mobile]", "[empty-state]"], true, never>;
4796
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<EfDataCardComponent<any>, "ef-data-card", never, { "mobileLayout": { "alias": "mobileLayout"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "trackByField": { "alias": "trackByField"; "required": false; "isSignal": true; }; "pageNumber": { "alias": "pageNumber"; "required": false; "isSignal": true; }; "pageSize": { "alias": "pageSize"; "required": false; "isSignal": true; }; "totalCount": { "alias": "totalCount"; "required": false; "isSignal": true; }; "pageSizeOptions": { "alias": "pageSizeOptions"; "required": false; "isSignal": true; }; "hidePager": { "alias": "hidePager"; "required": false; "isSignal": true; }; "sort": { "alias": "sort"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "errorMsg": { "alias": "errorMsg"; "required": false; "isSignal": true; }; "loadingKey": { "alias": "loadingKey"; "required": false; "isSignal": true; }; "rowDoubleClickable": { "alias": "rowDoubleClickable"; "required": false; "isSignal": true; }; "hasActionsColumn": { "alias": "hasActionsColumn"; "required": false; "isSignal": true; }; "rowActionsContext": { "alias": "rowActionsContext"; "required": false; "isSignal": true; }; "showViewAction": { "alias": "showViewAction"; "required": false; "isSignal": true; }; "showEditAction": { "alias": "showEditAction"; "required": false; "isSignal": true; }; "showDuplicateAction": { "alias": "showDuplicateAction"; "required": false; "isSignal": true; }; "showDeleteAction": { "alias": "showDeleteAction"; "required": false; "isSignal": true; }; "showDensityControl": { "alias": "showDensityControl"; "required": false; "isSignal": true; }; "showColumnPicker": { "alias": "showColumnPicker"; "required": false; "isSignal": true; }; "showExportControl": { "alias": "showExportControl"; "required": false; "isSignal": true; }; "exporting": { "alias": "exporting"; "required": false; "isSignal": true; }; "screenContext": { "alias": "screenContext"; "required": false; "isSignal": true; }; "searchTerm": { "alias": "searchTerm"; "required": false; "isSignal": true; }; "tableKey": { "alias": "tableKey"; "required": false; "isSignal": true; }; "defaultDensity": { "alias": "defaultDensity"; "required": false; "isSignal": true; }; "reorderable": { "alias": "reorderable"; "required": false; "isSignal": true; }; "fixedLayout": { "alias": "fixedLayout"; "required": false; "isSignal": true; }; }, { "pageChange": "pageChange"; "pageSizeChange": "pageSizeChange"; "sortChange": "sortChange"; "rowDoubleClick": "rowDoubleClick"; "rowAction": "rowAction"; "exportRequest": "exportRequest"; "clearSearch": "clearSearch"; "retry": "retry"; "rowReorder": "rowReorder"; }, ["bodyTemplates", "headerTemplates"], ["[tbl-head-info]", "[tbl-head-actions]", "[empty-state-mobile]", "[empty-state]"], true, never>;
4743
4797
  }
4744
4798
 
4745
4799
  /**