@mcp-b/web-components 0.2.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/LICENSE +21 -0
- package/README.md +49 -0
- package/dist/accordion-B1Q3kuP_.d.ts +373 -0
- package/dist/accordion-item-DvPfhpm8.js +307 -0
- package/dist/accordion-item-bPRIahNn.d.ts +63 -0
- package/dist/accordion-zDr-Br4V.js +483 -0
- package/dist/action-bar-CYsjmhwP.d.ts +29 -0
- package/dist/action-bar-CjN_UcnP.js +56 -0
- package/dist/alert-dialog-4CnO3Nb5.d.ts +60 -0
- package/dist/alert-dialog-D25Oi_TS.js +126 -0
- package/dist/avatar-Bje_KpZo.d.ts +141 -0
- package/dist/avatar-CRP0kW3x.js +224 -0
- package/dist/badge-Ct95U4UO.js +301 -0
- package/dist/badge-D1DNQrWn.d.ts +106 -0
- package/dist/breadcrumb-BxZ-nQE5.d.ts +365 -0
- package/dist/breadcrumb-item-BC454oQe.d.ts +59 -0
- package/dist/breadcrumb-item-P5pdq_gE.js +151 -0
- package/dist/breadcrumb-uURhiqWJ.js +384 -0
- package/dist/button-5k_aL_gD.js +802 -0
- package/dist/button-BQofnUt4.d.ts +354 -0
- package/dist/button-group-BydvJTQy.js +197 -0
- package/dist/button-group-COodHeuB.d.ts +155 -0
- package/dist/callout-B8zTf8Go.js +188 -0
- package/dist/callout-DFwPao36.d.ts +103 -0
- package/dist/card-BYDzdMAU.d.ts +177 -0
- package/dist/card-DIg1-X2G.js +332 -0
- package/dist/carousel-Bktu7wrD.js +843 -0
- package/dist/carousel-DQITCtEY.d.ts +423 -0
- package/dist/carousel-item-B5-X31Ha.js +79 -0
- package/dist/carousel-item-BB3jL2tk.d.ts +34 -0
- package/dist/cdn/loader.js +530 -0
- package/dist/checkbox-D6r7PVPj.js +641 -0
- package/dist/checkbox-DoFcDEKB.d.ts +354 -0
- package/dist/checkbox-group-CLvNAO_F.js +201 -0
- package/dist/checkbox-group-Cnh8rAn4.d.ts +152 -0
- package/dist/color-input-Bky89xg_.d.ts +470 -0
- package/dist/color-input-DPIxi9wR.js +894 -0
- package/dist/color-picker-adwOmtRl.js +1240 -0
- package/dist/color-picker-wQw8bPsq.d.ts +360 -0
- package/dist/combobox-B6al50UG.js +1693 -0
- package/dist/combobox-item-D2H1CMxC.d.ts +714 -0
- package/dist/combobox-item-yM6tDrGG.js +225 -0
- package/dist/comparison-B1-nMwmp.d.ts +134 -0
- package/dist/comparison-CyqKrCN-.js +435 -0
- package/dist/components/accordion/accordion.d.ts +2 -0
- package/dist/components/accordion/accordion.js +2 -0
- package/dist/components/accordion-item/accordion-item.d.ts +2 -0
- package/dist/components/accordion-item/accordion-item.js +2 -0
- package/dist/components/action-bar/action-bar.d.ts +2 -0
- package/dist/components/action-bar/action-bar.js +2 -0
- package/dist/components/alert-dialog/alert-dialog.d.ts +2 -0
- package/dist/components/alert-dialog/alert-dialog.js +2 -0
- package/dist/components/avatar/avatar.d.ts +2 -0
- package/dist/components/avatar/avatar.js +2 -0
- package/dist/components/badge/badge.d.ts +2 -0
- package/dist/components/badge/badge.js +2 -0
- package/dist/components/breadcrumb/breadcrumb.d.ts +2 -0
- package/dist/components/breadcrumb/breadcrumb.js +2 -0
- package/dist/components/breadcrumb-item/breadcrumb-item.d.ts +2 -0
- package/dist/components/breadcrumb-item/breadcrumb-item.js +2 -0
- package/dist/components/button/button.d.ts +2 -0
- package/dist/components/button/button.js +2 -0
- package/dist/components/button-group/button-group.d.ts +2 -0
- package/dist/components/button-group/button-group.js +2 -0
- package/dist/components/callout/callout.d.ts +2 -0
- package/dist/components/callout/callout.js +2 -0
- package/dist/components/card/card.d.ts +2 -0
- package/dist/components/card/card.js +2 -0
- package/dist/components/carousel/carousel.d.ts +2 -0
- package/dist/components/carousel/carousel.js +2 -0
- package/dist/components/carousel-item/carousel-item.d.ts +2 -0
- package/dist/components/carousel-item/carousel-item.js +2 -0
- package/dist/components/checkbox/checkbox.d.ts +2 -0
- package/dist/components/checkbox/checkbox.js +2 -0
- package/dist/components/checkbox-group/checkbox-group.d.ts +2 -0
- package/dist/components/checkbox-group/checkbox-group.js +2 -0
- package/dist/components/color-input/color-input.d.ts +2 -0
- package/dist/components/color-input/color-input.js +2 -0
- package/dist/components/color-picker/color-picker.d.ts +2 -0
- package/dist/components/color-picker/color-picker.js +2 -0
- package/dist/components/combobox/combobox.d.ts +2 -0
- package/dist/components/combobox/combobox.js +2 -0
- package/dist/components/combobox-item/combobox-item.d.ts +2 -0
- package/dist/components/combobox-item/combobox-item.js +2 -0
- package/dist/components/comparison/comparison.d.ts +2 -0
- package/dist/components/comparison/comparison.js +2 -0
- package/dist/components/copy/copy.d.ts +2 -0
- package/dist/components/copy/copy.js +291 -0
- package/dist/components/data-table/data-table.d.ts +2 -0
- package/dist/components/data-table/data-table.js +2 -0
- package/dist/components/date/date.d.ts +2 -0
- package/dist/components/date/date.js +2 -0
- package/dist/components/dialog/dialog.d.ts +2 -0
- package/dist/components/dialog/dialog.js +2 -0
- package/dist/components/divider/divider.d.ts +2 -0
- package/dist/components/divider/divider.js +2 -0
- package/dist/components/dropdown/dropdown.d.ts +2 -0
- package/dist/components/dropdown/dropdown.js +2 -0
- package/dist/components/dropdown-item/dropdown-item.d.ts +2 -0
- package/dist/components/dropdown-item/dropdown-item.js +2 -0
- package/dist/components/empty-result/empty-result.d.ts +2 -0
- package/dist/components/empty-result/empty-result.js +2 -0
- package/dist/components/empty-state/empty-state.d.ts +2 -0
- package/dist/components/empty-state/empty-state.js +2 -0
- package/dist/components/expander/expander.d.ts +2 -0
- package/dist/components/expander/expander.js +2 -0
- package/dist/components/field/field.d.ts +2 -0
- package/dist/components/field/field.js +2 -0
- package/dist/components/file-input/file-input.d.ts +2 -0
- package/dist/components/file-input/file-input.js +2 -0
- package/dist/components/filter-bar/filter-bar.d.ts +2 -0
- package/dist/components/filter-bar/filter-bar.js +2 -0
- package/dist/components/form-section/form-section.d.ts +2 -0
- package/dist/components/form-section/form-section.js +2 -0
- package/dist/components/icon/icon.d.ts +2 -0
- package/dist/components/icon/icon.js +2 -0
- package/dist/components/include/include.d.ts +2 -0
- package/dist/components/include/include.js +2 -0
- package/dist/components/index.d.ts +85 -0
- package/dist/components/index.js +86 -0
- package/dist/components/infinite-scroller/infinite-scroller.d.ts +2 -0
- package/dist/components/infinite-scroller/infinite-scroller.js +2 -0
- package/dist/components/intersection-observer/intersection-observer.d.ts +2 -0
- package/dist/components/intersection-observer/intersection-observer.js +2 -0
- package/dist/components/listbox/listbox.d.ts +2 -0
- package/dist/components/listbox/listbox.js +2 -0
- package/dist/components/listbox-item/listbox-item.d.ts +2 -0
- package/dist/components/listbox-item/listbox-item.js +2 -0
- package/dist/components/lorem-ipsum/lorem-ipsum.d.ts +2 -0
- package/dist/components/lorem-ipsum/lorem-ipsum.js +2 -0
- package/dist/components/meter/meter.d.ts +2 -0
- package/dist/components/meter/meter.js +2 -0
- package/dist/components/metric/metric.d.ts +2 -0
- package/dist/components/metric/metric.js +2 -0
- package/dist/components/metric-grid/metric-grid.d.ts +2 -0
- package/dist/components/metric-grid/metric-grid.js +2 -0
- package/dist/components/mutation-observer/mutation-observer.d.ts +2 -0
- package/dist/components/mutation-observer/mutation-observer.js +2 -0
- package/dist/components/navicon/navicon.d.ts +2 -0
- package/dist/components/navicon/navicon.js +2 -0
- package/dist/components/number/number.d.ts +2 -0
- package/dist/components/number/number.js +2 -0
- package/dist/components/number-field/number-field.d.ts +2 -0
- package/dist/components/number-field/number-field.js +2 -0
- package/dist/components/pagination/pagination.d.ts +2 -0
- package/dist/components/pagination/pagination.js +2 -0
- package/dist/components/popover/popover.d.ts +2 -0
- package/dist/components/popover/popover.js +2 -0
- package/dist/components/preview-card/preview-card.d.ts +2 -0
- package/dist/components/preview-card/preview-card.js +2 -0
- package/dist/components/progress/progress.d.ts +2 -0
- package/dist/components/progress/progress.js +2 -0
- package/dist/components/radio/radio.d.ts +2 -0
- package/dist/components/radio/radio.js +2 -0
- package/dist/components/radio-item/radio-item.d.ts +2 -0
- package/dist/components/radio-item/radio-item.js +2 -0
- package/dist/components/random-content/random-content.d.ts +2 -0
- package/dist/components/random-content/random-content.js +2 -0
- package/dist/components/rating/rating.d.ts +2 -0
- package/dist/components/rating/rating.js +2 -0
- package/dist/components/resize-observer/resize-observer.d.ts +2 -0
- package/dist/components/resize-observer/resize-observer.js +2 -0
- package/dist/components/scroll-area/scroll-area.d.ts +2 -0
- package/dist/components/scroll-area/scroll-area.js +2 -0
- package/dist/components/scroller/scroller.d.ts +2 -0
- package/dist/components/scroller/scroller.js +2 -0
- package/dist/components/search-list/search-list.d.ts +2 -0
- package/dist/components/search-list/search-list.js +2 -0
- package/dist/components/select/select.d.ts +2 -0
- package/dist/components/select/select.js +2 -0
- package/dist/components/selection-summary/selection-summary.d.ts +2 -0
- package/dist/components/selection-summary/selection-summary.js +2 -0
- package/dist/components/share/share.d.ts +2 -0
- package/dist/components/share/share.js +2 -0
- package/dist/components/slide-activator/slide-activator.d.ts +2 -0
- package/dist/components/slide-activator/slide-activator.js +2 -0
- package/dist/components/slider/slider.d.ts +2 -0
- package/dist/components/slider/slider.js +2 -0
- package/dist/components/sparkline/sparkline.d.ts +2 -0
- package/dist/components/sparkline/sparkline.js +2 -0
- package/dist/components/spinner/spinner.d.ts +2 -0
- package/dist/components/spinner/spinner.js +2 -0
- package/dist/components/splitter/splitter.d.ts +2 -0
- package/dist/components/splitter/splitter.js +2 -0
- package/dist/components/switch/switch.d.ts +2 -0
- package/dist/components/switch/switch.js +2 -0
- package/dist/components/tab/tab.d.ts +2 -0
- package/dist/components/tab/tab.js +2 -0
- package/dist/components/tab-list/tab-list.d.ts +2 -0
- package/dist/components/tab-list/tab-list.js +2 -0
- package/dist/components/tab-panel/tab-panel.d.ts +2 -0
- package/dist/components/tab-panel/tab-panel.js +2 -0
- package/dist/components/text-area/text-area.d.ts +2 -0
- package/dist/components/text-area/text-area.js +2 -0
- package/dist/components/text-field/text-field.d.ts +2 -0
- package/dist/components/text-field/text-field.js +2 -0
- package/dist/components/text-mask/text-mask.d.ts +2 -0
- package/dist/components/text-mask/text-mask.js +2 -0
- package/dist/components/timed-content/timed-content.d.ts +2 -0
- package/dist/components/timed-content/timed-content.js +2 -0
- package/dist/components/toast/toast.d.ts +2 -0
- package/dist/components/toast/toast.js +2 -0
- package/dist/components/toast-item/toast-item.d.ts +2 -0
- package/dist/components/toast-item/toast-item.js +2 -0
- package/dist/components/toggle-icon/toggle-icon.d.ts +2 -0
- package/dist/components/toggle-icon/toggle-icon.js +2 -0
- package/dist/components/toggle-tag/toggle-tag.d.ts +2 -0
- package/dist/components/toggle-tag/toggle-tag.js +2 -0
- package/dist/components/toolbar/toolbar.d.ts +2 -0
- package/dist/components/toolbar/toolbar.js +2 -0
- package/dist/components/tooltip/tooltip.d.ts +2 -0
- package/dist/components/tooltip/tooltip.js +2 -0
- package/dist/components/transition-group/transition-group.d.ts +2 -0
- package/dist/components/transition-group/transition-group.js +2 -0
- package/dist/components/zoomable-frame/zoomable-frame.d.ts +2 -0
- package/dist/components/zoomable-frame/zoomable-frame.js +2 -0
- package/dist/copy-CvC9vaGw.d.ts +206 -0
- package/dist/copy.styles-DWGvGNTP.js +100 -0
- package/dist/data-table-CITa8DSn.js +247 -0
- package/dist/data-table-DL5RhE0d.d.ts +89 -0
- package/dist/date-CJPmOdi9.js +146 -0
- package/dist/date-DtaTBM71.d.ts +142 -0
- package/dist/decorate-DcF3lt7P.js +9 -0
- package/dist/dialog-Cx46HMaZ.js +983 -0
- package/dist/dialog-N-v0woIy.d.ts +414 -0
- package/dist/divider-9vNsfHW8.js +169 -0
- package/dist/divider-DWuAxcXv.d.ts +79 -0
- package/dist/docs/custom-elements.json +29301 -0
- package/dist/dropdown-BXSKpVX9.js +1123 -0
- package/dist/dropdown-Bo00Vlr5.d.ts +537 -0
- package/dist/dropdown-item-_lIs-Tfd.d.ts +111 -0
- package/dist/dropdown-item-i77cRuN6.js +504 -0
- package/dist/empty-result-B2ln1yFL.js +65 -0
- package/dist/empty-result-B54x_Ab2.d.ts +31 -0
- package/dist/empty-state-BLWjtKUo.js +186 -0
- package/dist/empty-state-SGKjpwp3.d.ts +117 -0
- package/dist/expander-BUev0BmM.d.ts +174 -0
- package/dist/expander-Bwvxj6Oa.js +342 -0
- package/dist/field-BEyS909F.js +163 -0
- package/dist/field-ITx0jVw-.d.ts +69 -0
- package/dist/file-input-BEumLJjg.js +841 -0
- package/dist/file-input-D2D6YC0B.d.ts +378 -0
- package/dist/filter-bar-Bj2QzEn9.d.ts +35 -0
- package/dist/filter-bar-Dcs67aXo.js +66 -0
- package/dist/form-section-BchPetkj.js +83 -0
- package/dist/form-section-xFBTBULQ.d.ts +34 -0
- package/dist/icon-BPVkNsY4.js +165 -0
- package/dist/icon-Ci9CPZJV.d.ts +72 -0
- package/dist/icon-library-D_if7p2h.d.ts +2 -0
- package/dist/include-CQHVVtNs.d.ts +103 -0
- package/dist/include-qNUh_6kT.js +155 -0
- package/dist/index.d.ts +89 -0
- package/dist/index.js +92 -0
- package/dist/infinite-scroller-BmmtnWNt.js +285 -0
- package/dist/infinite-scroller-CuUEAlB9.d.ts +174 -0
- package/dist/intersection-observer-B6TciOAQ.js +503 -0
- package/dist/intersection-observer-B7nmP7Zz.d.ts +418 -0
- package/dist/listbox-C3XXRWGX.js +1257 -0
- package/dist/listbox-DD4ujIJe.d.ts +682 -0
- package/dist/listbox-item-CwD9s3VY.js +135 -0
- package/dist/listbox-item-DQEJWp4Z.d.ts +53 -0
- package/dist/localize-322EtXNX.d.ts +66 -0
- package/dist/lorem-ipsum-B2x3V-v8.js +198 -0
- package/dist/lorem-ipsum-CR82CSuJ.d.ts +130 -0
- package/dist/meter-BC7uaJWf.d.ts +73 -0
- package/dist/meter-BIDyjwFp.js +155 -0
- package/dist/metric-CjlLq_VA.d.ts +36 -0
- package/dist/metric-DbuOcDp_.js +86 -0
- package/dist/metric-grid-C2Pb0Zl3.js +37 -0
- package/dist/metric-grid-C5Xbb1_0.d.ts +27 -0
- package/dist/mutation-observer-BmrZ-GER.d.ts +326 -0
- package/dist/mutation-observer-DS8EBuOp.js +388 -0
- package/dist/navicon-Dic5Qjzb.d.ts +159 -0
- package/dist/navicon-_yMHY27-.js +486 -0
- package/dist/number-BNtNXNF3.js +162 -0
- package/dist/number-BwbnErlB.d.ts +143 -0
- package/dist/number-field-BQHB7UYo.js +726 -0
- package/dist/number-field-odk4lKXM.d.ts +422 -0
- package/dist/pagination-6z2qcf3U.d.ts +322 -0
- package/dist/pagination-DuKPuzdb.js +679 -0
- package/dist/popover-D0sxTU6o.d.ts +259 -0
- package/dist/popover-DJBrJ0za.js +556 -0
- package/dist/preview-card-C7H1FPfd.js +287 -0
- package/dist/preview-card-DitOCZTD.d.ts +86 -0
- package/dist/progress-Db0_axHQ.d.ts +181 -0
- package/dist/progress-DzVk260j.js +494 -0
- package/dist/radio-BtDG9xJM.js +658 -0
- package/dist/radio-CieMa4zU.d.ts +460 -0
- package/dist/radio-item-DIrUStAX.js +264 -0
- package/dist/radio-item-Xq2U3cMu.d.ts +69 -0
- package/dist/random-content-BhSeJFKz.d.ts +380 -0
- package/dist/random-content-BwiirXdG.js +450 -0
- package/dist/rating-4xNsWumY.d.ts +369 -0
- package/dist/rating-C1BcJDIO.js +722 -0
- package/dist/resize-observer-BseSbVWP.d.ts +187 -0
- package/dist/resize-observer-DcrLhddo.js +236 -0
- package/dist/scroll-area-COc1857S.js +127 -0
- package/dist/scroll-area-CVYDf5qY.d.ts +61 -0
- package/dist/scroller-LYgBVyfY.js +590 -0
- package/dist/scroller-bB2rGs7b.d.ts +374 -0
- package/dist/search-list-Clmrg8EV.js +884 -0
- package/dist/search-list-n0GYO7rh.d.ts +777 -0
- package/dist/select-CkZK2jJn.d.ts +506 -0
- package/dist/select-DLIaRnA4.js +690 -0
- package/dist/selection-summary-BVnNJ8Lw.js +48 -0
- package/dist/selection-summary-DmFkGyZI.d.ts +34 -0
- package/dist/share-DPlqP2dc.d.ts +162 -0
- package/dist/share-bsgXZCl7.js +250 -0
- package/dist/sigvelo.d.ts +5 -0
- package/dist/sigvelo.js +5 -0
- package/dist/sigvelo.loader.d.ts +3 -0
- package/dist/sigvelo.loader.js +102 -0
- package/dist/slide-activator-D7bBz69E.d.ts +429 -0
- package/dist/slide-activator-DlxQt9R9.js +798 -0
- package/dist/slider-B0FVsV1o.d.ts +921 -0
- package/dist/slider-B90Il7x3.js +1744 -0
- package/dist/sparkline-CcpTaJ_Z.js +358 -0
- package/dist/sparkline-DlCIt81-.d.ts +235 -0
- package/dist/spinner-C04Dmc0H.js +188 -0
- package/dist/spinner-CZ19x_dC.d.ts +99 -0
- package/dist/splitter-DBDJAzsp.d.ts +325 -0
- package/dist/splitter-MnD4In9H.js +638 -0
- package/dist/switch-CPaEKbog.js +581 -0
- package/dist/switch-Cief9M59.d.ts +248 -0
- package/dist/tab-BcqYGsuW.d.ts +44 -0
- package/dist/tab-C-FtuNmh.js +102 -0
- package/dist/tab-list-B_Ye_Oj9.js +691 -0
- package/dist/tab-list-DDvS8qHr.d.ts +450 -0
- package/dist/tab-panel-BaBl6eep.js +60 -0
- package/dist/tab-panel-BzSJlSfd.d.ts +38 -0
- package/dist/text-area-B_mjCE9W.d.ts +327 -0
- package/dist/text-area-Czixaz-_.js +556 -0
- package/dist/text-field-BClWMp6q.d.ts +424 -0
- package/dist/text-field-inpJfp0A.js +687 -0
- package/dist/text-mask-CNKVKSFp.d.ts +336 -0
- package/dist/text-mask-DDEurj90.js +370 -0
- package/dist/themes/sigvelo.css +10 -0
- package/dist/themes/utilities.css +9 -0
- package/dist/timed-content-D2mGFamc.d.ts +181 -0
- package/dist/timed-content-pvEP4l5V.js +226 -0
- package/dist/toast-BnZaIg6Z.js +636 -0
- package/dist/toast-cEBVK9NQ.d.ts +487 -0
- package/dist/toast-item-BPpJT6vD.d.ts +159 -0
- package/dist/toast-item-IS8IFUEg.js +372 -0
- package/dist/toggle-icon-4oLDeEt4.js +752 -0
- package/dist/toggle-icon-DlwMMWZL.d.ts +359 -0
- package/dist/toggle-tag-1sfTFJtg.js +434 -0
- package/dist/toggle-tag-IVvMGT4R.d.ts +245 -0
- package/dist/toolbar-CABq0ZL1.d.ts +122 -0
- package/dist/toolbar-CEZ0-F-X.js +196 -0
- package/dist/tooltip-DbyoPFNe.js +521 -0
- package/dist/tooltip-ahFthek8.d.ts +192 -0
- package/dist/transition-group-3hnAnwSd.js +801 -0
- package/dist/transition-group-DD_CjSNC.d.ts +608 -0
- package/dist/translations/en.d.ts +6 -0
- package/dist/translations/en.js +75 -0
- package/dist/translations/es.d.ts +6 -0
- package/dist/translations/es.js +75 -0
- package/dist/types/custom-element-jsx.d.ts +13723 -0
- package/dist/utilities/icon-library.d.ts +3 -0
- package/dist/utilities/icon-library.js +93 -0
- package/dist/utilities/localize.d.ts +2 -0
- package/dist/utilities/localize.js +6 -0
- package/dist/zoomable-frame-Cldvj5sE.js +398 -0
- package/dist/zoomable-frame-r6S6587z.d.ts +162 -0
- package/package.json +83 -0
|
@@ -0,0 +1,590 @@
|
|
|
1
|
+
import { Localize } from "./utilities/localize.js";
|
|
2
|
+
import { t as __decorate } from "./decorate-DcF3lt7P.js";
|
|
3
|
+
import { css, html } from "lit";
|
|
4
|
+
import { eventOptions, property, query, state } from "lit/decorators.js";
|
|
5
|
+
import hostStyles from "@mcp-b/wc-support/styles/host.styles";
|
|
6
|
+
import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
7
|
+
//#region src/components/scroller/scroller.styles.ts
|
|
8
|
+
var scroller_styles_default = css`
|
|
9
|
+
:host {
|
|
10
|
+
--shadow-color: var(--sigvelo-color-canvas);
|
|
11
|
+
--shadow-size: 2rem;
|
|
12
|
+
--thumb-color: var(--sigvelo-color-neutral-bg);
|
|
13
|
+
--track-color: transparent;
|
|
14
|
+
|
|
15
|
+
/* private (defined dynamically) */
|
|
16
|
+
--start-shadow-opacity: 0;
|
|
17
|
+
--end-shadow-opacity: 0;
|
|
18
|
+
|
|
19
|
+
display: block;
|
|
20
|
+
position: relative;
|
|
21
|
+
max-width: 100%;
|
|
22
|
+
isolation: isolate;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:host([orientation="vertical"]) {
|
|
26
|
+
display: flex;
|
|
27
|
+
flex-direction: column;
|
|
28
|
+
height: 100%;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
#content {
|
|
32
|
+
z-index: 1; /* below shadows */
|
|
33
|
+
border-radius: inherit;
|
|
34
|
+
scroll-behavior: smooth;
|
|
35
|
+
scrollbar-color: var(--thumb-color) var(--track-color);
|
|
36
|
+
scrollbar-width: thin;
|
|
37
|
+
|
|
38
|
+
/* Prevent text in mobile Safari from being larger when the container width larger than the viewport */
|
|
39
|
+
-webkit-text-size-adjust: 100%;
|
|
40
|
+
|
|
41
|
+
&:focus {
|
|
42
|
+
outline: none;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
&:focus-visible {
|
|
46
|
+
outline: var(--sigvelo-focus-ring);
|
|
47
|
+
outline-offset: var(--sigvelo-focus-offset);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
:host([without-scrollbar]) #content {
|
|
52
|
+
scrollbar-width: none;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
:host([orientation="horizontal"]) #content {
|
|
56
|
+
overflow-x: auto;
|
|
57
|
+
overflow-y: hidden;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
:host([orientation="vertical"]) #content {
|
|
61
|
+
flex: 1 1 auto;
|
|
62
|
+
min-height: 0; /* This is crucial for flex children to respect overflow */
|
|
63
|
+
overflow-x: hidden;
|
|
64
|
+
overflow-y: auto;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
#start-shadow,
|
|
68
|
+
#end-shadow {
|
|
69
|
+
z-index: 2; /* above content */
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/* Horizontal shadows */
|
|
73
|
+
:host([orientation="horizontal"]) {
|
|
74
|
+
#start-shadow,
|
|
75
|
+
#end-shadow {
|
|
76
|
+
position: absolute;
|
|
77
|
+
top: 0;
|
|
78
|
+
bottom: 0;
|
|
79
|
+
width: var(--shadow-size);
|
|
80
|
+
pointer-events: none;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
#start-shadow {
|
|
84
|
+
opacity: var(--start-shadow-opacity);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
#end-shadow {
|
|
88
|
+
opacity: var(--end-shadow-opacity);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
#start-shadow {
|
|
92
|
+
&:dir(ltr) {
|
|
93
|
+
left: 0;
|
|
94
|
+
background: linear-gradient(to right, var(--shadow-color), transparent 100%);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
&:dir(rtl) {
|
|
98
|
+
right: 0;
|
|
99
|
+
background: linear-gradient(to left, var(--shadow-color), transparent 100%);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
#end-shadow {
|
|
104
|
+
&:dir(ltr) {
|
|
105
|
+
right: 0;
|
|
106
|
+
background: linear-gradient(to left, var(--shadow-color), transparent 100%);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
&:dir(rtl) {
|
|
110
|
+
left: 0;
|
|
111
|
+
background: linear-gradient(to right, var(--shadow-color), transparent 100%);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* Vertical shadows */
|
|
117
|
+
:host([orientation="vertical"]) {
|
|
118
|
+
#start-shadow,
|
|
119
|
+
#end-shadow {
|
|
120
|
+
position: absolute;
|
|
121
|
+
right: 0;
|
|
122
|
+
left: 0;
|
|
123
|
+
height: var(--shadow-size);
|
|
124
|
+
pointer-events: none;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
#start-shadow {
|
|
128
|
+
top: 0;
|
|
129
|
+
background: linear-gradient(to bottom, var(--shadow-color), transparent 100%);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
#end-shadow {
|
|
133
|
+
bottom: 0;
|
|
134
|
+
background: linear-gradient(to top, var(--shadow-color), transparent 100%);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
`;
|
|
138
|
+
//#endregion
|
|
139
|
+
//#region src/components/scroller/scroller.ts
|
|
140
|
+
/**
|
|
141
|
+
* <sigvelo-scroller>
|
|
142
|
+
*
|
|
143
|
+
* @summary Adds an accessible container with visual affordances to help users identify and navigate scrolling content.
|
|
144
|
+
* @tag sigvelo-scroller
|
|
145
|
+
* @documentation https://design-system.sigvelo.com/docs/components/scroller
|
|
146
|
+
* @status stable
|
|
147
|
+
* @since 1.0
|
|
148
|
+
*
|
|
149
|
+
* @slot - The content to show inside the scroller.
|
|
150
|
+
*
|
|
151
|
+
* @csspart content - The container that wraps the slotted content.
|
|
152
|
+
* @csspart start-shadow - The starting shadow.
|
|
153
|
+
* @csspart end-shadow - The ending shadow.
|
|
154
|
+
*
|
|
155
|
+
* @cssproperty [--shadow-color=var(--sigvelo-color-neutral-bg)] - The base color of the shadow.
|
|
156
|
+
* @cssproperty [--shadow-size=2rem] - The width of the shadow.
|
|
157
|
+
* @cssproperty [--thumb-color=var(--sigvelo-color-neutral-bg)] - The color of the scrollbar's thumb (supportive browsers
|
|
158
|
+
* only).
|
|
159
|
+
* @cssproperty [--track-color=transparent] - The color of the scrollbar's track (supportive browsers only).
|
|
160
|
+
*
|
|
161
|
+
* @example Default
|
|
162
|
+
* ```html
|
|
163
|
+
* <sigvelo-scroller id="scroller__overview">
|
|
164
|
+
* <table>
|
|
165
|
+
* <tr>
|
|
166
|
+
* <th>Name</th>
|
|
167
|
+
* <th>Age</th>
|
|
168
|
+
* <th>Color</th>
|
|
169
|
+
* <th>Breed</th>
|
|
170
|
+
* <th>Breed Description</th>
|
|
171
|
+
* </tr>
|
|
172
|
+
* <tr>
|
|
173
|
+
* <td>Sir Whiskertons III</td>
|
|
174
|
+
* <td>3</td>
|
|
175
|
+
* <td>Orange & White</td>
|
|
176
|
+
* <td>Maine Coon</td>
|
|
177
|
+
* <td>These gentle giants are known as the dogs of the cat world. Super friendly and fluffy, they'll follow you around like a furry shadow.</td>
|
|
178
|
+
* </tr>
|
|
179
|
+
* <tr>
|
|
180
|
+
* <td>Lady Pawington</td>
|
|
181
|
+
* <td>2</td>
|
|
182
|
+
* <td>Gray</td>
|
|
183
|
+
* <td>Russian Blue</td>
|
|
184
|
+
* <td>Elegant cats with plush, silvery coats. They're basically living stuffed animals that love to cuddle.</td>
|
|
185
|
+
* </tr>
|
|
186
|
+
* <tr>
|
|
187
|
+
* <td>Captain Beans</td>
|
|
188
|
+
* <td>1</td>
|
|
189
|
+
* <td>Black</td>
|
|
190
|
+
* <td>Bombay</td>
|
|
191
|
+
* <td>Mini panthers with golden eyes who think they own the place. These house tigers are total attention seekers.</td>
|
|
192
|
+
* </tr>
|
|
193
|
+
* <tr>
|
|
194
|
+
* <td>Princess Mochi</td>
|
|
195
|
+
* <td>4</td>
|
|
196
|
+
* <td>Cream</td>
|
|
197
|
+
* <td>Ragdoll</td>
|
|
198
|
+
* <td>These floppy cats go limp when you hold them, hence the name. Total sweethearts who love being carried around like babies.</td>
|
|
199
|
+
* </tr>
|
|
200
|
+
* <tr>
|
|
201
|
+
* <td>Duke Noodleton</td>
|
|
202
|
+
* <td>2</td>
|
|
203
|
+
* <td>Brown Tabby</td>
|
|
204
|
+
* <td>Bengal</td>
|
|
205
|
+
* <td>Wild-looking cats with leopard spots and endless energy. They'll turn your house into their personal jungle gym.</td>
|
|
206
|
+
* </tr>
|
|
207
|
+
* </table>
|
|
208
|
+
* </sigvelo-scroller>
|
|
209
|
+
*
|
|
210
|
+
* <style>
|
|
211
|
+
* #scroller__overview {
|
|
212
|
+
* table {
|
|
213
|
+
* margin-block: 0;
|
|
214
|
+
* }
|
|
215
|
+
*
|
|
216
|
+
* th,
|
|
217
|
+
* td {
|
|
218
|
+
* white-space: nowrap;
|
|
219
|
+
* }
|
|
220
|
+
*
|
|
221
|
+
* th:nth-child(5),
|
|
222
|
+
* td:nth-child(5) {
|
|
223
|
+
* min-width: 50ch;
|
|
224
|
+
* white-space: wrap;
|
|
225
|
+
* }
|
|
226
|
+
* }
|
|
227
|
+
* </style>
|
|
228
|
+
* ```
|
|
229
|
+
*
|
|
230
|
+
* @example Providing content
|
|
231
|
+
* Scrollers can accommodate virtually any content type within their container. By default, they handle horizontal overflow with scrolling. It might be necessary to specify a width or height on your container element to prevent unwanted wrapping and ensure proper scrolling behavior.
|
|
232
|
+
*
|
|
233
|
+
* ```html
|
|
234
|
+
* <sigvelo-scroller id="scroller__content">
|
|
235
|
+
* <sigvelo-card>
|
|
236
|
+
* <h2>Cat Agility</h2>
|
|
237
|
+
* <p>Cats love to chase laser dots and yarn balls around the house, pouncing with surprising agility. Their whiskers help them navigate tight spaces, while their retractable claws keep them ready for playtime.</p>
|
|
238
|
+
* <p>Sometimes they zoom around at 3 AM for no reason, doing what cat owners call the "midnight zoomies."</p>
|
|
239
|
+
* </sigvelo-card>
|
|
240
|
+
* <sigvelo-card>
|
|
241
|
+
* <h2>Purring Secrets</h2>
|
|
242
|
+
* <p>Purring isn't just for happiness — cats also purr when injured or stressed, as the vibrations may help with healing. A cat's sandpaper tongue has tiny hooks perfect for grooming their fur.</p>
|
|
243
|
+
* <p>When they slow-blink at you, it's actually a kitty kiss!</p>
|
|
244
|
+
* </sigvelo-card>
|
|
245
|
+
* <sigvelo-card>
|
|
246
|
+
* <h2>Sleep & Jumps</h2>
|
|
247
|
+
* <p>Most cats spend up to 16 hours sleeping daily, often in strange positions or inconvenient spots like your keyboard. They're excellent jumpers, able to leap up to 6 times their length.</p>
|
|
248
|
+
* <p>Despite their independent reputation, many cats form strong bonds with their humans and other pets.</p>
|
|
249
|
+
* </sigvelo-card>
|
|
250
|
+
* <sigvelo-card>
|
|
251
|
+
* <h2>Communication</h2>
|
|
252
|
+
* <p>A cat's meow is mainly for human communication — adult cats rarely meow at each other. They express themselves through body language, like tail positions and ear movements.</p>
|
|
253
|
+
* <p>Their superior night vision comes from special reflective cells, though they can't see in complete darkness.</p>
|
|
254
|
+
* </sigvelo-card>
|
|
255
|
+
* </sigvelo-scroller>
|
|
256
|
+
*
|
|
257
|
+
* <style>
|
|
258
|
+
* #scroller__content::part(content) {
|
|
259
|
+
* display: flex;
|
|
260
|
+
* flex-wrap: nowrap;
|
|
261
|
+
* gap: 1rem;
|
|
262
|
+
* }
|
|
263
|
+
*
|
|
264
|
+
* #scroller__content sigvelo-card {
|
|
265
|
+
* width: 300px;
|
|
266
|
+
* flex: 0 0 auto;
|
|
267
|
+
*
|
|
268
|
+
* h2 {
|
|
269
|
+
* margin-top: 0;
|
|
270
|
+
* font-size: 1.5rem;
|
|
271
|
+
* }
|
|
272
|
+
*
|
|
273
|
+
* p {
|
|
274
|
+
* margin: 0.5rem 0;
|
|
275
|
+
* line-height: 1.6;
|
|
276
|
+
* }
|
|
277
|
+
*
|
|
278
|
+
* p:last-child {
|
|
279
|
+
* margin-block-end: 0;
|
|
280
|
+
* }
|
|
281
|
+
* }
|
|
282
|
+
* </style>
|
|
283
|
+
* ```
|
|
284
|
+
*
|
|
285
|
+
* **Note:** If you have a lot of content to scroll, consider setting [`content-visibility`](https://developer.mozilla.org/en-US/docs/Web/CSS/content-visibility) to `auto` for child elements to improve performance.
|
|
286
|
+
*
|
|
287
|
+
* **Note:** If you need to change the scroller's layout, e.g. to flex or grid, apply the appropriate styles to the `content` part, not the host element.
|
|
288
|
+
*
|
|
289
|
+
* @example Changing the orientation
|
|
290
|
+
* Scrollers default to a horizontal orientation. To create a vertical scroller, set the `orientation` attribute to `vertical`. The scroller will adapt to the available space. You can constrain its height with a wrapper or by setting a height directly.
|
|
291
|
+
*
|
|
292
|
+
* ```html
|
|
293
|
+
* <div style="height: 300px;">
|
|
294
|
+
* <sigvelo-scroller id="scroller__vertical" orientation="vertical">
|
|
295
|
+
* <div class="card">
|
|
296
|
+
* <p style="margin-block-start: 0;">Cats have whiskers not only on their muzzles, but also above their eyes, on their chins, and on the backs of their front legs. These whiskers help them navigate tight spaces and monitor air currents.</p>
|
|
297
|
+
* <p>Cats have a third eyelid called a "haw" or nictitating membrane. This clear eyelid helps protect their eyes while maintaining visibility, especially during hunting or fights.</p>
|
|
298
|
+
* <p>A cat's heart beats nearly twice as fast as a human heart, at 110 to 140 beats per minute. Their quick metabolism supports their naturally active lifestyle.</p>
|
|
299
|
+
* <p>Cats can rotate their ears 180 degrees using 32 different muscles. This allows them to pinpoint the exact location of sounds without moving their heads.</p>
|
|
300
|
+
* <p>A cat's nose print is unique, just like a human's fingerprint, with no two cats having the same pattern of bumps and ridges.</p>
|
|
301
|
+
* <p>A cat can jump up to six times its length in a single bound, making them exceptional jumpers compared to their size. Their powerful hind legs contain extra muscles specifically designed for jumping.</p>
|
|
302
|
+
* <p>Cats can make over 100 different vocal sounds, while dogs can only make about 10. Their vocalizations include purrs, meows, chirps, trills, growls, and hisses.</p>
|
|
303
|
+
* <p>Most cats have no taste buds for sweetness. They lack the gene that codes for the sweet taste receptor, making them indifferent to sugary foods.</p>
|
|
304
|
+
* <p>A cat can change its meow to manipulate humans. They develop specific meows to communicate different needs, essentially training their owners to respond.</p>
|
|
305
|
+
* <p style="margin-block-end: 0;">Cats can drink seawater in survival situations. Their kidneys are so efficient they can filter out the salt and use the water content.</p>
|
|
306
|
+
* </div>
|
|
307
|
+
* </sigvelo-scroller>
|
|
308
|
+
* </div>
|
|
309
|
+
*
|
|
310
|
+
* <style>
|
|
311
|
+
* #scroller__vertical {
|
|
312
|
+
* .card {
|
|
313
|
+
* padding: 1rem;
|
|
314
|
+
*
|
|
315
|
+
* h3 {
|
|
316
|
+
* margin-top: 0;
|
|
317
|
+
* }
|
|
318
|
+
*
|
|
319
|
+
* p:last-child {
|
|
320
|
+
* margin-bottom: 0;
|
|
321
|
+
* }
|
|
322
|
+
* }
|
|
323
|
+
* }
|
|
324
|
+
* </style>
|
|
325
|
+
* ```
|
|
326
|
+
*
|
|
327
|
+
* @example Hiding the scrollbar
|
|
328
|
+
* Add the `without-scrollbar` attribute to prevent the scrollbar from being visible.
|
|
329
|
+
*
|
|
330
|
+
* ```html
|
|
331
|
+
* <sigvelo-scroller id="scroller__hiding" without-scrollbar>
|
|
332
|
+
* <div class="card">
|
|
333
|
+
* <p>Cats are expert hunters with sharp reflexes and incredible patience. They can spend hours watching prey before making their move. Their whiskers act as precision sensors, detecting even the slightest air movements around them.</p>
|
|
334
|
+
* <p>When sleeping, cats curl into tight balls to conserve body heat and protect vital organs. This instinctive position dates back to their wild ancestors who needed to stay warm and safe while resting.</p>
|
|
335
|
+
* <p>A cat's purr vibrates at a frequency that can promote healing and bone growth. This may explain why cats with broken bones heal faster than many other animals. Their therapeutic purr ranges from 25 to 150 Hertz.</p>
|
|
336
|
+
* <p>House cats share 95.6% of their genetic makeup with tigers, despite the enormous size difference. This close relationship is evident in their similar behaviors, from scent marking to stalking techniques.</p>
|
|
337
|
+
* </div>
|
|
338
|
+
* </sigvelo-scroller>
|
|
339
|
+
*
|
|
340
|
+
* <style>
|
|
341
|
+
* #scroller__hiding {
|
|
342
|
+
* .card {
|
|
343
|
+
* width: 1200px;
|
|
344
|
+
* padding: 1rem;
|
|
345
|
+
*
|
|
346
|
+
* p:last-child {
|
|
347
|
+
* margin-block-end: 0;
|
|
348
|
+
* }
|
|
349
|
+
* }
|
|
350
|
+
* }
|
|
351
|
+
* </style>
|
|
352
|
+
* ```
|
|
353
|
+
*
|
|
354
|
+
* **Warning:** Using this option will affect users' ability to scroll on certain devices.
|
|
355
|
+
*
|
|
356
|
+
* @example Hiding the shadow
|
|
357
|
+
* Use the `without-shadow` attribute to remove the shadows from the scroller.
|
|
358
|
+
*
|
|
359
|
+
* ```html
|
|
360
|
+
* <sigvelo-scroller without-shadow id="scroller__without-shadow">
|
|
361
|
+
* <div class="card">
|
|
362
|
+
* <p>A cat's sense of smell is astonishingly powerful - they have over 200 million odor sensors compared to our mere 5 million. Their specialized paw pads contain scent glands that leave invisible territory markers wherever they walk. Most cats actually sleep between 12-16 hours daily, spending nearly two-thirds of their lives in various states of slumber.</p>
|
|
363
|
+
* <p>Cats possess a unique collarbone that floats freely and isn't attached to other bones, allowing them to squeeze through any opening the size of their head. Their purring occurs at a frequency of 25-150 vibrations per second and has been shown to promote healing in both bone and soft tissue. The distinctive sandpaper texture of a cat's tongue comes from tiny backward-facing spines called papillae.</p>
|
|
364
|
+
* <p>A domestic cat can jump approximately six times its body length in a single bound. Their night vision is six times better than humans, though they can't see in complete darkness. Interestingly, cats cannot taste sweetness as they lack the specific taste receptors required for detecting sugars.</p>
|
|
365
|
+
* <p>The average cat has 18 toes - five on each front paw and four on each back paw, though polydactyl cats can have many more. A cat's heart beats nearly twice as fast as a human's, with 110-140 beats per minute. When cats rub against objects or people, they're depositing their scent through special glands on their face, claiming you as part of their territory.</p>
|
|
366
|
+
* </div>
|
|
367
|
+
* </sigvelo-scroller>
|
|
368
|
+
*
|
|
369
|
+
* <style>
|
|
370
|
+
* #scroller__without-shadow {
|
|
371
|
+
* .card {
|
|
372
|
+
* width: 1500px;
|
|
373
|
+
* padding: 1rem;
|
|
374
|
+
*
|
|
375
|
+
* p:last-child {
|
|
376
|
+
* margin-block-end: 0;
|
|
377
|
+
* }
|
|
378
|
+
* }
|
|
379
|
+
* }
|
|
380
|
+
* </style>
|
|
381
|
+
* ```
|
|
382
|
+
*
|
|
383
|
+
* @example Styling the shadow
|
|
384
|
+
* Use the `start-shadow` and `end-shadow` parts along with the `--shadow-color` and `--shadow-size` custom properties to style the shadows that appear when scrolling is available. This example adds edges and a more natural shadow for light mode, while leaving dark mode intact.
|
|
385
|
+
*
|
|
386
|
+
* ```html
|
|
387
|
+
* <sigvelo-scroller id="scroller__shadow">
|
|
388
|
+
* <div class="card">
|
|
389
|
+
* <p>A cat's hearing is remarkable - they can detect frequencies up to 64,000 Hz, far beyond human capabilities. Their flexible spine allows them to make incredible leaps and always land on their feet using an internal "righting reflex." Despite being obligate carnivores, many cats oddly enjoy nibbling on houseplants.</p>
|
|
390
|
+
* <p>Cats communicate through over 100 different vocalizations, from chirps to trills. Their whiskers are precisely as wide as their bodies, helping them determine if they can fit through tight spaces. Kneading behavior, often called "making biscuits," is a leftover instinct from kittenhood.</p>
|
|
391
|
+
* <p>The average house cat can run at speeds up to 30 mph in short bursts. They have an extra organ called the Jacobson's organ in their mouths, which helps them "taste" scents in the air. Many cats are actually lactose intolerant, despite popular media depicting them drinking milk.</p>
|
|
392
|
+
* <p>A cat's brain structure is 90% similar to a human's, with nearly twice as many neurons controlling their cerebral cortex. Their eyes contain a reflective layer which amplifies light and creates that distinctive nighttime glow. Cats spend roughly 30% of their waking hours grooming themselves.</p>
|
|
393
|
+
* </div>
|
|
394
|
+
* </sigvelo-scroller>
|
|
395
|
+
*
|
|
396
|
+
* <style>
|
|
397
|
+
* html:not([data-theme='dark']) {
|
|
398
|
+
* #scroller__shadow {
|
|
399
|
+
* --shadow-color: #0001;
|
|
400
|
+
* --shadow-size: .75rem;
|
|
401
|
+
*
|
|
402
|
+
* <!-- Add a border to each shadow -->
|
|
403
|
+
* &::part(start-shadow) {
|
|
404
|
+
* border-left: solid 1px #0002;
|
|
405
|
+
* }
|
|
406
|
+
*
|
|
407
|
+
* &::part(end-shadow) {
|
|
408
|
+
* border-right: solid 1px #0002;
|
|
409
|
+
* }
|
|
410
|
+
*
|
|
411
|
+
* <!-- Taper the shadows at the top and bottom for a realistic effect -->
|
|
412
|
+
* &::part(start-shadow),
|
|
413
|
+
* &::part(end-shadow) {
|
|
414
|
+
* mask-image: linear-gradient(
|
|
415
|
+
* to bottom,
|
|
416
|
+
* transparent 0%,
|
|
417
|
+
* black 10%,
|
|
418
|
+
* black 90%,
|
|
419
|
+
* transparent 100%
|
|
420
|
+
* );
|
|
421
|
+
* }
|
|
422
|
+
* }
|
|
423
|
+
* }
|
|
424
|
+
*
|
|
425
|
+
* #scroller__shadow {
|
|
426
|
+
* .card {
|
|
427
|
+
* width: 1500px;
|
|
428
|
+
* padding: 1rem;
|
|
429
|
+
*
|
|
430
|
+
* p:last-child {
|
|
431
|
+
* margin-block-end: 0;
|
|
432
|
+
* }
|
|
433
|
+
* }
|
|
434
|
+
* }
|
|
435
|
+
* </style>
|
|
436
|
+
* ```
|
|
437
|
+
*
|
|
438
|
+
* @example Scroll snapping
|
|
439
|
+
* If you'd like to add scroll snap properties, apply them to the `content` part, not the host element, as shown in this example.
|
|
440
|
+
*
|
|
441
|
+
* ```html
|
|
442
|
+
* <sigvelo-scroller id="scroller__snap">
|
|
443
|
+
* <div class="card" style="background: #3b82f6;">1</div>
|
|
444
|
+
* <div class="card" style="background: #ec4899;">2</div>
|
|
445
|
+
* <div class="card" style="background: #ef4444;">3</div>
|
|
446
|
+
* <div class="card" style="background: #8b5cf6;">4</div>
|
|
447
|
+
* <div class="card" style="background: #22c55e;">5</div>
|
|
448
|
+
* <div class="card" style="background: #10b981;">6</div>
|
|
449
|
+
* <div class="card" style="background: #14b8a6;">7</div>
|
|
450
|
+
* <div class="card" style="background: #0ea5e9;">8</div>
|
|
451
|
+
* </sigvelo-scroller>
|
|
452
|
+
*
|
|
453
|
+
* <style>
|
|
454
|
+
* #scroller__snap {
|
|
455
|
+
* &::part(content) {
|
|
456
|
+
* display: flex;
|
|
457
|
+
* flex-wrap: nowrap;
|
|
458
|
+
* flex-direction: row;
|
|
459
|
+
* gap: 2rem;
|
|
460
|
+
* width: 100%;
|
|
461
|
+
* scroll-snap-type: x mandatory;
|
|
462
|
+
* scroll-padding: 0 1rem;
|
|
463
|
+
* }
|
|
464
|
+
*
|
|
465
|
+
* .card {
|
|
466
|
+
* flex: 1 0 auto;
|
|
467
|
+
* display: flex;
|
|
468
|
+
* align-items: center;
|
|
469
|
+
* justify-content: center;
|
|
470
|
+
* width: calc(50% - 2rem);
|
|
471
|
+
* height: 200px;
|
|
472
|
+
* border: none;
|
|
473
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
474
|
+
* font-size: 72px;
|
|
475
|
+
* color: white;
|
|
476
|
+
* scroll-snap-align: start;
|
|
477
|
+
* }
|
|
478
|
+
* }
|
|
479
|
+
* </style>
|
|
480
|
+
* ```
|
|
481
|
+
*/
|
|
482
|
+
var SigveloScroller = class extends SigveloElement {
|
|
483
|
+
constructor(..._args) {
|
|
484
|
+
super(..._args);
|
|
485
|
+
this.localize = new Localize(this);
|
|
486
|
+
this.resizeObserver = new ResizeObserver(() => this.updateScroll());
|
|
487
|
+
this.previousStartOpacity = null;
|
|
488
|
+
this.previousEndOpacity = null;
|
|
489
|
+
this.canScroll = false;
|
|
490
|
+
this.orientation = "horizontal";
|
|
491
|
+
this.withoutScrollbar = false;
|
|
492
|
+
this.withoutShadow = false;
|
|
493
|
+
}
|
|
494
|
+
static {
|
|
495
|
+
this.styles = [hostStyles, scroller_styles_default];
|
|
496
|
+
}
|
|
497
|
+
connectedCallback() {
|
|
498
|
+
super.connectedCallback();
|
|
499
|
+
this.resizeObserver.observe(this);
|
|
500
|
+
}
|
|
501
|
+
disconnectedCallback() {
|
|
502
|
+
super.disconnectedCallback();
|
|
503
|
+
this.resizeObserver.disconnect();
|
|
504
|
+
}
|
|
505
|
+
handleKeyDown(event) {
|
|
506
|
+
if (event.key === "Home") {
|
|
507
|
+
event.preventDefault();
|
|
508
|
+
this.content.scrollTo({
|
|
509
|
+
left: this.orientation === "horizontal" ? 0 : void 0,
|
|
510
|
+
top: this.orientation === "vertical" ? 0 : void 0
|
|
511
|
+
});
|
|
512
|
+
}
|
|
513
|
+
if (event.key === "End") {
|
|
514
|
+
event.preventDefault();
|
|
515
|
+
this.content.scrollTo({
|
|
516
|
+
left: this.orientation === "horizontal" ? this.content.scrollWidth : void 0,
|
|
517
|
+
top: this.orientation === "vertical" ? this.content.scrollHeight : void 0
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
handleSlotChange() {
|
|
522
|
+
this.updateScroll();
|
|
523
|
+
}
|
|
524
|
+
updateScroll() {
|
|
525
|
+
let startShadowOpacity;
|
|
526
|
+
let endShadowOpacity;
|
|
527
|
+
if (this.orientation === "horizontal") {
|
|
528
|
+
const clientWidth = Math.ceil(this.content.clientWidth);
|
|
529
|
+
const scrollLeft = Math.abs(Math.ceil(this.content.scrollLeft));
|
|
530
|
+
const maxScroll = Math.ceil(this.content.scrollWidth) - clientWidth;
|
|
531
|
+
this.canScroll = maxScroll > 0;
|
|
532
|
+
startShadowOpacity = Math.min(1, scrollLeft / (maxScroll * .05));
|
|
533
|
+
endShadowOpacity = Math.min(1, (maxScroll - scrollLeft) / (maxScroll * .05));
|
|
534
|
+
} else {
|
|
535
|
+
const clientHeight = Math.ceil(this.content.clientHeight);
|
|
536
|
+
const scrollTop = Math.abs(Math.ceil(this.content.scrollTop));
|
|
537
|
+
const maxScroll = Math.ceil(this.content.scrollHeight) - clientHeight;
|
|
538
|
+
this.canScroll = maxScroll > 0;
|
|
539
|
+
startShadowOpacity = Math.min(1, scrollTop / (maxScroll * .05));
|
|
540
|
+
endShadowOpacity = Math.min(1, (maxScroll - scrollTop) / (maxScroll * .05));
|
|
541
|
+
}
|
|
542
|
+
const newStartOpacity = String(startShadowOpacity || 0);
|
|
543
|
+
const newEndOpacity = String(endShadowOpacity || 0);
|
|
544
|
+
if (this.previousStartOpacity !== newStartOpacity) {
|
|
545
|
+
this.style.setProperty("--start-shadow-opacity", newStartOpacity);
|
|
546
|
+
this.previousStartOpacity = newStartOpacity;
|
|
547
|
+
}
|
|
548
|
+
if (this.previousEndOpacity !== newEndOpacity) {
|
|
549
|
+
this.style.setProperty("--end-shadow-opacity", newEndOpacity);
|
|
550
|
+
this.previousEndOpacity = newEndOpacity;
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
render() {
|
|
554
|
+
return html`
|
|
555
|
+
${this.withoutShadow ? "" : html`
|
|
556
|
+
<div id="start-shadow" part="start-shadow" aria-hidden="true"></div>
|
|
557
|
+
<div id="end-shadow" part="end-shadow" aria-hidden="true"></div>
|
|
558
|
+
`}
|
|
559
|
+
|
|
560
|
+
<div
|
|
561
|
+
id="content"
|
|
562
|
+
part="content"
|
|
563
|
+
role="region"
|
|
564
|
+
aria-label=${this.localize.term("scrollableRegion")}
|
|
565
|
+
tabindex=${this.canScroll ? "0" : "-1"}
|
|
566
|
+
@keydown=${this.handleKeyDown}
|
|
567
|
+
@scroll=${this.updateScroll}
|
|
568
|
+
>
|
|
569
|
+
<slot @slotchange=${this.handleSlotChange}></slot>
|
|
570
|
+
</div>
|
|
571
|
+
`;
|
|
572
|
+
}
|
|
573
|
+
};
|
|
574
|
+
__decorate([query("#content")], SigveloScroller.prototype, "content", void 0);
|
|
575
|
+
__decorate([state()], SigveloScroller.prototype, "canScroll", void 0);
|
|
576
|
+
__decorate([property({ reflect: true })], SigveloScroller.prototype, "orientation", void 0);
|
|
577
|
+
__decorate([property({
|
|
578
|
+
attribute: "without-scrollbar",
|
|
579
|
+
type: Boolean,
|
|
580
|
+
reflect: true
|
|
581
|
+
})], SigveloScroller.prototype, "withoutScrollbar", void 0);
|
|
582
|
+
__decorate([property({
|
|
583
|
+
attribute: "without-shadow",
|
|
584
|
+
type: Boolean,
|
|
585
|
+
reflect: true
|
|
586
|
+
})], SigveloScroller.prototype, "withoutShadow", void 0);
|
|
587
|
+
__decorate([eventOptions({ passive: true })], SigveloScroller.prototype, "updateScroll", null);
|
|
588
|
+
customElements.define("sigvelo-scroller", SigveloScroller);
|
|
589
|
+
//#endregion
|
|
590
|
+
export { SigveloScroller as t };
|