@maz-ui/mcp 4.0.0-beta.26
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/LICENSE +21 -0
- package/README.md +264 -0
- package/bin/maz-ui-mcp.mjs +7 -0
- package/dist/mcp.d.mts +13 -0
- package/dist/mcp.d.ts +13 -0
- package/dist/mcp.mjs +586 -0
- package/docs/generated-docs/maz-accordion.doc.md +21 -0
- package/docs/generated-docs/maz-animated-counter.doc.md +17 -0
- package/docs/generated-docs/maz-animated-element.doc.md +14 -0
- package/docs/generated-docs/maz-animated-text.doc.md +14 -0
- package/docs/generated-docs/maz-avatar.doc.md +44 -0
- package/docs/generated-docs/maz-backdrop.doc.md +61 -0
- package/docs/generated-docs/maz-badge.doc.md +16 -0
- package/docs/generated-docs/maz-bottom-sheet.doc.md +21 -0
- package/docs/generated-docs/maz-btn.doc.md +30 -0
- package/docs/generated-docs/maz-card-spotlight.doc.md +16 -0
- package/docs/generated-docs/maz-card.doc.md +39 -0
- package/docs/generated-docs/maz-carousel.doc.md +16 -0
- package/docs/generated-docs/maz-chart.doc.md +10 -0
- package/docs/generated-docs/maz-checkbox.doc.md +34 -0
- package/docs/generated-docs/maz-checklist.doc.md +30 -0
- package/docs/generated-docs/maz-circular-progress-bar.doc.md +27 -0
- package/docs/generated-docs/maz-date-picker.doc.md +52 -0
- package/docs/generated-docs/maz-dialog-confirm.doc.md +24 -0
- package/docs/generated-docs/maz-dialog.doc.md +22 -0
- package/docs/generated-docs/maz-drawer.doc.md +26 -0
- package/docs/generated-docs/maz-dropdown.doc.md +42 -0
- package/docs/generated-docs/maz-dropzone.doc.md +82 -0
- package/docs/generated-docs/maz-expand-animation.doc.md +12 -0
- package/docs/generated-docs/maz-fullscreen-loader.doc.md +13 -0
- package/docs/generated-docs/maz-gallery.doc.md +17 -0
- package/docs/generated-docs/maz-icon.doc.md +18 -0
- package/docs/generated-docs/maz-input-code.doc.md +25 -0
- package/docs/generated-docs/maz-input-number.doc.md +31 -0
- package/docs/generated-docs/maz-input-phone-number.doc.md +56 -0
- package/docs/generated-docs/maz-input-price.doc.md +26 -0
- package/docs/generated-docs/maz-input-tags.doc.md +24 -0
- package/docs/generated-docs/maz-input.doc.md +54 -0
- package/docs/generated-docs/maz-lazy-img.doc.md +31 -0
- package/docs/generated-docs/maz-link.doc.md +31 -0
- package/docs/generated-docs/maz-loading-bar.doc.md +6 -0
- package/docs/generated-docs/maz-pagination.doc.md +22 -0
- package/docs/generated-docs/maz-popover.doc.md +70 -0
- package/docs/generated-docs/maz-pull-to-refresh.doc.md +31 -0
- package/docs/generated-docs/maz-radio-buttons.doc.md +33 -0
- package/docs/generated-docs/maz-radio.doc.md +33 -0
- package/docs/generated-docs/maz-reading-progress-bar.doc.md +18 -0
- package/docs/generated-docs/maz-select-country.doc.md +44 -0
- package/docs/generated-docs/maz-select.doc.md +65 -0
- package/docs/generated-docs/maz-slider.doc.md +20 -0
- package/docs/generated-docs/maz-spinner.doc.md +6 -0
- package/docs/generated-docs/maz-stepper.doc.md +29 -0
- package/docs/generated-docs/maz-switch.doc.md +31 -0
- package/docs/generated-docs/maz-table-cell.doc.md +5 -0
- package/docs/generated-docs/maz-table-row.doc.md +11 -0
- package/docs/generated-docs/maz-table-title.doc.md +5 -0
- package/docs/generated-docs/maz-table.doc.md +66 -0
- package/docs/generated-docs/maz-tabs-bar.doc.md +18 -0
- package/docs/generated-docs/maz-tabs-content-item.doc.md +11 -0
- package/docs/generated-docs/maz-tabs-content.doc.md +5 -0
- package/docs/generated-docs/maz-tabs.doc.md +17 -0
- package/docs/generated-docs/maz-textarea.doc.md +41 -0
- package/docs/src/components/index.md +8 -0
- package/docs/src/components/maz-accordion.md +80 -0
- package/docs/src/components/maz-animated-counter.md +124 -0
- package/docs/src/components/maz-animated-element.md +36 -0
- package/docs/src/components/maz-animated-text.md +36 -0
- package/docs/src/components/maz-avatar.md +179 -0
- package/docs/src/components/maz-backdrop.md +16 -0
- package/docs/src/components/maz-badge.md +222 -0
- package/docs/src/components/maz-bottom-sheet.md +398 -0
- package/docs/src/components/maz-btn.md +526 -0
- package/docs/src/components/maz-card-spotlight.md +163 -0
- package/docs/src/components/maz-card.md +447 -0
- package/docs/src/components/maz-carousel.md +127 -0
- package/docs/src/components/maz-chart.md +346 -0
- package/docs/src/components/maz-checkbox.md +168 -0
- package/docs/src/components/maz-checklist.md +414 -0
- package/docs/src/components/maz-circular-progress-bar.md +147 -0
- package/docs/src/components/maz-date-picker.md +1078 -0
- package/docs/src/components/maz-dialog-confirm.md +240 -0
- package/docs/src/components/maz-dialog.md +208 -0
- package/docs/src/components/maz-drawer.md +177 -0
- package/docs/src/components/maz-dropdown.md +650 -0
- package/docs/src/components/maz-dropzone.md +442 -0
- package/docs/src/components/maz-expand-animation.md +99 -0
- package/docs/src/components/maz-fullscreen-loader.md +58 -0
- package/docs/src/components/maz-gallery.md +85 -0
- package/docs/src/components/maz-icon.md +85 -0
- package/docs/src/components/maz-input-code.md +61 -0
- package/docs/src/components/maz-input-number.md +81 -0
- package/docs/src/components/maz-input-phone-number.md +867 -0
- package/docs/src/components/maz-input-price.md +58 -0
- package/docs/src/components/maz-input-tags.md +114 -0
- package/docs/src/components/maz-input.md +453 -0
- package/docs/src/components/maz-lazy-img.md +24 -0
- package/docs/src/components/maz-link.md +156 -0
- package/docs/src/components/maz-loading-bar.md +26 -0
- package/docs/src/components/maz-pagination.md +81 -0
- package/docs/src/components/maz-popover.md +1414 -0
- package/docs/src/components/maz-pull-to-refresh.md +49 -0
- package/docs/src/components/maz-radio-buttons.md +456 -0
- package/docs/src/components/maz-radio.md +141 -0
- package/docs/src/components/maz-reading-progress-bar.md +74 -0
- package/docs/src/components/maz-select-country.md +636 -0
- package/docs/src/components/maz-select.md +439 -0
- package/docs/src/components/maz-slider.md +191 -0
- package/docs/src/components/maz-spinner.md +93 -0
- package/docs/src/components/maz-stepper.md +418 -0
- package/docs/src/components/maz-switch.md +92 -0
- package/docs/src/components/maz-table.md +571 -0
- package/docs/src/components/maz-tabs.md +231 -0
- package/docs/src/components/maz-textarea.md +218 -0
- package/docs/src/composables/use-aos.md +34 -0
- package/docs/src/composables/use-breakpoints.md +35 -0
- package/docs/src/composables/use-dialog.md +88 -0
- package/docs/src/composables/use-display-names.md +174 -0
- package/docs/src/composables/use-form-validator.md +1149 -0
- package/docs/src/composables/use-idle-timeout.md +256 -0
- package/docs/src/composables/use-reading-time.md +168 -0
- package/docs/src/composables/use-string-matching.md +63 -0
- package/docs/src/composables/use-swipe.md +223 -0
- package/docs/src/composables/use-timer.md +130 -0
- package/docs/src/composables/use-toast.md +71 -0
- package/docs/src/composables/use-user-visibility.md +169 -0
- package/docs/src/composables/use-wait.md +62 -0
- package/docs/src/composables/use-window-size.md +18 -0
- package/docs/src/demo/DemoAuthPage.vue +178 -0
- package/docs/src/demo/DemoDashboardPage.vue +298 -0
- package/docs/src/demo/DemoProductPage.vue +135 -0
- package/docs/src/directives/click-outside.md +275 -0
- package/docs/src/directives/fullscreen-img.md +101 -0
- package/docs/src/directives/lazy-img.md +184 -0
- package/docs/src/directives/tooltip.md +458 -0
- package/docs/src/directives/zoom-img.md +127 -0
- package/docs/src/guide/cli.md +144 -0
- package/docs/src/guide/getting-started.md +284 -0
- package/docs/src/guide/icon-set.md +60 -0
- package/docs/src/guide/icons.md +481 -0
- package/docs/src/guide/mcp.md +210 -0
- package/docs/src/guide/migration-v4.md +898 -0
- package/docs/src/guide/nuxt.md +411 -0
- package/docs/src/guide/resolvers.md +697 -0
- package/docs/src/guide/themes.md +789 -0
- package/docs/src/guide/translations.md +1173 -0
- package/docs/src/guide/vue.md +243 -0
- package/docs/src/helpers/camel-case.md +14 -0
- package/docs/src/helpers/capitalize.md +51 -0
- package/docs/src/helpers/check-availability.md +14 -0
- package/docs/src/helpers/country-code-to-unicode-flag.md +213 -0
- package/docs/src/helpers/currency.md +67 -0
- package/docs/src/helpers/date.md +67 -0
- package/docs/src/helpers/debounce-callback.md +14 -0
- package/docs/src/helpers/debounce-id.md +14 -0
- package/docs/src/helpers/debounce.md +14 -0
- package/docs/src/helpers/get-country-flag-url.md +156 -0
- package/docs/src/helpers/is-client.md +14 -0
- package/docs/src/helpers/is-equal.md +14 -0
- package/docs/src/helpers/is-standalone-mode.md +14 -0
- package/docs/src/helpers/kebab-case.md +14 -0
- package/docs/src/helpers/normalize-string.md +14 -0
- package/docs/src/helpers/number.md +65 -0
- package/docs/src/helpers/pascal-case.md +14 -0
- package/docs/src/helpers/script-loader.md +14 -0
- package/docs/src/helpers/sleep.md +14 -0
- package/docs/src/helpers/snake-case.md +14 -0
- package/docs/src/helpers/throttle-id.md +14 -0
- package/docs/src/helpers/throttle.md +14 -0
- package/docs/src/index.md +555 -0
- package/docs/src/made-with-maz-ui.md +58 -0
- package/docs/src/plugins/aos.md +347 -0
- package/docs/src/plugins/dialog.md +411 -0
- package/docs/src/plugins/toast.md +349 -0
- package/docs/src/plugins/wait.md +109 -0
- package/package.json +84 -0
|
@@ -0,0 +1,414 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MazChecklist
|
|
3
|
+
description: MazChecklist is a standalone component that allows creating a checklist with integrated search functionality. It provides a flexible and customizable user interface for selecting multiple items from a list of options. The component supports real-time search, color customization, and displays messages when no results are found.
|
|
4
|
+
lastUpdated: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# {{ $frontmatter.title }}
|
|
8
|
+
|
|
9
|
+
{{ $frontmatter.description }}
|
|
10
|
+
|
|
11
|
+
<!--@include: ./../.vitepress/mixins/getting-started.md-->
|
|
12
|
+
|
|
13
|
+
<!--@include: ./../.vitepress/mixins/translated-component.md-->
|
|
14
|
+
|
|
15
|
+
## Basic usage
|
|
16
|
+
|
|
17
|
+
<ComponentDemo expanded>
|
|
18
|
+
|
|
19
|
+
Selected languages: {{ languages || 'none' }}
|
|
20
|
+
|
|
21
|
+
query value: {{ query || 'none' }}
|
|
22
|
+
|
|
23
|
+
<br />
|
|
24
|
+
|
|
25
|
+
<MazChecklist
|
|
26
|
+
v-model="languages"
|
|
27
|
+
v-model:query="query"
|
|
28
|
+
title="Select your languages"
|
|
29
|
+
:search="{
|
|
30
|
+
enabled: true,
|
|
31
|
+
placeholder: 'Search a language',
|
|
32
|
+
debounce: 300,
|
|
33
|
+
autoFocus: false,
|
|
34
|
+
size: 'sm'
|
|
35
|
+
}"
|
|
36
|
+
:items="languagesOptions"
|
|
37
|
+
class="maz-max-h-80"
|
|
38
|
+
>
|
|
39
|
+
<template #item="{ item }">
|
|
40
|
+
<div class="maz-flex maz-w-full maz-items-center maz-justify-between maz-gap-2">
|
|
41
|
+
<span class="maz-capitalize">{{ item.label }}</span>
|
|
42
|
+
<MazBadge color="theme" outlined>
|
|
43
|
+
{{ item.value }}
|
|
44
|
+
</MazBadge>
|
|
45
|
+
</div>
|
|
46
|
+
</template>
|
|
47
|
+
</MazChecklist>
|
|
48
|
+
|
|
49
|
+
<template #code>
|
|
50
|
+
|
|
51
|
+
```vue
|
|
52
|
+
<template>
|
|
53
|
+
Selected languages: {{ languages || 'none' }}
|
|
54
|
+
|
|
55
|
+
<br />
|
|
56
|
+
|
|
57
|
+
<MazChecklist
|
|
58
|
+
v-model="languages"
|
|
59
|
+
v-model:query="query"
|
|
60
|
+
title="Select your languages"
|
|
61
|
+
:search="{
|
|
62
|
+
enabled: true,
|
|
63
|
+
placeholder: 'Search a language',
|
|
64
|
+
debounce: 300,
|
|
65
|
+
autoFocus: false,
|
|
66
|
+
size: 'sm'
|
|
67
|
+
}"
|
|
68
|
+
:items="languagesOptions"
|
|
69
|
+
class="maz-h-80"
|
|
70
|
+
>
|
|
71
|
+
<template #item="{ item }">
|
|
72
|
+
<div class="maz-flex maz-w-full maz-items-center maz-justify-between maz-gap-2">
|
|
73
|
+
<span class="maz-capitalize">{{ item.label }}</span>
|
|
74
|
+
<MazBadge color="theme" outlined>
|
|
75
|
+
{{ item.value }}
|
|
76
|
+
</MazBadge>
|
|
77
|
+
</div>
|
|
78
|
+
</template>
|
|
79
|
+
</MazChecklist>
|
|
80
|
+
</template>
|
|
81
|
+
|
|
82
|
+
<script lang="ts" setup>
|
|
83
|
+
import { ref } from 'vue'
|
|
84
|
+
import MazChecklist from 'maz-ui/components/MazChecklist'
|
|
85
|
+
import { useDisplayNames } from 'maz-ui/composables/useDisplayNames'
|
|
86
|
+
|
|
87
|
+
const query = ref<string>()
|
|
88
|
+
const languages = ref<string[]>()
|
|
89
|
+
const languagesOptions = useDisplayNames('en-US').getAllDisplayNames({ type: 'language' }).value.map(({ code, name }) => ({
|
|
90
|
+
label: name,
|
|
91
|
+
value: code,
|
|
92
|
+
}))
|
|
93
|
+
</script>
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
</template>
|
|
97
|
+
</ComponentDemo>
|
|
98
|
+
|
|
99
|
+
## Custom search function
|
|
100
|
+
|
|
101
|
+
You can replace the default search function by providing a custom search function. Useful when you need to search by multiple fields, if you want to use a different search algorithm or if you want search into your database by fetching data from an API.
|
|
102
|
+
|
|
103
|
+
<ComponentDemo>
|
|
104
|
+
|
|
105
|
+
Selected employees: {{ selectedEmployees || 'none' }}
|
|
106
|
+
|
|
107
|
+
<br />
|
|
108
|
+
|
|
109
|
+
<MazChecklist
|
|
110
|
+
v-model="selectedEmployees"
|
|
111
|
+
v-model:query="employeeQuery"
|
|
112
|
+
title="Select team members"
|
|
113
|
+
:search="{
|
|
114
|
+
placeholder: 'Search by name, email, or department...',
|
|
115
|
+
debounce: 200,
|
|
116
|
+
}"
|
|
117
|
+
:items="employees"
|
|
118
|
+
:search-function="customEmployeeSearch"
|
|
119
|
+
color="success"
|
|
120
|
+
elevation
|
|
121
|
+
class="maz-max-h-96"
|
|
122
|
+
>
|
|
123
|
+
<template #item="{ item }">
|
|
124
|
+
<div class="maz-flex maz-w-full maz-items-center maz-gap-4">
|
|
125
|
+
<div class="maz-flex maz-h-10 maz-w-10 maz-flex-none maz-items-center maz-justify-center maz-rounded-full maz-bg-gradient-to-br maz-from-primary-500 maz-to-secondary-500 maz-text-white maz-font-semibold maz-text-lg">
|
|
126
|
+
{{ item.initials }}
|
|
127
|
+
</div>
|
|
128
|
+
<div class="maz-flex maz-flex-1 maz-flex-col maz-gap-1">
|
|
129
|
+
<div class="maz-flex maz-items-center maz-gap-2">
|
|
130
|
+
<span class="maz-font-semibold maz-text-normal">{{ item.label }}</span>
|
|
131
|
+
<MazBadge :color="item.departmentColor" size="0.7em">
|
|
132
|
+
{{ item.department }}
|
|
133
|
+
</MazBadge>
|
|
134
|
+
</div>
|
|
135
|
+
<span class="maz-text-muted maz-text-sm">{{ item.email }}</span>
|
|
136
|
+
</div>
|
|
137
|
+
<div class="maz-flex maz-flex-none maz-items-center maz-gap-1">
|
|
138
|
+
<MazIcon name="star" class="maz-text-warning-500" size="1rem" />
|
|
139
|
+
<span class="maz-text-sm maz-font-medium">{{ item.rating }}</span>
|
|
140
|
+
</div>
|
|
141
|
+
</div>
|
|
142
|
+
</template>
|
|
143
|
+
</MazChecklist>
|
|
144
|
+
|
|
145
|
+
<template #code>
|
|
146
|
+
|
|
147
|
+
```vue
|
|
148
|
+
<template>
|
|
149
|
+
Selected employees: {{ selectedEmployees || 'none' }}
|
|
150
|
+
|
|
151
|
+
<br />
|
|
152
|
+
|
|
153
|
+
<MazChecklist
|
|
154
|
+
v-model="selectedEmployees"
|
|
155
|
+
v-model:query="employeeQuery"
|
|
156
|
+
title="Select team members"
|
|
157
|
+
:search="{
|
|
158
|
+
placeholder: 'Search by name, email, or department...',
|
|
159
|
+
debounce: 200,
|
|
160
|
+
block: true,
|
|
161
|
+
}"
|
|
162
|
+
:items="employees"
|
|
163
|
+
:search-function="customEmployeeSearch"
|
|
164
|
+
color="success"
|
|
165
|
+
elevation
|
|
166
|
+
class="max-h-96"
|
|
167
|
+
>
|
|
168
|
+
<template #item="{ item }">
|
|
169
|
+
<div class="flex w-full items-center gap-4">
|
|
170
|
+
<div class="flex h-12 w-12 flex-none items-center justify-center rounded-full bg-gradient-to-br from-primary-500 to-secondary-500 text-white font-semibold text-lg">
|
|
171
|
+
{{ item.initials }}
|
|
172
|
+
</div>
|
|
173
|
+
<div class="flex flex-1 flex-col gap-1">
|
|
174
|
+
<div class="flex items-center gap-2">
|
|
175
|
+
<span class="font-semibold text-normal">{{ item.label }}</span>
|
|
176
|
+
<MazBadge :color="item.departmentColor" size="xs">
|
|
177
|
+
{{ item.department }}
|
|
178
|
+
</MazBadge>
|
|
179
|
+
</div>
|
|
180
|
+
<span class="text-muted text-sm">{{ item.email }}</span>
|
|
181
|
+
</div>
|
|
182
|
+
<div class="flex flex-none items-center gap-1">
|
|
183
|
+
<MazIcon name="star" class="text-warning-500" size="1rem" />
|
|
184
|
+
<span class="text-sm font-medium">{{ item.rating }}</span>
|
|
185
|
+
</div>
|
|
186
|
+
</div>
|
|
187
|
+
</template>
|
|
188
|
+
</MazChecklist>
|
|
189
|
+
</template>
|
|
190
|
+
|
|
191
|
+
<script lang="ts" setup>
|
|
192
|
+
import { ref } from 'vue'
|
|
193
|
+
import { MazChecklist } from 'maz-ui/components'
|
|
194
|
+
|
|
195
|
+
const employeeQuery = ref<string>()
|
|
196
|
+
const selectedEmployees = ref<string[]>()
|
|
197
|
+
|
|
198
|
+
const employees = [
|
|
199
|
+
{
|
|
200
|
+
label: 'Sarah Johnson',
|
|
201
|
+
value: 'sarah.johnson',
|
|
202
|
+
email: 'sarah.johnson@company.com',
|
|
203
|
+
department: 'Engineering',
|
|
204
|
+
departmentColor: 'info',
|
|
205
|
+
initials: 'SJ',
|
|
206
|
+
rating: 4.9
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
label: 'Michael Chen',
|
|
210
|
+
value: 'michael.chen',
|
|
211
|
+
email: 'michael.chen@company.com',
|
|
212
|
+
department: 'Design',
|
|
213
|
+
departmentColor: 'warning',
|
|
214
|
+
initials: 'MC',
|
|
215
|
+
rating: 4.7
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
label: 'Emma Rodriguez',
|
|
219
|
+
value: 'emma.rodriguez',
|
|
220
|
+
email: 'emma.rodriguez@company.com',
|
|
221
|
+
department: 'Marketing',
|
|
222
|
+
departmentColor: 'success',
|
|
223
|
+
initials: 'ER',
|
|
224
|
+
rating: 4.8
|
|
225
|
+
},
|
|
226
|
+
{
|
|
227
|
+
label: 'David Kim',
|
|
228
|
+
value: 'david.kim',
|
|
229
|
+
email: 'david.kim@company.com',
|
|
230
|
+
department: 'Engineering',
|
|
231
|
+
departmentColor: 'info',
|
|
232
|
+
initials: 'DK',
|
|
233
|
+
rating: 4.6
|
|
234
|
+
},
|
|
235
|
+
{
|
|
236
|
+
label: 'Lisa Thompson',
|
|
237
|
+
value: 'lisa.thompson',
|
|
238
|
+
email: 'lisa.thompson@company.com',
|
|
239
|
+
department: 'Product',
|
|
240
|
+
departmentColor: 'contrast',
|
|
241
|
+
initials: 'LT',
|
|
242
|
+
rating: 4.9
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
label: 'John Doe',
|
|
246
|
+
value: 'john.doe',
|
|
247
|
+
email: 'john.doe@company.com',
|
|
248
|
+
department: 'Marketing',
|
|
249
|
+
departmentColor: 'success',
|
|
250
|
+
initials: 'JD',
|
|
251
|
+
rating: 4.9
|
|
252
|
+
},
|
|
253
|
+
{
|
|
254
|
+
label: 'Jane Smith',
|
|
255
|
+
value: 'jane.smith',
|
|
256
|
+
email: 'jane.smith@company.com',
|
|
257
|
+
department: 'Engineering',
|
|
258
|
+
departmentColor: 'info',
|
|
259
|
+
initials: 'JS',
|
|
260
|
+
rating: 4.9
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
label: 'Jim Beam',
|
|
264
|
+
value: 'jim.beam',
|
|
265
|
+
email: 'jim.beam@company.com',
|
|
266
|
+
department: 'Sales',
|
|
267
|
+
departmentColor: 'destructive',
|
|
268
|
+
initials: 'JB',
|
|
269
|
+
rating: 4.9
|
|
270
|
+
},
|
|
271
|
+
{
|
|
272
|
+
label: 'Jill Johnson',
|
|
273
|
+
value: 'jill.johnson',
|
|
274
|
+
email: 'jill.johnson@company.com',
|
|
275
|
+
department: 'Marketing',
|
|
276
|
+
departmentColor: 'success',
|
|
277
|
+
initials: 'JJ',
|
|
278
|
+
rating: 4.9
|
|
279
|
+
},
|
|
280
|
+
]
|
|
281
|
+
|
|
282
|
+
function customEmployeeSearch(query: string, items: typeof employees) {
|
|
283
|
+
const searchTerm = query.toLowerCase().trim()
|
|
284
|
+
|
|
285
|
+
if (!searchTerm) return items
|
|
286
|
+
|
|
287
|
+
return items.filter(employee =>
|
|
288
|
+
employee.label.toLowerCase().includes(searchTerm) ||
|
|
289
|
+
employee.email.toLowerCase().includes(searchTerm) ||
|
|
290
|
+
employee.department.toLowerCase().includes(searchTerm) ||
|
|
291
|
+
employee.value.toLowerCase().includes(searchTerm)
|
|
292
|
+
)
|
|
293
|
+
}
|
|
294
|
+
</script>
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
</template>
|
|
298
|
+
</ComponentDemo>
|
|
299
|
+
|
|
300
|
+
<!--@include: ./../../.vitepress/generated-docs/maz-checklist.doc.md-->
|
|
301
|
+
|
|
302
|
+
<script lang="ts" setup>
|
|
303
|
+
import { ref } from 'vue'
|
|
304
|
+
import { useDisplayNames } from 'maz-ui/src/composables/useDisplayNames'
|
|
305
|
+
|
|
306
|
+
// First demo variables
|
|
307
|
+
const query = ref()
|
|
308
|
+
const languages = ref<string[]>()
|
|
309
|
+
const languagesOptions = useDisplayNames('en-US').getAllDisplayNames({ type: 'language' }).value.map(({ code, name }) => ({
|
|
310
|
+
label: name,
|
|
311
|
+
value: code,
|
|
312
|
+
}))
|
|
313
|
+
|
|
314
|
+
// Second demo variables
|
|
315
|
+
const employeeQuery = ref<string>()
|
|
316
|
+
const selectedEmployees = ref<string[]>()
|
|
317
|
+
|
|
318
|
+
const employees = [
|
|
319
|
+
{
|
|
320
|
+
label: 'Sarah Johnson',
|
|
321
|
+
value: 'sarah.johnson',
|
|
322
|
+
email: 'sarah.johnson@company.com',
|
|
323
|
+
department: 'Engineering',
|
|
324
|
+
departmentColor: 'info',
|
|
325
|
+
initials: 'SJ',
|
|
326
|
+
rating: 4.9
|
|
327
|
+
},
|
|
328
|
+
{
|
|
329
|
+
label: 'Michael Chen',
|
|
330
|
+
value: 'michael.chen',
|
|
331
|
+
email: 'michael.chen@company.com',
|
|
332
|
+
department: 'Design',
|
|
333
|
+
departmentColor: 'warning',
|
|
334
|
+
initials: 'MC',
|
|
335
|
+
rating: 4.7
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
label: 'Emma Rodriguez',
|
|
339
|
+
value: 'emma.rodriguez',
|
|
340
|
+
email: 'emma.rodriguez@company.com',
|
|
341
|
+
department: 'Marketing',
|
|
342
|
+
departmentColor: 'success',
|
|
343
|
+
initials: 'ER',
|
|
344
|
+
rating: 4.8
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
label: 'David Kim',
|
|
348
|
+
value: 'david.kim',
|
|
349
|
+
email: 'david.kim@company.com',
|
|
350
|
+
department: 'Engineering',
|
|
351
|
+
departmentColor: 'info',
|
|
352
|
+
initials: 'DK',
|
|
353
|
+
rating: 4.6
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
label: 'Lisa Thompson',
|
|
357
|
+
value: 'lisa.thompson',
|
|
358
|
+
email: 'lisa.thompson@company.com',
|
|
359
|
+
department: 'Product',
|
|
360
|
+
departmentColor: 'contrast',
|
|
361
|
+
initials: 'LT',
|
|
362
|
+
rating: 4.9
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
label: 'John Doe',
|
|
366
|
+
value: 'john.doe',
|
|
367
|
+
email: 'john.doe@company.com',
|
|
368
|
+
department: 'Marketing',
|
|
369
|
+
departmentColor: 'success',
|
|
370
|
+
initials: 'JD',
|
|
371
|
+
rating: 4.9
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
label: 'Jane Smith',
|
|
375
|
+
value: 'jane.smith',
|
|
376
|
+
email: 'jane.smith@company.com',
|
|
377
|
+
department: 'Engineering',
|
|
378
|
+
departmentColor: 'info',
|
|
379
|
+
initials: 'JS',
|
|
380
|
+
rating: 4.9
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
label: 'Jim Beam',
|
|
384
|
+
value: 'jim.beam',
|
|
385
|
+
email: 'jim.beam@company.com',
|
|
386
|
+
department: 'Sales',
|
|
387
|
+
departmentColor: 'destructive',
|
|
388
|
+
initials: 'JB',
|
|
389
|
+
rating: 4.9
|
|
390
|
+
},
|
|
391
|
+
{
|
|
392
|
+
label: 'Jill Johnson',
|
|
393
|
+
value: 'jill.johnson',
|
|
394
|
+
email: 'jill.johnson@company.com',
|
|
395
|
+
department: 'Marketing',
|
|
396
|
+
departmentColor: 'success',
|
|
397
|
+
initials: 'JJ',
|
|
398
|
+
rating: 4.9
|
|
399
|
+
},
|
|
400
|
+
]
|
|
401
|
+
|
|
402
|
+
function customEmployeeSearch(query: string, items: typeof employees) {
|
|
403
|
+
const searchTerm = query.toLowerCase().trim()
|
|
404
|
+
|
|
405
|
+
if (!searchTerm) return items
|
|
406
|
+
|
|
407
|
+
return items.filter(employee =>
|
|
408
|
+
employee.label.toLowerCase().includes(searchTerm) ||
|
|
409
|
+
employee.email.toLowerCase().includes(searchTerm) ||
|
|
410
|
+
employee.department.toLowerCase().includes(searchTerm) ||
|
|
411
|
+
employee.value.toLowerCase().includes(searchTerm)
|
|
412
|
+
)
|
|
413
|
+
}
|
|
414
|
+
</script>
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: MazCircularProgressBar
|
|
3
|
+
description: MazCircularProgressBar is a standalone component
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# {{ $frontmatter.title }}
|
|
7
|
+
|
|
8
|
+
{{ $frontmatter.description }}
|
|
9
|
+
|
|
10
|
+
<!--@include: ./../.vitepress/mixins/getting-started.md-->
|
|
11
|
+
|
|
12
|
+
## Basic usage
|
|
13
|
+
|
|
14
|
+
<ComponentDemo>
|
|
15
|
+
<MazCircularProgressBar :percentage="75" suffix="%" />
|
|
16
|
+
|
|
17
|
+
<template #code>
|
|
18
|
+
|
|
19
|
+
```vue
|
|
20
|
+
<script lang="ts" setup>
|
|
21
|
+
import { MazCircularProgressBar } from 'maz-ui/components'
|
|
22
|
+
</script>
|
|
23
|
+
|
|
24
|
+
<template>
|
|
25
|
+
<MazCircularProgressBar :percentage="75" suffix="%" />
|
|
26
|
+
</template>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
</template>
|
|
30
|
+
</ComponentDemo>
|
|
31
|
+
|
|
32
|
+
## Size
|
|
33
|
+
|
|
34
|
+
The size of the component can be changed by passing the `size` prop. The value could be a string in px, em or rem.
|
|
35
|
+
|
|
36
|
+
<ComponentDemo>
|
|
37
|
+
<div class="maz-flex maz-gap-3 maz-flex-wrap maz-items-center">
|
|
38
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="3em" />
|
|
39
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="100px" />
|
|
40
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="10rem" />
|
|
41
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="15rem" />
|
|
42
|
+
</div>
|
|
43
|
+
|
|
44
|
+
<template #code>
|
|
45
|
+
|
|
46
|
+
```vue
|
|
47
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="3em" />
|
|
48
|
+
|
|
49
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="100px" />
|
|
50
|
+
|
|
51
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="10rem" />
|
|
52
|
+
|
|
53
|
+
<MazCircularProgressBar :percentage="75" suffix="%" size="15rem" />
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
</template>
|
|
57
|
+
</ComponentDemo>
|
|
58
|
+
|
|
59
|
+
## Duration
|
|
60
|
+
|
|
61
|
+
The duration of the animation can be changed by passing the `duration` prop. The value could be a number in milliseconds.
|
|
62
|
+
|
|
63
|
+
<ComponentDemo>
|
|
64
|
+
<MazCircularProgressBar :percentage="75" :duration="5000" />
|
|
65
|
+
|
|
66
|
+
<template #code>
|
|
67
|
+
|
|
68
|
+
```vue
|
|
69
|
+
<MazCircularProgressBar :percentage="75" :duration="5000" />
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
</template>
|
|
73
|
+
</ComponentDemo>
|
|
74
|
+
|
|
75
|
+
## Color
|
|
76
|
+
|
|
77
|
+
The color of the component can be changed by passing the `color` prop. Should be a valid color in [basic colors](./../guide/colors.md).
|
|
78
|
+
|
|
79
|
+
<ComponentDemo>
|
|
80
|
+
<div class="maz-flex maz-gap-3 maz-flex-wrap maz-items-center">
|
|
81
|
+
<MazCircularProgressBar :percentage="75" color="primary" />
|
|
82
|
+
<MazCircularProgressBar :percentage="75" color="secondary" />
|
|
83
|
+
<MazCircularProgressBar :percentage="75" color="info" />
|
|
84
|
+
<MazCircularProgressBar :percentage="75" color="success" />
|
|
85
|
+
<MazCircularProgressBar :percentage="75" color="warning" />
|
|
86
|
+
<MazCircularProgressBar :percentage="75" color="destructive" />
|
|
87
|
+
</div>
|
|
88
|
+
|
|
89
|
+
<template #code>
|
|
90
|
+
|
|
91
|
+
```vue
|
|
92
|
+
<MazCircularProgressBar :percentage="75" :duration="5000" />
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
</template>
|
|
96
|
+
</ComponentDemo>
|
|
97
|
+
|
|
98
|
+
## Auto-color
|
|
99
|
+
|
|
100
|
+
The color of the component is automatically according to the percentage. The color will be green if the percentage is egal to 100%, orange if below 100%, and red if below 50%.
|
|
101
|
+
|
|
102
|
+
<ComponentDemo>
|
|
103
|
+
<div class="maz-flex maz-gap-3 maz-flex-wrap maz-items-center">
|
|
104
|
+
<MazCircularProgressBar :percentage="0" auto-color size="9rem" />
|
|
105
|
+
<MazCircularProgressBar :percentage="25" auto-color size="9rem" />
|
|
106
|
+
<MazCircularProgressBar :percentage="50" auto-color size="9rem" />
|
|
107
|
+
<MazCircularProgressBar :percentage="100" auto-color size="9rem" />
|
|
108
|
+
</div>
|
|
109
|
+
|
|
110
|
+
<template #code>
|
|
111
|
+
|
|
112
|
+
```vue
|
|
113
|
+
<MazCircularProgressBar :percentage="0" auto-color size="9rem" />
|
|
114
|
+
|
|
115
|
+
<MazCircularProgressBar :percentage="25" auto-color size="9rem" />
|
|
116
|
+
|
|
117
|
+
<MazCircularProgressBar :percentage="50" auto-color size="9rem" />
|
|
118
|
+
|
|
119
|
+
<MazCircularProgressBar :percentage="100" auto-color size="9rem" />
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
</template>
|
|
123
|
+
</ComponentDemo>
|
|
124
|
+
|
|
125
|
+
## Slot
|
|
126
|
+
|
|
127
|
+
Replace the percentage value by a custom slot.
|
|
128
|
+
|
|
129
|
+
Obviously, the "counter animation" will not work in this case.
|
|
130
|
+
|
|
131
|
+
<ComponentDemo>
|
|
132
|
+
<div class="maz-flex maz-gap-3 maz-flex-wrap maz-items-center">
|
|
133
|
+
<MazCircularProgressBar :percentage="50">
|
|
134
|
+
2/4
|
|
135
|
+
</MazCircularProgressBar>
|
|
136
|
+
</div>
|
|
137
|
+
|
|
138
|
+
<template #code>
|
|
139
|
+
|
|
140
|
+
```vue
|
|
141
|
+
<MazCircularProgressBar :percentage="75" :duration="5000" />
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
</template>
|
|
145
|
+
</ComponentDemo>
|
|
146
|
+
|
|
147
|
+
<!--@include: ./../../.vitepress/generated-docs/maz-circular-progress-bar.doc.md-->
|