bitboss-ui 3.0.0-beta.60 → 3.0.0-beta.61

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.
@@ -1617,7 +1617,11 @@ const createLabel = (text: string) => {
1617
1617
  Set `group-by` to a field path (or a function) to bucket options under headers.
1618
1618
  The `#group` slot styles the header and receives
1619
1619
  `{ text, item, index, length, disabled }` — `length` is the number of options
1620
- in the group, `index` the list index of its first option.
1620
+ in the group, `index` the list index of its first option. A row whose
1621
+ `group-by` gives `null` or `undefined` has no group: those rows are listed
1622
+ without a header, and `#group` is not called for them (a known row is listed
1623
+ the same way). Rows in the middle of the list with no header read as part of
1624
+ the group above, so give them a group of their own (`row.team ?? 'Other'`).
1621
1625
 
1622
1626
  A grouped list virtualizes **whole groups, not rows**: a group mounts only
1623
1627
  when it scrolls into range, but all of its rows mount together. Many
@@ -2346,7 +2350,7 @@ States are listed in precedence order: when two are on at once and their entries
2346
2350
  - `description` — scope: `BbSelectDescriptionSlotProps` `{ text: string; hasErrors: boolean; hasWarnings: boolean }` — Replaces the description text. Provided alone (no `description` prop) it still renders the description region and wires it into `aria-describedby`.
2347
2351
  - `empty` — scope: `{ query: string; focus: () => void; error: unknown; }` — Content shown when no options match the query or the list is empty. `error` is what the latest failed load threw, untouched (`null` when none).
2348
2352
  - `footer` — scope: `BbSelectPanelSlotProps` `{ close: () => Promise<void>; clear: () => void; focus: () => void; query: string; selectedOptions: BbSelectResolvedOption[] }` — Content pinned to the bottom of the options panel, below the options list. Rendered in both the desktop popover and the adaptive sheet.
2349
- - `group` — scope: `BbSelectGroupSlotProps<T>` `{ text: string; item: T; index: number; length: number; disabled: boolean }` — Replaces the default group header rendered above grouped options.
2353
+ - `group` — scope: `BbSelectGroupSlotProps<T>` `{ text: string; item: T; index: number; length: number; disabled: boolean }` — Replaces the default group header rendered above grouped options. Not called for rows with no group (`group-by` gives `null`/`undefined`, known rows): they are listed without a header.
2350
2354
  - `header` — scope: `BbSelectPanelSlotProps` `{ close: () => Promise<void>; clear: () => void; focus: () => void; query: string; selectedOptions: BbSelectResolvedOption[] }` — Content pinned to the top of the options panel, above the search field. Rendered in both the desktop popover and the adaptive sheet.
2351
2355
  - `label` — scope: `BbSelectLabelSlotProps` `{ showAsterisk?: boolean; text: string; hasErrors: boolean; hasWarnings: boolean }` — Replaces the default label text rendered above the input.
2352
2356
  - `loading` — scope: `{ query: string; }` — Content shown inside the options dropdown while items are loading.
@@ -1916,7 +1916,7 @@ States are listed in precedence order: when two are on at once and their entries
1916
1916
  - `activator` — scope: `BbSelectPopoverActivatorSlotProps` `{ clear: () => void; close: () => Promise<void>; focus: () => void; disabled: boolean; loading: boolean; open: () => Promise<void>; props: { ref: (reference: unknown) => void; }; query: string; readonly: boolean; selectedOptions: BbSelectResolvedOption<any>[]; shown: boolean; text: string; toggle: () => Promise<void> }` — Replaces the default trigger element that opens the select popover.
1917
1917
  - `empty` — scope: `{ query: string; focus: () => void; error: unknown; }` — Content shown when no options match the query or the list is empty. `error` is what the latest failed load threw, untouched (`null` when none).
1918
1918
  - `footer` — scope: `BbSelectPopoverPanelSlotProps` `{ close: () => Promise<void>; clear: () => void; focus: () => void; query: string; selectedOptions: BbSelectResolvedOption<any>[] }` — Content pinned to the bottom of the panel, below the options list. Rendered in both the desktop popover and the adaptive sheet.
1919
- - `group` — scope: `BbSelectPopoverGroupSlotProps<Item>` `{ disabled: boolean; index: number; item: Item; length: number; text: string }` — Replaces the default group header rendered above grouped options.
1919
+ - `group` — scope: `BbSelectPopoverGroupSlotProps<Item>` `{ disabled: boolean; index: number; item: Item; length: number; text: string }` — Replaces the default group header rendered above grouped options. Not called for rows with no group (`group-by` gives `null`/`undefined`, known rows): they are listed without a header.
1920
1920
  - `header` — scope: `BbSelectPopoverPanelSlotProps` `{ close: () => Promise<void>; clear: () => void; focus: () => void; query: string; selectedOptions: BbSelectResolvedOption<any>[] }` — Content pinned to the top of the panel, above the search field. Rendered in both the desktop popover and the adaptive sheet.
1921
1921
  - `loading` — scope: `{ query: string; }` — Content shown inside the options dropdown while items are loading.
1922
1922
  - `option` — scope: `BbSelectPopoverOptionSlotProps<Item>` `{ disabled: boolean; focused: boolean; index: number; item: Item; loading: boolean; selected: boolean; text: string; value: any; description: string }` — Replaces the default rendering of each option row in the dropdown.
@@ -53,7 +53,7 @@
53
53
  ## Slots
54
54
 
55
55
  - `empty` — scope: `object` — Content shown when no options are available (replaces the default "no data" text).
56
- - `group` — scope: `GroupedListBoxGroupSlotProps<Item>` `{ text: string; item: Item; index: number; length: number; disabled: boolean }` — Replaces the default group header rendered above each group of options.
56
+ - `group` — scope: `GroupedListBoxGroupSlotProps<Item>` `{ text: string; item: Item; index: number; length: number; disabled: boolean }` — Replaces the default group header rendered above each group of options. A group whose `data` is `null`/`undefined` has no header, so no call.
57
57
  - `loading` — scope: `object` — Content shown while items are loading (replaces the default loading text).
58
58
  - `option` — scope: `GroupedListBoxOptionSlotProps<Item>` `{ disabled: boolean; focused: boolean; index: number; item: Item; selected: boolean; text: string; value: any; description: string }` — Replaces the default rendering of each option row within a group.
59
59
  - `options:append` — scope: `object` — Content appended inside the options list, after the last group.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schemaVersion": 3,
3
3
  "library": "bitboss-ui",
4
- "version": "3.0.0-beta.60",
4
+ "version": "3.0.0-beta.61",
5
5
  "upgrade": "v2-to-v3",
6
6
  "guide": "ai/guides/migration/v2-to-v3.md",
7
7
  "legend": {
@@ -70,7 +70,8 @@
70
70
  "3.0.0-beta.57",
71
71
  "3.0.0-beta.58",
72
72
  "3.0.0-beta.59",
73
- "3.0.0-beta.60"
73
+ "3.0.0-beta.60",
74
+ "3.0.0-beta.61"
74
75
  ],
75
76
  "unpublished": [
76
77
  "3.0.0-alpha.2",