@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,434 @@
|
|
|
1
|
+
import { t as __decorate } from "./decorate-DcF3lt7P.js";
|
|
2
|
+
import { css, html } from "lit";
|
|
3
|
+
import { property, query, state } from "lit/decorators.js";
|
|
4
|
+
import hostStyles from "@mcp-b/wc-support/styles/host.styles";
|
|
5
|
+
import { SigveloFormControlElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
6
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
7
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
8
|
+
import { SigveloBlurEvent, SigveloChangeEvent, SigveloFocusEvent, SigveloInputEvent } from "@mcp-b/wc-support/events/form";
|
|
9
|
+
import { live } from "lit/directives/live.js";
|
|
10
|
+
//#region src/components/toggle-tag/toggle-tag.styles.ts
|
|
11
|
+
var toggle_tag_styles_default = css`
|
|
12
|
+
:host {
|
|
13
|
+
display: inline-flex;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
/* The toggle tag's label */
|
|
17
|
+
#label {
|
|
18
|
+
display: flex;
|
|
19
|
+
align-items: center;
|
|
20
|
+
padding: 0.4em 0.6em;
|
|
21
|
+
gap: 0.25em;
|
|
22
|
+
border: none;
|
|
23
|
+
border-radius: var(--sigvelo-radius-md);
|
|
24
|
+
background-color: var(--sigvelo-color-neutral-bg-subtle);
|
|
25
|
+
color: var(--sigvelo-color-neutral-text-on-subtle);
|
|
26
|
+
font-weight: var(--sigvelo-font-weight-semibold);
|
|
27
|
+
cursor: pointer;
|
|
28
|
+
transition:
|
|
29
|
+
var(--sigvelo-motion-duration-interaction) background-color ease,
|
|
30
|
+
var(--sigvelo-motion-duration-interaction) color ease,
|
|
31
|
+
var(--sigvelo-motion-duration-interaction) translate ease;
|
|
32
|
+
user-select: none;
|
|
33
|
+
|
|
34
|
+
&.xs {
|
|
35
|
+
font-size: calc(var(--sigvelo-control-text-xs) * 0.875);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
&.sm {
|
|
39
|
+
font-size: calc(var(--sigvelo-control-text-sm) * 0.875);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
&.md {
|
|
43
|
+
font-size: calc(var(--sigvelo-control-text-md) * 0.875);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
&.lg {
|
|
47
|
+
font-size: calc(var(--sigvelo-control-text-lg) * 0.875);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
&.xl {
|
|
51
|
+
font-size: calc(var(--sigvelo-control-text-xl) * 0.875);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
&:has(:focus-visible) {
|
|
55
|
+
outline: var(--sigvelo-focus-ring);
|
|
56
|
+
outline-offset: var(--sigvelo-focus-offset);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
&:not(.disabled):active {
|
|
60
|
+
translate: 0 var(--sigvelo-motion-distance-xs);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
&.checked {
|
|
64
|
+
background-color: var(--sigvelo-color-primary-bg);
|
|
65
|
+
color: var(--sigvelo-color-primary-text-on-bg);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
&.disabled {
|
|
69
|
+
cursor: not-allowed;
|
|
70
|
+
opacity: 0.5;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
::slotted(sigvelo-icon) {
|
|
75
|
+
font-size: 1.25em;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* The actual checkbox control - visually hidden */
|
|
79
|
+
#checkbox {
|
|
80
|
+
appearance: none;
|
|
81
|
+
position: absolute;
|
|
82
|
+
width: 1px;
|
|
83
|
+
height: 1px;
|
|
84
|
+
margin: 0;
|
|
85
|
+
padding: 0;
|
|
86
|
+
overflow: hidden;
|
|
87
|
+
border: none;
|
|
88
|
+
background: none;
|
|
89
|
+
white-space: nowrap;
|
|
90
|
+
clip-path: inset(50%);
|
|
91
|
+
cursor: inherit;
|
|
92
|
+
|
|
93
|
+
&:focus {
|
|
94
|
+
outline: none;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
`;
|
|
98
|
+
//#endregion
|
|
99
|
+
//#region src/components/toggle-tag/toggle-tag.ts
|
|
100
|
+
/**
|
|
101
|
+
* <sigvelo-toggle-tag>
|
|
102
|
+
*
|
|
103
|
+
* @summary Similar to checkboxes, except with tags to represent the checked and unchecked states.
|
|
104
|
+
* @tag sigvelo-toggle-tag
|
|
105
|
+
* @documentation https://design-system.sigvelo.com/docs/components/toggle-tag
|
|
106
|
+
* @status stable
|
|
107
|
+
* @since 1.0
|
|
108
|
+
*
|
|
109
|
+
* @slot - The toggle tag's label. For plain-text labels, you can use the `label` attribute instead.
|
|
110
|
+
*
|
|
111
|
+
* @event sigvelo-blur - Emitted when the toggle tag loses focus. This event does not bubble.
|
|
112
|
+
* @event sigvelo-change - Emitted when the user commits changes to the toggle tag's value.
|
|
113
|
+
* @event sigvelo-focus - Emitted when the toggle tag receives focus. This event does not bubble.
|
|
114
|
+
* @event sigvelo-input - Emitted when the toggle tag receives input.
|
|
115
|
+
*
|
|
116
|
+
* @csspart label - The `<label>` that wraps the entire control.
|
|
117
|
+
*
|
|
118
|
+
* @cssstate checked - Applied when the toggle tag is checked.
|
|
119
|
+
* @cssstate disabled - Applied when the toggle tag is disabled.
|
|
120
|
+
* @cssstate focused - Applied when the toggle tag has focus.
|
|
121
|
+
* @cssstate user-valid - Applied when the toggle tag is valid and the user has sufficiently interacted with it.
|
|
122
|
+
* @cssstate user-invalid - Applied when the toggle tag is invalid and the user has sufficiently interacted with it.
|
|
123
|
+
*
|
|
124
|
+
* @example Default
|
|
125
|
+
* Toggle tags can be used just like checkboxes and switches to turn features on and off. You can listen for state changes with the `sigvelo-input` event and submit them with forms by adding `name` and `value` attributes.
|
|
126
|
+
*
|
|
127
|
+
* Toggle tags should generally be used in groups. In fact, they work best when place inside of checkbox groups. Assistive devices will recognize tag checkboxes as standard checkboxes.
|
|
128
|
+
*
|
|
129
|
+
* ```html
|
|
130
|
+
* <sigvelo-checkbox-group label="Amenities" style="--gap: .5em; max-width: 460px;">
|
|
131
|
+
* <sigvelo-toggle-tag name="amenities" value="coffee">
|
|
132
|
+
* <sigvelo-icon name="coffee"></sigvelo-icon>
|
|
133
|
+
* Coffee
|
|
134
|
+
* </sigvelo-toggle-tag>
|
|
135
|
+
* <sigvelo-toggle-tag name="amenities" value="laundry">
|
|
136
|
+
* <sigvelo-icon name="wash-machine"></sigvelo-icon>
|
|
137
|
+
* Laundry
|
|
138
|
+
* </sigvelo-toggle-tag>
|
|
139
|
+
* <sigvelo-toggle-tag name="amenities" value="microwave">
|
|
140
|
+
* <sigvelo-icon name="microwave"></sigvelo-icon>
|
|
141
|
+
* Microwave
|
|
142
|
+
* </sigvelo-toggle-tag>
|
|
143
|
+
* <sigvelo-toggle-tag name="amenities" value="parking">
|
|
144
|
+
* <sigvelo-icon name="parking"></sigvelo-icon>
|
|
145
|
+
* Parking
|
|
146
|
+
* </sigvelo-toggle-tag>
|
|
147
|
+
* <sigvelo-toggle-tag name="amenities" value="pet-friendly">
|
|
148
|
+
* <sigvelo-icon name="cat"></sigvelo-icon>
|
|
149
|
+
* Pet friendly
|
|
150
|
+
* </sigvelo-toggle-tag>
|
|
151
|
+
* <sigvelo-toggle-tag name="amenities" value="pool">
|
|
152
|
+
* <sigvelo-icon name="pool"></sigvelo-icon>
|
|
153
|
+
* Pool
|
|
154
|
+
* </sigvelo-toggle-tag>
|
|
155
|
+
* <sigvelo-toggle-tag name="amenities" value="tv">
|
|
156
|
+
* <sigvelo-icon name="device-tv"></sigvelo-icon>
|
|
157
|
+
* TV
|
|
158
|
+
* </sigvelo-toggle-tag>
|
|
159
|
+
* <sigvelo-toggle-tag name="amenities" value="wifi">
|
|
160
|
+
* <sigvelo-icon name="wifi"></sigvelo-icon>
|
|
161
|
+
* Wifi
|
|
162
|
+
* </sigvelo-toggle-tag>
|
|
163
|
+
* </sigvelo-checkbox-group>
|
|
164
|
+
* ```
|
|
165
|
+
*
|
|
166
|
+
* @example Checked initially
|
|
167
|
+
* Add the `checked` attribute to check the toggle tag initially.
|
|
168
|
+
*
|
|
169
|
+
* ```html
|
|
170
|
+
* <sigvelo-checkbox-group label="Default notifications" style="--gap: .5em;">
|
|
171
|
+
* <sigvelo-toggle-tag name="notifications" value="email" checked>
|
|
172
|
+
* <sigvelo-icon name="mail"></sigvelo-icon>
|
|
173
|
+
* Email updates
|
|
174
|
+
* </sigvelo-toggle-tag>
|
|
175
|
+
* <sigvelo-toggle-tag name="notifications" value="push" checked>
|
|
176
|
+
* <sigvelo-icon name="bell"></sigvelo-icon>
|
|
177
|
+
* Push notifications
|
|
178
|
+
* </sigvelo-toggle-tag>
|
|
179
|
+
* <sigvelo-toggle-tag name="notifications" value="sms">
|
|
180
|
+
* <sigvelo-icon name="message-circle"></sigvelo-icon>
|
|
181
|
+
* SMS alerts
|
|
182
|
+
* </sigvelo-toggle-tag>
|
|
183
|
+
* <sigvelo-toggle-tag name="notifications" value="phone">
|
|
184
|
+
* <sigvelo-icon name="phone"></sigvelo-icon>
|
|
185
|
+
* Phone calls
|
|
186
|
+
* </sigvelo-toggle-tag>
|
|
187
|
+
* </sigvelo-checkbox-group>
|
|
188
|
+
* ```
|
|
189
|
+
*
|
|
190
|
+
* @example Changing the size
|
|
191
|
+
* Use the `size` attribute to make toggle tags larger or smaller. The available sizes are `xs`, `sm`, `md` (default), `lg`, and `xl`.
|
|
192
|
+
*
|
|
193
|
+
* ```html
|
|
194
|
+
* <div style="display: flex; flex-direction: column; gap: 1rem; align-items: flex-start;">
|
|
195
|
+
* <div>
|
|
196
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Extra small</label>
|
|
197
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
198
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
199
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="s">S</sigvelo-toggle-tag>
|
|
200
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="m">M</sigvelo-toggle-tag>
|
|
201
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="l">L</sigvelo-toggle-tag>
|
|
202
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
203
|
+
* </sigvelo-checkbox-group>
|
|
204
|
+
* </div>
|
|
205
|
+
*
|
|
206
|
+
* <div>
|
|
207
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Small</label>
|
|
208
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
209
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
210
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="s">S</sigvelo-toggle-tag>
|
|
211
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="m">M</sigvelo-toggle-tag>
|
|
212
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="l">L</sigvelo-toggle-tag>
|
|
213
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
214
|
+
* </sigvelo-checkbox-group>
|
|
215
|
+
* </div>
|
|
216
|
+
*
|
|
217
|
+
* <div>
|
|
218
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Medium (default)</label>
|
|
219
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
220
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
221
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="s">S</sigvelo-toggle-tag>
|
|
222
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="m">M</sigvelo-toggle-tag>
|
|
223
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="l">L</sigvelo-toggle-tag>
|
|
224
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
225
|
+
* </sigvelo-checkbox-group>
|
|
226
|
+
* </div>
|
|
227
|
+
*
|
|
228
|
+
* <div>
|
|
229
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Large</label>
|
|
230
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
231
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
232
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="s">S</sigvelo-toggle-tag>
|
|
233
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="m">M</sigvelo-toggle-tag>
|
|
234
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="l">L</sigvelo-toggle-tag>
|
|
235
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
236
|
+
* </sigvelo-checkbox-group>
|
|
237
|
+
* </div>
|
|
238
|
+
*
|
|
239
|
+
* <div>
|
|
240
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Extra large</label>
|
|
241
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
242
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
243
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="s">S</sigvelo-toggle-tag>
|
|
244
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="m">M</sigvelo-toggle-tag>
|
|
245
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="l">L</sigvelo-toggle-tag>
|
|
246
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
247
|
+
* </sigvelo-checkbox-group>
|
|
248
|
+
* </div>
|
|
249
|
+
* </div>
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* @example Disabling toggle tags
|
|
253
|
+
* Use the `disabled` attribute to prevent interaction with toggle tags. Disabled tags will appear faded and won't respond to clicks or keyboard input.
|
|
254
|
+
*
|
|
255
|
+
* ```html
|
|
256
|
+
* <sigvelo-checkbox-group label="Options" style="--gap: .5em;">
|
|
257
|
+
* <sigvelo-toggle-tag name="options" value="option1">Option 1</sigvelo-toggle-tag>
|
|
258
|
+
* <sigvelo-toggle-tag name="options" value="option2" disabled>Option 2</sigvelo-toggle-tag>
|
|
259
|
+
* <sigvelo-toggle-tag name="options" value="option3">Option 3</sigvelo-toggle-tag>
|
|
260
|
+
* </sigvelo-checkbox-group>
|
|
261
|
+
* ```
|
|
262
|
+
*
|
|
263
|
+
* @example Handling form submission
|
|
264
|
+
* Toggle tags are form-associated custom elements that behave like native checkboxes when submitting forms. When a toggle tag is checked, its `name` and `value` attributes are included in the form data, just like a standard checkbox.
|
|
265
|
+
*
|
|
266
|
+
* ```html
|
|
267
|
+
* <form id="toggle-tag__form" action="about:blank" target="_blank">
|
|
268
|
+
* <sigvelo-checkbox-group label="Languages" style="--gap: .5em; margin-bottom: 1.5rem;">
|
|
269
|
+
* <sigvelo-toggle-tag name="languages" value="cpp">C++</sigvelo-toggle-tag>
|
|
270
|
+
* <sigvelo-toggle-tag name="languages" value="go">Go</sigvelo-toggle-tag>
|
|
271
|
+
* <sigvelo-toggle-tag name="languages" value="javascript" checked>JavaScript</sigvelo-toggle-tag>
|
|
272
|
+
* <sigvelo-toggle-tag name="languages" value="php">PHP</sigvelo-toggle-tag>
|
|
273
|
+
* <sigvelo-toggle-tag name="languages" value="python">Python</sigvelo-toggle-tag>
|
|
274
|
+
* <sigvelo-toggle-tag name="languages" value="qb">QBasic</sigvelo-toggle-tag>
|
|
275
|
+
* <sigvelo-toggle-tag name="languages" value="rust">Rust</sigvelo-toggle-tag>
|
|
276
|
+
* </sigvelo-checkbox-group>
|
|
277
|
+
*
|
|
278
|
+
* <sigvelo-button type="submit">Submit</sigvelo-button>
|
|
279
|
+
* </form>
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
var SigveloToggleTag = class extends SigveloFormControlElement {
|
|
283
|
+
constructor(..._args) {
|
|
284
|
+
super(..._args);
|
|
285
|
+
this.isInvalid = false;
|
|
286
|
+
this.hadUserInteraction = false;
|
|
287
|
+
this.wasSubmitted = false;
|
|
288
|
+
this.value = "";
|
|
289
|
+
this.checked = false;
|
|
290
|
+
this.disabled = false;
|
|
291
|
+
this.size = "md";
|
|
292
|
+
this.required = false;
|
|
293
|
+
}
|
|
294
|
+
static {
|
|
295
|
+
this.formAssociated = true;
|
|
296
|
+
}
|
|
297
|
+
static {
|
|
298
|
+
this.styles = [hostStyles, toggle_tag_styles_default];
|
|
299
|
+
}
|
|
300
|
+
get focusableAnchor() {
|
|
301
|
+
return this.checkbox;
|
|
302
|
+
}
|
|
303
|
+
connectedCallback() {
|
|
304
|
+
super.connectedCallback();
|
|
305
|
+
this.addEventListener("invalid", this.handleHostInvalid);
|
|
306
|
+
}
|
|
307
|
+
disconnectedCallback() {
|
|
308
|
+
super.disconnectedCallback();
|
|
309
|
+
this.removeEventListener("invalid", this.handleHostInvalid);
|
|
310
|
+
}
|
|
311
|
+
updated(changedProperties) {
|
|
312
|
+
this.updateValidity();
|
|
313
|
+
if (changedProperties.has("checked") || changedProperties.has("value")) this.internals.setFormValue(this.checked ? this.value : null);
|
|
314
|
+
if (changedProperties.has("checked")) this.customStates.set("checked", this.checked);
|
|
315
|
+
if (changedProperties.has("disabled")) this.customStates.set("disabled", this.disabled);
|
|
316
|
+
if (this.hadUserInteraction || this.wasSubmitted) {
|
|
317
|
+
this.customStates.set("user-invalid", this.isInvalid);
|
|
318
|
+
this.customStates.set("user-valid", !this.isInvalid);
|
|
319
|
+
} else {
|
|
320
|
+
this.customStates.set("user-invalid", false);
|
|
321
|
+
this.customStates.set("user-valid", false);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
/** @internal Called when a containing fieldset is disabled. */
|
|
325
|
+
formDisabledCallback(isDisabled) {
|
|
326
|
+
this.disabled = isDisabled;
|
|
327
|
+
}
|
|
328
|
+
/** @internal Called when the form is reset. */
|
|
329
|
+
formResetCallback() {
|
|
330
|
+
this.isInvalid = false;
|
|
331
|
+
this.hadUserInteraction = false;
|
|
332
|
+
this.wasSubmitted = false;
|
|
333
|
+
this.checked = this.hasAttribute("checked");
|
|
334
|
+
}
|
|
335
|
+
handleClick() {
|
|
336
|
+
this.checked = !this.checked;
|
|
337
|
+
}
|
|
338
|
+
handleBlur() {
|
|
339
|
+
this.customStates.set("focused", false);
|
|
340
|
+
this.dispatchEvent(new SigveloBlurEvent());
|
|
341
|
+
}
|
|
342
|
+
handleChange() {
|
|
343
|
+
this.hadUserInteraction = true;
|
|
344
|
+
this.dispatchEvent(new SigveloChangeEvent());
|
|
345
|
+
this.dispatchEvent(new Event("change", {
|
|
346
|
+
bubbles: true,
|
|
347
|
+
composed: true
|
|
348
|
+
}));
|
|
349
|
+
}
|
|
350
|
+
handleInput() {
|
|
351
|
+
this.dispatchEvent(new SigveloInputEvent());
|
|
352
|
+
}
|
|
353
|
+
handleFocus() {
|
|
354
|
+
this.customStates.set("focused", true);
|
|
355
|
+
this.dispatchEvent(new SigveloFocusEvent());
|
|
356
|
+
}
|
|
357
|
+
handleHostInvalid() {
|
|
358
|
+
this.wasSubmitted = true;
|
|
359
|
+
}
|
|
360
|
+
/** Sets the form control's validity */
|
|
361
|
+
async updateValidity() {
|
|
362
|
+
await this.updateComplete;
|
|
363
|
+
const hasCustomValidity = this.getCustomValidity().length > 0;
|
|
364
|
+
const validationMessage = hasCustomValidity ? this.getCustomValidity() : this.checkbox.validationMessage;
|
|
365
|
+
const flags = {
|
|
366
|
+
customError: hasCustomValidity,
|
|
367
|
+
valueMissing: this.checkbox.validity.valueMissing
|
|
368
|
+
};
|
|
369
|
+
this.isInvalid = hasCustomValidity ? true : !this.checkbox.validity.valid;
|
|
370
|
+
this.internals.setValidity(flags, validationMessage, this.focusableAnchor);
|
|
371
|
+
}
|
|
372
|
+
/** Sets focus to the toggle tag. */
|
|
373
|
+
focus() {
|
|
374
|
+
this.checkbox.focus();
|
|
375
|
+
}
|
|
376
|
+
/** Removes focus from the toggle tag. */
|
|
377
|
+
blur() {
|
|
378
|
+
this.checkbox.blur();
|
|
379
|
+
}
|
|
380
|
+
render() {
|
|
381
|
+
return html`
|
|
382
|
+
<label
|
|
383
|
+
id="label"
|
|
384
|
+
part="label"
|
|
385
|
+
class=${classMap({
|
|
386
|
+
xs: this.size === "xs",
|
|
387
|
+
sm: this.size === "sm",
|
|
388
|
+
md: this.size === "md",
|
|
389
|
+
lg: this.size === "lg",
|
|
390
|
+
xl: this.size === "xl",
|
|
391
|
+
checked: this.checked,
|
|
392
|
+
disabled: this.disabled,
|
|
393
|
+
required: this.required
|
|
394
|
+
})}
|
|
395
|
+
>
|
|
396
|
+
<input
|
|
397
|
+
id="checkbox"
|
|
398
|
+
type="checkbox"
|
|
399
|
+
value=${ifDefined(this.value)}
|
|
400
|
+
.checked=${live(this.checked)}
|
|
401
|
+
.disabled=${this.disabled}
|
|
402
|
+
.required=${this.required}
|
|
403
|
+
@change=${this.handleChange}
|
|
404
|
+
@click=${this.handleClick}
|
|
405
|
+
@input=${this.handleInput}
|
|
406
|
+
@focus=${this.handleFocus}
|
|
407
|
+
@blur=${this.handleBlur}
|
|
408
|
+
/>
|
|
409
|
+
<slot>${this.label}</slot>
|
|
410
|
+
</label>
|
|
411
|
+
`;
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
__decorate([query("input[type=\"checkbox\"]")], SigveloToggleTag.prototype, "checkbox", void 0);
|
|
415
|
+
__decorate([state()], SigveloToggleTag.prototype, "isInvalid", void 0);
|
|
416
|
+
__decorate([state()], SigveloToggleTag.prototype, "hadUserInteraction", void 0);
|
|
417
|
+
__decorate([state()], SigveloToggleTag.prototype, "wasSubmitted", void 0);
|
|
418
|
+
__decorate([property()], SigveloToggleTag.prototype, "label", void 0);
|
|
419
|
+
__decorate([property({ reflect: true })], SigveloToggleTag.prototype, "name", void 0);
|
|
420
|
+
__decorate([property()], SigveloToggleTag.prototype, "value", void 0);
|
|
421
|
+
__decorate([property({ type: Boolean })], SigveloToggleTag.prototype, "checked", void 0);
|
|
422
|
+
__decorate([property({
|
|
423
|
+
type: Boolean,
|
|
424
|
+
reflect: true
|
|
425
|
+
})], SigveloToggleTag.prototype, "disabled", void 0);
|
|
426
|
+
__decorate([property({ reflect: true })], SigveloToggleTag.prototype, "size", void 0);
|
|
427
|
+
__decorate([property()], SigveloToggleTag.prototype, "form", void 0);
|
|
428
|
+
__decorate([property({
|
|
429
|
+
type: Boolean,
|
|
430
|
+
reflect: true
|
|
431
|
+
})], SigveloToggleTag.prototype, "required", void 0);
|
|
432
|
+
customElements.define("sigvelo-toggle-tag", SigveloToggleTag);
|
|
433
|
+
//#endregion
|
|
434
|
+
export { SigveloToggleTag as t };
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import { CSSResultGroup, PropertyValues } from "lit";
|
|
2
|
+
import { SigveloFormControlElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
3
|
+
|
|
4
|
+
//#region src/components/toggle-tag/toggle-tag.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* <sigvelo-toggle-tag>
|
|
7
|
+
*
|
|
8
|
+
* @summary Similar to checkboxes, except with tags to represent the checked and unchecked states.
|
|
9
|
+
* @tag sigvelo-toggle-tag
|
|
10
|
+
* @documentation https://design-system.sigvelo.com/docs/components/toggle-tag
|
|
11
|
+
* @status stable
|
|
12
|
+
* @since 1.0
|
|
13
|
+
*
|
|
14
|
+
* @slot - The toggle tag's label. For plain-text labels, you can use the `label` attribute instead.
|
|
15
|
+
*
|
|
16
|
+
* @event sigvelo-blur - Emitted when the toggle tag loses focus. This event does not bubble.
|
|
17
|
+
* @event sigvelo-change - Emitted when the user commits changes to the toggle tag's value.
|
|
18
|
+
* @event sigvelo-focus - Emitted when the toggle tag receives focus. This event does not bubble.
|
|
19
|
+
* @event sigvelo-input - Emitted when the toggle tag receives input.
|
|
20
|
+
*
|
|
21
|
+
* @csspart label - The `<label>` that wraps the entire control.
|
|
22
|
+
*
|
|
23
|
+
* @cssstate checked - Applied when the toggle tag is checked.
|
|
24
|
+
* @cssstate disabled - Applied when the toggle tag is disabled.
|
|
25
|
+
* @cssstate focused - Applied when the toggle tag has focus.
|
|
26
|
+
* @cssstate user-valid - Applied when the toggle tag is valid and the user has sufficiently interacted with it.
|
|
27
|
+
* @cssstate user-invalid - Applied when the toggle tag is invalid and the user has sufficiently interacted with it.
|
|
28
|
+
*
|
|
29
|
+
* @example Default
|
|
30
|
+
* Toggle tags can be used just like checkboxes and switches to turn features on and off. You can listen for state changes with the `sigvelo-input` event and submit them with forms by adding `name` and `value` attributes.
|
|
31
|
+
*
|
|
32
|
+
* Toggle tags should generally be used in groups. In fact, they work best when place inside of checkbox groups. Assistive devices will recognize tag checkboxes as standard checkboxes.
|
|
33
|
+
*
|
|
34
|
+
* ```html
|
|
35
|
+
* <sigvelo-checkbox-group label="Amenities" style="--gap: .5em; max-width: 460px;">
|
|
36
|
+
* <sigvelo-toggle-tag name="amenities" value="coffee">
|
|
37
|
+
* <sigvelo-icon name="coffee"></sigvelo-icon>
|
|
38
|
+
* Coffee
|
|
39
|
+
* </sigvelo-toggle-tag>
|
|
40
|
+
* <sigvelo-toggle-tag name="amenities" value="laundry">
|
|
41
|
+
* <sigvelo-icon name="wash-machine"></sigvelo-icon>
|
|
42
|
+
* Laundry
|
|
43
|
+
* </sigvelo-toggle-tag>
|
|
44
|
+
* <sigvelo-toggle-tag name="amenities" value="microwave">
|
|
45
|
+
* <sigvelo-icon name="microwave"></sigvelo-icon>
|
|
46
|
+
* Microwave
|
|
47
|
+
* </sigvelo-toggle-tag>
|
|
48
|
+
* <sigvelo-toggle-tag name="amenities" value="parking">
|
|
49
|
+
* <sigvelo-icon name="parking"></sigvelo-icon>
|
|
50
|
+
* Parking
|
|
51
|
+
* </sigvelo-toggle-tag>
|
|
52
|
+
* <sigvelo-toggle-tag name="amenities" value="pet-friendly">
|
|
53
|
+
* <sigvelo-icon name="cat"></sigvelo-icon>
|
|
54
|
+
* Pet friendly
|
|
55
|
+
* </sigvelo-toggle-tag>
|
|
56
|
+
* <sigvelo-toggle-tag name="amenities" value="pool">
|
|
57
|
+
* <sigvelo-icon name="pool"></sigvelo-icon>
|
|
58
|
+
* Pool
|
|
59
|
+
* </sigvelo-toggle-tag>
|
|
60
|
+
* <sigvelo-toggle-tag name="amenities" value="tv">
|
|
61
|
+
* <sigvelo-icon name="device-tv"></sigvelo-icon>
|
|
62
|
+
* TV
|
|
63
|
+
* </sigvelo-toggle-tag>
|
|
64
|
+
* <sigvelo-toggle-tag name="amenities" value="wifi">
|
|
65
|
+
* <sigvelo-icon name="wifi"></sigvelo-icon>
|
|
66
|
+
* Wifi
|
|
67
|
+
* </sigvelo-toggle-tag>
|
|
68
|
+
* </sigvelo-checkbox-group>
|
|
69
|
+
* ```
|
|
70
|
+
*
|
|
71
|
+
* @example Checked initially
|
|
72
|
+
* Add the `checked` attribute to check the toggle tag initially.
|
|
73
|
+
*
|
|
74
|
+
* ```html
|
|
75
|
+
* <sigvelo-checkbox-group label="Default notifications" style="--gap: .5em;">
|
|
76
|
+
* <sigvelo-toggle-tag name="notifications" value="email" checked>
|
|
77
|
+
* <sigvelo-icon name="mail"></sigvelo-icon>
|
|
78
|
+
* Email updates
|
|
79
|
+
* </sigvelo-toggle-tag>
|
|
80
|
+
* <sigvelo-toggle-tag name="notifications" value="push" checked>
|
|
81
|
+
* <sigvelo-icon name="bell"></sigvelo-icon>
|
|
82
|
+
* Push notifications
|
|
83
|
+
* </sigvelo-toggle-tag>
|
|
84
|
+
* <sigvelo-toggle-tag name="notifications" value="sms">
|
|
85
|
+
* <sigvelo-icon name="message-circle"></sigvelo-icon>
|
|
86
|
+
* SMS alerts
|
|
87
|
+
* </sigvelo-toggle-tag>
|
|
88
|
+
* <sigvelo-toggle-tag name="notifications" value="phone">
|
|
89
|
+
* <sigvelo-icon name="phone"></sigvelo-icon>
|
|
90
|
+
* Phone calls
|
|
91
|
+
* </sigvelo-toggle-tag>
|
|
92
|
+
* </sigvelo-checkbox-group>
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @example Changing the size
|
|
96
|
+
* Use the `size` attribute to make toggle tags larger or smaller. The available sizes are `xs`, `sm`, `md` (default), `lg`, and `xl`.
|
|
97
|
+
*
|
|
98
|
+
* ```html
|
|
99
|
+
* <div style="display: flex; flex-direction: column; gap: 1rem; align-items: flex-start;">
|
|
100
|
+
* <div>
|
|
101
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Extra small</label>
|
|
102
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
103
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
104
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="s">S</sigvelo-toggle-tag>
|
|
105
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="m">M</sigvelo-toggle-tag>
|
|
106
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="l">L</sigvelo-toggle-tag>
|
|
107
|
+
* <sigvelo-toggle-tag size="xs" name="xs-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
108
|
+
* </sigvelo-checkbox-group>
|
|
109
|
+
* </div>
|
|
110
|
+
*
|
|
111
|
+
* <div>
|
|
112
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Small</label>
|
|
113
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
114
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
115
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="s">S</sigvelo-toggle-tag>
|
|
116
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="m">M</sigvelo-toggle-tag>
|
|
117
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="l">L</sigvelo-toggle-tag>
|
|
118
|
+
* <sigvelo-toggle-tag size="sm" name="sm-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
119
|
+
* </sigvelo-checkbox-group>
|
|
120
|
+
* </div>
|
|
121
|
+
*
|
|
122
|
+
* <div>
|
|
123
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Medium (default)</label>
|
|
124
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
125
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
126
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="s">S</sigvelo-toggle-tag>
|
|
127
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="m">M</sigvelo-toggle-tag>
|
|
128
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="l">L</sigvelo-toggle-tag>
|
|
129
|
+
* <sigvelo-toggle-tag size="md" name="md-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
130
|
+
* </sigvelo-checkbox-group>
|
|
131
|
+
* </div>
|
|
132
|
+
*
|
|
133
|
+
* <div>
|
|
134
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Large</label>
|
|
135
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
136
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
137
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="s">S</sigvelo-toggle-tag>
|
|
138
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="m">M</sigvelo-toggle-tag>
|
|
139
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="l">L</sigvelo-toggle-tag>
|
|
140
|
+
* <sigvelo-toggle-tag size="lg" name="lg-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
141
|
+
* </sigvelo-checkbox-group>
|
|
142
|
+
* </div>
|
|
143
|
+
*
|
|
144
|
+
* <div>
|
|
145
|
+
* <label style="display: block; margin-block-end: 0.5rem; font-weight: 600;">Extra large</label>
|
|
146
|
+
* <sigvelo-checkbox-group style="--gap: .5em;">
|
|
147
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="xs">XS</sigvelo-toggle-tag>
|
|
148
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="s">S</sigvelo-toggle-tag>
|
|
149
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="m">M</sigvelo-toggle-tag>
|
|
150
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="l">L</sigvelo-toggle-tag>
|
|
151
|
+
* <sigvelo-toggle-tag size="xl" name="xl-sizes" value="xl">XL</sigvelo-toggle-tag>
|
|
152
|
+
* </sigvelo-checkbox-group>
|
|
153
|
+
* </div>
|
|
154
|
+
* </div>
|
|
155
|
+
* ```
|
|
156
|
+
*
|
|
157
|
+
* @example Disabling toggle tags
|
|
158
|
+
* Use the `disabled` attribute to prevent interaction with toggle tags. Disabled tags will appear faded and won't respond to clicks or keyboard input.
|
|
159
|
+
*
|
|
160
|
+
* ```html
|
|
161
|
+
* <sigvelo-checkbox-group label="Options" style="--gap: .5em;">
|
|
162
|
+
* <sigvelo-toggle-tag name="options" value="option1">Option 1</sigvelo-toggle-tag>
|
|
163
|
+
* <sigvelo-toggle-tag name="options" value="option2" disabled>Option 2</sigvelo-toggle-tag>
|
|
164
|
+
* <sigvelo-toggle-tag name="options" value="option3">Option 3</sigvelo-toggle-tag>
|
|
165
|
+
* </sigvelo-checkbox-group>
|
|
166
|
+
* ```
|
|
167
|
+
*
|
|
168
|
+
* @example Handling form submission
|
|
169
|
+
* Toggle tags are form-associated custom elements that behave like native checkboxes when submitting forms. When a toggle tag is checked, its `name` and `value` attributes are included in the form data, just like a standard checkbox.
|
|
170
|
+
*
|
|
171
|
+
* ```html
|
|
172
|
+
* <form id="toggle-tag__form" action="about:blank" target="_blank">
|
|
173
|
+
* <sigvelo-checkbox-group label="Languages" style="--gap: .5em; margin-bottom: 1.5rem;">
|
|
174
|
+
* <sigvelo-toggle-tag name="languages" value="cpp">C++</sigvelo-toggle-tag>
|
|
175
|
+
* <sigvelo-toggle-tag name="languages" value="go">Go</sigvelo-toggle-tag>
|
|
176
|
+
* <sigvelo-toggle-tag name="languages" value="javascript" checked>JavaScript</sigvelo-toggle-tag>
|
|
177
|
+
* <sigvelo-toggle-tag name="languages" value="php">PHP</sigvelo-toggle-tag>
|
|
178
|
+
* <sigvelo-toggle-tag name="languages" value="python">Python</sigvelo-toggle-tag>
|
|
179
|
+
* <sigvelo-toggle-tag name="languages" value="qb">QBasic</sigvelo-toggle-tag>
|
|
180
|
+
* <sigvelo-toggle-tag name="languages" value="rust">Rust</sigvelo-toggle-tag>
|
|
181
|
+
* </sigvelo-checkbox-group>
|
|
182
|
+
*
|
|
183
|
+
* <sigvelo-button type="submit">Submit</sigvelo-button>
|
|
184
|
+
* </form>
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
declare class SigveloToggleTag extends SigveloFormControlElement {
|
|
188
|
+
static formAssociated: boolean;
|
|
189
|
+
static styles: CSSResultGroup;
|
|
190
|
+
protected get focusableAnchor(): HTMLInputElement;
|
|
191
|
+
private checkbox;
|
|
192
|
+
isInvalid: boolean;
|
|
193
|
+
hadUserInteraction: boolean;
|
|
194
|
+
wasSubmitted: boolean;
|
|
195
|
+
/**
|
|
196
|
+
* The toggle tag's label. If you need to provide HTML in the label, use the `label` slot instead.
|
|
197
|
+
*/
|
|
198
|
+
label: string;
|
|
199
|
+
/** The name of the toggle tag. This will be submitted with the form as a name/value pair. */
|
|
200
|
+
name: string;
|
|
201
|
+
/** The toggle tag's value. */
|
|
202
|
+
value: string;
|
|
203
|
+
/** The toggle tag's checked state. */
|
|
204
|
+
checked: boolean;
|
|
205
|
+
/** Disables the toggle tag. */
|
|
206
|
+
disabled: boolean;
|
|
207
|
+
/** The toggle tag's size. */
|
|
208
|
+
size: "xs" | "sm" | "md" | "lg" | "xl";
|
|
209
|
+
/**
|
|
210
|
+
* The form to associate this control with. If omitted, the closest containing `<form>` will be used. The value of
|
|
211
|
+
* this attribute must be an ID of a form in the same document or shadow root.
|
|
212
|
+
*/
|
|
213
|
+
form: string;
|
|
214
|
+
/**
|
|
215
|
+
* Makes the toggle tag required. Form submission will not be allowed until the toggle tag is checked.
|
|
216
|
+
*/
|
|
217
|
+
required: boolean;
|
|
218
|
+
connectedCallback(): void;
|
|
219
|
+
disconnectedCallback(): void;
|
|
220
|
+
updated(changedProperties: PropertyValues<this>): void;
|
|
221
|
+
/** @internal Called when a containing fieldset is disabled. */
|
|
222
|
+
formDisabledCallback(isDisabled: boolean): void;
|
|
223
|
+
/** @internal Called when the form is reset. */
|
|
224
|
+
formResetCallback(): void;
|
|
225
|
+
private handleClick;
|
|
226
|
+
private handleBlur;
|
|
227
|
+
private handleChange;
|
|
228
|
+
private handleInput;
|
|
229
|
+
private handleFocus;
|
|
230
|
+
private handleHostInvalid;
|
|
231
|
+
/** Sets the form control's validity */
|
|
232
|
+
private updateValidity;
|
|
233
|
+
/** Sets focus to the toggle tag. */
|
|
234
|
+
focus(): void;
|
|
235
|
+
/** Removes focus from the toggle tag. */
|
|
236
|
+
blur(): void;
|
|
237
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
238
|
+
}
|
|
239
|
+
declare global {
|
|
240
|
+
interface HTMLElementTagNameMap {
|
|
241
|
+
"sigvelo-toggle-tag": SigveloToggleTag;
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
//#endregion
|
|
245
|
+
export { SigveloToggleTag as t };
|