@mhmo91/schmancy 0.9.3 → 0.9.5
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/.claude-plugin/plugin.json +13 -0
- package/README.md +14 -4
- package/dist/.claude-plugin/plugin.json +13 -0
- package/dist/{area-CC8fUnra.js → area-CRoGqD_u.js} +2 -2
- package/dist/area-CRoGqD_u.js.map +1 -0
- package/dist/{area-wnWUAHEn.cjs → area-JPykB7A9.cjs} +1 -1
- package/dist/area-JPykB7A9.cjs.map +1 -0
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{autocomplete-B2Z3WK_7.cjs → autocomplete-5rVhbieU.cjs} +1 -1
- package/dist/{autocomplete-B2Z3WK_7.cjs.map → autocomplete-5rVhbieU.cjs.map} +1 -1
- package/dist/{autocomplete-CJ7YgtKN.js → autocomplete-BllPQwr8.js} +3 -3
- package/dist/{autocomplete-CJ7YgtKN.js.map → autocomplete-BllPQwr8.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-C9eU6NO-.js → boat-BDTQ-du9.js} +2 -2
- package/dist/{boat-C9eU6NO-.js.map → boat-BDTQ-du9.js.map} +1 -1
- package/dist/{boat-B57_4TzJ.cjs → boat-DYEAZ8Qj.cjs} +1 -1
- package/dist/{boat-B57_4TzJ.cjs.map → boat-DYEAZ8Qj.cjs.map} +1 -1
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/{busy-CGZXy0h-.js → busy-ChDAeaKF.js} +1 -1
- package/dist/{busy-CGZXy0h-.js.map → busy-ChDAeaKF.js.map} +1 -1
- package/dist/{busy--6oimtop.cjs → busy-Dj7Xn0Z0.cjs} +1 -1
- package/dist/{busy--6oimtop.cjs.map → busy-Dj7Xn0Z0.cjs.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/button.cjs +1 -1
- package/dist/button.js +2 -2
- package/dist/{card-BGJ0Hb1O.cjs → card-BvPWVEJX.cjs} +1 -1
- package/dist/{card-BGJ0Hb1O.cjs.map → card-BvPWVEJX.cjs.map} +1 -1
- package/dist/{card-C-ee-l5O.js → card-DZFPRPqs.js} +1 -1
- package/dist/{card-C-ee-l5O.js.map → card-DZFPRPqs.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/charts.cjs +1 -1
- package/dist/charts.js +2 -2
- package/dist/{checkbox-DuYaKoDZ.cjs → checkbox-BC_37rsG.cjs} +1 -1
- package/dist/{checkbox-DuYaKoDZ.cjs.map → checkbox-BC_37rsG.cjs.map} +1 -1
- package/dist/{checkbox-FRcorDrD.js → checkbox-GSSjqo6w.js} +1 -1
- package/dist/{checkbox-FRcorDrD.js.map → checkbox-GSSjqo6w.js.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-BpA0A-qr.cjs → chips-B19XS8Xc.cjs} +1 -1
- package/dist/{chips-BpA0A-qr.cjs.map → chips-B19XS8Xc.cjs.map} +1 -1
- package/dist/{chips-CyzNbKJD.js → chips-B9oAEfE_.js} +3 -3
- package/dist/{chips-CyzNbKJD.js.map → chips-B9oAEfE_.js.map} +1 -1
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/{code-highlight-C7O9ltXm.js → code-highlight-DCk5lJY-.js} +1 -1
- package/dist/{code-highlight-C7O9ltXm.js.map → code-highlight-DCk5lJY-.js.map} +1 -1
- package/dist/{code-highlight-DsBdSQBG.cjs → code-highlight-fSLrlgOb.cjs} +1 -1
- package/dist/{code-highlight-DsBdSQBG.cjs.map → code-highlight-fSLrlgOb.cjs.map} +1 -1
- package/dist/code-highlight.cjs +1 -1
- package/dist/code-highlight.js +1 -1
- package/dist/{components-CkMvOiTR.js → components-COsM6sJZ.js} +2 -2
- package/dist/{components-CkMvOiTR.js.map → components-COsM6sJZ.js.map} +1 -1
- package/dist/{components-dDI3xeIf.cjs → components-CyD6a7gQ.cjs} +1 -1
- package/dist/{components-dDI3xeIf.cjs.map → components-CyD6a7gQ.cjs.map} +1 -1
- package/dist/components.cjs +1 -1
- package/dist/components.js +1 -1
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +1 -1
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-BrN_Bs6_.js → date-range-Sfyco9-n.js} +3 -3
- package/dist/{date-range-BrN_Bs6_.js.map → date-range-Sfyco9-n.js.map} +1 -1
- package/dist/{date-range-70zhLUKE.cjs → date-range-ZAaQB22I.cjs} +1 -1
- package/dist/{date-range-70zhLUKE.cjs.map → date-range-ZAaQB22I.cjs.map} +1 -1
- package/dist/{date-range-inline-Cp294DxR.js → date-range-inline-Bl8qbiQF.js} +1 -1
- package/dist/{date-range-inline-Cp294DxR.js.map → date-range-inline-Bl8qbiQF.js.map} +1 -1
- package/dist/{date-range-inline-CPzD-tIv.cjs → date-range-inline-m7nLjOMI.cjs} +1 -1
- package/dist/{date-range-inline-CPzD-tIv.cjs.map → date-range-inline-m7nLjOMI.cjs.map} +1 -1
- package/dist/date-range-inline.cjs +1 -1
- package/dist/date-range-inline.js +1 -1
- package/dist/date-range.cjs +1 -1
- package/dist/date-range.js +1 -1
- package/dist/{delay-COcAkBqB.cjs → delay-7boauN6N.cjs} +1 -1
- package/dist/{delay-COcAkBqB.cjs.map → delay-7boauN6N.cjs.map} +1 -1
- package/dist/{delay-IV0Swce2.js → delay-CgX6m0HN.js} +3 -3
- package/dist/{delay-IV0Swce2.js.map → delay-CgX6m0HN.js.map} +1 -1
- package/dist/delay.cjs +1 -1
- package/dist/delay.js +1 -1
- package/dist/{details-DgWkPqmt.cjs → details-BHnk8l4q.cjs} +1 -1
- package/dist/{details-DgWkPqmt.cjs.map → details-BHnk8l4q.cjs.map} +1 -1
- package/dist/{details-CuKmr3Qw.js → details-BPkUg8Cq.js} +2 -2
- package/dist/{details-CuKmr3Qw.js.map → details-BPkUg8Cq.js.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/dialog.cjs +1 -1
- package/dist/dialog.js +2 -2
- package/dist/directives.cjs.map +1 -1
- package/dist/directives.js.map +1 -1
- package/dist/discovery.cjs.map +1 -1
- package/dist/discovery.js.map +1 -1
- package/dist/{divider-BWoUbfgZ.js → divider-CW9a7MMj.js} +2 -2
- package/dist/{divider-BWoUbfgZ.js.map → divider-CW9a7MMj.js.map} +1 -1
- package/dist/{divider-BghtrMbn.cjs → divider-_khrhrZo.cjs} +1 -1
- package/dist/{divider-BghtrMbn.cjs.map → divider-_khrhrZo.cjs.map} +1 -1
- package/dist/divider.cjs +1 -1
- package/dist/divider.js +1 -1
- package/dist/dropdown.cjs +1 -1
- package/dist/dropdown.js +2 -2
- package/dist/{expand-XyDE5SsO.cjs → expand-Cp7-PH8b.cjs} +1 -1
- package/dist/{expand-XyDE5SsO.cjs.map → expand-Cp7-PH8b.cjs.map} +1 -1
- package/dist/{expand-CJU9m4ga.js → expand-iQ7EOMP7.js} +3 -3
- package/dist/{expand-CJU9m4ga.js.map → expand-iQ7EOMP7.js.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/{extra-CsrRKKqE.cjs → extra-IKAiJJhv.cjs} +1 -1
- package/dist/{extra-CsrRKKqE.cjs.map → extra-IKAiJJhv.cjs.map} +1 -1
- package/dist/{extra-BxXFmW1w.js → extra-wEpvEFbK.js} +2 -2
- package/dist/{extra-BxXFmW1w.js.map → extra-wEpvEFbK.js.map} +1 -1
- package/dist/extra.cjs +1 -1
- package/dist/extra.js +1 -1
- package/dist/{float-BD86t_NU.js → float-BQ_urmMs.js} +2 -2
- package/dist/{float-BD86t_NU.js.map → float-BQ_urmMs.js.map} +1 -1
- package/dist/{float-DBv1FINW.cjs → float-D5rNC82i.cjs} +1 -1
- package/dist/{float-DBv1FINW.cjs.map → float-D5rNC82i.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-D0bIeDWT.cjs → form-BqN1AGFj.cjs} +1 -1
- package/dist/{form-D0bIeDWT.cjs.map → form-BqN1AGFj.cjs.map} +1 -1
- package/dist/{form-Cp5-I_ZV.js → form-CajC5HnO.js} +1 -1
- package/dist/{form-Cp5-I_ZV.js.map → form-CajC5HnO.js.map} +1 -1
- package/dist/form.cjs +1 -1
- package/dist/form.js +1 -1
- package/dist/{icons-D8w_20mO.cjs → icons-B57_93VV.cjs} +1 -1
- package/dist/{icons-D8w_20mO.cjs.map → icons-B57_93VV.cjs.map} +1 -1
- package/dist/{icons-BpU0_l92.js → icons-BDqiGXrO.js} +1 -1
- package/dist/{icons-BpU0_l92.js.map → icons-BDqiGXrO.js.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-BjwxA2Pg.cjs → iframe-DNHL3GIk.cjs} +1 -1
- package/dist/{iframe-BjwxA2Pg.cjs.map → iframe-DNHL3GIk.cjs.map} +1 -1
- package/dist/{iframe-tY1GY5g1.js → iframe-WnWPIrBG.js} +1 -1
- package/dist/{iframe-tY1GY5g1.js.map → iframe-WnWPIrBG.js.map} +1 -1
- package/dist/iframe.cjs +1 -1
- package/dist/iframe.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.js +33 -33
- package/dist/{input-BwxwognS.cjs → input-BiSrTcrR.cjs} +1 -1
- package/dist/{input-BwxwognS.cjs.map → input-BiSrTcrR.cjs.map} +1 -1
- package/dist/{input-BnfTpRN9.js → input-VaXHFrRn.js} +1 -1
- package/dist/{input-BnfTpRN9.js.map → input-VaXHFrRn.js.map} +1 -1
- package/dist/{input-chip-MjOwX5EY.cjs → input-chip-Dy-AiP55.cjs} +1 -1
- package/dist/{input-chip-MjOwX5EY.cjs.map → input-chip-Dy-AiP55.cjs.map} +1 -1
- package/dist/{input-chip-CkM2aYmO.js → input-chip-QejNcRnS.js} +1 -1
- package/dist/{input-chip-CkM2aYmO.js.map → input-chip-QejNcRnS.js.map} +1 -1
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +2 -2
- package/dist/{layout-CJSlZlFL.js → layout-CnsXeCAy.js} +2 -2
- package/dist/{layout-CJSlZlFL.js.map → layout-CnsXeCAy.js.map} +1 -1
- package/dist/{layout-BV0EeyUS.cjs → layout-DNYG3phx.cjs} +1 -1
- package/dist/{layout-BV0EeyUS.cjs.map → layout-DNYG3phx.cjs.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/{lightbox-groqGmJH.js → lightbox-BrI1Z31s.js} +2 -2
- package/dist/{lightbox-groqGmJH.js.map → lightbox-BrI1Z31s.js.map} +1 -1
- package/dist/{lightbox-CpNMZHZW.cjs → lightbox-CmACf0t5.cjs} +1 -1
- package/dist/{lightbox-CpNMZHZW.cjs.map → lightbox-CmACf0t5.cjs.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-DzkqT_r-.js → list-Cm-jjXxM.js} +2 -2
- package/dist/{list-DzkqT_r-.js.map → list-Cm-jjXxM.js.map} +1 -1
- package/dist/{list-CyHd0Zc2.cjs → list-swIL9VDv.cjs} +1 -1
- package/dist/{list-CyHd0Zc2.cjs.map → list-swIL9VDv.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{litElement.mixin-BG6_-nYX.cjs → litElement.mixin-3llHwB-8.cjs} +1 -1
- package/dist/{litElement.mixin-BG6_-nYX.cjs.map → litElement.mixin-3llHwB-8.cjs.map} +1 -1
- package/dist/{litElement.mixin-Dm-4L8zL.js → litElement.mixin-6jJYHCrZ.js} +1 -1
- package/dist/{litElement.mixin-Dm-4L8zL.js.map → litElement.mixin-6jJYHCrZ.js.map} +1 -1
- package/dist/{mailbox-BcqnXYVP.js → mailbox-BuvsVaAQ.js} +4 -4
- package/dist/{mailbox-BcqnXYVP.js.map → mailbox-BuvsVaAQ.js.map} +1 -1
- package/dist/{mailbox-C5eYTd7p.cjs → mailbox-D6LkQcN5.cjs} +1 -1
- package/dist/{mailbox-C5eYTd7p.cjs.map → mailbox-D6LkQcN5.cjs.map} +1 -1
- package/dist/mailbox.cjs +1 -1
- package/dist/mailbox.js +1 -1
- package/dist/{map-C0o1PgLE.js → map-CQiKAxC3.js} +1 -1
- package/dist/{map-C0o1PgLE.js.map → map-CQiKAxC3.js.map} +1 -1
- package/dist/{map-BncheFt5.cjs → map-D5NN4VET.cjs} +1 -1
- package/dist/{map-BncheFt5.cjs.map → map-D5NN4VET.cjs.map} +1 -1
- package/dist/map.cjs +1 -1
- package/dist/map.js +1 -1
- package/dist/{menu-uwqlQbLd.js → menu-C1x04YZw.js} +2 -2
- package/dist/{menu-uwqlQbLd.js.map → menu-C1x04YZw.js.map} +1 -1
- package/dist/{menu-yXzwJZFf.cjs → menu-CkgMO9K5.cjs} +1 -1
- package/dist/{menu-yXzwJZFf.cjs.map → menu-CkgMO9K5.cjs.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +3 -3
- package/dist/nav-drawer.cjs +1 -1
- package/dist/nav-drawer.js +1 -1
- package/dist/navigation-bar.cjs +1 -1
- package/dist/navigation-bar.js +1 -1
- package/dist/navigation-rail.cjs +1 -1
- package/dist/navigation-rail.js +2 -2
- package/dist/{notification-DzYT4deA.js → notification-BnBgxjF-.js} +3 -3
- package/dist/{notification-DzYT4deA.js.map → notification-BnBgxjF-.js.map} +1 -1
- package/dist/{notification-BjwTfLAl.cjs → notification-CZFEhWxc.cjs} +1 -1
- package/dist/{notification-BjwTfLAl.cjs.map → notification-CZFEhWxc.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-BJsD3u2D.cjs → option-BrxCVwSx.cjs} +1 -1
- package/dist/{option-BJsD3u2D.cjs.map → option-BrxCVwSx.cjs.map} +1 -1
- package/dist/{option-JFHxgiYl.js → option-DBO8xZwd.js} +1 -1
- package/dist/{option-JFHxgiYl.js.map → option-DBO8xZwd.js.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/page.cjs +1 -1
- package/dist/page.js +3 -3
- package/dist/{progress-BoRmyGAa.cjs → progress-Db2e4_Zd.cjs} +1 -1
- package/dist/{progress-BoRmyGAa.cjs.map → progress-Db2e4_Zd.cjs.map} +1 -1
- package/dist/{progress-BUh5WBqx.js → progress-DeiHxXo7.js} +2 -2
- package/dist/{progress-BUh5WBqx.js.map → progress-DeiHxXo7.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{provide-8MrDz_qX.js → provide-C1aQhxYo.js} +1 -1
- package/dist/{provide-8MrDz_qX.js.map → provide-C1aQhxYo.js.map} +1 -1
- package/dist/{provide-CDkxgjHb.cjs → provide-DHnhQtCH.cjs} +1 -1
- package/dist/{provide-CDkxgjHb.cjs.map → provide-DHnhQtCH.cjs.map} +1 -1
- package/dist/qr-scanner.cjs +1 -1
- package/dist/qr-scanner.js +2 -2
- package/dist/{radio-group-rhrvhB5X.cjs → radio-group-Cspwd-Vw.cjs} +1 -1
- package/dist/{radio-group-rhrvhB5X.cjs.map → radio-group-Cspwd-Vw.cjs.map} +1 -1
- package/dist/{radio-group-DbOWUPhi.js → radio-group-zSO0AkJf.js} +1 -1
- package/dist/{radio-group-DbOWUPhi.js.map → radio-group-zSO0AkJf.js.map} +1 -1
- package/dist/radio-group.cjs +1 -1
- package/dist/radio-group.js +1 -1
- package/dist/range.cjs +1 -1
- package/dist/range.js +1 -1
- package/dist/{scroll-BE9W9PF2.cjs → scroll-QMCmbbDv.cjs} +1 -1
- package/dist/{scroll-BE9W9PF2.cjs.map → scroll-QMCmbbDv.cjs.map} +1 -1
- package/dist/{scroll-qGks1R0k.js → scroll-cBDzye64.js} +1 -1
- package/dist/{scroll-qGks1R0k.js.map → scroll-cBDzye64.js.map} +1 -1
- package/dist/{select-DXU2kzg4.cjs → select-Ct37l3lg.cjs} +1 -1
- package/dist/{select-DXU2kzg4.cjs.map → select-Ct37l3lg.cjs.map} +1 -1
- package/dist/{select-D9sgBRjU.js → select-c6HbWvKP.js} +2 -2
- package/dist/{select-D9sgBRjU.js.map → select-c6HbWvKP.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/{sheet-CIxCCJ3H.js → sheet-BMXcUiIm.js} +4 -4
- package/dist/{sheet-CIxCCJ3H.js.map → sheet-BMXcUiIm.js.map} +1 -1
- package/dist/{sheet-CeX6BbNp.cjs → sheet-CQec-bCV.cjs} +1 -1
- package/dist/{sheet-CeX6BbNp.cjs.map → sheet-CQec-bCV.cjs.map} +1 -1
- package/dist/sheet.cjs +1 -1
- package/dist/sheet.js +2 -2
- package/dist/{sheet.service-CAB7weBc.js → sheet.service-BcPV3Du4.js} +1 -1
- package/dist/{sheet.service-CAB7weBc.js.map → sheet.service-BcPV3Du4.js.map} +1 -1
- package/dist/{sheet.service-DPAp7E3x.cjs → sheet.service-Dumvr1HT.cjs} +1 -1
- package/dist/{sheet.service-DPAp7E3x.cjs.map → sheet.service-Dumvr1HT.cjs.map} +1 -1
- package/dist/skills/INDEX.md +72 -0
- package/dist/skills/SKILL.md +120 -0
- package/dist/skills/area.md +141 -0
- package/{ai → dist/skills}/mailbox.md +1 -1
- package/dist/skills/mixins.md +99 -0
- package/dist/skills/schmancy/INDEX.md +72 -0
- package/dist/skills/schmancy/SKILL.md +120 -0
- package/dist/skills/schmancy/area.md +141 -0
- package/dist/{ai → skills/schmancy}/mailbox.md +1 -1
- package/dist/skills/schmancy/mixins.md +99 -0
- package/dist/skills/schmancy/store.md +126 -0
- package/dist/skills/store.md +126 -0
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -2
- package/dist/{src-CbO5kJ2O.js → src-BLngW2bl.js} +42 -42
- package/dist/{src-CbO5kJ2O.js.map → src-BLngW2bl.js.map} +1 -1
- package/dist/{src-SraDxEeg.cjs → src-BtQVyqMy.cjs} +1 -1
- package/dist/{src-SraDxEeg.cjs.map → src-BtQVyqMy.cjs.map} +1 -1
- package/dist/steps.cjs +1 -1
- package/dist/steps.js +3 -3
- package/dist/{surface-DuH0pm2v.cjs → surface-BjKZoJxK.cjs} +1 -1
- package/dist/{surface-DuH0pm2v.cjs.map → surface-BjKZoJxK.cjs.map} +1 -1
- package/dist/{surface-eN_Jy2MJ.js → surface-pK8hME5c.js} +3 -3
- package/dist/{surface-eN_Jy2MJ.js.map → surface-pK8hME5c.js.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/{surface.mixin-CIXgN6iw.cjs → surface.mixin-C5sDI1-_.cjs} +1 -1
- package/dist/{surface.mixin-CIXgN6iw.cjs.map → surface.mixin-C5sDI1-_.cjs.map} +1 -1
- package/dist/{surface.mixin-D9jv1sKG.js → surface.mixin-CBNRpJum.js} +1 -1
- package/dist/{surface.mixin-D9jv1sKG.js.map → surface.mixin-CBNRpJum.js.map} +1 -1
- package/dist/{table-Dg_tUGB_.js → table-BXIHX9h4.js} +2 -2
- package/dist/{table-Dg_tUGB_.js.map → table-BXIHX9h4.js.map} +1 -1
- package/dist/{table-C9rRQJEB.cjs → table-CiqgZzSd.cjs} +1 -1
- package/dist/{table-C9rRQJEB.cjs.map → table-CiqgZzSd.cjs.map} +1 -1
- package/dist/table.cjs +1 -1
- package/dist/table.js +1 -1
- package/dist/{tabs-soTL-x4G.cjs → tabs-CKa-W4qA.cjs} +1 -1
- package/dist/{tabs-soTL-x4G.cjs.map → tabs-CKa-W4qA.cjs.map} +1 -1
- package/dist/{tabs-BbFC9omR.js → tabs-nbV5eblZ.js} +2 -2
- package/dist/{tabs-BbFC9omR.js.map → tabs-nbV5eblZ.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/tailwind.mixin-BCJOOX1_.js +225 -0
- package/dist/tailwind.mixin-BCJOOX1_.js.map +1 -0
- package/dist/tailwind.mixin-BF1Huas7.cjs +2 -0
- package/dist/tailwind.mixin-BF1Huas7.cjs.map +1 -0
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-DaRUJ0ri.cjs → textarea-Cp1ZE60O.cjs} +1 -1
- package/dist/{textarea-DaRUJ0ri.cjs.map → textarea-Cp1ZE60O.cjs.map} +1 -1
- package/dist/{textarea-hChvHbNM.js → textarea-D7q8exMg.js} +1 -1
- package/dist/{textarea-hChvHbNM.js.map → textarea-D7q8exMg.js.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/{theme-ZYH2MqX9.cjs → theme-Da4SPq9X.cjs} +1 -1
- package/dist/{theme-ZYH2MqX9.cjs.map → theme-Da4SPq9X.cjs.map} +1 -1
- package/dist/{theme-B0M8Hlyo.js → theme-_VPV6Bxh.js} +3 -3
- package/dist/{theme-B0M8Hlyo.js.map → theme-_VPV6Bxh.js.map} +1 -1
- package/dist/{theme-button-BtlX_Zgd.js → theme-button--sX8A-m1.js} +1 -1
- package/dist/{theme-button-BtlX_Zgd.js.map → theme-button--sX8A-m1.js.map} +1 -1
- package/dist/{theme-button-Dvqg-rE_.cjs → theme-button-Ci8VQ7KW.cjs} +1 -1
- package/dist/{theme-button-Dvqg-rE_.cjs.map → theme-button-Ci8VQ7KW.cjs.map} +1 -1
- package/dist/theme-button.cjs +1 -1
- package/dist/theme-button.js +1 -1
- package/dist/theme.cjs +1 -1
- package/dist/theme.js +2 -2
- package/dist/tooltip.cjs +1 -1
- package/dist/tooltip.js +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +1 -1
- package/dist/{typewriter-Cf9f2bdx.cjs → typewriter-B2TnHPjw.cjs} +1 -1
- package/dist/{typewriter-Cf9f2bdx.cjs.map → typewriter-B2TnHPjw.cjs.map} +1 -1
- package/dist/{typewriter-CCel8Nta.js → typewriter-BrZNa8T-.js} +3 -3
- package/dist/{typewriter-CCel8Nta.js.map → typewriter-BrZNa8T-.js.map} +1 -1
- package/dist/typewriter.cjs +1 -1
- package/dist/typewriter.js +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/{window-CbgdwOZD.js → window-CM1ycigo.js} +2 -2
- package/dist/{window-CbgdwOZD.js.map → window-CM1ycigo.js.map} +1 -1
- package/dist/{window-B9_14c12.cjs → window-Uii13x_r.cjs} +1 -1
- package/dist/{window-B9_14c12.cjs.map → window-Uii13x_r.cjs.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/mixins/baseElement.ts +1 -1
- package/mixins/discovery.service.ts +1 -1
- package/package.json +3 -4
- package/skills/schmancy/INDEX.md +72 -0
- package/skills/schmancy/SKILL.md +120 -0
- package/skills/schmancy/animation.md +64 -0
- package/skills/schmancy/area.md +141 -0
- package/skills/schmancy/audio.md +69 -0
- package/skills/schmancy/autocomplete.md +53 -0
- package/skills/schmancy/avatar.md +47 -0
- package/skills/schmancy/badge.md +41 -0
- package/skills/schmancy/boat.md +47 -0
- package/skills/schmancy/busy.md +36 -0
- package/skills/schmancy/button.md +59 -0
- package/skills/schmancy/card.md +53 -0
- package/skills/schmancy/charts.md +93 -0
- package/skills/schmancy/checkbox.md +36 -0
- package/skills/schmancy/chips.md +87 -0
- package/skills/schmancy/code-highlight.md +47 -0
- package/skills/schmancy/connectivity.md +36 -0
- package/skills/schmancy/content-drawer.md +65 -0
- package/skills/schmancy/date-range-inline.md +44 -0
- package/skills/schmancy/date-range.md +50 -0
- package/skills/schmancy/delay.md +50 -0
- package/skills/schmancy/details.md +66 -0
- package/skills/schmancy/dialog.md +69 -0
- package/skills/schmancy/directives.md +298 -0
- package/skills/schmancy/discovery.md +67 -0
- package/skills/schmancy/divider.md +31 -0
- package/skills/schmancy/dropdown.md +47 -0
- package/skills/schmancy/expand.md +63 -0
- package/skills/schmancy/extra.md +59 -0
- package/skills/schmancy/float.md +14 -0
- package/skills/schmancy/form.md +49 -0
- package/skills/schmancy/icons.md +44 -0
- package/skills/schmancy/iframe.md +44 -0
- package/skills/schmancy/input.md +56 -0
- package/skills/schmancy/json.md +33 -0
- package/skills/schmancy/layout.md +63 -0
- package/skills/schmancy/lightbox.md +36 -0
- package/skills/schmancy/list.md +67 -0
- package/skills/schmancy/mailbox.md +102 -0
- package/skills/schmancy/map.md +55 -0
- package/skills/schmancy/menu.md +39 -0
- package/skills/schmancy/mixins.md +99 -0
- package/skills/schmancy/nav-drawer.md +52 -0
- package/skills/schmancy/navigation-bar.md +48 -0
- package/skills/schmancy/navigation-rail.md +62 -0
- package/skills/schmancy/notification.md +60 -0
- package/skills/schmancy/option.md +43 -0
- package/skills/schmancy/page.md +42 -0
- package/skills/schmancy/progress.md +30 -0
- package/skills/schmancy/qr-scanner.md +51 -0
- package/skills/schmancy/radio-group.md +50 -0
- package/skills/schmancy/range.md +47 -0
- package/skills/schmancy/rxjs-utils.md +60 -0
- package/skills/schmancy/select.md +49 -0
- package/skills/schmancy/sheet.md +76 -0
- package/skills/schmancy/slider.md +43 -0
- package/skills/schmancy/steps.md +53 -0
- package/skills/schmancy/store.md +126 -0
- package/skills/schmancy/surface.md +86 -0
- package/skills/schmancy/table.md +60 -0
- package/skills/schmancy/tabs.md +49 -0
- package/skills/schmancy/teleport.md +55 -0
- package/skills/schmancy/textarea.md +48 -0
- package/skills/schmancy/theme-button.md +26 -0
- package/skills/schmancy/theme.md +58 -0
- package/skills/schmancy/tooltip.md +38 -0
- package/skills/schmancy/tree.md +53 -0
- package/skills/schmancy/typewriter.md +46 -0
- package/skills/schmancy/typography.md +53 -0
- package/skills/schmancy/utils.md +95 -0
- package/skills/schmancy/window.md +67 -0
- package/src/area/area.service.ts +1 -1
- package/src/area/router.types.ts +1 -1
- package/src/directives/animate-text.ts +1 -1
- package/src/discovery/discovery.service.ts +1 -1
- package/src/input/input.ts +1 -1
- package/src/mailbox/README.md +7 -10
- package/src/mailbox/types.ts +0 -1
- package/types/mixins/discovery.service.d.ts +1 -1
- package/types/src/discovery/discovery.service.d.ts +1 -1
- package/types/src/mailbox/types.d.ts +0 -1
- package/ai/INDEX.md +0 -321
- package/ai/area.md +0 -215
- package/ai/mixins.md +0 -201
- package/ai/store.md +0 -192
- package/dist/ai/INDEX.md +0 -321
- package/dist/ai/area.md +0 -215
- package/dist/ai/mixins.md +0 -201
- package/dist/ai/store.md +0 -192
- package/dist/area-CC8fUnra.js.map +0 -1
- package/dist/area-wnWUAHEn.cjs.map +0 -1
- package/dist/tailwind.mixin-BIVhjNvD.js +0 -225
- package/dist/tailwind.mixin-BIVhjNvD.js.map +0 -1
- package/dist/tailwind.mixin-DSuEu-y3.cjs +0 -2
- package/dist/tailwind.mixin-DSuEu-y3.cjs.map +0 -1
- package/src/area/readme.md +0 -338
- package/src/area/router-guide.md +0 -360
- package/src/autocomplete/README.md +0 -485
- package/src/content-drawer/readme.md +0 -709
- package/src/icons/readme.md +0 -37
- package/src/list/readme.md +0 -62
- package/src/radio-group/readme.md +0 -315
- package/src/select/README.md +0 -405
- package/src/tabs/Readme.md +0 -397
- package/src/teleport/readme.md +0 -91
- package/src/tree/README.md +0 -59
- package/src/typewriter/IMPROVEMENTS.md +0 -174
- package/src/typewriter/QUICK_REFERENCE.md +0 -166
- package/src/typewriter/test-typewriter.html +0 -97
- /package/{ai → dist/skills}/animation.md +0 -0
- /package/{ai → dist/skills}/audio.md +0 -0
- /package/{ai → dist/skills}/autocomplete.md +0 -0
- /package/{ai → dist/skills}/avatar.md +0 -0
- /package/{ai → dist/skills}/badge.md +0 -0
- /package/{ai → dist/skills}/boat.md +0 -0
- /package/{ai → dist/skills}/busy.md +0 -0
- /package/{ai → dist/skills}/button.md +0 -0
- /package/{ai → dist/skills}/card.md +0 -0
- /package/{ai → dist/skills}/charts.md +0 -0
- /package/{ai → dist/skills}/checkbox.md +0 -0
- /package/{ai → dist/skills}/chips.md +0 -0
- /package/{ai → dist/skills}/code-highlight.md +0 -0
- /package/{ai → dist/skills}/connectivity.md +0 -0
- /package/{ai → dist/skills}/content-drawer.md +0 -0
- /package/{ai → dist/skills}/date-range-inline.md +0 -0
- /package/{ai → dist/skills}/date-range.md +0 -0
- /package/{ai → dist/skills}/delay.md +0 -0
- /package/{ai → dist/skills}/details.md +0 -0
- /package/{ai → dist/skills}/dialog.md +0 -0
- /package/{ai → dist/skills}/directives.md +0 -0
- /package/{ai → dist/skills}/discovery.md +0 -0
- /package/{ai → dist/skills}/divider.md +0 -0
- /package/{ai → dist/skills}/dropdown.md +0 -0
- /package/{ai → dist/skills}/expand.md +0 -0
- /package/{ai → dist/skills}/extra.md +0 -0
- /package/{ai → dist/skills}/float.md +0 -0
- /package/{ai → dist/skills}/form.md +0 -0
- /package/{ai → dist/skills}/icons.md +0 -0
- /package/{ai → dist/skills}/iframe.md +0 -0
- /package/{ai → dist/skills}/input.md +0 -0
- /package/{ai → dist/skills}/json.md +0 -0
- /package/{ai → dist/skills}/layout.md +0 -0
- /package/{ai → dist/skills}/lightbox.md +0 -0
- /package/{ai → dist/skills}/list.md +0 -0
- /package/{ai → dist/skills}/map.md +0 -0
- /package/{ai → dist/skills}/menu.md +0 -0
- /package/{ai → dist/skills}/nav-drawer.md +0 -0
- /package/{ai → dist/skills}/navigation-bar.md +0 -0
- /package/{ai → dist/skills}/navigation-rail.md +0 -0
- /package/{ai → dist/skills}/notification.md +0 -0
- /package/{ai → dist/skills}/option.md +0 -0
- /package/{ai → dist/skills}/page.md +0 -0
- /package/{ai → dist/skills}/progress.md +0 -0
- /package/{ai → dist/skills}/qr-scanner.md +0 -0
- /package/{ai → dist/skills}/radio-group.md +0 -0
- /package/{ai → dist/skills}/range.md +0 -0
- /package/{ai → dist/skills}/rxjs-utils.md +0 -0
- /package/dist/{ai → skills/schmancy}/animation.md +0 -0
- /package/dist/{ai → skills/schmancy}/audio.md +0 -0
- /package/dist/{ai → skills/schmancy}/autocomplete.md +0 -0
- /package/dist/{ai → skills/schmancy}/avatar.md +0 -0
- /package/dist/{ai → skills/schmancy}/badge.md +0 -0
- /package/dist/{ai → skills/schmancy}/boat.md +0 -0
- /package/dist/{ai → skills/schmancy}/busy.md +0 -0
- /package/dist/{ai → skills/schmancy}/button.md +0 -0
- /package/dist/{ai → skills/schmancy}/card.md +0 -0
- /package/dist/{ai → skills/schmancy}/charts.md +0 -0
- /package/dist/{ai → skills/schmancy}/checkbox.md +0 -0
- /package/dist/{ai → skills/schmancy}/chips.md +0 -0
- /package/dist/{ai → skills/schmancy}/code-highlight.md +0 -0
- /package/dist/{ai → skills/schmancy}/connectivity.md +0 -0
- /package/dist/{ai → skills/schmancy}/content-drawer.md +0 -0
- /package/dist/{ai → skills/schmancy}/date-range-inline.md +0 -0
- /package/dist/{ai → skills/schmancy}/date-range.md +0 -0
- /package/dist/{ai → skills/schmancy}/delay.md +0 -0
- /package/dist/{ai → skills/schmancy}/details.md +0 -0
- /package/dist/{ai → skills/schmancy}/dialog.md +0 -0
- /package/dist/{ai → skills/schmancy}/directives.md +0 -0
- /package/dist/{ai → skills/schmancy}/discovery.md +0 -0
- /package/dist/{ai → skills/schmancy}/divider.md +0 -0
- /package/dist/{ai → skills/schmancy}/dropdown.md +0 -0
- /package/dist/{ai → skills/schmancy}/expand.md +0 -0
- /package/dist/{ai → skills/schmancy}/extra.md +0 -0
- /package/dist/{ai → skills/schmancy}/float.md +0 -0
- /package/dist/{ai → skills/schmancy}/form.md +0 -0
- /package/dist/{ai → skills/schmancy}/icons.md +0 -0
- /package/dist/{ai → skills/schmancy}/iframe.md +0 -0
- /package/dist/{ai → skills/schmancy}/input.md +0 -0
- /package/dist/{ai → skills/schmancy}/json.md +0 -0
- /package/dist/{ai → skills/schmancy}/layout.md +0 -0
- /package/dist/{ai → skills/schmancy}/lightbox.md +0 -0
- /package/dist/{ai → skills/schmancy}/list.md +0 -0
- /package/dist/{ai → skills/schmancy}/map.md +0 -0
- /package/dist/{ai → skills/schmancy}/menu.md +0 -0
- /package/dist/{ai → skills/schmancy}/nav-drawer.md +0 -0
- /package/dist/{ai → skills/schmancy}/navigation-bar.md +0 -0
- /package/dist/{ai → skills/schmancy}/navigation-rail.md +0 -0
- /package/dist/{ai → skills/schmancy}/notification.md +0 -0
- /package/dist/{ai → skills/schmancy}/option.md +0 -0
- /package/dist/{ai → skills/schmancy}/page.md +0 -0
- /package/dist/{ai → skills/schmancy}/progress.md +0 -0
- /package/dist/{ai → skills/schmancy}/qr-scanner.md +0 -0
- /package/dist/{ai → skills/schmancy}/radio-group.md +0 -0
- /package/dist/{ai → skills/schmancy}/range.md +0 -0
- /package/dist/{ai → skills/schmancy}/rxjs-utils.md +0 -0
- /package/{ai → dist/skills/schmancy}/select.md +0 -0
- /package/{ai → dist/skills/schmancy}/sheet.md +0 -0
- /package/{ai → dist/skills/schmancy}/slider.md +0 -0
- /package/{ai → dist/skills/schmancy}/steps.md +0 -0
- /package/{ai → dist/skills/schmancy}/surface.md +0 -0
- /package/{ai → dist/skills/schmancy}/table.md +0 -0
- /package/{ai → dist/skills/schmancy}/tabs.md +0 -0
- /package/{ai → dist/skills/schmancy}/teleport.md +0 -0
- /package/{ai → dist/skills/schmancy}/textarea.md +0 -0
- /package/{ai → dist/skills/schmancy}/theme-button.md +0 -0
- /package/{ai → dist/skills/schmancy}/theme.md +0 -0
- /package/{ai → dist/skills/schmancy}/tooltip.md +0 -0
- /package/{ai → dist/skills/schmancy}/tree.md +0 -0
- /package/{ai → dist/skills/schmancy}/typewriter.md +0 -0
- /package/{ai → dist/skills/schmancy}/typography.md +0 -0
- /package/{ai → dist/skills/schmancy}/utils.md +0 -0
- /package/{ai → dist/skills/schmancy}/window.md +0 -0
- /package/dist/{ai → skills}/select.md +0 -0
- /package/dist/{ai → skills}/sheet.md +0 -0
- /package/dist/{ai → skills}/slider.md +0 -0
- /package/dist/{ai → skills}/steps.md +0 -0
- /package/dist/{ai → skills}/surface.md +0 -0
- /package/dist/{ai → skills}/table.md +0 -0
- /package/dist/{ai → skills}/tabs.md +0 -0
- /package/dist/{ai → skills}/teleport.md +0 -0
- /package/dist/{ai → skills}/textarea.md +0 -0
- /package/dist/{ai → skills}/theme-button.md +0 -0
- /package/dist/{ai → skills}/theme.md +0 -0
- /package/dist/{ai → skills}/tooltip.md +0 -0
- /package/dist/{ai → skills}/tree.md +0 -0
- /package/dist/{ai → skills}/typewriter.md +0 -0
- /package/dist/{ai → skills}/typography.md +0 -0
- /package/dist/{ai → skills}/utils.md +0 -0
- /package/dist/{ai → skills}/window.md +0 -0
package/src/select/README.md
DELETED
|
@@ -1,405 +0,0 @@
|
|
|
1
|
-
# Schmancy Select Component
|
|
2
|
-
|
|
3
|
-
A fully-featured, accessible select dropdown component with support for single and multi-select modes, form integration, and comprehensive validation strategies.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The `schmancy-select` component provides a customizable dropdown selection interface with:
|
|
8
|
-
- Single and multi-select modes
|
|
9
|
-
- Full form association with native HTML form support
|
|
10
|
-
- Comprehensive validation strategies
|
|
11
|
-
- Complete keyboard navigation and accessibility
|
|
12
|
-
- TypeScript support with proper typing
|
|
13
|
-
- Reactive state management
|
|
14
|
-
|
|
15
|
-
## Installation
|
|
16
|
-
|
|
17
|
-
```typescript
|
|
18
|
-
import '@schmancy/select/select'
|
|
19
|
-
// or
|
|
20
|
-
import { SchmancySelect } from '@schmancy/select/select'
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Basic Usage
|
|
24
|
-
|
|
25
|
-
### Single Select
|
|
26
|
-
|
|
27
|
-
```html
|
|
28
|
-
<schmancy-select
|
|
29
|
-
name="country"
|
|
30
|
-
label="Select Country"
|
|
31
|
-
placeholder="Choose a country"
|
|
32
|
-
required
|
|
33
|
-
>
|
|
34
|
-
<schmancy-option value="us">United States</schmancy-option>
|
|
35
|
-
<schmancy-option value="uk">United Kingdom</schmancy-option>
|
|
36
|
-
<schmancy-option value="ca">Canada</schmancy-option>
|
|
37
|
-
</schmancy-select>
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
```typescript
|
|
41
|
-
// Setting value programmatically
|
|
42
|
-
const select = document.querySelector('schmancy-select')
|
|
43
|
-
select.value = 'us'
|
|
44
|
-
|
|
45
|
-
// Getting value
|
|
46
|
-
console.log(select.value) // 'us'
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
## Multi-Select Usage
|
|
50
|
-
|
|
51
|
-
### Using the `.values` Property (Recommended for Arrays)
|
|
52
|
-
|
|
53
|
-
**New in latest version:** The `.values` property provides a cleaner API for working with arrays in multi-select mode.
|
|
54
|
-
|
|
55
|
-
```html
|
|
56
|
-
<schmancy-select
|
|
57
|
-
multi
|
|
58
|
-
name="skills"
|
|
59
|
-
label="Select Skills"
|
|
60
|
-
placeholder="Choose multiple skills"
|
|
61
|
-
>
|
|
62
|
-
<schmancy-option value="javascript">JavaScript</schmancy-option>
|
|
63
|
-
<schmancy-option value="typescript">TypeScript</schmancy-option>
|
|
64
|
-
<schmancy-option value="react">React</schmancy-option>
|
|
65
|
-
<schmancy-option value="vue">Vue</schmancy-option>
|
|
66
|
-
</schmancy-select>
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
// Setting values using the .values property (RECOMMENDED)
|
|
71
|
-
const select = document.querySelector('schmancy-select')
|
|
72
|
-
select.values = ['javascript', 'typescript', 'react']
|
|
73
|
-
|
|
74
|
-
// Getting values as an array
|
|
75
|
-
console.log(select.values) // ['javascript', 'typescript', 'react']
|
|
76
|
-
|
|
77
|
-
// The .value property still works but returns comma-separated string
|
|
78
|
-
console.log(select.value) // 'javascript,typescript,react'
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
### Multi-Select Value Handling
|
|
82
|
-
|
|
83
|
-
The component provides two ways to work with multi-select values:
|
|
84
|
-
|
|
85
|
-
1. **`.values` property (Recommended)**: Works directly with arrays
|
|
86
|
-
- Setter accepts: `string[]`
|
|
87
|
-
- Getter returns: `string[]`
|
|
88
|
-
- Cleaner API for array manipulation
|
|
89
|
-
|
|
90
|
-
2. **`.value` property**: Maintains backward compatibility
|
|
91
|
-
- Setter accepts: `string | string[]` (arrays are converted internally)
|
|
92
|
-
- Getter returns: comma-separated `string` for multi-select
|
|
93
|
-
- Useful for form submissions that expect string values
|
|
94
|
-
|
|
95
|
-
## Properties
|
|
96
|
-
|
|
97
|
-
| Property | Type | Default | Description |
|
|
98
|
-
|----------|------|---------|-------------|
|
|
99
|
-
| `name` | `string` | `undefined` | Form field name for submission |
|
|
100
|
-
| `value` | `string \| string[]` | `''` | Current selected value(s). Returns comma-separated string for multi-select |
|
|
101
|
-
| `values` | `string[]` | `[]` | Array of selected values for multi-select mode (preferred for arrays) |
|
|
102
|
-
| `multi` | `boolean` | `false` | Enable multi-select mode |
|
|
103
|
-
| `required` | `boolean` | `false` | Make field required for form validation |
|
|
104
|
-
| `disabled` | `boolean` | `false` | Disable the select component |
|
|
105
|
-
| `placeholder` | `string` | `''` | Placeholder text when no selection |
|
|
106
|
-
| `label` | `string` | `''` | Field label |
|
|
107
|
-
| `hint` | `string` | `''` | Helper text shown below the field |
|
|
108
|
-
| `validateOn` | `'always' \| 'touched' \| 'dirty' \| 'submitted'` | `'touched'` | When to show validation errors |
|
|
109
|
-
| `size` | `'sm' \| 'md' \| 'lg'` | `'md'` | Size variant of the select |
|
|
110
|
-
|
|
111
|
-
## Events
|
|
112
|
-
|
|
113
|
-
### SchmancySelectChangeEvent
|
|
114
|
-
|
|
115
|
-
The component dispatches a `change` event when the selection changes:
|
|
116
|
-
|
|
117
|
-
```typescript
|
|
118
|
-
interface SchmancySelectChangeEvent extends CustomEvent {
|
|
119
|
-
detail: {
|
|
120
|
-
value: string | string[] // string for single, array for multi
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
// Event handling
|
|
127
|
-
select.addEventListener('change', (e: SchmancySelectChangeEvent) => {
|
|
128
|
-
if (select.multi) {
|
|
129
|
-
console.log('Selected values:', e.detail.value) // string[]
|
|
130
|
-
} else {
|
|
131
|
-
console.log('Selected value:', e.detail.value) // string
|
|
132
|
-
}
|
|
133
|
-
})
|
|
134
|
-
```
|
|
135
|
-
|
|
136
|
-
## Methods
|
|
137
|
-
|
|
138
|
-
### checkValidity()
|
|
139
|
-
Checks if the current value satisfies validation constraints.
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
const isValid = select.checkValidity()
|
|
143
|
-
console.log(isValid) // true or false
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### reportValidity()
|
|
147
|
-
Checks validity and displays validation message if invalid. Opens the dropdown if validation fails to help users see available options.
|
|
148
|
-
|
|
149
|
-
```typescript
|
|
150
|
-
// Will show validation error and open dropdown if invalid
|
|
151
|
-
const isValid = select.reportValidity()
|
|
152
|
-
```
|
|
153
|
-
|
|
154
|
-
### setCustomValidity(message: string)
|
|
155
|
-
Sets a custom validation message.
|
|
156
|
-
|
|
157
|
-
```typescript
|
|
158
|
-
select.setCustomValidity('Please select a valid option from the list')
|
|
159
|
-
// Clear custom validity
|
|
160
|
-
select.setCustomValidity('')
|
|
161
|
-
```
|
|
162
|
-
|
|
163
|
-
### reset()
|
|
164
|
-
Resets the select to its initial value and clears validation states.
|
|
165
|
-
|
|
166
|
-
```typescript
|
|
167
|
-
select.reset()
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
## Form Integration
|
|
171
|
-
|
|
172
|
-
The component fully supports HTML form integration with automatic validation and submission handling.
|
|
173
|
-
|
|
174
|
-
```html
|
|
175
|
-
<form id="myForm">
|
|
176
|
-
<schmancy-select
|
|
177
|
-
name="department"
|
|
178
|
-
label="Department"
|
|
179
|
-
required
|
|
180
|
-
validateOn="dirty"
|
|
181
|
-
>
|
|
182
|
-
<schmancy-option value="engineering">Engineering</schmancy-option>
|
|
183
|
-
<schmancy-option value="design">Design</schmancy-option>
|
|
184
|
-
<schmancy-option value="marketing">Marketing</schmancy-option>
|
|
185
|
-
</schmancy-select>
|
|
186
|
-
|
|
187
|
-
<button type="submit">Submit</button>
|
|
188
|
-
</form>
|
|
189
|
-
```
|
|
190
|
-
|
|
191
|
-
```typescript
|
|
192
|
-
// Form submission handling
|
|
193
|
-
document.getElementById('myForm').addEventListener('submit', (e) => {
|
|
194
|
-
e.preventDefault()
|
|
195
|
-
const formData = new FormData(e.target)
|
|
196
|
-
console.log(formData.get('department')) // Selected value
|
|
197
|
-
})
|
|
198
|
-
|
|
199
|
-
// Programmatic form validation
|
|
200
|
-
const form = document.getElementById('myForm')
|
|
201
|
-
const isValid = form.checkValidity() // Validates all form fields including select
|
|
202
|
-
```
|
|
203
|
-
|
|
204
|
-
## Validation Strategies
|
|
205
|
-
|
|
206
|
-
The `validateOn` property controls when validation errors are displayed:
|
|
207
|
-
|
|
208
|
-
- **`'always'`**: Always show validation errors
|
|
209
|
-
- **`'touched'`**: Show errors after the user has interacted with the field (default)
|
|
210
|
-
- **`'dirty'`**: Show errors after the value has been changed
|
|
211
|
-
- **`'submitted'`**: Only show errors after form submission attempt
|
|
212
|
-
|
|
213
|
-
```html
|
|
214
|
-
<!-- Only show errors after user changes the value -->
|
|
215
|
-
<schmancy-select validateOn="dirty" required>
|
|
216
|
-
<!-- options -->
|
|
217
|
-
</schmancy-select>
|
|
218
|
-
|
|
219
|
-
<!-- Always show validation state -->
|
|
220
|
-
<schmancy-select validateOn="always" required>
|
|
221
|
-
<!-- options -->
|
|
222
|
-
</schmancy-select>
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
## Accessibility Features
|
|
226
|
-
|
|
227
|
-
The component implements comprehensive accessibility features:
|
|
228
|
-
|
|
229
|
-
### Keyboard Navigation
|
|
230
|
-
|
|
231
|
-
- **Tab**: Move focus to/from the select
|
|
232
|
-
- **Space/Enter**: Open dropdown or select focused option
|
|
233
|
-
- **Arrow Down**: Open dropdown or move to next option
|
|
234
|
-
- **Arrow Up**: Move to previous option
|
|
235
|
-
- **Home**: Move to first option
|
|
236
|
-
- **End**: Move to last option
|
|
237
|
-
- **Escape**: Close dropdown
|
|
238
|
-
- **Type-ahead**: Start typing to jump to matching options (coming soon)
|
|
239
|
-
|
|
240
|
-
### ARIA Attributes
|
|
241
|
-
|
|
242
|
-
The component automatically manages all necessary ARIA attributes:
|
|
243
|
-
- `role="combobox"` on the trigger
|
|
244
|
-
- `role="listbox"` on the dropdown
|
|
245
|
-
- `role="option"` on each option
|
|
246
|
-
- `aria-expanded` state
|
|
247
|
-
- `aria-selected` on options
|
|
248
|
-
- `aria-multiselectable` for multi-select mode
|
|
249
|
-
- `aria-activedescendant` for keyboard navigation
|
|
250
|
-
- `aria-required` for required fields
|
|
251
|
-
- `aria-disabled` for disabled state
|
|
252
|
-
|
|
253
|
-
### Screen Reader Support
|
|
254
|
-
|
|
255
|
-
Full screen reader compatibility with proper announcements for:
|
|
256
|
-
- Field labels and descriptions
|
|
257
|
-
- Selected values
|
|
258
|
-
- Available options
|
|
259
|
-
- Validation states and error messages
|
|
260
|
-
|
|
261
|
-
## TypeScript Usage
|
|
262
|
-
|
|
263
|
-
```typescript
|
|
264
|
-
import { SchmancySelect, SchmancySelectChangeEvent } from '@schmancy/select/select'
|
|
265
|
-
|
|
266
|
-
// Get typed reference
|
|
267
|
-
const select = document.querySelector<SchmancySelect>('schmancy-select')
|
|
268
|
-
|
|
269
|
-
// Type-safe value setting for multi-select
|
|
270
|
-
if (select) {
|
|
271
|
-
// Using .values for arrays (recommended)
|
|
272
|
-
select.values = ['option1', 'option2']
|
|
273
|
-
|
|
274
|
-
// Or using .value (backward compatible)
|
|
275
|
-
select.value = ['option1', 'option2'] // Internally converted to handle arrays
|
|
276
|
-
}
|
|
277
|
-
|
|
278
|
-
// Typed event handling
|
|
279
|
-
select?.addEventListener('change', (event: SchmancySelectChangeEvent) => {
|
|
280
|
-
if (select.multi) {
|
|
281
|
-
const selectedValues = event.detail.value as string[]
|
|
282
|
-
console.log('Multiple selected:', selectedValues)
|
|
283
|
-
} else {
|
|
284
|
-
const selectedValue = event.detail.value as string
|
|
285
|
-
console.log('Single selected:', selectedValue)
|
|
286
|
-
}
|
|
287
|
-
})
|
|
288
|
-
|
|
289
|
-
// Form validation with types
|
|
290
|
-
const isValid: boolean = select?.checkValidity() ?? false
|
|
291
|
-
const reported: boolean = select?.reportValidity() ?? false
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
## Advanced Examples
|
|
295
|
-
|
|
296
|
-
### Dynamic Options with Validation
|
|
297
|
-
|
|
298
|
-
```typescript
|
|
299
|
-
// Populate options dynamically
|
|
300
|
-
const select = document.querySelector<SchmancySelect>('schmancy-select')
|
|
301
|
-
const options = ['Option 1', 'Option 2', 'Option 3']
|
|
302
|
-
|
|
303
|
-
options.forEach(opt => {
|
|
304
|
-
const option = document.createElement('schmancy-option')
|
|
305
|
-
option.value = opt.toLowerCase().replace(' ', '-')
|
|
306
|
-
option.textContent = opt
|
|
307
|
-
select?.appendChild(option)
|
|
308
|
-
})
|
|
309
|
-
|
|
310
|
-
// Set initial values for multi-select
|
|
311
|
-
if (select?.multi) {
|
|
312
|
-
select.values = ['option-1', 'option-3']
|
|
313
|
-
}
|
|
314
|
-
|
|
315
|
-
// Custom validation
|
|
316
|
-
select?.addEventListener('change', (e: SchmancySelectChangeEvent) => {
|
|
317
|
-
if (select.multi) {
|
|
318
|
-
const values = e.detail.value as string[]
|
|
319
|
-
if (values.length < 2) {
|
|
320
|
-
select.setCustomValidity('Please select at least 2 options')
|
|
321
|
-
} else if (values.length > 5) {
|
|
322
|
-
select.setCustomValidity('Maximum 5 options allowed')
|
|
323
|
-
} else {
|
|
324
|
-
select.setCustomValidity('')
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
})
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Form with Multiple Selects
|
|
331
|
-
|
|
332
|
-
```html
|
|
333
|
-
<form id="complexForm">
|
|
334
|
-
<!-- Single select -->
|
|
335
|
-
<schmancy-select
|
|
336
|
-
name="priority"
|
|
337
|
-
label="Priority"
|
|
338
|
-
required
|
|
339
|
-
>
|
|
340
|
-
<schmancy-option value="low">Low</schmancy-option>
|
|
341
|
-
<schmancy-option value="medium">Medium</schmancy-option>
|
|
342
|
-
<schmancy-option value="high">High</schmancy-option>
|
|
343
|
-
</schmancy-select>
|
|
344
|
-
|
|
345
|
-
<!-- Multi-select with values -->
|
|
346
|
-
<schmancy-select
|
|
347
|
-
multi
|
|
348
|
-
name="assignees"
|
|
349
|
-
label="Assignees"
|
|
350
|
-
placeholder="Select team members"
|
|
351
|
-
validateOn="dirty"
|
|
352
|
-
>
|
|
353
|
-
<schmancy-option value="john">John Doe</schmancy-option>
|
|
354
|
-
<schmancy-option value="jane">Jane Smith</schmancy-option>
|
|
355
|
-
<schmancy-option value="bob">Bob Johnson</schmancy-option>
|
|
356
|
-
</schmancy-select>
|
|
357
|
-
|
|
358
|
-
<button type="submit">Create Task</button>
|
|
359
|
-
</form>
|
|
360
|
-
|
|
361
|
-
<script>
|
|
362
|
-
const form = document.getElementById('complexForm')
|
|
363
|
-
const prioritySelect = form.querySelector('[name="priority"]')
|
|
364
|
-
const assigneesSelect = form.querySelector('[name="assignees"]')
|
|
365
|
-
|
|
366
|
-
// Set default values
|
|
367
|
-
prioritySelect.value = 'medium'
|
|
368
|
-
assigneesSelect.values = ['john', 'jane']
|
|
369
|
-
|
|
370
|
-
form.addEventListener('submit', (e) => {
|
|
371
|
-
e.preventDefault()
|
|
372
|
-
|
|
373
|
-
// Validate all selects
|
|
374
|
-
if (!form.checkValidity()) {
|
|
375
|
-
// Show validation errors
|
|
376
|
-
prioritySelect.reportValidity()
|
|
377
|
-
assigneesSelect.reportValidity()
|
|
378
|
-
return
|
|
379
|
-
}
|
|
380
|
-
|
|
381
|
-
// Get form data
|
|
382
|
-
const formData = new FormData(form)
|
|
383
|
-
console.log({
|
|
384
|
-
priority: formData.get('priority'),
|
|
385
|
-
assignees: formData.get('assignees')?.split(',') // Convert back to array
|
|
386
|
-
})
|
|
387
|
-
})
|
|
388
|
-
</script>
|
|
389
|
-
```
|
|
390
|
-
|
|
391
|
-
## Browser Support
|
|
392
|
-
|
|
393
|
-
The component uses modern web standards and requires browsers that support:
|
|
394
|
-
- Custom Elements v1
|
|
395
|
-
- Shadow DOM v1
|
|
396
|
-
- ES2015+
|
|
397
|
-
- CSS Custom Properties
|
|
398
|
-
|
|
399
|
-
For older browsers, consider using appropriate polyfills.
|
|
400
|
-
|
|
401
|
-
## Related Components
|
|
402
|
-
|
|
403
|
-
- `schmancy-option` - Option component for use within schmancy-select
|
|
404
|
-
- `schmancy-input` - Text input component with similar validation features
|
|
405
|
-
- `schmancy-autocomplete` - Searchable select with autocomplete functionality
|