@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,556 @@
|
|
|
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
|
+
import formControlStyles from "@mcp-b/wc-support/styles/form-control.styles";
|
|
11
|
+
//#region src/components/text-area/text-area.styles.ts
|
|
12
|
+
var text_area_styles_default = css`
|
|
13
|
+
/* Normal */
|
|
14
|
+
#visual-box.normal {
|
|
15
|
+
padding-inline: 0;
|
|
16
|
+
|
|
17
|
+
#text-box {
|
|
18
|
+
padding-inline: 0.75em;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* Filled */
|
|
23
|
+
#visual-box.filled {
|
|
24
|
+
padding-inline: 0;
|
|
25
|
+
|
|
26
|
+
#text-box {
|
|
27
|
+
padding-inline: 0.75em;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/* Sizes */
|
|
32
|
+
#visual-box.xs #text-box {
|
|
33
|
+
padding-block: 0.2em;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
#visual-box.sm #text-box {
|
|
37
|
+
padding-block: 0.35em;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
#visual-box.md #text-box {
|
|
41
|
+
padding-block: 0.7em;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
#visual-box.lg #text-box {
|
|
45
|
+
padding-block: 0.5em;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
#visual-box.xl #text-box {
|
|
49
|
+
padding-block: 0.55em;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/* Resizing */
|
|
53
|
+
#visual-box.resize-none #text-box,
|
|
54
|
+
#visual-box.resize-auto #text-box {
|
|
55
|
+
resize: none;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
#visual-box.resize-vertical #text-box {
|
|
59
|
+
resize: vertical;
|
|
60
|
+
}
|
|
61
|
+
`;
|
|
62
|
+
//#endregion
|
|
63
|
+
//#region src/components/text-area/text-area.ts
|
|
64
|
+
/**
|
|
65
|
+
* <sigvelo-text-area>
|
|
66
|
+
*
|
|
67
|
+
* @summary Allows users to edit multi-line, plain text content.
|
|
68
|
+
* @tag sigvelo-text-area
|
|
69
|
+
* @documentation https://design-system.sigvelo.com/docs/components/text-area
|
|
70
|
+
* @status stable
|
|
71
|
+
* @since 1.0
|
|
72
|
+
*
|
|
73
|
+
* @slot label - The text area's label. For plain-text labels, you can use the `label` attribute instead.
|
|
74
|
+
* @slot description - The text area's description. For plain-text descriptions, you can use the `description`
|
|
75
|
+
* attribute instead.
|
|
76
|
+
*
|
|
77
|
+
* @event sigvelo-blur - Emitted when the text area loses focus. This event does not bubble.
|
|
78
|
+
* @event sigvelo-change - Emitted when the user commits changes to the text area's value.
|
|
79
|
+
* @event sigvelo-focus - Emitted when the text area receives focus. This event does not bubble.
|
|
80
|
+
* @event sigvelo-input - Emitted when the text area receives input.
|
|
81
|
+
*
|
|
82
|
+
* @csspart label - The element that contains the text area's label.
|
|
83
|
+
* @csspart description - The element that contains the text area's description.
|
|
84
|
+
* @csspart visual-box - The element that wraps the internal text box.
|
|
85
|
+
* @csspart text-box - The internal text box, a `<textarea>` element.
|
|
86
|
+
*
|
|
87
|
+
* @cssstate disabled - Applied when the text area is disabled.
|
|
88
|
+
* @cssstate blank - Applied when the text area has a blank value.
|
|
89
|
+
* @cssstate focused - Applied when the text area has focus.
|
|
90
|
+
* @cssstate user-valid - Applied when the text area is valid and the user has sufficiently interacted with it.
|
|
91
|
+
* @cssstate user-invalid - Applied when the text area is invalid and the user has sufficiently interacted with it.
|
|
92
|
+
*
|
|
93
|
+
* @example Default
|
|
94
|
+
* ```html
|
|
95
|
+
* <sigvelo-text-area name="feedback" label="Feedback"></sigvelo-text-area>
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* @example Labels and descriptions
|
|
99
|
+
* You can use the `label` and `description` attributes to provide plain text labels and descriptions for the text area. If you want to provide HTML, use the `label` and `description` slots instead.
|
|
100
|
+
*
|
|
101
|
+
* ```html
|
|
102
|
+
* <sigvelo-text-area name="feedback" label="Feedback">
|
|
103
|
+
* <span slot="description">
|
|
104
|
+
* For more information, <a href="https://example.com/" target="_blank">visit our website</a>.
|
|
105
|
+
* </span>
|
|
106
|
+
* </sigvelo-text-area>
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* @example Providing an initial value
|
|
110
|
+
* Use the `value` attribute to provide an initial value for the text area.
|
|
111
|
+
*
|
|
112
|
+
* ```html
|
|
113
|
+
* <sigvelo-text-area name="feedback" label="Feedback" value="This is the greatest and best song in the world."></sigvelo-text-area>
|
|
114
|
+
* ```
|
|
115
|
+
*
|
|
116
|
+
* @example Adding a placeholder
|
|
117
|
+
* Use the `placeholder` attribute to show a placeholder in the text area when it's empty.
|
|
118
|
+
*
|
|
119
|
+
* ```html
|
|
120
|
+
* <sigvelo-text-area
|
|
121
|
+
* name="bio"
|
|
122
|
+
* label="Biography"
|
|
123
|
+
* placeholder="Tell us about yourself"
|
|
124
|
+
* ></sigvelo-text-area>
|
|
125
|
+
* ```
|
|
126
|
+
*
|
|
127
|
+
* @example Changing the number of rows
|
|
128
|
+
* Use the `rows` attribute to set the default number of text rows.
|
|
129
|
+
*
|
|
130
|
+
* ```html
|
|
131
|
+
* <sigvelo-text-area label="One row" rows="1"></sigvelo-text-area><br>
|
|
132
|
+
* <sigvelo-text-area label="Five rows" rows="5"></sigvelo-text-area>
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
135
|
+
* @example Resizing to fit content
|
|
136
|
+
* Text areas can grow with their content by setting the `resize` property to `auto`. The minimum number of rows shown is determine by the `rows` attribute.
|
|
137
|
+
*
|
|
138
|
+
* ```html
|
|
139
|
+
* <sigvelo-text-area label="Resizing to fit" resize="auto" rows="4"></sigvelo-text-area>
|
|
140
|
+
* ```
|
|
141
|
+
*
|
|
142
|
+
* @example Filled and unstyled text areas
|
|
143
|
+
* Set the `variant` attribute to `normal`, `filled`, or `unstyled` to change the text area's variant.
|
|
144
|
+
*
|
|
145
|
+
* ```html
|
|
146
|
+
* <sigvelo-text-area variant="normal" label="Normal text field" placeholder="Enter some text"></sigvelo-text-area><br>
|
|
147
|
+
* <sigvelo-text-area variant="filled" label="Filled" placeholder="Enter some text"></sigvelo-text-area><br>
|
|
148
|
+
* <sigvelo-text-area variant="unstyled" label="Unstyled" placeholder="Enter some text"></sigvelo-text-area>
|
|
149
|
+
* ```
|
|
150
|
+
*
|
|
151
|
+
* @example Changing the size
|
|
152
|
+
* Use the `size` attribute to change the text area's size.
|
|
153
|
+
*
|
|
154
|
+
* ```html
|
|
155
|
+
* <sigvelo-text-area size="xs" label="Extra small"></sigvelo-text-area><br>
|
|
156
|
+
* <sigvelo-text-area size="sm" label="Small"></sigvelo-text-area><br>
|
|
157
|
+
* <sigvelo-text-area size="md" label="Medium"></sigvelo-text-area><br>
|
|
158
|
+
* <sigvelo-text-area size="lg" label="Large"></sigvelo-text-area><br>
|
|
159
|
+
* <sigvelo-text-area size="xl" label="Extra large"></sigvelo-text-area>
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* @example Disabling
|
|
163
|
+
* Use the `disabled` attribute to disable the text area.
|
|
164
|
+
*
|
|
165
|
+
* ```html
|
|
166
|
+
* <sigvelo-text-area label="Disabled" disabled></sigvelo-text-area>
|
|
167
|
+
* ```
|
|
168
|
+
*
|
|
169
|
+
* @example Showing labels on the side
|
|
170
|
+
* With the `sigvelo-side-label` utility, you can show labels on the side instead of on top of the text area. You can control the width of the label by setting the `--label-width` custom property.
|
|
171
|
+
*
|
|
172
|
+
* ```html
|
|
173
|
+
* <sigvelo-text-area
|
|
174
|
+
* class="sigvelo-side-label"
|
|
175
|
+
* style="--label-width: 8ch;"
|
|
176
|
+
* name="name"
|
|
177
|
+
* label="Feedback"
|
|
178
|
+
* description="Let us know what you think"
|
|
179
|
+
* ></sigvelo-text-area>
|
|
180
|
+
* ```
|
|
181
|
+
*
|
|
182
|
+
* @example Validation
|
|
183
|
+
* A number of attributes can be used to enable validation using the Constraint Validation API. These include `required`, `minlength`, and `maxlength`. They work exactly like their native counterparts.
|
|
184
|
+
*
|
|
185
|
+
* ```html
|
|
186
|
+
* <form action="about:blank" method="get" target="_blank">
|
|
187
|
+
* <sigvelo-text-area name="required" label="Required" required></sigvelo-text-area><br>
|
|
188
|
+
* <sigvelo-text-area name="minlength" label="Minimum length (enter at least five characters)" required minlength="5"></sigvelo-text-area><br>
|
|
189
|
+
* <sigvelo-text-area name="maxlength" label="Maximum length (enter no more than five characters)" required maxlength="5"></sigvelo-text-area><br>
|
|
190
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
191
|
+
* <sigvelo-button type="reset">Reset</sigvelo-button>
|
|
192
|
+
* </form>
|
|
193
|
+
* ```
|
|
194
|
+
*
|
|
195
|
+
* @example Using custom validation
|
|
196
|
+
* Use the `setCustomValidity()` method to make the text area 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.
|
|
197
|
+
*
|
|
198
|
+
* ```html
|
|
199
|
+
* <form action="about:blank" method="get" target="_blank" id="text-area__custom-validation">
|
|
200
|
+
* <sigvelo-text-area
|
|
201
|
+
* name="feedback"
|
|
202
|
+
* label="Feedback"
|
|
203
|
+
* description="This field will be invalid until custom validation is removed"
|
|
204
|
+
* ></sigvelo-text-area>
|
|
205
|
+
* <br>
|
|
206
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
207
|
+
* </form>
|
|
208
|
+
*
|
|
209
|
+
* <script type="module">
|
|
210
|
+
* import { allDefined } from '/dist/sigvelo.js';
|
|
211
|
+
*
|
|
212
|
+
* await allDefined();
|
|
213
|
+
*
|
|
214
|
+
* const form = document.getElementById('text-area__custom-validation');
|
|
215
|
+
* const textArea = form.querySelector('sigvelo-text-area');
|
|
216
|
+
*
|
|
217
|
+
* textArea.setCustomValidity('Not so fast, bubba!');
|
|
218
|
+
* <\/script>
|
|
219
|
+
* ```
|
|
220
|
+
*
|
|
221
|
+
* @example Styling validation
|
|
222
|
+
* You can style valid and invalid text area using the `:valid` and `:invalid` pseudo classes.
|
|
223
|
+
*
|
|
224
|
+
* ```html
|
|
225
|
+
* <form action="about:blank" method="get" target="_blank" class="text-area__validation-pseudo">
|
|
226
|
+
* <sigvelo-text-area
|
|
227
|
+
* name="feedback"
|
|
228
|
+
* label="Feedback"
|
|
229
|
+
* description="This field is required"
|
|
230
|
+
* required
|
|
231
|
+
* ></sigvelo-text-area>
|
|
232
|
+
* <br>
|
|
233
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
234
|
+
* <sigvelo-button type="reset">Reset</sigvelo-button>
|
|
235
|
+
* </form>
|
|
236
|
+
*
|
|
237
|
+
* <style>
|
|
238
|
+
* .text-area__validation-pseudo {
|
|
239
|
+
* sigvelo-text-area:valid {
|
|
240
|
+
* outline: solid 2px var(--sigvelo-color-success-border);
|
|
241
|
+
* outline-offset: .5rem;
|
|
242
|
+
* }
|
|
243
|
+
*
|
|
244
|
+
* sigvelo-text-area:invalid {
|
|
245
|
+
* outline: solid 2px var(--sigvelo-color-danger-border);
|
|
246
|
+
* outline-offset: .5rem;
|
|
247
|
+
* }
|
|
248
|
+
* }
|
|
249
|
+
* </style>
|
|
250
|
+
* ```
|
|
251
|
+
*
|
|
252
|
+
* 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.
|
|
253
|
+
*
|
|
254
|
+
* ```html
|
|
255
|
+
* <form action="about:blank" method="get" target="_blank" class="text-area__validation-custom">
|
|
256
|
+
* <sigvelo-text-area
|
|
257
|
+
* name="feedback"
|
|
258
|
+
* label="Feedback"
|
|
259
|
+
* description="This field is required"
|
|
260
|
+
* required
|
|
261
|
+
* ></sigvelo-text-area>
|
|
262
|
+
* <br>
|
|
263
|
+
* <sigvelo-button type="submit" color="primary">Submit</sigvelo-button>
|
|
264
|
+
* <sigvelo-button type="reset">Reset</sigvelo-button>
|
|
265
|
+
* </form>
|
|
266
|
+
*
|
|
267
|
+
* <style>
|
|
268
|
+
* .text-area__validation-custom {
|
|
269
|
+
* sigvelo-text-area:state(user-valid) {
|
|
270
|
+
* outline: solid 2px var(--sigvelo-color-success-border);
|
|
271
|
+
* outline-offset: .5rem;
|
|
272
|
+
* }
|
|
273
|
+
*
|
|
274
|
+
* sigvelo-text-area:state(user-invalid) {
|
|
275
|
+
* outline: solid 2px var(--sigvelo-color-danger-border);
|
|
276
|
+
* outline-offset: .5rem;
|
|
277
|
+
* }
|
|
278
|
+
* }
|
|
279
|
+
* </style>
|
|
280
|
+
* ```
|
|
281
|
+
*/
|
|
282
|
+
var SigveloTextArea = class extends SigveloFormControlElement {
|
|
283
|
+
constructor(..._args) {
|
|
284
|
+
super(..._args);
|
|
285
|
+
this.textAreaAutoSizer = document.createElement("textarea");
|
|
286
|
+
this.isInvalid = false;
|
|
287
|
+
this.hadUserInteraction = false;
|
|
288
|
+
this.wasSubmitted = false;
|
|
289
|
+
this.value = "";
|
|
290
|
+
this.disabled = false;
|
|
291
|
+
this.readonly = false;
|
|
292
|
+
this.resize = "vertical";
|
|
293
|
+
this.rows = 3;
|
|
294
|
+
this.variant = "normal";
|
|
295
|
+
this.size = "md";
|
|
296
|
+
this.required = false;
|
|
297
|
+
}
|
|
298
|
+
static {
|
|
299
|
+
this.formAssociated = true;
|
|
300
|
+
}
|
|
301
|
+
static {
|
|
302
|
+
this.observeSlots = true;
|
|
303
|
+
}
|
|
304
|
+
static {
|
|
305
|
+
this.styles = [
|
|
306
|
+
hostStyles,
|
|
307
|
+
formControlStyles,
|
|
308
|
+
text_area_styles_default
|
|
309
|
+
];
|
|
310
|
+
}
|
|
311
|
+
get focusableAnchor() {
|
|
312
|
+
return this.textBox;
|
|
313
|
+
}
|
|
314
|
+
connectedCallback() {
|
|
315
|
+
super.connectedCallback();
|
|
316
|
+
this.addEventListener("invalid", this.handleHostInvalid);
|
|
317
|
+
this.resizeObserver = new ResizeObserver(() => this.updateHeight());
|
|
318
|
+
this.updateComplete.then(() => {
|
|
319
|
+
this.updateHeight();
|
|
320
|
+
this.resizeObserver.observe(this.textBox);
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
disconnectedCallback() {
|
|
324
|
+
super.disconnectedCallback();
|
|
325
|
+
this.removeEventListener("invalid", this.handleHostInvalid);
|
|
326
|
+
if (this.textBox) this.resizeObserver.unobserve(this.textBox);
|
|
327
|
+
}
|
|
328
|
+
updated(changedProperties) {
|
|
329
|
+
this.updateValidity();
|
|
330
|
+
if (changedProperties.has("value")) {
|
|
331
|
+
this.customStates.set("blank", this.value === "");
|
|
332
|
+
this.internals.setFormValue(this.value);
|
|
333
|
+
}
|
|
334
|
+
if (changedProperties.has("disabled")) this.customStates.set("disabled", this.disabled);
|
|
335
|
+
if (changedProperties.has("value") || changedProperties.has("rows")) this.updateHeight();
|
|
336
|
+
if (this.hadUserInteraction || this.wasSubmitted) {
|
|
337
|
+
this.customStates.set("user-invalid", this.isInvalid);
|
|
338
|
+
this.customStates.set("user-valid", !this.isInvalid);
|
|
339
|
+
} else {
|
|
340
|
+
this.customStates.set("user-invalid", false);
|
|
341
|
+
this.customStates.set("user-valid", false);
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
/** @internal Called when a containing fieldset is disabled. */
|
|
345
|
+
formDisabledCallback(isDisabled) {
|
|
346
|
+
this.disabled = isDisabled;
|
|
347
|
+
}
|
|
348
|
+
/** @internal Called when the form is reset. */
|
|
349
|
+
formResetCallback() {
|
|
350
|
+
this.isInvalid = false;
|
|
351
|
+
this.hadUserInteraction = false;
|
|
352
|
+
this.wasSubmitted = false;
|
|
353
|
+
this.value = this.getAttribute("value") ?? "";
|
|
354
|
+
}
|
|
355
|
+
handleBlur() {
|
|
356
|
+
this.customStates.set("focused", false);
|
|
357
|
+
this.dispatchEvent(new SigveloBlurEvent());
|
|
358
|
+
}
|
|
359
|
+
handleChange() {
|
|
360
|
+
this.hadUserInteraction = true;
|
|
361
|
+
this.dispatchEvent(new SigveloChangeEvent());
|
|
362
|
+
this.dispatchEvent(new Event("change", {
|
|
363
|
+
bubbles: true,
|
|
364
|
+
composed: true
|
|
365
|
+
}));
|
|
366
|
+
}
|
|
367
|
+
handleFocus() {
|
|
368
|
+
this.customStates.set("focused", true);
|
|
369
|
+
this.dispatchEvent(new SigveloFocusEvent());
|
|
370
|
+
}
|
|
371
|
+
handleHostInvalid() {
|
|
372
|
+
this.wasSubmitted = true;
|
|
373
|
+
}
|
|
374
|
+
async handleInput() {
|
|
375
|
+
this.value = this.textBox.value;
|
|
376
|
+
await this.updateComplete;
|
|
377
|
+
this.dispatchEvent(new SigveloInputEvent());
|
|
378
|
+
}
|
|
379
|
+
/** Updates the height of the text area based on its content and settings. */
|
|
380
|
+
updateHeight() {
|
|
381
|
+
if (this.resize === "auto") {
|
|
382
|
+
this.textAreaAutoSizer.id = this.textBox.id;
|
|
383
|
+
this.textAreaAutoSizer.inert = true;
|
|
384
|
+
this.textAreaAutoSizer.value = this.value;
|
|
385
|
+
this.textAreaAutoSizer.rows = this.rows;
|
|
386
|
+
this.textAreaAutoSizer.style.position = "absolute";
|
|
387
|
+
this.textAreaAutoSizer.style.top = "0";
|
|
388
|
+
this.textAreaAutoSizer.style.left = "0";
|
|
389
|
+
this.textAreaAutoSizer.style.width = "100%";
|
|
390
|
+
this.textAreaAutoSizer.style.height = "auto";
|
|
391
|
+
this.textAreaAutoSizer.style.minHeight = "auto";
|
|
392
|
+
this.textAreaAutoSizer.style.pointerEvents = "none";
|
|
393
|
+
this.textAreaAutoSizer.style.opacity = "0";
|
|
394
|
+
this.textBox.insertAdjacentElement("afterend", this.textAreaAutoSizer);
|
|
395
|
+
const emptyAutoSizer = this.textAreaAutoSizer.cloneNode();
|
|
396
|
+
emptyAutoSizer.value = "";
|
|
397
|
+
emptyAutoSizer.rows = this.rows;
|
|
398
|
+
this.textBox.insertAdjacentElement("afterend", emptyAutoSizer);
|
|
399
|
+
const minHeight = emptyAutoSizer.scrollHeight;
|
|
400
|
+
emptyAutoSizer.remove();
|
|
401
|
+
const contentHeight = this.textAreaAutoSizer.scrollHeight;
|
|
402
|
+
this.textBox.style.height = `${Math.max(contentHeight, minHeight)}px`;
|
|
403
|
+
this.textAreaAutoSizer.remove();
|
|
404
|
+
this.textAreaAutoSizer.id = "";
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
/** Sets the form control's validity */
|
|
408
|
+
async updateValidity() {
|
|
409
|
+
await this.updateComplete;
|
|
410
|
+
const hasCustomValidity = this.getCustomValidity().length > 0;
|
|
411
|
+
const validationMessage = hasCustomValidity ? this.getCustomValidity() : this.textBox.validationMessage;
|
|
412
|
+
const flags = {
|
|
413
|
+
badInput: this.textBox.validity.badInput,
|
|
414
|
+
customError: hasCustomValidity,
|
|
415
|
+
patternMismatch: this.textBox.validity.patternMismatch,
|
|
416
|
+
rangeOverflow: this.textBox.validity.rangeOverflow,
|
|
417
|
+
rangeUnderflow: this.textBox.validity.rangeUnderflow,
|
|
418
|
+
stepMismatch: this.textBox.validity.stepMismatch,
|
|
419
|
+
tooLong: this.textBox.validity.tooLong,
|
|
420
|
+
tooShort: this.textBox.validity.tooShort,
|
|
421
|
+
typeMismatch: this.textBox.validity.typeMismatch,
|
|
422
|
+
valueMissing: this.textBox.validity.valueMissing
|
|
423
|
+
};
|
|
424
|
+
this.isInvalid = hasCustomValidity ? true : !this.textBox.validity.valid;
|
|
425
|
+
this.internals.setValidity(flags, validationMessage, this.focusableAnchor);
|
|
426
|
+
}
|
|
427
|
+
/** Sets focus to the text area. */
|
|
428
|
+
focus() {
|
|
429
|
+
this.textBox.focus();
|
|
430
|
+
}
|
|
431
|
+
/** Removes focus from the text area. */
|
|
432
|
+
blur() {
|
|
433
|
+
this.textBox.blur();
|
|
434
|
+
}
|
|
435
|
+
/** Selects all text in the text area. */
|
|
436
|
+
select() {
|
|
437
|
+
this.textBox.select();
|
|
438
|
+
}
|
|
439
|
+
/** Sets the start and end positions of the current text selection in the text area. */
|
|
440
|
+
setSelectionRange(start, end, direction = "none") {
|
|
441
|
+
this.textBox.setSelectionRange(start, end, direction);
|
|
442
|
+
}
|
|
443
|
+
/** Replaces a range of text in the text area with a new string. */
|
|
444
|
+
setRangeText(replacement, start, end, selectMode) {
|
|
445
|
+
this.textBox.setRangeText(replacement, start ?? this.textBox.selectionStart, end ?? this.textBox.selectionEnd, selectMode);
|
|
446
|
+
this.value = this.textBox.value;
|
|
447
|
+
}
|
|
448
|
+
render() {
|
|
449
|
+
const hasLabel = this.label || this.slotsWithContent.has("label");
|
|
450
|
+
const hasDescription = this.description || this.slotsWithContent.has("description");
|
|
451
|
+
return html`
|
|
452
|
+
<label id="label" part="label" for="text-box" class=${classMap({ vh: !hasLabel })}>
|
|
453
|
+
<slot name="label">${this.label}</slot>
|
|
454
|
+
</label>
|
|
455
|
+
|
|
456
|
+
<div id="description" part="description" class=${classMap({ vh: !hasDescription })}>
|
|
457
|
+
<slot name="description">${this.description}</slot>
|
|
458
|
+
</div>
|
|
459
|
+
|
|
460
|
+
<div
|
|
461
|
+
id="visual-box"
|
|
462
|
+
part="visual-box"
|
|
463
|
+
class=${classMap({
|
|
464
|
+
normal: this.variant === "normal",
|
|
465
|
+
filled: this.variant === "filled",
|
|
466
|
+
unstyled: this.variant === "unstyled",
|
|
467
|
+
xs: this.size === "xs",
|
|
468
|
+
sm: this.size === "sm",
|
|
469
|
+
md: this.size === "md",
|
|
470
|
+
lg: this.size === "lg",
|
|
471
|
+
xl: this.size === "xl",
|
|
472
|
+
"resize-vertical": this.resize === "vertical",
|
|
473
|
+
"resize-auto": this.resize === "auto",
|
|
474
|
+
"resize-none": this.resize === "none",
|
|
475
|
+
disabled: this.disabled
|
|
476
|
+
})}
|
|
477
|
+
>
|
|
478
|
+
<textarea
|
|
479
|
+
id="text-box"
|
|
480
|
+
part="text-box"
|
|
481
|
+
?autofocus=${this.autofocus}
|
|
482
|
+
?disabled=${this.disabled}
|
|
483
|
+
?readonly=${this.readonly}
|
|
484
|
+
?required=${this.required}
|
|
485
|
+
placeholder=${ifDefined(this.placeholder)}
|
|
486
|
+
minlength=${ifDefined(this.minLength)}
|
|
487
|
+
maxlength=${ifDefined(this.maxLength)}
|
|
488
|
+
.value=${live(this.value)}
|
|
489
|
+
rows=${this.rows}
|
|
490
|
+
autocapitalize=${ifDefined(this.autocapitalize)}
|
|
491
|
+
autocomplete=${ifDefined(this.autocomplete)}
|
|
492
|
+
autocorrect=${ifDefined(this.autocorrect)}
|
|
493
|
+
spellcheck=${ifDefined(this.spellcheck)}
|
|
494
|
+
enterkeyhint=${ifDefined(this.enterkeyhint)}
|
|
495
|
+
inputmode=${ifDefined(this.inputmode)}
|
|
496
|
+
aria-describedby="description"
|
|
497
|
+
aria-invalid=${this.isInvalid ? "true" : "false"}
|
|
498
|
+
@change=${this.handleChange}
|
|
499
|
+
@input=${this.handleInput}
|
|
500
|
+
@focus=${this.handleFocus}
|
|
501
|
+
@blur=${this.handleBlur}
|
|
502
|
+
></textarea>
|
|
503
|
+
</div>
|
|
504
|
+
`;
|
|
505
|
+
}
|
|
506
|
+
};
|
|
507
|
+
__decorate([query("textarea")], SigveloTextArea.prototype, "textBox", void 0);
|
|
508
|
+
__decorate([state()], SigveloTextArea.prototype, "isInvalid", void 0);
|
|
509
|
+
__decorate([state()], SigveloTextArea.prototype, "hadUserInteraction", void 0);
|
|
510
|
+
__decorate([state()], SigveloTextArea.prototype, "wasSubmitted", void 0);
|
|
511
|
+
__decorate([property()], SigveloTextArea.prototype, "label", void 0);
|
|
512
|
+
__decorate([property()], SigveloTextArea.prototype, "description", void 0);
|
|
513
|
+
__decorate([property({ reflect: true })], SigveloTextArea.prototype, "name", void 0);
|
|
514
|
+
__decorate([property()], SigveloTextArea.prototype, "value", void 0);
|
|
515
|
+
__decorate([property()], SigveloTextArea.prototype, "placeholder", void 0);
|
|
516
|
+
__decorate([property({
|
|
517
|
+
type: Boolean,
|
|
518
|
+
reflect: true
|
|
519
|
+
})], SigveloTextArea.prototype, "disabled", void 0);
|
|
520
|
+
__decorate([property({
|
|
521
|
+
type: Boolean,
|
|
522
|
+
reflect: true
|
|
523
|
+
})], SigveloTextArea.prototype, "readonly", void 0);
|
|
524
|
+
__decorate([property()], SigveloTextArea.prototype, "resize", void 0);
|
|
525
|
+
__decorate([property({ type: Number })], SigveloTextArea.prototype, "rows", void 0);
|
|
526
|
+
__decorate([property({ reflect: true })], SigveloTextArea.prototype, "variant", void 0);
|
|
527
|
+
__decorate([property({ reflect: true })], SigveloTextArea.prototype, "size", void 0);
|
|
528
|
+
__decorate([property()], SigveloTextArea.prototype, "form", void 0);
|
|
529
|
+
__decorate([property({
|
|
530
|
+
type: Boolean,
|
|
531
|
+
reflect: true
|
|
532
|
+
})], SigveloTextArea.prototype, "required", void 0);
|
|
533
|
+
__decorate([property({
|
|
534
|
+
attribute: "minlength",
|
|
535
|
+
type: Number
|
|
536
|
+
})], SigveloTextArea.prototype, "minLength", void 0);
|
|
537
|
+
__decorate([property({
|
|
538
|
+
attribute: "maxlength",
|
|
539
|
+
type: Number
|
|
540
|
+
})], SigveloTextArea.prototype, "maxLength", void 0);
|
|
541
|
+
__decorate([property()], SigveloTextArea.prototype, "autocapitalize", void 0);
|
|
542
|
+
__decorate([property()], SigveloTextArea.prototype, "autocomplete", void 0);
|
|
543
|
+
__decorate([property({ type: Boolean })], SigveloTextArea.prototype, "autocorrect", void 0);
|
|
544
|
+
__decorate([property({ type: Boolean })], SigveloTextArea.prototype, "autofocus", void 0);
|
|
545
|
+
__decorate([property()], SigveloTextArea.prototype, "enterkeyhint", void 0);
|
|
546
|
+
__decorate([property()], SigveloTextArea.prototype, "inputmode", void 0);
|
|
547
|
+
__decorate([property({
|
|
548
|
+
type: Boolean,
|
|
549
|
+
converter: {
|
|
550
|
+
fromAttribute: (value) => !(!value || value === "false"),
|
|
551
|
+
toAttribute: (value) => value ? "true" : "false"
|
|
552
|
+
}
|
|
553
|
+
})], SigveloTextArea.prototype, "spellcheck", void 0);
|
|
554
|
+
customElements.define("sigvelo-text-area", SigveloTextArea);
|
|
555
|
+
//#endregion
|
|
556
|
+
export { SigveloTextArea as t };
|