snice 2.5.4 → 3.1.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 +501 -882
- package/bin/templates/base/src/components/counter-button.ts +13 -26
- package/bin/templates/base/src/controllers/counter-controller.ts +3 -3
- package/dist/components/accordion/snice-accordion-item.d.ts +4 -5
- package/dist/components/accordion/snice-accordion-item.js +37 -39
- package/dist/components/accordion/snice-accordion-item.js.map +1 -1
- package/dist/components/accordion/snice-accordion.d.ts +5 -11
- package/dist/components/accordion/snice-accordion.js +51 -52
- package/dist/components/accordion/snice-accordion.js.map +1 -1
- package/dist/components/alert/snice-alert.d.ts +2 -6
- package/dist/components/alert/snice-alert.js +41 -56
- package/dist/components/alert/snice-alert.js.map +1 -1
- package/dist/components/avatar/snice-avatar.d.ts +2 -6
- package/dist/components/avatar/snice-avatar.js +64 -71
- package/dist/components/avatar/snice-avatar.js.map +1 -1
- package/dist/components/badge/snice-badge.d.ts +2 -3
- package/dist/components/badge/snice-badge.js +22 -23
- package/dist/components/badge/snice-badge.js.map +1 -1
- package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +5 -12
- package/dist/components/breadcrumbs/snice-breadcrumbs.js +88 -89
- package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/components/button/snice-button.d.ts +3 -7
- package/dist/components/button/snice-button.js +37 -58
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/components/card/snice-card.d.ts +5 -8
- package/dist/components/card/snice-card.js +71 -56
- package/dist/components/card/snice-card.js.map +1 -1
- package/dist/components/checkbox/snice-checkbox.d.ts +4 -13
- package/dist/components/checkbox/snice-checkbox.js +66 -137
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/chip/snice-chip.d.ts +5 -11
- package/dist/components/chip/snice-chip.js +44 -47
- package/dist/components/chip/snice-chip.js.map +1 -1
- package/dist/components/date-picker/snice-date-picker.d.ts +11 -11
- package/dist/components/date-picker/snice-date-picker.js +134 -133
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/divider/snice-divider.d.ts +2 -4
- package/dist/components/divider/snice-divider.js +14 -22
- package/dist/components/divider/snice-divider.js.map +1 -1
- package/dist/components/drawer/snice-drawer.d.ts +4 -4
- package/dist/components/drawer/snice-drawer.js +25 -19
- package/dist/components/drawer/snice-drawer.js.map +1 -1
- package/dist/components/input/snice-input.d.ts +8 -6
- package/dist/components/input/snice-input.js +122 -105
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/layout/snice-layout-blog.d.ts +4 -4
- package/dist/components/layout/snice-layout-blog.js +21 -19
- package/dist/components/layout/snice-layout-blog.js.map +1 -1
- package/dist/components/layout/snice-layout-card.d.ts +2 -2
- package/dist/components/layout/snice-layout-card.js +16 -9
- package/dist/components/layout/snice-layout-card.js.map +1 -1
- package/dist/components/layout/snice-layout-centered.d.ts +2 -2
- package/dist/components/layout/snice-layout-centered.js +14 -7
- package/dist/components/layout/snice-layout-centered.js.map +1 -1
- package/dist/components/layout/snice-layout-dashboard.d.ts +5 -5
- package/dist/components/layout/snice-layout-dashboard.js +38 -30
- package/dist/components/layout/snice-layout-dashboard.js.map +1 -1
- package/dist/components/layout/snice-layout-fullscreen.d.ts +2 -2
- package/dist/components/layout/snice-layout-fullscreen.js +17 -10
- package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
- package/dist/components/layout/snice-layout-landing.d.ts +4 -4
- package/dist/components/layout/snice-layout-landing.js +21 -19
- package/dist/components/layout/snice-layout-landing.js.map +1 -1
- package/dist/components/layout/snice-layout-minimal.d.ts +2 -2
- package/dist/components/layout/snice-layout-minimal.js +17 -6
- package/dist/components/layout/snice-layout-minimal.js.map +1 -1
- package/dist/components/layout/snice-layout-sidebar.d.ts +5 -4
- package/dist/components/layout/snice-layout-sidebar.js +42 -20
- package/dist/components/layout/snice-layout-sidebar.js.map +1 -1
- package/dist/components/layout/snice-layout-split.d.ts +2 -2
- package/dist/components/layout/snice-layout-split.js +14 -7
- package/dist/components/layout/snice-layout-split.js.map +1 -1
- package/dist/components/layout/snice-layout.d.ts +4 -4
- package/dist/components/layout/snice-layout.js +16 -10
- package/dist/components/layout/snice-layout.js.map +1 -1
- package/dist/components/login/snice-login.d.ts +6 -11
- package/dist/components/login/snice-login.js +97 -71
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/modal/snice-modal.d.ts +5 -9
- package/dist/components/modal/snice-modal.js +47 -78
- package/dist/components/modal/snice-modal.js.map +1 -1
- package/dist/components/nav/snice-nav.d.ts +13 -7
- package/dist/components/nav/snice-nav.js +191 -100
- package/dist/components/nav/snice-nav.js.map +1 -1
- package/dist/components/nav/snice-nav.types.d.ts +3 -3
- package/dist/components/pagination/snice-pagination.d.ts +6 -7
- package/dist/components/pagination/snice-pagination.js +94 -81
- package/dist/components/pagination/snice-pagination.js.map +1 -1
- package/dist/components/progress/snice-progress.d.ts +2 -7
- package/dist/components/progress/snice-progress.js +41 -98
- package/dist/components/progress/snice-progress.js.map +1 -1
- package/dist/components/radio/snice-radio.d.ts +4 -4
- package/dist/components/radio/snice-radio.js +52 -44
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-option.d.ts +2 -1
- package/dist/components/select/snice-option.js +12 -5
- package/dist/components/select/snice-option.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +9 -21
- package/dist/components/select/snice-select.js +98 -170
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/skeleton/snice-skeleton.d.ts +2 -6
- package/dist/components/skeleton/snice-skeleton.js +18 -49
- package/dist/components/skeleton/snice-skeleton.js.map +1 -1
- package/dist/components/snice-cell-BLFVdxPp.js +4 -0
- package/dist/components/snice-cell-BLFVdxPp.js.map +1 -0
- package/dist/components/switch/snice-switch.d.ts +2 -2
- package/dist/components/switch/snice-switch.js +38 -26
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.d.ts +24 -0
- package/dist/components/table/snice-cell-actions.js +149 -0
- package/dist/components/table/snice-cell-actions.js.map +1 -0
- package/dist/components/table/snice-cell-boolean.d.ts +2 -2
- package/dist/components/table/snice-cell-boolean.js +13 -7
- package/dist/components/table/snice-cell-boolean.js.map +1 -1
- package/dist/components/table/snice-cell-color.d.ts +18 -0
- package/dist/components/table/snice-cell-color.js +149 -0
- package/dist/components/table/snice-cell-color.js.map +1 -0
- package/dist/components/table/snice-cell-currency.d.ts +24 -0
- package/dist/components/table/snice-cell-currency.js +235 -0
- package/dist/components/table/snice-cell-currency.js.map +1 -0
- package/dist/components/table/snice-cell-date.d.ts +2 -2
- package/dist/components/table/snice-cell-date.js +14 -8
- package/dist/components/table/snice-cell-date.js.map +1 -1
- package/dist/components/table/snice-cell-duration.d.ts +2 -2
- package/dist/components/table/snice-cell-duration.js +12 -6
- package/dist/components/table/snice-cell-duration.js.map +1 -1
- package/dist/components/table/snice-cell-email.d.ts +15 -0
- package/dist/components/table/snice-cell-email.js +125 -0
- package/dist/components/table/snice-cell-email.js.map +1 -0
- package/dist/components/table/snice-cell-filesize.d.ts +2 -2
- package/dist/components/table/snice-cell-filesize.js +12 -6
- package/dist/components/table/snice-cell-filesize.js.map +1 -1
- package/dist/components/table/snice-cell-image.d.ts +20 -0
- package/dist/components/table/snice-cell-image.js +162 -0
- package/dist/components/table/snice-cell-image.js.map +1 -0
- package/dist/components/table/snice-cell-json.d.ts +20 -0
- package/dist/components/table/snice-cell-json.js +186 -0
- package/dist/components/table/snice-cell-json.js.map +1 -0
- package/dist/components/table/snice-cell-link.d.ts +17 -0
- package/dist/components/table/snice-cell-link.js +142 -0
- package/dist/components/table/snice-cell-link.js.map +1 -0
- package/dist/components/table/snice-cell-location.d.ts +19 -0
- package/dist/components/table/snice-cell-location.js +185 -0
- package/dist/components/table/snice-cell-location.js.map +1 -0
- package/dist/components/table/snice-cell-number.d.ts +2 -2
- package/dist/components/table/snice-cell-number.js +12 -6
- package/dist/components/table/snice-cell-number.js.map +1 -1
- package/dist/components/table/snice-cell-percentage.d.ts +22 -0
- package/dist/components/table/snice-cell-percentage.js +208 -0
- package/dist/components/table/snice-cell-percentage.js.map +1 -0
- package/dist/components/table/snice-cell-phone.d.ts +18 -0
- package/dist/components/table/snice-cell-phone.js +153 -0
- package/dist/components/table/snice-cell-phone.js.map +1 -0
- package/dist/components/table/snice-cell-progress.d.ts +2 -2
- package/dist/components/table/snice-cell-progress.js +12 -6
- package/dist/components/table/snice-cell-progress.js.map +1 -1
- package/dist/components/table/snice-cell-rating.d.ts +2 -2
- package/dist/components/table/snice-cell-rating.js +12 -6
- package/dist/components/table/snice-cell-rating.js.map +1 -1
- package/dist/components/table/snice-cell-sparkline.d.ts +2 -2
- package/dist/components/table/snice-cell-sparkline.js +13 -7
- package/dist/components/table/snice-cell-sparkline.js.map +1 -1
- package/dist/components/table/snice-cell-status.d.ts +17 -0
- package/dist/components/table/snice-cell-status.js +144 -0
- package/dist/components/table/snice-cell-status.js.map +1 -0
- package/dist/components/table/snice-cell-tag.d.ts +16 -0
- package/dist/components/table/snice-cell-tag.js +131 -0
- package/dist/components/table/snice-cell-tag.js.map +1 -0
- package/dist/components/table/snice-cell-text.d.ts +2 -2
- package/dist/components/table/snice-cell-text.js +14 -8
- package/dist/components/table/snice-cell-text.js.map +1 -1
- package/dist/components/table/snice-cell.d.ts +2 -2
- package/dist/components/table/snice-cell.js +12 -6
- package/dist/components/table/snice-cell.js.map +1 -1
- package/dist/components/table/snice-column.d.ts +1 -1
- package/dist/components/table/snice-column.js +6 -3
- package/dist/components/table/snice-column.js.map +1 -1
- package/dist/components/table/snice-header.d.ts +5 -5
- package/dist/components/table/snice-header.js +60 -50
- package/dist/components/table/snice-header.js.map +1 -1
- package/dist/components/table/snice-progress.d.ts +2 -2
- package/dist/components/table/snice-progress.js +18 -11
- package/dist/components/table/snice-progress.js.map +1 -1
- package/dist/components/table/snice-rating.d.ts +2 -2
- package/dist/components/table/snice-rating.js +15 -8
- package/dist/components/table/snice-rating.js.map +1 -1
- package/dist/components/table/snice-row.d.ts +17 -6
- package/dist/components/table/snice-row.js +95 -44
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +18 -10
- package/dist/components/table/snice-table.js +355 -173
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/table/snice-table.types.d.ts +101 -2
- package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
- package/dist/components/tabs/snice-tab-panel.js +12 -6
- package/dist/components/tabs/snice-tab-panel.js.map +1 -1
- package/dist/components/tabs/snice-tab.d.ts +6 -5
- package/dist/components/tabs/snice-tab.js +36 -19
- package/dist/components/tabs/snice-tab.js.map +1 -1
- package/dist/components/tabs/snice-tabs.d.ts +5 -5
- package/dist/components/tabs/snice-tabs.js +38 -28
- package/dist/components/tabs/snice-tabs.js.map +1 -1
- package/dist/components/toast/snice-toast-container.d.ts +7 -7
- package/dist/components/toast/snice-toast-container.js +19 -12
- package/dist/components/toast/snice-toast-container.js.map +1 -1
- package/dist/components/toast/snice-toast.d.ts +3 -15
- package/dist/components/toast/snice-toast.js +49 -108
- package/dist/components/toast/snice-toast.js.map +1 -1
- package/dist/components/tooltip/snice-tooltip.d.ts +2 -2
- package/dist/components/tooltip/snice-tooltip.js +14 -7
- package/dist/components/tooltip/snice-tooltip.js.map +1 -1
- package/dist/context.d.ts +44 -0
- package/dist/element-ready.d.ts +40 -0
- package/dist/{types/element.d.ts → element.d.ts} +2 -8
- package/dist/{types/events.d.ts → events.d.ts} +0 -4
- package/dist/index.cjs +2589 -605
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +21 -0
- package/dist/index.esm.js +2568 -604
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +2589 -605
- package/dist/index.iife.js.map +1 -1
- package/dist/method-decorators.d.ts +121 -0
- package/dist/on.d.ts +59 -0
- package/dist/parts.d.ts +159 -0
- package/dist/render-debug.d.ts +27 -0
- package/dist/render-tracker.d.ts +14 -0
- package/dist/render.d.ts +96 -0
- package/dist/symbols.cjs +163 -0
- package/dist/symbols.cjs.map +1 -1
- package/dist/{types/symbols.d.ts → symbols.d.ts} +22 -0
- package/dist/symbols.esm.js +27 -3
- package/dist/symbols.esm.js.map +1 -1
- package/dist/template.d.ts +100 -0
- package/dist/transitions.cjs +219 -0
- package/dist/transitions.esm.js +2 -2
- package/dist/types/context.d.ts +48 -0
- package/dist/types/element-options.d.ts +26 -0
- package/dist/types/index.d.ts +25 -9
- package/dist/types/nav-context.d.ts +19 -0
- package/dist/types/{types/on-options.d.ts → on-options.d.ts} +2 -0
- package/dist/types/{types/placard.d.ts → placard.d.ts} +0 -1
- package/docs/ai/README.md +17 -0
- package/docs/ai/api.md +175 -0
- package/docs/ai/architecture.md +160 -0
- package/docs/ai/components/accordion.md +174 -0
- package/docs/ai/components/alert.md +77 -0
- package/docs/ai/components/avatar.md +61 -0
- package/docs/ai/components/badge.md +69 -0
- package/docs/ai/components/breadcrumbs.md +74 -0
- package/docs/ai/components/button.md +75 -0
- package/docs/ai/components/card.md +61 -0
- package/docs/ai/components/checkbox.md +74 -0
- package/docs/ai/components/chip.md +73 -0
- package/docs/ai/components/date-picker.md +75 -0
- package/docs/ai/components/divider.md +66 -0
- package/docs/ai/components/drawer.md +80 -0
- package/docs/ai/components/input.md +111 -0
- package/docs/ai/components/login.md +109 -0
- package/docs/ai/components/modal.md +67 -0
- package/docs/ai/components/nav.md +76 -0
- package/docs/ai/components/pagination.md +55 -0
- package/docs/ai/components/progress.md +72 -0
- package/docs/ai/components/radio.md +79 -0
- package/docs/ai/components/select.md +92 -0
- package/docs/ai/components/skeleton.md +57 -0
- package/docs/ai/components/switch.md +53 -0
- package/docs/ai/components/table.md +227 -0
- package/docs/ai/components/tabs.md +83 -0
- package/docs/ai/components/toast.md +140 -0
- package/docs/ai/components/tooltip.md +146 -0
- package/docs/ai/patterns.md +244 -0
- package/docs/components/accordion.md +558 -0
- package/docs/components/drawer.md +602 -0
- package/docs/components/modal.md +558 -0
- package/docs/components/nav.md +239 -0
- package/docs/components/pagination.md +289 -0
- package/docs/components/select.md +599 -0
- package/docs/components/switch.md +354 -0
- package/docs/components/tabs.md +546 -0
- package/docs/components/toast.md +506 -0
- package/docs/components/tooltip.md +523 -0
- package/docs/controllers.md +744 -0
- package/docs/elements.md +855 -0
- package/docs/events.md +807 -0
- package/docs/migration-v2-to-v3.md +569 -0
- package/docs/observe.md +588 -0
- package/docs/placards.md +401 -0
- package/docs/request-response.md +852 -0
- package/docs/routing.md +1186 -0
- package/package.json +10 -11
- package/dist/components/snice-cell-C9N6yGxQ.js +0 -4
- package/dist/components/snice-cell-C9N6yGxQ.js.map +0 -1
- package/dist/types/types/index.d.ts +0 -23
- /package/dist/{types/controller.d.ts → controller.d.ts} +0 -0
- /package/dist/{types/global.d.ts → global.d.ts} +0 -0
- /package/dist/{types/observe.d.ts → observe.d.ts} +0 -0
- /package/dist/{types/request-response.d.ts → request-response.d.ts} +0 -0
- /package/dist/{types/router.d.ts → router.d.ts} +0 -0
- /package/dist/{types/testing.d.ts → testing.d.ts} +0 -0
- /package/dist/{types/transitions.d.ts → transitions.d.ts} +0 -0
- /package/dist/types/{types/adopted-options.d.ts → adopted-options.d.ts} +0 -0
- /package/dist/types/{types/app-context.d.ts → app-context.d.ts} +0 -0
- /package/dist/types/{types/dispatch-options.d.ts → dispatch-options.d.ts} +0 -0
- /package/dist/types/{types/guard.d.ts → guard.d.ts} +0 -0
- /package/dist/types/{types/i-controller.d.ts → i-controller.d.ts} +0 -0
- /package/dist/types/{types/moved-options.d.ts → moved-options.d.ts} +0 -0
- /package/dist/types/{types/observe-options.d.ts → observe-options.d.ts} +0 -0
- /package/dist/types/{types/page-options.d.ts → page-options.d.ts} +0 -0
- /package/dist/types/{types/part-options.d.ts → part-options.d.ts} +0 -0
- /package/dist/types/{types/property-converter.d.ts → property-converter.d.ts} +0 -0
- /package/dist/types/{types/property-options.d.ts → property-options.d.ts} +0 -0
- /package/dist/types/{types/query-options.d.ts → query-options.d.ts} +0 -0
- /package/dist/types/{types/request-options.d.ts → request-options.d.ts} +0 -0
- /package/dist/types/{types/respond-options.d.ts → respond-options.d.ts} +0 -0
- /package/dist/types/{types/route-params.d.ts → route-params.d.ts} +0 -0
- /package/dist/types/{types/router-instance.d.ts → router-instance.d.ts} +0 -0
- /package/dist/types/{types/router-options.d.ts → router-options.d.ts} +0 -0
- /package/dist/types/{types/simple-array.d.ts → simple-array.d.ts} +0 -0
- /package/dist/types/{types/snice-element.d.ts → snice-element.d.ts} +0 -0
- /package/dist/types/{types/snice-global.d.ts → snice-global.d.ts} +0 -0
- /package/dist/types/{types/transition.d.ts → transition.d.ts} +0 -0
- /package/dist/{types/utils.d.ts → utils.d.ts} +0 -0
|
@@ -0,0 +1,523 @@
|
|
|
1
|
+
# Tooltip Component
|
|
2
|
+
|
|
3
|
+
The `<snice-tooltip>` component provides contextual information when users interact with an element. Tooltips appear on hover, click, or focus and can be positioned in 13 different locations relative to the trigger element.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
- [Basic Usage](#basic-usage)
|
|
7
|
+
- [Properties](#properties)
|
|
8
|
+
- [Methods](#methods)
|
|
9
|
+
- [Positions](#positions)
|
|
10
|
+
- [Triggers](#triggers)
|
|
11
|
+
- [Examples](#examples)
|
|
12
|
+
|
|
13
|
+
## Basic Usage
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<snice-tooltip content="This is a tooltip">
|
|
17
|
+
<button>Hover me</button>
|
|
18
|
+
</snice-tooltip>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
import 'snice/components/tooltip/snice-tooltip';
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Properties
|
|
26
|
+
|
|
27
|
+
| Property | Type | Default | Description |
|
|
28
|
+
|----------|------|---------|-------------|
|
|
29
|
+
| `content` | `string` | `''` | Tooltip text content |
|
|
30
|
+
| `position` | `TooltipPosition` | `'top'` | Position relative to trigger |
|
|
31
|
+
| `trigger` | `TooltipTrigger` | `'hover'` | Interaction that shows tooltip |
|
|
32
|
+
| `delay` | `number` | `0` | Show delay in milliseconds |
|
|
33
|
+
| `hideDelay` | `number` | `0` | Hide delay in milliseconds |
|
|
34
|
+
| `offset` | `number` | `12` | Distance from trigger in pixels |
|
|
35
|
+
| `arrow` | `boolean` | `true` | Show arrow indicator |
|
|
36
|
+
| `open` | `boolean` | `false` | Visibility state (manual trigger) |
|
|
37
|
+
| `maxWidth` | `number` | `250` | Maximum width in pixels |
|
|
38
|
+
| `zIndex` | `number` | `10000` | Stacking order |
|
|
39
|
+
|
|
40
|
+
### TooltipPosition
|
|
41
|
+
|
|
42
|
+
**Main positions:**
|
|
43
|
+
- `'top'` - Centered above
|
|
44
|
+
- `'bottom'` - Centered below
|
|
45
|
+
- `'left'` - Centered to the left
|
|
46
|
+
- `'right'` - Centered to the right
|
|
47
|
+
|
|
48
|
+
**Aligned positions:**
|
|
49
|
+
- `'top-start'` - Above, left-aligned
|
|
50
|
+
- `'top-end'` - Above, right-aligned
|
|
51
|
+
- `'bottom-start'` - Below, left-aligned
|
|
52
|
+
- `'bottom-end'` - Below, right-aligned
|
|
53
|
+
- `'left-start'` - Left, top-aligned
|
|
54
|
+
- `'left-end'` - Left, bottom-aligned
|
|
55
|
+
- `'right-start'` - Right, top-aligned
|
|
56
|
+
- `'right-end'` - Right, bottom-aligned
|
|
57
|
+
|
|
58
|
+
### TooltipTrigger
|
|
59
|
+
|
|
60
|
+
- `'hover'` - Show on mouse enter, hide on mouse leave
|
|
61
|
+
- `'click'` - Toggle on click, hide on click outside
|
|
62
|
+
- `'focus'` - Show on focus, hide on blur
|
|
63
|
+
- `'manual'` - Control via `open` property
|
|
64
|
+
|
|
65
|
+
## Methods
|
|
66
|
+
|
|
67
|
+
### `show(): void`
|
|
68
|
+
Show the tooltip.
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
const tooltip = document.querySelector('snice-tooltip');
|
|
72
|
+
tooltip.show();
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
### `hide(): void`
|
|
76
|
+
Hide the tooltip.
|
|
77
|
+
|
|
78
|
+
```typescript
|
|
79
|
+
tooltip.hide();
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### `toggle(): void`
|
|
83
|
+
Toggle tooltip visibility.
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
tooltip.toggle();
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### `updatePosition(): void`
|
|
90
|
+
Recalculate and update tooltip position. Useful when trigger element moves or resizes.
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
tooltip.updatePosition();
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Positions
|
|
97
|
+
|
|
98
|
+
### Basic Positions
|
|
99
|
+
|
|
100
|
+
```html
|
|
101
|
+
<!-- Top -->
|
|
102
|
+
<snice-tooltip content="Tooltip above" position="top">
|
|
103
|
+
<button>Top</button>
|
|
104
|
+
</snice-tooltip>
|
|
105
|
+
|
|
106
|
+
<!-- Bottom -->
|
|
107
|
+
<snice-tooltip content="Tooltip below" position="bottom">
|
|
108
|
+
<button>Bottom</button>
|
|
109
|
+
</snice-tooltip>
|
|
110
|
+
|
|
111
|
+
<!-- Left -->
|
|
112
|
+
<snice-tooltip content="Tooltip on left" position="left">
|
|
113
|
+
<button>Left</button>
|
|
114
|
+
</snice-tooltip>
|
|
115
|
+
|
|
116
|
+
<!-- Right -->
|
|
117
|
+
<snice-tooltip content="Tooltip on right" position="right">
|
|
118
|
+
<button>Right</button>
|
|
119
|
+
</snice-tooltip>
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Aligned Positions
|
|
123
|
+
|
|
124
|
+
```html
|
|
125
|
+
<!-- Top-start (left-aligned) -->
|
|
126
|
+
<snice-tooltip content="Left aligned" position="top-start">
|
|
127
|
+
<button>Top Start</button>
|
|
128
|
+
</snice-tooltip>
|
|
129
|
+
|
|
130
|
+
<!-- Top-end (right-aligned) -->
|
|
131
|
+
<snice-tooltip content="Right aligned" position="top-end">
|
|
132
|
+
<button>Top End</button>
|
|
133
|
+
</snice-tooltip>
|
|
134
|
+
|
|
135
|
+
<!-- Bottom-start -->
|
|
136
|
+
<snice-tooltip content="Left aligned" position="bottom-start">
|
|
137
|
+
<button>Bottom Start</button>
|
|
138
|
+
</snice-tooltip>
|
|
139
|
+
|
|
140
|
+
<!-- And so on... -->
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Triggers
|
|
144
|
+
|
|
145
|
+
### Hover (Default)
|
|
146
|
+
|
|
147
|
+
```html
|
|
148
|
+
<snice-tooltip content="Appears on hover">
|
|
149
|
+
<button>Hover me</button>
|
|
150
|
+
</snice-tooltip>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Click
|
|
154
|
+
|
|
155
|
+
```html
|
|
156
|
+
<snice-tooltip content="Click to toggle" trigger="click">
|
|
157
|
+
<button>Click me</button>
|
|
158
|
+
</snice-tooltip>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Focus
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<snice-tooltip content="Focus the input" trigger="focus">
|
|
165
|
+
<input type="text" placeholder="Focus me">
|
|
166
|
+
</snice-tooltip>
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Manual
|
|
170
|
+
|
|
171
|
+
```html
|
|
172
|
+
<snice-tooltip id="manualTip" content="Manually controlled" trigger="manual">
|
|
173
|
+
<span>Trigger element</span>
|
|
174
|
+
</snice-tooltip>
|
|
175
|
+
|
|
176
|
+
<button onclick="document.querySelector('#manualTip').open = true">
|
|
177
|
+
Show
|
|
178
|
+
</button>
|
|
179
|
+
<button onclick="document.querySelector('#manualTip').open = false">
|
|
180
|
+
Hide
|
|
181
|
+
</button>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
## Examples
|
|
185
|
+
|
|
186
|
+
### Icon with Tooltip
|
|
187
|
+
|
|
188
|
+
```html
|
|
189
|
+
<snice-tooltip content="Save your changes">
|
|
190
|
+
<button>
|
|
191
|
+
<svg width="16" height="16" viewBox="0 0 16 16">
|
|
192
|
+
<path d="M8 2l6 12H2z"/>
|
|
193
|
+
</svg>
|
|
194
|
+
</button>
|
|
195
|
+
</snice-tooltip>
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### With Delay
|
|
199
|
+
|
|
200
|
+
```html
|
|
201
|
+
<!-- Show after 500ms, hide after 200ms -->
|
|
202
|
+
<snice-tooltip
|
|
203
|
+
content="Delayed tooltip"
|
|
204
|
+
delay="500"
|
|
205
|
+
hide-delay="200">
|
|
206
|
+
<button>Hover and wait</button>
|
|
207
|
+
</snice-tooltip>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Without Arrow
|
|
211
|
+
|
|
212
|
+
```html
|
|
213
|
+
<snice-tooltip content="No arrow" arrow="false">
|
|
214
|
+
<button>No arrow</button>
|
|
215
|
+
</snice-tooltip>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Custom Width
|
|
219
|
+
|
|
220
|
+
```html
|
|
221
|
+
<snice-tooltip
|
|
222
|
+
content="This is a longer tooltip that needs more space"
|
|
223
|
+
max-width="400">
|
|
224
|
+
<button>Wide tooltip</button>
|
|
225
|
+
</snice-tooltip>
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Custom Offset
|
|
229
|
+
|
|
230
|
+
```html
|
|
231
|
+
<!-- Further away from trigger -->
|
|
232
|
+
<snice-tooltip content="Far away" offset="30">
|
|
233
|
+
<button>More space</button>
|
|
234
|
+
</snice-tooltip>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Help Icon
|
|
238
|
+
|
|
239
|
+
```html
|
|
240
|
+
<style>
|
|
241
|
+
.help-icon {
|
|
242
|
+
display: inline-flex;
|
|
243
|
+
align-items: center;
|
|
244
|
+
justify-content: center;
|
|
245
|
+
width: 18px;
|
|
246
|
+
height: 18px;
|
|
247
|
+
border-radius: 50%;
|
|
248
|
+
background: #3b82f6;
|
|
249
|
+
color: white;
|
|
250
|
+
font-size: 12px;
|
|
251
|
+
cursor: help;
|
|
252
|
+
}
|
|
253
|
+
</style>
|
|
254
|
+
|
|
255
|
+
<div style="display: flex; align-items: center; gap: 8px;">
|
|
256
|
+
<label>Password</label>
|
|
257
|
+
<snice-tooltip content="Must be at least 8 characters">
|
|
258
|
+
<span class="help-icon">?</span>
|
|
259
|
+
</snice-tooltip>
|
|
260
|
+
</div>
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Disabled Button Explanation
|
|
264
|
+
|
|
265
|
+
```html
|
|
266
|
+
<snice-tooltip content="Please fill out the form first">
|
|
267
|
+
<span>
|
|
268
|
+
<button disabled>Submit</button>
|
|
269
|
+
</span>
|
|
270
|
+
</snice-tooltip>
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Note:** Wrap disabled buttons in a span since they don't trigger mouse events.
|
|
274
|
+
|
|
275
|
+
### Truncated Text
|
|
276
|
+
|
|
277
|
+
```html
|
|
278
|
+
<style>
|
|
279
|
+
.truncated {
|
|
280
|
+
max-width: 200px;
|
|
281
|
+
white-space: nowrap;
|
|
282
|
+
overflow: hidden;
|
|
283
|
+
text-overflow: ellipsis;
|
|
284
|
+
}
|
|
285
|
+
</style>
|
|
286
|
+
|
|
287
|
+
<snice-tooltip content="This is the full text that gets truncated">
|
|
288
|
+
<div class="truncated">
|
|
289
|
+
This is the full text that gets truncated
|
|
290
|
+
</div>
|
|
291
|
+
</snice-tooltip>
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Form Field Help
|
|
295
|
+
|
|
296
|
+
```html
|
|
297
|
+
<div style="display: flex; flex-direction: column; gap: 8px;">
|
|
298
|
+
<div style="display: flex; align-items: center; gap: 8px;">
|
|
299
|
+
<label for="email">Email</label>
|
|
300
|
+
<snice-tooltip content="We'll never share your email with anyone" position="right">
|
|
301
|
+
<span style="color: #666; cursor: help;">ℹ️</span>
|
|
302
|
+
</snice-tooltip>
|
|
303
|
+
</div>
|
|
304
|
+
<input id="email" type="email">
|
|
305
|
+
</div>
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Toolbar Buttons
|
|
309
|
+
|
|
310
|
+
```html
|
|
311
|
+
<style>
|
|
312
|
+
.toolbar {
|
|
313
|
+
display: flex;
|
|
314
|
+
gap: 4px;
|
|
315
|
+
padding: 8px;
|
|
316
|
+
background: #f3f4f6;
|
|
317
|
+
border-radius: 8px;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.toolbar button {
|
|
321
|
+
padding: 8px;
|
|
322
|
+
border: none;
|
|
323
|
+
background: transparent;
|
|
324
|
+
cursor: pointer;
|
|
325
|
+
border-radius: 4px;
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
.toolbar button:hover {
|
|
329
|
+
background: white;
|
|
330
|
+
}
|
|
331
|
+
</style>
|
|
332
|
+
|
|
333
|
+
<div class="toolbar">
|
|
334
|
+
<snice-tooltip content="Bold (Ctrl+B)" position="bottom">
|
|
335
|
+
<button><b>B</b></button>
|
|
336
|
+
</snice-tooltip>
|
|
337
|
+
|
|
338
|
+
<snice-tooltip content="Italic (Ctrl+I)" position="bottom">
|
|
339
|
+
<button><i>I</i></button>
|
|
340
|
+
</snice-tooltip>
|
|
341
|
+
|
|
342
|
+
<snice-tooltip content="Underline (Ctrl+U)" position="bottom">
|
|
343
|
+
<button><u>U</u></button>
|
|
344
|
+
</snice-tooltip>
|
|
345
|
+
</div>
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### Chart Data Points
|
|
349
|
+
|
|
350
|
+
```html
|
|
351
|
+
<style>
|
|
352
|
+
.chart-point {
|
|
353
|
+
width: 12px;
|
|
354
|
+
height: 12px;
|
|
355
|
+
border-radius: 50%;
|
|
356
|
+
background: #3b82f6;
|
|
357
|
+
cursor: pointer;
|
|
358
|
+
}
|
|
359
|
+
</style>
|
|
360
|
+
|
|
361
|
+
<snice-tooltip content="Sales: $12,345" position="top">
|
|
362
|
+
<div class="chart-point"></div>
|
|
363
|
+
</snice-tooltip>
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### Status Indicators
|
|
367
|
+
|
|
368
|
+
```html
|
|
369
|
+
<style>
|
|
370
|
+
.status {
|
|
371
|
+
display: inline-flex;
|
|
372
|
+
align-items: center;
|
|
373
|
+
gap: 6px;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
.status-dot {
|
|
377
|
+
width: 8px;
|
|
378
|
+
height: 8px;
|
|
379
|
+
border-radius: 50%;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.status-dot.online { background: #10b981; }
|
|
383
|
+
.status-dot.offline { background: #ef4444; }
|
|
384
|
+
</style>
|
|
385
|
+
|
|
386
|
+
<snice-tooltip content="Server is online and responding" position="right">
|
|
387
|
+
<div class="status">
|
|
388
|
+
<span class="status-dot online"></span>
|
|
389
|
+
<span>Server Status</span>
|
|
390
|
+
</div>
|
|
391
|
+
</snice-tooltip>
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
### Programmatic Control
|
|
395
|
+
|
|
396
|
+
```typescript
|
|
397
|
+
import type { SniceTooltipElement } from 'snice/components/tooltip/snice-tooltip.types';
|
|
398
|
+
|
|
399
|
+
const tooltip = document.querySelector<SniceTooltipElement>('snice-tooltip');
|
|
400
|
+
|
|
401
|
+
// Show/hide programmatically
|
|
402
|
+
tooltip.show();
|
|
403
|
+
setTimeout(() => tooltip.hide(), 2000);
|
|
404
|
+
|
|
405
|
+
// Toggle
|
|
406
|
+
tooltip.toggle();
|
|
407
|
+
|
|
408
|
+
// Update position after layout changes
|
|
409
|
+
window.addEventListener('resize', () => {
|
|
410
|
+
tooltip.updatePosition();
|
|
411
|
+
});
|
|
412
|
+
|
|
413
|
+
// Change properties
|
|
414
|
+
tooltip.content = 'Updated content';
|
|
415
|
+
tooltip.position = 'bottom';
|
|
416
|
+
tooltip.arrow = false;
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Dynamic Content
|
|
420
|
+
|
|
421
|
+
```html
|
|
422
|
+
<snice-tooltip id="dynamicTip" content="Loading..." trigger="manual">
|
|
423
|
+
<button id="fetchBtn">Fetch Data</button>
|
|
424
|
+
</snice-tooltip>
|
|
425
|
+
|
|
426
|
+
<script type="module">
|
|
427
|
+
import 'snice/components/tooltip/snice-tooltip';
|
|
428
|
+
|
|
429
|
+
const btn = document.querySelector('#fetchBtn');
|
|
430
|
+
const tooltip = document.querySelector('#dynamicTip');
|
|
431
|
+
|
|
432
|
+
btn.addEventListener('click', async () => {
|
|
433
|
+
tooltip.content = 'Loading...';
|
|
434
|
+
tooltip.open = true;
|
|
435
|
+
|
|
436
|
+
const data = await fetch('/api/data').then(r => r.json());
|
|
437
|
+
|
|
438
|
+
tooltip.content = `Loaded ${data.count} items`;
|
|
439
|
+
|
|
440
|
+
setTimeout(() => {
|
|
441
|
+
tooltip.open = false;
|
|
442
|
+
}, 2000);
|
|
443
|
+
});
|
|
444
|
+
</script>
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
## Smart Positioning
|
|
448
|
+
|
|
449
|
+
Tooltips automatically reposition themselves if they would overflow the viewport:
|
|
450
|
+
|
|
451
|
+
```html
|
|
452
|
+
<!-- Will flip to bottom if no room above -->
|
|
453
|
+
<snice-tooltip content="Smart positioning" position="top">
|
|
454
|
+
<button>Near top edge</button>
|
|
455
|
+
</snice-tooltip>
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
To disable auto-repositioning:
|
|
459
|
+
|
|
460
|
+
```html
|
|
461
|
+
<snice-tooltip
|
|
462
|
+
content="Stays on top"
|
|
463
|
+
position="top"
|
|
464
|
+
strict-positioning>
|
|
465
|
+
<button>Fixed position</button>
|
|
466
|
+
</snice-tooltip>
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
## Accessibility
|
|
470
|
+
|
|
471
|
+
- **role="tooltip"**: Proper ARIA role on tooltip element
|
|
472
|
+
- **Keyboard accessible**: Focus trigger works with keyboard navigation
|
|
473
|
+
- **Screen reader friendly**: Content announced when tooltip appears
|
|
474
|
+
- **Visible focus**: Trigger elements maintain focus indicators
|
|
475
|
+
- **Disabled elements**: Wrap in span to enable tooltips on disabled buttons
|
|
476
|
+
|
|
477
|
+
## Browser Support
|
|
478
|
+
|
|
479
|
+
- Modern browsers (Chrome, Firefox, Safari, Edge)
|
|
480
|
+
- Requires Custom Elements v1 and Shadow DOM support
|
|
481
|
+
|
|
482
|
+
## Best Practices
|
|
483
|
+
|
|
484
|
+
1. **Keep content brief**: Tooltips should provide quick, scannable information
|
|
485
|
+
2. **Don't repeat visible text**: Add value with additional context
|
|
486
|
+
3. **Avoid interactive content**: Tooltips should be informational only
|
|
487
|
+
4. **Use consistent triggers**: Stick to one trigger type per interface
|
|
488
|
+
5. **Position appropriately**: Consider available screen space
|
|
489
|
+
6. **Test on mobile**: Hover doesn't work on touch devices
|
|
490
|
+
7. **Wrap disabled elements**: Disabled elements don't fire events
|
|
491
|
+
8. **Provide alternatives**: Don't rely solely on tooltips for critical info
|
|
492
|
+
|
|
493
|
+
## Common Patterns
|
|
494
|
+
|
|
495
|
+
### Help Text Pattern
|
|
496
|
+
```html
|
|
497
|
+
<snice-tooltip content="Additional context">
|
|
498
|
+
<span class="help-icon">?</span>
|
|
499
|
+
</snice-tooltip>
|
|
500
|
+
```
|
|
501
|
+
|
|
502
|
+
### Truncation Pattern
|
|
503
|
+
```html
|
|
504
|
+
<snice-tooltip content="Full text">
|
|
505
|
+
<div class="truncated">Full text</div>
|
|
506
|
+
</snice-tooltip>
|
|
507
|
+
```
|
|
508
|
+
|
|
509
|
+
### Icon Button Pattern
|
|
510
|
+
```html
|
|
511
|
+
<snice-tooltip content="Action description">
|
|
512
|
+
<button aria-label="Action description">
|
|
513
|
+
<icon>
|
|
514
|
+
</button>
|
|
515
|
+
</snice-tooltip>
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
### Status Pattern
|
|
519
|
+
```html
|
|
520
|
+
<snice-tooltip content="Detailed status">
|
|
521
|
+
<span class="status-indicator"></span>
|
|
522
|
+
</snice-tooltip>
|
|
523
|
+
```
|