@velkymx/vibeui 0.8.2 → 0.9.0
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/README.md +171 -9
- package/dist/components/VibeAlert.vue.d.ts +12 -2
- package/dist/components/VibeAutocomplete.vue.d.ts +46 -0
- package/dist/components/VibeButton.vue.d.ts +4 -4
- package/dist/components/VibeDataTable.vue.d.ts +6 -6
- package/dist/components/VibeDatePicker.vue.d.ts +122 -0
- package/dist/components/VibeDraggable.vue.d.ts +81 -0
- package/dist/components/VibeDroppable.vue.d.ts +74 -0
- package/dist/components/VibeFileInput.vue.d.ts +133 -0
- package/dist/components/VibeFormCheckbox.vue.d.ts +1 -1
- package/dist/components/VibeFormDatepicker.vue.d.ts +1 -1
- package/dist/components/VibeFormGroup.vue.d.ts +1 -1
- package/dist/components/VibeFormInput.vue.d.ts +1 -1
- package/dist/components/VibeFormRadio.vue.d.ts +1 -1
- package/dist/components/VibeFormSelect.vue.d.ts +1 -1
- package/dist/components/VibeFormSpinbutton.vue.d.ts +1 -1
- package/dist/components/VibeFormSwitch.vue.d.ts +1 -1
- package/dist/components/VibeFormTextarea.vue.d.ts +1 -1
- package/dist/components/VibeFormWysiwyg.vue.d.ts +2 -2
- package/dist/components/VibeResizable.vue.d.ts +144 -0
- package/dist/components/VibeSkeleton.vue.d.ts +53 -0
- package/dist/components/VibeSlider.vue.d.ts +78 -0
- package/dist/components/VibeSortable.vue.d.ts +40 -0
- package/dist/components/VibeStepper.vue.d.ts +132 -0
- package/dist/components/VibeTab.vue.d.ts +45 -0
- package/dist/components/VibeTabs.vue.d.ts +82 -0
- package/dist/components/VibeToast.vue.d.ts +11 -0
- package/dist/components/VibeToastHost.vue.d.ts +15 -0
- package/dist/components/dndStore.d.ts +6 -0
- package/dist/components/index.d.ts +14 -1
- package/dist/composables/useForm.d.ts +22 -0
- package/dist/composables/usePosition.d.ts +20 -0
- package/dist/composables/useToast.d.ts +52 -0
- package/dist/directives/vTooltip.d.ts +25 -0
- package/dist/index.d.ts +6 -0
- package/dist/types.d.ts +11 -4
- package/dist/vibeui.css +1 -1
- package/dist/vibeui.es.js +4256 -1827
- package/dist/vibeui.umd.js +1 -1
- package/package.json +4 -5
- package/CLAUDE.md +0 -48
- package/docs/README.md +0 -153
- package/docs/components/advanced/popover.md +0 -150
- package/docs/components/advanced/scrollspy.md +0 -64
- package/docs/components/advanced/tooltip.md +0 -111
- package/docs/components/card/card.md +0 -215
- package/docs/components/core/alert.md +0 -72
- package/docs/components/core/badge.md +0 -81
- package/docs/components/core/button-group.md +0 -105
- package/docs/components/core/button.md +0 -127
- package/docs/components/core/close-button.md +0 -82
- package/docs/components/core/link.md +0 -36
- package/docs/components/core/placeholder.md +0 -135
- package/docs/components/core/spinner.md +0 -109
- package/docs/components/data/datatable.md +0 -416
- package/docs/components/interactive/accordion.md +0 -92
- package/docs/components/interactive/carousel.md +0 -97
- package/docs/components/interactive/collapse.md +0 -105
- package/docs/components/interactive/dropdown.md +0 -93
- package/docs/components/interactive/modal.md +0 -148
- package/docs/components/interactive/offcanvas.md +0 -89
- package/docs/components/interactive/toast.md +0 -114
- package/docs/components/layout/col.md +0 -123
- package/docs/components/layout/container.md +0 -59
- package/docs/components/layout/row.md +0 -113
- package/docs/components/list/list-group.md +0 -221
- package/docs/components/navigation/breadcrumb.md +0 -116
- package/docs/components/navigation/nav.md +0 -88
- package/docs/components/navigation/navbar.md +0 -106
- package/docs/components/navigation/pagination.md +0 -146
- package/docs/components/progress/progress.md +0 -182
- package/docs/composables/back-button.md +0 -28
- package/docs/composables/breakpoints.md +0 -54
- package/docs/composables/color-mode.md +0 -141
- package/docs/forms/README.md +0 -88
- package/docs/forms/form-checkbox.md +0 -50
- package/docs/forms/form-datepicker.md +0 -50
- package/docs/forms/form-group.md +0 -80
- package/docs/forms/form-input.md +0 -55
- package/docs/forms/form-radio.md +0 -58
- package/docs/forms/form-select.md +0 -54
- package/docs/forms/form-spinbutton.md +0 -55
- package/docs/forms/form-switch.md +0 -47
- package/docs/forms/form-textarea.md +0 -51
- package/docs/forms/form-wysiwyg.md +0 -64
- package/docs/forms/input-group.md +0 -51
- package/docs/forms/validation.md +0 -599
- package/llms.txt +0 -422
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
# VibeAccordion
|
|
2
|
-
|
|
3
|
-
Collapsible accordion component for organizing content in a data-driven way.
|
|
4
|
-
|
|
5
|
-
## Props
|
|
6
|
-
|
|
7
|
-
| Prop | Type | Default | Description |
|
|
8
|
-
|------|------|---------|-------------|
|
|
9
|
-
| `id` | `String` | `Auto-generated` | Unique identifier for the accordion |
|
|
10
|
-
| `flush` | `Boolean` | `false` | Remove borders and rounded corners |
|
|
11
|
-
| `items` | `AccordionItem[]` | Required | Array of accordion items |
|
|
12
|
-
| `alwaysOpen` | `Boolean` | `false` | Don't collapse other items when one is opened |
|
|
13
|
-
|
|
14
|
-
### AccordionItem Interface
|
|
15
|
-
|
|
16
|
-
```typescript
|
|
17
|
-
interface AccordionItem {
|
|
18
|
-
id: string
|
|
19
|
-
title: string
|
|
20
|
-
content: string
|
|
21
|
-
show?: boolean
|
|
22
|
-
}
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
## Events
|
|
26
|
-
|
|
27
|
-
| Event | Payload | Description |
|
|
28
|
-
|-------|---------|-------------|
|
|
29
|
-
| `item-click` | `{ item, index }` | Emitted when an accordion item is clicked |
|
|
30
|
-
| `show` | `id` | Emitted when an item starts showing |
|
|
31
|
-
| `shown` | `id` | Emitted when an item is fully shown |
|
|
32
|
-
| `hide` | `id` | Emitted when an item starts hiding |
|
|
33
|
-
| `hidden` | `id` | Emitted when an item is fully hidden |
|
|
34
|
-
|
|
35
|
-
## Slots
|
|
36
|
-
|
|
37
|
-
| Slot | Scope | Description |
|
|
38
|
-
|------|-------|-------------|
|
|
39
|
-
| `title` | `{ item, index }` | Custom title rendering |
|
|
40
|
-
| `content` | `{ item, index }` | Custom content rendering |
|
|
41
|
-
|
|
42
|
-
## Usage
|
|
43
|
-
|
|
44
|
-
### Basic Example
|
|
45
|
-
|
|
46
|
-
```vue
|
|
47
|
-
<template>
|
|
48
|
-
<VibeAccordion :items="accordionItems" />
|
|
49
|
-
</template>
|
|
50
|
-
|
|
51
|
-
<script setup>
|
|
52
|
-
const accordionItems = [
|
|
53
|
-
{
|
|
54
|
-
id: 'collapseOne',
|
|
55
|
-
title: 'Accordion Item #1',
|
|
56
|
-
content: 'This is the first item\'s content.',
|
|
57
|
-
show: true
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
id: 'collapseTwo',
|
|
61
|
-
title: 'Accordion Item #2',
|
|
62
|
-
content: 'This is the second item\'s content.'
|
|
63
|
-
}
|
|
64
|
-
]
|
|
65
|
-
</script>
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Always Open
|
|
69
|
-
|
|
70
|
-
Items stay open when another item is opened:
|
|
71
|
-
|
|
72
|
-
```vue
|
|
73
|
-
<template>
|
|
74
|
-
<VibeAccordion always-open :items="accordionItems" />
|
|
75
|
-
</template>
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
## Important Notes
|
|
79
|
-
|
|
80
|
-
**Automatic Initialization:** This component automatically initializes Bootstrap's Collapse functionality for each item when it is mounted, provided that Bootstrap's JavaScript is available in your project.
|
|
81
|
-
|
|
82
|
-
**Reactivity:** The `show` property in the `AccordionItem` objects is watched. Changing it in your parent state will trigger the corresponding Bootstrap transition.
|
|
83
|
-
|
|
84
|
-
## Bootstrap CSS Classes
|
|
85
|
-
|
|
86
|
-
- `.accordion`
|
|
87
|
-
- `.accordion-flush`
|
|
88
|
-
- `.accordion-item`
|
|
89
|
-
- `.accordion-header`
|
|
90
|
-
- `.accordion-button`
|
|
91
|
-
- `.accordion-collapse`
|
|
92
|
-
- `.accordion-body`
|
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
# VibeCarousel
|
|
2
|
-
|
|
3
|
-
Data-driven slideshow component for cycling through images or content.
|
|
4
|
-
|
|
5
|
-
## Props
|
|
6
|
-
|
|
7
|
-
| Prop | Type | Default | Description |
|
|
8
|
-
|------|------|---------|-------------|
|
|
9
|
-
| `id` | `String` | `Auto-generated` | Unique identifier |
|
|
10
|
-
| `modelValue` | `Number` | `0` | Active slide index (v-model) |
|
|
11
|
-
| `controls` | `Boolean` | `true` | Show prev/next controls |
|
|
12
|
-
| `indicators` | `Boolean` | `true` | Show slide indicators |
|
|
13
|
-
| `ride` | `Boolean\|String` | `false` | Auto-play: `false`, `true`, or `'carousel'` |
|
|
14
|
-
| `interval` | `Number\|Boolean` | `5000` | Slide interval in ms (`false` to disable) |
|
|
15
|
-
| `keyboard` | `Boolean` | `true` | Keyboard navigation |
|
|
16
|
-
| `pause` | `String\|Boolean` | `'hover'` | Pause on hover (`'hover'` or `false`) |
|
|
17
|
-
| `wrap` | `Boolean` | `true` | Continuous cycling |
|
|
18
|
-
| `touch` | `Boolean` | `true` | Touch swipe support |
|
|
19
|
-
| `dark` | `Boolean` | `false` | Dark variant indicators/controls |
|
|
20
|
-
| `fade` | `Boolean` | `false` | Fade transition instead of slide |
|
|
21
|
-
| `items` | `CarouselItem[]` | Required | Array of carousel items |
|
|
22
|
-
|
|
23
|
-
### CarouselItem Interface
|
|
24
|
-
|
|
25
|
-
```typescript
|
|
26
|
-
interface CarouselItem {
|
|
27
|
-
src: string
|
|
28
|
-
alt?: string
|
|
29
|
-
caption?: string
|
|
30
|
-
captionText?: string
|
|
31
|
-
active?: boolean
|
|
32
|
-
interval?: number
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
## Events
|
|
37
|
-
|
|
38
|
-
| Event | Payload | Description |
|
|
39
|
-
|-------|---------|-------------|
|
|
40
|
-
| `update:modelValue` | `Number` | Emitted when the active slide changes |
|
|
41
|
-
| `slide` | - | Emitted when slide transition starts |
|
|
42
|
-
| `slid` | - | Emitted when slide transition completes |
|
|
43
|
-
|
|
44
|
-
## Slots
|
|
45
|
-
|
|
46
|
-
| Slot | Scope | Description |
|
|
47
|
-
|------|-------|-------------|
|
|
48
|
-
| `caption` | `{ item, index }` | Custom caption rendering |
|
|
49
|
-
|
|
50
|
-
## Usage
|
|
51
|
-
|
|
52
|
-
### Reactive Usage (v-model)
|
|
53
|
-
|
|
54
|
-
```vue
|
|
55
|
-
<template>
|
|
56
|
-
<div>
|
|
57
|
-
<VibeCarousel v-model="currentSlide" :items="carouselItems" />
|
|
58
|
-
|
|
59
|
-
<div class="mt-3">
|
|
60
|
-
<VibeButton @click="currentSlide = 0">Go to Slide 1</VibeButton>
|
|
61
|
-
<VibeButton @click="currentSlide = 1">Go to Slide 2</VibeButton>
|
|
62
|
-
</div>
|
|
63
|
-
</div>
|
|
64
|
-
</template>
|
|
65
|
-
|
|
66
|
-
<script setup>
|
|
67
|
-
import { ref } from 'vue'
|
|
68
|
-
const currentSlide = ref(0)
|
|
69
|
-
const carouselItems = [...]
|
|
70
|
-
</script>
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Basic Carousel
|
|
74
|
-
|
|
75
|
-
```vue
|
|
76
|
-
<template>
|
|
77
|
-
<VibeCarousel :items="carouselItems" />
|
|
78
|
-
</template>
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
## Important Notes
|
|
82
|
-
|
|
83
|
-
**Automatic Initialization:** This component automatically initializes Bootstrap's Carousel functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
|
|
84
|
-
|
|
85
|
-
**Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
|
|
86
|
-
|
|
87
|
-
## Bootstrap CSS Classes
|
|
88
|
-
|
|
89
|
-
- `.carousel`
|
|
90
|
-
- `.carousel-inner`
|
|
91
|
-
- `.carousel-item`
|
|
92
|
-
- `.carousel-control-prev`
|
|
93
|
-
- `.carousel-control-next`
|
|
94
|
-
- `.carousel-indicators`
|
|
95
|
-
- `.carousel-caption`
|
|
96
|
-
- `.carousel-dark`
|
|
97
|
-
- `.carousel-fade`
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
# VibeCollapse
|
|
2
|
-
|
|
3
|
-
Toggle visibility of content with smooth transitions.
|
|
4
|
-
|
|
5
|
-
## Props
|
|
6
|
-
|
|
7
|
-
| Prop | Type | Default | Description |
|
|
8
|
-
|------|------|---------|-------------|
|
|
9
|
-
| `id` | `String` | `Auto-generated` | Unique identifier |
|
|
10
|
-
| `modelValue` | `Boolean` | `false` | Control visibility (v-model) |
|
|
11
|
-
| `tag` | `String` | `'div'` | HTML tag to render |
|
|
12
|
-
| `horizontal` | `Boolean` | `false` | Horizontal collapse |
|
|
13
|
-
| `isNav` | `Boolean` | `false` | Adds `navbar-collapse` class for use inside `VibeNavbar` |
|
|
14
|
-
|
|
15
|
-
## Events
|
|
16
|
-
|
|
17
|
-
| Event | Payload | Description |
|
|
18
|
-
|-------|---------|-------------|
|
|
19
|
-
| `update:modelValue` | `Boolean` | Emitted when visibility changes |
|
|
20
|
-
| `show` | - | Emitted when collapse starts showing |
|
|
21
|
-
| `shown` | - | Emitted when collapse is fully shown |
|
|
22
|
-
| `hide` | - | Emitted when collapse starts hiding |
|
|
23
|
-
| `hidden` | - | Emitted when collapse is fully hidden |
|
|
24
|
-
|
|
25
|
-
## Slots
|
|
26
|
-
|
|
27
|
-
| Slot | Description |
|
|
28
|
-
|------|-------------|
|
|
29
|
-
| `default` | Collapsible content |
|
|
30
|
-
|
|
31
|
-
## Usage
|
|
32
|
-
|
|
33
|
-
### Reactive Usage (v-model)
|
|
34
|
-
|
|
35
|
-
```vue
|
|
36
|
-
<template>
|
|
37
|
-
<div>
|
|
38
|
-
<VibeButton variant="primary" @click="show = !show">
|
|
39
|
-
Toggle Collapse
|
|
40
|
-
</VibeButton>
|
|
41
|
-
|
|
42
|
-
<VibeCollapse v-model="show">
|
|
43
|
-
<div class="card card-body mt-2">
|
|
44
|
-
This content is controlled via Vue state with smooth animations.
|
|
45
|
-
</div>
|
|
46
|
-
</VibeCollapse>
|
|
47
|
-
</div>
|
|
48
|
-
</template>
|
|
49
|
-
|
|
50
|
-
<script setup>
|
|
51
|
-
import { ref } from 'vue'
|
|
52
|
-
const show = ref(false)
|
|
53
|
-
</script>
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
### Inside a Navbar
|
|
57
|
-
|
|
58
|
-
When used inside a `VibeNavbar`, add `is-nav` to get the `navbar-collapse` class. `VibeNavbarToggle` will automatically synchronize with this component.
|
|
59
|
-
|
|
60
|
-
```vue
|
|
61
|
-
<template>
|
|
62
|
-
<VibeNavbar variant="dark" expand="lg">
|
|
63
|
-
<VibeNavbarBrand href="#">Brand</VibeNavbarBrand>
|
|
64
|
-
<VibeNavbarToggle target="navContent" />
|
|
65
|
-
<VibeCollapse id="navContent" is-nav>
|
|
66
|
-
<VibeNavbarNav :items="navItems" />
|
|
67
|
-
</VibeCollapse>
|
|
68
|
-
</VibeNavbar>
|
|
69
|
-
</template>
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
### Horizontal Collapse
|
|
73
|
-
|
|
74
|
-
```vue
|
|
75
|
-
<template>
|
|
76
|
-
<div>
|
|
77
|
-
<VibeButton variant="primary" @click="show = !show">
|
|
78
|
-
Toggle Width
|
|
79
|
-
</VibeButton>
|
|
80
|
-
|
|
81
|
-
<div style="min-height: 120px">
|
|
82
|
-
<VibeCollapse v-model="show" horizontal>
|
|
83
|
-
<div class="card card-body" style="width: 300px">
|
|
84
|
-
This is horizontal collapse content!
|
|
85
|
-
</div>
|
|
86
|
-
</VibeCollapse>
|
|
87
|
-
</div>
|
|
88
|
-
</div>
|
|
89
|
-
</template>
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Important Notes
|
|
93
|
-
|
|
94
|
-
**Automatic Initialization:** This component automatically initializes Bootstrap's Collapse functionality when it is mounted, ensuring that smooth sliding transitions are used.
|
|
95
|
-
|
|
96
|
-
**State Synchronization:** Refactored to ensure that clicking a toggle (like `VibeNavbarToggle`) updates both Vue's internal state and Bootstrap's JavaScript instance simultaneously.
|
|
97
|
-
|
|
98
|
-
**Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
|
|
99
|
-
|
|
100
|
-
## Bootstrap CSS Classes
|
|
101
|
-
|
|
102
|
-
- `.collapse`
|
|
103
|
-
- `.navbar-collapse` (when `is-nav` is set)
|
|
104
|
-
- `.collapse-horizontal`
|
|
105
|
-
- `.show`
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# VibeDropdown
|
|
2
|
-
|
|
3
|
-
Data-driven toggleable contextual overlay for displaying lists of links.
|
|
4
|
-
|
|
5
|
-
## Props
|
|
6
|
-
|
|
7
|
-
| Prop | Type | Default | Description |
|
|
8
|
-
|------|------|---------|-------------|
|
|
9
|
-
| `id` | `String` | `Auto-generated` | Unique identifier |
|
|
10
|
-
| `text` | `String` | `'Dropdown'` | Button text |
|
|
11
|
-
| `variant` | `Variant` | `'primary'` | Button color variant |
|
|
12
|
-
| `size` | `Size` | `undefined` | Button size (`'sm'` or `'lg'`) |
|
|
13
|
-
| `split` | `Boolean` | `false` | Split button style |
|
|
14
|
-
| `direction` | `Direction` | `'down'` | Direction: `'up'`, `'down'`, `'start'`, `'end'` |
|
|
15
|
-
| `menuEnd` | `Boolean` | `false` | Align menu to the right |
|
|
16
|
-
| `items` | `DropdownItem[]` | Required | Array of dropdown items |
|
|
17
|
-
| `autoClose` | `Boolean\|String` | `true` | Close behavior: `true`, `false`, `'inside'`, `'outside'` |
|
|
18
|
-
|
|
19
|
-
### DropdownItem Interface
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
interface DropdownItem {
|
|
23
|
-
text?: string
|
|
24
|
-
href?: string
|
|
25
|
-
to?: string | object
|
|
26
|
-
active?: boolean
|
|
27
|
-
disabled?: boolean
|
|
28
|
-
divider?: boolean
|
|
29
|
-
header?: boolean
|
|
30
|
-
}
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
## Events
|
|
34
|
-
|
|
35
|
-
| Event | Payload | Description |
|
|
36
|
-
|-------|---------|-------------|
|
|
37
|
-
| `item-click` | `{ item, index, event }` | Emitted when an item is clicked |
|
|
38
|
-
| `show` | - | Emitted when dropdown starts showing |
|
|
39
|
-
| `shown` | - | Emitted when dropdown is fully shown |
|
|
40
|
-
| `hide` | - | Emitted when dropdown starts hiding |
|
|
41
|
-
| `hidden` | - | Emitted when dropdown is fully hidden |
|
|
42
|
-
|
|
43
|
-
## Slots
|
|
44
|
-
|
|
45
|
-
| Slot | Scope | Description |
|
|
46
|
-
|------|-------|-------------|
|
|
47
|
-
| `button` | - | Custom button content |
|
|
48
|
-
| `item` | `{ item, index }` | Custom item rendering |
|
|
49
|
-
| `header` | `{ item, index }` | Custom header rendering |
|
|
50
|
-
|
|
51
|
-
## Usage
|
|
52
|
-
|
|
53
|
-
### Programmatic Control
|
|
54
|
-
|
|
55
|
-
```vue
|
|
56
|
-
<template>
|
|
57
|
-
<div>
|
|
58
|
-
<VibeButton @click="$refs.myDropdown.toggle()">External Toggle</VibeButton>
|
|
59
|
-
|
|
60
|
-
<VibeDropdown
|
|
61
|
-
ref="myDropdown"
|
|
62
|
-
text="Dropdown Menu"
|
|
63
|
-
:items="dropdownItems"
|
|
64
|
-
/>
|
|
65
|
-
</div>
|
|
66
|
-
</template>
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
### Basic Dropdown
|
|
70
|
-
|
|
71
|
-
```vue
|
|
72
|
-
<template>
|
|
73
|
-
<VibeDropdown
|
|
74
|
-
text="Dropdown Menu"
|
|
75
|
-
:items="dropdownItems"
|
|
76
|
-
/>
|
|
77
|
-
</template>
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
## Important Notes
|
|
81
|
-
|
|
82
|
-
**Automatic Initialization:** This component automatically initializes Bootstrap's Dropdown functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
|
|
83
|
-
|
|
84
|
-
**Programmatic Methods:** You can call `show()`, `hide()`, and `toggle()` on the component instance via template refs.
|
|
85
|
-
|
|
86
|
-
**Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
|
|
87
|
-
|
|
88
|
-
## Bootstrap CSS Classes
|
|
89
|
-
|
|
90
|
-
- `.dropdown`, `.dropup`, `.dropend`, `.dropstart`
|
|
91
|
-
- `.dropdown-toggle`
|
|
92
|
-
- `.dropdown-menu`
|
|
93
|
-
- `.dropdown-item`
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
# VibeModal
|
|
2
|
-
|
|
3
|
-
Modal dialogs for lightboxes, user notifications, or custom content.
|
|
4
|
-
|
|
5
|
-
## Props
|
|
6
|
-
|
|
7
|
-
| Prop | Type | Default | Description |
|
|
8
|
-
|------|------|---------|-------------|
|
|
9
|
-
| `id` | `String` | `Auto-generated` | Unique identifier for the modal |
|
|
10
|
-
| `modelValue` | `Boolean` | `false` | Control visibility (v-model) |
|
|
11
|
-
| `title` | `String` | `''` | Modal title |
|
|
12
|
-
| `size` | `Size\|'xl'` | `undefined` | Modal size: `'sm'`, `'lg'`, `'xl'` |
|
|
13
|
-
| `centered` | `Boolean` | `false` | Vertically center modal |
|
|
14
|
-
| `scrollable` | `Boolean` | `false` | Scrollable modal body |
|
|
15
|
-
| `fullscreen` | `Boolean\|String` | `false` | Fullscreen: `true` or breakpoint |
|
|
16
|
-
| `staticBackdrop` | `Boolean` | `false` | Don't close on backdrop click |
|
|
17
|
-
| `hideHeader` | `Boolean` | `false` | Hide header section |
|
|
18
|
-
| `hideFooter` | `Boolean` | `false` | Hide footer section |
|
|
19
|
-
| `teleport` | `Boolean\|String` | `'body'` | Destination for Vue Teleport |
|
|
20
|
-
|
|
21
|
-
## Events
|
|
22
|
-
|
|
23
|
-
| Event | Payload | Description |
|
|
24
|
-
|-------|---------|-------------|
|
|
25
|
-
| `update:modelValue` | `Boolean` | Emitted when modal visibility changes |
|
|
26
|
-
| `show` | - | Emitted when modal starts showing |
|
|
27
|
-
| `shown` | - | Emitted when modal is fully shown |
|
|
28
|
-
| `hide` | - | Emitted when modal starts hiding |
|
|
29
|
-
| `hidden` | - | Emitted when modal is fully hidden |
|
|
30
|
-
|
|
31
|
-
## Slots
|
|
32
|
-
|
|
33
|
-
| Slot | Description |
|
|
34
|
-
|------|-------------|
|
|
35
|
-
| `default` | Modal body content |
|
|
36
|
-
| `header` | Custom header content |
|
|
37
|
-
| `footer` | Custom footer content |
|
|
38
|
-
|
|
39
|
-
## Usage
|
|
40
|
-
|
|
41
|
-
### Reactive Usage (v-model)
|
|
42
|
-
|
|
43
|
-
```vue
|
|
44
|
-
<template>
|
|
45
|
-
<div>
|
|
46
|
-
<VibeButton variant="primary" @click="showModal = true">
|
|
47
|
-
Open Modal
|
|
48
|
-
</VibeButton>
|
|
49
|
-
|
|
50
|
-
<VibeModal v-model="showModal" title="Reactive Modal">
|
|
51
|
-
<p>This modal is controlled via Vue state.</p>
|
|
52
|
-
</VibeModal>
|
|
53
|
-
</div>
|
|
54
|
-
</template>
|
|
55
|
-
|
|
56
|
-
<script setup>
|
|
57
|
-
import { ref } from 'vue'
|
|
58
|
-
const showModal = ref(false)
|
|
59
|
-
</script>
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
### Basic Modal (Data Attributes)
|
|
63
|
-
|
|
64
|
-
```vue
|
|
65
|
-
<template>
|
|
66
|
-
<div>
|
|
67
|
-
<!-- You can still use standard Bootstrap data attributes -->
|
|
68
|
-
<VibeButton variant="primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
|
|
69
|
-
Launch Modal
|
|
70
|
-
</VibeButton>
|
|
71
|
-
|
|
72
|
-
<VibeModal id="exampleModal" title="Modal Title">
|
|
73
|
-
<p>Modal body text goes here.</p>
|
|
74
|
-
</VibeModal>
|
|
75
|
-
</div>
|
|
76
|
-
</template>
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
### Sized Modals
|
|
80
|
-
|
|
81
|
-
```vue
|
|
82
|
-
<template>
|
|
83
|
-
<div>
|
|
84
|
-
<VibeModal title="Small Modal" size="sm">
|
|
85
|
-
Small modal content
|
|
86
|
-
</VibeModal>
|
|
87
|
-
|
|
88
|
-
<VibeModal title="Large Modal" size="lg">
|
|
89
|
-
Large modal content
|
|
90
|
-
</VibeModal>
|
|
91
|
-
</div>
|
|
92
|
-
</template>
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Centered Modal
|
|
96
|
-
|
|
97
|
-
```vue
|
|
98
|
-
<template>
|
|
99
|
-
<VibeModal title="Centered Modal" centered>
|
|
100
|
-
This modal is vertically centered.
|
|
101
|
-
</VibeModal>
|
|
102
|
-
</template>
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
### Custom Footer
|
|
106
|
-
|
|
107
|
-
```vue
|
|
108
|
-
<template>
|
|
109
|
-
<VibeModal title="Custom Footer">
|
|
110
|
-
<p>Modal with custom footer buttons.</p>
|
|
111
|
-
|
|
112
|
-
<template #footer>
|
|
113
|
-
<VibeButton variant="secondary" @click="showModal = false">Close</VibeButton>
|
|
114
|
-
<VibeButton variant="primary">Save changes</VibeButton>
|
|
115
|
-
</template>
|
|
116
|
-
</VibeModal>
|
|
117
|
-
</template>
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
## Important Notes
|
|
121
|
-
|
|
122
|
-
**Automatic Initialization:** This component automatically initializes Bootstrap's Modal functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
|
|
123
|
-
|
|
124
|
-
**Teleportation:** By default, this component teleports its DOM elements to the `<body>` to avoid stacking context issues. You can customize this with the `teleport` prop.
|
|
125
|
-
|
|
126
|
-
**Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
|
|
127
|
-
|
|
128
|
-
## Mobile Optimization
|
|
129
|
-
|
|
130
|
-
**Safe Areas:** In fullscreen mode, the modal header and footer automatically respect device safe areas (notches) in hybrid apps.
|
|
131
|
-
|
|
132
|
-
**Hardware Back Button:** On Android devices in hybrid environments, the hardware back button will automatically close the modal if it is open.
|
|
133
|
-
|
|
134
|
-
**Dynamic Height:** Fullscreen modals use `dvh` (dynamic viewport height) units to ensure they occupy the full screen height even when mobile browser bars are visible.
|
|
135
|
-
|
|
136
|
-
## Bootstrap CSS Classes
|
|
137
|
-
|
|
138
|
-
- `.modal`
|
|
139
|
-
- `.modal-dialog`
|
|
140
|
-
- `.modal-content`
|
|
141
|
-
- `.modal-header`
|
|
142
|
-
- `.modal-title`
|
|
143
|
-
- `.modal-body`
|
|
144
|
-
- `.modal-footer`
|
|
145
|
-
- `.modal-{size}`
|
|
146
|
-
- `.modal-dialog-centered`
|
|
147
|
-
- `.modal-dialog-scrollable`
|
|
148
|
-
- `.modal-fullscreen`
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# VibeOffcanvas
|
|
2
|
-
|
|
3
|
-
Hidden sidebar for navigation or additional content.
|
|
4
|
-
|
|
5
|
-
## Props
|
|
6
|
-
|
|
7
|
-
| Prop | Type | Default | Description |
|
|
8
|
-
|------|------|---------|-------------|
|
|
9
|
-
| `id` | `String` | `Auto-generated` | Unique identifier |
|
|
10
|
-
| `modelValue` | `Boolean` | `false` | Control visibility (v-model) |
|
|
11
|
-
| `title` | `String` | `''` | Offcanvas title |
|
|
12
|
-
| `placement` | `OffcanvasPlacement` | `'start'` | Placement: `'start'`, `'end'`, `'top'`, `'bottom'` |
|
|
13
|
-
| `backdrop` | `Boolean\|String` | `true` | Backdrop: `true`, `false`, or `'static'` |
|
|
14
|
-
| `scroll` | `Boolean` | `false` | Allow body scrolling |
|
|
15
|
-
| `teleport` | `Boolean\|String` | `'body'` | Destination for Vue Teleport |
|
|
16
|
-
|
|
17
|
-
## Events
|
|
18
|
-
|
|
19
|
-
| Event | Payload | Description |
|
|
20
|
-
|-------|---------|-------------|
|
|
21
|
-
| `update:modelValue` | `Boolean` | Emitted when visibility changes |
|
|
22
|
-
| `show` | - | Emitted when offcanvas starts showing |
|
|
23
|
-
| `shown` | - | Emitted when offcanvas is fully shown |
|
|
24
|
-
| `hide` | - | Emitted when offcanvas starts hiding |
|
|
25
|
-
| `hidden` | - | Emitted when offcanvas is fully hidden |
|
|
26
|
-
|
|
27
|
-
## Slots
|
|
28
|
-
|
|
29
|
-
| Slot | Description |
|
|
30
|
-
|------|-------------|
|
|
31
|
-
| `default` | Offcanvas body content |
|
|
32
|
-
| `header` | Custom header content |
|
|
33
|
-
|
|
34
|
-
## Usage
|
|
35
|
-
|
|
36
|
-
### Reactive Usage (v-model)
|
|
37
|
-
|
|
38
|
-
```vue
|
|
39
|
-
<template>
|
|
40
|
-
<div>
|
|
41
|
-
<VibeButton variant="primary" @click="showOffcanvas = true">
|
|
42
|
-
Open Offcanvas
|
|
43
|
-
</VibeButton>
|
|
44
|
-
|
|
45
|
-
<VibeOffcanvas v-model="showOffcanvas" title="Reactive Offcanvas">
|
|
46
|
-
This offcanvas is controlled via Vue state.
|
|
47
|
-
</VibeOffcanvas>
|
|
48
|
-
</div>
|
|
49
|
-
</template>
|
|
50
|
-
|
|
51
|
-
<script setup>
|
|
52
|
-
import { ref } from 'vue'
|
|
53
|
-
const showOffcanvas = ref(false)
|
|
54
|
-
</script>
|
|
55
|
-
```
|
|
56
|
-
|
|
57
|
-
### Placement Options
|
|
58
|
-
|
|
59
|
-
```vue
|
|
60
|
-
<template>
|
|
61
|
-
<VibeOffcanvas title="Right Side" placement="end">
|
|
62
|
-
Content on the right
|
|
63
|
-
</VibeOffcanvas>
|
|
64
|
-
</template>
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
## Important Notes
|
|
68
|
-
|
|
69
|
-
**Automatic Initialization:** This component automatically initializes Bootstrap's Offcanvas functionality when it is mounted, provided that Bootstrap's JavaScript is available in your project.
|
|
70
|
-
|
|
71
|
-
**Teleportation:** By default, this component teleports its DOM elements to the `<body>` to avoid stacking context issues. You can customize this with the `teleport` prop.
|
|
72
|
-
|
|
73
|
-
**Instance Exposure:** You can access the underlying Bootstrap instance via template ref using the `bsInstance` property.
|
|
74
|
-
|
|
75
|
-
## Mobile Optimization
|
|
76
|
-
|
|
77
|
-
**Safe Areas:** When used in hybrid apps with `viewport-fit=cover`, the offcanvas header automatically adds padding to account for device notches.
|
|
78
|
-
|
|
79
|
-
**Hardware Back Button:** On Android devices in hybrid environments, the hardware back button will automatically close the offcanvas if it is open.
|
|
80
|
-
|
|
81
|
-
**Dynamic Height:** The offcanvas uses `dvh` (dynamic viewport height) units to ensure it occupies the full screen height even when mobile browser bars are visible.
|
|
82
|
-
|
|
83
|
-
## Bootstrap CSS Classes
|
|
84
|
-
|
|
85
|
-
- `.offcanvas`
|
|
86
|
-
- `.offcanvas-{placement}`
|
|
87
|
-
- `.offcanvas-header`
|
|
88
|
-
- `.offcanvas-title`
|
|
89
|
-
- `.offcanvas-body`
|