@bitforgehq/ui 0.3.2 → 0.3.3
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 +41 -0
- package/ai/MANIFEST.json +23 -11
- package/ai/REFERENCE.json +20 -4
- package/ai/components/app-frame.md +14 -7
- package/ai/components/header.md +9 -0
- package/ai/components/table.md +21 -3
- package/ai/reference/bf-labels.md +1 -0
- package/ai/reference/bf-select-harness.md +4 -0
- package/ai/reference/bf-table-harness.md +6 -0
- package/ai/reference/provide-bf-labels.md +1 -1
- package/fesm2022/bitforgehq-ui-mobile.mjs +11 -2
- package/fesm2022/bitforgehq-ui-mobile.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui-testing.mjs +4 -0
- package/fesm2022/bitforgehq-ui-testing.mjs.map +1 -1
- package/fesm2022/bitforgehq-ui.mjs +34 -16
- package/fesm2022/bitforgehq-ui.mjs.map +1 -1
- package/llms-full.txt +56 -11
- package/package.json +1 -1
- package/theme.css +13 -0
- package/types/bitforgehq-ui-testing.d.ts +14 -0
- package/types/bitforgehq-ui.d.ts +18 -10
package/llms-full.txt
CHANGED
|
@@ -2982,8 +2982,8 @@ interface Destination {
|
|
|
2982
2982
|
* The bf-app-frame overview.
|
|
2983
2983
|
*
|
|
2984
2984
|
* Live demo of `bf-app-frame` in a box of fixed height: one destinations array drives the
|
|
2985
|
-
* `bf-sidebar` (from `md` up) and the narrow header's `bf-menu-button
|
|
2986
|
-
* brand and a notifications action. Tab into the frame to reveal its skip link; Enter moves focus
|
|
2985
|
+
* `bf-sidebar` (from `md` up) and the narrow header's `bf-menu-button`, at the header's inline
|
|
2986
|
+
* start; the brand follows it, and a notifications action sits at the end. Tab into the frame to reveal its skip link; Enter moves focus
|
|
2987
2987
|
* to the content. The result line reports it.
|
|
2988
2988
|
*/
|
|
2989
2989
|
@Component({
|
|
@@ -3023,11 +3023,11 @@ interface Destination {
|
|
|
3023
3023
|
}
|
|
3024
3024
|
</bf-sidebar>
|
|
3025
3025
|
|
|
3026
|
-
<span bfSlot="brand" class="text-heading">Atlas</span>
|
|
3027
3026
|
<bf-menu-button bfSlot="menu" variant="text" [menu]="navMenu">
|
|
3028
3027
|
<bf-icon bfSlot="icon-start" [icon]="menu" />
|
|
3029
3028
|
Sections
|
|
3030
3029
|
</bf-menu-button>
|
|
3030
|
+
<span bfSlot="brand" class="text-heading">Atlas</span>
|
|
3031
3031
|
<bf-icon-button
|
|
3032
3032
|
bfSlot="actions"
|
|
3033
3033
|
variant="text"
|
|
@@ -3094,7 +3094,7 @@ export class AppFrameOverviewExampleComponent {
|
|
|
3094
3094
|
## Overview
|
|
3095
3095
|
|
|
3096
3096
|
The frame of a desktop web app: a skip link, a sticky full-height sidebar column from the
|
|
3097
|
-
breakpoint up, a header bar with the
|
|
3097
|
+
breakpoint up, a header bar with the narrow-screen menu, the brand and actions below it, and
|
|
3098
3098
|
the `main` landmark with a content column of a set maximum width.
|
|
3099
3099
|
|
|
3100
3100
|
The frame around a desktop web app's pages: a skip link, a [`bf-sidebar`](https://bitforge-ui.web.app/components/sidebar) column that sticks to the viewport at its full height from a breakpoint up, a header bar below the breakpoint with the brand, the narrow-screen [`bf-menu-button`](https://bitforge-ui.web.app/components/menu-button) and end actions, and the `main` landmark with a content column of a set maximum width. It replaces the `hidden md:flex` sidebar, the `md:hidden` menu button and the padded `main` an app would otherwise build by hand. The frame imports no overlay and never reads the router: the menu is your own `bf-menu-button`, projected into a slot.
|
|
@@ -3105,7 +3105,7 @@ Use `bf-app-frame` once, at the root of a desktop web app whose top-level destin
|
|
|
3105
3105
|
|
|
3106
3106
|
## Slots and layout
|
|
3107
3107
|
|
|
3108
|
-
Put the `bf-sidebar` in `bfSlot="sidebar"`, the app's name or logo in `bfSlot="brand"`, the narrow-screen `bf-menu-button` of `a[bfMenuItem]` router links in `bfSlot="menu"` and end actions (the theme menu, the account) in `bfSlot="actions"`; everything else is the page. From the breakpoint up the sidebar column sits at the inline start, `sticky top-0` and `h-dvh` tall, and the `bf-sidebar` inside fills it and scrolls its own destinations; the header bar is hidden. Below it the sidebar column is hidden and the header bar (`surface`, a bottom border, sticky at the top) shows the
|
|
3108
|
+
Put the `bf-sidebar` in `bfSlot="sidebar"`, the app's name or logo in `bfSlot="brand"`, the narrow-screen `bf-menu-button` of `a[bfMenuItem]` router links in `bfSlot="menu"` and end actions (the theme menu, the account) in `bfSlot="actions"`; everything else is the page. From the breakpoint up the sidebar column sits at the inline start, `sticky top-0` and `h-dvh` tall, and the `bf-sidebar` inside fills it and scrolls its own destinations; the header bar is hidden. Below it the sidebar column is hidden and the header bar (`surface`, a bottom border, sticky at the top) shows the menu at the inline start, then the brand, and the actions at the end: the top app bar convention, and the menu comes first in the tab order too. The order is fixed, whatever order the slots have in your template. Keep the brand in the sidebar's own `header` slot too, for the wide layout.
|
|
3109
3109
|
|
|
3110
3110
|
## Breakpoint and content width
|
|
3111
3111
|
|
|
@@ -3242,8 +3242,8 @@ The skip link is a native `<a>` with an href to the main landmark and is the fir
|
|
|
3242
3242
|
## Slots
|
|
3243
3243
|
|
|
3244
3244
|
- `sidebar`: The `bf-sidebar`, shown from the breakpoint up; it fills the column's height.
|
|
3245
|
-
- `
|
|
3246
|
-
- `
|
|
3245
|
+
- `menu`: The narrow-screen navigation: a `bf-menu-button` of `a[bfMenuItem]` links, at the header bar's inline start.
|
|
3246
|
+
- `brand`: The app's name or logo in the narrow header bar, after the menu.
|
|
3247
3247
|
- `actions`: End actions of the narrow header bar, such as the theme menu.
|
|
3248
3248
|
- `default`: The page: what the router shows, inside the `main` landmark.
|
|
3249
3249
|
|
|
@@ -3262,6 +3262,13 @@ The skip link is a native `<a>` with an href to the main landmark and is the fir
|
|
|
3262
3262
|
|
|
3263
3263
|
## Migration notes
|
|
3264
3264
|
|
|
3265
|
+
### 0.3.3
|
|
3266
|
+
|
|
3267
|
+
Fix: the narrow header bar puts the `menu` slot at the inline start, before the `brand` (0.3.2 put
|
|
3268
|
+
it after the brand), with the actions at the end as before: the top app bar convention. The menu
|
|
3269
|
+
also comes first in the tab order. No API change; an app needs no change unless it relied on the
|
|
3270
|
+
brand coming first.
|
|
3271
|
+
|
|
3265
3272
|
### 0.3.2
|
|
3266
3273
|
|
|
3267
3274
|
New `bf-app-frame` in `@bitforgehq/ui`: the frame of a desktop web app. Slots `sidebar` (a
|
|
@@ -11636,6 +11643,15 @@ The title is not in the tab order; after a push, `bf-stack-outlet` focuses it wi
|
|
|
11636
11643
|
|
|
11637
11644
|
## Migration notes
|
|
11638
11645
|
|
|
11646
|
+
### 0.3.3
|
|
11647
|
+
|
|
11648
|
+
Fix: `bf-header` measures its title and slots in the next animation frame after a resize, not
|
|
11649
|
+
inside the `ResizeObserver` callback. Its measurement writes the title inset and height, which
|
|
11650
|
+
resize the observed elements, and WebKit then reported "ResizeObserver loop completed with
|
|
11651
|
+
undelivered notifications": an error event that an app's global error listener
|
|
11652
|
+
(`provideBrowserGlobalErrorListeners()`) logs as an error. Several resizes in one frame now
|
|
11653
|
+
measure once.
|
|
11654
|
+
|
|
11639
11655
|
### 0.3.2
|
|
11640
11656
|
|
|
11641
11657
|
The `## Desktop` docs say `bf-app-frame` supplies the app-level header bar below its breakpoint.
|
|
@@ -24488,7 +24504,7 @@ export class TablePagedExampleComponent {
|
|
|
24488
24504
|
|
|
24489
24505
|
`stack` lets the table itself fit a narrow space. With `stack="narrow"` it stacks while the table is narrower than 36rem (576 px at the default root size, Tailwind's `xl` container size): a container query on the table's own width, so a table in a narrow column or a side panel stacks even on a wide screen. The host is then a size container (`container-type: inline-size`), so give the table its width from its parent (a block or `w-full` / `flex-1`), not from its columns. With `stack="coarse"` it stacks under a coarse pointer at any width (phones, tablets, the Capacitor shell). The default `never` keeps the table as it is.
|
|
24490
24506
|
|
|
24491
|
-
Stacked, each row is a sunken tile (`surface-sunken`, `rounded-tile`, the tile a raised card holds; a selected row keeps `primary-soft`). Its checkbox and first cell head the tile in bold; every other cell shows its column label at the start and its value at the end. The header row is visually hidden, and a bar above the tiles holds a labelled Select all checkbox (with `selectable`) and a Sort by select
|
|
24507
|
+
Stacked, each row is a sunken tile (`surface-sunken`, `rounded-tile`, the tile a raised card holds; a selected row keeps `primary-soft`). Its checkbox and first cell head the tile in bold; every other cell shows its column label at the start and its value at the end. The header row is visually hidden, and a bar above the tiles holds a labelled Select all checkbox (with `selectable`) and a Sort by select, since the hidden header's buttons are not shown. Its first option, Not sorted, shows while `sort` is null and sets it back to null; then every sortable column, ascending and descending (`tableSortBy`, `tableSortNone`, `tableSortAscending`, `tableSortDescending` labels). Choosing a column option sets `sort`, as a header click does. In a test, `BfTableHarness.getSortSelect()` returns that select's `BfSelectHarness`.
|
|
24492
24508
|
|
|
24493
24509
|
```ts
|
|
24494
24510
|
import { Component, computed, signal } from '@angular/core';
|
|
@@ -24523,7 +24539,8 @@ type Width = 'phone' | 'full';
|
|
|
24523
24539
|
*
|
|
24524
24540
|
* `stack="narrow"` turns each row into a tile of label/value pairs while the table is narrower
|
|
24525
24541
|
* than 36rem: the selection checkbox and the first cell head the tile, and a bar above the tiles
|
|
24526
|
-
* holds Select all and a Sort by select
|
|
24542
|
+
* holds Select all and a Sort by select, whose first option, Not sorted, shows while `sort` is
|
|
24543
|
+
* null and clears it. Switch the box between phone width and full width.
|
|
24527
24544
|
*/
|
|
24528
24545
|
@Component({
|
|
24529
24546
|
selector: 'app-example-table-stacked',
|
|
@@ -24670,7 +24687,7 @@ Put the table on a `bf-card` (or another surface) yourself; it has no background
|
|
|
24670
24687
|
|
|
24671
24688
|
A native `table` with a visually hidden `caption` from `label`, `th scope="col"` headers and one `tr` per row. A sorted column's `th` carries `aria-sort="ascending"` or `"descending"`; the others carry none. A sortable header is a native `button` inside the `th`, so its name is the column label; the arrow is `aria-hidden`. The header checkbox is named by `selectAllLabel`, else `provideBfLabels()`'s `tableSelectAll` ("Select all rows"), and is mixed (`indeterminate`) while some rows are selected. Each row checkbox is named by the row's first data cell through `aria-labelledby`, so it reads as the row's title. The empty row's cell spans every column.
|
|
24672
24689
|
|
|
24673
|
-
A table that can stack (`stack` other than `never`) sets explicit `table`, `rowgroup`, `row`, `columnheader` and `cell` roles and names the table from its caption with `aria-labelledby`, because Safari and some screen readers drop a table's semantics once CSS changes its display; so a stacked table still reads as a table with its column headers. Stacked, the header row is visually hidden but stays in the accessibility tree; its sort buttons and checkbox are hidden (a plain label takes a sortable header's place), so no control is focusable where nobody can see it, and the bar's Select all checkbox and Sort by select replace them. A cell's visible label is CSS generated content with empty alternative text (`content: attr(data-label) / ""`), so a screen reader reads the column header once, not the label as well.
|
|
24690
|
+
A table that can stack (`stack` other than `never`) sets explicit `table`, `rowgroup`, `row`, `columnheader` and `cell` roles and names the table from its caption with `aria-labelledby`, because Safari and some screen readers drop a table's semantics once CSS changes its display; so a stacked table still reads as a table with its column headers. Stacked, the header row is visually hidden but stays in the accessibility tree; its sort buttons and checkbox are hidden (a plain label takes a sortable header's place), so no control is focusable where nobody can see it, and the bar's Select all checkbox and Sort by select replace them. A cell's visible label is CSS generated content with empty alternative text (`content: attr(data-label) / ""`, the `content-data-label` utility of `theme.css`), so a screen reader reads the column header once, not the label as well.
|
|
24674
24691
|
|
|
24675
24692
|
### Keyboard
|
|
24676
24693
|
|
|
@@ -24748,6 +24765,23 @@ Selects or clears one row.
|
|
|
24748
24765
|
|
|
24749
24766
|
## Migration notes
|
|
24750
24767
|
|
|
24768
|
+
### 0.3.3
|
|
24769
|
+
|
|
24770
|
+
Fix: stacked rows (`stack="narrow"` and `stack="coarse"`) show their column labels again when the
|
|
24771
|
+
package is installed from npm. 0.3.2 wrote the label as `content-[attr(data-label)_/_""]`; the
|
|
24772
|
+
library build escaped its quotes in the FESM (`\"\"`), so Tailwind built the rule for a class no
|
|
24773
|
+
cell carries and every label `::before` computed to `none`. The cells now carry
|
|
24774
|
+
`before:content-data-label`, a utility `theme.css` defines (below). Apps that added the
|
|
24775
|
+
workaround `@source inline('@max-xl:before:content-[attr(data-label)_/_""] pointer-coarse:before:content-[attr(data-label)_/_""]')`
|
|
24776
|
+
can remove it. consumer-smoke now opens a stacked table built from the packed package in
|
|
24777
|
+
Chromium, under a fine and a coarse pointer, and fails if any FESM class string holds a
|
|
24778
|
+
backslash escape.
|
|
24779
|
+
|
|
24780
|
+
The stacked Sort by select's first option is Not sorted (new label key `tableSortNone`, "Not
|
|
24781
|
+
sorted"): it shows while `sort` is null, so the select is no longer an empty box, and choosing it
|
|
24782
|
+
sets `sort` back to null. New `BfTableHarness.getSortSelect()` returns that select's
|
|
24783
|
+
`BfSelectHarness` (`null` when the table cannot stack or has no sortable column).
|
|
24784
|
+
|
|
24751
24785
|
### 0.3.2
|
|
24752
24786
|
|
|
24753
24787
|
New opt-in `stack` input (`BfTableStack`: `'never'` by default, so existing tables do not
|
|
@@ -29335,6 +29369,7 @@ import { type BfLabels } from '@bitforgehq/ui';
|
|
|
29335
29369
|
| `notifications` | `string` | `'Notifications'` | The desktop toast stack's region name. |
|
|
29336
29370
|
| `tableSelectAll` | `string` | `'Select all rows'` | bf-table's header checkbox, which selects or clears every row. |
|
|
29337
29371
|
| `tableSortBy` | `string` | `'Sort by'` | The label of a stacked bf-table's sort select. |
|
|
29372
|
+
| `tableSortNone` | `string` | `'Not sorted'` | A stacked bf-table's first sort option: rows in the order given, no column sorted. |
|
|
29338
29373
|
| `tableSortAscending` | `(column: string) => string` | `` (column) => `${column}, ascending` `` | A stacked bf-table's sort option for a column in ascending order. |
|
|
29339
29374
|
| `tableSortDescending` | `(column: string) => string` | `` (column) => `${column}, descending` `` | A stacked bf-table's sort option for a column in descending order. |
|
|
29340
29375
|
| `theme` | `string` | `'Theme'` | bf-theme-switch's and bf-theme-menu-button's name without a label. |
|
|
@@ -30491,7 +30526,7 @@ Replaces built-in strings, merged over the parent's (validation merged key by ke
|
|
|
30491
30526
|
out or set to `undefined` keeps the parent's string. In `ApplicationConfig.providers` it covers
|
|
30492
30527
|
every string. In a component's `providers` it covers that sub-tree's widgets and form controls
|
|
30493
30528
|
(`loading`, `dismiss`, `tabBar`, `tabBadge`, `back`, `refreshing`, `tableSelectAll`, `tableSortBy`,
|
|
30494
|
-
`tableSortAscending`, `tableSortDescending`, `theme`, `themeSystem`, `themeLight`, `themeDark`,
|
|
30529
|
+
`tableSortNone`, `tableSortAscending`, `tableSortDescending`, `theme`, `themeSystem`, `themeLight`, `themeDark`,
|
|
30495
30530
|
`breadcrumb`, `breadcrumbExpand`, `navigation`, `navBadge`, `sidebarCollapse`, `sidebarExpand`,
|
|
30496
30531
|
`skipToContent`, `pagination`, `previousPage`, `nextPage`, `pageOf`, `goToPage`, `tabGroup`,
|
|
30497
30532
|
`calendarPreviousMonth`, `calendarNextMonth`, `calendarChooseMonth`, `calendarChooseYear`,
|
|
@@ -37274,6 +37309,10 @@ Focuses the native select.
|
|
|
37274
37309
|
|
|
37275
37310
|
Blurs the native select, which marks a bound form field touched.
|
|
37276
37311
|
|
|
37312
|
+
## Used by
|
|
37313
|
+
|
|
37314
|
+
- [BfTableHarness](bf-table-harness.md)
|
|
37315
|
+
|
|
37277
37316
|
---
|
|
37278
37317
|
|
|
37279
37318
|
# BfSidebarToggleHarness
|
|
@@ -37451,6 +37490,11 @@ Throws for an unknown or unsortable column.
|
|
|
37451
37490
|
|
|
37452
37491
|
The sorted column (its `key`) and direction, from `aria-sort`.
|
|
37453
37492
|
|
|
37493
|
+
### `getSortSelect(): Promise<BfSelectHarness | null>`
|
|
37494
|
+
|
|
37495
|
+
The Sort by select in a stacked table's bar: its first option, Not sorted (`tableSortNone`),
|
|
37496
|
+
sets `sort` to null and shows while it is; then each sortable column ascending and descending.
|
|
37497
|
+
|
|
37454
37498
|
### `selectRow(index: number): Promise<void>`
|
|
37455
37499
|
|
|
37456
37500
|
Checks one row's checkbox, as a user would; a selected row stays selected. Throws when the
|
|
@@ -37471,6 +37515,7 @@ The number of selected rows (checked row checkboxes).
|
|
|
37471
37515
|
|
|
37472
37516
|
## Uses
|
|
37473
37517
|
|
|
37518
|
+
- [BfSelectHarness](bf-select-harness.md)
|
|
37474
37519
|
- [BfTableSort](bf-table-sort.md)
|
|
37475
37520
|
|
|
37476
37521
|
---
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bitforgehq/ui",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "Bitforge UI: Angular 22 widgets (Meadow Sage palette with an indigo default primary to override, Tailwind v4, signals-first) and, from v0.2, a Capacitor app shell.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
package/theme.css
CHANGED
|
@@ -352,3 +352,16 @@
|
|
|
352
352
|
.dark .bf-overlay-backdrop {
|
|
353
353
|
background: rgb(0 0 0 / 0.6);
|
|
354
354
|
}
|
|
355
|
+
|
|
356
|
+
/* ---------- Stacked table labels ---------- */
|
|
357
|
+
/*
|
|
358
|
+
* The column label a stacked `bf-table` cell shows before its value (`before:content-data-label`
|
|
359
|
+
* behind a stack variant): the cell's `data-label`, with empty alternative text, so assistive
|
|
360
|
+
* technology reads the header association and not the label twice. A named utility, not
|
|
361
|
+
* `content-[attr(data-label)_/_""]`: the library build escapes the quotes of a class written in a
|
|
362
|
+
* string (`\"\"`), and Tailwind then builds the rule for a class no element carries.
|
|
363
|
+
*/
|
|
364
|
+
@utility content-data-label {
|
|
365
|
+
--tw-content: attr(data-label) / '';
|
|
366
|
+
content: var(--tw-content);
|
|
367
|
+
}
|
|
@@ -512,6 +512,7 @@ export declare class BfTableHarness extends ComponentHarness {
|
|
|
512
512
|
private readonly rows;
|
|
513
513
|
private readonly selectAllBox;
|
|
514
514
|
private readonly rowBoxes;
|
|
515
|
+
private readonly sortSelect;
|
|
515
516
|
/**
|
|
516
517
|
* A predicate for a table with the given label.
|
|
517
518
|
* @param filters The label (text or pattern) and the CDK's selector and ancestor filters.
|
|
@@ -551,6 +552,19 @@ export declare class BfTableHarness extends ComponentHarness {
|
|
|
551
552
|
* @returns The sort, `null` while no column is sorted.
|
|
552
553
|
*/
|
|
553
554
|
getSort(): Promise<BfTableSort | null>;
|
|
555
|
+
/**
|
|
556
|
+
* The Sort by select in a stacked table's bar: its first option, Not sorted (`tableSortNone`),
|
|
557
|
+
* sets `sort` to null and shows while it is; then each sortable column ascending and descending.
|
|
558
|
+
*
|
|
559
|
+
* @example
|
|
560
|
+
* const sortBy = await tasks.getSortSelect();
|
|
561
|
+
* await sortBy?.selectOption('Hours, descending');
|
|
562
|
+
* expect(await tasks.getSort()).toEqual({ column: 'hours', direction: 'descending' });
|
|
563
|
+
* @returns The select's harness; `null` when the table cannot stack (`stack="never"`) or has no
|
|
564
|
+
* sortable column.
|
|
565
|
+
* @since 0.3.3
|
|
566
|
+
*/
|
|
567
|
+
getSortSelect(): Promise<BfSelectHarness | null>;
|
|
554
568
|
/**
|
|
555
569
|
* Checks one row's checkbox, as a user would; a selected row stays selected. Throws when the
|
|
556
570
|
* table is not selectable or the row does not exist.
|
package/types/bitforgehq-ui.d.ts
CHANGED
|
@@ -241,6 +241,11 @@ interface BfLabels {
|
|
|
241
241
|
* @default 'Sort by'
|
|
242
242
|
*/
|
|
243
243
|
readonly tableSortBy: string;
|
|
244
|
+
/**
|
|
245
|
+
* A stacked bf-table's first sort option: rows in the order given, no column sorted.
|
|
246
|
+
* @default 'Not sorted'
|
|
247
|
+
*/
|
|
248
|
+
readonly tableSortNone: string;
|
|
244
249
|
/**
|
|
245
250
|
* A stacked bf-table's sort option for a column in ascending order.
|
|
246
251
|
* @default (column) => `${column}, ascending`
|
|
@@ -538,7 +543,7 @@ export declare const BF_LABELS: InjectionToken<BfLabels>;
|
|
|
538
543
|
* out or set to `undefined` keeps the parent's string. In `ApplicationConfig.providers` it covers
|
|
539
544
|
* every string. In a component's `providers` it covers that sub-tree's widgets and form controls
|
|
540
545
|
* (`loading`, `dismiss`, `tabBar`, `tabBadge`, `back`, `refreshing`, `tableSelectAll`, `tableSortBy`,
|
|
541
|
-
* `tableSortAscending`, `tableSortDescending`, `theme`, `themeSystem`, `themeLight`, `themeDark`,
|
|
546
|
+
* `tableSortNone`, `tableSortAscending`, `tableSortDescending`, `theme`, `themeSystem`, `themeLight`, `themeDark`,
|
|
542
547
|
* `breadcrumb`, `breadcrumbExpand`, `navigation`, `navBadge`, `sidebarCollapse`, `sidebarExpand`,
|
|
543
548
|
* `skipToContent`, `pagination`, `previousPage`, `nextPage`, `pageOf`, `goToPage`, `tabGroup`,
|
|
544
549
|
* `calendarPreviousMonth`, `calendarNextMonth`, `calendarChooseMonth`, `calendarChooseYear`,
|
|
@@ -4467,10 +4472,11 @@ export declare class BfTableComponent<T = unknown> {
|
|
|
4467
4472
|
/** Whether the table can stack its rows (any `stack` but `never`); it then sets explicit
|
|
4468
4473
|
* table roles, because some browsers drop a table's semantics once its display changes. */
|
|
4469
4474
|
protected readonly stacks: import("@angular/core").Signal<boolean>;
|
|
4470
|
-
/** The Sort by select's options: each sortable column ascending and
|
|
4475
|
+
/** The Sort by select's options: Not sorted (`''`), then each sortable column ascending and
|
|
4476
|
+
* descending; none without a sortable column. */
|
|
4471
4477
|
protected readonly sortOptions: import("@angular/core").Signal<BfSelectOption<string>[]>;
|
|
4472
|
-
/** The Sort by select's value: the option of `sort`, `
|
|
4473
|
-
protected readonly sortValue: import("@angular/core").Signal<string
|
|
4478
|
+
/** The Sort by select's value: the option of `sort`, Not sorted while `sort` is null. */
|
|
4479
|
+
protected readonly sortValue: import("@angular/core").Signal<string>;
|
|
4474
4480
|
protected readonly hostClasses: import("@angular/core").Signal<string>;
|
|
4475
4481
|
protected readonly stackBarClasses: import("@angular/core").Signal<string>;
|
|
4476
4482
|
protected readonly tableClasses: import("@angular/core").Signal<string>;
|
|
@@ -4526,7 +4532,8 @@ export declare class BfTableComponent<T = unknown> {
|
|
|
4526
4532
|
*/
|
|
4527
4533
|
sortBy(key: string): void;
|
|
4528
4534
|
/**
|
|
4529
|
-
* Sorts by a Sort by option (`<key>:<direction>`) of a stacked table
|
|
4535
|
+
* Sorts by a Sort by option (`<key>:<direction>`) of a stacked table; Not sorted sets `sort` to
|
|
4536
|
+
* null.
|
|
4530
4537
|
* @internal
|
|
4531
4538
|
*/
|
|
4532
4539
|
sortFromOption(value: string): void;
|
|
@@ -5108,22 +5115,23 @@ type BfAppFrameBreakpoint = 'md' | 'lg';
|
|
|
5108
5115
|
type BfAppFrameContentWidth = 'md' | 'lg' | 'xl' | 'full';
|
|
5109
5116
|
/**
|
|
5110
5117
|
* The frame of a desktop web app: a skip link, a sticky full-height sidebar column from the
|
|
5111
|
-
* breakpoint up, a header bar with the
|
|
5118
|
+
* breakpoint up, a header bar with the narrow-screen menu, the brand and actions below it, and
|
|
5112
5119
|
* the `main` landmark with a content column of a set maximum width.
|
|
5113
5120
|
*
|
|
5114
5121
|
* @example
|
|
5115
5122
|
* <bf-app-frame>
|
|
5116
5123
|
* <bf-sidebar bfSlot="sidebar" label="Main">…</bf-sidebar>
|
|
5117
|
-
* <span bfSlot="brand" class="text-heading">Atlas</span>
|
|
5118
5124
|
* <bf-menu-button bfSlot="menu" [menu]="navMenu">Sections</bf-menu-button>
|
|
5125
|
+
* <span bfSlot="brand" class="text-heading">Atlas</span>
|
|
5119
5126
|
* <router-outlet />
|
|
5120
5127
|
* </bf-app-frame>
|
|
5121
5128
|
* @summary Desktop app frame with skip link, sticky sidebar, narrow header and main content
|
|
5122
5129
|
* @category Navigation
|
|
5123
5130
|
* @since 0.3.2
|
|
5124
5131
|
* @slot sidebar The `bf-sidebar`, shown from the breakpoint up; it fills the column's height.
|
|
5125
|
-
* @slot brand The app's name or logo in the narrow header bar.
|
|
5126
|
-
* @slot menu The narrow-screen navigation: a `bf-menu-button` of `a[bfMenuItem]` links
|
|
5132
|
+
* @slot brand The app's name or logo in the narrow header bar, after the menu.
|
|
5133
|
+
* @slot menu The narrow-screen navigation: a `bf-menu-button` of `a[bfMenuItem]` links, at the
|
|
5134
|
+
* header bar's inline start.
|
|
5127
5135
|
* @slot actions End actions of the narrow header bar, such as the theme menu.
|
|
5128
5136
|
* @slot default The page: what the router shows, inside the `main` landmark.
|
|
5129
5137
|
*/
|
|
@@ -5168,7 +5176,7 @@ export declare class BfAppFrameComponent {
|
|
|
5168
5176
|
"required": false;
|
|
5169
5177
|
"isSignal": true;
|
|
5170
5178
|
};
|
|
5171
|
-
}, {}, never, ["[bfSlot=sidebar]", "[bfSlot=
|
|
5179
|
+
}, {}, never, ["[bfSlot=sidebar]", "[bfSlot=menu]", "[bfSlot=brand]", "[bfSlot=actions]", "*"], true, never>;
|
|
5172
5180
|
}
|
|
5173
5181
|
/**
|
|
5174
5182
|
* The shape of a `bf-skeleton`: text lines, a rectangle (an image, a chart, a field) or a circle
|