snice 3.1.0 → 3.3.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 +90 -41
- package/dist/components/accordion/snice-accordion-item.d.ts +2 -2
- package/dist/components/accordion/snice-accordion-item.js +9 -9
- package/dist/components/accordion/snice-accordion-item.js.map +1 -1
- package/dist/components/accordion/snice-accordion.d.ts +2 -2
- package/dist/components/accordion/snice-accordion.js +9 -9
- package/dist/components/accordion/snice-accordion.js.map +1 -1
- package/dist/components/actions/snice-actions.d.ts +28 -0
- package/dist/components/actions/snice-actions.js +220 -0
- package/dist/components/actions/snice-actions.js.map +1 -0
- package/dist/components/actions/snice-actions.types.d.ts +27 -0
- package/dist/components/alert/snice-alert.d.ts +2 -2
- package/dist/components/alert/snice-alert.js +9 -9
- package/dist/components/alert/snice-alert.js.map +1 -1
- package/dist/components/audio-recorder/snice-audio-recorder.d.ts +58 -0
- package/dist/components/audio-recorder/snice-audio-recorder.js +413 -0
- package/dist/components/audio-recorder/snice-audio-recorder.js.map +1 -0
- package/dist/components/audio-recorder/snice-audio-recorder.types.d.ts +28 -0
- package/dist/components/avatar/snice-avatar.d.ts +2 -2
- package/dist/components/avatar/snice-avatar.js +9 -9
- package/dist/components/avatar/snice-avatar.js.map +1 -1
- package/dist/components/badge/snice-badge.d.ts +2 -2
- package/dist/components/badge/snice-badge.js +10 -10
- package/dist/components/badge/snice-badge.js.map +1 -1
- package/dist/components/banner/snice-banner.d.ts +22 -0
- package/dist/components/banner/snice-banner.js +180 -0
- package/dist/components/banner/snice-banner.js.map +1 -0
- package/dist/components/banner/snice-banner.types.d.ts +14 -0
- package/dist/components/breadcrumbs/snice-breadcrumbs.d.ts +2 -2
- package/dist/components/breadcrumbs/snice-breadcrumbs.js +9 -9
- package/dist/components/breadcrumbs/snice-breadcrumbs.js.map +1 -1
- package/dist/components/button/snice-button.d.ts +2 -2
- package/dist/components/button/snice-button.js +9 -9
- package/dist/components/button/snice-button.js.map +1 -1
- package/dist/components/calendar/snice-calendar.d.ts +46 -0
- package/dist/components/calendar/snice-calendar.js +294 -0
- package/dist/components/calendar/snice-calendar.js.map +1 -0
- package/dist/components/calendar/snice-calendar.types.d.ts +34 -0
- package/dist/components/camera/snice-camera.d.ts +39 -0
- package/dist/components/camera/snice-camera.js +286 -0
- package/dist/components/camera/snice-camera.js.map +1 -0
- package/dist/components/camera/snice-camera.types.d.ts +28 -0
- package/dist/components/card/snice-card.d.ts +2 -2
- package/dist/components/card/snice-card.js +9 -9
- package/dist/components/card/snice-card.js.map +1 -1
- package/dist/components/carousel/snice-carousel.d.ts +32 -0
- package/dist/components/carousel/snice-carousel.js +279 -0
- package/dist/components/carousel/snice-carousel.js.map +1 -0
- package/dist/components/carousel/snice-carousel.types.d.ts +22 -0
- package/dist/components/chart/snice-chart.d.ts +73 -0
- package/dist/components/chart/snice-chart.js +940 -0
- package/dist/components/chart/snice-chart.js.map +1 -0
- package/dist/components/chart/snice-chart.types.d.ts +71 -0
- package/dist/components/chat/snice-chat.d.ts +98 -0
- package/dist/components/chat/snice-chat.js +589 -0
- package/dist/components/chat/snice-chat.js.map +1 -0
- package/dist/components/chat/snice-chat.types.d.ts +141 -0
- package/dist/components/checkbox/snice-checkbox.d.ts +2 -2
- package/dist/components/checkbox/snice-checkbox.js +9 -9
- package/dist/components/checkbox/snice-checkbox.js.map +1 -1
- package/dist/components/chip/snice-chip.d.ts +2 -2
- package/dist/components/chip/snice-chip.js +9 -9
- package/dist/components/chip/snice-chip.js.map +1 -1
- package/dist/components/code-block/snice-code-block.d.ts +15 -0
- package/dist/components/code-block/snice-code-block.js +141 -0
- package/dist/components/code-block/snice-code-block.js.map +1 -0
- package/dist/components/code-block/snice-code-block.types.d.ts +15 -0
- package/dist/components/color-display/snice-color-display.d.ts +14 -0
- package/dist/components/color-display/snice-color-display.js +151 -0
- package/dist/components/color-display/snice-color-display.js.map +1 -0
- package/dist/components/color-display/snice-color-display.types.d.ts +10 -0
- package/dist/components/color-picker/snice-color-picker.d.ts +50 -0
- package/dist/components/color-picker/snice-color-picker.js +489 -0
- package/dist/components/color-picker/snice-color-picker.js.map +1 -0
- package/dist/components/color-picker/snice-color-picker.types.d.ts +19 -0
- package/dist/components/command-palette/snice-command-palette.d.ts +47 -0
- package/dist/components/command-palette/snice-command-palette.js +428 -0
- package/dist/components/command-palette/snice-command-palette.js.map +1 -0
- package/dist/components/command-palette/snice-command-palette.types.d.ts +49 -0
- package/dist/components/date-picker/snice-date-picker.d.ts +2 -2
- package/dist/components/date-picker/snice-date-picker.js +10 -10
- package/dist/components/date-picker/snice-date-picker.js.map +1 -1
- package/dist/components/divider/snice-divider.d.ts +2 -2
- package/dist/components/divider/snice-divider.js +9 -9
- package/dist/components/divider/snice-divider.js.map +1 -1
- package/dist/components/doc/snice-doc.d.ts +93 -0
- package/dist/components/doc/snice-doc.js +626 -0
- package/dist/components/doc/snice-doc.js.map +1 -0
- package/dist/components/doc/snice-doc.types.d.ts +118 -0
- package/dist/components/draw/snice-draw.d.ts +71 -0
- package/dist/components/draw/snice-draw.js +709 -0
- package/dist/components/draw/snice-draw.js.map +1 -0
- package/dist/components/draw/snice-draw.types.d.ts +41 -0
- package/dist/components/drawer/snice-drawer.d.ts +2 -2
- package/dist/components/drawer/snice-drawer.js +9 -9
- package/dist/components/drawer/snice-drawer.js.map +1 -1
- package/dist/components/empty-state/snice-empty-state.d.ts +13 -0
- package/dist/components/empty-state/snice-empty-state.js +121 -0
- package/dist/components/empty-state/snice-empty-state.js.map +1 -0
- package/dist/components/empty-state/snice-empty-state.types.d.ts +9 -0
- package/dist/components/file-upload/snice-file-upload.d.ts +44 -0
- package/dist/components/file-upload/snice-file-upload.js +387 -0
- package/dist/components/file-upload/snice-file-upload.js.map +1 -0
- package/dist/components/file-upload/snice-file-upload.types.d.ts +22 -0
- package/dist/components/gantt/snice-gantt.d.ts +29 -0
- package/dist/components/gantt/snice-gantt.js +268 -0
- package/dist/components/gantt/snice-gantt.js.map +1 -0
- package/dist/components/gantt/snice-gantt.types.d.ts +23 -0
- package/dist/components/image/snice-image.d.ts +22 -0
- package/dist/components/image/snice-image.js +201 -0
- package/dist/components/image/snice-image.js.map +1 -0
- package/dist/components/image/snice-image.types.d.ts +17 -0
- package/dist/components/input/snice-input.d.ts +2 -2
- package/dist/components/input/snice-input.js +9 -9
- package/dist/components/input/snice-input.js.map +1 -1
- package/dist/components/kanban/snice-kanban.d.ts +31 -0
- package/dist/components/kanban/snice-kanban.js +243 -0
- package/dist/components/kanban/snice-kanban.js.map +1 -0
- package/dist/components/kanban/snice-kanban.types.d.ts +29 -0
- package/dist/components/kpi/snice-kpi.d.ts +16 -0
- package/dist/components/kpi/snice-kpi.js +162 -0
- package/dist/components/kpi/snice-kpi.js.map +1 -0
- package/dist/components/kpi/snice-kpi.types.d.ts +12 -0
- package/dist/components/layout/snice-layout-blog.d.ts +2 -2
- package/dist/components/layout/snice-layout-blog.js +9 -9
- 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 +9 -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 +9 -9
- package/dist/components/layout/snice-layout-centered.js.map +1 -1
- package/dist/components/layout/snice-layout-dashboard.d.ts +2 -2
- package/dist/components/layout/snice-layout-dashboard.js +9 -9
- 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 +9 -9
- package/dist/components/layout/snice-layout-fullscreen.js.map +1 -1
- package/dist/components/layout/snice-layout-landing.d.ts +2 -2
- package/dist/components/layout/snice-layout-landing.js +9 -9
- 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 +9 -9
- package/dist/components/layout/snice-layout-minimal.js.map +1 -1
- package/dist/components/layout/snice-layout-sidebar.d.ts +2 -2
- package/dist/components/layout/snice-layout-sidebar.js +9 -9
- 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 +9 -9
- package/dist/components/layout/snice-layout-split.js.map +1 -1
- package/dist/components/layout/snice-layout.d.ts +2 -2
- package/dist/components/layout/snice-layout.js +9 -9
- package/dist/components/layout/snice-layout.js.map +1 -1
- package/dist/components/link/snice-link.d.ts +13 -0
- package/dist/components/link/snice-link.js +137 -0
- package/dist/components/link/snice-link.js.map +1 -0
- package/dist/components/link/snice-link.types.d.ts +11 -0
- package/dist/components/list/snice-list-item.d.ts +6 -0
- package/dist/components/list/snice-list-item.js +68 -0
- package/dist/components/list/snice-list-item.js.map +1 -0
- package/dist/components/list/snice-list.d.ts +23 -0
- package/dist/components/list/snice-list.js +270 -0
- package/dist/components/list/snice-list.js.map +1 -0
- package/dist/components/list/snice-list.types.d.ts +28 -0
- package/dist/components/location/snice-location.d.ts +35 -0
- package/dist/components/location/snice-location.js +238 -0
- package/dist/components/location/snice-location.js.map +1 -0
- package/dist/components/location/snice-location.types.d.ts +35 -0
- package/dist/components/login/snice-login.d.ts +2 -2
- package/dist/components/login/snice-login.js +9 -9
- package/dist/components/login/snice-login.js.map +1 -1
- package/dist/components/menu/snice-menu-divider.d.ts +4 -0
- package/dist/components/menu/snice-menu-divider.js +53 -0
- package/dist/components/menu/snice-menu-divider.js.map +1 -0
- package/dist/components/menu/snice-menu-item.d.ts +10 -0
- package/dist/components/menu/snice-menu-item.js +99 -0
- package/dist/components/menu/snice-menu-item.js.map +1 -0
- package/dist/components/menu/snice-menu-item.types.d.ts +9 -0
- package/dist/components/menu/snice-menu.d.ts +27 -0
- package/dist/components/menu/snice-menu.js +199 -0
- package/dist/components/menu/snice-menu.js.map +1 -0
- package/dist/components/menu/snice-menu.types.d.ts +18 -0
- package/dist/components/modal/snice-modal.d.ts +2 -2
- package/dist/components/modal/snice-modal.js +9 -9
- package/dist/components/modal/snice-modal.js.map +1 -1
- package/dist/components/nav/snice-nav.js +1 -1
- package/dist/components/nav/snice-nav.js.map +1 -1
- package/dist/components/pagination/snice-pagination.d.ts +2 -2
- package/dist/components/pagination/snice-pagination.js +8 -8
- package/dist/components/pagination/snice-pagination.js.map +1 -1
- package/dist/components/progress/snice-progress.d.ts +2 -2
- package/dist/components/progress/snice-progress.js +9 -9
- package/dist/components/progress/snice-progress.js.map +1 -1
- package/dist/components/qr-code/qrcode.d.ts +28 -0
- package/dist/components/qr-code/qrcode.js +906 -0
- package/dist/components/qr-code/qrcode.js.map +1 -0
- package/dist/components/qr-code/snice-qr-code.d.ts +35 -0
- package/dist/components/qr-code/snice-qr-code.js +256 -0
- package/dist/components/qr-code/snice-qr-code.js.map +1 -0
- package/dist/components/qr-code/snice-qr-code.types.d.ts +33 -0
- package/dist/components/radio/snice-radio.d.ts +2 -2
- package/dist/components/radio/snice-radio.js +9 -9
- package/dist/components/radio/snice-radio.js.map +1 -1
- package/dist/components/select/snice-option.d.ts +2 -2
- package/dist/components/select/snice-option.js +8 -8
- package/dist/components/select/snice-option.js.map +1 -1
- package/dist/components/select/snice-select.d.ts +2 -2
- package/dist/components/select/snice-select.js +9 -9
- package/dist/components/select/snice-select.js.map +1 -1
- package/dist/components/skeleton/snice-skeleton.d.ts +2 -2
- package/dist/components/skeleton/snice-skeleton.js +9 -9
- package/dist/components/skeleton/snice-skeleton.js.map +1 -1
- package/dist/components/slider/snice-slider.d.ts +53 -0
- package/dist/components/slider/snice-slider.js +479 -0
- package/dist/components/slider/snice-slider.js.map +1 -0
- package/dist/components/slider/snice-slider.types.d.ts +26 -0
- package/dist/components/snice-cell-C0slgOpe.js +4 -0
- package/dist/components/snice-cell-C0slgOpe.js.map +1 -0
- package/dist/components/sparkline/snice-sparkline.d.ts +21 -0
- package/dist/components/sparkline/snice-sparkline.js +228 -0
- package/dist/components/sparkline/snice-sparkline.js.map +1 -0
- package/dist/components/sparkline/snice-sparkline.types.d.ts +16 -0
- package/dist/components/spinner/snice-spinner.d.ts +10 -0
- package/dist/components/spinner/snice-spinner.js +109 -0
- package/dist/components/spinner/snice-spinner.js.map +1 -0
- package/dist/components/spinner/snice-spinner.types.d.ts +8 -0
- package/dist/components/split-pane/snice-split-pane.d.ts +32 -0
- package/dist/components/split-pane/snice-split-pane.js +191 -0
- package/dist/components/split-pane/snice-split-pane.js.map +1 -0
- package/dist/components/split-pane/snice-split-pane.types.d.ts +19 -0
- package/dist/components/stat/snice-stat.d.ts +14 -0
- package/dist/components/stat/snice-stat.js +140 -0
- package/dist/components/stat/snice-stat.js.map +1 -0
- package/dist/components/stat/snice-stat.types.d.ts +12 -0
- package/dist/components/stepper/snice-stepper-panel.d.ts +8 -0
- package/dist/components/stepper/snice-stepper-panel.js +70 -0
- package/dist/components/stepper/snice-stepper-panel.js.map +1 -0
- package/dist/components/stepper/snice-stepper-panel.types.d.ts +4 -0
- package/dist/components/stepper/snice-stepper.d.ts +15 -0
- package/dist/components/stepper/snice-stepper.js +163 -0
- package/dist/components/stepper/snice-stepper.js.map +1 -0
- package/dist/components/stepper/snice-stepper.types.d.ts +13 -0
- package/dist/components/switch/snice-switch.d.ts +2 -2
- package/dist/components/switch/snice-switch.js +9 -9
- package/dist/components/switch/snice-switch.js.map +1 -1
- package/dist/components/table/snice-cell-actions.d.ts +2 -2
- package/dist/components/table/snice-cell-actions.js +9 -9
- package/dist/components/table/snice-cell-actions.js.map +1 -1
- package/dist/components/table/snice-cell-boolean.d.ts +2 -2
- package/dist/components/table/snice-cell-boolean.js +9 -9
- package/dist/components/table/snice-cell-boolean.js.map +1 -1
- package/dist/components/table/snice-cell-color.d.ts +2 -2
- package/dist/components/table/snice-cell-color.js +9 -9
- package/dist/components/table/snice-cell-color.js.map +1 -1
- package/dist/components/table/snice-cell-currency.d.ts +2 -2
- package/dist/components/table/snice-cell-currency.js +9 -9
- package/dist/components/table/snice-cell-currency.js.map +1 -1
- package/dist/components/table/snice-cell-date.d.ts +2 -2
- package/dist/components/table/snice-cell-date.js +9 -9
- 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 +9 -9
- package/dist/components/table/snice-cell-duration.js.map +1 -1
- package/dist/components/table/snice-cell-email.d.ts +2 -2
- package/dist/components/table/snice-cell-email.js +9 -9
- package/dist/components/table/snice-cell-email.js.map +1 -1
- package/dist/components/table/snice-cell-filesize.d.ts +2 -2
- package/dist/components/table/snice-cell-filesize.js +9 -9
- package/dist/components/table/snice-cell-filesize.js.map +1 -1
- package/dist/components/table/snice-cell-image.d.ts +2 -2
- package/dist/components/table/snice-cell-image.js +9 -9
- package/dist/components/table/snice-cell-image.js.map +1 -1
- package/dist/components/table/snice-cell-json.d.ts +2 -2
- package/dist/components/table/snice-cell-json.js +9 -9
- package/dist/components/table/snice-cell-json.js.map +1 -1
- package/dist/components/table/snice-cell-link.d.ts +2 -2
- package/dist/components/table/snice-cell-link.js +9 -9
- package/dist/components/table/snice-cell-link.js.map +1 -1
- package/dist/components/table/snice-cell-location.d.ts +2 -2
- package/dist/components/table/snice-cell-location.js +9 -9
- package/dist/components/table/snice-cell-location.js.map +1 -1
- package/dist/components/table/snice-cell-number.d.ts +2 -2
- package/dist/components/table/snice-cell-number.js +9 -9
- package/dist/components/table/snice-cell-number.js.map +1 -1
- package/dist/components/table/snice-cell-percentage.d.ts +2 -2
- package/dist/components/table/snice-cell-percentage.js +9 -9
- package/dist/components/table/snice-cell-percentage.js.map +1 -1
- package/dist/components/table/snice-cell-phone.d.ts +2 -2
- package/dist/components/table/snice-cell-phone.js +9 -9
- package/dist/components/table/snice-cell-phone.js.map +1 -1
- package/dist/components/table/snice-cell-progress.d.ts +2 -2
- package/dist/components/table/snice-cell-progress.js +9 -9
- 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 +9 -9
- 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 +9 -9
- package/dist/components/table/snice-cell-sparkline.js.map +1 -1
- package/dist/components/table/snice-cell-status.d.ts +2 -2
- package/dist/components/table/snice-cell-status.js +9 -9
- package/dist/components/table/snice-cell-status.js.map +1 -1
- package/dist/components/table/snice-cell-tag.d.ts +2 -2
- package/dist/components/table/snice-cell-tag.js +9 -9
- package/dist/components/table/snice-cell-tag.js.map +1 -1
- package/dist/components/table/snice-cell-text.d.ts +2 -2
- package/dist/components/table/snice-cell-text.js +9 -9
- 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 +9 -9
- 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 +4 -4
- package/dist/components/table/snice-column.js.map +1 -1
- package/dist/components/table/snice-header.d.ts +2 -2
- package/dist/components/table/snice-header.js +9 -9
- 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 +8 -8
- 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 +8 -8
- package/dist/components/table/snice-rating.js.map +1 -1
- package/dist/components/table/snice-row.d.ts +2 -2
- package/dist/components/table/snice-row.js +10 -10
- package/dist/components/table/snice-row.js.map +1 -1
- package/dist/components/table/snice-table.d.ts +2 -3
- package/dist/components/table/snice-table.js +9 -14
- package/dist/components/table/snice-table.js.map +1 -1
- package/dist/components/tabs/snice-tab-panel.d.ts +2 -2
- package/dist/components/tabs/snice-tab-panel.js +9 -9
- package/dist/components/tabs/snice-tab-panel.js.map +1 -1
- package/dist/components/tabs/snice-tab.d.ts +2 -2
- package/dist/components/tabs/snice-tab.js +9 -9
- package/dist/components/tabs/snice-tab.js.map +1 -1
- package/dist/components/tabs/snice-tabs.d.ts +2 -2
- package/dist/components/tabs/snice-tabs.js +9 -9
- package/dist/components/tabs/snice-tabs.js.map +1 -1
- package/dist/components/terminal/snice-terminal.types.d.ts +133 -0
- package/dist/components/textarea/snice-textarea.d.ts +52 -0
- package/dist/components/textarea/snice-textarea.js +407 -0
- package/dist/components/textarea/snice-textarea.js.map +1 -0
- package/dist/components/textarea/snice-textarea.types.d.ts +30 -0
- package/dist/components/timeline/snice-timeline.d.ts +11 -0
- package/dist/components/timeline/snice-timeline.js +112 -0
- package/dist/components/timeline/snice-timeline.js.map +1 -0
- package/dist/components/timeline/snice-timeline.types.d.ts +16 -0
- package/dist/components/toast/snice-toast-container.d.ts +2 -2
- package/dist/components/toast/snice-toast-container.js +8 -8
- package/dist/components/toast/snice-toast-container.js.map +1 -1
- package/dist/components/toast/snice-toast.d.ts +2 -2
- package/dist/components/toast/snice-toast.js +8 -8
- 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 +10 -10
- package/dist/components/tooltip/snice-tooltip.js.map +1 -1
- package/dist/components/tree/snice-tree-item.d.ts +35 -0
- package/dist/components/tree/snice-tree-item.js +301 -0
- package/dist/components/tree/snice-tree-item.js.map +1 -0
- package/dist/components/tree/snice-tree-item.types.d.ts +30 -0
- package/dist/components/tree/snice-tree.d.ts +45 -0
- package/dist/components/tree/snice-tree.js +390 -0
- package/dist/components/tree/snice-tree.js.map +1 -0
- package/dist/components/tree/snice-tree.types.d.ts +65 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.d.ts +31 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js +160 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.js.map +1 -0
- package/dist/components/virtual-scroller/snice-virtual-scroller.types.d.ts +19 -0
- package/dist/index.cjs +125 -158
- package/dist/index.cjs.map +1 -1
- package/dist/index.esm.js +125 -158
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +125 -158
- package/dist/index.iife.js.map +1 -1
- package/dist/parts.d.ts +13 -16
- package/dist/symbols.cjs +1 -1
- package/dist/symbols.esm.js +1 -1
- package/dist/template.d.ts +0 -1
- package/dist/transitions.cjs +1 -1
- package/dist/transitions.esm.js +1 -1
- package/docs/ai/README.md +10 -1
- package/docs/ai/components/actions.md +81 -0
- package/docs/ai/components/audio-recorder.md +97 -0
- package/docs/ai/components/banner.md +84 -0
- package/docs/ai/components/calendar.md +95 -0
- package/docs/ai/components/camera.md +130 -0
- package/docs/ai/components/carousel.md +49 -0
- package/docs/ai/components/chart.md +160 -0
- package/docs/ai/components/chat.md +189 -0
- package/docs/ai/components/code-block.md +32 -0
- package/docs/ai/components/color-display.md +48 -0
- package/docs/ai/components/color-picker.md +75 -0
- package/docs/ai/components/command-palette.md +117 -0
- package/docs/ai/components/doc.md +154 -0
- package/docs/ai/components/draw.md +140 -0
- package/docs/ai/components/empty-state.md +72 -0
- package/docs/ai/components/file-upload.md +93 -0
- package/docs/ai/components/gantt.md +95 -0
- package/docs/ai/components/image.md +60 -0
- package/docs/ai/components/kanban.md +102 -0
- package/docs/ai/components/kpi.md +158 -0
- package/docs/ai/components/layout.md +261 -0
- package/docs/ai/components/link.md +77 -0
- package/docs/ai/components/list.md +50 -0
- package/docs/ai/components/location.md +75 -0
- package/docs/ai/components/menu.md +114 -0
- package/docs/ai/components/popover.md +70 -0
- package/docs/ai/components/qr-code.md +106 -0
- package/docs/ai/components/slider.md +87 -0
- package/docs/ai/components/sparkline.md +168 -0
- package/docs/ai/components/spinner.md +47 -0
- package/docs/ai/components/split-pane.md +71 -0
- package/docs/ai/components/stat.md +29 -0
- package/docs/ai/components/stepper.md +216 -0
- package/docs/ai/components/textarea.md +87 -0
- package/docs/ai/components/timeline.md +77 -0
- package/docs/ai/components/tree.md +191 -0
- package/docs/ai/components/virtual-scroller.md +71 -0
- package/docs/components/actions.md +317 -0
- package/docs/components/alert.md +540 -0
- package/docs/components/audio-recorder.md +152 -0
- package/docs/components/badge.md +593 -0
- package/docs/components/banner.md +106 -0
- package/docs/components/breadcrumbs.md +568 -0
- package/docs/components/button.md +648 -0
- package/docs/components/calendar.md +397 -0
- package/docs/components/camera.md +383 -0
- package/docs/components/card.md +778 -0
- package/docs/components/carousel.md +63 -0
- package/docs/components/chart.md +526 -0
- package/docs/components/chat.md +482 -0
- package/docs/components/checkbox.md +714 -0
- package/docs/components/chip.md +670 -0
- package/docs/components/code-block.md +49 -0
- package/docs/components/color-display.md +96 -0
- package/docs/components/color-picker.md +81 -0
- package/docs/components/command-palette.md +159 -0
- package/docs/components/doc.md +357 -0
- package/docs/components/draw.md +307 -0
- package/docs/components/empty-state.md +79 -0
- package/docs/components/file-upload.md +263 -0
- package/docs/components/gantt.md +347 -0
- package/docs/components/image.md +110 -0
- package/docs/components/kanban.md +410 -0
- package/docs/components/kpi.md +251 -0
- package/docs/components/link.md +229 -0
- package/docs/components/list.md +65 -0
- package/docs/components/location.md +369 -0
- package/docs/components/menu.md +633 -0
- package/docs/components/popover.md +333 -0
- package/docs/components/qr-code.md +464 -0
- package/docs/components/slider.md +297 -0
- package/docs/components/sparkline.md +293 -0
- package/docs/components/spinner.md +63 -0
- package/docs/components/split-pane.md +315 -0
- package/docs/components/stat.md +45 -0
- package/docs/components/stepper.md +410 -0
- package/docs/components/textarea.md +235 -0
- package/docs/components/timeline.md +192 -0
- package/docs/components/tree.md +536 -0
- package/docs/components/virtual-scroller.md +298 -0
- package/package.json +2 -1
- package/dist/components/snice-cell-BLFVdxPp.js +0 -4
- package/dist/components/snice-cell-BLFVdxPp.js.map +0 -1
|
@@ -0,0 +1,633 @@
|
|
|
1
|
+
# Menu Components
|
|
2
|
+
|
|
3
|
+
The menu components provide dropdown menus with customizable triggers, placement options, and support for icons and keyboard shortcuts. A `<snice-menu>` container manages `<snice-menu-item>` elements and `<snice-menu-divider>` separators.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
- [Basic Usage](#basic-usage)
|
|
7
|
+
- [Components](#components)
|
|
8
|
+
- [Properties](#properties)
|
|
9
|
+
- [Methods](#methods)
|
|
10
|
+
- [Events](#events)
|
|
11
|
+
- [Slots](#slots)
|
|
12
|
+
- [Examples](#examples)
|
|
13
|
+
|
|
14
|
+
## Basic Usage
|
|
15
|
+
|
|
16
|
+
```html
|
|
17
|
+
<snice-menu>
|
|
18
|
+
<button slot="trigger">Open Menu</button>
|
|
19
|
+
<snice-menu-item value="new">New File</snice-menu-item>
|
|
20
|
+
<snice-menu-item value="open">Open...</snice-menu-item>
|
|
21
|
+
<snice-menu-divider></snice-menu-divider>
|
|
22
|
+
<snice-menu-item value="save">Save</snice-menu-item>
|
|
23
|
+
</snice-menu>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
```typescript
|
|
27
|
+
import 'snice/components/menu/snice-menu';
|
|
28
|
+
import 'snice/components/menu/snice-menu-item';
|
|
29
|
+
import 'snice/components/menu/snice-menu-divider';
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Components
|
|
33
|
+
|
|
34
|
+
### `<snice-menu>`
|
|
35
|
+
Container element that manages the menu panel and trigger behavior.
|
|
36
|
+
|
|
37
|
+
### `<snice-menu-item>`
|
|
38
|
+
Individual menu item that can be selected.
|
|
39
|
+
|
|
40
|
+
### `<snice-menu-divider>`
|
|
41
|
+
Visual separator between menu items.
|
|
42
|
+
|
|
43
|
+
## Properties
|
|
44
|
+
|
|
45
|
+
### Menu Container
|
|
46
|
+
|
|
47
|
+
| Property | Type | Default | Description |
|
|
48
|
+
|----------|------|---------|-------------|
|
|
49
|
+
| `open` | `boolean` | `false` | Whether the menu is open |
|
|
50
|
+
| `placement` | `'bottom-start' \| 'bottom-end' \| 'top-start' \| 'top-end' \| 'right-start' \| 'right-end' \| 'left-start' \| 'left-end'` | `'bottom-start'` | Menu panel placement relative to trigger |
|
|
51
|
+
| `trigger` | `'click' \| 'hover' \| 'manual'` | `'click'` | How the menu is triggered |
|
|
52
|
+
| `closeOnSelect` | `boolean` | `true` | Whether to close menu when item is selected |
|
|
53
|
+
| `distance` | `number` | `4` | Distance (in pixels) from trigger to panel |
|
|
54
|
+
|
|
55
|
+
### Menu Item
|
|
56
|
+
|
|
57
|
+
| Property | Type | Default | Description |
|
|
58
|
+
|----------|------|---------|-------------|
|
|
59
|
+
| `value` | `string` | `''` | Value associated with the menu item |
|
|
60
|
+
| `disabled` | `boolean` | `false` | Disable interaction with the item |
|
|
61
|
+
| `selected` | `boolean` | `false` | Whether the item is selected |
|
|
62
|
+
|
|
63
|
+
## Methods
|
|
64
|
+
|
|
65
|
+
### Menu Container Methods
|
|
66
|
+
|
|
67
|
+
#### `openMenu(): void`
|
|
68
|
+
Open the menu panel.
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
menu.openMenu();
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### `closeMenu(): void`
|
|
75
|
+
Close the menu panel.
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
menu.closeMenu();
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
#### `toggleMenu(): void`
|
|
82
|
+
Toggle the menu open/closed state.
|
|
83
|
+
|
|
84
|
+
```typescript
|
|
85
|
+
menu.toggleMenu();
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Events
|
|
89
|
+
|
|
90
|
+
### Container Events
|
|
91
|
+
|
|
92
|
+
#### `@snice/menu-open`
|
|
93
|
+
Fired when the menu is opened.
|
|
94
|
+
|
|
95
|
+
**Event Detail:**
|
|
96
|
+
```typescript
|
|
97
|
+
{
|
|
98
|
+
menu: SniceMenuElement;
|
|
99
|
+
}
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
**Usage:**
|
|
103
|
+
```typescript
|
|
104
|
+
menu.addEventListener('@snice/menu-open', (e) => {
|
|
105
|
+
console.log('Menu opened');
|
|
106
|
+
});
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
#### `@snice/menu-close`
|
|
110
|
+
Fired when the menu is closed.
|
|
111
|
+
|
|
112
|
+
**Event Detail:**
|
|
113
|
+
```typescript
|
|
114
|
+
{
|
|
115
|
+
menu: SniceMenuElement;
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Item Events
|
|
120
|
+
|
|
121
|
+
#### `@snice/menu-item-select`
|
|
122
|
+
Fired when a menu item is selected.
|
|
123
|
+
|
|
124
|
+
**Event Detail:**
|
|
125
|
+
```typescript
|
|
126
|
+
{
|
|
127
|
+
item: SniceMenuItemElement;
|
|
128
|
+
value: string;
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**Usage:**
|
|
133
|
+
```typescript
|
|
134
|
+
menu.addEventListener('@snice/menu-item-select', (e) => {
|
|
135
|
+
console.log('Selected item:', e.detail.value);
|
|
136
|
+
});
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Slots
|
|
140
|
+
|
|
141
|
+
### Menu Slots
|
|
142
|
+
|
|
143
|
+
#### `trigger` (named slot)
|
|
144
|
+
Element that triggers the menu (required).
|
|
145
|
+
|
|
146
|
+
```html
|
|
147
|
+
<snice-menu>
|
|
148
|
+
<button slot="trigger">Click me</button>
|
|
149
|
+
<!-- menu items -->
|
|
150
|
+
</snice-menu>
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
#### `image-left` (named slot)
|
|
154
|
+
Image or icon to display before the trigger content.
|
|
155
|
+
|
|
156
|
+
```html
|
|
157
|
+
<snice-menu>
|
|
158
|
+
<img slot="image-left" src="avatar.jpg" alt="User">
|
|
159
|
+
<span slot="trigger">User Menu</span>
|
|
160
|
+
<!-- menu items -->
|
|
161
|
+
</snice-menu>
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
#### `image-right` (named slot)
|
|
165
|
+
Image or icon to display after the trigger content.
|
|
166
|
+
|
|
167
|
+
```html
|
|
168
|
+
<snice-menu>
|
|
169
|
+
<span slot="trigger">Settings</span>
|
|
170
|
+
<img slot="image-right" src="icon.svg" alt="">
|
|
171
|
+
<!-- menu items -->
|
|
172
|
+
</snice-menu>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
#### Default slot
|
|
176
|
+
Menu items and dividers.
|
|
177
|
+
|
|
178
|
+
### Menu Item Slots
|
|
179
|
+
|
|
180
|
+
#### `icon` (named slot)
|
|
181
|
+
Icon displayed before the item label.
|
|
182
|
+
|
|
183
|
+
```html
|
|
184
|
+
<snice-menu-item value="save">
|
|
185
|
+
<span slot="icon">💾</span>
|
|
186
|
+
Save
|
|
187
|
+
</snice-menu-item>
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
#### Default slot
|
|
191
|
+
The item label/content.
|
|
192
|
+
|
|
193
|
+
#### `shortcut` (named slot)
|
|
194
|
+
Keyboard shortcut hint displayed after the label.
|
|
195
|
+
|
|
196
|
+
```html
|
|
197
|
+
<snice-menu-item value="save">
|
|
198
|
+
Save
|
|
199
|
+
<span slot="shortcut">⌘S</span>
|
|
200
|
+
</snice-menu-item>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
## Examples
|
|
204
|
+
|
|
205
|
+
### Basic Menu
|
|
206
|
+
|
|
207
|
+
```html
|
|
208
|
+
<snice-menu>
|
|
209
|
+
<button slot="trigger">File</button>
|
|
210
|
+
<snice-menu-item value="new">New</snice-menu-item>
|
|
211
|
+
<snice-menu-item value="open">Open</snice-menu-item>
|
|
212
|
+
<snice-menu-item value="save">Save</snice-menu-item>
|
|
213
|
+
<snice-menu-divider></snice-menu-divider>
|
|
214
|
+
<snice-menu-item value="exit">Exit</snice-menu-item>
|
|
215
|
+
</snice-menu>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Menu with Icons and Shortcuts
|
|
219
|
+
|
|
220
|
+
```html
|
|
221
|
+
<snice-menu>
|
|
222
|
+
<button slot="trigger">Edit</button>
|
|
223
|
+
|
|
224
|
+
<snice-menu-item value="undo">
|
|
225
|
+
<span slot="icon">↩️</span>
|
|
226
|
+
Undo
|
|
227
|
+
<span slot="shortcut">⌘Z</span>
|
|
228
|
+
</snice-menu-item>
|
|
229
|
+
|
|
230
|
+
<snice-menu-item value="redo">
|
|
231
|
+
<span slot="icon">↪️</span>
|
|
232
|
+
Redo
|
|
233
|
+
<span slot="shortcut">⌘⇧Z</span>
|
|
234
|
+
</snice-menu-item>
|
|
235
|
+
|
|
236
|
+
<snice-menu-divider></snice-menu-divider>
|
|
237
|
+
|
|
238
|
+
<snice-menu-item value="cut">
|
|
239
|
+
<span slot="icon">✂️</span>
|
|
240
|
+
Cut
|
|
241
|
+
<span slot="shortcut">⌘X</span>
|
|
242
|
+
</snice-menu-item>
|
|
243
|
+
|
|
244
|
+
<snice-menu-item value="copy">
|
|
245
|
+
<span slot="icon">📋</span>
|
|
246
|
+
Copy
|
|
247
|
+
<span slot="shortcut">⌘C</span>
|
|
248
|
+
</snice-menu-item>
|
|
249
|
+
|
|
250
|
+
<snice-menu-item value="paste">
|
|
251
|
+
<span slot="icon">📄</span>
|
|
252
|
+
Paste
|
|
253
|
+
<span slot="shortcut">⌘V</span>
|
|
254
|
+
</snice-menu-item>
|
|
255
|
+
</snice-menu>
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
### Different Placements
|
|
259
|
+
|
|
260
|
+
```html
|
|
261
|
+
<!-- Bottom start (default) -->
|
|
262
|
+
<snice-menu placement="bottom-start">
|
|
263
|
+
<button slot="trigger">Bottom Start</button>
|
|
264
|
+
<snice-menu-item value="1">Option 1</snice-menu-item>
|
|
265
|
+
<snice-menu-item value="2">Option 2</snice-menu-item>
|
|
266
|
+
</snice-menu>
|
|
267
|
+
|
|
268
|
+
<!-- Bottom end -->
|
|
269
|
+
<snice-menu placement="bottom-end">
|
|
270
|
+
<button slot="trigger">Bottom End</button>
|
|
271
|
+
<snice-menu-item value="1">Option 1</snice-menu-item>
|
|
272
|
+
<snice-menu-item value="2">Option 2</snice-menu-item>
|
|
273
|
+
</snice-menu>
|
|
274
|
+
|
|
275
|
+
<!-- Top start -->
|
|
276
|
+
<snice-menu placement="top-start">
|
|
277
|
+
<button slot="trigger">Top Start</button>
|
|
278
|
+
<snice-menu-item value="1">Option 1</snice-menu-item>
|
|
279
|
+
<snice-menu-item value="2">Option 2</snice-menu-item>
|
|
280
|
+
</snice-menu>
|
|
281
|
+
|
|
282
|
+
<!-- Right side -->
|
|
283
|
+
<snice-menu placement="right-start">
|
|
284
|
+
<button slot="trigger">Right</button>
|
|
285
|
+
<snice-menu-item value="1">Option 1</snice-menu-item>
|
|
286
|
+
<snice-menu-item value="2">Option 2</snice-menu-item>
|
|
287
|
+
</snice-menu>
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Hover Trigger
|
|
291
|
+
|
|
292
|
+
```html
|
|
293
|
+
<snice-menu trigger="hover">
|
|
294
|
+
<button slot="trigger">Hover Me</button>
|
|
295
|
+
<snice-menu-item value="quick1">Quick Action 1</snice-menu-item>
|
|
296
|
+
<snice-menu-item value="quick2">Quick Action 2</snice-menu-item>
|
|
297
|
+
<snice-menu-item value="quick3">Quick Action 3</snice-menu-item>
|
|
298
|
+
</snice-menu>
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
### Manual Control
|
|
302
|
+
|
|
303
|
+
```html
|
|
304
|
+
<snice-menu id="manual-menu" trigger="manual">
|
|
305
|
+
<button slot="trigger">Manual Menu</button>
|
|
306
|
+
<snice-menu-item value="1">Option 1</snice-menu-item>
|
|
307
|
+
<snice-menu-item value="2">Option 2</snice-menu-item>
|
|
308
|
+
</snice-menu>
|
|
309
|
+
|
|
310
|
+
<button onclick="document.getElementById('manual-menu').openMenu()">
|
|
311
|
+
Open Menu
|
|
312
|
+
</button>
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Disabled Items
|
|
316
|
+
|
|
317
|
+
```html
|
|
318
|
+
<snice-menu>
|
|
319
|
+
<button slot="trigger">Actions</button>
|
|
320
|
+
<snice-menu-item value="edit">Edit</snice-menu-item>
|
|
321
|
+
<snice-menu-item value="delete" disabled>Delete (disabled)</snice-menu-item>
|
|
322
|
+
<snice-menu-item value="share">Share</snice-menu-item>
|
|
323
|
+
</snice-menu>
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
### Keep Open on Select
|
|
327
|
+
|
|
328
|
+
```html
|
|
329
|
+
<snice-menu id="multi-menu" close-on-select="false">
|
|
330
|
+
<button slot="trigger">Multi-Select</button>
|
|
331
|
+
<snice-menu-item value="option1">Option 1</snice-menu-item>
|
|
332
|
+
<snice-menu-item value="option2">Option 2</snice-menu-item>
|
|
333
|
+
<snice-menu-item value="option3">Option 3</snice-menu-item>
|
|
334
|
+
<snice-menu-divider></snice-menu-divider>
|
|
335
|
+
<snice-menu-item value="done">Done</snice-menu-item>
|
|
336
|
+
</snice-menu>
|
|
337
|
+
|
|
338
|
+
<script type="module">
|
|
339
|
+
const menu = document.getElementById('multi-menu');
|
|
340
|
+
menu.addEventListener('@snice/menu-item-select', (e) => {
|
|
341
|
+
if (e.detail.value === 'done') {
|
|
342
|
+
menu.closeMenu();
|
|
343
|
+
}
|
|
344
|
+
});
|
|
345
|
+
</script>
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
### User Profile Menu
|
|
349
|
+
|
|
350
|
+
```html
|
|
351
|
+
<snice-menu placement="bottom-end">
|
|
352
|
+
<img slot="image-left"
|
|
353
|
+
src="https://via.placeholder.com/32"
|
|
354
|
+
alt="User avatar"
|
|
355
|
+
style="width: 32px; height: 32px; border-radius: 50%;">
|
|
356
|
+
<span slot="trigger">John Doe</span>
|
|
357
|
+
|
|
358
|
+
<snice-menu-item value="profile">
|
|
359
|
+
<span slot="icon">👤</span>
|
|
360
|
+
View Profile
|
|
361
|
+
</snice-menu-item>
|
|
362
|
+
|
|
363
|
+
<snice-menu-item value="settings">
|
|
364
|
+
<span slot="icon">⚙️</span>
|
|
365
|
+
Settings
|
|
366
|
+
</snice-menu-item>
|
|
367
|
+
|
|
368
|
+
<snice-menu-item value="billing">
|
|
369
|
+
<span slot="icon">💳</span>
|
|
370
|
+
Billing
|
|
371
|
+
</snice-menu-item>
|
|
372
|
+
|
|
373
|
+
<snice-menu-divider></snice-menu-divider>
|
|
374
|
+
|
|
375
|
+
<snice-menu-item value="help">
|
|
376
|
+
<span slot="icon">❓</span>
|
|
377
|
+
Help & Support
|
|
378
|
+
</snice-menu-item>
|
|
379
|
+
|
|
380
|
+
<snice-menu-divider></snice-menu-divider>
|
|
381
|
+
|
|
382
|
+
<snice-menu-item value="logout">
|
|
383
|
+
<span slot="icon">🚪</span>
|
|
384
|
+
Log Out
|
|
385
|
+
</snice-menu-item>
|
|
386
|
+
</snice-menu>
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### Context Menu
|
|
390
|
+
|
|
391
|
+
```html
|
|
392
|
+
<div id="content" style="padding: 2rem; border: 1px solid #ccc;">
|
|
393
|
+
Right-click me for context menu
|
|
394
|
+
</div>
|
|
395
|
+
|
|
396
|
+
<snice-menu id="context-menu" trigger="manual">
|
|
397
|
+
<div slot="trigger" style="display: none;"></div>
|
|
398
|
+
|
|
399
|
+
<snice-menu-item value="copy">Copy</snice-menu-item>
|
|
400
|
+
<snice-menu-item value="paste">Paste</snice-menu-item>
|
|
401
|
+
<snice-menu-divider></snice-menu-divider>
|
|
402
|
+
<snice-menu-item value="delete">Delete</snice-menu-item>
|
|
403
|
+
</snice-menu>
|
|
404
|
+
|
|
405
|
+
<script type="module">
|
|
406
|
+
const content = document.getElementById('content');
|
|
407
|
+
const menu = document.getElementById('context-menu');
|
|
408
|
+
|
|
409
|
+
content.addEventListener('contextmenu', (e) => {
|
|
410
|
+
e.preventDefault();
|
|
411
|
+
|
|
412
|
+
// Position menu at cursor
|
|
413
|
+
menu.style.position = 'fixed';
|
|
414
|
+
menu.style.left = e.clientX + 'px';
|
|
415
|
+
menu.style.top = e.clientY + 'px';
|
|
416
|
+
|
|
417
|
+
menu.openMenu();
|
|
418
|
+
});
|
|
419
|
+
|
|
420
|
+
menu.addEventListener('@snice/menu-item-select', (e) => {
|
|
421
|
+
console.log('Context action:', e.detail.value);
|
|
422
|
+
});
|
|
423
|
+
</script>
|
|
424
|
+
```
|
|
425
|
+
|
|
426
|
+
### With Event Handling
|
|
427
|
+
|
|
428
|
+
```typescript
|
|
429
|
+
import type { SniceMenuElement } from 'snice/components/menu/snice-menu.types';
|
|
430
|
+
|
|
431
|
+
const menu = document.querySelector<SniceMenuElement>('snice-menu');
|
|
432
|
+
|
|
433
|
+
menu.addEventListener('@snice/menu-open', () => {
|
|
434
|
+
console.log('Menu opened');
|
|
435
|
+
// Load dynamic content, track analytics, etc.
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
menu.addEventListener('@snice/menu-close', () => {
|
|
439
|
+
console.log('Menu closed');
|
|
440
|
+
});
|
|
441
|
+
|
|
442
|
+
menu.addEventListener('@snice/menu-item-select', (e) => {
|
|
443
|
+
console.log('Selected:', e.detail.value);
|
|
444
|
+
|
|
445
|
+
switch (e.detail.value) {
|
|
446
|
+
case 'save':
|
|
447
|
+
saveDocument();
|
|
448
|
+
break;
|
|
449
|
+
case 'export':
|
|
450
|
+
exportData();
|
|
451
|
+
break;
|
|
452
|
+
case 'delete':
|
|
453
|
+
confirmDelete();
|
|
454
|
+
break;
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
### Dynamic Menu Items
|
|
460
|
+
|
|
461
|
+
```html
|
|
462
|
+
<snice-menu id="dynamic-menu">
|
|
463
|
+
<button slot="trigger">Recent Files</button>
|
|
464
|
+
<!-- Items populated dynamically -->
|
|
465
|
+
</snice-menu>
|
|
466
|
+
|
|
467
|
+
<script type="module">
|
|
468
|
+
import 'snice/components/menu/snice-menu';
|
|
469
|
+
import 'snice/components/menu/snice-menu-item';
|
|
470
|
+
|
|
471
|
+
const menu = document.getElementById('dynamic-menu');
|
|
472
|
+
|
|
473
|
+
// Load recent files
|
|
474
|
+
const recentFiles = await fetch('/api/recent-files').then(r => r.json());
|
|
475
|
+
|
|
476
|
+
recentFiles.forEach((file, index) => {
|
|
477
|
+
const item = document.createElement('snice-menu-item');
|
|
478
|
+
item.value = file.id;
|
|
479
|
+
item.textContent = file.name;
|
|
480
|
+
|
|
481
|
+
const shortcut = document.createElement('span');
|
|
482
|
+
shortcut.slot = 'shortcut';
|
|
483
|
+
shortcut.textContent = `⌘${index + 1}`;
|
|
484
|
+
item.appendChild(shortcut);
|
|
485
|
+
|
|
486
|
+
menu.appendChild(item);
|
|
487
|
+
});
|
|
488
|
+
|
|
489
|
+
menu.addEventListener('@snice/menu-item-select', (e) => {
|
|
490
|
+
openFile(e.detail.value);
|
|
491
|
+
});
|
|
492
|
+
</script>
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Nested Menu Actions
|
|
496
|
+
|
|
497
|
+
```html
|
|
498
|
+
<snice-menu>
|
|
499
|
+
<button slot="trigger">Actions</button>
|
|
500
|
+
|
|
501
|
+
<snice-menu-item value="new">
|
|
502
|
+
<span slot="icon">📄</span>
|
|
503
|
+
New Document
|
|
504
|
+
</snice-menu-item>
|
|
505
|
+
|
|
506
|
+
<snice-menu-item value="import">
|
|
507
|
+
<span slot="icon">📥</span>
|
|
508
|
+
Import
|
|
509
|
+
</snice-menu-item>
|
|
510
|
+
|
|
511
|
+
<snice-menu-item value="export">
|
|
512
|
+
<span slot="icon">📤</span>
|
|
513
|
+
Export
|
|
514
|
+
</snice-menu-item>
|
|
515
|
+
|
|
516
|
+
<snice-menu-divider></snice-menu-divider>
|
|
517
|
+
|
|
518
|
+
<snice-menu-item value="share">
|
|
519
|
+
<span slot="icon">🔗</span>
|
|
520
|
+
Share
|
|
521
|
+
</snice-menu-item>
|
|
522
|
+
|
|
523
|
+
<snice-menu-item value="permissions">
|
|
524
|
+
<span slot="icon">🔒</span>
|
|
525
|
+
Permissions
|
|
526
|
+
</snice-menu-item>
|
|
527
|
+
|
|
528
|
+
<snice-menu-divider></snice-menu-divider>
|
|
529
|
+
|
|
530
|
+
<snice-menu-item value="archive">
|
|
531
|
+
<span slot="icon">📦</span>
|
|
532
|
+
Archive
|
|
533
|
+
</snice-menu-item>
|
|
534
|
+
|
|
535
|
+
<snice-menu-item value="delete">
|
|
536
|
+
<span slot="icon">🗑️</span>
|
|
537
|
+
Delete
|
|
538
|
+
</snice-menu-item>
|
|
539
|
+
</snice-menu>
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
### Styled Menu
|
|
543
|
+
|
|
544
|
+
```html
|
|
545
|
+
<style>
|
|
546
|
+
#styled-menu::part(panel) {
|
|
547
|
+
border-radius: 12px;
|
|
548
|
+
box-shadow: 0 20px 25px -5px rgb(0 0 0 / 0.1);
|
|
549
|
+
min-width: 200px;
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
#styled-menu::part(trigger) {
|
|
553
|
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
|
554
|
+
color: white;
|
|
555
|
+
border: none;
|
|
556
|
+
padding: 10px 20px;
|
|
557
|
+
border-radius: 8px;
|
|
558
|
+
font-weight: 600;
|
|
559
|
+
}
|
|
560
|
+
</style>
|
|
561
|
+
|
|
562
|
+
<snice-menu id="styled-menu">
|
|
563
|
+
<button slot="trigger">Styled Menu</button>
|
|
564
|
+
<snice-menu-item value="1">Option 1</snice-menu-item>
|
|
565
|
+
<snice-menu-item value="2">Option 2</snice-menu-item>
|
|
566
|
+
<snice-menu-item value="3">Option 3</snice-menu-item>
|
|
567
|
+
</snice-menu>
|
|
568
|
+
```
|
|
569
|
+
|
|
570
|
+
## Accessibility
|
|
571
|
+
|
|
572
|
+
- **ARIA roles**: `menu` role on panel, `menuitem` role on items
|
|
573
|
+
- **Keyboard support**: Click and keyboard activation of trigger
|
|
574
|
+
- **Screen reader friendly**: Proper aria attributes
|
|
575
|
+
- **Focus management**: Focus returns to trigger when closed
|
|
576
|
+
- **Disabled state**: Items can be disabled with proper aria-disabled
|
|
577
|
+
|
|
578
|
+
## Browser Support
|
|
579
|
+
|
|
580
|
+
- Modern browsers (Chrome, Firefox, Safari, Edge)
|
|
581
|
+
- Requires Custom Elements v1 and Shadow DOM support
|
|
582
|
+
|
|
583
|
+
## Best Practices
|
|
584
|
+
|
|
585
|
+
1. **Use meaningful values**: Set descriptive `value` attributes on menu items
|
|
586
|
+
2. **Group related items**: Use dividers to separate logical groups
|
|
587
|
+
3. **Keep menus concise**: Limit to 7-10 items per menu for usability
|
|
588
|
+
4. **Use icons sparingly**: Icons should enhance, not clutter
|
|
589
|
+
5. **Position appropriately**: Choose placement based on trigger location
|
|
590
|
+
6. **Handle outside clicks**: Menu automatically closes on outside click
|
|
591
|
+
7. **Provide keyboard shortcuts**: Show shortcuts in the menu when available
|
|
592
|
+
8. **Test on mobile**: Ensure touch interactions work well
|
|
593
|
+
9. **Consider hover carefully**: Hover trigger may not work well on touch devices
|
|
594
|
+
10. **Close after action**: Use `closeOnSelect` for single-action menus
|
|
595
|
+
|
|
596
|
+
## Common Patterns
|
|
597
|
+
|
|
598
|
+
### File Menu Pattern
|
|
599
|
+
```html
|
|
600
|
+
<snice-menu>
|
|
601
|
+
<button slot="trigger">File</button>
|
|
602
|
+
<snice-menu-item value="new">New</snice-menu-item>
|
|
603
|
+
<snice-menu-item value="open">Open</snice-menu-item>
|
|
604
|
+
<snice-menu-item value="save">Save</snice-menu-item>
|
|
605
|
+
</snice-menu>
|
|
606
|
+
```
|
|
607
|
+
|
|
608
|
+
### User Menu Pattern
|
|
609
|
+
```html
|
|
610
|
+
<snice-menu placement="bottom-end">
|
|
611
|
+
<img slot="image-left" src="avatar.jpg">
|
|
612
|
+
<span slot="trigger">Username</span>
|
|
613
|
+
<snice-menu-item value="profile">Profile</snice-menu-item>
|
|
614
|
+
<snice-menu-item value="logout">Logout</snice-menu-item>
|
|
615
|
+
</snice-menu>
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
### Action Menu Pattern
|
|
619
|
+
```html
|
|
620
|
+
<snice-menu>
|
|
621
|
+
<button slot="trigger">⋮</button>
|
|
622
|
+
<snice-menu-item value="edit">Edit</snice-menu-item>
|
|
623
|
+
<snice-menu-item value="delete">Delete</snice-menu-item>
|
|
624
|
+
</snice-menu>
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### Multi-Select Pattern
|
|
628
|
+
```html
|
|
629
|
+
<snice-menu close-on-select="false">
|
|
630
|
+
<button slot="trigger">Filters</button>
|
|
631
|
+
<!-- Multiple selections allowed -->
|
|
632
|
+
</snice-menu>
|
|
633
|
+
```
|