@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
|
@@ -1,52 +1,24 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: useIdleTimeout
|
|
3
|
-
description: A Vue composable that provides an easy way to track user inactivity on your website and execute a callback function when the user becomes idle.
|
|
2
|
+
title: "useIdleTimeout"
|
|
3
|
+
description: "A Vue composable that provides an easy way to track user inactivity on your website and execute a callback function when the user becomes idle."
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-idle-timeout"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# useIdleTimeout
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
> A Vue composable that provides an easy way to track user inactivity on your website and execute a callback function when the user becomes idle.
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
## Demo
|
|
15
|
-
|
|
16
|
-
<ComponentDemo>
|
|
17
|
-
<div class="flex items-start gap-05 items-center flex-wrap">
|
|
18
|
-
<MazBtn @click="idleTimeout.start()" color="info">
|
|
19
|
-
Start
|
|
20
|
-
</MazBtn>
|
|
21
|
-
<MazBtn @click="idleTimeout.pause()" color="warning">
|
|
22
|
-
Pause
|
|
23
|
-
</MazBtn>
|
|
24
|
-
<MazBtn @click="idleTimeout.resume()">
|
|
25
|
-
Resume
|
|
26
|
-
</MazBtn>
|
|
27
|
-
<MazBtn @click="idleTimeout.reset()" color="secondary">
|
|
28
|
-
Reset
|
|
29
|
-
</MazBtn>
|
|
30
|
-
<MazBtn @click="idleTimeout.destroy()" color="destructive">
|
|
31
|
-
Destroy
|
|
32
|
-
</MazBtn>
|
|
33
|
-
</div>
|
|
34
|
-
|
|
35
|
-
<br />
|
|
36
|
-
|
|
37
|
-
<MazCard block>
|
|
38
|
-
<div style="display: flex;">
|
|
39
|
-
<div style="flex: 1;">isIdle: {{event.isIdle ?? false}}</div>
|
|
40
|
-
<div v-if="event.eventType" style="flex: 1; padding-left: 10px;">eventType: {{event.eventType ?? '-' }}</div>
|
|
41
|
-
</div>
|
|
42
|
-
</MazCard>
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { useIdleTimeout } from 'maz-ui/composables/useIdleTimeout'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-idle-timeout
|
|
43
16
|
|
|
44
|
-
|
|
45
|
-
<br />
|
|
17
|
+
**Note:**
|
|
46
18
|
|
|
47
|
-
|
|
19
|
+
A plugin to know the amount of time a user has spent on your website
|
|
48
20
|
|
|
49
|
-
|
|
21
|
+
## Demo
|
|
50
22
|
|
|
51
23
|
```vue
|
|
52
24
|
<script lang="ts" setup>
|
|
@@ -133,62 +105,6 @@ onBeforeUnmount(() => {
|
|
|
133
105
|
</template>
|
|
134
106
|
```
|
|
135
107
|
|
|
136
|
-
</template>
|
|
137
|
-
</ComponentDemo>
|
|
138
|
-
|
|
139
|
-
<script lang="ts" setup>
|
|
140
|
-
import { onMounted, ref, onBeforeUnmount } from 'vue'
|
|
141
|
-
|
|
142
|
-
import { useIdleTimeout } from 'maz-ui/composables/useIdleTimeout'
|
|
143
|
-
import { useDialog } from 'maz-ui/composables/useDialog'
|
|
144
|
-
|
|
145
|
-
const dialog = useDialog()
|
|
146
|
-
|
|
147
|
-
const event = ref({})
|
|
148
|
-
|
|
149
|
-
const timeout = 5000
|
|
150
|
-
|
|
151
|
-
const idleTimeout = useIdleTimeout({
|
|
152
|
-
callback,
|
|
153
|
-
options: {
|
|
154
|
-
timeout,
|
|
155
|
-
immediate: false,
|
|
156
|
-
once: false,
|
|
157
|
-
},
|
|
158
|
-
})
|
|
159
|
-
|
|
160
|
-
async function callback({ isIdle, eventType, instance }) {
|
|
161
|
-
console.log({ isIdle, eventType })
|
|
162
|
-
event.value = { isIdle, eventType }
|
|
163
|
-
|
|
164
|
-
if (isIdle) {
|
|
165
|
-
try {
|
|
166
|
-
instance.destroy()
|
|
167
|
-
await dialog.open({
|
|
168
|
-
title: 'Are you still here?',
|
|
169
|
-
message: `You have been inactive for ${timeout / 1000} secondes, do you want to continue?`,
|
|
170
|
-
data: {
|
|
171
|
-
cancelText: 'No',
|
|
172
|
-
confirmText: 'Yes',
|
|
173
|
-
}
|
|
174
|
-
}).promise
|
|
175
|
-
instance.start()
|
|
176
|
-
} catch (e) {
|
|
177
|
-
instance.destroy()
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
onMounted(() => {
|
|
183
|
-
// should be executed on client
|
|
184
|
-
idleTimeout.start()
|
|
185
|
-
})
|
|
186
|
-
|
|
187
|
-
onBeforeUnmount(() => {
|
|
188
|
-
idleTimeout.destroy()
|
|
189
|
-
})
|
|
190
|
-
</script>
|
|
191
|
-
|
|
192
108
|
## Callback
|
|
193
109
|
|
|
194
110
|
```ts
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: usePullToRefresh
|
|
3
|
-
description: usePullToRefresh is a headless Vue composable for the pull to refresh gesture on the window or any scroll container.
|
|
2
|
+
title: "usePullToRefresh"
|
|
3
|
+
description: "usePullToRefresh is a headless Vue composable for the pull to refresh gesture on the window or any scroll container."
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-pull-to-refresh"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# usePullToRefresh
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
> usePullToRefresh is a headless Vue composable for the pull to refresh gesture on the window or any scroll container.
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { usePullToRefresh } from 'maz-ui/composables/usePullToRefresh'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-pull-to-refresh
|
|
9
16
|
|
|
10
17
|
## Introduction
|
|
11
18
|
|
|
12
|
-
`usePullToRefresh` tracks the pull to refresh gesture and gives you its state (distance, progress, ready, refreshing) to build your own indicator. It powers [MazPullToRefresh](
|
|
19
|
+
`usePullToRefresh` tracks the pull to refresh gesture and gives you its state (distance, progress, ready, refreshing) to build your own indicator. It powers [MazPullToRefresh](../components/maz-pull-to-refresh.md): use the component for a ready-made indicator, the composable when you need full control over the rendering.
|
|
13
20
|
|
|
14
21
|
The pull only starts when the target is scrolled to the top, follows a rubber band beyond the threshold, ignores horizontal and multi-touch gestures, and prevents the native bounce while pulling.
|
|
15
22
|
|
|
@@ -29,8 +36,8 @@ const { distance, progress, isReady, isRefreshing } = usePullToRefresh({
|
|
|
29
36
|
</script>
|
|
30
37
|
|
|
31
38
|
<template>
|
|
32
|
-
<div ref="scroller" class="
|
|
33
|
-
<div class="
|
|
39
|
+
<div ref="scroller" class="h-screen overflow-y-auto">
|
|
40
|
+
<div class="flex items-end justify-center overflow-hidden" :style="{ height: `${distance}px` }">
|
|
34
41
|
<span v-if="isRefreshing">Refreshing…</span>
|
|
35
42
|
<span v-else-if="isReady">Release to refresh</span>
|
|
36
43
|
<span v-else :style="{ opacity: progress }">Pull to refresh</span>
|
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: useReadingTime
|
|
3
|
-
description: This composable allows you to calculate the reading time of a text
|
|
2
|
+
title: "useReadingTime"
|
|
3
|
+
description: "This composable allows you to calculate the reading time of a text"
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-reading-time"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# useReadingTime
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
> This composable allows you to calculate the reading time of a text
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { useReadingTime } from 'maz-ui/composables/useReadingTime'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-reading-time
|
|
9
16
|
|
|
10
17
|
## Basic usage
|
|
11
18
|
|
|
12
|
-
Time to read this page:
|
|
19
|
+
Time to read this page: minutes
|
|
13
20
|
|
|
14
21
|
```vue
|
|
15
22
|
<script lang="ts" setup>
|
|
@@ -29,25 +36,11 @@ const { duration } = useReadingTime({
|
|
|
29
36
|
|
|
30
37
|
## With content selector
|
|
31
38
|
|
|
32
|
-
|
|
39
|
+
**Warning:**
|
|
40
|
+
|
|
33
41
|
This method is not SSR friendly (only on client side, with Nuxt use this composable in `onMounted(() => { ... })`) and not recommended because it is less performant than the previous one
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Time to read this page: <strong>{{ durationSelector }} minutes</strong>
|
|
37
|
-
|
|
38
|
-
<MazCard collapsible class="maz:w-full" title="Content to read">
|
|
39
|
-
<div id="content-to-read" class="maz:px-4">
|
|
40
|
-
<p>
|
|
41
|
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lectus quam id leo in. Placerat vestibulum lectus mauris ultrices eros in cursus turpis. Et tortor consequat id porta nibh venenatis cras sed. Praesent tristique magna sit amet. Iaculis at erat pellentesque adipiscing commodo elit at. Interdum velit euismod in pellentesque massa placerat duis. Eget nunc scelerisque viverra mauris in aliquam. Nulla facilisi morbi tempus iaculis urna id volutpat lacus. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum odio. Egestas integer eget aliquet nibh praesent tristique magna sit amet. Volutpat blandit aliquam etiam erat velit scelerisque. Eget nullam non nisi est sit amet. Turpis egestas sed tempus urna et pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo. Rutrum tellus pellentesque eu tincidunt tortor aliquam. Non odio euismod lacinia at. Magna eget est lorem ipsum.
|
|
42
|
-
</p>
|
|
43
|
-
<p>
|
|
44
|
-
Et ultrices neque ornare aenean euismod elementum nisi. Ullamcorper eget nulla facilisi etiam dignissim diam quis enim lobortis. Lobortis feugiat vivamus at augue eget arcu. Ut diam quam nulla porttitor massa id neque. Turpis in eu mi bibendum neque egestas. Vivamus at augue eget arcu dictum varius duis at. Nunc sed blandit libero volutpat. Convallis a cras semper auctor neque vitae tempus. Odio facilisis mauris sit amet massa vitae tortor condimentum. Condimentum id venenatis a condimentum. Tincidunt praesent semper feugiat nibh sed pulvinar. Dolor magna eget est lorem ipsum dolor. Ultricies mi eget mauris pharetra et ultrices neque ornare aenean. Sapien pellentesque habitant morbi tristique senectus et netus. Tortor vitae purus faucibus ornare suspendisse sed nisi. Est lorem ipsum dolor sit amet consectetur adipiscing elit pellentesque. Enim neque volutpat ac tincidunt vitae.
|
|
45
|
-
</p>
|
|
46
|
-
<p>
|
|
47
|
-
Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Scelerisque felis imperdiet proin fermentum leo vel orci porta non. Ut etiam sit amet nisl purus in mollis nunc sed. Sed velit dignissim sodales ut eu sem integer. Odio tempor orci dapibus ultrices in iaculis nunc. Id semper risus in hendrerit gravida. Aliquam faucibus purus in massa tempor nec. Mattis nunc sed blandit libero volutpat sed cras ornare arcu. Quisque id diam vel quam elementum pulvinar etiam non quam. Et egestas quis ipsum suspendisse ultrices gravida dictum. Velit aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. In hac habitasse platea dictumst quisque. Amet nisl purus in mollis nunc sed id semper. Sollicitudin tempor id eu nisl nunc mi. Dictumst vestibulum rhoncus est pellentesque elit ullamcorper dignissim. In iaculis nunc sed augue lacus viverra vitae.
|
|
48
|
-
</p>
|
|
49
|
-
</div>
|
|
50
|
-
</MazCard>
|
|
42
|
+
|
|
43
|
+
Time to read this page: minutes
|
|
51
44
|
|
|
52
45
|
```vue
|
|
53
46
|
<script lang="ts" setup>
|
|
@@ -75,8 +68,8 @@ onMounted(() => {
|
|
|
75
68
|
Time to read this page: <strong>{{ duration }} minutes</strong>
|
|
76
69
|
</div>
|
|
77
70
|
|
|
78
|
-
<MazCard collapsible class="
|
|
79
|
-
<div id="content-to-read" class="
|
|
71
|
+
<MazCard collapsible class="w-full" title="Content to read">
|
|
72
|
+
<div id="content-to-read" class="px-4">
|
|
80
73
|
<p>
|
|
81
74
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lectus quam id leo in. Placerat vestibulum lectus mauris ultrices eros in cursus turpis. Et tortor consequat id porta nibh venenatis cras sed. Praesent tristique magna sit amet. Iaculis at erat pellentesque adipiscing commodo elit at. Interdum velit euismod in pellentesque massa placerat duis. Eget nunc scelerisque viverra mauris in aliquam. Nulla facilisi morbi tempus iaculis urna id volutpat lacus. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum odio. Egestas integer eget aliquet nibh praesent tristique magna sit amet. Volutpat blandit aliquam etiam erat velit scelerisque. Eget nullam non nisi est sit amet. Turpis egestas sed tempus urna et pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo. Rutrum tellus pellentesque eu tincidunt tortor aliquam. Non odio euismod lacinia at. Magna eget est lorem ipsum.
|
|
82
75
|
</p>
|
|
@@ -95,38 +88,9 @@ onMounted(() => {
|
|
|
95
88
|
|
|
96
89
|
> The velocity is the number of words per minute. By default it is 150 words per minute.
|
|
97
90
|
|
|
98
|
-
**Velocity**:
|
|
99
|
-
|
|
100
|
-
<MazInputNumber v-model="velocity" placeholder="Velocity" />
|
|
101
|
-
|
|
102
|
-
Time to read this page: <strong>{{ durationSelector }} minutes</strong>
|
|
103
|
-
|
|
104
|
-
{{wordCount}}
|
|
105
|
-
|
|
106
|
-
<script lang="ts" setup>
|
|
107
|
-
import { ref, onMounted } from 'vue'
|
|
108
|
-
import { useReadingTime } from 'maz-ui/composables/useReadingTime'
|
|
109
|
-
|
|
110
|
-
const velocity = ref()
|
|
111
|
-
|
|
112
|
-
const { duration } = useReadingTime({
|
|
113
|
-
content: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Lectus quam id leo in. Placerat vestibulum lectus mauris ultrices eros in cursus turpis. Et tortor consequat id porta nibh venenatis cras sed. Praesent tristique magna sit amet. Iaculis at erat pellentesque adipiscing commodo elit at. Interdum velit euismod in pellentesque massa placerat duis. Eget nunc scelerisque viverra mauris in aliquam. Nulla facilisi morbi tempus iaculis urna id volutpat lacus. Pellentesque eu tincidunt tortor aliquam nulla facilisi cras fermentum odio. Egestas integer eget aliquet nibh praesent tristique magna sit amet. Volutpat blandit aliquam etiam erat velit scelerisque. Eget nullam non nisi est sit amet. Turpis egestas sed tempus urna et pharetra. Nisl rhoncus mattis rhoncus urna neque viverra justo. Rutrum tellus pellentesque eu tincidunt tortor aliquam. Non odio euismod lacinia at. Magna eget est lorem ipsum. Et ultrices neque ornare aenean euismod elementum nisi. Ullamcorper eget nulla facilisi etiam dignissim diam quis enim lobortis. Lobortis feugiat vivamus at augue eget arcu. Ut diam quam nulla porttitor massa id neque. Turpis in eu mi bibendum neque egestas. Vivamus at augue eget arcu dictum varius duis at. Nunc sed blandit libero volutpat. Convallis a cras semper auctor neque vitae tempus. Odio facilisis mauris sit amet massa vitae tortor condimentum. Condimentum id venenatis a condimentum. Tincidunt praesent semper feugiat nibh sed pulvinar. Dolor magna eget est lorem ipsum dolor. Ultricies mi eget mauris pharetra et ultrices neque ornare aenean. Sapien pellentesque habitant morbi tristique senectus et netus. Tortor vitae purus faucibus ornare suspendisse sed nisi. Est lorem ipsum dolor sit amet consectetur adipiscing elit pellentesque. Enim neque volutpat ac tincidunt vitae. Iaculis at erat pellentesque adipiscing commodo elit at imperdiet. Scelerisque felis imperdiet proin fermentum leo vel orci porta non. Ut etiam sit amet nisl purus in mollis nunc sed. Sed velit dignissim sodales ut eu sem integer. Odio tempor orci dapibus ultrices in iaculis nunc. Id semper risus in hendrerit gravida. Aliquam faucibus purus in massa tempor nec. Mattis nunc sed blandit libero volutpat sed cras ornare arcu. Quisque id diam vel quam elementum pulvinar etiam non quam. Et egestas quis ipsum suspendisse ultrices gravida dictum. Velit aliquet sagittis id consectetur purus ut faucibus pulvinar elementum. In hac habitasse platea dictumst quisque. Amet nisl purus in mollis nunc sed id semper. Sollicitudin tempor id eu nisl nunc mi. Dictumst vestibulum rhoncus est pellentesque elit ullamcorper dignissim. In iaculis nunc sed augue lacus viverra vitae.',
|
|
114
|
-
velocity,
|
|
115
|
-
})
|
|
116
|
-
|
|
117
|
-
const contentSelector = ref()
|
|
91
|
+
**Velocity**: words per minute
|
|
118
92
|
|
|
119
|
-
|
|
120
|
-
contentSelector,
|
|
121
|
-
velocity,
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
onMounted(() => {
|
|
125
|
-
setTimeout(() => {
|
|
126
|
-
contentSelector.value = '#content-to-read'
|
|
127
|
-
}, 500)
|
|
128
|
-
})
|
|
129
|
-
</script>
|
|
93
|
+
Time to read this page: minutes
|
|
130
94
|
|
|
131
95
|
## Types
|
|
132
96
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "useStringMatching"
|
|
3
|
+
description: "Efficient composable for string matching tasks, utilizing Levenshtein distance calculation. Simplify comparison operations with minimal setup. Enhance text similarity checks effortlessly."
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-string-matching"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# useStringMatching
|
|
9
|
+
|
|
10
|
+
> Efficient composable for string matching tasks, utilizing Levenshtein distance calculation. Simplify comparison operations with minimal setup. Enhance text similarity checks effortlessly.
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { useStringMatching } from 'maz-ui/composables/useStringMatching'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-string-matching
|
|
16
|
+
|
|
17
|
+
## Usage
|
|
18
|
+
|
|
19
|
+
```vue
|
|
20
|
+
<script lang="ts" setup>
|
|
21
|
+
import { useStringMatching } from 'maz-ui/composables'
|
|
22
|
+
import { ref } from 'vue'
|
|
23
|
+
|
|
24
|
+
const string1 = ref<string>('maz-ui')
|
|
25
|
+
const string2 = ref<string>('màéz-uiok')
|
|
26
|
+
|
|
27
|
+
const { score, isMatching } = useStringMatching(string1, string2)
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<template>
|
|
31
|
+
<MazInput v-model="string1" label="Enter first string" />
|
|
32
|
+
<MazInput v-model="string2" label="Enter second string" />
|
|
33
|
+
|
|
34
|
+
<p>
|
|
35
|
+
<b>isMatching:</b> {{ isMatching }}
|
|
36
|
+
</p>
|
|
37
|
+
<p>
|
|
38
|
+
<b>score:</b> {{ score }}
|
|
39
|
+
</p>
|
|
40
|
+
</template>
|
|
41
|
+
```
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: useSwipe
|
|
3
|
-
description: useSwipe is a Vue composable that simplifies the management of "swipe" interactions on HTML elements.
|
|
2
|
+
title: "useSwipe"
|
|
3
|
+
description: "useSwipe is a Vue composable that simplifies the management of \"swipe\" interactions on HTML elements."
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-swipe"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# useSwipe
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
> useSwipe is a Vue composable that simplifies the management of "swipe" interactions on HTML elements.
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { useSwipe } from 'maz-ui/composables/useSwipe'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-swipe
|
|
9
16
|
|
|
10
17
|
## Introduction
|
|
11
18
|
|
|
@@ -14,9 +21,9 @@ You can use this information to implement specific interactions in your applicat
|
|
|
14
21
|
|
|
15
22
|
It is built on top of [Pointer Events](https://developer.mozilla.org/en-US/docs/Web/API/Pointer_events), so it works with **touch, mouse and pen** out of the box.
|
|
16
23
|
|
|
17
|
-
|
|
24
|
+
**Tip:**
|
|
25
|
+
|
|
18
26
|
For a real-time drag gesture (follow the pointer, snap back, drag-to-dismiss…) rather than discrete directional detection, use [useDrag](./use-drag.md).
|
|
19
|
-
:::
|
|
20
27
|
|
|
21
28
|
## Key Features
|
|
22
29
|
|
|
@@ -31,17 +38,6 @@ For a real-time drag gesture (follow the pointer, snap back, drag-to-dismiss…)
|
|
|
31
38
|
|
|
32
39
|
## Basic Usage
|
|
33
40
|
|
|
34
|
-
<div ref="swipeContainer" class="swipe-container">
|
|
35
|
-
<p>
|
|
36
|
-
Swipe in any direction<br>
|
|
37
|
-
<span class="maz:text-xs maz:text-muted">
|
|
38
|
-
(works with touch, mouse and pen)
|
|
39
|
-
</span>
|
|
40
|
-
<br><br>
|
|
41
|
-
Last swipe direction: {{lastSwipeDirection || 'None'}}
|
|
42
|
-
</p>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
41
|
Here's an example of using the useSwipe composable:
|
|
46
42
|
|
|
47
43
|
```vue
|
|
@@ -81,7 +77,7 @@ onUnmounted(() => {
|
|
|
81
77
|
<div ref="swipeContainer" class="swipe-container">
|
|
82
78
|
<p>
|
|
83
79
|
Swipe in any direction<br>
|
|
84
|
-
<span class="
|
|
80
|
+
<span class="text-sm text-muted">
|
|
85
81
|
(works with touch, mouse and pen)
|
|
86
82
|
</span>
|
|
87
83
|
<br><br>
|
|
@@ -104,55 +100,6 @@ onUnmounted(() => {
|
|
|
104
100
|
</style>
|
|
105
101
|
```
|
|
106
102
|
|
|
107
|
-
<script lang="ts" setup>
|
|
108
|
-
import { useSwipe } from 'maz-ui/composables/useSwipe'
|
|
109
|
-
import { onMounted, onUnmounted, ref } from 'vue'
|
|
110
|
-
|
|
111
|
-
const swipeContainer = ref<HTMLDivElement>()
|
|
112
|
-
|
|
113
|
-
const lastSwipeDirection = ref<string>('None')
|
|
114
|
-
|
|
115
|
-
const { xDiff, yDiff, start, stop } = useSwipe({
|
|
116
|
-
element: swipeContainer,
|
|
117
|
-
onLeft: () => lastSwipeDirection.value = 'Swiped left',
|
|
118
|
-
onRight: () => lastSwipeDirection.value = 'Swiped right',
|
|
119
|
-
onUp: () => lastSwipeDirection.value = 'Swiped up',
|
|
120
|
-
onDown: () => lastSwipeDirection.value = 'Swiped down',
|
|
121
|
-
threshold: 50,
|
|
122
|
-
})
|
|
123
|
-
|
|
124
|
-
onMounted(() => {
|
|
125
|
-
start()
|
|
126
|
-
})
|
|
127
|
-
|
|
128
|
-
onUnmounted(() => {
|
|
129
|
-
stop()
|
|
130
|
-
})
|
|
131
|
-
</script>
|
|
132
|
-
|
|
133
|
-
<style>
|
|
134
|
-
.swipe-container {
|
|
135
|
-
border: 1px solid #e2e2e3;
|
|
136
|
-
border-radius: 10px;
|
|
137
|
-
height: 200px;
|
|
138
|
-
display: flex;
|
|
139
|
-
justify-content: center;
|
|
140
|
-
align-items: center;
|
|
141
|
-
text-align: center;
|
|
142
|
-
font-size: 1.2rem;
|
|
143
|
-
}
|
|
144
|
-
</style>
|
|
145
|
-
|
|
146
|
-
In this example, the `useSwipe` composable is used to detect swiping movements on an HTML element with the `container` class. When a swipe is detected, the horizontal (`xDiff`) and vertical (`yDiff`) coordinates of the movement are displayed.
|
|
147
|
-
|
|
148
|
-
Additionally, callbacks are defined for each swipe direction (`onLeft`, `onRight`, `onUp`, `onDown`), which will be called when the corresponding swipe is detected.
|
|
149
|
-
|
|
150
|
-
The swipe detection threshold is also customized to 50 pixels.
|
|
151
|
-
|
|
152
|
-
## Options
|
|
153
|
-
|
|
154
|
-
`useSwipe` accepts an options object with the following properties:
|
|
155
|
-
|
|
156
103
|
```ts
|
|
157
104
|
interface UseSwipeOptions {
|
|
158
105
|
/**
|
|
@@ -202,10 +149,6 @@ interface UseSwipeOptions {
|
|
|
202
149
|
}
|
|
203
150
|
```
|
|
204
151
|
|
|
205
|
-
## Composable Return
|
|
206
|
-
|
|
207
|
-
`useSwipe` returns an object with the following properties:
|
|
208
|
-
|
|
209
152
|
```ts
|
|
210
153
|
interface UseSwipeReturn {
|
|
211
154
|
/** A function to start listening for swipe events. */
|
|
@@ -226,13 +169,3 @@ interface UseSwipeReturn {
|
|
|
226
169
|
yEnd: Ref<number | undefined>
|
|
227
170
|
}
|
|
228
171
|
```
|
|
229
|
-
|
|
230
|
-
## Notes
|
|
231
|
-
|
|
232
|
-
- Make sure to call the `start()` function to start listening for swipe events.
|
|
233
|
-
- You can call the `stop()` function to stop listening for swipe events.
|
|
234
|
-
- If you use the composable in a Vue component, make sure to call it in the `setup()` and clean up the event listeners in the `onUnmounted()`.
|
|
235
|
-
- The composable automatically handles the addition and removal of event listeners based on the provided options.
|
|
236
|
-
- You can customize the swipe detection threshold by modifying the `threshold` option.
|
|
237
|
-
- If you want to prevent the default behavior of pointer move or mousewheel events, you can set the `preventDefaultOnMove` and `preventDefaultOnMouseWheel` options, respectively.
|
|
238
|
-
- Use the `pointerTypes` option to restrict the gesture to specific input types (e.g. `['touch']` for touch-only).
|
|
@@ -1,11 +1,18 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: useTimer
|
|
3
|
-
description: The useTimer composable manages timeouts. It allows you to start, pause, resume, and stop a timer with reactive updates on the remaining time. Ideal for handling asynchronous operations or user interactions with a specified timeout.
|
|
2
|
+
title: "useTimer"
|
|
3
|
+
description: "The useTimer composable manages timeouts. It allows you to start, pause, resume, and stop a timer with reactive updates on the remaining time. Ideal for handling asynchronous operations or user interactions with a specified timeout."
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-timer"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# useTimer
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
> The useTimer composable manages timeouts. It allows you to start, pause, resume, and stop a timer with reactive updates on the remaining time. Ideal for handling asynchronous operations or user interactions with a specified timeout.
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { useTimer } from 'maz-ui/composables/useTimer'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-timer
|
|
9
16
|
|
|
10
17
|
---
|
|
11
18
|
|
|
@@ -23,40 +30,7 @@ This composable can be used in Vue components to handle timeouts in a flexible a
|
|
|
23
30
|
|
|
24
31
|
## Usage
|
|
25
32
|
|
|
26
|
-
**Remaning time**:
|
|
27
|
-
|
|
28
|
-
<div class="maz:flex maz:items-center maz:gap-2">
|
|
29
|
-
<MazBtn @click="start">
|
|
30
|
-
Start
|
|
31
|
-
</MazBtn>
|
|
32
|
-
<MazBtn color="destructive" @click="stop">
|
|
33
|
-
Stop
|
|
34
|
-
</MazBtn>
|
|
35
|
-
<MazBtn color="warning" @click="pause">
|
|
36
|
-
Pause
|
|
37
|
-
</MazBtn>
|
|
38
|
-
<MazBtn color="secondary" @click="resume">
|
|
39
|
-
Resume
|
|
40
|
-
</MazBtn>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<script lang="ts" setup>
|
|
44
|
-
import { useTimer } from 'maz-ui/composables/useTimer'
|
|
45
|
-
import { useToast } from 'maz-ui/composables/useToast'
|
|
46
|
-
|
|
47
|
-
const toast = useToast()
|
|
48
|
-
|
|
49
|
-
const { start, stop, pause, resume, remainingTime } = useTimer({
|
|
50
|
-
timeout: 4000,
|
|
51
|
-
callback: () => toast.info('Timeout end', {
|
|
52
|
-
button: {
|
|
53
|
-
onClick: start,
|
|
54
|
-
text: 're-start',
|
|
55
|
-
closeToast: true,
|
|
56
|
-
},
|
|
57
|
-
})
|
|
58
|
-
})
|
|
59
|
-
</script>
|
|
33
|
+
**Remaning time**: ms
|
|
60
34
|
|
|
61
35
|
```vue
|
|
62
36
|
<script lang="ts" setup>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: "useToast"
|
|
3
|
+
description: "Vue composable for handling toast plugin in your components"
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-toast"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# useToast
|
|
9
|
+
|
|
10
|
+
> Vue composable for handling toast plugin in your components
|
|
11
|
+
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { useToast } from 'maz-ui/composables/useToast'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt` when `mazUi.plugins.toast` is enabled
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-toast
|
|
16
|
+
|
|
17
|
+
**Warning:**
|
|
18
|
+
|
|
19
|
+
You must install [toast plugin](../plugins/toast.md#install) before use it
|
|
20
|
+
|
|
21
|
+
**Tip:**
|
|
22
|
+
|
|
23
|
+
More info about [toast plugin](../plugins/toast.md) in its documentation
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
```vue
|
|
28
|
+
<script lang="ts" setup>
|
|
29
|
+
import { useToast } from 'maz-ui/composables'
|
|
30
|
+
|
|
31
|
+
const toast = useToast()
|
|
32
|
+
|
|
33
|
+
toast.info('info message', {
|
|
34
|
+
button: {
|
|
35
|
+
onClick: () => toast.success('clicked'),
|
|
36
|
+
text: 'Click me',
|
|
37
|
+
closeToast: true
|
|
38
|
+
}
|
|
39
|
+
})
|
|
40
|
+
toast.success('success message', {
|
|
41
|
+
button: {
|
|
42
|
+
href: '/composables/use-toast',
|
|
43
|
+
text: 'Follow me',
|
|
44
|
+
closeToast: true,
|
|
45
|
+
}
|
|
46
|
+
})
|
|
47
|
+
toast.warning('warning message')
|
|
48
|
+
toast.error('error message')
|
|
49
|
+
</script>
|
|
50
|
+
```
|
|
@@ -1,40 +1,28 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: user-visibility
|
|
3
|
-
description: Plugin to see and manage the user page visibility
|
|
2
|
+
title: "user-visibility"
|
|
3
|
+
description: "Plugin to see and manage the user page visibility"
|
|
4
|
+
package: "maz-ui"
|
|
5
|
+
url: "https://maz-ui.com/composables/use-user-visibility"
|
|
4
6
|
---
|
|
5
7
|
|
|
6
|
-
#
|
|
8
|
+
# user-visibility
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
> Plugin to see and manage the user page visibility
|
|
9
11
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
## Demo
|
|
12
|
+
- Package: `maz-ui`
|
|
13
|
+
- Import: `import { useUserVisibility } from 'maz-ui/composables/useUserVisibility'`
|
|
14
|
+
- Nuxt: auto-imported by `@maz-ui/nuxt`, no import needed in a Nuxt app
|
|
15
|
+
- Web: https://maz-ui.com/composables/use-user-visibility
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
<h3 style="margin-top: 0; margin-bottom: 1rem;">Logs</h3>
|
|
17
|
+
**Tip:**
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
isVisible: {{isVisible}}
|
|
21
|
-
</div>
|
|
22
|
-
</MazCard>
|
|
23
|
-
|
|
24
|
-
<div class="flex items-start gap-05 items-center flex-wrap">
|
|
25
|
-
<MazBtn @click="userVisibility.start()" color="info">
|
|
26
|
-
Start
|
|
27
|
-
</MazBtn>
|
|
19
|
+
Useful to know if the user is displaying your website
|
|
28
20
|
|
|
29
|
-
|
|
30
|
-
Destroy
|
|
31
|
-
</MazBtn>
|
|
21
|
+
## Demo
|
|
32
22
|
|
|
33
|
-
|
|
23
|
+
**Tip:**
|
|
34
24
|
|
|
35
|
-
::: tip
|
|
36
25
|
Switch tabs for a second to see events
|
|
37
|
-
:::
|
|
38
26
|
|
|
39
27
|
## How to use it?
|
|
40
28
|
|
|
@@ -88,36 +76,6 @@ onBeforeUnmount(() => {
|
|
|
88
76
|
</template>
|
|
89
77
|
```
|
|
90
78
|
|
|
91
|
-
<script lang="ts" setup>
|
|
92
|
-
import { onMounted, ref, onBeforeUnmount } from 'vue'
|
|
93
|
-
|
|
94
|
-
import { useUserVisibility } from 'maz-ui/composables/useUserVisibility'
|
|
95
|
-
|
|
96
|
-
const events = ref([])
|
|
97
|
-
|
|
98
|
-
const callback = ({ isVisible }) => {
|
|
99
|
-
console.log('isVisible', isVisible)
|
|
100
|
-
events.value.push({ isVisible: isVisible })
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
const options = {
|
|
104
|
-
immediate: true,
|
|
105
|
-
once: false,
|
|
106
|
-
timeout: 1000,
|
|
107
|
-
ssr: true,
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
const userVisibility = useUserVisibility({ callback, options })
|
|
111
|
-
|
|
112
|
-
onMounted(() => {
|
|
113
|
-
userVisibility.start()
|
|
114
|
-
})
|
|
115
|
-
|
|
116
|
-
onBeforeUnmount(() => {
|
|
117
|
-
userVisibility.destroy()
|
|
118
|
-
})
|
|
119
|
-
</script>
|
|
120
|
-
|
|
121
79
|
## Callback
|
|
122
80
|
|
|
123
81
|
```ts
|