@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
package/dist/index.js
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import "./translations/en.js";
|
|
2
|
+
import { registerIconLibrary, unregisterIconLibrary } from "./utilities/icon-library.js";
|
|
3
|
+
import { t as SigveloIcon } from "./icon-BPVkNsY4.js";
|
|
4
|
+
import { t as SigveloAccordionItem } from "./accordion-item-DvPfhpm8.js";
|
|
5
|
+
import { t as SigveloAccordion } from "./accordion-zDr-Br4V.js";
|
|
6
|
+
import { t as SigveloActionBar } from "./action-bar-CjN_UcnP.js";
|
|
7
|
+
import { t as SigveloAlertDialog } from "./alert-dialog-D25Oi_TS.js";
|
|
8
|
+
import { t as SigveloDialog } from "./dialog-Cx46HMaZ.js";
|
|
9
|
+
import { t as SigveloAvatar } from "./avatar-CRP0kW3x.js";
|
|
10
|
+
import { t as SigveloBadge } from "./badge-Ct95U4UO.js";
|
|
11
|
+
import { t as SigveloBreadcrumb } from "./breadcrumb-uURhiqWJ.js";
|
|
12
|
+
import { t as SigveloBreadcrumbItem } from "./breadcrumb-item-P5pdq_gE.js";
|
|
13
|
+
import { t as SigveloSpinner } from "./spinner-C04Dmc0H.js";
|
|
14
|
+
import { t as SigveloButton } from "./button-5k_aL_gD.js";
|
|
15
|
+
import { t as SigveloButtonGroup } from "./button-group-BydvJTQy.js";
|
|
16
|
+
import { t as SigveloCallout } from "./callout-B8zTf8Go.js";
|
|
17
|
+
import { t as SigveloCard } from "./card-DIg1-X2G.js";
|
|
18
|
+
import { t as SigveloCarouselItem } from "./carousel-item-B5-X31Ha.js";
|
|
19
|
+
import { t as SigveloCarousel } from "./carousel-Bktu7wrD.js";
|
|
20
|
+
import { t as SigveloCheckbox } from "./checkbox-D6r7PVPj.js";
|
|
21
|
+
import { t as SigveloCheckboxGroup } from "./checkbox-group-CLvNAO_F.js";
|
|
22
|
+
import { SigveloCopy } from "./components/copy/copy.js";
|
|
23
|
+
import { t as SigveloTooltip } from "./tooltip-DbyoPFNe.js";
|
|
24
|
+
import { t as SigveloSlider } from "./slider-B90Il7x3.js";
|
|
25
|
+
import { t as SigveloTextField } from "./text-field-inpJfp0A.js";
|
|
26
|
+
import { t as SigveloColorPicker } from "./color-picker-adwOmtRl.js";
|
|
27
|
+
import { t as SigveloColorInput } from "./color-input-DPIxi9wR.js";
|
|
28
|
+
import { t as SigveloComboboxItem } from "./combobox-item-yM6tDrGG.js";
|
|
29
|
+
import { t as SigveloCombobox } from "./combobox-B6al50UG.js";
|
|
30
|
+
import { t as SigveloComparison } from "./comparison-CyqKrCN-.js";
|
|
31
|
+
import { t as SigveloDate } from "./date-CJPmOdi9.js";
|
|
32
|
+
import { n as SigveloRowSelectEvent, t as SigveloDataTable } from "./data-table-CITa8DSn.js";
|
|
33
|
+
import { t as SigveloDivider } from "./divider-9vNsfHW8.js";
|
|
34
|
+
import { t as SigveloDropdownItem } from "./dropdown-item-i77cRuN6.js";
|
|
35
|
+
import { t as SigveloDropdown } from "./dropdown-BXSKpVX9.js";
|
|
36
|
+
import { t as SigveloEmptyState } from "./empty-state-BLWjtKUo.js";
|
|
37
|
+
import { t as SigveloEmptyResult } from "./empty-result-B2ln1yFL.js";
|
|
38
|
+
import { t as SigveloExpander } from "./expander-Bwvxj6Oa.js";
|
|
39
|
+
import { t as SigveloField } from "./field-BEyS909F.js";
|
|
40
|
+
import { t as SigveloFileInput } from "./file-input-BEumLJjg.js";
|
|
41
|
+
import { n as SigveloFilterChangeEvent, t as SigveloFilterBar } from "./filter-bar-Dcs67aXo.js";
|
|
42
|
+
import { t as SigveloFormSection } from "./form-section-BchPetkj.js";
|
|
43
|
+
import { t as SigveloInclude } from "./include-qNUh_6kT.js";
|
|
44
|
+
import { t as SigveloInfiniteScroller } from "./infinite-scroller-BmmtnWNt.js";
|
|
45
|
+
import { t as SigveloIntersectionObserver } from "./intersection-observer-B6TciOAQ.js";
|
|
46
|
+
import { t as SigveloListboxItem } from "./listbox-item-CwD9s3VY.js";
|
|
47
|
+
import { t as SigveloListbox } from "./listbox-C3XXRWGX.js";
|
|
48
|
+
import { t as SigveloLoremIpsum } from "./lorem-ipsum-B2x3V-v8.js";
|
|
49
|
+
import { t as SigveloMeter } from "./meter-BIDyjwFp.js";
|
|
50
|
+
import { t as SigveloMetric } from "./metric-DbuOcDp_.js";
|
|
51
|
+
import { t as SigveloMetricGrid } from "./metric-grid-C2Pb0Zl3.js";
|
|
52
|
+
import { t as SigveloMutationObserver } from "./mutation-observer-DS8EBuOp.js";
|
|
53
|
+
import { t as SigveloNavicon } from "./navicon-_yMHY27-.js";
|
|
54
|
+
import { t as SigveloNumber } from "./number-BNtNXNF3.js";
|
|
55
|
+
import { t as SigveloNumberField } from "./number-field-BQHB7UYo.js";
|
|
56
|
+
import { t as SigveloPagination } from "./pagination-DuKPuzdb.js";
|
|
57
|
+
import { t as SigveloPopover } from "./popover-DJBrJ0za.js";
|
|
58
|
+
import { t as SigveloPreviewCard } from "./preview-card-C7H1FPfd.js";
|
|
59
|
+
import { t as SigveloProgress } from "./progress-DzVk260j.js";
|
|
60
|
+
import { t as SigveloRadioItem } from "./radio-item-DIrUStAX.js";
|
|
61
|
+
import { t as SigveloRadio } from "./radio-BtDG9xJM.js";
|
|
62
|
+
import { t as SigveloRandomContent } from "./random-content-BwiirXdG.js";
|
|
63
|
+
import { t as SigveloRating } from "./rating-C1BcJDIO.js";
|
|
64
|
+
import { t as SigveloResizeObserver } from "./resize-observer-DcrLhddo.js";
|
|
65
|
+
import { t as SigveloScrollArea } from "./scroll-area-COc1857S.js";
|
|
66
|
+
import { t as SigveloScroller } from "./scroller-LYgBVyfY.js";
|
|
67
|
+
import { t as SigveloSearchList } from "./search-list-Clmrg8EV.js";
|
|
68
|
+
import { t as SigveloSelect } from "./select-DLIaRnA4.js";
|
|
69
|
+
import { t as SigveloSelectionSummary } from "./selection-summary-BVnNJ8Lw.js";
|
|
70
|
+
import { t as SigveloShare } from "./share-bsgXZCl7.js";
|
|
71
|
+
import { t as SigveloSlideActivator } from "./slide-activator-DlxQt9R9.js";
|
|
72
|
+
import { t as SigveloSparkline } from "./sparkline-CcpTaJ_Z.js";
|
|
73
|
+
import { t as SigveloSplitter } from "./splitter-MnD4In9H.js";
|
|
74
|
+
import { t as SigveloSwitch } from "./switch-CPaEKbog.js";
|
|
75
|
+
import { t as SigveloTab } from "./tab-C-FtuNmh.js";
|
|
76
|
+
import { t as SigveloTabPanel } from "./tab-panel-BaBl6eep.js";
|
|
77
|
+
import { t as SigveloTabList } from "./tab-list-B_Ye_Oj9.js";
|
|
78
|
+
import { t as SigveloTextArea } from "./text-area-Czixaz-_.js";
|
|
79
|
+
import { t as SigveloTextMask } from "./text-mask-DDEurj90.js";
|
|
80
|
+
import { t as SigveloTimedContent } from "./timed-content-pvEP4l5V.js";
|
|
81
|
+
import { t as SigveloToastItem } from "./toast-item-IS8IFUEg.js";
|
|
82
|
+
import { t as SigveloTransitionGroup } from "./transition-group-3hnAnwSd.js";
|
|
83
|
+
import { t as SigveloToast } from "./toast-BnZaIg6Z.js";
|
|
84
|
+
import { t as SigveloToggleIcon } from "./toggle-icon-4oLDeEt4.js";
|
|
85
|
+
import { t as SigveloToggleTag } from "./toggle-tag-1sfTFJtg.js";
|
|
86
|
+
import { t as SigveloToolbar } from "./toolbar-CEZ0-F-X.js";
|
|
87
|
+
import { t as SigveloZoomableFrame } from "./zoomable-frame-Cldvj5sE.js";
|
|
88
|
+
import "./components/index.js";
|
|
89
|
+
import { allDefined } from "@mcp-b/wc-support/utilities/defined";
|
|
90
|
+
import { getLibraryPath, setLibraryPath } from "@mcp-b/wc-support/utilities/library";
|
|
91
|
+
import { discoverElements, preventTurboFouce, startLoader, stopLoader } from "@mcp-b/wc-support/utilities/loader";
|
|
92
|
+
export { SigveloAccordion, SigveloAccordionItem, SigveloActionBar, SigveloAlertDialog, SigveloAvatar, SigveloBadge, SigveloBreadcrumb, SigveloBreadcrumbItem, SigveloButton, SigveloButtonGroup, SigveloCallout, SigveloCard, SigveloCarousel, SigveloCarouselItem, SigveloCheckbox, SigveloCheckboxGroup, SigveloColorInput, SigveloColorPicker, SigveloCombobox, SigveloComboboxItem, SigveloComparison, SigveloCopy, SigveloDataTable, SigveloDate, SigveloDialog, SigveloDivider, SigveloDropdown, SigveloDropdownItem, SigveloEmptyResult, SigveloEmptyState, SigveloExpander, SigveloField, SigveloFileInput, SigveloFilterBar, SigveloFilterChangeEvent, SigveloFormSection, SigveloIcon, SigveloInclude, SigveloInfiniteScroller, SigveloIntersectionObserver, SigveloListbox, SigveloListboxItem, SigveloLoremIpsum, SigveloMeter, SigveloMetric, SigveloMetricGrid, SigveloMutationObserver, SigveloNavicon, SigveloNumber, SigveloNumberField, SigveloPagination, SigveloPopover, SigveloPreviewCard, SigveloProgress, SigveloRadio, SigveloRadioItem, SigveloRandomContent, SigveloRating, SigveloResizeObserver, SigveloRowSelectEvent, SigveloScrollArea, SigveloScroller, SigveloSearchList, SigveloSelect, SigveloSelectionSummary, SigveloShare, SigveloSlideActivator, SigveloSlider, SigveloSparkline, SigveloSpinner, SigveloSplitter, SigveloSwitch, SigveloTab, SigveloTabList, SigveloTabPanel, SigveloTextArea, SigveloTextField, SigveloTextMask, SigveloTimedContent, SigveloToast, SigveloToastItem, SigveloToggleIcon, SigveloToggleTag, SigveloToolbar, SigveloTooltip, SigveloTransitionGroup, SigveloZoomableFrame, allDefined, discoverElements, getLibraryPath, preventTurboFouce, registerIconLibrary, setLibraryPath, startLoader, stopLoader, unregisterIconLibrary };
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { Localize } from "./utilities/localize.js";
|
|
2
|
+
import { t as __decorate } from "./decorate-DcF3lt7P.js";
|
|
3
|
+
import "./spinner-C04Dmc0H.js";
|
|
4
|
+
import { css, html } from "lit";
|
|
5
|
+
import { property, query, state } from "lit/decorators.js";
|
|
6
|
+
import hostStyles from "@mcp-b/wc-support/styles/host.styles";
|
|
7
|
+
import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
8
|
+
import { SigveloLoadMoreEvent } from "@mcp-b/wc-support/events/load";
|
|
9
|
+
//#region src/components/infinite-scroller/infinite-scroller.styles.ts
|
|
10
|
+
var infinite_scroller_styles_default = css`
|
|
11
|
+
:host {
|
|
12
|
+
display: flex;
|
|
13
|
+
position: relative;
|
|
14
|
+
flex-direction: column;
|
|
15
|
+
width: 100%;
|
|
16
|
+
max-height: 25rem;
|
|
17
|
+
overflow-y: auto;
|
|
18
|
+
gap: 0;
|
|
19
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
20
|
+
var(--sigvelo-color-neutral-border-subtle);
|
|
21
|
+
border-radius: var(--sigvelo-radius-md);
|
|
22
|
+
background-color: var(--sigvelo-color-surface);
|
|
23
|
+
box-shadow: var(--sigvelo-elevation-hairline);
|
|
24
|
+
scrollbar-color: var(--sigvelo-color-neutral-bg) transparent;
|
|
25
|
+
scrollbar-width: thin;
|
|
26
|
+
-webkit-overflow-scrolling: touch;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:host(:focus) {
|
|
30
|
+
outline: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:host(:focus-visible) {
|
|
34
|
+
outline: var(--sigvelo-border-style) calc(var(--sigvelo-border-width) + 1px)
|
|
35
|
+
var(--sigvelo-color-focus);
|
|
36
|
+
outline-offset: var(--sigvelo-border-width);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
sigvelo-spinner {
|
|
40
|
+
margin-inline: auto;
|
|
41
|
+
margin-block: 1rem;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
::slotted(*:focus) {
|
|
45
|
+
outline: none;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
::slotted(*:focus-visible) {
|
|
49
|
+
outline: var(--sigvelo-focus-ring);
|
|
50
|
+
outline-offset: calc(-1 * var(--sigvelo-focus-width));
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
//#endregion
|
|
54
|
+
//#region src/components/infinite-scroller/infinite-scroller.ts
|
|
55
|
+
/**
|
|
56
|
+
* <sigvelo-infinite-scroller>
|
|
57
|
+
*
|
|
58
|
+
* @summary Provides an accessible container for continuously loading content feeds.
|
|
59
|
+
* @tag sigvelo-infinite-scroller
|
|
60
|
+
* @documentation https://design-system.sigvelo.com/docs/components/infinite-scroller
|
|
61
|
+
* @status stable
|
|
62
|
+
* @since 1.0
|
|
63
|
+
*
|
|
64
|
+
* @dependency sigvelo-spinner
|
|
65
|
+
*
|
|
66
|
+
* @slot - The default slot for feed items. Each item should have role="article" and be focusable.
|
|
67
|
+
*
|
|
68
|
+
* @event sigvelo-load-more - Emitted when scrolling reaches the threshold and more items should be loaded.
|
|
69
|
+
*
|
|
70
|
+
* @cssstate loading - Applied when the infinite scroller is loading more content.
|
|
71
|
+
* @cssstate complete - Applied when the infinite scroller has no more content to load.
|
|
72
|
+
*
|
|
73
|
+
* @example Default
|
|
74
|
+
* Infinite scrollers load new content automatically as users scroll down a feed. Instead of clicking "Next" buttons, content continuously appears as they approach the bottom. Infinite scroller follows the ARIA APG Infinite Scrolling Feed pattern for accessibility.
|
|
75
|
+
*
|
|
76
|
+
* ```html
|
|
77
|
+
* <sigvelo-infinite-scroller id="infinite__overview">
|
|
78
|
+
* <div class="item">Item 1</div>
|
|
79
|
+
* <div class="item">Item 2</div>
|
|
80
|
+
* <div class="item">Item 3</div>
|
|
81
|
+
* <div class="item">Item 4</div>
|
|
82
|
+
* <div class="item">Item 5</div>
|
|
83
|
+
* <div class="item">Item 6</div>
|
|
84
|
+
* <div class="item">Item 7</div>
|
|
85
|
+
* <div class="item">Item 8</div>
|
|
86
|
+
* <div class="item">Item 9</div>
|
|
87
|
+
* <div class="item">Item 10</div>
|
|
88
|
+
* <div class="item">Item 11</div>
|
|
89
|
+
* <div class="item">Item 12</div>
|
|
90
|
+
* <div class="item">Item 13</div>
|
|
91
|
+
* <div class="item">Item 14</div>
|
|
92
|
+
* <div class="item">Item 15</div>
|
|
93
|
+
* <div class="item">Item 16</div>
|
|
94
|
+
* <div class="item">Item 17</div>
|
|
95
|
+
* <div class="item">Item 18</div>
|
|
96
|
+
* <div class="item">Item 19</div>
|
|
97
|
+
* <div class="item">Item 20</div>
|
|
98
|
+
* </sigvelo-infinite-scroller>
|
|
99
|
+
*
|
|
100
|
+
* <script>
|
|
101
|
+
* const infiniteScroll = document.getElementById('infinite__overview');
|
|
102
|
+
* let count = infiniteScroll.querySelectorAll('.item').length;
|
|
103
|
+
*
|
|
104
|
+
* infiniteScroll.addEventListener('sigvelo-load-more', async event => {
|
|
105
|
+
* // Simulate fetching content from a server
|
|
106
|
+
* setTimeout(() => {
|
|
107
|
+
* for (let i = 0; i < 20; i++) {
|
|
108
|
+
* const item = document.createElement('div');
|
|
109
|
+
* item.classList.add('item');
|
|
110
|
+
* item.textContent = `Item ${++count}`;
|
|
111
|
+
* infiniteScroll.append(item);
|
|
112
|
+
* }
|
|
113
|
+
*
|
|
114
|
+
* // We'll pretend there's nothing more to load after 100
|
|
115
|
+
* if (count >= 100) {
|
|
116
|
+
* infiniteScroll.complete();
|
|
117
|
+
* return;
|
|
118
|
+
* }
|
|
119
|
+
* }, 300);
|
|
120
|
+
* });
|
|
121
|
+
* <\/script>
|
|
122
|
+
*
|
|
123
|
+
* <style>
|
|
124
|
+
* #infinite__overview {
|
|
125
|
+
* .item {
|
|
126
|
+
* padding: 1rem 1.5rem;
|
|
127
|
+
*
|
|
128
|
+
* &:not(:last-child) {
|
|
129
|
+
* border-bottom: solid 1px var(--sigvelo-color-neutral-border-subtle);
|
|
130
|
+
* }
|
|
131
|
+
* }
|
|
132
|
+
* }
|
|
133
|
+
* </style>
|
|
134
|
+
* ```
|
|
135
|
+
*
|
|
136
|
+
* @example Providing initial content
|
|
137
|
+
* You can slot just about any content you want into an infinite scroller container. The component watches the scroll position and dispatches the `sigvelo-load-more` event when users get close to the bottom.
|
|
138
|
+
*
|
|
139
|
+
* ```html
|
|
140
|
+
* <sigvelo-infinite-scroller label="News Feed">
|
|
141
|
+
* <!-- Initial content -->
|
|
142
|
+
* <article class="feed-item">First item</article>
|
|
143
|
+
* <article class="feed-item">Second item</article>
|
|
144
|
+
* <article class="feed-item">Third item</article>
|
|
145
|
+
* ...
|
|
146
|
+
* </sigvelo-infinite-scroller>
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* @example Loading more content
|
|
150
|
+
* In your code, listen for the `sigvelo-load-more` event. This is your cue to asynchronously load more content, e.g. from the server, and append it to the container. If no more content is available, call the component's `complete()` method to disable further loading.
|
|
151
|
+
*
|
|
152
|
+
* ```js
|
|
153
|
+
* const infiniteScroll = document.querySelector('sigvelo-infinite-scroll');
|
|
154
|
+
* let currentPage = 1;
|
|
155
|
+
*
|
|
156
|
+
* infiniteScroll.addEventListener('sigvelo-load-more', async () => {
|
|
157
|
+
* try {
|
|
158
|
+
* // Fetch new data from your API
|
|
159
|
+
* const response = await fetch(`/api/posts?page=${currentPage}`);
|
|
160
|
+
* const posts = await response.json();
|
|
161
|
+
*
|
|
162
|
+
* // Append posts to the feed
|
|
163
|
+
* posts.forEach(post => {
|
|
164
|
+
* const item = document.createElement('article');
|
|
165
|
+
* item.className = 'feed-item';
|
|
166
|
+
* item.innerHTML = `<h3>${post.title}</h3><p>${post.excerpt}</p>`;
|
|
167
|
+
* infiniteScroll.appendChild(item);
|
|
168
|
+
* });
|
|
169
|
+
*
|
|
170
|
+
* currentPage++;
|
|
171
|
+
*
|
|
172
|
+
* // Stop loading when no more content is available
|
|
173
|
+
* if (posts.length === 0) {
|
|
174
|
+
* infiniteScroll.complete();
|
|
175
|
+
* }
|
|
176
|
+
* } catch (error) {
|
|
177
|
+
* console.error('Failed to load more items:', error);
|
|
178
|
+
* }
|
|
179
|
+
* });
|
|
180
|
+
* ```
|
|
181
|
+
*
|
|
182
|
+
* To reenable loading, append additional items to the container or perform any DOM action that results in a `slotchange`.
|
|
183
|
+
*
|
|
184
|
+
* **Note:** When the container is empty initially or if the items don't cause the container to scroll, the `sigvelo-load-more` event will be dispatched immediately to request more items. This behavior allows the entire feed to load, regardless of content or screen size.
|
|
185
|
+
*/
|
|
186
|
+
var SigveloInfiniteScroller = class extends SigveloElement {
|
|
187
|
+
constructor(..._args) {
|
|
188
|
+
super(..._args);
|
|
189
|
+
this.isLoading = false;
|
|
190
|
+
this.isComplete = false;
|
|
191
|
+
this.contentCheckFrameId = null;
|
|
192
|
+
this.localize = new Localize(this);
|
|
193
|
+
this.thresholdInPixels = 0;
|
|
194
|
+
this.thresholdInPercent = 0;
|
|
195
|
+
this.label = "";
|
|
196
|
+
this.threshold = "20%";
|
|
197
|
+
this.handleScroll = () => {
|
|
198
|
+
if (this.isComplete || this.isLoading) return;
|
|
199
|
+
if (this.checkScrollThreshold()) {
|
|
200
|
+
this.isLoading = true;
|
|
201
|
+
this.dispatchEvent(new SigveloLoadMoreEvent());
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
static {
|
|
206
|
+
this.styles = [hostStyles, infinite_scroller_styles_default];
|
|
207
|
+
}
|
|
208
|
+
connectedCallback() {
|
|
209
|
+
super.connectedCallback();
|
|
210
|
+
this.setAttribute("role", "feed");
|
|
211
|
+
this.parseThreshold();
|
|
212
|
+
this.addEventListener("scroll", this.handleScroll);
|
|
213
|
+
}
|
|
214
|
+
disconnectedCallback() {
|
|
215
|
+
super.disconnectedCallback();
|
|
216
|
+
this.removeEventListener("scroll", this.handleScroll);
|
|
217
|
+
if (this.contentCheckFrameId) cancelAnimationFrame(this.contentCheckFrameId);
|
|
218
|
+
}
|
|
219
|
+
updated(changedProperties) {
|
|
220
|
+
if (changedProperties.has("label")) this.setAttribute("aria-label", this.label || this.localize.term("feed"));
|
|
221
|
+
if (changedProperties.has("threshold")) this.parseThreshold();
|
|
222
|
+
if (changedProperties.has("isLoading")) this.customStates.set("loading", this.isLoading);
|
|
223
|
+
if (changedProperties.has("isComplete")) this.customStates.set("complete", this.isComplete);
|
|
224
|
+
}
|
|
225
|
+
parseThreshold() {
|
|
226
|
+
const val = this.threshold;
|
|
227
|
+
if (val.endsWith("%")) {
|
|
228
|
+
this.thresholdInPixels = 0;
|
|
229
|
+
this.thresholdInPercent = parseFloat(val) / 100;
|
|
230
|
+
} else {
|
|
231
|
+
this.thresholdInPixels = parseFloat(val);
|
|
232
|
+
this.thresholdInPercent = 0;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
checkScrollThreshold() {
|
|
236
|
+
const scrollPosition = this.scrollTop + this.clientHeight;
|
|
237
|
+
const threshold = this.thresholdInPercent !== 0 ? this.clientHeight * this.thresholdInPercent : this.thresholdInPixels;
|
|
238
|
+
return scrollPosition >= this.scrollHeight - threshold;
|
|
239
|
+
}
|
|
240
|
+
handleSlotChange() {
|
|
241
|
+
this.defaultSlot.assignedElements({ flatten: true }).forEach((el) => {
|
|
242
|
+
if (el instanceof HTMLElement) {
|
|
243
|
+
if (!el.hasAttribute("role")) el.setAttribute("role", "article");
|
|
244
|
+
if (!el.hasAttribute("tabindex")) el.setAttribute("tabindex", "0");
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
this.isLoading = false;
|
|
248
|
+
this.scheduleContentCheck();
|
|
249
|
+
}
|
|
250
|
+
isScrollable() {
|
|
251
|
+
return this.scrollHeight > this.clientHeight;
|
|
252
|
+
}
|
|
253
|
+
scheduleContentCheck() {
|
|
254
|
+
if (this.contentCheckFrameId) cancelAnimationFrame(this.contentCheckFrameId);
|
|
255
|
+
this.contentCheckFrameId = requestAnimationFrame(() => {
|
|
256
|
+
if (this.isComplete || this.isLoading) return;
|
|
257
|
+
if (!this.isScrollable() || this.checkScrollThreshold()) {
|
|
258
|
+
this.isLoading = true;
|
|
259
|
+
this.dispatchEvent(new SigveloLoadMoreEvent());
|
|
260
|
+
}
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Mark the feed as completed, preventing further load events. Changing content in the default slot will reset this
|
|
265
|
+
* and re-enable infinite scrolling.
|
|
266
|
+
*/
|
|
267
|
+
complete() {
|
|
268
|
+
this.isComplete = true;
|
|
269
|
+
this.isLoading = false;
|
|
270
|
+
}
|
|
271
|
+
render() {
|
|
272
|
+
return html`
|
|
273
|
+
<slot @slotchange=${this.handleSlotChange}></slot>
|
|
274
|
+
${!this.isComplete ? html` <sigvelo-spinner></sigvelo-spinner> ` : ""}
|
|
275
|
+
`;
|
|
276
|
+
}
|
|
277
|
+
};
|
|
278
|
+
__decorate([query("slot:not([name])")], SigveloInfiniteScroller.prototype, "defaultSlot", void 0);
|
|
279
|
+
__decorate([state()], SigveloInfiniteScroller.prototype, "isLoading", void 0);
|
|
280
|
+
__decorate([state()], SigveloInfiniteScroller.prototype, "isComplete", void 0);
|
|
281
|
+
__decorate([property()], SigveloInfiniteScroller.prototype, "label", void 0);
|
|
282
|
+
__decorate([property()], SigveloInfiniteScroller.prototype, "threshold", void 0);
|
|
283
|
+
customElements.define("sigvelo-infinite-scroller", SigveloInfiniteScroller);
|
|
284
|
+
//#endregion
|
|
285
|
+
export { SigveloInfiniteScroller as t };
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
import { CSSResultGroup, PropertyValues } from "lit";
|
|
2
|
+
import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
3
|
+
|
|
4
|
+
//#region src/components/infinite-scroller/infinite-scroller.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* <sigvelo-infinite-scroller>
|
|
7
|
+
*
|
|
8
|
+
* @summary Provides an accessible container for continuously loading content feeds.
|
|
9
|
+
* @tag sigvelo-infinite-scroller
|
|
10
|
+
* @documentation https://design-system.sigvelo.com/docs/components/infinite-scroller
|
|
11
|
+
* @status stable
|
|
12
|
+
* @since 1.0
|
|
13
|
+
*
|
|
14
|
+
* @dependency sigvelo-spinner
|
|
15
|
+
*
|
|
16
|
+
* @slot - The default slot for feed items. Each item should have role="article" and be focusable.
|
|
17
|
+
*
|
|
18
|
+
* @event sigvelo-load-more - Emitted when scrolling reaches the threshold and more items should be loaded.
|
|
19
|
+
*
|
|
20
|
+
* @cssstate loading - Applied when the infinite scroller is loading more content.
|
|
21
|
+
* @cssstate complete - Applied when the infinite scroller has no more content to load.
|
|
22
|
+
*
|
|
23
|
+
* @example Default
|
|
24
|
+
* Infinite scrollers load new content automatically as users scroll down a feed. Instead of clicking "Next" buttons, content continuously appears as they approach the bottom. Infinite scroller follows the ARIA APG Infinite Scrolling Feed pattern for accessibility.
|
|
25
|
+
*
|
|
26
|
+
* ```html
|
|
27
|
+
* <sigvelo-infinite-scroller id="infinite__overview">
|
|
28
|
+
* <div class="item">Item 1</div>
|
|
29
|
+
* <div class="item">Item 2</div>
|
|
30
|
+
* <div class="item">Item 3</div>
|
|
31
|
+
* <div class="item">Item 4</div>
|
|
32
|
+
* <div class="item">Item 5</div>
|
|
33
|
+
* <div class="item">Item 6</div>
|
|
34
|
+
* <div class="item">Item 7</div>
|
|
35
|
+
* <div class="item">Item 8</div>
|
|
36
|
+
* <div class="item">Item 9</div>
|
|
37
|
+
* <div class="item">Item 10</div>
|
|
38
|
+
* <div class="item">Item 11</div>
|
|
39
|
+
* <div class="item">Item 12</div>
|
|
40
|
+
* <div class="item">Item 13</div>
|
|
41
|
+
* <div class="item">Item 14</div>
|
|
42
|
+
* <div class="item">Item 15</div>
|
|
43
|
+
* <div class="item">Item 16</div>
|
|
44
|
+
* <div class="item">Item 17</div>
|
|
45
|
+
* <div class="item">Item 18</div>
|
|
46
|
+
* <div class="item">Item 19</div>
|
|
47
|
+
* <div class="item">Item 20</div>
|
|
48
|
+
* </sigvelo-infinite-scroller>
|
|
49
|
+
*
|
|
50
|
+
* <script>
|
|
51
|
+
* const infiniteScroll = document.getElementById('infinite__overview');
|
|
52
|
+
* let count = infiniteScroll.querySelectorAll('.item').length;
|
|
53
|
+
*
|
|
54
|
+
* infiniteScroll.addEventListener('sigvelo-load-more', async event => {
|
|
55
|
+
* // Simulate fetching content from a server
|
|
56
|
+
* setTimeout(() => {
|
|
57
|
+
* for (let i = 0; i < 20; i++) {
|
|
58
|
+
* const item = document.createElement('div');
|
|
59
|
+
* item.classList.add('item');
|
|
60
|
+
* item.textContent = `Item ${++count}`;
|
|
61
|
+
* infiniteScroll.append(item);
|
|
62
|
+
* }
|
|
63
|
+
*
|
|
64
|
+
* // We'll pretend there's nothing more to load after 100
|
|
65
|
+
* if (count >= 100) {
|
|
66
|
+
* infiniteScroll.complete();
|
|
67
|
+
* return;
|
|
68
|
+
* }
|
|
69
|
+
* }, 300);
|
|
70
|
+
* });
|
|
71
|
+
* </script>
|
|
72
|
+
*
|
|
73
|
+
* <style>
|
|
74
|
+
* #infinite__overview {
|
|
75
|
+
* .item {
|
|
76
|
+
* padding: 1rem 1.5rem;
|
|
77
|
+
*
|
|
78
|
+
* &:not(:last-child) {
|
|
79
|
+
* border-bottom: solid 1px var(--sigvelo-color-neutral-border-subtle);
|
|
80
|
+
* }
|
|
81
|
+
* }
|
|
82
|
+
* }
|
|
83
|
+
* </style>
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* @example Providing initial content
|
|
87
|
+
* You can slot just about any content you want into an infinite scroller container. The component watches the scroll position and dispatches the `sigvelo-load-more` event when users get close to the bottom.
|
|
88
|
+
*
|
|
89
|
+
* ```html
|
|
90
|
+
* <sigvelo-infinite-scroller label="News Feed">
|
|
91
|
+
* <!-- Initial content -->
|
|
92
|
+
* <article class="feed-item">First item</article>
|
|
93
|
+
* <article class="feed-item">Second item</article>
|
|
94
|
+
* <article class="feed-item">Third item</article>
|
|
95
|
+
* ...
|
|
96
|
+
* </sigvelo-infinite-scroller>
|
|
97
|
+
* ```
|
|
98
|
+
*
|
|
99
|
+
* @example Loading more content
|
|
100
|
+
* In your code, listen for the `sigvelo-load-more` event. This is your cue to asynchronously load more content, e.g. from the server, and append it to the container. If no more content is available, call the component's `complete()` method to disable further loading.
|
|
101
|
+
*
|
|
102
|
+
* ```js
|
|
103
|
+
* const infiniteScroll = document.querySelector('sigvelo-infinite-scroll');
|
|
104
|
+
* let currentPage = 1;
|
|
105
|
+
*
|
|
106
|
+
* infiniteScroll.addEventListener('sigvelo-load-more', async () => {
|
|
107
|
+
* try {
|
|
108
|
+
* // Fetch new data from your API
|
|
109
|
+
* const response = await fetch(`/api/posts?page=${currentPage}`);
|
|
110
|
+
* const posts = await response.json();
|
|
111
|
+
*
|
|
112
|
+
* // Append posts to the feed
|
|
113
|
+
* posts.forEach(post => {
|
|
114
|
+
* const item = document.createElement('article');
|
|
115
|
+
* item.className = 'feed-item';
|
|
116
|
+
* item.innerHTML = `<h3>${post.title}</h3><p>${post.excerpt}</p>`;
|
|
117
|
+
* infiniteScroll.appendChild(item);
|
|
118
|
+
* });
|
|
119
|
+
*
|
|
120
|
+
* currentPage++;
|
|
121
|
+
*
|
|
122
|
+
* // Stop loading when no more content is available
|
|
123
|
+
* if (posts.length === 0) {
|
|
124
|
+
* infiniteScroll.complete();
|
|
125
|
+
* }
|
|
126
|
+
* } catch (error) {
|
|
127
|
+
* console.error('Failed to load more items:', error);
|
|
128
|
+
* }
|
|
129
|
+
* });
|
|
130
|
+
* ```
|
|
131
|
+
*
|
|
132
|
+
* To reenable loading, append additional items to the container or perform any DOM action that results in a `slotchange`.
|
|
133
|
+
*
|
|
134
|
+
* **Note:** When the container is empty initially or if the items don't cause the container to scroll, the `sigvelo-load-more` event will be dispatched immediately to request more items. This behavior allows the entire feed to load, regardless of content or screen size.
|
|
135
|
+
*/
|
|
136
|
+
declare class SigveloInfiniteScroller extends SigveloElement {
|
|
137
|
+
static styles: CSSResultGroup;
|
|
138
|
+
defaultSlot: HTMLSlotElement;
|
|
139
|
+
isLoading: boolean;
|
|
140
|
+
isComplete: boolean;
|
|
141
|
+
private contentCheckFrameId;
|
|
142
|
+
private localize;
|
|
143
|
+
private thresholdInPixels;
|
|
144
|
+
private thresholdInPercent;
|
|
145
|
+
/** An accessible label for the feed. */
|
|
146
|
+
label: string;
|
|
147
|
+
/**
|
|
148
|
+
* The scroll threshold at which to trigger loading more items. Accepts percentages (e.g., "20%") or pixels
|
|
149
|
+
* (e.g., "200px").
|
|
150
|
+
*/
|
|
151
|
+
threshold: string;
|
|
152
|
+
connectedCallback(): void;
|
|
153
|
+
disconnectedCallback(): void;
|
|
154
|
+
updated(changedProperties: PropertyValues<this>): void;
|
|
155
|
+
private parseThreshold;
|
|
156
|
+
private checkScrollThreshold;
|
|
157
|
+
private handleScroll;
|
|
158
|
+
private handleSlotChange;
|
|
159
|
+
private isScrollable;
|
|
160
|
+
private scheduleContentCheck;
|
|
161
|
+
/**
|
|
162
|
+
* Mark the feed as completed, preventing further load events. Changing content in the default slot will reset this
|
|
163
|
+
* and re-enable infinite scrolling.
|
|
164
|
+
*/
|
|
165
|
+
complete(): void;
|
|
166
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
167
|
+
}
|
|
168
|
+
declare global {
|
|
169
|
+
interface HTMLElementTagNameMap {
|
|
170
|
+
"sigvelo-infinite-scroller": SigveloInfiniteScroller;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
//#endregion
|
|
174
|
+
export { SigveloInfiniteScroller as t };
|