bitboss-ui 3.0.0-beta.51 → 3.0.0-beta.53
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/bin/bitboss-ui-mcp.mjs +16 -8
- package/dist/ai/BbBadge.md +3 -2
- package/dist/ai/BbColorPalette.md +4 -3
- package/dist/ai/BbDatePicker.md +1 -1
- package/dist/ai/BbDropdown.md +6 -2
- package/dist/ai/BbForm.md +25 -17
- package/dist/ai/BbHoverCard.md +1 -1
- package/dist/ai/BbPopover.md +5 -3
- package/dist/ai/BbSelectPopover.md +1 -1
- package/dist/ai/BbTable.md +176 -51
- package/dist/ai/BbTimePicker.md +1 -1
- package/dist/ai/BbTooltip.md +1 -1
- package/dist/ai/CommonPopover.md +1 -1
- package/dist/ai/changelog.json +77 -3
- package/dist/ai/components.json +14 -14
- package/dist/ai/guides/component-picker.md +3 -3
- package/dist/ai/guides/migration/components/bb-table.md +32 -31
- package/dist/ai/guides/migration/from-async-validator.md +60 -46
- package/dist/ai/guides/migration/v2-to-v3.md +46 -0
- package/dist/ai/guides/options-items-playbook.md +5 -5
- package/dist/ai/guides/validated-forms.md +19 -8
- package/dist/ai/helpers/inertia/manifest.json +1 -1
- package/dist/ai/manifest/components/BbBadge.json +1 -1
- package/dist/ai/manifest/components/BbColorPalette.json +1 -1
- package/dist/ai/manifest/components/BbDatePicker.json +1 -1
- package/dist/ai/manifest/components/BbDropdown.json +1 -1
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbPopover.json +1 -1
- package/dist/ai/manifest/components/BbSelectPopover.json +1 -1
- package/dist/ai/manifest/components/BbTable.json +6 -5
- package/dist/ai/manifest/components/BbTable.tree.json +19 -0
- package/dist/ai/manifest/components/BbTimePicker.json +1 -1
- package/dist/ai/manifest/components/BbTooltip.json +1 -1
- package/dist/ai/manifest/components/CommonPopover.json +1 -1
- package/dist/ai/manifest/index.json +2 -2
- package/dist/ai/manifest/types.api.json +1 -1
- package/dist/ai/recipes/inertia/approvals-inbox.md +1 -1
- package/dist/ai/recipes/nuxt/approvals-inbox.md +1 -1
- package/dist/ai/recipes/vue/approvals-inbox.md +1 -1
- package/dist/ai/source/BbBadge.md +3 -4
- package/dist/ai/source/BbBadgeButton.md +3 -4
- package/dist/ai/source/BbColorPalette.md +3 -1
- package/dist/ai/source/BbDatePicker.md +4 -1
- package/dist/ai/source/BbDropdown.md +5 -3
- package/dist/ai/source/BbDropdownGroup.md +5 -3
- package/dist/ai/source/BbHoverCard.md +3 -2
- package/dist/ai/source/BbHoverCardPortal.md +3 -2
- package/dist/ai/source/BbPopover.md +3 -2
- package/dist/ai/source/BbPopoverPortal.md +3 -2
- package/dist/ai/source/BbSelectPopover.md +3 -1
- package/dist/ai/source/BbTable.md +405 -141
- package/dist/ai/source/BbTimePicker.md +4 -1
- package/dist/ai/source/BbTooltip.md +3 -2
- package/dist/ai/source/CommonPopover.md +11 -8
- package/dist/components/BbBadge/types.d.ts +3 -4
- package/dist/components/BbColorPalette/types.d.ts +3 -1
- package/dist/components/BbDatePicker/types.d.ts +4 -1
- package/dist/components/BbDropdown/types.d.ts +5 -3
- package/dist/components/BbForm/bindFormField.js +4 -4
- package/dist/components/BbHoverCard/types.d.ts +3 -2
- package/dist/components/BbPopover/types.d.ts +3 -2
- package/dist/components/BbSelectPopover/types.d.ts +3 -1
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +999 -957
- package/dist/components/BbTable/BbTableDataRow.js +77 -78
- package/dist/components/BbTable/types.d.ts +32 -9
- package/dist/components/BbTable/useRowReorder.d.ts +6 -0
- package/dist/components/BbTable/useRowReorder.js +217 -195
- package/dist/components/BbTable/utils.d.ts +21 -0
- package/dist/components/BbTable/utils.js +19 -16
- package/dist/components/BbTable/warroom/harness.d.ts +7 -0
- package/dist/components/BbTimePicker/types.d.ts +4 -1
- package/dist/components/BbTooltip/types.d.ts +3 -2
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/CommonPopover/types.d.ts +4 -4
- package/dist/composables/useBaseOptions.d.ts +3 -3
- package/dist/composables/useBaseOptions.js +11 -11
- package/dist/composables/useBbTableContext.js +1 -0
- package/dist/composables/useItemText.d.ts +5 -0
- package/dist/composables/useItemText.js +14 -14
- package/dist/composables/useItemValue.js +9 -9
- package/dist/composables/useItemsGetter.js +55 -51
- package/dist/composables/useSegmentedFields.js +6 -1
- package/dist/composables/useTableWidthContext.d.ts +6 -0
- package/dist/composables/useTableWidthContext.js +2 -1
- package/dist/llms-full.txt +390 -177
- package/dist/llms-medium.txt +3 -3
- package/dist/styles.css +2 -2
- package/dist/utils/versionCheck.js +1 -1
- package/package.json +2 -1
- package/scripts/lib/hand-roll-hints.mjs +11 -2
package/bin/bitboss-ui-mcp.mjs
CHANGED
|
@@ -2724,16 +2724,24 @@ function listChanges({
|
|
|
2724
2724
|
guide: doc.guide,
|
|
2725
2725
|
count: all.length,
|
|
2726
2726
|
releases,
|
|
2727
|
+
// Zero counts are left out (a missing key is 0): the map grows by a
|
|
2728
|
+
// release each beta and must stay one small answer (beta.53 hit the
|
|
2729
|
+
// 3 000-char budget with every bucket spelling out its zeros).
|
|
2727
2730
|
perRelease: Object.fromEntries(
|
|
2728
|
-
Object.entries(perRelease)
|
|
2729
|
-
a
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2731
|
+
Object.entries(perRelease)
|
|
2732
|
+
.sort(([a], [b]) =>
|
|
2733
|
+
a === 'unreleased'
|
|
2734
|
+
? 1
|
|
2735
|
+
: b === 'unreleased'
|
|
2736
|
+
? -1
|
|
2737
|
+
: compareVersions(a, b)
|
|
2738
|
+
)
|
|
2739
|
+
.map(([at, bucket]) => [
|
|
2740
|
+
at,
|
|
2741
|
+
Object.fromEntries(Object.entries(bucket).filter(([, n]) => n > 0)),
|
|
2742
|
+
])
|
|
2735
2743
|
),
|
|
2736
|
-
hint: 'Counts only. What
|
|
2744
|
+
hint: 'Counts only (a missing count is 0). What a bump breaks: list_changes({ since: "<your version>" }), one line per change; from v2: since: "2". One component: { component: "BbSelect" }. Full rows: detail: "rows".',
|
|
2737
2745
|
};
|
|
2738
2746
|
}
|
|
2739
2747
|
|
package/dist/ai/BbBadge.md
CHANGED
|
@@ -70,7 +70,8 @@ For a small, closed status set (paid / pending / overdue, plan tiers), register
|
|
|
70
70
|
the soft palette from
|
|
71
71
|
[design language guide](./guides/design-language.md) § Using color
|
|
72
72
|
(`soft-gray` / `soft-blue` / `soft-green` / `soft-amber` / `soft-red`) and style
|
|
73
|
-
`.bb-badge--<name>` in your project stylesheet.
|
|
73
|
+
`.bb-badge--<name>` in your project stylesheet. Type a status map as
|
|
74
|
+
`Record<Status, BadgeVariantType>`. Never invent `variant="success"`
|
|
74
75
|
— that name is not built-in and ships no CSS. The example below uses the soft
|
|
75
76
|
names: in your app it type-checks only after the `badgeVariants` registration
|
|
76
77
|
and renders styled only with that CSS — both are in the linked section.
|
|
@@ -863,7 +864,7 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
863
864
|
| `loading` | `boolean \| undefined` | `false` | | Shows a spinner in place of the leftmost icon (`icon` or `prepend:icon`; the `append:icon` when it is the only one; else the leading slot), as `BbButton` does, with a hidden loading announcement. |
|
|
864
865
|
| `prepend:icon` | `string \| undefined` | | | Icon rendered before the label. |
|
|
865
866
|
| `size` | `'xs'` \| `'sm'` \| `'md'` \| `'lg'` \| `'xl'` \| `'2xl'` | `"md"` | | Preset size of the badge. |
|
|
866
|
-
| `variant` | `'outline'` \| `'primary'` \| `'destructive'` \| `'secondary'` \| `'none'` | `"primary"` | | Visual variant: `primary`, `secondary`, `destructive`, or `outline`.
|
|
867
|
+
| `variant` | `'outline'` \| `'primary'` \| `'destructive'` \| `'secondary'` \| `'none'` | `"primary"` | | Visual variant: `primary`, `secondary`, `destructive`, or `outline`. Status colours are a registration (vite plugin `badgeVariants`, the `soft-*` palette in design-language.md) styled as `.bb-badge--<variant>`. `'none'` renders no variant class: set `--bg` / `--fg` on the element. |
|
|
867
868
|
|
|
868
869
|
## Passthrough parts and states
|
|
869
870
|
|
|
@@ -447,8 +447,9 @@ The float itself is tuned with the popover props:
|
|
|
447
447
|
unless you set `disable-flip`.
|
|
448
448
|
- `offset` (default 4) — gap between anchor and popover; `padding` (default 6) —
|
|
449
449
|
minimum space kept from the viewport edge.
|
|
450
|
-
- `boundary` —
|
|
451
|
-
e.g. a scrolling panel
|
|
450
|
+
- `boundary` — keep the popover inside an element (ref or CSS selector)
|
|
451
|
+
alongside its trigger, e.g. a scrolling panel's width; it may open past the
|
|
452
|
+
edge away from the trigger, and only the viewport flips it.
|
|
452
453
|
- `transition-duration` (default 250ms) and `eager` — render the palette content
|
|
453
454
|
before it is first shown (useful for SSR/measurement; off by default so the
|
|
454
455
|
body mounts lazily).
|
|
@@ -757,7 +758,7 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
757
758
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | When `true`, the palette opens as a bottom off-canvas sheet on mobile viewports instead of a floating popover; on desktop it stays a popover. Mirrors the adaptive behaviour of `BbPopover`/`BbDropdown`/`BbDatePicker`. When unset, falls back to the global `config.adaptive`. |
|
|
758
759
|
| `alpha` | `boolean \| undefined` | `false` | | Enable the alpha channel. The picker shows an opacity slider and emits `#RRGGBBAA` hex8 values. |
|
|
759
760
|
| `anchor` | `ElementOrComponentRef \| undefined` | | | Element or component ref the popover positions itself relative to. Defaults to the activator element when omitted, allowing the popover to be anchored to a larger container (e.g. the full input row) while a smaller element (e.g. a color dot) remains the click target. |
|
|
760
|
-
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element. Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
761
|
+
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element: it stays inside it alongside its trigger (sideways for a popover above or below); away from the trigger it may pass the edge, and it flips at the viewport only. Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
761
762
|
| `disabled` | `boolean \| undefined` | `false` | | Disable all interaction (activator and palette). |
|
|
762
763
|
| `disableFlip` | `boolean \| undefined` | `false` | | Disables the automatic flip to the opposite side when the popover would overflow (flipping is on by default). |
|
|
763
764
|
| `eager` | `boolean \| undefined` | `false` | | Renders the palette panel at mount instead of on the first open (the phone sheet's too). |
|
package/dist/ai/BbDatePicker.md
CHANGED
|
@@ -416,7 +416,7 @@ and digit typeahead; the time rail exposes labelled columns. Always pass a
|
|
|
416
416
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile, open in a bottom off-canvas sheet instead of a floating popover. When unset, falls back to the global `config.adaptive`. |
|
|
417
417
|
| `ampm` | `boolean \| undefined` | `false` | | 12-hour display with an AM/PM column (requires `type="datetime"`); emits stay 24h. |
|
|
418
418
|
| `anchor` | `ElementOrComponentRef \| undefined` | | | Element or component ref the popover positions itself relative to. Defaults to the activator when omitted (anchor to a larger row while a smaller element stays the click target). |
|
|
419
|
-
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element or CSS selector. |
|
|
419
|
+
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element or CSS selector: sideways only, alongside the trigger; it flips at the viewport. |
|
|
420
420
|
| `disabled` | `boolean \| undefined` | `false` | | Disables the activator and the calendar. |
|
|
421
421
|
| `disableFlip` | `boolean \| undefined` | `false` | | Disable the automatic flip to the opposite side on overflow. |
|
|
422
422
|
| `eager` | `boolean \| undefined` | `false` | | Render popover content before it is first shown. |
|
package/dist/ai/BbDropdown.md
CHANGED
|
@@ -1600,7 +1600,11 @@ const items: BbDropdownItem[] = [
|
|
|
1600
1600
|
`placement` is `'cursor'`.
|
|
1601
1601
|
- `offset` (gap from the anchor), `padding` (minimum space kept from the
|
|
1602
1602
|
viewport edge), and `boundary` (an element, component ref, or CSS selector
|
|
1603
|
-
|
|
1603
|
+
the panel stays inside alongside its trigger; it may still open past the
|
|
1604
|
+
edge away from the trigger, and only the viewport flips it) tune positioning.
|
|
1605
|
+
Pass `boundary` a `useTemplateRef` or a selector, not `$refs.x`: `$refs` is
|
|
1606
|
+
not reactive, so a menu in a table cell rendered before the ref was set keeps
|
|
1607
|
+
no boundary until that row happens to re-render. `eager` pre-renders the panel
|
|
1604
1608
|
before first open; `transitionDuration` controls the open/close animation.
|
|
1605
1609
|
- The menu closes itself on outside click/focus, on `Escape`, when another
|
|
1606
1610
|
dropdown opens, and when the activator scrolls out of view. `disabled`
|
|
@@ -2170,7 +2174,7 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
2170
2174
|
| `activator` | `Record<string, any> \| HTMLElement \| null \| undefined` | | | An external activator element or component ref: the activator slot is not rendered, and the listeners and ARIA (`aria-haspopup` / `aria-expanded` / `aria-controls`) are attached to it; don't add your own. |
|
|
2171
2175
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile (below `config.mobileMaxWidth`), renders the menu as a bottom sheet that drills into submenus one level at a time instead of hover flyouts; slots and selection are unchanged. Unset: the global `config.adaptive`. |
|
|
2172
2176
|
| `anchor` | `Record<string, any> \| HTMLElement \| null \| undefined` | `the activator element` | | The element the panel positions against when it should differ from the activator (a wrapper the activator is part of); an HTMLElement or component ref. It also drives a percentage `width`. Ignored with `placement="cursor"`. |
|
|
2173
|
-
| `boundary` | `string \| Record<string, any> \| HTMLElement \| null \| undefined` | | |
|
|
2177
|
+
| `boundary` | `string \| Record<string, any> \| HTMLElement \| null \| undefined` | | | Keeps the panel inside this element alongside its trigger (sideways for a menu above or below); away from the trigger it may pass the edge, and only the viewport flips it. An HTMLElement, a component ref or a CSS selector: a `useTemplateRef`, never `$refs.x` (not reactive). |
|
|
2174
2178
|
| `compact` | `boolean \| undefined` | `false` | | Compact density, the `BbSelect` ladder: flyout rows 28px → 24px, sheet rows 44px → 36px (a sheet row stays a touch target). The label size does not change. |
|
|
2175
2179
|
| `disabled` | `boolean \| undefined` | `false` | | Disables the component |
|
|
2176
2180
|
| `eager` | `boolean \| undefined` | `false` | | Renders the menu panel at mount instead of on the first open (the phone sheet's too), and keeps its rows after a close. Without it the rows mount on each open and go once the menu has closed. |
|
package/dist/ai/BbForm.md
CHANGED
|
@@ -125,21 +125,26 @@ import {
|
|
|
125
125
|
useBbFormContext,
|
|
126
126
|
} from 'bitboss-ui';
|
|
127
127
|
|
|
128
|
-
const
|
|
129
|
-
.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
128
|
+
const fields = z.object({
|
|
129
|
+
// An emptied text field holds `null`: the type's message covers it.
|
|
130
|
+
name: z.string('Enter your name').trim().min(1, 'Enter your name'),
|
|
131
|
+
// A transform: `@submit` receives the lower-cased address.
|
|
132
|
+
email: z.email('Enter a valid email').toLowerCase(),
|
|
133
|
+
password: z.string('Choose a password').min(8, 'At least 8 characters'),
|
|
134
|
+
confirm: z.string('Repeat the password'),
|
|
135
|
+
terms: z.literal(true, 'Accept the terms to continue'),
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// A cross-field rule: `path` puts the message on the second field, `when`
|
|
139
|
+
// runs it as soon as the two passwords parse (zod otherwise skips it while
|
|
140
|
+
// any other field fails).
|
|
141
|
+
const signup = fields.refine((form) => form.password === form.confirm, {
|
|
142
|
+
message: 'The passwords do not match',
|
|
143
|
+
path: ['confirm'],
|
|
144
|
+
when: (payload) =>
|
|
145
|
+
fields.pick({ password: true, confirm: true }).safeParse(payload.value)
|
|
146
|
+
.success,
|
|
147
|
+
});
|
|
143
148
|
|
|
144
149
|
const form = useBbFormContext('signup');
|
|
145
150
|
const created = ref<z.output<typeof signup> | null>(null);
|
|
@@ -165,7 +170,9 @@ What you get from the one prop:
|
|
|
165
170
|
`name="lines[0][qty]"` (brackets read as dots). A field with no `name` is
|
|
166
171
|
named after its label, `Full name` → `fullname`, so schema-driven forms set
|
|
167
172
|
`name` on every field. A cross-field rule
|
|
168
|
-
reaches the right field through its `path` (`path: ['confirm']` above)
|
|
173
|
+
reaches the right field through its `path` (`path: ['confirm']` above);
|
|
174
|
+
its `when` lets it run while other fields still fail (a zod object
|
|
175
|
+
refinement is skipped until the whole object parses).
|
|
169
176
|
- **Submit is gated** by the schema, async refinements included, exactly as it
|
|
170
177
|
is by field rules.
|
|
171
178
|
- **`@submit` receives the schema's output.** Transforms and coercions have
|
|
@@ -1176,7 +1183,8 @@ first (`JSON.parse(JSON.stringify(form.values.value))`).
|
|
|
1176
1183
|
|
|
1177
1184
|
### `resetForm()` clears the fields, and your model
|
|
1178
1185
|
|
|
1179
|
-
|
|
1186
|
+
`resetForm()` is the slot's name; from outside the form the same reset is
|
|
1187
|
+
`useBbFormContext(id).reset()` (the handle has no `resetForm`). Resetting publishes the new value back through each field's
|
|
1180
1188
|
`update:modelValue` (and writes it into the object bound with `:model`), so
|
|
1181
1189
|
the control, the form's own state and whatever ref you bound all agree
|
|
1182
1190
|
afterwards.
|
package/dist/ai/BbHoverCard.md
CHANGED
|
@@ -463,7 +463,7 @@ value written in `<script>` is typed as `BbHoverCardProps['pt']`.
|
|
|
463
463
|
| --- | --- | --- | --- | --- |
|
|
464
464
|
| `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `content`, `footer`, `header`, `panel`, `root`. States: `open`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbHoverCardProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
|
|
465
465
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the activator slot is not rendered and the hover / focus listeners are attached programmatically to the referenced element. |
|
|
466
|
-
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the card within a bounding element
|
|
466
|
+
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the card within a bounding element: it stays inside it alongside its trigger (sideways for a card above or below); away from the trigger it may pass the edge, and it flips at the viewport only. Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
467
467
|
| `delay` | `number \| undefined` | `350` | | Milliseconds the pointer (or keyboard focus) rests on the activator before the card shows; longer than BbTooltip's, so passing over does not open it. Closing has a fixed grace (guide § Timing and the safe zone). |
|
|
468
468
|
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. Disabling an open card closes it. |
|
|
469
469
|
| `eager` | `boolean \| undefined` | `false` | | Renders the card's content at mount instead of on the first open. |
|
package/dist/ai/BbPopover.md
CHANGED
|
@@ -472,8 +472,10 @@ Fine-tune the geometry with:
|
|
|
472
472
|
- `offset` — gap (px) between the activator and the panel (default `4`).
|
|
473
473
|
- `padding` — minimum gap (px) the panel keeps from the page edge (default
|
|
474
474
|
`10`).
|
|
475
|
-
- `boundary` — an element, ref, or CSS selector
|
|
476
|
-
|
|
475
|
+
- `boundary` — an element, ref, or CSS selector the panel stays inside
|
|
476
|
+
alongside its trigger (a sidebar's width, a table's). Away from the trigger
|
|
477
|
+
it may pass the edge: a panel under a table's last row opens below it
|
|
478
|
+
rather than flipping, and only the viewport flips it.
|
|
477
479
|
|
|
478
480
|
`BbPopover` is a floating **panel**, not a speech bubble — it never renders an
|
|
479
481
|
arrow. Reach for `BbTooltip` when you want an arrow pointing back at the trigger
|
|
@@ -871,7 +873,7 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
871
873
|
| `pt:<part>`, `pt:<part>:<state>`, `pt` | `PtValue` | | | Passthrough — a class list, or `{ class, style, attrs }`, bound to one named part of the component; the state form applies only while that state is on. Parts: `content`, `footer`, `header`, `panel`, `root`, `sheet`. States: `open`. What each one is: _Passthrough parts and states_ below. `pt` is the object form with the same keys minus the prefix (`{ icon: '…', 'icon:loading': '…' }`). See `guides/passthrough.md`. In `<script>` a `pt` value is typed `BbPopoverProps['pt']` (`PtValue` is not exported): § Typing `pt` in `<script>`. |
|
|
872
874
|
| `activator` | `ElementOrComponentRef \| undefined` | | | External activator element or component ref. When provided, the activator slot is not rendered and click events are attached programmatically to the referenced element. |
|
|
873
875
|
| `adaptive` | `boolean \| undefined` | ``config.adaptive` (`true`)` | | On mobile (below `config.mobileMaxWidth`), renders as a bottom sheet instead of a floating panel, with the same `header`, `default` and `footer` slots. `width` is ignored there: size the sheet with `offCanvasProps`. Unset: the global `config.adaptive`. |
|
|
874
|
-
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element
|
|
876
|
+
| `boundary` | `ElementOrComponentRefOrSelector \| undefined` | | | Constrains the popover within a bounding element: it stays inside it alongside its trigger (sideways for a popover above or below); away from the trigger it may pass the edge, and it flips at the viewport only. Accepts an HTMLElement, a Vue component ref, or a CSS selector string. |
|
|
875
877
|
| `disabled` | `boolean \| undefined` | `false` | | Disables the component. |
|
|
876
878
|
| `eager` | `boolean \| undefined` | `false` | | Renders the panel's content at mount instead of on the first open (the phone sheet's too). |
|
|
877
879
|
| `focusTarget` | `string \| undefined` | | | Selector for the element that receives focus after opening. Defaults to the first focusable element inside the popover. |
|
|
@@ -1758,7 +1758,7 @@ A `pt` value written in `<script>` (a constant, a preset, a wrapper's
|
|
|
1758
1758
|
| `ariaDescribedby` | `string \| string[] \| undefined` | | | Space-separated IDREF(s) that describe this field for assistive technologies. Accepts either a string or array of ids. |
|
|
1759
1759
|
| `ariaInvalid` | `boolean \| undefined` | `undefined` | | Explicit invalid state for accessibility semantics. Falls back to `hasErrors` when not provided. |
|
|
1760
1760
|
| `autocomplete` | `string \| undefined` | `"off"` | | Browser autocomplete hint for the popover search input. |
|
|
1761
|
-
| `boundary` | `string \| Record<string, any> \| HTMLElement \| null \| undefined` | | | Constrains the popover to a specific boundary element. |
|
|
1761
|
+
| `boundary` | `string \| Record<string, any> \| HTMLElement \| null \| undefined` | | | Constrains the popover to a specific boundary element: it stays inside it alongside its trigger (sideways for a popover above or below); away from the trigger it may pass the edge, and it flips at the viewport only. |
|
|
1762
1762
|
| `clearable` | `boolean \| undefined` | `false` | | Shows a clear button in the search field, in the lens' place while there is a query or a selection; it resets both. None without a search field. Leave it off when the activator already clears (as BbSelect's does). |
|
|
1763
1763
|
| `compact` | `boolean \| undefined` | `false` | | Apply the compact density variant. |
|
|
1764
1764
|
| `dependencies` | `unknown[] \| undefined` | `[]` | | Additional dependencies that trigger item reloading when changed. |
|