@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,641 @@
|
|
|
1
|
+
import "./icon-BPVkNsY4.js";
|
|
2
|
+
import { t as __decorate } from "./decorate-DcF3lt7P.js";
|
|
3
|
+
import { css, html } from "lit";
|
|
4
|
+
import { property, query, state } from "lit/decorators.js";
|
|
5
|
+
import hostStyles from "@mcp-b/wc-support/styles/host.styles";
|
|
6
|
+
import { SigveloFormControlElement } from "@mcp-b/wc-support/base/sigvelo-element";
|
|
7
|
+
import { classMap } from "lit/directives/class-map.js";
|
|
8
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
9
|
+
import { SigveloBlurEvent, SigveloChangeEvent, SigveloFocusEvent, SigveloInputEvent } from "@mcp-b/wc-support/events/form";
|
|
10
|
+
import { live } from "lit/directives/live.js";
|
|
11
|
+
//#region src/components/checkbox/checkbox.styles.ts
|
|
12
|
+
var checkbox_styles_default = css`
|
|
13
|
+
:host {
|
|
14
|
+
display: inline-grid;
|
|
15
|
+
grid-template-columns: auto 1fr;
|
|
16
|
+
align-items: start;
|
|
17
|
+
gap: 0.5em;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/* Sizes */
|
|
21
|
+
:host([size="xs"]) {
|
|
22
|
+
font-size: var(--sigvelo-control-text-xs);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
:host([size="sm"]) {
|
|
26
|
+
font-size: var(--sigvelo-control-text-sm);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
:host([size="md"]) {
|
|
30
|
+
font-size: var(--sigvelo-control-text-md);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
:host([size="lg"]) {
|
|
34
|
+
font-size: var(--sigvelo-control-text-lg);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
:host([size="xl"]) {
|
|
38
|
+
font-size: var(--sigvelo-control-text-xl);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/* The checkbox's label */
|
|
42
|
+
#label {
|
|
43
|
+
display: contents; /* Makes children participate in the grid */
|
|
44
|
+
cursor: pointer;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
:host(:state(disabled)) #label {
|
|
48
|
+
cursor: not-allowed;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
#visual-box {
|
|
52
|
+
display: flex;
|
|
53
|
+
position: relative;
|
|
54
|
+
grid-row: 1;
|
|
55
|
+
grid-column: 1;
|
|
56
|
+
flex: 0 0 auto;
|
|
57
|
+
align-self: center; /* Vertically center with label text */
|
|
58
|
+
width: 1.125em;
|
|
59
|
+
height: 1.125em;
|
|
60
|
+
border-radius: var(--sigvelo-radius-sm);
|
|
61
|
+
transition:
|
|
62
|
+
var(--sigvelo-motion-duration-interaction) background-color ease,
|
|
63
|
+
var(--sigvelo-motion-duration-interaction) border-color ease;
|
|
64
|
+
|
|
65
|
+
&:has(:focus-visible) {
|
|
66
|
+
outline: var(--sigvelo-border-style) calc(var(--sigvelo-border-width) + 1px)
|
|
67
|
+
var(--sigvelo-color-focus);
|
|
68
|
+
outline-offset: var(--sigvelo-border-width);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/* Normal */
|
|
72
|
+
&.normal {
|
|
73
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
74
|
+
var(--sigvelo-color-neutral-border-muted);
|
|
75
|
+
background-color: var(--sigvelo-color-surface);
|
|
76
|
+
color: var(--sigvelo-color-primary-text-on-bg);
|
|
77
|
+
|
|
78
|
+
&.checked,
|
|
79
|
+
&.indeterminate {
|
|
80
|
+
border-color: var(--sigvelo-color-primary-bg);
|
|
81
|
+
background-color: var(--sigvelo-color-primary-bg);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* Filled */
|
|
86
|
+
&.filled {
|
|
87
|
+
border: var(--sigvelo-border-style) var(--sigvelo-border-width)
|
|
88
|
+
var(--sigvelo-color-neutral-bg-muted);
|
|
89
|
+
background-color: var(--sigvelo-color-neutral-bg-muted);
|
|
90
|
+
color: var(--sigvelo-color-primary-text-on-bg);
|
|
91
|
+
|
|
92
|
+
&.checked,
|
|
93
|
+
&.indeterminate {
|
|
94
|
+
border-color: var(--sigvelo-color-primary-bg);
|
|
95
|
+
background-color: var(--sigvelo-color-primary-bg);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/* Check + indeterminate icons */
|
|
100
|
+
#check-icon,
|
|
101
|
+
#indeterminate-icon {
|
|
102
|
+
position: absolute;
|
|
103
|
+
top: 0;
|
|
104
|
+
left: 0;
|
|
105
|
+
width: 100%;
|
|
106
|
+
height: 100%;
|
|
107
|
+
scale: 0;
|
|
108
|
+
font-size: 1.25em;
|
|
109
|
+
opacity: 0;
|
|
110
|
+
stroke-width: 0.125em;
|
|
111
|
+
transition:
|
|
112
|
+
var(--sigvelo-motion-duration-interaction) opacity ease,
|
|
113
|
+
var(--sigvelo-motion-duration-interaction) scale ease;
|
|
114
|
+
will-change: opacity; /* prevents the icon from shifting slightly in Safari when checked */
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Fix check alignment */
|
|
118
|
+
#check-icon {
|
|
119
|
+
margin-inline: -0.5px;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
&.checked:not(.indeterminate) #check-icon,
|
|
123
|
+
&.indeterminate #indeterminate-icon {
|
|
124
|
+
scale: 1;
|
|
125
|
+
opacity: 1;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* The actual checkbox control */
|
|
129
|
+
#checkbox {
|
|
130
|
+
appearance: none;
|
|
131
|
+
position: absolute;
|
|
132
|
+
top: 0;
|
|
133
|
+
left: 0;
|
|
134
|
+
width: 100%;
|
|
135
|
+
height: 100%;
|
|
136
|
+
margin: 0;
|
|
137
|
+
padding: 0;
|
|
138
|
+
border: none;
|
|
139
|
+
background: none;
|
|
140
|
+
cursor: inherit;
|
|
141
|
+
|
|
142
|
+
&:focus {
|
|
143
|
+
outline: none;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/* Label slot content */
|
|
149
|
+
#label > slot {
|
|
150
|
+
grid-row: 1;
|
|
151
|
+
grid-column: 2;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
:host(:state(disabled)) {
|
|
155
|
+
cursor: not-allowed;
|
|
156
|
+
opacity: 0.5;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
#description {
|
|
160
|
+
display: block;
|
|
161
|
+
grid-row: 2;
|
|
162
|
+
grid-column: 2;
|
|
163
|
+
margin-block-start: -0.5em;
|
|
164
|
+
color: var(--sigvelo-color-text-muted);
|
|
165
|
+
font-size: max(12px, 0.875em); /* never smaller than 12px */
|
|
166
|
+
}
|
|
167
|
+
`;
|
|
168
|
+
//#endregion
|
|
169
|
+
//#region src/components/checkbox/checkbox.ts
|
|
170
|
+
/**
|
|
171
|
+
* <sigvelo-checkbox>
|
|
172
|
+
*
|
|
173
|
+
* @summary Allows users to select one or more options from a list or toggle single options on and off.
|
|
174
|
+
* @tag sigvelo-checkbox
|
|
175
|
+
* @documentation https://design-system.sigvelo.com/docs/components/checkbox
|
|
176
|
+
* @status stable
|
|
177
|
+
* @since 1.0
|
|
178
|
+
*
|
|
179
|
+
* @dependency sigvelo-icon
|
|
180
|
+
*
|
|
181
|
+
* @slot - The checkbox's label. For plain-text labels, you can use the `label` attribute instead.
|
|
182
|
+
* @slot description - The checkbox's description. For plain-text descriptions, you can use the `description` attribute
|
|
183
|
+
* instead.
|
|
184
|
+
*
|
|
185
|
+
* @event sigvelo-blur - Emitted when the checkbox loses focus. This event does not bubble.
|
|
186
|
+
* @event sigvelo-change - Emitted when the user commits changes to the checkbox's value.
|
|
187
|
+
* @event sigvelo-focus - Emitted when the checkbox receives focus. This event does not bubble.
|
|
188
|
+
* @event sigvelo-input - Emitted when the checkbox receives input.
|
|
189
|
+
*
|
|
190
|
+
* @csspart label - The `<label>` that wraps the entire control.
|
|
191
|
+
* @csspart description - The element that contains the checkbox's description.
|
|
192
|
+
* @csspart visual-box - The element that wraps the internal checkbox.
|
|
193
|
+
* @csspart check-icon - The check icon, a `<sigvelo-icon>` element.
|
|
194
|
+
* @csspart check-icon__svg - The check icon's `svg` part.
|
|
195
|
+
* @csspart indeterminate-icon - The indeterminate icon, a `<sigvelo-icon>` element.
|
|
196
|
+
* @csspart indeterminate-icon__svg - The indeterminate icon's `<svg>` part.
|
|
197
|
+
*
|
|
198
|
+
* @cssstate checked - Applied when the checkbox is checked.
|
|
199
|
+
* @cssstate disabled - Applied when the checkbox is disabled.
|
|
200
|
+
* @cssstate focused - Applied when the checkbox has focus.
|
|
201
|
+
* @cssstate user-valid - Applied when the checkbox is valid and the user has sufficiently interacted with it.
|
|
202
|
+
* @cssstate user-invalid - Applied when the checkbox is invalid and the user has sufficiently interacted with it.
|
|
203
|
+
*
|
|
204
|
+
* @example Default
|
|
205
|
+
* ```html
|
|
206
|
+
* <sigvelo-checkbox name="feed" value="yes">I will feed the cats</sigvelo-checkbox>
|
|
207
|
+
* ```
|
|
208
|
+
*
|
|
209
|
+
* @example Labels and descriptions
|
|
210
|
+
* The checkbox's label is provided via its default slot. You can use the `description` attribute to provide a plain text description. If you want to provide HTML, use the `description` slot instead.
|
|
211
|
+
*
|
|
212
|
+
* ```html
|
|
213
|
+
* <sigvelo-checkbox name="terms" value="accepted">
|
|
214
|
+
* I agree to the terms and conditions
|
|
215
|
+
* <span slot="description">
|
|
216
|
+
* By checking this box, you agree to our <a href="#">catnip usage policy</a>
|
|
217
|
+
* </span>
|
|
218
|
+
* </sigvelo-checkbox>
|
|
219
|
+
* ```
|
|
220
|
+
*
|
|
221
|
+
* @example Checked initially
|
|
222
|
+
* Add the `checked` attribute to check the checkbox initially.
|
|
223
|
+
*
|
|
224
|
+
* ```html
|
|
225
|
+
* <sigvelo-checkbox name="feed" value="yes" checked>I will feed the cats</sigvelo-checkbox>
|
|
226
|
+
* ```
|
|
227
|
+
*
|
|
228
|
+
* @example Filled checkboxes
|
|
229
|
+
* Set the `variant` attribute to `filled` to change the checkbox's variant.
|
|
230
|
+
*
|
|
231
|
+
* ```html
|
|
232
|
+
* <sigvelo-checkbox variant="filled">Filled checkbox</sigvelo-checkbox>
|
|
233
|
+
* ```
|
|
234
|
+
*
|
|
235
|
+
* @example Changing the size
|
|
236
|
+
* Use the `size` attribute to change the checkbox's size.
|
|
237
|
+
*
|
|
238
|
+
* ```html
|
|
239
|
+
* <sigvelo-checkbox size="xs">Extra small</sigvelo-checkbox><br>
|
|
240
|
+
* <sigvelo-checkbox size="sm">Small</sigvelo-checkbox><br>
|
|
241
|
+
* <sigvelo-checkbox size="md">Medium</sigvelo-checkbox><br>
|
|
242
|
+
* <sigvelo-checkbox size="lg">Large</sigvelo-checkbox><br>
|
|
243
|
+
* <sigvelo-checkbox size="xl">Extra large</sigvelo-checkbox>
|
|
244
|
+
* ```
|
|
245
|
+
*
|
|
246
|
+
* @example Indeterminate
|
|
247
|
+
* Use the `indeterminate` attribute to put the checkbox in an indeterminate state. This can be used to show a mixed selection in a group of "child" checkboxes.
|
|
248
|
+
*
|
|
249
|
+
* ```html
|
|
250
|
+
* <sigvelo-checkbox indeterminate>Indeterminate</sigvelo-checkbox>
|
|
251
|
+
* ```
|
|
252
|
+
*
|
|
253
|
+
* @example Disabling
|
|
254
|
+
* Use the `disabled` attribute to disable the checkbox.
|
|
255
|
+
*
|
|
256
|
+
* ```html
|
|
257
|
+
* <sigvelo-checkbox disabled>Unchecked and disabled</sigvelo-checkbox><br>
|
|
258
|
+
* <sigvelo-checkbox checked disabled>Checked and disabled</sigvelo-checkbox><br>
|
|
259
|
+
* <sigvelo-checkbox indeterminate disabled>Indeterminate and disabled</sigvelo-checkbox>
|
|
260
|
+
* ```
|
|
261
|
+
*
|
|
262
|
+
* @example Validation
|
|
263
|
+
* The `required` attribute can be applied to enable validation using the Constraint Validation API. This will prevent form submission until the checkbox is checked.
|
|
264
|
+
*
|
|
265
|
+
* ```html
|
|
266
|
+
* <form action="about:blank" method="get" target="_blank">
|
|
267
|
+
* <sigvelo-checkbox name="feed" value="yes" required>I will feed the cats</sigvelo-checkbox>
|
|
268
|
+
* <br><br>
|
|
269
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
270
|
+
* <sigvelo-button type="reset">Reset</sigvelo-button>
|
|
271
|
+
* </form>
|
|
272
|
+
* ```
|
|
273
|
+
*
|
|
274
|
+
* @example Using custom validation
|
|
275
|
+
* Use the `setCustomValidity()` method to make the checkbox invalid and show a custom error message on submit. This will override all other validation parameters. To clear the error, remove the attribute or set it to an empty string.
|
|
276
|
+
*
|
|
277
|
+
* ```html
|
|
278
|
+
* <form action="about:blank" method="get" target="_blank" id="checkbox__custom-validation">
|
|
279
|
+
* <sigvelo-checkbox name="feed" value="yes" required>I will feed the cats</sigvelo-checkbox>
|
|
280
|
+
* <br><br>
|
|
281
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
282
|
+
* <sigvelo-button type="reset">Reset</sigvelo-button>
|
|
283
|
+
* </form>
|
|
284
|
+
*
|
|
285
|
+
* <script type="module">
|
|
286
|
+
* import { allDefined } from '/dist/sigvelo.js';
|
|
287
|
+
*
|
|
288
|
+
* await allDefined();
|
|
289
|
+
*
|
|
290
|
+
* const form = document.getElementById('checkbox__custom-validation');
|
|
291
|
+
* const checkbox = form.querySelector('sigvelo-checkbox');
|
|
292
|
+
*
|
|
293
|
+
* checkbox.setCustomValidity('Not so fast, bubba!');
|
|
294
|
+
* <\/script>
|
|
295
|
+
* ```
|
|
296
|
+
*
|
|
297
|
+
* @example Styling validation
|
|
298
|
+
* You can style valid and invalid checkboxes using the `:valid` and `:invalid` pseudo classes.
|
|
299
|
+
*
|
|
300
|
+
* ```html
|
|
301
|
+
* <form action="about:blank" method="get" target="_blank" class="checkbox__validation-pseudo">
|
|
302
|
+
* <sigvelo-checkbox name="feed" value="yes" required>I will feed the cats</sigvelo-checkbox>
|
|
303
|
+
* <br><br>
|
|
304
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
305
|
+
* <sigvelo-button type="reset">Reset</sigvelo-button>
|
|
306
|
+
* </form>
|
|
307
|
+
*
|
|
308
|
+
* <style>
|
|
309
|
+
* .checkbox__validation-pseudo {
|
|
310
|
+
* sigvelo-checkbox:valid {
|
|
311
|
+
* outline: solid 2px var(--sigvelo-color-success-border);
|
|
312
|
+
* outline-offset: .5rem;
|
|
313
|
+
* }
|
|
314
|
+
*
|
|
315
|
+
* sigvelo-checkbox:invalid {
|
|
316
|
+
* outline: solid 2px var(--sigvelo-color-danger-border);
|
|
317
|
+
* outline-offset: .5rem;
|
|
318
|
+
* }
|
|
319
|
+
* }
|
|
320
|
+
* </style>
|
|
321
|
+
* ```
|
|
322
|
+
*
|
|
323
|
+
* However, these selectors will match even before the user has had a chance to fill out the form. More often than not, you'll want to use the `user-valid` and `user-invalid` custom states instead. This way, validation styles are only shown _after_ the user interacts with the form control or when the form is submitted.
|
|
324
|
+
*
|
|
325
|
+
* ```html
|
|
326
|
+
* <form action="about:blank" method="get" target="_blank" class="checkbox__validation-custom">
|
|
327
|
+
* <sigvelo-checkbox name="feed" value="yes" required>I will feed the cats</sigvelo-checkbox>
|
|
328
|
+
* <br><br>
|
|
329
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
330
|
+
* <sigvelo-button type="reset">Reset</sigvelo-button>
|
|
331
|
+
* </form>
|
|
332
|
+
*
|
|
333
|
+
* <style>
|
|
334
|
+
* .checkbox__validation-custom {
|
|
335
|
+
* sigvelo-checkbox:state(user-valid) {
|
|
336
|
+
* outline: solid 2px var(--sigvelo-color-success-border);
|
|
337
|
+
* outline-offset: .5rem;
|
|
338
|
+
* }
|
|
339
|
+
*
|
|
340
|
+
* sigvelo-checkbox:state(user-invalid) {
|
|
341
|
+
* outline: solid 2px var(--sigvelo-color-danger-border);
|
|
342
|
+
* outline-offset: .5rem;
|
|
343
|
+
* }
|
|
344
|
+
* }
|
|
345
|
+
* </style>
|
|
346
|
+
* ```
|
|
347
|
+
*
|
|
348
|
+
* @example Styling checkboxes
|
|
349
|
+
* Checkboxes come with a simple, minimal appearance. Feel free to customize them with your own styles. Here's a quick way to turn a checkbox into a selectable tile.
|
|
350
|
+
*
|
|
351
|
+
* ```html
|
|
352
|
+
* <sigvelo-checkbox checked class="checkbox__tile">
|
|
353
|
+
* <sigvelo-icon name="ball-basketball"></sigvelo-icon>
|
|
354
|
+
* <span>Basketball</span>
|
|
355
|
+
* </sigvelo-checkbox>
|
|
356
|
+
*
|
|
357
|
+
* <sigvelo-checkbox class="checkbox__tile">
|
|
358
|
+
* <sigvelo-icon name="ball-american-football"></sigvelo-icon>
|
|
359
|
+
* <span>Football</span>
|
|
360
|
+
* </sigvelo-checkbox>
|
|
361
|
+
*
|
|
362
|
+
* <sigvelo-checkbox class="checkbox__tile">
|
|
363
|
+
* <sigvelo-icon name="ping-pong"></sigvelo-icon>
|
|
364
|
+
* <span>Ping-pong</span>
|
|
365
|
+
* </sigvelo-checkbox>
|
|
366
|
+
*
|
|
367
|
+
* <style>
|
|
368
|
+
* .checkbox__tile {
|
|
369
|
+
* position: relative;
|
|
370
|
+
* border: solid 1px var(--sigvelo-color-neutral-border-muted);
|
|
371
|
+
* border-radius: var(--sigvelo-radius-md);
|
|
372
|
+
* box-shadow: var(--sigvelo-elevation-hairline);
|
|
373
|
+
*
|
|
374
|
+
* &::part(label) {
|
|
375
|
+
* display: flex;
|
|
376
|
+
* flex-direction: column;
|
|
377
|
+
* gap: .5rem;
|
|
378
|
+
* padding: 2rem 1.5rem .5rem 1.5rem;
|
|
379
|
+
* }
|
|
380
|
+
*
|
|
381
|
+
* &::part(visual-box) {
|
|
382
|
+
* position: absolute;
|
|
383
|
+
* top: 0.5rem;
|
|
384
|
+
* left: 0.5rem;
|
|
385
|
+
* }
|
|
386
|
+
*
|
|
387
|
+
* sigvelo-icon {
|
|
388
|
+
* font-size: 4rem;
|
|
389
|
+
* stroke-width: .75px;
|
|
390
|
+
* }
|
|
391
|
+
*
|
|
392
|
+
* span {
|
|
393
|
+
* font-size: .875rem;
|
|
394
|
+
* color: var(--sigvelo-color-primary-text-on-subtle);
|
|
395
|
+
* }
|
|
396
|
+
*
|
|
397
|
+
* &:state(checked) {
|
|
398
|
+
* background-color: var(--sigvelo-color-primary-bg-subtle);
|
|
399
|
+
* border-color: var(--sigvelo-color-primary-border);
|
|
400
|
+
* }
|
|
401
|
+
* }
|
|
402
|
+
* </style>
|
|
403
|
+
* ```
|
|
404
|
+
*
|
|
405
|
+
* ```html
|
|
406
|
+
* <sigvelo-checkbox checked class="checkbox__image">
|
|
407
|
+
* <img draggable="false" src="https://images.unsplash.com/photo-1620196244888-d31ff5bbf163?q=80&w=400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A gray kitten plays with a blue toy mouse">
|
|
408
|
+
* </sigvelo-checkbox>
|
|
409
|
+
*
|
|
410
|
+
* <sigvelo-checkbox class="checkbox__image">
|
|
411
|
+
* <img draggable="false" src="https://images.unsplash.com/photo-1597239351814-a5f03b4663c0?q=80&w=400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A gray kitten practices prowling on a brown floor">
|
|
412
|
+
* </sigvelo-checkbox>
|
|
413
|
+
*
|
|
414
|
+
* <sigvelo-checkbox class="checkbox__image">
|
|
415
|
+
* <img draggable="false" src="https://images.unsplash.com/photo-1503844281047-cf42eade5ca5?q=80&w=400&auto=format&fit=crop&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D" alt="A gray kitten looks at the camera from behind a tree">
|
|
416
|
+
* </sigvelo-checkbox>
|
|
417
|
+
*
|
|
418
|
+
* <style>
|
|
419
|
+
* .checkbox__image {
|
|
420
|
+
* isolation: isolate;
|
|
421
|
+
* position: relative;
|
|
422
|
+
*
|
|
423
|
+
* img {
|
|
424
|
+
* display: block;
|
|
425
|
+
* width: 150px;
|
|
426
|
+
* height: 150px;
|
|
427
|
+
* object-fit: cover;
|
|
428
|
+
* border-radius: .25rem;
|
|
429
|
+
* }
|
|
430
|
+
*
|
|
431
|
+
* &::part(visual-box) {
|
|
432
|
+
* position: absolute;
|
|
433
|
+
* bottom: .5rem;
|
|
434
|
+
* left: .5rem;
|
|
435
|
+
* width: 1.5rem;
|
|
436
|
+
* height: 1.5rem;
|
|
437
|
+
* border: none;
|
|
438
|
+
* background-color: color-mix(in oklab, black, transparent 50%);
|
|
439
|
+
* }
|
|
440
|
+
*
|
|
441
|
+
* &:state(checked)::part(visual-box) {
|
|
442
|
+
* background-color: var(--sigvelo-color-primary-bg);
|
|
443
|
+
* }
|
|
444
|
+
*
|
|
445
|
+
* &::part(check-icon) {
|
|
446
|
+
* scale: .75;
|
|
447
|
+
* }
|
|
448
|
+
* }
|
|
449
|
+
* </style>
|
|
450
|
+
* ```
|
|
451
|
+
*
|
|
452
|
+
* **Warning:** It's not recommended to hide the checkbox unless your styles make it very clear to users that the control is checkable.
|
|
453
|
+
*/
|
|
454
|
+
var SigveloCheckbox = class extends SigveloFormControlElement {
|
|
455
|
+
constructor(..._args) {
|
|
456
|
+
super(..._args);
|
|
457
|
+
this.isInvalid = false;
|
|
458
|
+
this.hadUserInteraction = false;
|
|
459
|
+
this.wasSubmitted = false;
|
|
460
|
+
this.value = "";
|
|
461
|
+
this.checked = false;
|
|
462
|
+
this.indeterminate = false;
|
|
463
|
+
this.disabled = false;
|
|
464
|
+
this.variant = "normal";
|
|
465
|
+
this.size = "md";
|
|
466
|
+
this.required = false;
|
|
467
|
+
}
|
|
468
|
+
static {
|
|
469
|
+
this.formAssociated = true;
|
|
470
|
+
}
|
|
471
|
+
static {
|
|
472
|
+
this.observeSlots = true;
|
|
473
|
+
}
|
|
474
|
+
static {
|
|
475
|
+
this.styles = [hostStyles, checkbox_styles_default];
|
|
476
|
+
}
|
|
477
|
+
get focusableAnchor() {
|
|
478
|
+
return this.checkbox;
|
|
479
|
+
}
|
|
480
|
+
connectedCallback() {
|
|
481
|
+
super.connectedCallback();
|
|
482
|
+
this.addEventListener("invalid", this.handleHostInvalid);
|
|
483
|
+
}
|
|
484
|
+
disconnectedCallback() {
|
|
485
|
+
super.disconnectedCallback();
|
|
486
|
+
this.removeEventListener("invalid", this.handleHostInvalid);
|
|
487
|
+
}
|
|
488
|
+
updated(changedProperties) {
|
|
489
|
+
this.updateValidity();
|
|
490
|
+
if (changedProperties.has("checked") || changedProperties.has("value")) this.internals.setFormValue(this.checked ? this.value : null);
|
|
491
|
+
if (changedProperties.has("checked")) this.customStates.set("checked", this.checked);
|
|
492
|
+
if (changedProperties.has("disabled")) this.customStates.set("disabled", this.disabled);
|
|
493
|
+
if (this.hadUserInteraction || this.wasSubmitted) {
|
|
494
|
+
this.customStates.set("user-invalid", this.isInvalid);
|
|
495
|
+
this.customStates.set("user-valid", !this.isInvalid);
|
|
496
|
+
} else {
|
|
497
|
+
this.customStates.set("user-invalid", false);
|
|
498
|
+
this.customStates.set("user-valid", false);
|
|
499
|
+
}
|
|
500
|
+
}
|
|
501
|
+
/** @internal Called when a containing fieldset is disabled. */
|
|
502
|
+
formDisabledCallback(isDisabled) {
|
|
503
|
+
this.disabled = isDisabled;
|
|
504
|
+
}
|
|
505
|
+
/** @internal Called when the form is reset. */
|
|
506
|
+
formResetCallback() {
|
|
507
|
+
this.isInvalid = false;
|
|
508
|
+
this.hadUserInteraction = false;
|
|
509
|
+
this.wasSubmitted = false;
|
|
510
|
+
this.checked = this.hasAttribute("checked");
|
|
511
|
+
}
|
|
512
|
+
handleClick() {
|
|
513
|
+
this.checked = !this.checked;
|
|
514
|
+
this.indeterminate = false;
|
|
515
|
+
}
|
|
516
|
+
handleBlur() {
|
|
517
|
+
this.customStates.set("focused", false);
|
|
518
|
+
this.dispatchEvent(new SigveloBlurEvent());
|
|
519
|
+
}
|
|
520
|
+
handleChange() {
|
|
521
|
+
this.hadUserInteraction = true;
|
|
522
|
+
this.dispatchEvent(new SigveloChangeEvent());
|
|
523
|
+
this.dispatchEvent(new Event("change", {
|
|
524
|
+
bubbles: true,
|
|
525
|
+
composed: true
|
|
526
|
+
}));
|
|
527
|
+
}
|
|
528
|
+
handleInput() {
|
|
529
|
+
this.dispatchEvent(new SigveloInputEvent());
|
|
530
|
+
}
|
|
531
|
+
handleFocus() {
|
|
532
|
+
this.customStates.set("focused", true);
|
|
533
|
+
this.dispatchEvent(new SigveloFocusEvent());
|
|
534
|
+
}
|
|
535
|
+
handleHostInvalid() {
|
|
536
|
+
this.wasSubmitted = true;
|
|
537
|
+
}
|
|
538
|
+
/** Sets the form control's validity */
|
|
539
|
+
async updateValidity() {
|
|
540
|
+
await this.updateComplete;
|
|
541
|
+
const hasCustomValidity = this.getCustomValidity().length > 0;
|
|
542
|
+
const validationMessage = hasCustomValidity ? this.getCustomValidity() : this.checkbox.validationMessage;
|
|
543
|
+
const flags = {
|
|
544
|
+
customError: hasCustomValidity,
|
|
545
|
+
valueMissing: this.checkbox.validity.valueMissing
|
|
546
|
+
};
|
|
547
|
+
this.isInvalid = hasCustomValidity ? true : !this.checkbox.validity.valid;
|
|
548
|
+
this.internals.setValidity(flags, validationMessage, this.focusableAnchor);
|
|
549
|
+
}
|
|
550
|
+
/** Sets focus to the checkbox. */
|
|
551
|
+
focus() {
|
|
552
|
+
this.checkbox.focus();
|
|
553
|
+
}
|
|
554
|
+
/** Removes focus from the checkbox. */
|
|
555
|
+
blur() {
|
|
556
|
+
this.checkbox.blur();
|
|
557
|
+
}
|
|
558
|
+
render() {
|
|
559
|
+
const hasDescription = this.description || this.slotsWithContent.has("description");
|
|
560
|
+
return html`
|
|
561
|
+
<label id="label" part="label">
|
|
562
|
+
<div
|
|
563
|
+
id="visual-box"
|
|
564
|
+
part="visual-box"
|
|
565
|
+
class=${classMap({
|
|
566
|
+
normal: this.variant === "normal",
|
|
567
|
+
filled: this.variant === "filled",
|
|
568
|
+
xs: this.size === "xs",
|
|
569
|
+
sm: this.size === "sm",
|
|
570
|
+
md: this.size === "md",
|
|
571
|
+
lg: this.size === "lg",
|
|
572
|
+
xl: this.size === "xl",
|
|
573
|
+
checked: this.checked,
|
|
574
|
+
indeterminate: this.indeterminate,
|
|
575
|
+
disabled: this.disabled,
|
|
576
|
+
required: this.required
|
|
577
|
+
})}
|
|
578
|
+
>
|
|
579
|
+
<input
|
|
580
|
+
id="checkbox"
|
|
581
|
+
type="checkbox"
|
|
582
|
+
value=${ifDefined(this.value)}
|
|
583
|
+
.indeterminate=${live(this.indeterminate)}
|
|
584
|
+
.checked=${live(this.checked)}
|
|
585
|
+
.disabled=${this.disabled}
|
|
586
|
+
.required=${this.required}
|
|
587
|
+
aria-describedby="description"
|
|
588
|
+
@change=${this.handleChange}
|
|
589
|
+
@click=${this.handleClick}
|
|
590
|
+
@input=${this.handleInput}
|
|
591
|
+
@focus=${this.handleFocus}
|
|
592
|
+
@blur=${this.handleBlur}
|
|
593
|
+
/>
|
|
594
|
+
<sigvelo-icon
|
|
595
|
+
id="check-icon"
|
|
596
|
+
part="check-icon"
|
|
597
|
+
exportparts="svg:check-icon__svg"
|
|
598
|
+
library="system"
|
|
599
|
+
name="check"
|
|
600
|
+
></sigvelo-icon>
|
|
601
|
+
<sigvelo-icon
|
|
602
|
+
id="indeterminate-icon"
|
|
603
|
+
part="indeterminate-icon"
|
|
604
|
+
exportparts="svg:indeterminate-icon__svg"
|
|
605
|
+
library="system"
|
|
606
|
+
name="minus"
|
|
607
|
+
></sigvelo-icon>
|
|
608
|
+
</div>
|
|
609
|
+
<slot>${this.label}</slot>
|
|
610
|
+
</label>
|
|
611
|
+
|
|
612
|
+
<div id="description" part="description" class=${classMap({ vh: !hasDescription })}>
|
|
613
|
+
<slot name="description">${this.description}</slot>
|
|
614
|
+
</div>
|
|
615
|
+
`;
|
|
616
|
+
}
|
|
617
|
+
};
|
|
618
|
+
__decorate([query("input[type=\"checkbox\"]")], SigveloCheckbox.prototype, "checkbox", void 0);
|
|
619
|
+
__decorate([state()], SigveloCheckbox.prototype, "isInvalid", void 0);
|
|
620
|
+
__decorate([state()], SigveloCheckbox.prototype, "hadUserInteraction", void 0);
|
|
621
|
+
__decorate([state()], SigveloCheckbox.prototype, "wasSubmitted", void 0);
|
|
622
|
+
__decorate([property()], SigveloCheckbox.prototype, "label", void 0);
|
|
623
|
+
__decorate([property()], SigveloCheckbox.prototype, "description", void 0);
|
|
624
|
+
__decorate([property({ reflect: true })], SigveloCheckbox.prototype, "name", void 0);
|
|
625
|
+
__decorate([property()], SigveloCheckbox.prototype, "value", void 0);
|
|
626
|
+
__decorate([property({ type: Boolean })], SigveloCheckbox.prototype, "checked", void 0);
|
|
627
|
+
__decorate([property({ type: Boolean })], SigveloCheckbox.prototype, "indeterminate", void 0);
|
|
628
|
+
__decorate([property({
|
|
629
|
+
type: Boolean,
|
|
630
|
+
reflect: true
|
|
631
|
+
})], SigveloCheckbox.prototype, "disabled", void 0);
|
|
632
|
+
__decorate([property({ reflect: true })], SigveloCheckbox.prototype, "variant", void 0);
|
|
633
|
+
__decorate([property({ reflect: true })], SigveloCheckbox.prototype, "size", void 0);
|
|
634
|
+
__decorate([property()], SigveloCheckbox.prototype, "form", void 0);
|
|
635
|
+
__decorate([property({
|
|
636
|
+
type: Boolean,
|
|
637
|
+
reflect: true
|
|
638
|
+
})], SigveloCheckbox.prototype, "required", void 0);
|
|
639
|
+
customElements.define("sigvelo-checkbox", SigveloCheckbox);
|
|
640
|
+
//#endregion
|
|
641
|
+
export { SigveloCheckbox as t };
|