@svelte-atoms/core 1.0.0-alpha.14
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 +590 -0
- package/dist/actions/animation.svelte.d.ts +6 -0
- package/dist/actions/animation.svelte.js +14 -0
- package/dist/actions/clickout.svelte.d.ts +2 -0
- package/dist/actions/clickout.svelte.js +15 -0
- package/dist/actions/popover.svelte.d.ts +19 -0
- package/dist/actions/popover.svelte.js +81 -0
- package/dist/actions/portal.svelte.d.ts +8 -0
- package/dist/actions/portal.svelte.js +32 -0
- package/dist/attachments/clickout.svelte.d.ts +1 -0
- package/dist/attachments/clickout.svelte.js +15 -0
- package/dist/attachments/event.svelte.d.ts +3 -0
- package/dist/attachments/event.svelte.js +7 -0
- package/dist/attachments/gsap.svelte.d.ts +2 -0
- package/dist/attachments/gsap.svelte.js +26 -0
- package/dist/attachments/index.d.ts +2 -0
- package/dist/attachments/index.js +2 -0
- package/dist/attachments/portal.svelte.d.ts +2 -0
- package/dist/attachments/portal.svelte.js +24 -0
- package/dist/attachments/resize-observer.svelte.d.ts +1 -0
- package/dist/attachments/resize-observer.svelte.js +7 -0
- package/dist/components/accordion/accordion-root.svelte +88 -0
- package/dist/components/accordion/accordion-root.svelte.d.ts +44 -0
- package/dist/components/accordion/accordion.stories.svelte +134 -0
- package/dist/components/accordion/accordion.stories.svelte.d.ts +18 -0
- package/dist/components/accordion/atoms.d.ts +1 -0
- package/dist/components/accordion/atoms.js +1 -0
- package/dist/components/accordion/attachments.svelte.d.ts +2 -0
- package/dist/components/accordion/attachments.svelte.js +5 -0
- package/dist/components/accordion/bond.svelte.d.ts +40 -0
- package/dist/components/accordion/bond.svelte.js +81 -0
- package/dist/components/accordion/index.d.ts +2 -0
- package/dist/components/accordion/index.js +2 -0
- package/dist/components/accordion/item/accordion-item-body.svelte +63 -0
- package/dist/components/accordion/item/accordion-item-body.svelte.d.ts +32 -0
- package/dist/components/accordion/item/accordion-item-header.svelte +67 -0
- package/dist/components/accordion/item/accordion-item-header.svelte.d.ts +44 -0
- package/dist/components/accordion/item/accordion-item-indicator.svelte +70 -0
- package/dist/components/accordion/item/accordion-item-indicator.svelte.d.ts +32 -0
- package/dist/components/accordion/item/accordion-item-root.svelte +84 -0
- package/dist/components/accordion/item/accordion-item-root.svelte.d.ts +41 -0
- package/dist/components/accordion/item/atoms.d.ts +4 -0
- package/dist/components/accordion/item/atoms.js +4 -0
- package/dist/components/accordion/item/attachments.svelte.d.ts +3 -0
- package/dist/components/accordion/item/attachments.svelte.js +6 -0
- package/dist/components/accordion/item/bond.svelte.d.ts +63 -0
- package/dist/components/accordion/item/bond.svelte.js +141 -0
- package/dist/components/accordion/item/index.d.ts +1 -0
- package/dist/components/accordion/item/index.js +1 -0
- package/dist/components/alert/alert-actions.svelte +61 -0
- package/dist/components/alert/alert-actions.svelte.d.ts +32 -0
- package/dist/components/alert/alert-close-button.svelte +82 -0
- package/dist/components/alert/alert-close-button.svelte.d.ts +32 -0
- package/dist/components/alert/alert-content.svelte +61 -0
- package/dist/components/alert/alert-content.svelte.d.ts +32 -0
- package/dist/components/alert/alert-description.svelte +58 -0
- package/dist/components/alert/alert-description.svelte.d.ts +32 -0
- package/dist/components/alert/alert-icon.svelte +61 -0
- package/dist/components/alert/alert-icon.svelte.d.ts +32 -0
- package/dist/components/alert/alert-root.svelte +123 -0
- package/dist/components/alert/alert-root.svelte.d.ts +43 -0
- package/dist/components/alert/alert-title.svelte +58 -0
- package/dist/components/alert/alert-title.svelte.d.ts +32 -0
- package/dist/components/alert/alert.css +18 -0
- package/dist/components/alert/alert.stories.svelte +40 -0
- package/dist/components/alert/alert.stories.svelte.d.ts +6 -0
- package/dist/components/alert/atoms.d.ts +7 -0
- package/dist/components/alert/atoms.js +7 -0
- package/dist/components/alert/attachments.svelte.d.ts +2 -0
- package/dist/components/alert/attachments.svelte.js +5 -0
- package/dist/components/alert/bond.svelte.d.ts +65 -0
- package/dist/components/alert/bond.svelte.js +126 -0
- package/dist/components/alert/index.d.ts +2 -0
- package/dist/components/alert/index.js +1 -0
- package/dist/components/atom/html-atom.svelte +35 -0
- package/dist/components/atom/html-atom.svelte.d.ts +39 -0
- package/dist/components/atom/index.d.ts +1 -0
- package/dist/components/atom/index.js +1 -0
- package/dist/components/atom/types.d.ts +9 -0
- package/dist/components/atom/types.js +1 -0
- package/dist/components/avatar/avatar.css +3 -0
- package/dist/components/avatar/avatar.stories.svelte +27 -0
- package/dist/components/avatar/avatar.stories.svelte.d.ts +26 -0
- package/dist/components/avatar/avatar.svelte +45 -0
- package/dist/components/avatar/avatar.svelte.d.ts +5 -0
- package/dist/components/avatar/index.d.ts +1 -0
- package/dist/components/avatar/index.js +1 -0
- package/dist/components/avatar/types.d.ts +7 -0
- package/dist/components/avatar/types.js +1 -0
- package/dist/components/badge/badge.stories.svelte +17 -0
- package/dist/components/badge/badge.stories.svelte.d.ts +26 -0
- package/dist/components/badge/badge.svelte +29 -0
- package/dist/components/badge/badge.svelte.d.ts +3 -0
- package/dist/components/badge/index.d.ts +2 -0
- package/dist/components/badge/index.js +1 -0
- package/dist/components/badge/types.d.ts +5 -0
- package/dist/components/badge/types.js +1 -0
- package/dist/components/breadcrumb/atoms.d.ts +3 -0
- package/dist/components/breadcrumb/atoms.js +3 -0
- package/dist/components/breadcrumb/breadcrumb-item.svelte +31 -0
- package/dist/components/breadcrumb/breadcrumb-item.svelte.d.ts +31 -0
- package/dist/components/breadcrumb/breadcrumb-root.svelte +29 -0
- package/dist/components/breadcrumb/breadcrumb-root.svelte.d.ts +30 -0
- package/dist/components/breadcrumb/breadcrumb-separator.svelte +29 -0
- package/dist/components/breadcrumb/breadcrumb-separator.svelte.d.ts +30 -0
- package/dist/components/breadcrumb/breadcrumb.stories.svelte +21 -0
- package/dist/components/breadcrumb/breadcrumb.stories.svelte.d.ts +26 -0
- package/dist/components/breadcrumb/index.d.ts +2 -0
- package/dist/components/breadcrumb/index.js +2 -0
- package/dist/components/breadcrumb/types.d.ts +0 -0
- package/dist/components/breadcrumb/types.js +1 -0
- package/dist/components/button/button.stories.svelte +17 -0
- package/dist/components/button/button.stories.svelte.d.ts +26 -0
- package/dist/components/button/button.svelte +35 -0
- package/dist/components/button/button.svelte.d.ts +3 -0
- package/dist/components/button/index.d.ts +1 -0
- package/dist/components/button/index.js +1 -0
- package/dist/components/button/types.d.ts +6 -0
- package/dist/components/button/types.js +1 -0
- package/dist/components/card/atoms.d.ts +8 -0
- package/dist/components/card/atoms.js +8 -0
- package/dist/components/card/attachments.svelte.d.ts +2 -0
- package/dist/components/card/attachments.svelte.js +5 -0
- package/dist/components/card/bond.svelte.d.ts +66 -0
- package/dist/components/card/bond.svelte.js +143 -0
- package/dist/components/card/card-body.svelte +55 -0
- package/dist/components/card/card-body.svelte.d.ts +26 -0
- package/dist/components/card/card-description.svelte +55 -0
- package/dist/components/card/card-description.svelte.d.ts +26 -0
- package/dist/components/card/card-footer.svelte +55 -0
- package/dist/components/card/card-footer.svelte.d.ts +26 -0
- package/dist/components/card/card-header.svelte +55 -0
- package/dist/components/card/card-header.svelte.d.ts +26 -0
- package/dist/components/card/card-media.svelte +55 -0
- package/dist/components/card/card-media.svelte.d.ts +26 -0
- package/dist/components/card/card-root.svelte +96 -0
- package/dist/components/card/card-root.svelte.d.ts +32 -0
- package/dist/components/card/card-subtitle.svelte +55 -0
- package/dist/components/card/card-subtitle.svelte.d.ts +26 -0
- package/dist/components/card/card-title.svelte +55 -0
- package/dist/components/card/card-title.svelte.d.ts +26 -0
- package/dist/components/card/card.css +27 -0
- package/dist/components/card/card.stories.svelte +145 -0
- package/dist/components/card/card.stories.svelte.d.ts +19 -0
- package/dist/components/card/index.d.ts +1 -0
- package/dist/components/card/index.js +1 -0
- package/dist/components/card/types.d.ts +13 -0
- package/dist/components/card/types.js +1 -0
- package/dist/components/checkbox/checkbox-checked.svelte +20 -0
- package/dist/components/checkbox/checkbox-checked.svelte.d.ts +3 -0
- package/dist/components/checkbox/checkbox.css +16 -0
- package/dist/components/checkbox/checkbox.stories.svelte +27 -0
- package/dist/components/checkbox/checkbox.stories.svelte.d.ts +6 -0
- package/dist/components/checkbox/checkbox.svelte +154 -0
- package/dist/components/checkbox/checkbox.svelte.d.ts +4 -0
- package/dist/components/checkbox/index.d.ts +1 -0
- package/dist/components/checkbox/index.js +1 -0
- package/dist/components/checkbox/types.d.ts +15 -0
- package/dist/components/checkbox/types.js +2 -0
- package/dist/components/collapsible/atoms.d.ts +4 -0
- package/dist/components/collapsible/atoms.js +4 -0
- package/dist/components/collapsible/attachments.svelte.d.ts +2 -0
- package/dist/components/collapsible/attachments.svelte.js +5 -0
- package/dist/components/collapsible/bond.svelte.d.ts +57 -0
- package/dist/components/collapsible/bond.svelte.js +96 -0
- package/dist/components/collapsible/collapsible-body.svelte +58 -0
- package/dist/components/collapsible/collapsible-body.svelte.d.ts +33 -0
- package/dist/components/collapsible/collapsible-header.svelte +62 -0
- package/dist/components/collapsible/collapsible-header.svelte.d.ts +33 -0
- package/dist/components/collapsible/collapsible-indicator.svelte +74 -0
- package/dist/components/collapsible/collapsible-indicator.svelte.d.ts +33 -0
- package/dist/components/collapsible/collapsible-root.svelte +94 -0
- package/dist/components/collapsible/collapsible-root.svelte.d.ts +43 -0
- package/dist/components/collapsible/collapsible.stories.svelte +175 -0
- package/dist/components/collapsible/collapsible.stories.svelte.d.ts +18 -0
- package/dist/components/collapsible/index.d.ts +2 -0
- package/dist/components/collapsible/index.js +2 -0
- package/dist/components/combobox/atoms.d.ts +5 -0
- package/dist/components/combobox/atoms.js +5 -0
- package/dist/components/combobox/attachments.svelte.d.ts +2 -0
- package/dist/components/combobox/attachments.svelte.js +5 -0
- package/dist/components/combobox/bond.svelte.d.ts +32 -0
- package/dist/components/combobox/bond.svelte.js +70 -0
- package/dist/components/combobox/combobox-input.svelte +59 -0
- package/dist/components/combobox/combobox-input.svelte.d.ts +12 -0
- package/dist/components/combobox/combobox-root.svelte +68 -0
- package/dist/components/combobox/combobox-root.svelte.d.ts +43 -0
- package/dist/components/combobox/combobox-trigger.svelte +50 -0
- package/dist/components/combobox/combobox-trigger.svelte.d.ts +36 -0
- package/dist/components/combobox/compobox-item.svelte +73 -0
- package/dist/components/combobox/compobox-item.svelte.d.ts +36 -0
- package/dist/components/combobox/compobox.stories.svelte +53 -0
- package/dist/components/combobox/compobox.stories.svelte.d.ts +3 -0
- package/dist/components/combobox/index.d.ts +1 -0
- package/dist/components/combobox/index.js +1 -0
- package/dist/components/contaiener/container.stories.svelte +25 -0
- package/dist/components/contaiener/container.stories.svelte.d.ts +26 -0
- package/dist/components/contaiener/container.svelte +67 -0
- package/dist/components/contaiener/container.svelte.d.ts +3 -0
- package/dist/components/contaiener/index.d.ts +0 -0
- package/dist/components/contaiener/index.js +1 -0
- package/dist/components/contaiener/types.d.ts +14 -0
- package/dist/components/contaiener/types.js +1 -0
- package/dist/components/contextmenu/atoms.d.ts +0 -0
- package/dist/components/contextmenu/atoms.js +1 -0
- package/dist/components/contextmenu/contextmenu-trigger.svelte +0 -0
- package/dist/components/contextmenu/contextmenu-trigger.svelte.d.ts +26 -0
- package/dist/components/contextmenu/indext.d.ts +0 -0
- package/dist/components/contextmenu/indext.js +1 -0
- package/dist/components/datagrid/atoms.d.ts +8 -0
- package/dist/components/datagrid/atoms.js +8 -0
- package/dist/components/datagrid/attachments.svelte.d.ts +2 -0
- package/dist/components/datagrid/attachments.svelte.js +5 -0
- package/dist/components/datagrid/bond.svelte.d.ts +39 -0
- package/dist/components/datagrid/bond.svelte.js +88 -0
- package/dist/components/datagrid/context.d.ts +36 -0
- package/dist/components/datagrid/context.js +24 -0
- package/dist/components/datagrid/datagrid-body.svelte +49 -0
- package/dist/components/datagrid/datagrid-body.svelte.d.ts +36 -0
- package/dist/components/datagrid/datagrid-checkbox.svelte +115 -0
- package/dist/components/datagrid/datagrid-checkbox.svelte.d.ts +8 -0
- package/dist/components/datagrid/datagrid-footer.svelte +40 -0
- package/dist/components/datagrid/datagrid-footer.svelte.d.ts +26 -0
- package/dist/components/datagrid/datagrid-header.svelte +59 -0
- package/dist/components/datagrid/datagrid-header.svelte.d.ts +26 -0
- package/dist/components/datagrid/datagrid-root.svelte +67 -0
- package/dist/components/datagrid/datagrid-root.svelte.d.ts +31 -0
- package/dist/components/datagrid/datagrid.css +47 -0
- package/dist/components/datagrid/datagrid.stories.svelte +75 -0
- package/dist/components/datagrid/datagrid.stories.svelte.d.ts +6 -0
- package/dist/components/datagrid/index.d.ts +3 -0
- package/dist/components/datagrid/index.js +3 -0
- package/dist/components/datagrid/td/bond.svelte.d.ts +28 -0
- package/dist/components/datagrid/td/bond.svelte.js +40 -0
- package/dist/components/datagrid/td/datagrid-td.svelte +90 -0
- package/dist/components/datagrid/td/datagrid-td.svelte.d.ts +39 -0
- package/dist/components/datagrid/td/index.d.ts +2 -0
- package/dist/components/datagrid/td/index.js +2 -0
- package/dist/components/datagrid/th/bond.svelte.d.ts +38 -0
- package/dist/components/datagrid/th/bond.svelte.js +66 -0
- package/dist/components/datagrid/th/datagrid-th-sort-icon.svelte +56 -0
- package/dist/components/datagrid/th/datagrid-th-sort-icon.svelte.d.ts +35 -0
- package/dist/components/datagrid/th/datagrid-th.svelte +131 -0
- package/dist/components/datagrid/th/datagrid-th.svelte.d.ts +44 -0
- package/dist/components/datagrid/th/index.d.ts +2 -0
- package/dist/components/datagrid/th/index.js +2 -0
- package/dist/components/datagrid/tr/bond.svelte.d.ts +33 -0
- package/dist/components/datagrid/tr/bond.svelte.js +68 -0
- package/dist/components/datagrid/tr/datagrid-tr.css +7 -0
- package/dist/components/datagrid/tr/datagrid-tr.svelte +108 -0
- package/dist/components/datagrid/tr/datagrid-tr.svelte.d.ts +44 -0
- package/dist/components/datagrid/tr/index.d.ts +2 -0
- package/dist/components/datagrid/tr/index.js +2 -0
- package/dist/components/datagrid/types.d.ts +103 -0
- package/dist/components/datagrid/types.js +1 -0
- package/dist/components/dialog/atoms.d.ts +6 -0
- package/dist/components/dialog/atoms.js +6 -0
- package/dist/components/dialog/attachements.svelte.d.ts +3 -0
- package/dist/components/dialog/attachements.svelte.js +9 -0
- package/dist/components/dialog/bond.svelte.d.ts +61 -0
- package/dist/components/dialog/bond.svelte.js +129 -0
- package/dist/components/dialog/dialog-body.svelte +55 -0
- package/dist/components/dialog/dialog-body.svelte.d.ts +26 -0
- package/dist/components/dialog/dialog-close-button.svelte +69 -0
- package/dist/components/dialog/dialog-close-button.svelte.d.ts +26 -0
- package/dist/components/dialog/dialog-content.svelte +77 -0
- package/dist/components/dialog/dialog-content.svelte.d.ts +26 -0
- package/dist/components/dialog/dialog-description.svelte +51 -0
- package/dist/components/dialog/dialog-description.svelte.d.ts +26 -0
- package/dist/components/dialog/dialog-footer.svelte +55 -0
- package/dist/components/dialog/dialog-footer.svelte.d.ts +26 -0
- package/dist/components/dialog/dialog-header.svelte +55 -0
- package/dist/components/dialog/dialog-header.svelte.d.ts +26 -0
- package/dist/components/dialog/dialog-root.svelte +123 -0
- package/dist/components/dialog/dialog-root.svelte.d.ts +39 -0
- package/dist/components/dialog/dialog-title.svelte +51 -0
- package/dist/components/dialog/dialog-title.svelte.d.ts +26 -0
- package/dist/components/dialog/dialog.stories.svelte +67 -0
- package/dist/components/dialog/dialog.stories.svelte.d.ts +3 -0
- package/dist/components/dialog/index.d.ts +1 -0
- package/dist/components/dialog/index.js +1 -0
- package/dist/components/divider/divider.svelte +30 -0
- package/dist/components/divider/divider.svelte.d.ts +17 -0
- package/dist/components/divider/index.d.ts +1 -0
- package/dist/components/divider/index.js +1 -0
- package/dist/components/drawer/README.MD +98 -0
- package/dist/components/drawer/atoms.d.ts +8 -0
- package/dist/components/drawer/atoms.js +8 -0
- package/dist/components/drawer/attachments.svelte.d.ts +6 -0
- package/dist/components/drawer/attachments.svelte.js +82 -0
- package/dist/components/drawer/bond.svelte.d.ts +67 -0
- package/dist/components/drawer/bond.svelte.js +144 -0
- package/dist/components/drawer/drawer-backdrop.svelte +56 -0
- package/dist/components/drawer/drawer-backdrop.svelte.d.ts +29 -0
- package/dist/components/drawer/drawer-body.svelte +62 -0
- package/dist/components/drawer/drawer-body.svelte.d.ts +40 -0
- package/dist/components/drawer/drawer-content.svelte +64 -0
- package/dist/components/drawer/drawer-content.svelte.d.ts +38 -0
- package/dist/components/drawer/drawer-description.svelte +60 -0
- package/dist/components/drawer/drawer-description.svelte.d.ts +38 -0
- package/dist/components/drawer/drawer-footer.svelte +60 -0
- package/dist/components/drawer/drawer-footer.svelte.d.ts +38 -0
- package/dist/components/drawer/drawer-header.svelte +61 -0
- package/dist/components/drawer/drawer-header.svelte.d.ts +38 -0
- package/dist/components/drawer/drawer-root.svelte +116 -0
- package/dist/components/drawer/drawer-root.svelte.d.ts +60 -0
- package/dist/components/drawer/drawer-title.svelte +60 -0
- package/dist/components/drawer/drawer-title.svelte.d.ts +38 -0
- package/dist/components/drawer/drawer.stories.svelte +224 -0
- package/dist/components/drawer/drawer.stories.svelte.d.ts +3 -0
- package/dist/components/drawer/index.d.ts +3 -0
- package/dist/components/drawer/index.js +3 -0
- package/dist/components/dropdown/atoms.d.ts +9 -0
- package/dist/components/dropdown/atoms.js +9 -0
- package/dist/components/dropdown/attachments.svelte.d.ts +2 -0
- package/dist/components/dropdown/attachments.svelte.js +5 -0
- package/dist/components/dropdown/bond.svelte.d.ts +49 -0
- package/dist/components/dropdown/bond.svelte.js +114 -0
- package/dist/components/dropdown/dropdown-placeholder.svelte +41 -0
- package/dist/components/dropdown/dropdown-placeholder.svelte.d.ts +34 -0
- package/dist/components/dropdown/dropdown-query.svelte +64 -0
- package/dist/components/dropdown/dropdown-query.svelte.d.ts +34 -0
- package/dist/components/dropdown/dropdown-root.svelte +59 -0
- package/dist/components/dropdown/dropdown-root.svelte.d.ts +42 -0
- package/dist/components/dropdown/dropdown-trigger.svelte +60 -0
- package/dist/components/dropdown/dropdown-trigger.svelte.d.ts +33 -0
- package/dist/components/dropdown/dropdown-value.svelte +66 -0
- package/dist/components/dropdown/dropdown-value.svelte.d.ts +37 -0
- package/dist/components/dropdown/dropdown-values.svelte +17 -0
- package/dist/components/dropdown/dropdown-values.svelte.d.ts +6 -0
- package/dist/components/dropdown/dropdown.stories.svelte +74 -0
- package/dist/components/dropdown/dropdown.stories.svelte.d.ts +3 -0
- package/dist/components/dropdown/index.d.ts +2 -0
- package/dist/components/dropdown/index.js +2 -0
- package/dist/components/dropdown/item/attachments.svelte.d.ts +3 -0
- package/dist/components/dropdown/item/attachments.svelte.js +6 -0
- package/dist/components/dropdown/item/bond.svelte.d.ts +37 -0
- package/dist/components/dropdown/item/bond.svelte.js +87 -0
- package/dist/components/dropdown/item/dropdown-item.svelte +98 -0
- package/dist/components/dropdown/item/dropdown-item.svelte.d.ts +38 -0
- package/dist/components/dropdown/runes.svelte.d.ts +6 -0
- package/dist/components/dropdown/runes.svelte.js +15 -0
- package/dist/components/element/html-element.svelte +93 -0
- package/dist/components/element/html-element.svelte.d.ts +38 -0
- package/dist/components/element/index.d.ts +4 -0
- package/dist/components/element/index.js +4 -0
- package/dist/components/element/mathml-element.svelte +90 -0
- package/dist/components/element/mathml-element.svelte.d.ts +25 -0
- package/dist/components/element/svg-element.svelte +90 -0
- package/dist/components/element/svg-element.svelte.d.ts +38 -0
- package/dist/components/element/types.d.ts +29 -0
- package/dist/components/element/types.js +1 -0
- package/dist/components/form/atoms.d.ts +2 -0
- package/dist/components/form/atoms.js +2 -0
- package/dist/components/form/attachments.svelte.d.ts +2 -0
- package/dist/components/form/attachments.svelte.js +5 -0
- package/dist/components/form/bond.svelte.d.ts +28 -0
- package/dist/components/form/bond.svelte.js +47 -0
- package/dist/components/form/field/atoms.d.ts +4 -0
- package/dist/components/form/field/atoms.js +4 -0
- package/dist/components/form/field/attachments.svelte.d.ts +2 -0
- package/dist/components/form/field/attachments.svelte.js +5 -0
- package/dist/components/form/field/bond.svelte.d.ts +80 -0
- package/dist/components/form/field/bond.svelte.js +159 -0
- package/dist/components/form/field/field-control.svelte +66 -0
- package/dist/components/form/field/field-control.svelte.d.ts +50 -0
- package/dist/components/form/field/field-errors.svelte +9 -0
- package/dist/components/form/field/field-errors.svelte.d.ts +11 -0
- package/dist/components/form/field/field-label.svelte +45 -0
- package/dist/components/form/field/field-label.svelte.d.ts +27 -0
- package/dist/components/form/field/field-root.svelte +93 -0
- package/dist/components/form/field/field-root.svelte.d.ts +46 -0
- package/dist/components/form/field/index.d.ts +1 -0
- package/dist/components/form/field/index.js +1 -0
- package/dist/components/form/field/validation-adapters.d.ts +20 -0
- package/dist/components/form/field/validation-adapters.js +41 -0
- package/dist/components/form/form-root.svelte +74 -0
- package/dist/components/form/form-root.svelte.d.ts +50 -0
- package/dist/components/form/form.stories.svelte +99 -0
- package/dist/components/form/form.stories.svelte.d.ts +18 -0
- package/dist/components/form/index.d.ts +5 -0
- package/dist/components/form/index.js +4 -0
- package/dist/components/form/validation-adapters.d.ts +11 -0
- package/dist/components/form/validation-adapters.js +82 -0
- package/dist/components/icon/icon.svelte +61 -0
- package/dist/components/icon/icon.svelte.d.ts +32 -0
- package/dist/components/icon/index.d.ts +2 -0
- package/dist/components/icon/index.js +2 -0
- package/dist/components/icon/types.d.ts +7 -0
- package/dist/components/icon/types.js +1 -0
- package/dist/components/image/image.stories.svelte +23 -0
- package/dist/components/image/image.stories.svelte.d.ts +26 -0
- package/dist/components/image/image.svelte +37 -0
- package/dist/components/image/image.svelte.d.ts +8 -0
- package/dist/components/image/index.d.ts +0 -0
- package/dist/components/image/index.js +1 -0
- package/dist/components/image/types.d.ts +0 -0
- package/dist/components/image/types.js +1 -0
- package/dist/components/index.d.ts +36 -0
- package/dist/components/index.js +36 -0
- package/dist/components/input/atoms.d.ts +4 -0
- package/dist/components/input/atoms.js +4 -0
- package/dist/components/input/attachments.svelte.d.ts +2 -0
- package/dist/components/input/attachments.svelte.js +5 -0
- package/dist/components/input/bond.svelte.d.ts +49 -0
- package/dist/components/input/bond.svelte.js +76 -0
- package/dist/components/input/index.d.ts +2 -0
- package/dist/components/input/index.js +2 -0
- package/dist/components/input/input-icon.svelte +16 -0
- package/dist/components/input/input-icon.svelte.d.ts +4 -0
- package/dist/components/input/input-placeholder.svelte +61 -0
- package/dist/components/input/input-placeholder.svelte.d.ts +25 -0
- package/dist/components/input/input-root.svelte +83 -0
- package/dist/components/input/input-root.svelte.d.ts +30 -0
- package/dist/components/input/input-value.svelte +110 -0
- package/dist/components/input/input-value.svelte.d.ts +16 -0
- package/dist/components/input/input.stories.svelte +34 -0
- package/dist/components/input/input.stories.svelte.d.ts +18 -0
- package/dist/components/label/index.d.ts +1 -0
- package/dist/components/label/index.js +1 -0
- package/dist/components/label/label.stories.svelte +26 -0
- package/dist/components/label/label.stories.svelte.d.ts +6 -0
- package/dist/components/label/label.svelte +39 -0
- package/dist/components/label/label.svelte.d.ts +30 -0
- package/dist/components/layer/atoms.d.ts +2 -0
- package/dist/components/layer/atoms.js +2 -0
- package/dist/components/layer/attachments.svelte.d.ts +2 -0
- package/dist/components/layer/attachments.svelte.js +5 -0
- package/dist/components/layer/bond.svelte.d.ts +23 -0
- package/dist/components/layer/bond.svelte.js +48 -0
- package/dist/components/layer/index.d.ts +2 -0
- package/dist/components/layer/index.js +2 -0
- package/dist/components/layer/layer-inner.svelte +56 -0
- package/dist/components/layer/layer-inner.svelte.d.ts +25 -0
- package/dist/components/layer/layer-root.svelte +75 -0
- package/dist/components/layer/layer-root.svelte.d.ts +29 -0
- package/dist/components/link/index.d.ts +1 -0
- package/dist/components/link/index.js +1 -0
- package/dist/components/link/link.stories.svelte +26 -0
- package/dist/components/link/link.stories.svelte.d.ts +6 -0
- package/dist/components/link/link.svelte +27 -0
- package/dist/components/link/link.svelte.d.ts +25 -0
- package/dist/components/list/atoms.d.ts +5 -0
- package/dist/components/list/atoms.js +5 -0
- package/dist/components/list/index.d.ts +1 -0
- package/dist/components/list/index.js +1 -0
- package/dist/components/list/list-divider.svelte +29 -0
- package/dist/components/list/list-divider.svelte.d.ts +30 -0
- package/dist/components/list/list-group.svelte +28 -0
- package/dist/components/list/list-group.svelte.d.ts +30 -0
- package/dist/components/list/list-item.svelte +28 -0
- package/dist/components/list/list-item.svelte.d.ts +30 -0
- package/dist/components/list/list-root.svelte +28 -0
- package/dist/components/list/list-root.svelte.d.ts +30 -0
- package/dist/components/list/list-title.svelte +29 -0
- package/dist/components/list/list-title.svelte.d.ts +30 -0
- package/dist/components/menu/atoms.d.ts +3 -0
- package/dist/components/menu/atoms.js +3 -0
- package/dist/components/menu/attachments.svelte.d.ts +2 -0
- package/dist/components/menu/attachments.svelte.js +5 -0
- package/dist/components/menu/index.d.ts +2 -0
- package/dist/components/menu/index.js +2 -0
- package/dist/components/menu/menu-item.svelte +56 -0
- package/dist/components/menu/menu-item.svelte.d.ts +37 -0
- package/dist/components/menu/menu-list.svelte +44 -0
- package/dist/components/menu/menu-list.svelte.d.ts +36 -0
- package/dist/components/menu/menu.stories.svelte +36 -0
- package/dist/components/menu/menu.stories.svelte.d.ts +3 -0
- package/dist/components/popover/atoms.d.ts +5 -0
- package/dist/components/popover/atoms.js +5 -0
- package/dist/components/popover/attachments.svelte.d.ts +3 -0
- package/dist/components/popover/attachments.svelte.js +18 -0
- package/dist/components/popover/bond.svelte.d.ts +77 -0
- package/dist/components/popover/bond.svelte.js +203 -0
- package/dist/components/popover/index.d.ts +3 -0
- package/dist/components/popover/index.js +3 -0
- package/dist/components/popover/popover-arrow.svelte +121 -0
- package/dist/components/popover/popover-arrow.svelte.d.ts +26 -0
- package/dist/components/popover/popover-content.svelte +153 -0
- package/dist/components/popover/popover-content.svelte.d.ts +41 -0
- package/dist/components/popover/popover-indicator.svelte +48 -0
- package/dist/components/popover/popover-indicator.svelte.d.ts +12 -0
- package/dist/components/popover/popover-root.svelte +63 -0
- package/dist/components/popover/popover-root.svelte.d.ts +21 -0
- package/dist/components/popover/popover-trigger.svelte +63 -0
- package/dist/components/popover/popover-trigger.svelte.d.ts +32 -0
- package/dist/components/popover/popover.stories.svelte +66 -0
- package/dist/components/popover/popover.stories.svelte.d.ts +3 -0
- package/dist/components/portal/active-portal.svelte +16 -0
- package/dist/components/portal/active-portal.svelte.d.ts +13 -0
- package/dist/components/portal/atoms.d.ts +2 -0
- package/dist/components/portal/atoms.js +2 -0
- package/dist/components/portal/attachements.svelte.d.ts +2 -0
- package/dist/components/portal/attachements.svelte.js +5 -0
- package/dist/components/portal/bond.svelte.d.ts +27 -0
- package/dist/components/portal/bond.svelte.js +54 -0
- package/dist/components/portal/index.d.ts +7 -0
- package/dist/components/portal/index.js +7 -0
- package/dist/components/portal/portal-inner.svelte +55 -0
- package/dist/components/portal/portal-inner.svelte.d.ts +25 -0
- package/dist/components/portal/portal-root.svelte +97 -0
- package/dist/components/portal/portal-root.svelte.d.ts +36 -0
- package/dist/components/portal/portals/bond.svelte.d.ts +20 -0
- package/dist/components/portal/portals/bond.svelte.js +36 -0
- package/dist/components/portal/portals/index.d.ts +2 -0
- package/dist/components/portal/portals/index.js +2 -0
- package/dist/components/portal/portals/portals.svelte +17 -0
- package/dist/components/portal/portals/portals.svelte.d.ts +9 -0
- package/dist/components/portal/teleport.svelte +49 -0
- package/dist/components/portal/teleport.svelte.d.ts +29 -0
- package/dist/components/portal/utils.d.ts +1 -0
- package/dist/components/portal/utils.js +19 -0
- package/dist/components/radio/context.d.ts +10 -0
- package/dist/components/radio/context.js +8 -0
- package/dist/components/radio/index.d.ts +2 -0
- package/dist/components/radio/index.js +2 -0
- package/dist/components/radio/radio-group.stories.svelte +50 -0
- package/dist/components/radio/radio-group.stories.svelte.d.ts +6 -0
- package/dist/components/radio/radio-group.svelte +53 -0
- package/dist/components/radio/radio-group.svelte.d.ts +13 -0
- package/dist/components/radio/radio.stories.svelte +26 -0
- package/dist/components/radio/radio.stories.svelte.d.ts +6 -0
- package/dist/components/radio/radio.svelte +113 -0
- package/dist/components/radio/radio.svelte.d.ts +38 -0
- package/dist/components/radio/types.svelte +0 -0
- package/dist/components/radio/types.svelte.d.ts +26 -0
- package/dist/components/root/bond.svelte.d.ts +26 -0
- package/dist/components/root/bond.svelte.js +36 -0
- package/dist/components/root/index.d.ts +2 -0
- package/dist/components/root/index.js +2 -0
- package/dist/components/root/root.css +161 -0
- package/dist/components/root/root.svelte +108 -0
- package/dist/components/root/root.svelte.d.ts +8 -0
- package/dist/components/scrollable/atoms.d.ts +5 -0
- package/dist/components/scrollable/atoms.js +5 -0
- package/dist/components/scrollable/attachments.svelte.d.ts +2 -0
- package/dist/components/scrollable/attachments.svelte.js +5 -0
- package/dist/components/scrollable/bond.svelte.d.ts +268 -0
- package/dist/components/scrollable/bond.svelte.js +481 -0
- package/dist/components/scrollable/index.d.ts +7 -0
- package/dist/components/scrollable/index.js +3 -0
- package/dist/components/scrollable/scrollable-container.svelte +90 -0
- package/dist/components/scrollable/scrollable-container.svelte.d.ts +30 -0
- package/dist/components/scrollable/scrollable-content.svelte +60 -0
- package/dist/components/scrollable/scrollable-content.svelte.d.ts +30 -0
- package/dist/components/scrollable/scrollable-root.svelte +128 -0
- package/dist/components/scrollable/scrollable-root.svelte.d.ts +46 -0
- package/dist/components/scrollable/scrollable-thumb.svelte +91 -0
- package/dist/components/scrollable/scrollable-thumb.svelte.d.ts +31 -0
- package/dist/components/scrollable/scrollable-track.svelte +75 -0
- package/dist/components/scrollable/scrollable-track.svelte.d.ts +31 -0
- package/dist/components/scrollable/scrollable.stories.svelte +126 -0
- package/dist/components/scrollable/scrollable.stories.svelte.d.ts +26 -0
- package/dist/components/sidebar/atoms.d.ts +2 -0
- package/dist/components/sidebar/atoms.js +2 -0
- package/dist/components/sidebar/attachments.svelte.d.ts +3 -0
- package/dist/components/sidebar/attachments.svelte.js +21 -0
- package/dist/components/sidebar/bond.svelte.d.ts +35 -0
- package/dist/components/sidebar/bond.svelte.js +55 -0
- package/dist/components/sidebar/index.d.ts +2 -0
- package/dist/components/sidebar/index.js +2 -0
- package/dist/components/sidebar/sidebar-content.svelte +62 -0
- package/dist/components/sidebar/sidebar-content.svelte.d.ts +33 -0
- package/dist/components/sidebar/sidebar-root.svelte +96 -0
- package/dist/components/sidebar/sidebar-root.svelte.d.ts +42 -0
- package/dist/components/sidebar/sidebar.stories.svelte +52 -0
- package/dist/components/sidebar/sidebar.stories.svelte.d.ts +3 -0
- package/dist/components/stack/atoms.d.ts +2 -0
- package/dist/components/stack/atoms.js +2 -0
- package/dist/components/stack/index.d.ts +1 -0
- package/dist/components/stack/index.js +1 -0
- package/dist/components/stack/stack-item.svelte +28 -0
- package/dist/components/stack/stack-item.svelte.d.ts +30 -0
- package/dist/components/stack/stack-root.svelte +37 -0
- package/dist/components/stack/stack-root.svelte.d.ts +26 -0
- package/dist/components/stack/stack.css +8 -0
- package/dist/components/tabs/atoms.d.ts +3 -0
- package/dist/components/tabs/atoms.js +3 -0
- package/dist/components/tabs/attachments.svelte.d.ts +2 -0
- package/dist/components/tabs/attachments.svelte.js +5 -0
- package/dist/components/tabs/bond.svelte.d.ts +43 -0
- package/dist/components/tabs/bond.svelte.js +88 -0
- package/dist/components/tabs/index.d.ts +2 -0
- package/dist/components/tabs/index.js +2 -0
- package/dist/components/tabs/tab/atoms.d.ts +4 -0
- package/dist/components/tabs/tab/atoms.js +4 -0
- package/dist/components/tabs/tab/attachments.svelte.d.ts +3 -0
- package/dist/components/tabs/tab/attachments.svelte.js +6 -0
- package/dist/components/tabs/tab/bond.svelte.d.ts +53 -0
- package/dist/components/tabs/tab/bond.svelte.js +110 -0
- package/dist/components/tabs/tab/index.d.ts +1 -0
- package/dist/components/tabs/tab/index.js +1 -0
- package/dist/components/tabs/tab/tab-body.svelte +68 -0
- package/dist/components/tabs/tab/tab-body.svelte.d.ts +32 -0
- package/dist/components/tabs/tab/tab-description.svelte +53 -0
- package/dist/components/tabs/tab/tab-description.svelte.d.ts +32 -0
- package/dist/components/tabs/tab/tab-header.svelte +84 -0
- package/dist/components/tabs/tab/tab-header.svelte.d.ts +35 -0
- package/dist/components/tabs/tab/tab-root.svelte +91 -0
- package/dist/components/tabs/tab/tab-root.svelte.d.ts +45 -0
- package/dist/components/tabs/tabs-body.svelte +48 -0
- package/dist/components/tabs/tabs-body.svelte.d.ts +36 -0
- package/dist/components/tabs/tabs-header.svelte +49 -0
- package/dist/components/tabs/tabs-header.svelte.d.ts +36 -0
- package/dist/components/tabs/tabs-root.svelte +75 -0
- package/dist/components/tabs/tabs-root.svelte.d.ts +44 -0
- package/dist/components/tabs/tabs.stories.svelte +59 -0
- package/dist/components/tabs/tabs.stories.svelte.d.ts +3 -0
- package/dist/components/textarea/atoms.d.ts +2 -0
- package/dist/components/textarea/atoms.js +2 -0
- package/dist/components/textarea/index.d.ts +1 -0
- package/dist/components/textarea/index.js +1 -0
- package/dist/components/textarea/textarea-input.svelte +7 -0
- package/dist/components/textarea/textarea-input.svelte.d.ts +6 -0
- package/dist/components/textarea/textarea-root.svelte +12 -0
- package/dist/components/textarea/textarea-root.svelte.d.ts +13 -0
- package/dist/components/toast/atoms.d.ts +3 -0
- package/dist/components/toast/atoms.js +3 -0
- package/dist/components/toast/attachments.svelte.d.ts +2 -0
- package/dist/components/toast/attachments.svelte.js +5 -0
- package/dist/components/toast/bond.d.ts +35 -0
- package/dist/components/toast/bond.js +59 -0
- package/dist/components/toast/index.d.ts +1 -0
- package/dist/components/toast/index.js +1 -0
- package/dist/components/toast/toast-description.svelte +45 -0
- package/dist/components/toast/toast-description.svelte.d.ts +33 -0
- package/dist/components/toast/toast-root.svelte +77 -0
- package/dist/components/toast/toast-root.svelte.d.ts +42 -0
- package/dist/components/toast/toast-title.svelte +46 -0
- package/dist/components/toast/toast-title.svelte.d.ts +34 -0
- package/dist/components/tooltip/atoms.d.ts +2 -0
- package/dist/components/tooltip/atoms.js +2 -0
- package/dist/components/tooltip/attachments.svelte.d.ts +2 -0
- package/dist/components/tooltip/attachments.svelte.js +5 -0
- package/dist/components/tooltip/index.d.ts +1 -0
- package/dist/components/tooltip/index.js +1 -0
- package/dist/components/tooltip/tooltip-trigger.svelte +37 -0
- package/dist/components/tooltip/tooltip-trigger.svelte.d.ts +6 -0
- package/dist/components/tooltip/tooltip.stories.svelte +35 -0
- package/dist/components/tooltip/tooltip.stories.svelte.d.ts +3 -0
- package/dist/components/tree/atoms.d.ts +4 -0
- package/dist/components/tree/atoms.js +4 -0
- package/dist/components/tree/attachments.svelte.d.ts +2 -0
- package/dist/components/tree/attachments.svelte.js +5 -0
- package/dist/components/tree/bond.svelte.d.ts +48 -0
- package/dist/components/tree/bond.svelte.js +93 -0
- package/dist/components/tree/index.d.ts +1 -0
- package/dist/components/tree/index.js +1 -0
- package/dist/components/tree/tree-body.svelte +56 -0
- package/dist/components/tree/tree-body.svelte.d.ts +34 -0
- package/dist/components/tree/tree-header.svelte +76 -0
- package/dist/components/tree/tree-header.svelte.d.ts +35 -0
- package/dist/components/tree/tree-indicator.svelte +60 -0
- package/dist/components/tree/tree-indicator.svelte.d.ts +32 -0
- package/dist/components/tree/tree-root.svelte +87 -0
- package/dist/components/tree/tree-root.svelte.d.ts +41 -0
- package/dist/components/tree/tree.stories.svelte +134 -0
- package/dist/components/tree/tree.stories.svelte.d.ts +3 -0
- package/dist/components/virtual/virtual-root.svelte +258 -0
- package/dist/components/virtual/virtual-root.svelte.d.ts +42 -0
- package/dist/context/index.d.ts +1 -0
- package/dist/context/index.js +1 -0
- package/dist/context/preset.svelte.d.ts +12 -0
- package/dist/context/preset.svelte.js +15 -0
- package/dist/helpers/injector.svelte +60 -0
- package/dist/helpers/injector.svelte.d.ts +34 -0
- package/dist/icons/icon-arrow-down.svelte +11 -0
- package/dist/icons/icon-arrow-down.svelte.d.ts +26 -0
- package/dist/icons/icon-checkmark.svelte +6 -0
- package/dist/icons/icon-checkmark.svelte.d.ts +26 -0
- package/dist/icons/icon-close.svelte +9 -0
- package/dist/icons/icon-close.svelte.d.ts +26 -0
- package/dist/icons/icon-more-vert.svelte +6 -0
- package/dist/icons/icon-more-vert.svelte.d.ts +26 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +8 -0
- package/dist/runes/color-scheme.svelte.d.ts +4 -0
- package/dist/runes/color-scheme.svelte.js +21 -0
- package/dist/runes/container.svelte.d.ts +7 -0
- package/dist/runes/container.svelte.js +26 -0
- package/dist/runes/index.d.ts +2 -0
- package/dist/runes/index.js +2 -0
- package/dist/runes/lifecycles.svelte.d.ts +3 -0
- package/dist/runes/lifecycles.svelte.js +14 -0
- package/dist/runes/viewport.svelte.d.ts +7 -0
- package/dist/runes/viewport.svelte.js +21 -0
- package/dist/shared/bond.svelte.d.ts +22 -0
- package/dist/shared/bond.svelte.js +39 -0
- package/dist/shared/dom.svelte.d.ts +0 -0
- package/dist/shared/dom.svelte.js +1 -0
- package/dist/shared/index.d.ts +2 -0
- package/dist/shared/index.js +2 -0
- package/dist/shared/motion.d.ts +8 -0
- package/dist/shared/motion.js +8 -0
- package/dist/types/index.d.ts +17 -0
- package/dist/types/index.js +1 -0
- package/dist/utils/dom.svelte.d.ts +2 -0
- package/dist/utils/dom.svelte.js +6 -0
- package/dist/utils/gsap.d.ts +2 -0
- package/dist/utils/gsap.js +8 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.js +12 -0
- package/dist/utils/state.d.ts +3 -0
- package/dist/utils/state.js +18 -0
- package/package.json +435 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
import { createAttachmentKey } from 'svelte/attachments';
|
|
2
|
+
import { getContext, setContext } from 'svelte';
|
|
3
|
+
import { Bond, BondState } from '../../shared/bond.svelte';
|
|
4
|
+
/**
|
|
5
|
+
* Main bond class that manages scrollable state and DOM element interactions
|
|
6
|
+
* Extends the base Bond class with scrollable-specific functionality
|
|
7
|
+
*/
|
|
8
|
+
export class ScrollableBond extends Bond {
|
|
9
|
+
/** Unique key for identifying this bond type in the context system */
|
|
10
|
+
static CONTEXT_KEY = '@atoms/context/scrollable';
|
|
11
|
+
/** Reference to parent scrollable bond (for nested scrollable areas) */
|
|
12
|
+
#parent;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new scrollable bond instance
|
|
15
|
+
* @param state - The scrollable state instance to manage
|
|
16
|
+
*/
|
|
17
|
+
constructor(state) {
|
|
18
|
+
super(state);
|
|
19
|
+
// Capture any existing scrollable context as parent
|
|
20
|
+
this.#parent = ScrollableBond.get();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Gets the parent scrollable bond if this is a nested scrollable
|
|
24
|
+
* @returns The parent bond or undefined if this is the root scrollable
|
|
25
|
+
*/
|
|
26
|
+
get parent() {
|
|
27
|
+
return this.#parent;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Shares this bond instance through the context system
|
|
31
|
+
* Makes this bond available to child components
|
|
32
|
+
* @returns This bond instance for chaining
|
|
33
|
+
*/
|
|
34
|
+
share() {
|
|
35
|
+
ScrollableBond.set(this);
|
|
36
|
+
return this;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Retrieves the current scrollable bond from context
|
|
40
|
+
* @returns The active scrollable bond or undefined if none exists
|
|
41
|
+
*/
|
|
42
|
+
static get() {
|
|
43
|
+
return getContext(ScrollableBond.CONTEXT_KEY);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Sets the scrollable bond in context for child components
|
|
47
|
+
* @param bond - The bond instance to set in context
|
|
48
|
+
* @returns The bond that was set
|
|
49
|
+
*/
|
|
50
|
+
static set(bond) {
|
|
51
|
+
return setContext(ScrollableBond.CONTEXT_KEY, bond);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates props for the root element with hidden overflow
|
|
55
|
+
* The root element contains the entire scrollable interface but doesn't scroll itself
|
|
56
|
+
* @param props - Additional props to merge with the generated props
|
|
57
|
+
* @returns Object containing all necessary props for the root element
|
|
58
|
+
*/
|
|
59
|
+
root(props = {}) {
|
|
60
|
+
return {
|
|
61
|
+
'data-atom': this.id ?? '',
|
|
62
|
+
'data-kind': 'scrollable-root',
|
|
63
|
+
'data-disabled': this.state.props.disabled,
|
|
64
|
+
'data-open': this.state.props.open,
|
|
65
|
+
...props,
|
|
66
|
+
// Attach the root DOM element
|
|
67
|
+
[createAttachmentKey()]: (node) => {
|
|
68
|
+
this.elements.root = node;
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Creates props for the scrollable container element
|
|
74
|
+
* This element is the actual scrollable area that handles scroll events
|
|
75
|
+
* @param props - Additional props to merge with the generated props
|
|
76
|
+
* @returns Object containing all necessary props for the container element
|
|
77
|
+
*/
|
|
78
|
+
container(props = {}) {
|
|
79
|
+
return {
|
|
80
|
+
'data-atom': this.id ?? '',
|
|
81
|
+
'data-kind': 'scrollable-container',
|
|
82
|
+
// Handle scroll events and update internal state
|
|
83
|
+
onscroll: (e) => {
|
|
84
|
+
this.updateScrollState();
|
|
85
|
+
if ('onscroll' in props && typeof props.onscroll === 'function') {
|
|
86
|
+
props.onscroll(e);
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
...props,
|
|
90
|
+
// Attach the container DOM element and initialize scroll state
|
|
91
|
+
[createAttachmentKey()]: (node) => {
|
|
92
|
+
this.elements.container = node;
|
|
93
|
+
this.updateScrollState();
|
|
94
|
+
}
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Creates props for the scrollable content wrapper element
|
|
99
|
+
* This element defines the boundaries and size of the scrollable content
|
|
100
|
+
* @param props - Additional props to merge with the generated props
|
|
101
|
+
* @returns Object containing all necessary props for the content element
|
|
102
|
+
*/
|
|
103
|
+
content(props = {}) {
|
|
104
|
+
return {
|
|
105
|
+
'data-atom': this.id ?? '',
|
|
106
|
+
'data-kind': 'scrollable-content',
|
|
107
|
+
...props,
|
|
108
|
+
// Attach the content DOM element for measurement and interaction
|
|
109
|
+
[createAttachmentKey()]: (node) => {
|
|
110
|
+
this.elements.content = node;
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Creates props for the horizontal scrollbar track element
|
|
116
|
+
* Provides click-to-scroll functionality for horizontal navigation
|
|
117
|
+
* @param props - Additional props to merge with the generated props
|
|
118
|
+
* @returns Object containing all necessary props for the horizontal track element
|
|
119
|
+
*/
|
|
120
|
+
trackX(props = {}) {
|
|
121
|
+
return {
|
|
122
|
+
'data-atom': this.id ?? '',
|
|
123
|
+
'data-kind': 'scrollable-track-x',
|
|
124
|
+
'data-visible': this.canScrollX,
|
|
125
|
+
...props,
|
|
126
|
+
// Handle click-to-scroll on the horizontal track
|
|
127
|
+
onclick: (e) => {
|
|
128
|
+
this.handleTrackClick(e, 'x');
|
|
129
|
+
if ('onclick' in props && typeof props.onclick === 'function') {
|
|
130
|
+
props.onclick(e);
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
// Attach the horizontal track DOM element
|
|
134
|
+
[createAttachmentKey()]: (node) => {
|
|
135
|
+
this.elements.trackX = node;
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Creates props for the vertical scrollbar track element
|
|
141
|
+
* Provides click-to-scroll functionality for vertical navigation
|
|
142
|
+
* @param props - Additional props to merge with the generated props
|
|
143
|
+
* @returns Object containing all necessary props for the vertical track element
|
|
144
|
+
*/
|
|
145
|
+
trackY(props = {}) {
|
|
146
|
+
return {
|
|
147
|
+
'data-atom': this.id ?? '',
|
|
148
|
+
'data-kind': 'scrollable-track-y',
|
|
149
|
+
'data-visible': this.canScrollY,
|
|
150
|
+
...props,
|
|
151
|
+
// Handle click-to-scroll on the vertical track
|
|
152
|
+
onclick: (e) => {
|
|
153
|
+
this.handleTrackClick(e, 'y');
|
|
154
|
+
if ('onclick' in props && typeof props.onclick === 'function') {
|
|
155
|
+
props.onclick(e);
|
|
156
|
+
}
|
|
157
|
+
},
|
|
158
|
+
// Attach the vertical track DOM element
|
|
159
|
+
[createAttachmentKey()]: (node) => {
|
|
160
|
+
this.elements.trackY = node;
|
|
161
|
+
}
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Creates props for the horizontal scrollbar thumb element
|
|
166
|
+
* Provides drag-to-scroll functionality and automatic positioning/sizing
|
|
167
|
+
* @param props - Additional props to merge with the generated props
|
|
168
|
+
* @returns Object containing all necessary props for the horizontal thumb element
|
|
169
|
+
*/
|
|
170
|
+
thumbX(props = {}) {
|
|
171
|
+
return {
|
|
172
|
+
'data-atom': this.id ?? '',
|
|
173
|
+
'data-kind': 'scrollable-thumb-x',
|
|
174
|
+
...props,
|
|
175
|
+
// Dynamically position and size the thumb based on scroll state
|
|
176
|
+
style: `left: ${this.getThumbXPosition()}%; width: ${this.getThumbXSize()}%;`,
|
|
177
|
+
// Handle drag-to-scroll interaction
|
|
178
|
+
onmousedown: (e) => {
|
|
179
|
+
this.handleThumbDrag(e, 'x');
|
|
180
|
+
if ('onmousedown' in props && typeof props.onmousedown === 'function') {
|
|
181
|
+
props.onmousedown(e);
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
// Attach the horizontal thumb DOM element
|
|
185
|
+
[createAttachmentKey()]: (node) => {
|
|
186
|
+
this.elements.thumbX = node;
|
|
187
|
+
}
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Creates props for the vertical scrollbar thumb element
|
|
192
|
+
* Provides drag-to-scroll functionality and automatic positioning/sizing
|
|
193
|
+
* @param props - Additional props to merge with the generated props
|
|
194
|
+
* @returns Object containing all necessary props for the vertical thumb element
|
|
195
|
+
*/
|
|
196
|
+
thumbY(props = {}) {
|
|
197
|
+
return {
|
|
198
|
+
'data-atom': this.id ?? '',
|
|
199
|
+
'data-kind': 'scrollable-thumb-y',
|
|
200
|
+
...props,
|
|
201
|
+
// Dynamically position and size the thumb based on scroll state
|
|
202
|
+
style: `top: ${this.getThumbYPosition()}%; height: ${this.getThumbYSize()}%;`,
|
|
203
|
+
// Handle drag-to-scroll interaction
|
|
204
|
+
onmousedown: (e) => {
|
|
205
|
+
this.handleThumbDrag(e, 'y');
|
|
206
|
+
if ('onmousedown' in props && typeof props.onmousedown === 'function') {
|
|
207
|
+
props.onmousedown(e);
|
|
208
|
+
}
|
|
209
|
+
},
|
|
210
|
+
// Attach the vertical thumb DOM element
|
|
211
|
+
[createAttachmentKey()]: (node) => {
|
|
212
|
+
this.elements.thumbY = node;
|
|
213
|
+
}
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Creates props for a unified track element that can be oriented horizontally or vertically
|
|
218
|
+
* This method provides a single interface for both horizontal and vertical tracks
|
|
219
|
+
* @param orientation - The track orientation ('horizontal' or 'vertical')
|
|
220
|
+
* @param props - Additional props to merge with the generated props
|
|
221
|
+
* @returns Object containing all necessary props for the track element
|
|
222
|
+
*/
|
|
223
|
+
track(orientation, props = {}) {
|
|
224
|
+
const isHorizontal = orientation === 'horizontal';
|
|
225
|
+
return {
|
|
226
|
+
'data-atom': this.id ?? '',
|
|
227
|
+
'data-kind': `scrollable-track-${isHorizontal ? 'x' : 'y'}`,
|
|
228
|
+
'data-direction': orientation,
|
|
229
|
+
'data-visible': isHorizontal ? this.canScrollX : this.canScrollY,
|
|
230
|
+
...props,
|
|
231
|
+
// Handle click-to-scroll based on orientation
|
|
232
|
+
onclick: (e) => {
|
|
233
|
+
this.handleTrackClick(e, isHorizontal ? 'x' : 'y');
|
|
234
|
+
if ('onclick' in props && typeof props.onclick === 'function') {
|
|
235
|
+
props.onclick(e);
|
|
236
|
+
}
|
|
237
|
+
},
|
|
238
|
+
[createAttachmentKey()]: (node) => {
|
|
239
|
+
// Set both the unified track reference and the specific axis reference
|
|
240
|
+
if (isHorizontal) {
|
|
241
|
+
this.elements.trackX = node;
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
this.elements.trackY = node;
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
};
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Creates props for a unified thumb element that can be oriented horizontally or vertically
|
|
251
|
+
* This method provides a single interface for both horizontal and vertical thumbs
|
|
252
|
+
* @param orientation - The thumb orientation ('horizontal' or 'vertical')
|
|
253
|
+
* @param props - Additional props to merge with the generated props
|
|
254
|
+
* @returns Object containing all necessary props for the thumb element
|
|
255
|
+
*/
|
|
256
|
+
thumb(orientation, props = {}) {
|
|
257
|
+
const isHorizontal = orientation === 'horizontal';
|
|
258
|
+
// Calculate position and size based on orientation
|
|
259
|
+
// const position = isHorizontal ? this.getThumbXPosition() : this.getThumbYPosition();
|
|
260
|
+
// const size = isHorizontal ? this.getThumbXSize() : this.getThumbYSize();
|
|
261
|
+
// const styleProperty = isHorizontal ? 'left' : 'top';
|
|
262
|
+
// const sizeProperty = isHorizontal ? 'width' : 'height';
|
|
263
|
+
return {
|
|
264
|
+
'data-atom': this.id ?? '',
|
|
265
|
+
'data-kind': `scrollable-thumb-${isHorizontal ? 'x' : 'y'}`,
|
|
266
|
+
'data-direction': orientation,
|
|
267
|
+
...props,
|
|
268
|
+
// Handle drag-to-scroll based on orientation
|
|
269
|
+
onmousedown: (e) => {
|
|
270
|
+
this.handleThumbDrag(e, isHorizontal ? 'x' : 'y');
|
|
271
|
+
if ('onmousedown' in props && typeof props.onmousedown === 'function') {
|
|
272
|
+
props.onmousedown(e);
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
[createAttachmentKey()]: (node) => {
|
|
276
|
+
// Set both the unified thumb reference and the specific axis reference
|
|
277
|
+
if (isHorizontal) {
|
|
278
|
+
this.elements.thumbX = node;
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
this.elements.thumbY = node;
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Handles click events on scrollbar tracks for jump-to-position scrolling
|
|
288
|
+
* Calculates the click position as a percentage and scrolls to that position
|
|
289
|
+
* @param e - The mouse event from the track click
|
|
290
|
+
* @param axis - The scroll axis ('x' for horizontal, 'y' for vertical)
|
|
291
|
+
*/
|
|
292
|
+
handleTrackClick(e, axis) {
|
|
293
|
+
const container = this.elements.container;
|
|
294
|
+
const track = axis === 'x' ? this.elements.trackX : this.elements.trackY;
|
|
295
|
+
if (!container || !track)
|
|
296
|
+
return;
|
|
297
|
+
// Calculate click position relative to track boundaries
|
|
298
|
+
const rect = track.getBoundingClientRect();
|
|
299
|
+
const clickPosition = axis === 'x' ? e.clientX - rect.left : e.clientY - rect.top;
|
|
300
|
+
const trackSize = axis === 'x' ? rect.width : rect.height;
|
|
301
|
+
const percentage = clickPosition / trackSize;
|
|
302
|
+
// Apply scroll based on calculated percentage
|
|
303
|
+
if (axis === 'x') {
|
|
304
|
+
const maxScrollX = container.scrollWidth - container.clientWidth;
|
|
305
|
+
container.scrollLeft = percentage * maxScrollX;
|
|
306
|
+
}
|
|
307
|
+
else {
|
|
308
|
+
const maxScrollY = container.scrollHeight - container.clientHeight;
|
|
309
|
+
container.scrollTop = percentage * maxScrollY;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Handles mouse drag events on scrollbar thumbs for precise scrolling control
|
|
314
|
+
* Sets up mouse event listeners for drag-to-scroll functionality
|
|
315
|
+
* @param e - The initial mousedown event on the thumb
|
|
316
|
+
* @param axis - The scroll axis ('x' for horizontal, 'y' for vertical)
|
|
317
|
+
*/
|
|
318
|
+
handleThumbDrag(e, axis) {
|
|
319
|
+
e.preventDefault();
|
|
320
|
+
// Set scrolling state to true
|
|
321
|
+
this.state.props.isScrolling = true;
|
|
322
|
+
const container = this.elements.container;
|
|
323
|
+
const track = axis === 'x' ? this.elements.trackX : this.elements.trackY;
|
|
324
|
+
if (!container || !track)
|
|
325
|
+
return;
|
|
326
|
+
// Capture initial state for drag calculations
|
|
327
|
+
const trackRect = track.getBoundingClientRect();
|
|
328
|
+
const startPos = axis === 'x' ? e.clientX : e.clientY;
|
|
329
|
+
const startScroll = axis === 'x' ? container.scrollLeft : container.scrollTop;
|
|
330
|
+
/**
|
|
331
|
+
* Handles mouse movement during thumb drag
|
|
332
|
+
* Calculates scroll position based on cursor movement relative to track size
|
|
333
|
+
*/
|
|
334
|
+
const onMouseMove = (moveE) => {
|
|
335
|
+
const currentPos = axis === 'x' ? moveE.clientX : moveE.clientY;
|
|
336
|
+
const delta = currentPos - startPos;
|
|
337
|
+
const trackSize = axis === 'x' ? trackRect.width : trackRect.height;
|
|
338
|
+
// Apply proportional scrolling based on thumb movement
|
|
339
|
+
if (axis === 'x') {
|
|
340
|
+
const maxScrollX = container.scrollWidth - container.clientWidth;
|
|
341
|
+
const scrollDelta = (delta / trackSize) * maxScrollX;
|
|
342
|
+
container.scrollLeft = Math.max(0, Math.min(maxScrollX, startScroll + scrollDelta));
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
const maxScrollY = container.scrollHeight - container.clientHeight;
|
|
346
|
+
const scrollDelta = (delta / trackSize) * maxScrollY;
|
|
347
|
+
container.scrollTop = Math.max(0, Math.min(maxScrollY, startScroll + scrollDelta));
|
|
348
|
+
}
|
|
349
|
+
};
|
|
350
|
+
/**
|
|
351
|
+
* Cleans up mouse event listeners when drag ends
|
|
352
|
+
*/
|
|
353
|
+
const onMouseUp = () => {
|
|
354
|
+
// Set scrolling state to true
|
|
355
|
+
this.state.props.isScrolling = false;
|
|
356
|
+
document.removeEventListener('mousemove', onMouseMove);
|
|
357
|
+
document.removeEventListener('mouseup', onMouseUp);
|
|
358
|
+
};
|
|
359
|
+
// Set up global mouse event listeners for drag interaction
|
|
360
|
+
document.addEventListener('mousemove', onMouseMove);
|
|
361
|
+
document.addEventListener('mouseup', onMouseUp);
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Scrolls to an absolute position in the scrollable area
|
|
365
|
+
* @param x - The horizontal scroll position in pixels
|
|
366
|
+
* @param y - The vertical scroll position in pixels
|
|
367
|
+
*/
|
|
368
|
+
scrollTo(x, y) {
|
|
369
|
+
const container = this.elements.container;
|
|
370
|
+
if (container) {
|
|
371
|
+
container.scrollTo(x, y);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
/**
|
|
375
|
+
* Scrolls by a relative amount from the current position
|
|
376
|
+
* @param x - The horizontal scroll delta in pixels
|
|
377
|
+
* @param y - The vertical scroll delta in pixels
|
|
378
|
+
*/
|
|
379
|
+
scrollBy(x, y) {
|
|
380
|
+
const container = this.elements.container;
|
|
381
|
+
if (container) {
|
|
382
|
+
container.scrollBy(x, y);
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Scrolls an element into view within the scrollable area
|
|
387
|
+
* @param element - The element to scroll into view
|
|
388
|
+
* @param options - Optional scroll behavior configuration
|
|
389
|
+
*/
|
|
390
|
+
scrollIntoView(element, options) {
|
|
391
|
+
const container = this.elements.container;
|
|
392
|
+
if (container && container.contains(element)) {
|
|
393
|
+
element.scrollIntoView(options);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
/**
|
|
397
|
+
* Updates the internal scroll state based on current DOM measurements
|
|
398
|
+
* This method should be called when the scroll position or content size changes
|
|
399
|
+
* TODO: Implement reactive binding updates for scroll properties
|
|
400
|
+
*/
|
|
401
|
+
updateScrollState() {
|
|
402
|
+
const container = this.elements.container;
|
|
403
|
+
if (!container)
|
|
404
|
+
return;
|
|
405
|
+
this.state.props.scrollX = container.scrollLeft;
|
|
406
|
+
this.state.props.scrollY = container.scrollTop;
|
|
407
|
+
this.state.props.scrollWidth = container.scrollWidth;
|
|
408
|
+
this.state.props.scrollHeight = container.scrollHeight;
|
|
409
|
+
this.state.props.clientWidth = container.clientWidth;
|
|
410
|
+
this.state.props.clientHeight = container.clientHeight;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* Calculates the horizontal thumb position as a percentage
|
|
414
|
+
* @returns The left position of the horizontal thumb (0-100%)
|
|
415
|
+
*/
|
|
416
|
+
getThumbXPosition() {
|
|
417
|
+
const { scrollX, clientWidth, scrollWidth } = this.state.props;
|
|
418
|
+
if (scrollWidth <= clientWidth)
|
|
419
|
+
return 0;
|
|
420
|
+
return (scrollX / (scrollWidth - clientWidth)) * 100;
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Calculates the vertical thumb position as a percentage
|
|
424
|
+
* @returns The top position of the vertical thumb (0-100%)
|
|
425
|
+
*/
|
|
426
|
+
getThumbYPosition() {
|
|
427
|
+
const { scrollY, clientHeight, scrollHeight } = this.state.props;
|
|
428
|
+
if (scrollHeight <= clientHeight)
|
|
429
|
+
return 0;
|
|
430
|
+
return (scrollY / (scrollHeight - clientHeight)) * 100;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Calculates the horizontal thumb size as a percentage
|
|
434
|
+
* @returns The width of the horizontal thumb (0-100%)
|
|
435
|
+
*/
|
|
436
|
+
getThumbXSize() {
|
|
437
|
+
const { clientWidth, scrollWidth } = this.state.props;
|
|
438
|
+
if (scrollWidth <= clientWidth)
|
|
439
|
+
return 100;
|
|
440
|
+
return (clientWidth / scrollWidth) * 100;
|
|
441
|
+
}
|
|
442
|
+
/**
|
|
443
|
+
* Calculates the vertical thumb size as a percentage
|
|
444
|
+
* @returns The height of the vertical thumb (0-100%)
|
|
445
|
+
*/
|
|
446
|
+
getThumbYSize() {
|
|
447
|
+
const { clientHeight, scrollHeight } = this.state.props;
|
|
448
|
+
if (scrollHeight <= clientHeight)
|
|
449
|
+
return 100;
|
|
450
|
+
return (clientHeight / scrollHeight) * 100;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Determines if horizontal scrolling is possible
|
|
454
|
+
* @returns True if content width exceeds visible area width
|
|
455
|
+
*/
|
|
456
|
+
get canScrollX() {
|
|
457
|
+
const { scrollWidth, clientWidth } = this.state.props;
|
|
458
|
+
return scrollWidth > clientWidth;
|
|
459
|
+
}
|
|
460
|
+
/**
|
|
461
|
+
* Determines if vertical scrolling is possible
|
|
462
|
+
* @returns True if content height exceeds visible area height
|
|
463
|
+
*/
|
|
464
|
+
get canScrollY() {
|
|
465
|
+
const { scrollHeight, clientHeight } = this.state.props;
|
|
466
|
+
return scrollHeight > clientHeight;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
/**
|
|
470
|
+
* Reactive state container for scrollable component properties
|
|
471
|
+
* Extends BondState to provide typed access to scroll-related data
|
|
472
|
+
*/
|
|
473
|
+
export class ScrollableState extends BondState {
|
|
474
|
+
/**
|
|
475
|
+
* Creates a new scrollable state instance
|
|
476
|
+
* @param props - Function that returns the current state properties
|
|
477
|
+
*/
|
|
478
|
+
constructor(props) {
|
|
479
|
+
super(props);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export * as Scrollable from './atoms';
|
|
2
|
+
export type * from './scrollable-root.svelte';
|
|
3
|
+
export type * from './scrollable-content.svelte';
|
|
4
|
+
export type * from './scrollable-track.svelte';
|
|
5
|
+
export type * from './scrollable-thumb.svelte';
|
|
6
|
+
export { ScrollableBond, type ScrollableDomElements, ScrollableState, type ScrollableStateProps } from './bond.svelte';
|
|
7
|
+
export { scrollable } from './attachments.svelte';
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
export type ScrollableContainerProps<T extends keyof HTMLElementTagNameMap> = Override<
|
|
3
|
+
HtmlAtomProps<T>,
|
|
4
|
+
{
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
}
|
|
7
|
+
>;
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<script lang="ts" generics="T extends keyof HTMLElementTagNameMap">
|
|
11
|
+
import type { Snippet } from 'svelte';
|
|
12
|
+
import { ScrollableBond } from './bond.svelte';
|
|
13
|
+
import type { Override } from '../../types';
|
|
14
|
+
import { resizeObserver } from '../../attachments/resize-observer.svelte';
|
|
15
|
+
import { HtmlAtom, type HtmlAtomProps } from '../atom';
|
|
16
|
+
import { getPreset } from '../../context';
|
|
17
|
+
|
|
18
|
+
const preset = getPreset('scrollable.content');
|
|
19
|
+
|
|
20
|
+
let {
|
|
21
|
+
class: klass = '',
|
|
22
|
+
as = preset?.as ?? 'div',
|
|
23
|
+
base = preset?.base as B,
|
|
24
|
+
children = undefined,
|
|
25
|
+
onmount = undefined,
|
|
26
|
+
ondestroy = undefined,
|
|
27
|
+
animate = undefined,
|
|
28
|
+
enter = undefined,
|
|
29
|
+
exit = undefined,
|
|
30
|
+
initial = undefined,
|
|
31
|
+
...restProps
|
|
32
|
+
}: ScrollableContainerProps<T> = $props();
|
|
33
|
+
|
|
34
|
+
const bond = ScrollableBond.get();
|
|
35
|
+
|
|
36
|
+
if (!bond) {
|
|
37
|
+
throw new Error('ScrollableContainer must be used within a ScrollableRoot');
|
|
38
|
+
}
|
|
39
|
+
</script>
|
|
40
|
+
|
|
41
|
+
<HtmlAtom
|
|
42
|
+
{@attach (node) => {
|
|
43
|
+
if (!bond) return;
|
|
44
|
+
|
|
45
|
+
return resizeObserver(() => {
|
|
46
|
+
bond.state.props.clientWidth = node.clientWidth;
|
|
47
|
+
bond.state.props.clientHeight = node.clientHeight;
|
|
48
|
+
bond.state.props.scrollWidth = node.scrollWidth;
|
|
49
|
+
bond.state.props.scrollHeight = node.scrollHeight;
|
|
50
|
+
})(node);
|
|
51
|
+
}}
|
|
52
|
+
{as}
|
|
53
|
+
{base}
|
|
54
|
+
class={['scrollable-container border-border h-full max-h-full w-full overflow-auto', klass]}
|
|
55
|
+
enter={enter?.bind(bond.state)}
|
|
56
|
+
exit={exit?.bind(bond.state)}
|
|
57
|
+
initial={initial?.bind(bond.state)}
|
|
58
|
+
animate={animate?.bind(bond.state)}
|
|
59
|
+
onmount={onmount?.bind(bond.state)}
|
|
60
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
61
|
+
{...bond.container()}
|
|
62
|
+
{...restProps}
|
|
63
|
+
>
|
|
64
|
+
{#if children}
|
|
65
|
+
{@render children()}
|
|
66
|
+
{/if}
|
|
67
|
+
</HtmlAtom>
|
|
68
|
+
|
|
69
|
+
<style>
|
|
70
|
+
:global(.scrollable-container) {
|
|
71
|
+
scrollbar-width: none; /* Firefox */
|
|
72
|
+
-ms-overflow-style: none; /* Internet Explorer 10+ */
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
:global(.scrollable-container::-webkit-scrollbar) {
|
|
76
|
+
display: none; /* WebKit */
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
:global(.scrollable-container[data-hide-scrollbar='true']) {
|
|
80
|
+
--scrollbar-width: 0px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
:global(.scrollable-container[data-hide-scrollbar='false']) {
|
|
84
|
+
--scrollbar-width: 16px;
|
|
85
|
+
/* margin-right: calc(-1 * var(--scrollbar-width, 16px));
|
|
86
|
+
margin-bottom: calc(-1 * var(--scrollbar-width, 16px));
|
|
87
|
+
padding-right: var(--scrollbar-width, 16px);
|
|
88
|
+
padding-bottom: var(--scrollbar-width, 16px); */
|
|
89
|
+
}
|
|
90
|
+
</style>
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export type ScrollableContainerProps<T extends keyof HTMLElementTagNameMap> = Override<HtmlAtomProps<T>, {
|
|
2
|
+
children?: Snippet;
|
|
3
|
+
}>;
|
|
4
|
+
import type { Snippet } from 'svelte';
|
|
5
|
+
import type { Override } from '../../types';
|
|
6
|
+
import { type HtmlAtomProps } from '../atom';
|
|
7
|
+
declare function $$render<T extends keyof HTMLElementTagNameMap>(): {
|
|
8
|
+
props: ScrollableContainerProps<T>;
|
|
9
|
+
exports: {};
|
|
10
|
+
bindings: "";
|
|
11
|
+
slots: {};
|
|
12
|
+
events: {};
|
|
13
|
+
};
|
|
14
|
+
declare class __sveltets_Render<T extends keyof HTMLElementTagNameMap> {
|
|
15
|
+
props(): ReturnType<typeof $$render<T>>['props'];
|
|
16
|
+
events(): ReturnType<typeof $$render<T>>['events'];
|
|
17
|
+
slots(): ReturnType<typeof $$render<T>>['slots'];
|
|
18
|
+
bindings(): "";
|
|
19
|
+
exports(): {};
|
|
20
|
+
}
|
|
21
|
+
interface $$IsomorphicComponent {
|
|
22
|
+
new <T extends keyof HTMLElementTagNameMap>(options: import('svelte').ComponentConstructorOptions<ReturnType<__sveltets_Render<T>['props']>>): import('svelte').SvelteComponent<ReturnType<__sveltets_Render<T>['props']>, ReturnType<__sveltets_Render<T>['events']>, ReturnType<__sveltets_Render<T>['slots']>> & {
|
|
23
|
+
$$bindings?: ReturnType<__sveltets_Render<T>['bindings']>;
|
|
24
|
+
} & ReturnType<__sveltets_Render<T>['exports']>;
|
|
25
|
+
<T extends keyof HTMLElementTagNameMap>(internal: unknown, props: ReturnType<__sveltets_Render<T>['props']> & {}): ReturnType<__sveltets_Render<T>['exports']>;
|
|
26
|
+
z_$$bindings?: ReturnType<__sveltets_Render<any>['bindings']>;
|
|
27
|
+
}
|
|
28
|
+
declare const ScrollableContainer: $$IsomorphicComponent;
|
|
29
|
+
type ScrollableContainer<T extends keyof HTMLElementTagNameMap> = InstanceType<typeof ScrollableContainer<T>>;
|
|
30
|
+
export default ScrollableContainer;
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
<script module lang="ts">
|
|
2
|
+
export type ScrollableContentProps<T extends keyof HTMLElementTagNameMap> = Override<
|
|
3
|
+
HtmlAtomProps<T>,
|
|
4
|
+
{
|
|
5
|
+
children?: Snippet;
|
|
6
|
+
}
|
|
7
|
+
>;
|
|
8
|
+
</script>
|
|
9
|
+
|
|
10
|
+
<script lang="ts" generics="T extends keyof HTMLElementTagNameMap">
|
|
11
|
+
import type { Snippet } from 'svelte';
|
|
12
|
+
import { ScrollableBond } from './bond.svelte';
|
|
13
|
+
import type { Override } from '../../types';
|
|
14
|
+
import { toClassValue } from '../../utils';
|
|
15
|
+
import { HtmlAtom, type HtmlAtomProps } from '../atom';
|
|
16
|
+
import { getPreset } from '../../context';
|
|
17
|
+
|
|
18
|
+
const bond = ScrollableBond.get();
|
|
19
|
+
const preset = getPreset('scrollable.content');
|
|
20
|
+
|
|
21
|
+
let {
|
|
22
|
+
class: klass = '',
|
|
23
|
+
as = preset?.as ?? 'div',
|
|
24
|
+
base = preset?.base as B,
|
|
25
|
+
children = undefined,
|
|
26
|
+
onmount = undefined,
|
|
27
|
+
ondestroy = undefined,
|
|
28
|
+
animate = undefined,
|
|
29
|
+
enter = undefined,
|
|
30
|
+
exit = undefined,
|
|
31
|
+
initial = undefined,
|
|
32
|
+
...restProps
|
|
33
|
+
}: ScrollableContentProps<T> = $props();
|
|
34
|
+
|
|
35
|
+
if (!bond) {
|
|
36
|
+
throw new Error('ScrollableContent must be used within a ScrollableRoot');
|
|
37
|
+
}
|
|
38
|
+
</script>
|
|
39
|
+
|
|
40
|
+
<HtmlAtom
|
|
41
|
+
{as}
|
|
42
|
+
{base}
|
|
43
|
+
class={[
|
|
44
|
+
'scrollable-content border-border h-full max-h-full',
|
|
45
|
+
toClassValue.apply(bond, [preset?.class]),
|
|
46
|
+
toClassValue.apply(bond, [klass])
|
|
47
|
+
]}
|
|
48
|
+
enter={enter?.bind(bond.state)}
|
|
49
|
+
exit={exit?.bind(bond.state)}
|
|
50
|
+
initial={initial?.bind(bond.state)}
|
|
51
|
+
animate={animate?.bind(bond.state)}
|
|
52
|
+
onmount={onmount?.bind(bond.state)}
|
|
53
|
+
ondestroy={ondestroy?.bind(bond.state)}
|
|
54
|
+
{...bond.content()}
|
|
55
|
+
{...restProps}
|
|
56
|
+
>
|
|
57
|
+
{#if children}
|
|
58
|
+
{@render children()}
|
|
59
|
+
{/if}
|
|
60
|
+
</HtmlAtom>
|