@appsbd/vue3-appsbd-ui 1.0.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/.ai/ai_ref_AbAvatar.md +43 -0
- package/.ai/ai_ref_AbBadge.md +44 -0
- package/.ai/ai_ref_AbButton.md +71 -0
- package/.ai/ai_ref_AbCard.md +53 -0
- package/.ai/ai_ref_AbCarousel.md +47 -0
- package/.ai/ai_ref_AbColorPicker.md +55 -0
- package/.ai/ai_ref_AbConfirmPopover.md +59 -0
- package/.ai/ai_ref_AbCustomField.md +74 -0
- package/.ai/ai_ref_AbDarkModeToggler.md +42 -0
- package/.ai/ai_ref_AbDateTimePicker.md +105 -0
- package/.ai/ai_ref_AbEasyModal.md +62 -0
- package/.ai/ai_ref_AbField.md +93 -0
- package/.ai/ai_ref_AbFileUploader.md +63 -0
- package/.ai/ai_ref_AbFilterPanel.md +71 -0
- package/.ai/ai_ref_AbFormCheck.md +75 -0
- package/.ai/ai_ref_AbImageRadioInput.md +63 -0
- package/.ai/ai_ref_AbInputField.md +71 -0
- package/.ai/ai_ref_AbInputTag.md +73 -0
- package/.ai/ai_ref_AbKbd.md +35 -0
- package/.ai/ai_ref_AbKbdGroup.md +33 -0
- package/.ai/ai_ref_AbModal.md +103 -0
- package/.ai/ai_ref_AbMultiSelect.md +108 -0
- package/.ai/ai_ref_AbNumberField.md +84 -0
- package/.ai/ai_ref_AbPinInput.md +45 -0
- package/.ai/ai_ref_AbPopover.md +64 -0
- package/.ai/ai_ref_AbPricingCard.md +64 -0
- package/.ai/ai_ref_AbPricingContainer.md +49 -0
- package/.ai/ai_ref_AbPricingTable.md +72 -0
- package/.ai/ai_ref_AbProgressbar.md +37 -0
- package/.ai/ai_ref_AbScrollbar.md +48 -0
- package/.ai/ai_ref_AbSettingsForm.md +54 -0
- package/.ai/ai_ref_AbSideMenuItem.md +58 -0
- package/.ai/ai_ref_AbSidebar.md +70 -0
- package/.ai/ai_ref_AbSkeleton.md +41 -0
- package/.ai/ai_ref_AbSlider.md +71 -0
- package/.ai/ai_ref_AbTab.md +38 -0
- package/.ai/ai_ref_AbTable.md +59 -0
- package/.ai/ai_ref_AbTabs.md +47 -0
- package/.ai/ai_ref_AbToggle.md +65 -0
- package/.ai/ai_ref_AbTooltip.md +53 -0
- package/.ai/ai_ref_AbWizard.md +77 -0
- package/.ai/ai_ref_AbWizardStep.md +48 -0
- package/.ai/ai_ref_global_config.md +66 -0
- package/.ai/ltr-after.png +0 -0
- package/.ai/rtl-after.png +0 -0
- package/.ai/rtl-before.png +0 -0
- package/AI_REFERENCE.md +1178 -0
- package/dist/skins/_prefix.scss +1 -0
- package/dist/skins/black.css +1 -0
- package/dist/skins/black.scss +3 -0
- package/dist/skins/cyan.css +1 -0
- package/dist/skins/cyan.scss +3 -0
- package/dist/skins/default.css +1 -0
- package/dist/skins/default.scss +5 -0
- package/dist/skins/gray.css +1 -0
- package/dist/skins/gray.scss +3 -0
- package/dist/skins/green.css +1 -0
- package/dist/skins/green.scss +5 -0
- package/dist/skins/orange.css +1 -0
- package/dist/skins/orange.scss +3 -0
- package/dist/skins/pink.css +1 -0
- package/dist/skins/pink.scss +3 -0
- package/dist/skins/purple.css +1 -0
- package/dist/skins/purple.scss +3 -0
- package/dist/skins/red.css +1 -0
- package/dist/skins/red.scss +3 -0
- package/dist/skins/themes/_black.scss +6 -0
- package/dist/skins/themes/_blue.scss +43 -0
- package/dist/skins/themes/_common_variable.scss +589 -0
- package/dist/skins/themes/_cyan.scss +6 -0
- package/dist/skins/themes/_gray.scss +6 -0
- package/dist/skins/themes/_green.scss +6 -0
- package/dist/skins/themes/_grid.scss +27 -0
- package/dist/skins/themes/_orange.scss +6 -0
- package/dist/skins/themes/_pink.scss +6 -0
- package/dist/skins/themes/_purple.scss +6 -0
- package/dist/skins/themes/_red.scss +6 -0
- package/dist/skins/themes/_violet.scss +6 -0
- package/dist/skins/violet.css +1 -0
- package/dist/skins/violet.scss +3 -0
- package/dist/style.css +1 -0
- package/dist/vue3-appsbd-ui.cjs.js +201 -0
- package/dist/vue3-appsbd-ui.es.js +9294 -0
- package/package.json +60 -0
- package/readme.md +136 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
# AbField — AI Reference
|
|
2
|
+
|
|
3
|
+
Polymorphic field wrapper — renders a text, textarea, select, multiselect, tag, checkbox, radio, toggle, or switch control based on the `type` prop. Use this when you want a single component to handle any form field type uniformly.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-field type="text" v-model="form.name" name="name" label="Name" rules="required" />
|
|
14
|
+
|
|
15
|
+
<ab-field
|
|
16
|
+
type="select"
|
|
17
|
+
v-model="form.country"
|
|
18
|
+
name="country"
|
|
19
|
+
label="Country"
|
|
20
|
+
:options="countries"
|
|
21
|
+
label-key="title"
|
|
22
|
+
value-key="val"
|
|
23
|
+
searchable
|
|
24
|
+
/>
|
|
25
|
+
|
|
26
|
+
<ab-field
|
|
27
|
+
type="toggle"
|
|
28
|
+
v-model="form.notifications"
|
|
29
|
+
name="notifications"
|
|
30
|
+
title="Enable notifications"
|
|
31
|
+
description="Receive email updates"
|
|
32
|
+
/>
|
|
33
|
+
</template>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Props
|
|
37
|
+
|
|
38
|
+
| Name | Type | Default | Description |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| `val` | `any` | `null` | Initial value (used when `modelValue` is empty). |
|
|
41
|
+
| `label` | `String` | **required** | Field label. |
|
|
42
|
+
| `name` | `String` | **required** | VeeValidate field name. |
|
|
43
|
+
| `type` | `String` | `"text"` | `text`, `email`, `password`, `number`, `url`, `textarea`, `select`, `multiselect`, `tag`, `checkbox`, `radio`, `toggle`, `switch`. |
|
|
44
|
+
| `prefix` | `String` | `""` | Prefix text/icon. |
|
|
45
|
+
| `postfix` | `String` | `""` | Postfix text/icon. |
|
|
46
|
+
| `modelValue` | `String \| Number \| Boolean \| Array \| Object` | `""` | Two-way-bound value. |
|
|
47
|
+
| `isCodeInput` | `Boolean` | `false` | Applies monospace styling. |
|
|
48
|
+
| `containerClass` | `String` | `""` | Wrapper class. |
|
|
49
|
+
| `maxlength` | `String \| Number` | `""` | Native maxlength. |
|
|
50
|
+
| `minlength` | `String \| Number` | `""` | Native minlength. |
|
|
51
|
+
| `placeholder` | `String` | `""` | Input placeholder. |
|
|
52
|
+
| `hints` | `String \| Array` | `""` | Helper text. |
|
|
53
|
+
| `rules` | `String \| Array` | `""` | VeeValidate rules. |
|
|
54
|
+
| `options` | `Array` | `[]` | Options for select / checkbox / radio. |
|
|
55
|
+
| `labelKey` | `String` | `"title"` | Option label property. |
|
|
56
|
+
| `valueKey` | `String` | `"val"` | Option value property. |
|
|
57
|
+
| `max` | `Number` | `-1` | Max selections (multiselect/tag); `-1` = unlimited. |
|
|
58
|
+
| `size` | `String` | `"md"` | Field size. |
|
|
59
|
+
| `object` | `Boolean` | `false` | Return full objects instead of values (multiselect). |
|
|
60
|
+
| `searchable` | `Boolean` | `false` | Enable search (select). |
|
|
61
|
+
| `description` | `String` | `""` | Secondary description. |
|
|
62
|
+
| `helptext` | `String` | `""` | Help text. |
|
|
63
|
+
| `isInline` | `Boolean` | `false` | Inline layout (checkbox/radio). |
|
|
64
|
+
| `trueValue` | `any` | `"Y"` | Toggle/switch on value. |
|
|
65
|
+
| `falseValue` | `any` | `"N"` | Toggle/switch off value. |
|
|
66
|
+
| `title` | `String \| null` | `null` | Toggle/switch title. |
|
|
67
|
+
| `isLeftIconBorder` | `Boolean` | `false` | Border on left icon. |
|
|
68
|
+
| `isRightIconBorder` | `Boolean` | `false` | Border on right icon. |
|
|
69
|
+
|
|
70
|
+
## Events
|
|
71
|
+
|
|
72
|
+
| Event | Payload | Description |
|
|
73
|
+
| --- | --- | --- |
|
|
74
|
+
| `update:modelValue` | `value` | v-model sync. |
|
|
75
|
+
| `clear` | `event` | Multiselect field cleared. |
|
|
76
|
+
| `change` | `value` | Multiselect value changed. |
|
|
77
|
+
| `select` | `value` | Multiselect option selected. |
|
|
78
|
+
|
|
79
|
+
## Slots
|
|
80
|
+
|
|
81
|
+
| Name | Description |
|
|
82
|
+
| --- | --- |
|
|
83
|
+
| `label` | Custom label. |
|
|
84
|
+
| `prefix` | Custom prefix. |
|
|
85
|
+
| `postfix` | Custom postfix. |
|
|
86
|
+
| `description` | Custom description. |
|
|
87
|
+
| `helptext` | Custom help text. |
|
|
88
|
+
| `option` | Custom option rendering (select). |
|
|
89
|
+
| `singlelabel` | Custom single-value label (select). |
|
|
90
|
+
|
|
91
|
+
## v-model
|
|
92
|
+
|
|
93
|
+
Yes — supports `modelValue` / `update:modelValue`.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# AbFileUploader — AI Reference
|
|
2
|
+
|
|
3
|
+
File upload input with drag-and-drop, size validation, and preview. Can render a default uploader UI or accept a custom one via slots.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-file-uploader
|
|
14
|
+
v-model="file"
|
|
15
|
+
label="Upload avatar"
|
|
16
|
+
:max-size="1.5"
|
|
17
|
+
@on-select-files="handleFiles"
|
|
18
|
+
/>
|
|
19
|
+
|
|
20
|
+
<!-- Custom UI -->
|
|
21
|
+
<ab-file-uploader v-model="file" :max-size="5">
|
|
22
|
+
<template #dial>
|
|
23
|
+
<div class="my-drop-zone">Drop files here</div>
|
|
24
|
+
</template>
|
|
25
|
+
</ab-file-uploader>
|
|
26
|
+
</template>
|
|
27
|
+
|
|
28
|
+
<script setup>
|
|
29
|
+
import { ref } from 'vue';
|
|
30
|
+
const file = ref(null);
|
|
31
|
+
function handleFiles(files) {
|
|
32
|
+
console.log('Selected files:', files);
|
|
33
|
+
}
|
|
34
|
+
</script>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Props
|
|
38
|
+
|
|
39
|
+
| Name | Type | Default | Description |
|
|
40
|
+
| --- | --- | --- | --- |
|
|
41
|
+
| `modelValue` | `File \| Array \| String` | `null` | Selected file (or URL string / array). |
|
|
42
|
+
| `maxSize` | `Number` | `2.0` | Max file size in MB. |
|
|
43
|
+
| `label` | `String` | `""` | Field label. |
|
|
44
|
+
| `containerClass` | `String` | `""` | Wrapper class. |
|
|
45
|
+
|
|
46
|
+
## Events
|
|
47
|
+
|
|
48
|
+
| Event | Payload | Description |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| `update:modelValue` | `file` | v-model sync. |
|
|
51
|
+
| `onSelectFiles` | `files` | All selected files after size validation. |
|
|
52
|
+
|
|
53
|
+
## Slots
|
|
54
|
+
|
|
55
|
+
| Name | Description |
|
|
56
|
+
| --- | --- |
|
|
57
|
+
| `label` | Custom label. |
|
|
58
|
+
| `dial` | Custom uploader UI (replaces the default design). |
|
|
59
|
+
| `default` | Alternative custom UI slot. |
|
|
60
|
+
|
|
61
|
+
## v-model
|
|
62
|
+
|
|
63
|
+
Yes.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# AbFilterPanel — AI Reference
|
|
2
|
+
|
|
3
|
+
Advanced filter panel for list and table views. Supports quick/advance modes, single-field search, date ranges, and an optional QR/barcode scan button.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-filter-panel
|
|
14
|
+
:filter-options="filterOptions"
|
|
15
|
+
is-advance
|
|
16
|
+
is-searchable
|
|
17
|
+
size="sm"
|
|
18
|
+
@search-filter="handleSearch"
|
|
19
|
+
@reset="handleReset"
|
|
20
|
+
/>
|
|
21
|
+
</template>
|
|
22
|
+
|
|
23
|
+
<script setup>
|
|
24
|
+
const filterOptions = [
|
|
25
|
+
{ propName: 'name', label: 'Name', type: 'text' },
|
|
26
|
+
{ propName: 'status', label: 'Status', type: 'select', options: [...] },
|
|
27
|
+
{ propName: 'createdAt', label: 'Created', type: 'daterange' },
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
function handleSearch(data) {
|
|
31
|
+
// data: [{ propName, operators, value }, ...]
|
|
32
|
+
}
|
|
33
|
+
</script>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Props
|
|
37
|
+
|
|
38
|
+
| Name | Type | Default | Description |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| `isAdvance` | `Boolean` | `false` | Show all filters in an expanded layout. |
|
|
41
|
+
| `isQuickAdvance` | `Boolean` | `false` | Quick advance mode. |
|
|
42
|
+
| `isSingle` | `Boolean` | `false` | Single-field search mode. |
|
|
43
|
+
| `isAllowed` | `Boolean` | `false` | Permission flag consumed by the template. |
|
|
44
|
+
| `canScan` | `Boolean` | `false` | Show a QR / barcode scan button. |
|
|
45
|
+
| `filterOptions` | `Array` | `[]` | Filter field definitions. |
|
|
46
|
+
| `scanProps` | `String` | `""` | Property name to apply scan result to. |
|
|
47
|
+
| `showScanFld` | `Boolean` | `false` | Force-show the scan field. |
|
|
48
|
+
| `showDrGroupText` | `Boolean` | `true` | Show date-range group label. |
|
|
49
|
+
| `dateFormat` | `String` | `"MMM DD,YYYY"` | Date display format. |
|
|
50
|
+
| `isSearchable` | `Boolean` | `false` | Allow searching within option lists. |
|
|
51
|
+
| `isMaxDate` | `Boolean` | `true` | Limit date pickers to today as max. |
|
|
52
|
+
| `size` | `String` | `"xs"` | Control size. |
|
|
53
|
+
| `advanceSearchInputContainerClass` | `String` | `"col-6"` | Grid column class for inputs in advance mode. |
|
|
54
|
+
| `isQuickAdvanceAutoSearch` | `Boolean` | `false` | Fire search automatically on field change (quick advance). |
|
|
55
|
+
|
|
56
|
+
## Events
|
|
57
|
+
|
|
58
|
+
| Event | Payload | Description |
|
|
59
|
+
| --- | --- | --- |
|
|
60
|
+
| `searchFilter` | `Array<{ propName, operators, value }>` | User triggered a search. |
|
|
61
|
+
| `reset` | — | Filter reset clicked. |
|
|
62
|
+
| `ChangeSearchMode` | `showScan: Boolean` | Toggled between search and scan modes. |
|
|
63
|
+
|
|
64
|
+
## Slots
|
|
65
|
+
|
|
66
|
+
| Name | Description |
|
|
67
|
+
| --- | --- |
|
|
68
|
+
| `prefix` | Filter prefix. |
|
|
69
|
+
| `postfix` | Filter postfix. |
|
|
70
|
+
| `icon` | Filter icon. |
|
|
71
|
+
| `hints` | Helper text. |
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# AbFormCheck / AbRadioInput — AI Reference
|
|
2
|
+
|
|
3
|
+
Checkbox or radio group with card, segmented, and pill visual variants. `AbRadioInput` is an alias export of `AbFormCheck` — both register to the same component.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<!-- Checkbox group -->
|
|
14
|
+
<ab-form-check
|
|
15
|
+
v-model="selected"
|
|
16
|
+
name="features"
|
|
17
|
+
:options="[
|
|
18
|
+
{ val: 'a', title: 'Email reports' },
|
|
19
|
+
{ val: 'b', title: 'Slack notifications' },
|
|
20
|
+
{ val: 'c', title: 'SMS alerts' },
|
|
21
|
+
]"
|
|
22
|
+
label="Enable"
|
|
23
|
+
/>
|
|
24
|
+
|
|
25
|
+
<!-- Radio group — card variant -->
|
|
26
|
+
<ab-form-check
|
|
27
|
+
v-model="plan"
|
|
28
|
+
type="radio"
|
|
29
|
+
name="plan"
|
|
30
|
+
variant="card"
|
|
31
|
+
:options="plans"
|
|
32
|
+
/>
|
|
33
|
+
</template>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Props
|
|
37
|
+
|
|
38
|
+
| Name | Type | Default | Description |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| `modelValue` | `any` | — | v-model binding (array for checkboxes, single value for radio). |
|
|
41
|
+
| `label` | `String \| null` | `null` | Group label. |
|
|
42
|
+
| `rules` | `String` | `""` | VeeValidate rules. |
|
|
43
|
+
| `val` | `any` | `null` | Initial value. |
|
|
44
|
+
| `type` | `String` | `"checkbox"` | `"checkbox"` or `"radio"`. |
|
|
45
|
+
| `isInline` | `Boolean` | `false` | Render options inline. |
|
|
46
|
+
| `options` | `Array` | `[]` | Each: `{ val, title, description?, icon?, img_src?, iconComponent?, disable? }`. |
|
|
47
|
+
| `name` | `String` | **required** | Field name. |
|
|
48
|
+
| `limit` | `Number` | `0` | Max selections (0 = unlimited). |
|
|
49
|
+
| `containerClass` | `String` | `"mb-3"` | Wrapper class. |
|
|
50
|
+
| `size` | `String` | `"md"` | Control size. |
|
|
51
|
+
| `iconSize` | `String` | `"24px"` | Icon size (when option has an icon). |
|
|
52
|
+
| `iconGap` | `String` | `"10px"` | Gap between icon and label. |
|
|
53
|
+
| `variant` | `String` | `"default"` | `default`, `card`, `segmented`, `pill`. |
|
|
54
|
+
|
|
55
|
+
## Events
|
|
56
|
+
|
|
57
|
+
| Event | Payload | Description |
|
|
58
|
+
| --- | --- | --- |
|
|
59
|
+
| `update:modelValue` | `value` | v-model sync. |
|
|
60
|
+
|
|
61
|
+
## Slots
|
|
62
|
+
|
|
63
|
+
| Name | Description |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `label` | Group label. |
|
|
66
|
+
| `description` | Group description. |
|
|
67
|
+
| `help-text` | Helper text. |
|
|
68
|
+
| `input-img-{option.title}` | Per-option image slot. |
|
|
69
|
+
| `input-icon-{option.title}` | Per-option icon component slot. |
|
|
70
|
+
| `label-{option.title}` | Per-option label slot. |
|
|
71
|
+
| `description-{option.title}` | Per-option description slot. |
|
|
72
|
+
|
|
73
|
+
## v-model
|
|
74
|
+
|
|
75
|
+
Yes.
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# AbImageRadioInput — AI Reference
|
|
2
|
+
|
|
3
|
+
Radio-group variant that renders visual image / icon tiles for each option. Useful for theme pickers, layout pickers, and other visual-first choices.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-image-radio-input
|
|
14
|
+
v-model="theme"
|
|
15
|
+
:options="[
|
|
16
|
+
{ val: 'light', label: 'Light', img_src: '/theme-light.png' },
|
|
17
|
+
{ val: 'dark', label: 'Dark', img_src: '/theme-dark.png' },
|
|
18
|
+
{ val: 'system', label: 'System', icon: 'bi bi-laptop' },
|
|
19
|
+
]"
|
|
20
|
+
/>
|
|
21
|
+
</template>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Props
|
|
25
|
+
|
|
26
|
+
| Name | Type | Default | Description |
|
|
27
|
+
| --- | --- | --- | --- |
|
|
28
|
+
| `modelValue` | `any` | — | v-model binding. |
|
|
29
|
+
| `width` | `String` | `"auto"` | Option width. |
|
|
30
|
+
| `height` | `String` | `"auto"` | Option height. |
|
|
31
|
+
| `maxWidth` | `String` | `"inherit"` | Max width. |
|
|
32
|
+
| `maxImgWidth` | `String` | `"50%"` | Image max width. |
|
|
33
|
+
| `borderRadius` | `String` | `"5px"` | Option border radius. |
|
|
34
|
+
| `margin` | `String` | `"0 15px 15px 0"` | Option margin. |
|
|
35
|
+
| `padding` | `String` | `"10px"` | Option padding. |
|
|
36
|
+
| `selectorTop` | `String` | `"5px"` | Position of the checkmark indicator (top). |
|
|
37
|
+
| `selectorLeft` | `String` | `"5px"` | Position of the checkmark indicator (left). |
|
|
38
|
+
| `selectorColor` | `String` | `""` | Checkmark color. |
|
|
39
|
+
| `iconSize` | `String` | `"inherit"` | Option icon size. |
|
|
40
|
+
| `options` | `Array` | `[]` | Option objects — see shape below. |
|
|
41
|
+
| `isInline` | `Boolean` | `false` | Inline (row) layout. |
|
|
42
|
+
| `optionClass` | `String` | `""` | Class for each option wrapper. |
|
|
43
|
+
| `labelBorder` | `String` | `"1px solid transparent"` | Option border. |
|
|
44
|
+
|
|
45
|
+
**Option shape**: `{ val, label?, img_src?, icon?, iconComponent?, icon_ctnr_class?, class? }`
|
|
46
|
+
|
|
47
|
+
## Events
|
|
48
|
+
|
|
49
|
+
| Event | Payload | Description |
|
|
50
|
+
| --- | --- | --- |
|
|
51
|
+
| `update:modelValue` | `value` | v-model sync. |
|
|
52
|
+
|
|
53
|
+
## Slots
|
|
54
|
+
|
|
55
|
+
| Name | Scope | Description |
|
|
56
|
+
| --- | --- | --- |
|
|
57
|
+
| `icon_image` | `option` | Custom image/icon for each option. |
|
|
58
|
+
| `label` | `option` | Custom label rendering. |
|
|
59
|
+
| `label-{val}` | — | Custom label for a specific option by `val`. |
|
|
60
|
+
|
|
61
|
+
## v-model
|
|
62
|
+
|
|
63
|
+
Yes.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# AbInputField — AI Reference
|
|
2
|
+
|
|
3
|
+
Core text input with built-in VeeValidate integration, localized feedback, and prefix/postfix/hint slots. Use this for single-line text inputs; use `AbField` if you want a polymorphic field that can render selects, toggles, etc.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin. Peer dependencies: `vee-validate`, `@vee-validate/rules`.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-input-field
|
|
14
|
+
v-model="form.email"
|
|
15
|
+
name="email"
|
|
16
|
+
label="Email"
|
|
17
|
+
placeholder="you@example.com"
|
|
18
|
+
rules="required|email"
|
|
19
|
+
hints="We'll never share your email."
|
|
20
|
+
>
|
|
21
|
+
<template #prefix><i class="bi bi-envelope"></i></template>
|
|
22
|
+
</ab-input-field>
|
|
23
|
+
</template>
|
|
24
|
+
|
|
25
|
+
<script setup>
|
|
26
|
+
import { reactive } from 'vue';
|
|
27
|
+
const form = reactive({ email: '' });
|
|
28
|
+
</script>
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Props
|
|
32
|
+
|
|
33
|
+
| Name | Type | Default | Description |
|
|
34
|
+
| --- | --- | --- | --- |
|
|
35
|
+
| `modelValue` | `any` | `null` | Two-way-bound value. |
|
|
36
|
+
| `label` | `String` | `""` | Field label. |
|
|
37
|
+
| `placeholder` | `String` | `""` | Input placeholder. |
|
|
38
|
+
| `type` | `String` | `"text"` | Native input type (`text`, `email`, `password`, `number`, `tel`, …). |
|
|
39
|
+
| `name` | `String` | **required** | VeeValidate field name. |
|
|
40
|
+
| `isCodeInput` | `Boolean` | `false` | Applies monospace / code-input styling. |
|
|
41
|
+
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
42
|
+
| `containerClass` | `String` | `"mb-3"` | Class on the wrapper `<div>`. |
|
|
43
|
+
| `hints` | `String` | `""` | Helper text beneath the input. |
|
|
44
|
+
| `prefix` | `String` | `""` | Prefix text/icon (shortcut for `#prefix` slot). |
|
|
45
|
+
| `postfix` | `String` | `""` | Postfix text/icon. |
|
|
46
|
+
| `maxlength` | `any` | `null` | Native `maxlength`. |
|
|
47
|
+
| `isLeftIconBorder` | `Boolean` | `false` | Renders border between the prefix icon and the input. |
|
|
48
|
+
| `isRightIconBorder` | `Boolean` | `false` | Renders border between the postfix icon and the input. |
|
|
49
|
+
|
|
50
|
+
## Events
|
|
51
|
+
|
|
52
|
+
| Event | Payload | Description |
|
|
53
|
+
| --- | --- | --- |
|
|
54
|
+
| `update:modelValue` | `value` | v-model sync. |
|
|
55
|
+
| `input` | `value` | Fired on input. |
|
|
56
|
+
| `keyup` | `KeyboardEvent` | Forwarded native event. |
|
|
57
|
+
| `keydown` | `KeyboardEvent` | Forwarded native event. |
|
|
58
|
+
| `paste` | `ClipboardEvent` | Forwarded native event. |
|
|
59
|
+
|
|
60
|
+
## Slots
|
|
61
|
+
|
|
62
|
+
| Name | Description |
|
|
63
|
+
| --- | --- |
|
|
64
|
+
| `label` | Custom label content. |
|
|
65
|
+
| `prefix` | Prefix icon / text. |
|
|
66
|
+
| `postfix` | Postfix icon / text. |
|
|
67
|
+
| `hints` | Helper text (overrides `hints` prop). |
|
|
68
|
+
|
|
69
|
+
## v-model
|
|
70
|
+
|
|
71
|
+
Yes — `modelValue` + `update:modelValue`.
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# AbInputTag — AI Reference
|
|
2
|
+
|
|
3
|
+
Multi-tag input — lets users enter and manage a list of tags. Optionally supports an `options` array for autocomplete-style selection.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-input-tag
|
|
14
|
+
v-model="tags"
|
|
15
|
+
name="tags"
|
|
16
|
+
label="Tags"
|
|
17
|
+
placeholder="Type and press Enter"
|
|
18
|
+
:max="10"
|
|
19
|
+
hints="Up to 10 tags"
|
|
20
|
+
/>
|
|
21
|
+
|
|
22
|
+
<!-- With preset options -->
|
|
23
|
+
<ab-input-tag
|
|
24
|
+
v-model="skills"
|
|
25
|
+
name="skills"
|
|
26
|
+
:options="['Vue', 'React', 'Angular', 'Svelte']"
|
|
27
|
+
/>
|
|
28
|
+
</template>
|
|
29
|
+
|
|
30
|
+
<script setup>
|
|
31
|
+
import { ref } from 'vue';
|
|
32
|
+
const tags = ref([]);
|
|
33
|
+
const skills = ref([]);
|
|
34
|
+
</script>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Props
|
|
38
|
+
|
|
39
|
+
| Name | Type | Default | Description |
|
|
40
|
+
| --- | --- | --- | --- |
|
|
41
|
+
| `modelValue` | `Array` | `[]` | v-model array of selected tags. |
|
|
42
|
+
| `options` | `Array` | `[]` | Each entry: `{ val, title }` or a plain string. |
|
|
43
|
+
| `label` | `String` | `""` | Field label. |
|
|
44
|
+
| `size` | `String` | `"md"` | Adjusts component size (`xs`, `sm`, `md`, `lg`, `xl`, `xxl`). |
|
|
45
|
+
| `placeholder` | `String` | `""` | Placeholder text. |
|
|
46
|
+
| `name` | `String` | **required** | VeeValidate field name. |
|
|
47
|
+
| `rules` | `String \| Object` | `""` | VeeValidate rules. |
|
|
48
|
+
| `containerClass` | `String` | `"mb-3"` | Wrapper class. |
|
|
49
|
+
| `hints` | `String` | `""` | Helper text. |
|
|
50
|
+
| `prefix` | `String` | `""` | Prefix icon/text. |
|
|
51
|
+
| `postfix` | `String` | `""` | Postfix icon/text. |
|
|
52
|
+
| `max` | `Number` | `0` | Max number of tags (0 = unlimited). |
|
|
53
|
+
| `isLeftIconBorder` | `Boolean` | `false` | Border on prefix icon. |
|
|
54
|
+
| `isRightIconBorder` | `Boolean` | `false` | Border on postfix icon. |
|
|
55
|
+
|
|
56
|
+
## Events
|
|
57
|
+
|
|
58
|
+
| Event | Payload | Description |
|
|
59
|
+
| --- | --- | --- |
|
|
60
|
+
| `update:modelValue` | `Array` | v-model sync. |
|
|
61
|
+
|
|
62
|
+
## Slots
|
|
63
|
+
|
|
64
|
+
| Name | Description |
|
|
65
|
+
| --- | --- |
|
|
66
|
+
| `label` | Custom label. |
|
|
67
|
+
| `prefix` | Prefix icon/text. |
|
|
68
|
+
| `postfix` | Postfix icon/text. |
|
|
69
|
+
| `hints` | Custom hints. |
|
|
70
|
+
|
|
71
|
+
## v-model
|
|
72
|
+
|
|
73
|
+
Yes.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# AbKbd — AI Reference
|
|
2
|
+
|
|
3
|
+
Styled `<kbd>`-like keyboard key chip. Compose multiple into a chord using `AbKbdGroup`.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
Press <ab-kbd>Esc</ab-kbd> to close.
|
|
14
|
+
|
|
15
|
+
<ab-kbd-group>
|
|
16
|
+
<ab-kbd>⌘</ab-kbd>
|
|
17
|
+
<ab-kbd>Shift</ab-kbd>
|
|
18
|
+
<ab-kbd>P</ab-kbd>
|
|
19
|
+
</ab-kbd-group>
|
|
20
|
+
</template>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Props
|
|
24
|
+
|
|
25
|
+
No declared props.
|
|
26
|
+
|
|
27
|
+
## Events
|
|
28
|
+
|
|
29
|
+
None.
|
|
30
|
+
|
|
31
|
+
## Slots
|
|
32
|
+
|
|
33
|
+
| Name | Description |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| `default` | Key label (typically a single character or short word). |
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
# AbKbdGroup — AI Reference
|
|
2
|
+
|
|
3
|
+
Visual grouping container for multiple `AbKbd` chips — typically used to render keyboard chords / shortcuts.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-kbd-group>
|
|
14
|
+
<ab-kbd>Ctrl</ab-kbd>
|
|
15
|
+
<ab-kbd>Alt</ab-kbd>
|
|
16
|
+
<ab-kbd>Del</ab-kbd>
|
|
17
|
+
</ab-kbd-group>
|
|
18
|
+
</template>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Props
|
|
22
|
+
|
|
23
|
+
No declared props.
|
|
24
|
+
|
|
25
|
+
## Events
|
|
26
|
+
|
|
27
|
+
None.
|
|
28
|
+
|
|
29
|
+
## Slots
|
|
30
|
+
|
|
31
|
+
| Name | Description |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| `default` | One or more `AbKbd` children. |
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# AbModal — AI Reference
|
|
2
|
+
|
|
3
|
+
Full-featured dialog with a built-in VeeValidate `<Form>`, loader overlay, and "message-only" mode. Exposes imperative methods for showing loaders, clearing forms, and closing.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Globally registered by the plugin.
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```vue
|
|
12
|
+
<template>
|
|
13
|
+
<ab-button class="btn-primary" @click="modalRef.open = true">Open</ab-button>
|
|
14
|
+
|
|
15
|
+
<ab-modal
|
|
16
|
+
ref="modal"
|
|
17
|
+
v-model:is-modal-visible="isOpen"
|
|
18
|
+
modal-size="modal-lg"
|
|
19
|
+
@on-submit="handleSubmit"
|
|
20
|
+
@close="isOpen = false"
|
|
21
|
+
>
|
|
22
|
+
<template #headerTitle>Edit profile</template>
|
|
23
|
+
|
|
24
|
+
<!-- default slot receives VeeValidate Form context -->
|
|
25
|
+
<ab-input-field name="email" label="Email" rules="required|email" v-model="form.email" />
|
|
26
|
+
|
|
27
|
+
<template #footer="{ close }">
|
|
28
|
+
<ab-button class="btn-outline-secondary" @click="close">Cancel</ab-button>
|
|
29
|
+
<ab-button class="btn-primary" type="submit">Save</ab-button>
|
|
30
|
+
</template>
|
|
31
|
+
</ab-modal>
|
|
32
|
+
</template>
|
|
33
|
+
|
|
34
|
+
<script setup>
|
|
35
|
+
import { ref } from 'vue';
|
|
36
|
+
const isOpen = ref(false);
|
|
37
|
+
const modal = ref(null);
|
|
38
|
+
const form = ref({ email: '' });
|
|
39
|
+
|
|
40
|
+
async function handleSubmit(values, { resetForm }) {
|
|
41
|
+
modal.value.showLoader(true, 'Saving…');
|
|
42
|
+
await api.save(values);
|
|
43
|
+
modal.value.showLoader(false);
|
|
44
|
+
modal.value.close();
|
|
45
|
+
}
|
|
46
|
+
</script>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Props
|
|
50
|
+
|
|
51
|
+
| Name | Type | Default | Description |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| `isModalVisible` | `Boolean` | — | Visibility state (supports `v-model:is-modal-visible`). |
|
|
54
|
+
| `modalSize` | `String` | `""` | Bootstrap size class (`modal-sm`, `modal-lg`, `modal-xl`). |
|
|
55
|
+
| `modalMsg` | `String` | `""` | Default message for message-only mode. |
|
|
56
|
+
| `hideHeader` | `Boolean` | `false` | Hide the header section entirely. |
|
|
57
|
+
| `hideBody` | `Boolean` | `false` | Hide the body section entirely. |
|
|
58
|
+
| `hideFooter` | `Boolean` | `false` | Hide the footer section entirely. |
|
|
59
|
+
| `hideCrossBtn` | `Boolean` | `false` | Hide the top-right close button. |
|
|
60
|
+
| `hideForm` | `Boolean` | `false` | Render the root as a plain `<div>` instead of a VeeValidate `<Form>`. |
|
|
61
|
+
| `bodyClass` | `String` | `""` | Extra class on the body section. |
|
|
62
|
+
| `isModalCenter` | `Boolean` | `true` | Vertically center the modal. |
|
|
63
|
+
| `isBorder` | `Boolean` | `false` | Show a border around the modal content. |
|
|
64
|
+
| `iconContainerClass` | `String` | `""` | Extra class on the header icon container. |
|
|
65
|
+
| `headerClass` | `String` | `""` | Preferred extra class on the header. |
|
|
66
|
+
| `headerrClass` | `String` | `""` | Legacy alias for `headerClass`. `headerClass` takes precedence when both are provided. |
|
|
67
|
+
|
|
68
|
+
## Events
|
|
69
|
+
|
|
70
|
+
| Event | Payload | Description |
|
|
71
|
+
| --- | --- | --- |
|
|
72
|
+
| `onSubmit` | `(event, { resetForm })` | Fired when the internal VeeValidate form is submitted. |
|
|
73
|
+
| `loading-status` | `Boolean` | Emitted whenever the loader state toggles. |
|
|
74
|
+
| `close` | — | Modal was closed (via ✕, Escape, or `close()`). |
|
|
75
|
+
|
|
76
|
+
## Slots
|
|
77
|
+
|
|
78
|
+
| Name | Scope | Description |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| `default` | VeeValidate `Form` slot-props | Form / body content when `hideForm` is `false`. |
|
|
81
|
+
| `header` | — | Overrides the entire header. |
|
|
82
|
+
| `headerIcon` | — | Icon shown at the start of the header. |
|
|
83
|
+
| `headerTitleContainer` | — | Overrides the title/subtitle wrapper. |
|
|
84
|
+
| `headerTitle` | — | Modal title text. |
|
|
85
|
+
| `headerSubTitle` | — | Modal subtitle text. |
|
|
86
|
+
| `body` | — | Overrides the body section. |
|
|
87
|
+
| `loader` | — | Overrides the default loader element. |
|
|
88
|
+
| `footer` | `{ close }` | Footer content — receives a `close()` function. |
|
|
89
|
+
|
|
90
|
+
## Exposed Methods (via template ref)
|
|
91
|
+
|
|
92
|
+
| Method | Description |
|
|
93
|
+
| --- | --- |
|
|
94
|
+
| `showLoader(status, msg?)` | Show/hide the loader with an optional message. |
|
|
95
|
+
| `close()` | Close the modal. |
|
|
96
|
+
| `clearForm()` | Reset the VeeValidate form and close. |
|
|
97
|
+
| `returnClear()` | Reset the form without closing. |
|
|
98
|
+
| `showMsgOnly(msg, isHideFooter?)` | Switch to message-only mode. |
|
|
99
|
+
| `setMessageOnly(status)` | Toggle message-only mode programmatically. |
|
|
100
|
+
|
|
101
|
+
## Notes
|
|
102
|
+
|
|
103
|
+
- Use `AbEasyModal` when you only need a simple trigger-and-close dialog without a form.
|