@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,608 @@
|
|
|
1
|
+
import { CSSResultGroup, PropertyValues } from "lit";
|
|
2
|
+
import { SigveloElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
3
|
+
import { TransitionAnimation } from "@mcp-b/wc-support/utilities/animate";
|
|
4
|
+
|
|
5
|
+
//#region src/components/transition-group/transition-group.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* <sigvelo-transition-group>
|
|
8
|
+
*
|
|
9
|
+
* @summary Improves the user's experience by adding subtle animations as items are added, removed, and reordered in the
|
|
10
|
+
* @tag sigvelo-transition-group
|
|
11
|
+
* group.
|
|
12
|
+
* @documentation https://design-system.sigvelo.com/docs/components/transition-group
|
|
13
|
+
* @status stable
|
|
14
|
+
* @since 1.0
|
|
15
|
+
*
|
|
16
|
+
* @slot - One or more elements to transition when adding, removing, and reordering the DOM.
|
|
17
|
+
*
|
|
18
|
+
* @event sigvelo-content-changed - Emitted when content changes and before the transition animation begins.
|
|
19
|
+
* @event sigvelo-transition-end - Emitted when transition animations end.
|
|
20
|
+
*
|
|
21
|
+
* @cssstate transitioning - Applied when a transition is active.
|
|
22
|
+
*
|
|
23
|
+
* @cssproperty [--duration=0.25s] - The duration of each individual step (not the total transition time).
|
|
24
|
+
*
|
|
25
|
+
* @example Default
|
|
26
|
+
* Wrap a collection of elements in a transition group and use normal DOM APIs to add, remove, and reorder them. The transition group will automatically apply the appropriate animations as elements enter and exit the group.
|
|
27
|
+
*
|
|
28
|
+
* ```html
|
|
29
|
+
* <div id="transition-group__boxes">
|
|
30
|
+
* <!-- Add your elements here -->
|
|
31
|
+
* <sigvelo-transition-group>
|
|
32
|
+
* <div class="box">1</div>
|
|
33
|
+
* <div class="box">2</div>
|
|
34
|
+
* <div class="box">3</div>
|
|
35
|
+
* <div class="box">4</div>
|
|
36
|
+
* <div class="box">5</div>
|
|
37
|
+
* <div class="box">6</div>
|
|
38
|
+
* <div class="box">7</div>
|
|
39
|
+
* <div class="box">8</div>
|
|
40
|
+
* </sigvelo-transition-group>
|
|
41
|
+
*
|
|
42
|
+
* <div class="buttons">
|
|
43
|
+
* <sigvelo-button data-action="add">Add random</sigvelo-button>
|
|
44
|
+
* <sigvelo-button data-action="remove">Remove random</sigvelo-button>
|
|
45
|
+
* <sigvelo-button data-action="shuffle">Shuffle</sigvelo-button>
|
|
46
|
+
* <sigvelo-button data-action="disable" toggle="off">Disable transitions</sigvelo-button>
|
|
47
|
+
* </div>
|
|
48
|
+
* </div>
|
|
49
|
+
*
|
|
50
|
+
* <!-- Everything below is for the demo -->
|
|
51
|
+
* <script>
|
|
52
|
+
* const container = document.getElementById('transition-group__boxes');
|
|
53
|
+
* const transitionGroup = container.querySelector('sigvelo-transition-group');
|
|
54
|
+
* const shuffleButton = container.querySelector('sigvelo-button[data-action="shuffle"]');
|
|
55
|
+
* const addButton = container.querySelector('sigvelo-button[data-action="add"]');
|
|
56
|
+
* const removeButton = container.querySelector('sigvelo-button[data-action="remove"]');
|
|
57
|
+
* const disableButton = container.querySelector('sigvelo-button[data-action="disable"]');
|
|
58
|
+
* let count = transitionGroup.children.length;
|
|
59
|
+
*
|
|
60
|
+
* function addRandomBox() {
|
|
61
|
+
* if (transitionGroup.isTransitioning) return;
|
|
62
|
+
* const children = [...transitionGroup.children];
|
|
63
|
+
* const randomSibling = children[Math.floor(Math.random() * children.length)];
|
|
64
|
+
* const box = document.createElement('div');
|
|
65
|
+
*
|
|
66
|
+
* box.classList.add('box');
|
|
67
|
+
* box.textContent = String(++count);
|
|
68
|
+
*
|
|
69
|
+
* if (randomSibling) {
|
|
70
|
+
* randomSibling.before(box);
|
|
71
|
+
* } else {
|
|
72
|
+
* transitionGroup.append(box)
|
|
73
|
+
* }
|
|
74
|
+
* }
|
|
75
|
+
*
|
|
76
|
+
* function removeRandomBox() {
|
|
77
|
+
* if (transitionGroup.isTransitioning) return;
|
|
78
|
+
* const boxes = [...transitionGroup.children];
|
|
79
|
+
* if (boxes.length > 0) {
|
|
80
|
+
* const randomIndex = Math.floor(Math.random() * boxes.length);
|
|
81
|
+
* boxes[randomIndex].remove();
|
|
82
|
+
* }
|
|
83
|
+
* }
|
|
84
|
+
*
|
|
85
|
+
* function shuffleBoxes() {
|
|
86
|
+
* if (transitionGroup.isTransitioning) return;
|
|
87
|
+
* const boxes = [...transitionGroup.children];
|
|
88
|
+
* boxes.sort(() => Math.random() - 0.5);
|
|
89
|
+
* boxes.forEach(box => transitionGroup.append(box));
|
|
90
|
+
* }
|
|
91
|
+
*
|
|
92
|
+
* // Handle button clicks
|
|
93
|
+
* addButton.addEventListener('click', addRandomBox);
|
|
94
|
+
* removeButton.addEventListener('click', removeRandomBox);
|
|
95
|
+
* shuffleButton.addEventListener('click', shuffleBoxes);
|
|
96
|
+
* disableButton.addEventListener('click', () => {
|
|
97
|
+
* transitionGroup.disableTransitions = disableButton.toggle !== 'off';
|
|
98
|
+
* });
|
|
99
|
+
* </script>
|
|
100
|
+
*
|
|
101
|
+
* <style>
|
|
102
|
+
* #transition-group__boxes {
|
|
103
|
+
* sigvelo-transition-group {
|
|
104
|
+
* display: flex;
|
|
105
|
+
* gap: 1rem;
|
|
106
|
+
* flex-wrap: wrap;
|
|
107
|
+
* flex-direction: row;
|
|
108
|
+
* margin-block-end: 2rem;
|
|
109
|
+
* }
|
|
110
|
+
*
|
|
111
|
+
* .buttons {
|
|
112
|
+
* display: flex;
|
|
113
|
+
* gap: .5rem;
|
|
114
|
+
* flex-wrap: wrap;
|
|
115
|
+
* }
|
|
116
|
+
*
|
|
117
|
+
* .box {
|
|
118
|
+
* display: flex;
|
|
119
|
+
* align-items: center;
|
|
120
|
+
* justify-content: center;
|
|
121
|
+
* width: 100px;
|
|
122
|
+
* height: 100px;
|
|
123
|
+
* font-size: 1.5rem;
|
|
124
|
+
* font-weight: var(--sigvelo-font-weight-semibold);
|
|
125
|
+
* background: var(--sigvelo-color-primary-bg);
|
|
126
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
127
|
+
* color: var(--sigvelo-color-primary-text-on-bg);
|
|
128
|
+
*
|
|
129
|
+
* @media screen and (max-width: 959px) {
|
|
130
|
+
* font-size: 1.25rem;
|
|
131
|
+
* width: 80px;
|
|
132
|
+
* height: 80px;
|
|
133
|
+
* }
|
|
134
|
+
* }
|
|
135
|
+
* }
|
|
136
|
+
* </style>
|
|
137
|
+
* ```
|
|
138
|
+
*
|
|
139
|
+
* This example includes logic and styles for the demo, but the minimal markup you need for a transition group is shown below. Note that only _direct children_ of the transition group will be animated.
|
|
140
|
+
*
|
|
141
|
+
* ```html
|
|
142
|
+
* <sigvelo-transition-group>
|
|
143
|
+
* <div class="item">...</div>
|
|
144
|
+
* <div class="item">...</div>
|
|
145
|
+
* <div class="item">...</div>
|
|
146
|
+
* </sigvelo-transition-group>
|
|
147
|
+
* ```
|
|
148
|
+
*
|
|
149
|
+
* For best results, avoid applying transitions, animations, and inline styles to transition group items, as they may interfere with the component's animations. Also avoid modifying the DOM _during_ a transition to prevent interruptions.
|
|
150
|
+
*
|
|
151
|
+
* **Note:** Transition groups honor the user's [`prefers-reduced-motion`](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion) setting. If you're not seeing animations, this might be why. To override this behavior, which is generally not recommended, use the `ignore-reduced-motion` attribute.
|
|
152
|
+
*
|
|
153
|
+
* @example Working with elements
|
|
154
|
+
* Use standard DOM APIs to add, remove, and reorder elements and the transition group will automatically animate your changes. This example demonstrates how adding, removing, and reordering list items will be handled by the transition group.
|
|
155
|
+
*
|
|
156
|
+
* ```html
|
|
157
|
+
* <div id="transition-group__list">
|
|
158
|
+
* <!-- A template for list items -->
|
|
159
|
+
* <template>
|
|
160
|
+
* <div class="list-item">
|
|
161
|
+
* <span class="label"></span>
|
|
162
|
+
* <sigvelo-button-group label="Sort">
|
|
163
|
+
* <sigvelo-button size="sm" data-action="up" icon-label="Move up"><sigvelo-icon name="arrow-up"></sigvelo-icon></sigvelo-button>
|
|
164
|
+
* <sigvelo-button size="sm" data-action="down" icon-label="Move down"><sigvelo-icon name="arrow-down"></sigvelo-icon></sigvelo-button>
|
|
165
|
+
* </sigvelo-button-group>
|
|
166
|
+
* <sigvelo-button size="sm" color="text" data-action="delete" icon-label="Delete"><sigvelo-icon name="trash"></sigvelo-icon></sigvelo-button>
|
|
167
|
+
* </div>
|
|
168
|
+
* </template>
|
|
169
|
+
*
|
|
170
|
+
* <sigvelo-transition-group>
|
|
171
|
+
* <!-- Items are generated using the <template> above -->
|
|
172
|
+
* </sigvelo-transition-group>
|
|
173
|
+
*
|
|
174
|
+
* <form>
|
|
175
|
+
* <sigvelo-text-field placeholder="New item" variant="filled" pill></sigvelo-text-field>
|
|
176
|
+
* <sigvelo-button type="submit" color="primary" icon-label="Add to list" pill><sigvelo-icon name="plus"></sigvelo-icon></sigvelo-button>
|
|
177
|
+
* <sigvelo-divider orientation="vertical"></sigvelo-divider>
|
|
178
|
+
* <sigvelo-button pill data-action="shuffle">Shuffle</sigvelo-button>
|
|
179
|
+
* </form>
|
|
180
|
+
* </div>
|
|
181
|
+
*
|
|
182
|
+
* <script>
|
|
183
|
+
* const container = document.getElementById('transition-group__list');
|
|
184
|
+
* const transitionGroup = container.querySelector('sigvelo-transition-group');
|
|
185
|
+
* const template = container.querySelector('template');
|
|
186
|
+
* const addForm = container.querySelector('form');
|
|
187
|
+
* const shuffleButton = container.querySelector('[data-action="shuffle"]');
|
|
188
|
+
* let count = transitionGroup.children.length;
|
|
189
|
+
*
|
|
190
|
+
* function createListItem(label = '') {
|
|
191
|
+
* const listItem = template.content.cloneNode(true);
|
|
192
|
+
* listItem.querySelector('.label').textContent = label;
|
|
193
|
+
* return listItem;
|
|
194
|
+
* }
|
|
195
|
+
*
|
|
196
|
+
* // Create the initial list
|
|
197
|
+
* if (transitionGroup.children.length === 0) {
|
|
198
|
+
* ['Feed the cats', 'Change the litter box', 'Buy catnip', 'Playtime'].forEach(label => {
|
|
199
|
+
* const listItem = createListItem(label);
|
|
200
|
+
* transitionGroup.append(listItem);
|
|
201
|
+
* updateListItems();
|
|
202
|
+
* });
|
|
203
|
+
* }
|
|
204
|
+
*
|
|
205
|
+
* // Update the list now that the content has changed
|
|
206
|
+
* transitionGroup.addEventListener('sigvelo-content-changed', updateListItems);
|
|
207
|
+
*
|
|
208
|
+
* // Add an item
|
|
209
|
+
* addForm.addEventListener('submit', event => {
|
|
210
|
+
* const textField = addForm.querySelector('sigvelo-text-field');
|
|
211
|
+
* const label = textField.value;
|
|
212
|
+
* const listItem = createListItem(label || '(Untitled)');
|
|
213
|
+
* transitionGroup.append(listItem);
|
|
214
|
+
* textField.value = '';
|
|
215
|
+
*
|
|
216
|
+
* event.preventDefault();
|
|
217
|
+
* });
|
|
218
|
+
*
|
|
219
|
+
* // Shuffle items
|
|
220
|
+
* shuffleButton.addEventListener('click', () => {
|
|
221
|
+
* const items = [...transitionGroup.children];
|
|
222
|
+
* items.sort(() => Math.random() - 0.5);
|
|
223
|
+
* items.forEach(item => transitionGroup.append(item));
|
|
224
|
+
* });
|
|
225
|
+
*
|
|
226
|
+
* // Handle item actions
|
|
227
|
+
* container.addEventListener('click', event => {
|
|
228
|
+
* const button = event.target.closest('[data-action]');
|
|
229
|
+
* if (!button) return;
|
|
230
|
+
* const action = button.getAttribute('data-action');
|
|
231
|
+
* const listItem = button.closest('.list-item');
|
|
232
|
+
*
|
|
233
|
+
* // Delete an item
|
|
234
|
+
* if (action === 'delete') {
|
|
235
|
+
* listItem.remove();
|
|
236
|
+
* }
|
|
237
|
+
*
|
|
238
|
+
* // Move an item up
|
|
239
|
+
* if (action === 'up' && listItem.previousElementSibling) {
|
|
240
|
+
* listItem.previousElementSibling.before(listItem);
|
|
241
|
+
* }
|
|
242
|
+
*
|
|
243
|
+
* // Move an item down
|
|
244
|
+
* if (action === 'down' && listItem.nextElementSibling) {
|
|
245
|
+
* listItem.nextElementSibling.after(listItem);
|
|
246
|
+
* }
|
|
247
|
+
* });
|
|
248
|
+
*
|
|
249
|
+
* // Make sure the first/last items have the up/down buttons disabled
|
|
250
|
+
* function updateListItems() {
|
|
251
|
+
* const listItems = transitionGroup.querySelectorAll('.list-item');
|
|
252
|
+
*
|
|
253
|
+
* listItems.forEach((listItem, index) => {
|
|
254
|
+
* listItem.querySelector('[data-action="up"]').disabled = index === 0;
|
|
255
|
+
* listItem.querySelector('[data-action="down"]').disabled = index === listItems.length - 1;
|
|
256
|
+
* });
|
|
257
|
+
* }
|
|
258
|
+
* </script>
|
|
259
|
+
*
|
|
260
|
+
* <style>
|
|
261
|
+
* #transition-group__list {
|
|
262
|
+
* sigvelo-transition-group {
|
|
263
|
+
* display: flex;
|
|
264
|
+
* flex-direction: column;
|
|
265
|
+
* gap: .5rem;
|
|
266
|
+
* margin-block-end: 1rem;
|
|
267
|
+
* }
|
|
268
|
+
*
|
|
269
|
+
* form {
|
|
270
|
+
* display: flex;
|
|
271
|
+
* gap: .5rem;
|
|
272
|
+
* align-items: center;
|
|
273
|
+
*
|
|
274
|
+
* sigvelo-text-field {
|
|
275
|
+
* flex: 1 1 auto;
|
|
276
|
+
* }
|
|
277
|
+
*
|
|
278
|
+
* sigvelo-button {
|
|
279
|
+
* flex: 0 0 auto;
|
|
280
|
+
* }
|
|
281
|
+
*
|
|
282
|
+
* sigvelo-divider {
|
|
283
|
+
* height: 2rem;
|
|
284
|
+
* }
|
|
285
|
+
*
|
|
286
|
+
* sigvelo-text-field::part(label),
|
|
287
|
+
* sigvelo-text-field::part(description) {
|
|
288
|
+
* display: none;
|
|
289
|
+
* }
|
|
290
|
+
* }
|
|
291
|
+
*
|
|
292
|
+
* .list-item {
|
|
293
|
+
* display: flex;
|
|
294
|
+
* gap: .5rem;
|
|
295
|
+
* align-items: center;
|
|
296
|
+
* justify-content: start;
|
|
297
|
+
* width: 100%;
|
|
298
|
+
* background-color: var(--sigvelo-color-surface);
|
|
299
|
+
* border: var(--sigvelo-border-style) var(--sigvelo-border-width) var(--sigvelo-color-neutral-border-subtle);
|
|
300
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
301
|
+
* box-shadow: var(--sigvelo-elevation-hairline);
|
|
302
|
+
* color: var(--sigvelo-color-neutral-text-on-subtle);
|
|
303
|
+
* padding: .5rem 1rem;
|
|
304
|
+
*
|
|
305
|
+
* .label {
|
|
306
|
+
* flex: 1 1 auto;
|
|
307
|
+
* }
|
|
308
|
+
*
|
|
309
|
+
* sigvelo-button {
|
|
310
|
+
* flex: 0 0 auto;
|
|
311
|
+
* }
|
|
312
|
+
*
|
|
313
|
+
* sigvelo-button[data-action="delete"] sigvelo-icon {
|
|
314
|
+
* color: var(--sigvelo-color-danger-text);
|
|
315
|
+
* }
|
|
316
|
+
* }
|
|
317
|
+
* }
|
|
318
|
+
* </style>
|
|
319
|
+
* ```
|
|
320
|
+
*
|
|
321
|
+
* **Note:** As elements are added, removed, and reordered, their positions in the DOM change instantly. The elements are then animated from their old positions to their new positions, meaning CSS selectors such as `:first-child`, `:last-child`, `:nth-child()`, et al will apply as soon as the transition starts, which may not always be desirable. To avoid this, use IDs and classes in lieu of position-based selectors.
|
|
322
|
+
*
|
|
323
|
+
* @example Awaiting transitions
|
|
324
|
+
* Avoid making DOM changes while a transition is running. The `transitionComplete` property holds a promise that resolves when the current or next transition ends. You can await it to be sure all animations are complete before proceeding with further DOM changes.
|
|
325
|
+
*
|
|
326
|
+
* ```html
|
|
327
|
+
* <div id="transition-group__awaiting">
|
|
328
|
+
* <sigvelo-transition-group style="--duration: 1000ms;">
|
|
329
|
+
* <div class="box" style="background-color: deeppink;"></div>
|
|
330
|
+
* <div class="box" style="background-color: dodgerblue;"></div>
|
|
331
|
+
* </sigvelo-transition-group>
|
|
332
|
+
*
|
|
333
|
+
* <div class="controls">
|
|
334
|
+
* <sigvelo-button>Swap</sigvelo-button>
|
|
335
|
+
* </div>
|
|
336
|
+
* </div>
|
|
337
|
+
*
|
|
338
|
+
* <script>
|
|
339
|
+
* const container = document.getElementById('transition-group__awaiting');
|
|
340
|
+
* const transitionGroup = container.querySelector('sigvelo-transition-group');
|
|
341
|
+
* const swapButton = container.querySelector('sigvelo-button');
|
|
342
|
+
*
|
|
343
|
+
* swapButton.addEventListener('click', async () => {
|
|
344
|
+
* const box = transitionGroup.querySelector('.box');
|
|
345
|
+
*
|
|
346
|
+
* // Disable the button and swap the elements
|
|
347
|
+
* swapButton.disabled = true;
|
|
348
|
+
* transitionGroup.append(box);
|
|
349
|
+
*
|
|
350
|
+
* // Wait for the transition to complete and enable the button
|
|
351
|
+
* await transitionGroup.transitionComplete();
|
|
352
|
+
* swapButton.disabled = false;
|
|
353
|
+
* });
|
|
354
|
+
* </script>
|
|
355
|
+
*
|
|
356
|
+
* <style>
|
|
357
|
+
* #transition-group__awaiting {
|
|
358
|
+
* sigvelo-transition-group {
|
|
359
|
+
* flex-direction: row;
|
|
360
|
+
* gap: 1rem;
|
|
361
|
+
* }
|
|
362
|
+
*
|
|
363
|
+
* .box {
|
|
364
|
+
* width: 80px;
|
|
365
|
+
* height: 80px;
|
|
366
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
367
|
+
* }
|
|
368
|
+
*
|
|
369
|
+
* .controls {
|
|
370
|
+
* margin-block-start: 2rem;
|
|
371
|
+
* }
|
|
372
|
+
* }
|
|
373
|
+
* </style>
|
|
374
|
+
* ```
|
|
375
|
+
*
|
|
376
|
+
* @example Changing the layout
|
|
377
|
+
* Transition groups use a columnar flex layout, by default. To change the layout, apply `flex-direction: row` to the transition group. You can add spacing between items by setting the `gap` property.
|
|
378
|
+
*
|
|
379
|
+
* ```css
|
|
380
|
+
* sigvelo-transition-group {
|
|
381
|
+
* flex-direction: row;
|
|
382
|
+
* gap: 2rem;
|
|
383
|
+
* }
|
|
384
|
+
* ```
|
|
385
|
+
*
|
|
386
|
+
* For best results, avoid using complex layouts within transition groups.
|
|
387
|
+
*
|
|
388
|
+
* @example Changing the duration
|
|
389
|
+
* To change the animation speed, set the `--duration` custom property on the transition group. Each transition is made up of one or more steps (e.g. add, remove, reposition) and the duration applies to each individual step, not the total transition time.
|
|
390
|
+
*
|
|
391
|
+
* ```html
|
|
392
|
+
* <sigvelo-transition-group style="--duration: 1250ms;" id="transition-group__duration">
|
|
393
|
+
* <div class="box" style="background-color: deeppink;"></div>
|
|
394
|
+
* <div class="box" style="background-color: dodgerblue;"></div>
|
|
395
|
+
* <div class="box" style="background-color: rebeccapurple;"></div>
|
|
396
|
+
* <div class="box" style="background-color: tomato;"></div>
|
|
397
|
+
* </sigvelo-transition-group>
|
|
398
|
+
*
|
|
399
|
+
* <script>
|
|
400
|
+
* const transitionGroup = document.getElementById('transition-group__duration');
|
|
401
|
+
*
|
|
402
|
+
* function moveTheBox() {
|
|
403
|
+
* const lastChild = transitionGroup.lastElementChild;
|
|
404
|
+
* if (lastChild) {
|
|
405
|
+
* transitionGroup.prepend(lastChild);
|
|
406
|
+
* }
|
|
407
|
+
* }
|
|
408
|
+
*
|
|
409
|
+
* // Move the box again after the transition ends
|
|
410
|
+
* transitionGroup.addEventListener('sigvelo-transition-end', () => {
|
|
411
|
+
* setTimeout(moveTheBox, 1000);
|
|
412
|
+
* });
|
|
413
|
+
*
|
|
414
|
+
* // Ensure the element is registered
|
|
415
|
+
* Promise.all([
|
|
416
|
+
* customElements.whenDefined('sigvelo-transition-group'),
|
|
417
|
+
* transitionGroup.updateComplete
|
|
418
|
+
* ])
|
|
419
|
+
* .then(moveTheBox);
|
|
420
|
+
* </script>
|
|
421
|
+
*
|
|
422
|
+
* <style>
|
|
423
|
+
* #transition-group__duration {
|
|
424
|
+
* flex-direction: row;
|
|
425
|
+
* gap: 1rem;
|
|
426
|
+
*
|
|
427
|
+
* .box {
|
|
428
|
+
* width: 80px;
|
|
429
|
+
* height: 80px;
|
|
430
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
431
|
+
* }
|
|
432
|
+
* }
|
|
433
|
+
* </style>
|
|
434
|
+
* ```
|
|
435
|
+
*
|
|
436
|
+
* @example Changing the animation
|
|
437
|
+
* Transition groups use the Web Animations API to move elements around. To customize the enter and exit animations, pass a `TransitionAnimation` object to the transition group's `transitionAnimation` property. The object includes keyframes and easings for entering and exiting:
|
|
438
|
+
*
|
|
439
|
+
* ```ts
|
|
440
|
+
* import type { TransitionAnimation } from '@mcp-b/wc-support/utilities/animate';
|
|
441
|
+
*
|
|
442
|
+
* const elevator: TransitionAnimation = {
|
|
443
|
+
* enter: {
|
|
444
|
+
* keyframes: [
|
|
445
|
+
* { opacity: 0, translate: '0 100%' },
|
|
446
|
+
* { opacity: 1, translate: '0 0' }
|
|
447
|
+
* ],
|
|
448
|
+
* easing: 'cubic-bezier(0.33, 1, 0.68, 1)'
|
|
449
|
+
* },
|
|
450
|
+
* exit: {
|
|
451
|
+
* keyframes: [
|
|
452
|
+
* { opacity: 1, translate: '0 0' },
|
|
453
|
+
* { opacity: 0, translate: '0 -100%' }
|
|
454
|
+
* ],
|
|
455
|
+
* easing: 'cubic-bezier(0.33, 1, 0.68, 1)'
|
|
456
|
+
* }
|
|
457
|
+
* };
|
|
458
|
+
*
|
|
459
|
+
* const transitionGroup = document.querySelector('sigvelo-transition-group');
|
|
460
|
+
* transitionGroup.transitionAnimation = elevator;
|
|
461
|
+
* ```
|
|
462
|
+
*
|
|
463
|
+
* @example Disabling transitions
|
|
464
|
+
* Add the `disable-transitions` attribute to disable transition animations. Note that the DOM will still be modified when this option is enabled.
|
|
465
|
+
*
|
|
466
|
+
* ```html
|
|
467
|
+
* <div id="transition-group__disabling">
|
|
468
|
+
* <sigvelo-transition-group>
|
|
469
|
+
* <div class="circle" style="background-color: deeppink;"></div>
|
|
470
|
+
* <div class="circle" style="background-color: dodgerblue;"></div>
|
|
471
|
+
* <div class="circle" style="background-color: rebeccapurple;"></div>
|
|
472
|
+
* </sigvelo-transition-group>
|
|
473
|
+
*
|
|
474
|
+
* <sigvelo-switch label="Disable transitions"></sigvelo-switch>
|
|
475
|
+
* </div>
|
|
476
|
+
*
|
|
477
|
+
* <script>
|
|
478
|
+
* const container = document.getElementById('transition-group__disabling');
|
|
479
|
+
* const transitionGroup = container.querySelector('sigvelo-transition-group');
|
|
480
|
+
* const disableSwitch = container.querySelector('sigvelo-switch');
|
|
481
|
+
*
|
|
482
|
+
* // Toggle transitions
|
|
483
|
+
* disableSwitch.addEventListener('sigvelo-change', () => {
|
|
484
|
+
* transitionGroup.disableTransitions = !transitionGroup.disableTransitions;
|
|
485
|
+
* });
|
|
486
|
+
*
|
|
487
|
+
* // Rotate the circles every second
|
|
488
|
+
* setInterval(() => {
|
|
489
|
+
* const firstChild = transitionGroup.firstElementChild;
|
|
490
|
+
* if (firstChild) {
|
|
491
|
+
* transitionGroup.append(firstChild);
|
|
492
|
+
* }
|
|
493
|
+
* }, 1000);
|
|
494
|
+
* </script>
|
|
495
|
+
*
|
|
496
|
+
* <style>
|
|
497
|
+
* #transition-group__disabling {
|
|
498
|
+
* text-align: center;
|
|
499
|
+
*
|
|
500
|
+
* sigvelo-transition-group {
|
|
501
|
+
* --duration: 500ms;
|
|
502
|
+
* --easing: ease-in-out;
|
|
503
|
+
* display: grid;
|
|
504
|
+
* grid-template-columns: 1fr 1fr;
|
|
505
|
+
* grid-template-rows: 1fr 1fr;
|
|
506
|
+
* gap: 60px;
|
|
507
|
+
* height: 220px;
|
|
508
|
+
* margin-block-end: 2rem;
|
|
509
|
+
* }
|
|
510
|
+
*
|
|
511
|
+
* .circle {
|
|
512
|
+
* width: 80px;
|
|
513
|
+
* height: 80px;
|
|
514
|
+
* border-radius: var(--sigvelo-radius-circle);
|
|
515
|
+
*
|
|
516
|
+
* &:nth-child(1) {
|
|
517
|
+
* grid-column: 1 / -1;
|
|
518
|
+
* grid-row: 1;
|
|
519
|
+
* justify-self: center;
|
|
520
|
+
* }
|
|
521
|
+
*
|
|
522
|
+
* &:nth-child(2) {
|
|
523
|
+
* grid-column: 1;
|
|
524
|
+
* grid-row: 2;
|
|
525
|
+
* justify-self: end;
|
|
526
|
+
* }
|
|
527
|
+
*
|
|
528
|
+
* &:nth-child(3) {
|
|
529
|
+
* grid-column: 2;
|
|
530
|
+
* grid-row: 2;
|
|
531
|
+
* justify-self: start;
|
|
532
|
+
* }
|
|
533
|
+
* }
|
|
534
|
+
* }
|
|
535
|
+
* </style>
|
|
536
|
+
* ```
|
|
537
|
+
*/
|
|
538
|
+
declare class SigveloTransitionGroup extends SigveloElement {
|
|
539
|
+
static styles: CSSResultGroup;
|
|
540
|
+
private cachedContainerPosition;
|
|
541
|
+
private cachedElementPositions;
|
|
542
|
+
private cachedScrollPosition;
|
|
543
|
+
private currentTransition;
|
|
544
|
+
private isObserving;
|
|
545
|
+
private mutationObserver;
|
|
546
|
+
private resizeObserver;
|
|
547
|
+
/** Determines if the transition group is currently animating. (Property only) */
|
|
548
|
+
isTransitioning: boolean;
|
|
549
|
+
/**
|
|
550
|
+
* A custom enter/exit animation conforming to the `TransitionAnimation` interface.
|
|
551
|
+
* (Property only)
|
|
552
|
+
*/
|
|
553
|
+
transitionAnimation?: TransitionAnimation;
|
|
554
|
+
/**
|
|
555
|
+
* By default, the transition group observes and animates its own children. In some cases, you may want it to control
|
|
556
|
+
* another element's children. This is useful in cases where you can't directly wrap child elements with the
|
|
557
|
+
* `<sigvelo-transition-group>` element.
|
|
558
|
+
*
|
|
559
|
+
* For example, if you embed a transition group in a component's shadow root but need it to control slotted (light
|
|
560
|
+
* DOM) elements, you can't simply wrap the slot because the mutation observer can't see projected (slotted) elements.
|
|
561
|
+
* In this case, point this property to the target element and the transition group will hide itself and observe the
|
|
562
|
+
* target container's children instead. (Property only)
|
|
563
|
+
*/
|
|
564
|
+
transitionContainer: HTMLElement;
|
|
565
|
+
/**
|
|
566
|
+
* Disables transition animations. However, the `sigvelo-content-changed` and `sigvelo-transition-end` events will still
|
|
567
|
+
* be dispatched.
|
|
568
|
+
*/
|
|
569
|
+
disableTransitions: boolean;
|
|
570
|
+
/**
|
|
571
|
+
* By default, no animation will occur when the user indicates a preference for reduced motion. Use this attribute to
|
|
572
|
+
* override this behavior when necessary.
|
|
573
|
+
*/
|
|
574
|
+
ignoreReducedMotion: boolean;
|
|
575
|
+
connectedCallback(): void;
|
|
576
|
+
disconnectedCallback(): void;
|
|
577
|
+
firstUpdated(): void;
|
|
578
|
+
updated(changedProperties: PropertyValues<this>): void;
|
|
579
|
+
/**
|
|
580
|
+
* Gets a custom animation based on the users preference. If a custom animation isn't found, the default is returned.
|
|
581
|
+
*/
|
|
582
|
+
private getAnimation;
|
|
583
|
+
private handleMutations;
|
|
584
|
+
private handleResizes;
|
|
585
|
+
private handleVisibilityChange;
|
|
586
|
+
private startObservers;
|
|
587
|
+
private stopObservers;
|
|
588
|
+
/**
|
|
589
|
+
* Returns a promise that resolves when the current transition ends. If no transition is running, it resolves
|
|
590
|
+
* immediately This is a great way to ensure transitions have stopped before doing something else, such as adding or
|
|
591
|
+
* removing new elements to the transition group.
|
|
592
|
+
*/
|
|
593
|
+
transitionComplete(): Promise<void>;
|
|
594
|
+
/**
|
|
595
|
+
* Updates the cached coordinates of all child elements in the transition group. In most cases, you shouldn't have to
|
|
596
|
+
* call this method. However, if you're resizing or animating elements imperatively, you may need to call this
|
|
597
|
+
* immediately before appending or removing elements to ensure a smooth transition.
|
|
598
|
+
*/
|
|
599
|
+
updateElementPositions(): void;
|
|
600
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
601
|
+
}
|
|
602
|
+
declare global {
|
|
603
|
+
interface HTMLElementTagNameMap {
|
|
604
|
+
"sigvelo-transition-group": SigveloTransitionGroup;
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
//#endregion
|
|
608
|
+
export { SigveloTransitionGroup as t };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { registerDefaultTranslation } from "../utilities/localize.js";
|
|
2
|
+
//#region src/translations/en.ts
|
|
3
|
+
const translation = {
|
|
4
|
+
$code: "en",
|
|
5
|
+
$name: "English",
|
|
6
|
+
$dir: "ltr",
|
|
7
|
+
breadcrumbs: "Breadcrumbs",
|
|
8
|
+
carousel: "Carousel",
|
|
9
|
+
clearEntry: "Clear entry",
|
|
10
|
+
close: "Close",
|
|
11
|
+
collapse: "Collapse",
|
|
12
|
+
colorValue: "Color value",
|
|
13
|
+
copied: "Copied",
|
|
14
|
+
copyToClipboard: "Copy to clipboard",
|
|
15
|
+
decrease: "Decrease",
|
|
16
|
+
disabled: "disabled",
|
|
17
|
+
dragFileHereOrChooseFromFolder: "Drag file here or choose from folder",
|
|
18
|
+
dragFilesHereOrChooseFromFolder: "Drag files here or choose from folder",
|
|
19
|
+
error: "Error",
|
|
20
|
+
expand: "Expand",
|
|
21
|
+
feed: "Feed",
|
|
22
|
+
firstPage: "First page",
|
|
23
|
+
hidePassword: "Hide password",
|
|
24
|
+
hide: "Hide",
|
|
25
|
+
hue: "Hue",
|
|
26
|
+
increase: "Increase",
|
|
27
|
+
itemAdded: (item) => `${item} added`,
|
|
28
|
+
itemRemoved: (item) => `${item} removed`,
|
|
29
|
+
itemSelected: (item) => `${item} selected`,
|
|
30
|
+
jumpBackward: "Jump backward",
|
|
31
|
+
jumpForward: "Jump forward",
|
|
32
|
+
lastPage: "Last page",
|
|
33
|
+
loading: "Loading",
|
|
34
|
+
multipleSelectionsAllowed: "Multiple selections allowed.",
|
|
35
|
+
next: "Next",
|
|
36
|
+
noResultsFound: "No results found",
|
|
37
|
+
numberOfTotal: (number, total) => `${number} of ${total}`,
|
|
38
|
+
opacity: "Opacity",
|
|
39
|
+
pageNumber: (number) => `Page ${number}`,
|
|
40
|
+
pagination: "Pagination",
|
|
41
|
+
percentLuminosity: (percentage) => `${percentage} luminosity`,
|
|
42
|
+
percentSaturation: (percentage) => `${percentage} saturation`,
|
|
43
|
+
pleaseSelectAnOption: "Please select an option",
|
|
44
|
+
pressSpaceForOneSecondToActivate: "Press space bar for one second to activate",
|
|
45
|
+
previous: "Previous",
|
|
46
|
+
remove: "Remove",
|
|
47
|
+
removeItem: (item) => `Remove ${item}`,
|
|
48
|
+
resize: "Resize",
|
|
49
|
+
resultsAvailable: (count) => {
|
|
50
|
+
if (count === 1) return "1 result available";
|
|
51
|
+
return `${count} results available`;
|
|
52
|
+
},
|
|
53
|
+
scrollableRegion: "Scrollable region",
|
|
54
|
+
selectAColorFromTheScreen: "Select a color from the screen",
|
|
55
|
+
selected: "Selected",
|
|
56
|
+
share: "Share",
|
|
57
|
+
showPassword: "Show password",
|
|
58
|
+
show: "Show",
|
|
59
|
+
showingNumberOfTotalItems: (number, total) => {
|
|
60
|
+
if (number === 1) return `Showing ${number} of ${total} ${total === 1 ? "item" : "items"}`;
|
|
61
|
+
return `Showing ${number} of ${total} items`;
|
|
62
|
+
},
|
|
63
|
+
showingAllNumberItems: (number) => {
|
|
64
|
+
if (number === 1) return `Showing ${number} item`;
|
|
65
|
+
return `Showing all ${number} items`;
|
|
66
|
+
},
|
|
67
|
+
toggleNavigation: "Toggle navigation",
|
|
68
|
+
useArrowKeysToNavigateEnterToSelect: "Use arrow keys to navigate options. Press Enter to select.",
|
|
69
|
+
visualComparisonSlider: "Visual comparison slider",
|
|
70
|
+
zoomIn: "Zoom in",
|
|
71
|
+
zoomOut: "Zoom out"
|
|
72
|
+
};
|
|
73
|
+
registerDefaultTranslation(translation);
|
|
74
|
+
//#endregion
|
|
75
|
+
export { translation as default };
|