@maz-ui/mcp 5.0.0 → 5.1.0-beta.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 +61 -228
- package/bin/maz-ui-mcp.mjs +2 -5
- package/dist/cli.d.mts +7 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.mjs +14 -0
- package/dist/index.d.mts +340 -0
- package/dist/index.d.ts +340 -0
- package/dist/index.mjs +14 -0
- package/dist/shared/mcp.DzqVbCaL.mjs +2346 -0
- package/docs/README.md +207 -0
- package/docs/agents/agents-md.md +52 -0
- package/docs/agents/claude-rule.md +52 -0
- package/docs/components/maz-accordion.md +76 -0
- package/docs/{src/components → components}/maz-alert.md +31 -164
- package/docs/components/maz-animated-counter.md +87 -0
- package/docs/components/maz-animated-element.md +46 -0
- package/docs/components/maz-animated-text.md +53 -0
- package/docs/components/maz-avatar.md +193 -0
- package/docs/components/maz-backdrop.md +178 -0
- package/docs/{src/components → components}/maz-badge.md +26 -67
- package/docs/components/maz-bottom-sheet.md +257 -0
- package/docs/{src/components → components}/maz-btn-group.md +26 -189
- package/docs/{src/components → components}/maz-btn.md +60 -245
- package/docs/components/maz-card-spotlight.md +84 -0
- package/docs/{src/components → components}/maz-card.md +67 -192
- package/docs/components/maz-carousel.md +153 -0
- package/docs/{src/components → components}/maz-chart.md +17 -161
- package/docs/components/maz-checkbox.md +138 -0
- package/docs/components/maz-checklist.md +251 -0
- package/docs/components/maz-circular-progress-bar.md +109 -0
- package/docs/{src/components → components}/maz-code-highlight.md +15 -93
- package/docs/components/maz-container.md +241 -0
- package/docs/{src/components → components}/maz-date-picker.md +85 -454
- package/docs/components/maz-dialog-confirm.md +215 -0
- package/docs/components/maz-dialog.md +143 -0
- package/docs/components/maz-drawer.md +106 -0
- package/docs/components/maz-dropdown.md +419 -0
- package/docs/{src/components → components}/maz-dropzone.md +80 -221
- package/docs/components/maz-expand-animation.md +82 -0
- package/docs/components/maz-fullscreen-loader.md +58 -0
- package/docs/components/maz-gallery.md +79 -0
- package/docs/{src/components → components}/maz-icon.md +32 -83
- package/docs/components/maz-input-code.md +73 -0
- package/docs/components/maz-input-number.md +79 -0
- package/docs/components/maz-input-phone-number.md +536 -0
- package/docs/components/maz-input-price.md +68 -0
- package/docs/components/maz-input-tags.md +112 -0
- package/docs/{src/components → components}/maz-input.md +74 -221
- package/docs/components/maz-lazy-img.md +113 -0
- package/docs/components/maz-link.md +146 -0
- package/docs/components/maz-loading-bar.md +38 -0
- package/docs/{src/components → components}/maz-markdown-editor.md +72 -125
- package/docs/components/maz-pagination.md +82 -0
- package/docs/components/maz-popover.md +794 -0
- package/docs/{src/components → components}/maz-pull-to-refresh.md +59 -45
- package/docs/components/maz-radio-buttons.md +313 -0
- package/docs/components/maz-radio.md +119 -0
- package/docs/{src/components → components}/maz-read-more.md +31 -122
- package/docs/components/maz-reading-progress-bar.md +96 -0
- package/docs/{src/components → components}/maz-select-country.md +80 -340
- package/docs/{src/components → components}/maz-select.md +76 -206
- package/docs/components/maz-sidebar-content.md +25 -0
- package/docs/components/maz-sidebar-footer.md +25 -0
- package/docs/components/maz-sidebar-group.md +27 -0
- package/docs/components/maz-sidebar-header.md +25 -0
- package/docs/components/maz-sidebar-menu-button.md +41 -0
- package/docs/components/maz-sidebar-menu-item.md +25 -0
- package/docs/components/maz-sidebar-menu-sub.md +32 -0
- package/docs/components/maz-sidebar-menu.md +25 -0
- package/docs/components/maz-sidebar-separator.md +21 -0
- package/docs/components/maz-sidebar-trigger.md +25 -0
- package/docs/{src/components → components}/maz-sidebar.md +117 -329
- package/docs/{src/components → components}/maz-skeleton.md +27 -156
- package/docs/{src/components → components}/maz-slider.md +33 -66
- package/docs/components/maz-spinner.md +84 -0
- package/docs/{src/components → components}/maz-stepper.md +43 -185
- package/docs/components/maz-switch.md +86 -0
- package/docs/components/maz-table-cell.md +27 -0
- package/docs/components/maz-table-row.md +28 -0
- package/docs/components/maz-table-title.md +27 -0
- package/docs/components/maz-table-virtualizer.md +31 -0
- package/docs/components/maz-table.md +426 -0
- package/docs/components/maz-tabs-bar.md +43 -0
- package/docs/components/maz-tabs-content-item.md +27 -0
- package/docs/components/maz-tabs-content.md +27 -0
- package/docs/{src/components → components}/maz-tabs.md +89 -126
- package/docs/components/maz-textarea.md +255 -0
- package/docs/components/maz-ticker.md +427 -0
- package/docs/components/maz-timeline.md +304 -0
- package/docs/components/maz-ui-provider.md +26 -0
- package/docs/{src/components → components}/maz-window-mockup.md +38 -105
- package/docs/composables/use-aos.md +41 -0
- package/docs/composables/use-breakpoints.md +42 -0
- package/docs/composables/use-dialog.md +58 -0
- package/docs/{src/composables → composables}/use-display-names.md +12 -59
- package/docs/{src/composables → composables}/use-drag.md +14 -68
- package/docs/{src/composables → composables}/use-form-validator.md +22 -696
- package/docs/{src/composables → composables}/use-idle-timeout.md +13 -97
- package/docs/{src/composables → composables}/use-pull-to-refresh.md +14 -7
- package/docs/{src/composables → composables}/use-reading-time.md +20 -56
- package/docs/composables/use-string-matching.md +41 -0
- package/docs/{src/composables → composables}/use-swipe.md +14 -81
- package/docs/{src/composables → composables}/use-timer.md +12 -38
- package/docs/composables/use-toast.md +50 -0
- package/docs/{src/composables → composables}/use-user-visibility.md +14 -56
- package/docs/composables/use-wait.md +50 -0
- package/docs/composables/use-window-size.md +25 -0
- package/docs/{src/directives → directives}/click-outside.md +13 -99
- package/docs/{src/directives → directives}/fullscreen-img.md +10 -28
- package/docs/{src/directives → directives}/lazy-img.md +14 -49
- package/docs/{src/directives → directives}/tooltip.md +12 -217
- package/docs/{src/directives → directives}/zoom-img.md +11 -38
- package/docs/{src/ecosystem → ecosystem}/eslint-config.md +37 -29
- package/docs/ecosystem/icons/icon-set.md +25 -0
- package/docs/{src/ecosystem → ecosystem}/icons/index.md +22 -16
- package/docs/ecosystem/mcp.md +165 -0
- package/docs/{src/ecosystem → ecosystem}/node/exec-promise.md +12 -6
- package/docs/ecosystem/node/index.md +53 -0
- package/docs/{src/ecosystem → ecosystem}/node/logger.md +12 -6
- package/docs/{src/ecosystem → ecosystem}/node/print-banner.md +12 -4
- package/docs/ecosystem/node/setup-agents.md +102 -0
- package/docs/{src/ecosystem → ecosystem}/nuxt.md +46 -19
- package/docs/{src/ecosystem → ecosystem}/stylelint-config.md +33 -25
- package/docs/{src/ecosystem → ecosystem}/themes.md +72 -235
- package/docs/{src/ecosystem → ecosystem}/translations.md +25 -23
- package/docs/ecosystem/utils/camel-case.md +37 -0
- package/docs/ecosystem/utils/capitalize.md +37 -0
- package/docs/{src/ecosystem → ecosystem}/utils/check-availability.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/cookie.md +18 -12
- package/docs/ecosystem/utils/country-code-to-unicode-flag.md +128 -0
- package/docs/{src/ecosystem → ecosystem}/utils/currency.md +12 -26
- package/docs/{src/ecosystem → ecosystem}/utils/date.md +10 -24
- package/docs/ecosystem/utils/debounce-callback.md +44 -0
- package/docs/{src/ecosystem → ecosystem}/utils/debounce-id.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/debounce.md +14 -8
- package/docs/ecosystem/utils/fetch-locale-ip.md +39 -0
- package/docs/{src/ecosystem → ecosystem}/utils/format-json.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/format-phone-number.md +12 -6
- package/docs/ecosystem/utils/get-browser-locale.md +35 -0
- package/docs/ecosystem/utils/get-country-flag-url.md +67 -0
- package/docs/{src/ecosystem → ecosystem}/utils/get-error-message.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/idle-timeout.md +15 -9
- package/docs/{src/ecosystem → ecosystem}/utils/index.md +10 -13
- package/docs/{src/ecosystem → ecosystem}/utils/is-client.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/is-equal.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/is-ios.md +12 -6
- package/docs/ecosystem/utils/is-server.md +37 -0
- package/docs/ecosystem/utils/is-standalone-mode.md +49 -0
- package/docs/{src/ecosystem → ecosystem}/utils/kebab-case.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/normalize-string.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/number.md +10 -24
- package/docs/{src/ecosystem → ecosystem}/utils/pascal-case.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/prevent-ios-input-zoom.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/script-loader.md +16 -8
- package/docs/{src/ecosystem → ecosystem}/utils/sleep.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/snake-case.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/swipe-handler.md +14 -8
- package/docs/{src/ecosystem → ecosystem}/utils/textarea-autogrow.md +12 -6
- package/docs/{src/ecosystem → ecosystem}/utils/throttle-id.md +13 -7
- package/docs/{src/ecosystem → ecosystem}/utils/throttle.md +14 -8
- package/docs/ecosystem/utils/truthy-filter.md +37 -0
- package/docs/{src/ecosystem → ecosystem}/utils/types/deep-key-of.md +11 -5
- package/docs/{src/ecosystem → ecosystem}/utils/types/deep-partial.md +10 -4
- package/docs/ecosystem/utils/types/deep-required.md +45 -0
- package/docs/ecosystem/utils/types/flatten-object-keys.md +50 -0
- package/docs/{src/ecosystem → ecosystem}/utils/types/generic-instance-type.md +10 -4
- package/docs/{src/ecosystem → ecosystem}/utils/types/infer-maybe-ref.md +10 -4
- package/docs/ecosystem/utils/upper-first.md +38 -0
- package/docs/{src/ecosystem → ecosystem}/utils/user-visibility.md +12 -6
- package/docs/guide/ai-agents.md +237 -0
- package/docs/{src/guide → guide}/browser-support.md +22 -15
- package/docs/{src/guide → guide}/getting-started.md +34 -139
- package/docs/{src/guide → guide}/global-defaults.md +12 -11
- package/docs/{src/guide → guide}/maz-ui-provider.md +17 -16
- package/docs/{src/guide → guide}/migration-v5.md +95 -88
- package/docs/{src/guide → guide}/resolvers.md +33 -100
- package/docs/guide/tailwind.md +483 -0
- package/docs/{src/guide → guide}/vue.md +33 -39
- package/docs/manifest.json +1 -0
- package/docs/{src/plugins → plugins}/aos.md +20 -55
- package/docs/{src/plugins → plugins}/dialog.md +14 -161
- package/docs/plugins/toast.md +221 -0
- package/docs/plugins/wait.md +78 -0
- package/docs/reference/icons.md +46 -0
- package/docs/reference/tailwind-tokens.md +191 -0
- package/docs/rules.md +57 -0
- package/package.json +84 -22
- package/dist/mcp.d.mts +0 -153
- package/dist/mcp.d.ts +0 -153
- package/dist/mcp.mjs +0 -1511
- package/docs/generated-docs/maz-accordion.doc.md +0 -21
- package/docs/generated-docs/maz-alert.doc.md +0 -20
- package/docs/generated-docs/maz-animated-counter.doc.md +0 -17
- package/docs/generated-docs/maz-animated-element.doc.md +0 -14
- package/docs/generated-docs/maz-animated-text.doc.md +0 -17
- package/docs/generated-docs/maz-avatar.doc.md +0 -45
- package/docs/generated-docs/maz-backdrop.doc.md +0 -55
- package/docs/generated-docs/maz-badge.doc.md +0 -16
- package/docs/generated-docs/maz-bottom-sheet.doc.md +0 -24
- package/docs/generated-docs/maz-btn-group.doc.md +0 -20
- package/docs/generated-docs/maz-btn.doc.md +0 -33
- package/docs/generated-docs/maz-card-spotlight.doc.md +0 -16
- package/docs/generated-docs/maz-card.doc.md +0 -39
- package/docs/generated-docs/maz-carousel.doc.md +0 -17
- package/docs/generated-docs/maz-chart.doc.md +0 -10
- package/docs/generated-docs/maz-checkbox.doc.md +0 -33
- package/docs/generated-docs/maz-checklist.doc.md +0 -30
- package/docs/generated-docs/maz-circular-progress-bar.doc.md +0 -27
- package/docs/generated-docs/maz-code-highlight.doc.md +0 -11
- package/docs/generated-docs/maz-container.doc.md +0 -26
- package/docs/generated-docs/maz-date-picker.doc.md +0 -56
- package/docs/generated-docs/maz-dialog-confirm.doc.md +0 -24
- package/docs/generated-docs/maz-dialog.doc.md +0 -22
- package/docs/generated-docs/maz-drawer.doc.md +0 -25
- package/docs/generated-docs/maz-dropdown.doc.md +0 -45
- package/docs/generated-docs/maz-dropzone.doc.md +0 -82
- package/docs/generated-docs/maz-expand-animation.doc.md +0 -12
- package/docs/generated-docs/maz-fullscreen-loader.doc.md +0 -13
- package/docs/generated-docs/maz-gallery.doc.md +0 -17
- package/docs/generated-docs/maz-icon.doc.md +0 -16
- package/docs/generated-docs/maz-input-code.doc.md +0 -25
- package/docs/generated-docs/maz-input-number.doc.md +0 -33
- package/docs/generated-docs/maz-input-phone-number.doc.md +0 -62
- package/docs/generated-docs/maz-input-price.doc.md +0 -26
- package/docs/generated-docs/maz-input-tags.doc.md +0 -24
- package/docs/generated-docs/maz-input.doc.md +0 -54
- package/docs/generated-docs/maz-lazy-img.doc.md +0 -49
- package/docs/generated-docs/maz-link.doc.md +0 -31
- package/docs/generated-docs/maz-loading-bar.doc.md +0 -6
- package/docs/generated-docs/maz-markdown-editor.doc.md +0 -65
- package/docs/generated-docs/maz-pagination.doc.md +0 -21
- package/docs/generated-docs/maz-popover.doc.md +0 -79
- package/docs/generated-docs/maz-pull-to-refresh.doc.md +0 -50
- package/docs/generated-docs/maz-radio-buttons.doc.md +0 -34
- package/docs/generated-docs/maz-radio.doc.md +0 -33
- package/docs/generated-docs/maz-read-more.doc.md +0 -18
- package/docs/generated-docs/maz-reading-progress-bar.doc.md +0 -18
- package/docs/generated-docs/maz-select-country.doc.md +0 -45
- package/docs/generated-docs/maz-select.doc.md +0 -32
- package/docs/generated-docs/maz-sidebar-content.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-footer.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-group.doc.md +0 -11
- package/docs/generated-docs/maz-sidebar-header.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-menu-button.doc.md +0 -27
- package/docs/generated-docs/maz-sidebar-menu-item.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-menu-sub.doc.md +0 -16
- package/docs/generated-docs/maz-sidebar-menu.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar-separator.doc.md +0 -0
- package/docs/generated-docs/maz-sidebar-trigger.doc.md +0 -5
- package/docs/generated-docs/maz-sidebar.doc.md +0 -36
- package/docs/generated-docs/maz-skeleton.doc.md +0 -12
- package/docs/generated-docs/maz-slider.doc.md +0 -20
- package/docs/generated-docs/maz-spinner.doc.md +0 -6
- package/docs/generated-docs/maz-stepper.doc.md +0 -30
- package/docs/generated-docs/maz-switch.doc.md +0 -31
- package/docs/generated-docs/maz-table-cell.doc.md +0 -5
- package/docs/generated-docs/maz-table-row.doc.md +0 -12
- package/docs/generated-docs/maz-table-title.doc.md +0 -5
- package/docs/generated-docs/maz-table-virtualizer.doc.md +0 -20
- package/docs/generated-docs/maz-table.doc.md +0 -72
- package/docs/generated-docs/maz-tabs-bar.doc.md +0 -29
- package/docs/generated-docs/maz-tabs-content-item.doc.md +0 -11
- package/docs/generated-docs/maz-tabs-content.doc.md +0 -5
- package/docs/generated-docs/maz-tabs.doc.md +0 -20
- package/docs/generated-docs/maz-textarea.doc.md +0 -46
- package/docs/generated-docs/maz-ticker.doc.md +0 -25
- package/docs/generated-docs/maz-timeline.doc.md +0 -32
- package/docs/generated-docs/maz-ui-provider.doc.md +0 -12
- package/docs/generated-docs/maz-window-mockup.doc.md +0 -23
- package/docs/src/blog/v4.md +0 -276
- package/docs/src/blog/v5.md +0 -184
- package/docs/src/changelog.md +0 -7
- package/docs/src/components/index.md +0 -8
- package/docs/src/components/maz-accordion.md +0 -80
- package/docs/src/components/maz-animated-counter.md +0 -124
- package/docs/src/components/maz-animated-element.md +0 -36
- package/docs/src/components/maz-animated-text.md +0 -36
- package/docs/src/components/maz-avatar.md +0 -227
- package/docs/src/components/maz-backdrop.md +0 -250
- package/docs/src/components/maz-bottom-sheet.md +0 -533
- package/docs/src/components/maz-card-spotlight.md +0 -163
- package/docs/src/components/maz-carousel.md +0 -231
- package/docs/src/components/maz-checkbox.md +0 -168
- package/docs/src/components/maz-checklist.md +0 -414
- package/docs/src/components/maz-circular-progress-bar.md +0 -145
- package/docs/src/components/maz-container.md +0 -363
- package/docs/src/components/maz-dialog-confirm.md +0 -240
- package/docs/src/components/maz-dialog.md +0 -164
- package/docs/src/components/maz-drawer.md +0 -181
- package/docs/src/components/maz-dropdown.md +0 -691
- package/docs/src/components/maz-expand-animation.md +0 -99
- package/docs/src/components/maz-fullscreen-loader.md +0 -58
- package/docs/src/components/maz-gallery.md +0 -85
- package/docs/src/components/maz-input-code.md +0 -61
- package/docs/src/components/maz-input-number.md +0 -81
- package/docs/src/components/maz-input-phone-number.md +0 -942
- package/docs/src/components/maz-input-price.md +0 -67
- package/docs/src/components/maz-input-tags.md +0 -114
- package/docs/src/components/maz-lazy-img.md +0 -88
- package/docs/src/components/maz-link.md +0 -178
- package/docs/src/components/maz-loading-bar.md +0 -26
- package/docs/src/components/maz-pagination.md +0 -79
- package/docs/src/components/maz-popover.md +0 -1416
- package/docs/src/components/maz-radio-buttons.md +0 -462
- package/docs/src/components/maz-radio.md +0 -142
- package/docs/src/components/maz-reading-progress-bar.md +0 -74
- package/docs/src/components/maz-spinner.md +0 -93
- package/docs/src/components/maz-switch.md +0 -92
- package/docs/src/components/maz-table.md +0 -732
- package/docs/src/components/maz-textarea.md +0 -400
- package/docs/src/components/maz-ticker.md +0 -692
- package/docs/src/components/maz-timeline.md +0 -478
- package/docs/src/composables/use-aos.md +0 -34
- package/docs/src/composables/use-breakpoints.md +0 -35
- package/docs/src/composables/use-dialog.md +0 -88
- package/docs/src/composables/use-string-matching.md +0 -63
- package/docs/src/composables/use-toast.md +0 -71
- package/docs/src/composables/use-wait.md +0 -62
- package/docs/src/composables/use-window-size.md +0 -18
- package/docs/src/ecosystem/icons/icon-set.md +0 -123
- package/docs/src/ecosystem/mcp.md +0 -210
- package/docs/src/ecosystem/node/index.md +0 -53
- package/docs/src/ecosystem/utils/camel-case.md +0 -31
- package/docs/src/ecosystem/utils/capitalize.md +0 -50
- package/docs/src/ecosystem/utils/country-code-to-unicode-flag.md +0 -213
- package/docs/src/ecosystem/utils/debounce-callback.md +0 -38
- package/docs/src/ecosystem/utils/fetch-locale-ip.md +0 -33
- package/docs/src/ecosystem/utils/get-browser-locale.md +0 -29
- package/docs/src/ecosystem/utils/get-country-flag-url.md +0 -156
- package/docs/src/ecosystem/utils/is-server.md +0 -31
- package/docs/src/ecosystem/utils/is-standalone-mode.md +0 -43
- package/docs/src/ecosystem/utils/truthy-filter.md +0 -31
- package/docs/src/ecosystem/utils/types/deep-required.md +0 -39
- package/docs/src/ecosystem/utils/types/flatten-object-keys.md +0 -44
- package/docs/src/ecosystem/utils/upper-first.md +0 -32
- package/docs/src/guide/cli.md +0 -144
- package/docs/src/guide/migration-v4.md +0 -925
- package/docs/src/guide/tailwind.md +0 -158
- package/docs/src/index.md +0 -603
- package/docs/src/made-with-maz-ui.md +0 -58
- package/docs/src/plugins/toast.md +0 -349
- package/docs/src/plugins/wait.md +0 -109
- package/docs/src/theme-editor.md +0 -21
|
@@ -0,0 +1,536 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "MazInputPhoneNumber"
|
|
3
|
+
description: "MazInputPhoneNumber is a powerful and user-friendly component that helps users enter and validate phone numbers from any country with automatic formatting and validation"
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/components/maz-input-phone-number"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# MazInputPhoneNumber
|
|
9
|
+
|
|
10
|
+
> MazInputPhoneNumber is a powerful and user-friendly component that helps users enter and validate phone numbers from any country with automatic formatting and validation
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import MazInputPhoneNumber from 'maz-ui/components/MazInputPhoneNumber'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/components/maz-input-phone-number
|
|
16
|
+
|
|
17
|
+
> Before use it, you should install the MazUi plugin in your project, follow instructions in [Getting Started](../guide/getting-started.md)
|
|
18
|
+
|
|
19
|
+
**Tip:**
|
|
20
|
+
|
|
21
|
+
This component can be translated globally using the [MazUi](../ecosystem/translations.md) plugin.
|
|
22
|
+
|
|
23
|
+
**Tip: ✨ What makes this component special?**
|
|
24
|
+
|
|
25
|
+
- **Smart country detection** - Automatically detects country from browser locale or IP
|
|
26
|
+
- **Real-time validation** - Visual feedback as you type
|
|
27
|
+
- **Auto-formatting** - Formats numbers according to country standards
|
|
28
|
+
- **Search countries** - Find countries quickly in the dropdown
|
|
29
|
+
- **Customizable** - Full control over appearance and behavior
|
|
30
|
+
- **Accessible** - Keyboard navigation and screen reader support
|
|
31
|
+
- **International** - Supports all countries and phone formats
|
|
32
|
+
|
|
33
|
+
## Basic Usage
|
|
34
|
+
|
|
35
|
+
The simplest way to use MazInputPhoneNumber - just add it and it works!
|
|
36
|
+
|
|
37
|
+
```vue
|
|
38
|
+
<script setup lang="ts">
|
|
39
|
+
import type { MazInputPhoneNumberData } from 'maz-ui/components/MazInputPhoneNumber'
|
|
40
|
+
import MazInputPhoneNumber from 'maz-ui/components/MazInputPhoneNumber'
|
|
41
|
+
import { ref } from 'vue'
|
|
42
|
+
|
|
43
|
+
const phoneNumber = ref<string>()
|
|
44
|
+
const countryCode = ref<string>()
|
|
45
|
+
const results = ref<MazInputPhoneNumberData>()
|
|
46
|
+
</script>
|
|
47
|
+
|
|
48
|
+
<template>
|
|
49
|
+
<MazInputPhoneNumber
|
|
50
|
+
v-model="phoneNumber"
|
|
51
|
+
v-model:country-code="countryCode"
|
|
52
|
+
@data="results = $event"
|
|
53
|
+
/>
|
|
54
|
+
</template>
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
## Country Management
|
|
58
|
+
|
|
59
|
+
Control which countries appear in the dropdown and their order.
|
|
60
|
+
|
|
61
|
+
```vue
|
|
62
|
+
<template>
|
|
63
|
+
<!-- Preferred countries (moved to top, order not preserved) -->
|
|
64
|
+
<MazInputPhoneNumber
|
|
65
|
+
v-model="phoneNumber"
|
|
66
|
+
:preferred-countries="['US', 'FR', 'GB', 'DE', 'CA']"
|
|
67
|
+
placeholder="Common countries appear first"
|
|
68
|
+
/>
|
|
69
|
+
|
|
70
|
+
<!-- Only specific countries -->
|
|
71
|
+
<MazInputPhoneNumber
|
|
72
|
+
v-model="phoneNumber"
|
|
73
|
+
:only-countries="['US', 'FR', 'GB', 'DE', 'IT', 'ES']"
|
|
74
|
+
placeholder="Only European + North American countries"
|
|
75
|
+
/>
|
|
76
|
+
|
|
77
|
+
<!-- Ignore certain countries -->
|
|
78
|
+
<MazInputPhoneNumber
|
|
79
|
+
v-model="phoneNumber"
|
|
80
|
+
:ignored-countries="['AF', 'AL', 'DZ']"
|
|
81
|
+
placeholder="Some countries are hidden"
|
|
82
|
+
/>
|
|
83
|
+
</template>
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Layout Orientations
|
|
87
|
+
|
|
88
|
+
Choose how the country selector and phone input are arranged.
|
|
89
|
+
|
|
90
|
+
```vue
|
|
91
|
+
<template>
|
|
92
|
+
<!-- Responsive layout (default) -->
|
|
93
|
+
<MazInputPhoneNumber
|
|
94
|
+
top-label="Responsive"
|
|
95
|
+
assistive-text="Stacks on mobile, side-by-side on desktop"
|
|
96
|
+
orientation="responsive"
|
|
97
|
+
/>
|
|
98
|
+
|
|
99
|
+
<!-- Always side-by-side -->
|
|
100
|
+
<MazInputPhoneNumber
|
|
101
|
+
top-label="Always Row"
|
|
102
|
+
assistive-text="Side-by-side on all screen sizes"
|
|
103
|
+
orientation="row"
|
|
104
|
+
/>
|
|
105
|
+
|
|
106
|
+
<!-- Always stacked -->
|
|
107
|
+
<MazInputPhoneNumber
|
|
108
|
+
top-label="Always Column"
|
|
109
|
+
assistive-text="Stacked on all screen sizes"
|
|
110
|
+
orientation="col"
|
|
111
|
+
/>
|
|
112
|
+
</template>
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Display Options
|
|
116
|
+
|
|
117
|
+
Customize what information is shown to users.
|
|
118
|
+
|
|
119
|
+
```vue
|
|
120
|
+
<template>
|
|
121
|
+
<!-- Show country names instead of codes -->
|
|
122
|
+
<MazInputPhoneNumber
|
|
123
|
+
display-country-name
|
|
124
|
+
:translations="{ countrySelect: { placeholder: 'Choose country' } }"
|
|
125
|
+
/>
|
|
126
|
+
|
|
127
|
+
<!-- Show calling codes in dropdown -->
|
|
128
|
+
<MazInputPhoneNumber show-code-in-list />
|
|
129
|
+
|
|
130
|
+
<!-- Hide phone number examples -->
|
|
131
|
+
<MazInputPhoneNumber :example="false" />
|
|
132
|
+
|
|
133
|
+
<!-- Hide country flags -->
|
|
134
|
+
<MazInputPhoneNumber hide-flags />
|
|
135
|
+
|
|
136
|
+
<!-- Flags of maz-ui, no request to flagcdn.com: import { loadCountryFlag } from 'maz-ui/country-flags' -->
|
|
137
|
+
<MazInputPhoneNumber :flag-src="loadCountryFlag" />
|
|
138
|
+
|
|
139
|
+
<!-- Your own files: public/flags/fr.svg... -->
|
|
140
|
+
<MazInputPhoneNumber flag-src="/flags/{code}.svg" />
|
|
141
|
+
</template>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Flags source
|
|
145
|
+
|
|
146
|
+
By default, the flags come from the [flagcdn.com](https://flagcdn.com) CDN. The `flag-src` prop, passed to the country selector, takes:
|
|
147
|
+
|
|
148
|
+
- `loadCountryFlag` from `maz-ui/country-flags`: the flags of `@maz-ui/icons`, without any request to a third party, offline (hybrid apps with Capacitor or Cordova, PWAs);
|
|
149
|
+
- a URL template of your own files: `'/flags/{code}.svg'` (`{CODE}` for uppercase codes);
|
|
150
|
+
- your own function: `(code) => string | undefined | Promise<string | undefined>`.
|
|
151
|
+
|
|
152
|
+
Each flag is loaded only when visible, and a code without flag displays a badge. Set it once for the whole app with `defaults.global.flagSrc` of the MazUi plugin, or `mazUi.flags` of the Nuxt module (`'local'` or a URL template):
|
|
153
|
+
|
|
154
|
+
```ts
|
|
155
|
+
import { loadCountryFlag } from 'maz-ui/country-flags'
|
|
156
|
+
|
|
157
|
+
app.use(MazUi, { theme: { preset: mazUi }, defaults: { global: { flagSrc: loadCountryFlag } } })
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
See [MazSelectCountry](./maz-select-country.md#flags-source) for the details (bundle, Content Security Policy, PWA precache).
|
|
161
|
+
|
|
162
|
+
## Smart Country Detection
|
|
163
|
+
|
|
164
|
+
Let the component automatically detect the user's country.
|
|
165
|
+
|
|
166
|
+
```vue
|
|
167
|
+
<template>
|
|
168
|
+
<!-- Auto-detect from browser (default behavior) -->
|
|
169
|
+
<MazInputPhoneNumber :use-browser-locale="true" />
|
|
170
|
+
|
|
171
|
+
<!-- Auto-detect from IP address -->
|
|
172
|
+
<MazInputPhoneNumber fetch-country />
|
|
173
|
+
|
|
174
|
+
<!-- Set specific default country -->
|
|
175
|
+
<MazInputPhoneNumber
|
|
176
|
+
:use-browser-locale="false"
|
|
177
|
+
country-code="JP"
|
|
178
|
+
/>
|
|
179
|
+
</template>
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
## Phone Number Formatting
|
|
183
|
+
|
|
184
|
+
Control how phone numbers are automatically formatted as users type.
|
|
185
|
+
|
|
186
|
+
```vue
|
|
187
|
+
<template>
|
|
188
|
+
<!-- Format on blur (default) - best UX for most cases -->
|
|
189
|
+
<MazInputPhoneNumber auto-format="blur" />
|
|
190
|
+
|
|
191
|
+
<!-- Format while typing - immediate visual feedback -->
|
|
192
|
+
<MazInputPhoneNumber auto-format="typing" />
|
|
193
|
+
|
|
194
|
+
<!-- Disable formatting - for special cases -->
|
|
195
|
+
<MazInputPhoneNumber auto-format="disabled" />
|
|
196
|
+
|
|
197
|
+
<!-- Legacy boolean support (false = disabled, true = typing) -->
|
|
198
|
+
<MazInputPhoneNumber :auto-format="false" />
|
|
199
|
+
</template>
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
## Validation States
|
|
203
|
+
|
|
204
|
+
Control the visual validation feedback and success/error indicators.
|
|
205
|
+
|
|
206
|
+
```vue
|
|
207
|
+
<template>
|
|
208
|
+
<!-- Hide validation indicators -->
|
|
209
|
+
<MazInputPhoneNumber
|
|
210
|
+
:validation-success="false"
|
|
211
|
+
:validation-error="false"
|
|
212
|
+
/>
|
|
213
|
+
|
|
214
|
+
<!-- Force success state -->
|
|
215
|
+
<MazInputPhoneNumber success />
|
|
216
|
+
|
|
217
|
+
<!-- Force error state -->
|
|
218
|
+
<MazInputPhoneNumber error />
|
|
219
|
+
</template>
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Internationalization
|
|
223
|
+
|
|
224
|
+
Make the component speak your users' language.
|
|
225
|
+
|
|
226
|
+
```vue
|
|
227
|
+
<template>
|
|
228
|
+
<!-- Custom translations -->
|
|
229
|
+
<MazInputPhoneNumber
|
|
230
|
+
:translations="{
|
|
231
|
+
countrySelect: {
|
|
232
|
+
placeholder: 'Select your country',
|
|
233
|
+
error: 'Please choose a country',
|
|
234
|
+
searchPlaceholder: 'Search countries...'
|
|
235
|
+
},
|
|
236
|
+
phoneInput: {
|
|
237
|
+
placeholder: 'Enter phone number',
|
|
238
|
+
example: 'Format: {example}'
|
|
239
|
+
}
|
|
240
|
+
}"
|
|
241
|
+
/>
|
|
242
|
+
|
|
243
|
+
<!-- French country names -->
|
|
244
|
+
<MazInputPhoneNumber country-locale="fr-FR" />
|
|
245
|
+
|
|
246
|
+
<!-- Custom country names -->
|
|
247
|
+
<MazInputPhoneNumber
|
|
248
|
+
:custom-countries-list="{
|
|
249
|
+
US: 'United States of America',
|
|
250
|
+
GB: 'United Kingdom',
|
|
251
|
+
FR: 'République Française'
|
|
252
|
+
}"
|
|
253
|
+
/>
|
|
254
|
+
</template>
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## Custom Flag Styling
|
|
258
|
+
|
|
259
|
+
Replace the default flag emojis with your own design.
|
|
260
|
+
|
|
261
|
+
```vue
|
|
262
|
+
<template>
|
|
263
|
+
<!-- Country code badges -->
|
|
264
|
+
<MazInputPhoneNumber>
|
|
265
|
+
<template #selector-flag="{ countryCode }">
|
|
266
|
+
<span class="country-badge">
|
|
267
|
+
{{ countryCode }}
|
|
268
|
+
</span>
|
|
269
|
+
</template>
|
|
270
|
+
<template #country-list-flag="{ countryCode }">
|
|
271
|
+
<MazBadge size="sm" class="me-2">
|
|
272
|
+
{{ countryCode }}
|
|
273
|
+
</MazBadge>
|
|
274
|
+
</template>
|
|
275
|
+
</MazInputPhoneNumber>
|
|
276
|
+
|
|
277
|
+
<!-- Custom icons -->
|
|
278
|
+
<MazInputPhoneNumber>
|
|
279
|
+
<template #selector-flag="{ countryCode }">
|
|
280
|
+
<div class="custom-flag-icon">
|
|
281
|
+
{{ countryCode?.charAt(0) }}
|
|
282
|
+
</div>
|
|
283
|
+
</template>
|
|
284
|
+
<template #country-list-flag="{ countryCode }">
|
|
285
|
+
<div class="custom-list-icon">
|
|
286
|
+
{{ countryCode?.charAt(0) }}
|
|
287
|
+
</div>
|
|
288
|
+
</template>
|
|
289
|
+
</MazInputPhoneNumber>
|
|
290
|
+
</template>
|
|
291
|
+
|
|
292
|
+
<style scoped>
|
|
293
|
+
@reference "../../.vitepress/theme/main.css";
|
|
294
|
+
.country-badge {
|
|
295
|
+
@apply bg-primary text-primary-foreground px-2 py-1 rounded-md text-xs font-semibold;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
.custom-flag-icon,
|
|
299
|
+
.custom-list-icon {
|
|
300
|
+
@apply w-6 h-6 bg-linear-to-r from-blue-500 to-green-500 rounded-full flex items-center justify-center text-white text-xs font-bold;
|
|
301
|
+
}
|
|
302
|
+
|
|
303
|
+
.custom-list-icon {
|
|
304
|
+
@apply me-2;
|
|
305
|
+
}
|
|
306
|
+
</style>
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
## Advanced Configuration
|
|
310
|
+
|
|
311
|
+
Fine-tune the component for specific use cases.
|
|
312
|
+
|
|
313
|
+
```vue
|
|
314
|
+
<template>
|
|
315
|
+
<!-- Phone-only mode -->
|
|
316
|
+
<MazInputPhoneNumber
|
|
317
|
+
hide-country-select
|
|
318
|
+
country-code="US"
|
|
319
|
+
:translations="{
|
|
320
|
+
phoneInput: {
|
|
321
|
+
placeholder: 'US Phone Number'
|
|
322
|
+
}
|
|
323
|
+
}"
|
|
324
|
+
/>
|
|
325
|
+
|
|
326
|
+
<!-- Fuzzy search -->
|
|
327
|
+
<MazInputPhoneNumber :search-threshold="0.3" />
|
|
328
|
+
|
|
329
|
+
<!-- No search -->
|
|
330
|
+
<MazInputPhoneNumber :search="false" />
|
|
331
|
+
|
|
332
|
+
<!-- Different dropdown position -->
|
|
333
|
+
<MazInputPhoneNumber list-position="top-start" />
|
|
334
|
+
</template>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## Real-world Examples
|
|
338
|
+
|
|
339
|
+
See how to use the component in common scenarios.
|
|
340
|
+
|
|
341
|
+
```vue
|
|
342
|
+
<script setup>
|
|
343
|
+
import { ref } from 'vue'
|
|
344
|
+
|
|
345
|
+
const businessPhone = ref()
|
|
346
|
+
const businessCountry = ref()
|
|
347
|
+
const businessResults = ref()
|
|
348
|
+
|
|
349
|
+
const globalPhone = ref()
|
|
350
|
+
const mobilePhone = ref()
|
|
351
|
+
</script>
|
|
352
|
+
|
|
353
|
+
<template>
|
|
354
|
+
<!-- Business form -->
|
|
355
|
+
<div class="form-container">
|
|
356
|
+
<MazInput label="Full Name" placeholder="John Doe" />
|
|
357
|
+
<MazInput label="Email" type="email" placeholder="john@example.com" />
|
|
358
|
+
<MazInputPhoneNumber
|
|
359
|
+
v-model="businessPhone"
|
|
360
|
+
v-model:country-code="businessCountry"
|
|
361
|
+
label="Business Phone"
|
|
362
|
+
:preferred-countries="['US', 'CA', 'GB', 'AU']"
|
|
363
|
+
@data="businessResults = $event"
|
|
364
|
+
/>
|
|
365
|
+
<MazBtn color="primary" block>Create Account</MazBtn>
|
|
366
|
+
</div>
|
|
367
|
+
|
|
368
|
+
<!-- Global support -->
|
|
369
|
+
<MazInputPhoneNumber
|
|
370
|
+
v-model="globalPhone"
|
|
371
|
+
country-locale="es-ES"
|
|
372
|
+
show-code-in-list
|
|
373
|
+
:translations="{
|
|
374
|
+
countrySelect: {
|
|
375
|
+
placeholder: 'País',
|
|
376
|
+
searchPlaceholder: 'Buscar país...'
|
|
377
|
+
},
|
|
378
|
+
phoneInput: {
|
|
379
|
+
placeholder: 'Número de teléfono'
|
|
380
|
+
}
|
|
381
|
+
}"
|
|
382
|
+
/>
|
|
383
|
+
|
|
384
|
+
<!-- Mobile-first -->
|
|
385
|
+
<MazInputPhoneNumber
|
|
386
|
+
v-model="mobilePhone"
|
|
387
|
+
orientation="col"
|
|
388
|
+
size="lg"
|
|
389
|
+
fetch-country
|
|
390
|
+
block
|
|
391
|
+
/>
|
|
392
|
+
</template>
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
## Data Handling
|
|
396
|
+
|
|
397
|
+
Understanding what data the component provides.
|
|
398
|
+
|
|
399
|
+
```vue
|
|
400
|
+
<script setup>
|
|
401
|
+
import { ref } from 'vue'
|
|
402
|
+
|
|
403
|
+
const dataPhone = ref()
|
|
404
|
+
const dataCountry = ref()
|
|
405
|
+
const phoneData = ref()
|
|
406
|
+
|
|
407
|
+
// Handle the data event
|
|
408
|
+
function handlePhoneData(results) {
|
|
409
|
+
console.log('Phone validation results:', results)
|
|
410
|
+
// results contains:
|
|
411
|
+
// - isValid: boolean
|
|
412
|
+
// - countryCode: string
|
|
413
|
+
// - formatNational: string
|
|
414
|
+
// - formatInternational: string
|
|
415
|
+
// - e164: string
|
|
416
|
+
// - type: 'mobile' | 'fixedLine' | etc.
|
|
417
|
+
// - and more...
|
|
418
|
+
}
|
|
419
|
+
</script>
|
|
420
|
+
|
|
421
|
+
<template>
|
|
422
|
+
<MazInputPhoneNumber
|
|
423
|
+
v-model="dataPhone"
|
|
424
|
+
v-model:country-code="dataCountry"
|
|
425
|
+
@data="handlePhoneData"
|
|
426
|
+
/>
|
|
427
|
+
</template>
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
## Troubleshooting
|
|
431
|
+
|
|
432
|
+
Common issues and solutions:
|
|
433
|
+
|
|
434
|
+
### ⚠️ Auto-formatting Issues
|
|
435
|
+
|
|
436
|
+
For countries like Anguilla (AI) with multiple valid number lengths, disable auto-formatting:
|
|
437
|
+
|
|
438
|
+
```vue
|
|
439
|
+
<MazInputPhoneNumber auto-format="disabled" country-code="AI" />
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
### 🌐 Country Detection Not Working
|
|
443
|
+
|
|
444
|
+
Make sure to enable the right detection method:
|
|
445
|
+
|
|
446
|
+
```vue
|
|
447
|
+
<!-- Browser locale (default) -->
|
|
448
|
+
<MazInputPhoneNumber :use-browser-locale="true" />
|
|
449
|
+
|
|
450
|
+
<!-- IP-based detection (requires internet) -->
|
|
451
|
+
<MazInputPhoneNumber fetch-country />
|
|
452
|
+
|
|
453
|
+
<!-- Manual fallback -->
|
|
454
|
+
<MazInputPhoneNumber country-code="US" />
|
|
455
|
+
```
|
|
456
|
+
|
|
457
|
+
## Types
|
|
458
|
+
|
|
459
|
+
**Results object emitted by `@data` event:**
|
|
460
|
+
|
|
461
|
+
```ts
|
|
462
|
+
interface MazInputPhoneNumberData {
|
|
463
|
+
isValid: boolean
|
|
464
|
+
isPossible?: boolean
|
|
465
|
+
countryCode?: CountryCode
|
|
466
|
+
countryCallingCode?: CountryCallingCode
|
|
467
|
+
nationalNumber?: NationalNumber
|
|
468
|
+
type?: NumberType
|
|
469
|
+
formatInternational?: string
|
|
470
|
+
formatNational?: string
|
|
471
|
+
uri?: string
|
|
472
|
+
e164?: string
|
|
473
|
+
rfc3966?: string
|
|
474
|
+
possibleCountries?: CountryCode[]
|
|
475
|
+
phoneNumber?: string
|
|
476
|
+
}
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
## MazInputPhoneNumber API
|
|
480
|
+
|
|
481
|
+
`import MazInputPhoneNumber from 'maz-ui/components/MazInputPhoneNumber'`
|
|
482
|
+
|
|
483
|
+
### Props
|
|
484
|
+
|
|
485
|
+
- `model-value` (`string | null`, `v-model`): The current value of the input field in international format (e.g. +33612345678).
|
|
486
|
+
- `country-code` (`CountryCode | null`, `v-model:country-code`): The selected country code (e.g. "FR").
|
|
487
|
+
- `id` (`string`): Unique identifier for the component.
|
|
488
|
+
- `placeholder` (`string`): Text displayed when the input is empty.
|
|
489
|
+
- `top-label` (`string`): Static label displayed above the input field. Unlike the floating label, this remains fixed.
|
|
490
|
+
- `label` (`string`): Label displayed above the input.
|
|
491
|
+
- `preferred-countries` (`CountryCode[]`): List of country codes to place first in the select list.
|
|
492
|
+
- `ignored-countries` (`CountryCode[]`): List of country codes to be removed from the select list.
|
|
493
|
+
- `only-countries` (`CountryCode[]`): List of country codes to only have the countries selected in the select list.
|
|
494
|
+
- `translations` (`Partial<{ countrySelect: { placeholder: string; error: string; searchPlaceholder: string; }; phoneInput: { placeholder: string; example: string; }; }>`, default: `{ countrySelect: { error: 'Choose country', placeholder: 'Country code', searchPlaceholder: 'Search the country', }, phoneInput: { placeholder: 'Phone number', example: 'Example: {example}', }, }`): Locale strings of the component The default values are the translations of the MazUiTranslations plugin.
|
|
495
|
+
- `list-position` (`MazPopoverPosition`, default: `"bottom-start"`): Position where the list of countries will be opened. Values: `'top'`, `'left'`, `'right'`, `'bottom'` (non exhaustive).
|
|
496
|
+
- `color` (`"primary" | "secondary" | "accent" | "info" | "success" | "warning" | "destructive" | "contrast" | "transparent"`, default: `"primary"`): Component color applied.
|
|
497
|
+
- `size` (`"xs" | "sm" | "md" | "lg" | "xl" | "mini"`, default: `"md"`): Component size applied.
|
|
498
|
+
- `hide-flags` (`boolean`, default: `false`): Remove flags in country list.
|
|
499
|
+
- `flag-src` (`MazCountryFlagSrc`, default: `undefined (flags from flagcdn.com)`): Source of the flags, instead of the flagcdn.com CDN: a URL template (`/flags/{code}.svg`, `{CODE}` for uppercase) or a function giving the image source of a code. Use `loadCountryFlag` from `maz-ui/country-flags` for the flags of `@maz-ui/icons`. Can be set for the whole app with the `defaults.global.flagSrc` option of the MazUi plugin.
|
|
500
|
+
- `disabled` (`boolean`, default: `false`): Make the input disabled.
|
|
501
|
+
- `required` (`boolean`, default: `false`): Make the input required.
|
|
502
|
+
- `example` (`boolean`, default: `true`): Show the phone number example.
|
|
503
|
+
- `search` (`boolean`, default: `true`): Disable search input in country list.
|
|
504
|
+
- `search-threshold` (`number`, default: `0.75`): Threshold of the search input in country list where 1 is a perfect match and 0 is a match with any character.
|
|
505
|
+
- `use-browser-locale` (`boolean`, default: `true`): If true, the browser locale will be used.
|
|
506
|
+
- `fetch-country` (`boolean`, default: `false`): The component will make a request (https://ipwho.is) to get the location of the user and use it to set the default country code.
|
|
507
|
+
- `hide-country-select` (`boolean`, default: `false`): Hide the country selector.
|
|
508
|
+
- `show-code-in-list` (`boolean`, default: `false`): Show country calling code in the country list.
|
|
509
|
+
- `custom-countries-list` (`Record<CountryCode, string>`): Replace country names.
|
|
510
|
+
- `auto-format` (`false | "disabled" | "blur" | "typing"`, default: `"blur"`): Disabled auto-format when phone is valid.
|
|
511
|
+
- `country-locale` (`string`): Locale of country list.
|
|
512
|
+
- `validation-error` (`boolean`, default: `true`): Disable validation error UI.
|
|
513
|
+
- `validation-success` (`boolean`, default: `true`): Disable validation success UI.
|
|
514
|
+
- `success` (`boolean`, default: `false`): Add success UI.
|
|
515
|
+
- `error` (`boolean`, default: `false`): Add error UI.
|
|
516
|
+
- `warning` (`boolean`, default: `false`): Add warning UI.
|
|
517
|
+
- `display-country-name` (`boolean`, default: `false`): Will replace the calling code by the country name in the country selector.
|
|
518
|
+
- `block` (`boolean`, default: `false`): The input will be displayed in full width.
|
|
519
|
+
- `orientation` (`"row" | "col" | "responsive"`, default: `"responsive"`): Orientation of the inputs in the component.
|
|
520
|
+
- `country-select-attributes` (`Record<string, unknown>`, default: `{ name: "country", autocomplete: "off", style: { width: "14rem", }, }`): Meta attributes of the country input.
|
|
521
|
+
- `phone-input-attributes` (`(Record<string, unknown> & { name: string; inputmode: "none" | "text" | "search" | "url" | "email" | "tel" | "numeric" | "decimal" | undefined; autocomplete: string; })`, default: `{ name: "phone", autocomplete: "tel", inputmode: "tel", }`): Meta attributes of the phone number input.
|
|
522
|
+
- `assistive-text` (`string`): Helper text displayed below the input to provide additional context or validation feedback.
|
|
523
|
+
- `hint` (`string`): Alternative text that replaces the label when provided. Useful for contextual hints.
|
|
524
|
+
|
|
525
|
+
### Events
|
|
526
|
+
|
|
527
|
+
- `@update:model-value` (payload: `value: string | null | undefined`): Emitted when country or phone number changes
|
|
528
|
+
- `@data` (payload: `results: MazInputPhoneNumberData`): Emitted when country or phone number changes
|
|
529
|
+
- `@country-code` (payload: `countryCode?: CountryCode | null | undefined`): Emitted when selected country changes
|
|
530
|
+
- `@update:country-code` (payload: `countryCode?: CountryCode | null | undefined`): Emitted when country changes
|
|
531
|
+
|
|
532
|
+
### Slots
|
|
533
|
+
|
|
534
|
+
- `#no-results`: Replace the "no results" icon in the country selector list
|
|
535
|
+
- `#selector-flag`: Country selector flag Bindings: `countryCode: CountryCode` (current selected country code Ex: `"FR"`).
|
|
536
|
+
- `#country-list-flag`: Country list flag Bindings: `countryCode: CountryCode` (country code of option Ex: `"FR"`), `option: CountryOption` (country data), `isSelected: boolean` (`true` if option is selected).
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "MazInputPrice"
|
|
3
|
+
description: "MazInputPrice is a standalone component that replaces the standard html input text and formats the text enter according to the currency provided"
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/components/maz-input-price"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# MazInputPrice
|
|
9
|
+
|
|
10
|
+
> MazInputPrice is a standalone component that replaces the standard html input text and formats the text enter according to the currency provided
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import MazInputPrice from 'maz-ui/components/MazInputPrice'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/components/maz-input-price
|
|
16
|
+
|
|
17
|
+
> Before use it, you should install the MazUi plugin in your project, follow instructions in [Getting Started](../guide/getting-started.md)
|
|
18
|
+
|
|
19
|
+
## Basic usage
|
|
20
|
+
|
|
21
|
+
```vue
|
|
22
|
+
<script lang="ts" setup>
|
|
23
|
+
import MazInputPrice from 'maz-ui/components/MazInputPrice'
|
|
24
|
+
import { ref } from 'vue'
|
|
25
|
+
|
|
26
|
+
const priceValue = ref(2)
|
|
27
|
+
const formattedPrice = ref()
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<MazInputPrice
|
|
32
|
+
v-model="priceValue"
|
|
33
|
+
label="Enter your price"
|
|
34
|
+
currency="USD"
|
|
35
|
+
locale="en-US"
|
|
36
|
+
:min="5"
|
|
37
|
+
:max="1000"
|
|
38
|
+
@formatted="formattedPrice = $event"
|
|
39
|
+
/>
|
|
40
|
+
</template>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## MazInputPrice API
|
|
44
|
+
|
|
45
|
+
`import MazInputPrice from 'maz-ui/components/MazInputPrice'`
|
|
46
|
+
|
|
47
|
+
### Props
|
|
48
|
+
|
|
49
|
+
- `model-value` (`number`, `v-model`): The value of the input.
|
|
50
|
+
- `currency` (`string`, default: `"EUR"`): The currency to use.
|
|
51
|
+
- `locale` (`string`, default: `"fr-FR"`): The locale to use.
|
|
52
|
+
- `min` (`number`, default: `Number.NEGATIVE_INFINITY`): The minimum value that the input can accept.
|
|
53
|
+
- `max` (`number`, default: `Number.POSITIVE_INFINITY`): The maximum value that the input can accept.
|
|
54
|
+
- `no-icon` (`boolean`, default: `false`): The input will be displayed without icon.
|
|
55
|
+
- `block` (`boolean`): The input will be displayed in full width.
|
|
56
|
+
- `error` (`boolean`): Will display the input in error state.
|
|
57
|
+
- `hint` (`string`): The hint text to display below the input.
|
|
58
|
+
- `success` (`boolean`): Will display the input in success state.
|
|
59
|
+
- `warning` (`boolean`): Will display the input in warning state.
|
|
60
|
+
- `currency-options` (`Omit<FilterCurrencyOptions, "currency">`): Options for the currency helper - [see](../ecosystem/utils/currency.md).
|
|
61
|
+
|
|
62
|
+
### Events
|
|
63
|
+
|
|
64
|
+
- `@update:model-value` (payload: `value: number | undefined`)
|
|
65
|
+
- `@blur` (payload: `value: Event`)
|
|
66
|
+
- `@focus` (payload: `value: Event`)
|
|
67
|
+
- `@input` (payload: `value: number | undefined`)
|
|
68
|
+
- `@formatted` (payload: `value: string | undefined`)
|