@appsbd/vue3-appsbd-ui 1.0.3 → 1.0.5

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.
Files changed (100) hide show
  1. package/.ai/ai_ref_AbAvatar.md +41 -51
  2. package/.ai/ai_ref_AbBadge.md +36 -45
  3. package/.ai/ai_ref_AbButton.md +52 -70
  4. package/.ai/ai_ref_AbCard.md +51 -70
  5. package/.ai/ai_ref_AbCarousel.md +36 -47
  6. package/.ai/ai_ref_AbChart.md +46 -87
  7. package/.ai/ai_ref_AbColorPicker.md +42 -55
  8. package/.ai/ai_ref_AbConfirmPopover.md +54 -59
  9. package/.ai/ai_ref_AbCustomField.md +66 -74
  10. package/.ai/ai_ref_AbDarkModeToggler.md +33 -42
  11. package/.ai/ai_ref_AbDateTimePicker.md +74 -108
  12. package/.ai/ai_ref_AbEasyModal.md +56 -62
  13. package/.ai/ai_ref_AbField.md +88 -96
  14. package/.ai/ai_ref_AbFileUploader.md +47 -63
  15. package/.ai/ai_ref_AbFilterPanel.md +67 -71
  16. package/.ai/ai_ref_AbFormCheck.md +58 -75
  17. package/.ai/ai_ref_AbImageRadioInput.md +55 -63
  18. package/.ai/ai_ref_AbInputField.md +66 -74
  19. package/.ai/ai_ref_AbInputTag.md +56 -76
  20. package/.ai/ai_ref_AbKbd.md +23 -35
  21. package/.ai/ai_ref_AbKbdGroup.md +21 -33
  22. package/.ai/ai_ref_AbMainLayout.md +106 -0
  23. package/.ai/ai_ref_AbModal.md +98 -103
  24. package/.ai/ai_ref_AbMultiSelect.md +78 -112
  25. package/.ai/ai_ref_AbNumberField.md +59 -84
  26. package/.ai/ai_ref_AbPinInput.md +33 -45
  27. package/.ai/ai_ref_AbPopover.md +54 -64
  28. package/.ai/ai_ref_AbPricingCard.md +56 -64
  29. package/.ai/ai_ref_AbPricingContainer.md +41 -49
  30. package/.ai/ai_ref_AbPricingTable.md +56 -72
  31. package/.ai/ai_ref_AbProgressbar.md +34 -44
  32. package/.ai/ai_ref_AbScrollbar.md +38 -48
  33. package/.ai/ai_ref_AbSettingsForm.md +46 -54
  34. package/.ai/ai_ref_AbSideMenuItem.md +47 -58
  35. package/.ai/ai_ref_AbSidebar.md +62 -70
  36. package/.ai/ai_ref_AbSkeleton.md +23 -41
  37. package/.ai/ai_ref_AbSlider.md +52 -71
  38. package/.ai/ai_ref_AbTab.md +30 -38
  39. package/.ai/ai_ref_AbTable.md +49 -59
  40. package/.ai/ai_ref_AbTabs.md +37 -47
  41. package/.ai/ai_ref_AbToggle.md +46 -65
  42. package/.ai/ai_ref_AbTooltip.md +39 -53
  43. package/.ai/ai_ref_AbWizard.md +64 -77
  44. package/.ai/ai_ref_AbWizardStep.md +36 -48
  45. package/.ai/ai_ref_abEventBus.md +9 -37
  46. package/.ai/ai_ref_abRequestParam.md +2 -17
  47. package/.ai/ai_ref_abTranslate.md +30 -15
  48. package/.ai/ai_ref_abVeeRules.md +2 -11
  49. package/.ai/ai_ref_global_config.md +57 -66
  50. package/.ai/ai_ref_useAlert.md +7 -20
  51. package/.ai/ai_ref_useFileValidator.md +3 -18
  52. package/.ai/ai_ref_useResponsive.md +6 -20
  53. package/.ai/ai_ref_useTheme.md +4 -15
  54. package/.ai/ai_ref_useToast.md +5 -17
  55. package/AI_REF.md +114 -0
  56. package/AI_REFERENCE.md +87 -1157
  57. package/design-system.md +403 -403
  58. package/dist/skins/black.css +1 -1
  59. package/dist/skins/black.scss +3 -3
  60. package/dist/skins/cyan.css +1 -1
  61. package/dist/skins/cyan.scss +3 -3
  62. package/dist/skins/default.css +1 -1
  63. package/dist/skins/default.scss +5 -5
  64. package/dist/skins/gray.css +1 -1
  65. package/dist/skins/gray.scss +3 -3
  66. package/dist/skins/green.css +1 -1
  67. package/dist/skins/green.scss +5 -5
  68. package/dist/skins/orange.css +1 -1
  69. package/dist/skins/orange.scss +3 -3
  70. package/dist/skins/pink.css +1 -1
  71. package/dist/skins/pink.scss +3 -3
  72. package/dist/skins/purple.css +1 -1
  73. package/dist/skins/purple.scss +3 -3
  74. package/dist/skins/red.css +1 -1
  75. package/dist/skins/red.scss +3 -3
  76. package/dist/skins/themes/_black.scss +18 -6
  77. package/dist/skins/themes/_blue.scss +18 -43
  78. package/dist/skins/themes/_common_variable.scss +695 -590
  79. package/dist/skins/themes/_cyan.scss +18 -6
  80. package/dist/skins/themes/_gray.scss +18 -6
  81. package/dist/skins/themes/_green.scss +18 -6
  82. package/dist/skins/themes/_grid.scss +32 -27
  83. package/dist/skins/themes/_orange.scss +18 -6
  84. package/dist/skins/themes/_pink.scss +18 -6
  85. package/dist/skins/themes/_purple.scss +18 -6
  86. package/dist/skins/themes/_red.scss +18 -6
  87. package/dist/skins/themes/_violet.scss +18 -6
  88. package/dist/skins/violet.css +1 -1
  89. package/dist/skins/violet.scss +3 -3
  90. package/dist/style.css +1 -1
  91. package/dist/vue3-appsbd-ui.cjs.js +145 -125
  92. package/dist/vue3-appsbd-ui.es.js +27822 -16778
  93. package/package.json +72 -66
  94. package/readme.md +194 -136
  95. package/scripts/postinstall.js +55 -0
  96. package/scripts/setup.js +16 -0
  97. package/scripts/skill-groups.js +38 -0
  98. package/skills/commands/generate-module.md +76 -0
  99. package/skills/commands/settings-form.md +175 -0
  100. package/skills/commands/use-appsbd-ui.md +40 -0
@@ -1,62 +1,56 @@
1
- # AbEasyModal — AI Reference
2
-
3
- Lightweight wrapper around `AbModal` that renders a trigger element and exposes imperative `openModal()` / `closeModal()` methods. Ideal for quick prompt-style dialogs where you do not need the full VeeValidate form wiring.
4
-
5
- ## Installation
6
-
7
- Globally registered by the plugin.
8
-
9
- ## Usage
10
-
11
- ```vue
12
- <template>
13
- <ab-easy-modal ref="modal">
14
- <template #action>
15
- <ab-button class="btn-primary">Show dialog</ab-button>
16
- </template>
17
-
18
- <template #title>Delete project?</template>
19
- <template #body>
20
- This cannot be undone.
21
- </template>
22
-
23
- <template #footer="{ closeModal }">
24
- <ab-button class="btn-outline-secondary" @click="closeModal">Cancel</ab-button>
25
- <ab-button class="btn-danger" @click="confirmDelete">Delete</ab-button>
26
- </template>
27
- </ab-easy-modal>
28
- </template>
29
-
30
- <script setup>
31
- import { ref } from 'vue';
32
- const modal = ref(null);
33
- async function confirmDelete() {
34
- await api.delete();
35
- modal.value.closeModal();
36
- }
37
- </script>
38
- ```
39
-
40
- ## Props
41
-
42
- All `AbModal` props can be forwarded via `$attrs` (e.g. `modal-size`, `hide-footer`).
43
-
44
- ## Events
45
-
46
- Inherits `AbModal`'s `onSubmit`, `loading-status`, and `close` events.
47
-
48
- ## Slots
49
-
50
- | Name | Scope | Description |
51
- | --- | --- | --- |
52
- | `action` | — | Trigger element rendered outside the modal (clicking it opens the modal). |
53
- | `title` | | Modal title. |
54
- | `body` | | Modal body content. |
55
- | `footer` | `{ closeModal, close }` | Footer; receives both close helpers. |
56
-
57
- ## Exposed Methods
58
-
59
- | Method | Description |
60
- | --- | --- |
61
- | `openModal()` | Open the modal programmatically. |
62
- | `closeModal()` | Close the modal programmatically. |
1
+ # AbEasyModal — AI Reference
2
+
3
+ Lightweight wrapper around `AbModal` that renders a trigger element and exposes imperative `openModal()` / `closeModal()` methods. Ideal for quick dialogs without full VeeValidate form wiring.
4
+
5
+ ## Usage
6
+
7
+ ```vue
8
+ <template>
9
+ <ab-easy-modal ref="modal">
10
+ <template #action>
11
+ <ab-button class="btn-primary">Show dialog</ab-button>
12
+ </template>
13
+
14
+ <template #title>Delete project?</template>
15
+ <template #body>This cannot be undone.</template>
16
+
17
+ <template #footer="{ closeModal }">
18
+ <ab-button class="btn-outline-secondary" @click="closeModal">Cancel</ab-button>
19
+ <ab-button class="btn-danger" @click="confirmDelete">Delete</ab-button>
20
+ </template>
21
+ </ab-easy-modal>
22
+ </template>
23
+
24
+ <script setup>
25
+ import { ref } from 'vue';
26
+ const modal = ref(null);
27
+ async function confirmDelete() {
28
+ await api.delete();
29
+ modal.value.closeModal();
30
+ }
31
+ </script>
32
+ ```
33
+
34
+ ## Props
35
+
36
+ All `AbModal` props can be forwarded via `$attrs` (e.g. `modal-size`, `hide-footer`).
37
+
38
+ ## Events
39
+
40
+ Inherits `AbModal`'s `onSubmit`, `loading-status`, and `close` events.
41
+
42
+ ## Slots
43
+
44
+ | Name | Scope | Description |
45
+ | --- | --- | --- |
46
+ | `action` | | Trigger element rendered outside the modal (clicking it opens the modal). |
47
+ | `title` | — | Modal title. |
48
+ | `body` | — | Modal body content. |
49
+ | `footer` | `{ closeModal, close }` | Footer; receives both close helpers. |
50
+
51
+ ## Exposed Methods
52
+
53
+ | Method | Description |
54
+ | --- | --- |
55
+ | `openModal()` | Open the modal programmatically. |
56
+ | `closeModal()` | Close the modal programmatically. |
@@ -1,96 +1,88 @@
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
- | `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
70
- | `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
71
-
72
- ## Events
73
-
74
- | Event | Payload | Description |
75
- | --- | --- | --- |
76
- | `update:modelValue` | `value` | v-model sync. |
77
- | `clear` | `event` | Multiselect field cleared. |
78
- | `change` | `value` | Multiselect value changed. |
79
- | `select` | `value` | Multiselect option selected. |
80
-
81
- ## Slots
82
-
83
- | Name | Description |
84
- | --- | --- |
85
- | `label` | Custom label. |
86
- | `prefix` | Custom prefix. |
87
- | `icon` | Custom icon. |
88
- | `postfix` | Custom postfix. |
89
- | `description` | Custom description. |
90
- | `helptext` | Custom help text. |
91
- | `option` | Custom option rendering (select). |
92
- | `singlelabel` | Custom single-value label (select). |
93
-
94
- ## v-model
95
-
96
- Yes — supports `modelValue` / `update:modelValue`.
1
+ # AbField — AI Reference
2
+
3
+ Polymorphic field wrapper — renders text, textarea, select, multiselect, tag, checkbox, radio, toggle, or switch based on the `type` prop.
4
+
5
+ ## Usage
6
+
7
+ ```vue
8
+ <template>
9
+ <ab-field type="text" v-model="form.name" name="name" label="Name" rules="required" />
10
+
11
+ <ab-field
12
+ type="select"
13
+ v-model="form.country"
14
+ name="country"
15
+ label="Country"
16
+ :options="countries"
17
+ label-key="title"
18
+ value-key="val"
19
+ searchable
20
+ />
21
+
22
+ <ab-field
23
+ type="toggle"
24
+ v-model="form.notifications"
25
+ name="notifications"
26
+ title="Enable notifications"
27
+ description="Receive email updates"
28
+ />
29
+ </template>
30
+ ```
31
+
32
+ ## Props
33
+
34
+ | Name | Type | Default | Description |
35
+ | --- | --- | --- | --- |
36
+ | `val` | `any` | `null` | Initial value (used when `modelValue` is empty). |
37
+ | `label` | `String` | **required** | Field label. |
38
+ | `name` | `String` | **required** | VeeValidate field name. |
39
+ | `type` | `String` | `"text"` | `text`, `email`, `password`, `number`, `url`, `textarea`, `select`, `multiselect`, `tag`, `checkbox`, `radio`, `toggle`, `switch`. |
40
+ | `prefix` | `String` | `""` | Prefix text/icon. |
41
+ | `postfix` | `String` | `""` | Postfix text/icon. |
42
+ | `modelValue` | `String \| Number \| Boolean \| Array \| Object` | `""` | Two-way-bound value. |
43
+ | `isCodeInput` | `Boolean` | `false` | Applies monospace styling. |
44
+ | `containerClass` | `String` | `""` | Wrapper class. |
45
+ | `maxlength` | `String \| Number` | `""` | Native maxlength. |
46
+ | `minlength` | `String \| Number` | `""` | Native minlength. |
47
+ | `placeholder` | `String` | `""` | Input placeholder. |
48
+ | `hints` | `String \| Array` | `""` | Helper text. |
49
+ | `rules` | `String \| Array` | `""` | VeeValidate rules. |
50
+ | `options` | `Array` | `[]` | Options for select / checkbox / radio. |
51
+ | `labelKey` | `String` | `"title"` | Option label property. |
52
+ | `valueKey` | `String` | `"val"` | Option value property. |
53
+ | `max` | `Number` | `-1` | Max selections (multiselect/tag); `-1` = unlimited. |
54
+ | `size` | `String` | `"md"` | Field size. |
55
+ | `object` | `Boolean` | `false` | Return full objects instead of values (multiselect). |
56
+ | `searchable` | `Boolean` | `false` | Enable search (select). |
57
+ | `description` | `String` | `""` | Secondary description. |
58
+ | `helptext` | `String` | `""` | Help text. |
59
+ | `isInline` | `Boolean` | `false` | Inline layout (checkbox/radio). |
60
+ | `trueValue` | `any` | `"Y"` | Toggle/switch on value. |
61
+ | `falseValue` | `any` | `"N"` | Toggle/switch off value. |
62
+ | `title` | `String \| null` | `null` | Toggle/switch title. |
63
+ | `isLeftIconBorder` | `Boolean` | `false` | Border on left icon. |
64
+ | `isRightIconBorder` | `Boolean` | `false` | Border on right icon. |
65
+ | `isHideLabel` | `Boolean` | `false` | Hide the label visually. |
66
+ | `iconPosition` | `String` | `"right"` | Position of the custom `#icon` slot (`"left"`, `"right"`). |
67
+
68
+ ## Events
69
+
70
+ | Event | Payload | Description |
71
+ | --- | --- | --- |
72
+ | `update:modelValue` | `value` | v-model sync. |
73
+ | `clear` | `event` | Multiselect field cleared. |
74
+ | `change` | `value` | Multiselect value changed. |
75
+ | `select` | `value` | Multiselect option selected. |
76
+
77
+ ## Slots
78
+
79
+ | Name | Description |
80
+ | --- | --- |
81
+ | `label` | Custom label. |
82
+ | `prefix` | Custom prefix. |
83
+ | `icon` | Custom icon. |
84
+ | `postfix` | Custom postfix. |
85
+ | `description` | Custom description. |
86
+ | `helptext` | Custom help text. |
87
+ | `option` | Custom option rendering (select). |
88
+ | `singlelabel` | Custom single-value label (select). |
@@ -1,63 +1,47 @@
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.
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
+ ## Usage
6
+
7
+ ```vue
8
+ <template>
9
+ <ab-file-uploader v-model="file" label="Upload avatar" :max-size="1.5" @on-select-files="handleFiles" />
10
+
11
+ <ab-file-uploader v-model="file" :max-size="5">
12
+ <template #dial>
13
+ <div class="my-drop-zone">Drop files here</div>
14
+ </template>
15
+ </ab-file-uploader>
16
+ </template>
17
+
18
+ <script setup>
19
+ import { ref } from 'vue';
20
+ const file = ref(null);
21
+ function handleFiles(files) { console.log('Selected files:', files); }
22
+ </script>
23
+ ```
24
+
25
+ ## Props
26
+
27
+ | Name | Type | Default | Description |
28
+ | --- | --- | --- | --- |
29
+ | `modelValue` | `File \| Array \| String` | `null` | Selected file (or URL string / array). |
30
+ | `maxSize` | `Number` | `2.0` | Max file size in MB. |
31
+ | `label` | `String` | `""` | Field label. |
32
+ | `containerClass` | `String` | `""` | Wrapper class. |
33
+
34
+ ## Events
35
+
36
+ | Event | Payload | Description |
37
+ | --- | --- | --- |
38
+ | `update:modelValue` | `file` | v-model sync. |
39
+ | `onSelectFiles` | `files` | All selected files after size validation. |
40
+
41
+ ## Slots
42
+
43
+ | Name | Description |
44
+ | --- | --- |
45
+ | `label` | Custom label. |
46
+ | `dial` | Custom uploader UI (replaces the default design). |
47
+ | `default` | Alternative custom UI slot. |
@@ -1,71 +1,67 @@
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. |
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
+ ## Usage
6
+
7
+ ```vue
8
+ <template>
9
+ <ab-filter-panel
10
+ :filter-options="filterOptions"
11
+ is-advance
12
+ is-searchable
13
+ size="sm"
14
+ @search-filter="handleSearch"
15
+ @reset="handleReset"
16
+ />
17
+ </template>
18
+
19
+ <script setup>
20
+ const filterOptions = [
21
+ { propName: 'name', label: 'Name', type: 'text' },
22
+ { propName: 'status', label: 'Status', type: 'select', options: [...] },
23
+ { propName: 'createdAt', label: 'Created', type: 'daterange' },
24
+ ];
25
+
26
+ function handleSearch(data) {
27
+ // data: [{ propName, operators, value }, ...]
28
+ }
29
+ </script>
30
+ ```
31
+
32
+ ## Props
33
+
34
+ | Name | Type | Default | Description |
35
+ | --- | --- | --- | --- |
36
+ | `isAdvance` | `Boolean` | `false` | Show all filters in an expanded layout. |
37
+ | `isQuickAdvance` | `Boolean` | `false` | Quick advance mode. |
38
+ | `isSingle` | `Boolean` | `false` | Single-field search mode. |
39
+ | `isAllowed` | `Boolean` | `false` | Permission flag consumed by the template. |
40
+ | `canScan` | `Boolean` | `false` | Show a QR / barcode scan button. |
41
+ | `filterOptions` | `Array` | `[]` | Filter field definitions. |
42
+ | `scanProps` | `String` | `""` | Property name to apply scan result to. |
43
+ | `showScanFld` | `Boolean` | `false` | Force-show the scan field. |
44
+ | `showDrGroupText` | `Boolean` | `true` | Show date-range group label. |
45
+ | `dateFormat` | `String` | `"MMM DD,YYYY"` | Date display format. |
46
+ | `isSearchable` | `Boolean` | `false` | Allow searching within option lists. |
47
+ | `isMaxDate` | `Boolean` | `true` | Limit date pickers to today as max. |
48
+ | `size` | `String` | `"xs"` | Control size. |
49
+ | `advanceSearchInputContainerClass` | `String` | `"col-6"` | Grid column class for inputs in advance mode. |
50
+ | `isQuickAdvanceAutoSearch` | `Boolean` | `false` | Fire search automatically on field change (quick advance). |
51
+
52
+ ## Events
53
+
54
+ | Event | Payload | Description |
55
+ | --- | --- | --- |
56
+ | `searchFilter` | `Array<{ propName, operators, value }>` | User triggered a search. |
57
+ | `reset` | — | Filter reset clicked. |
58
+ | `ChangeSearchMode` | `showScan: Boolean` | Toggled between search and scan modes. |
59
+
60
+ ## Slots
61
+
62
+ | Name | Description |
63
+ | --- | --- |
64
+ | `prefix` | Filter prefix. |
65
+ | `postfix` | Filter postfix. |
66
+ | `icon` | Filter icon. |
67
+ | `hints` | Helper text. |