@mhmo91/schmancy 0.10.35 → 0.10.37
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/custom-elements.json +1165 -1109
- package/dist/SchmancyElement-BHfQg3Tj.cjs +2 -0
- package/dist/SchmancyElement-BHfQg3Tj.cjs.map +1 -0
- package/dist/SchmancyElement-CDT2q1lA.js +284 -0
- package/dist/SchmancyElement-CDT2q1lA.js.map +1 -0
- package/dist/agent/schmancy.agent.js +3488 -3290
- package/dist/agent/schmancy.agent.js.map +1 -1
- package/dist/agent/schmancy.manifest.json +335 -275
- package/dist/{area-DviXdbDx.js → area-KtULlxuA.js} +2 -2
- package/dist/{area-DviXdbDx.js.map → area-KtULlxuA.js.map} +1 -1
- package/dist/{area-CTSTgjlx.cjs → area-fdKhYB6T.cjs} +1 -1
- package/dist/{area-CTSTgjlx.cjs.map → area-fdKhYB6T.cjs.map} +1 -1
- package/dist/area.cjs +1 -1
- package/dist/area.js +1 -1
- package/dist/{audio-Q9oB_cQR.cjs → audio-CUMAv9D_.cjs} +1 -1
- package/dist/{audio-Q9oB_cQR.cjs.map → audio-CUMAv9D_.cjs.map} +1 -1
- package/dist/{audio-DFYoaw0M.js → audio-zIJVTo_V.js} +1 -1
- package/dist/{audio-DFYoaw0M.js.map → audio-zIJVTo_V.js.map} +1 -1
- package/dist/audio.cjs +1 -1
- package/dist/audio.js +2 -2
- package/dist/{autocomplete-DmLXJr7C.cjs → autocomplete-DEZk6wBD.cjs} +1 -1
- package/dist/{autocomplete-DmLXJr7C.cjs.map → autocomplete-DEZk6wBD.cjs.map} +1 -1
- package/dist/{autocomplete-BDvuma6D.js → autocomplete-DIScyo8Q.js} +3 -3
- package/dist/{autocomplete-BDvuma6D.js.map → autocomplete-DIScyo8Q.js.map} +1 -1
- package/dist/autocomplete.cjs +1 -1
- package/dist/autocomplete.js +1 -1
- package/dist/avatar.cjs +1 -1
- package/dist/avatar.js +3 -3
- package/dist/badge.cjs +1 -1
- package/dist/badge.js +1 -1
- package/dist/{boat-lr7MPZ7H.js → boat-BHPqSqJd.js} +67 -83
- package/dist/boat-BHPqSqJd.js.map +1 -0
- package/dist/boat-OBZ77exO.cjs +34 -0
- package/dist/boat-OBZ77exO.cjs.map +1 -0
- package/dist/boat.cjs +1 -1
- package/dist/boat.js +1 -1
- package/dist/breadcrumb.cjs +1 -1
- package/dist/breadcrumb.js +2 -2
- package/dist/{busy-CgzZbGfx.cjs → busy-BJNsKSCM.cjs} +1 -1
- package/dist/{busy-CgzZbGfx.cjs.map → busy-BJNsKSCM.cjs.map} +1 -1
- package/dist/{busy-DgQ4ux5N.js → busy-Dut78y4L.js} +2 -2
- package/dist/{busy-DgQ4ux5N.js.map → busy-Dut78y4L.js.map} +1 -1
- package/dist/busy.cjs +1 -1
- package/dist/busy.js +1 -1
- package/dist/{button-DFvR1iXX.cjs → button-DzlHLjWO.cjs} +1 -1
- package/dist/{button-DFvR1iXX.cjs.map → button-DzlHLjWO.cjs.map} +1 -1
- package/dist/{button-qbN1muQ0.js → button-kcpPQavY.js} +2 -2
- package/dist/{button-qbN1muQ0.js.map → button-kcpPQavY.js.map} +1 -1
- package/dist/button.cjs +4 -4
- package/dist/button.cjs.map +1 -1
- package/dist/button.js +16 -22
- package/dist/button.js.map +1 -1
- package/dist/{card-D_GlwZ5q.cjs → card-BLxPLqdQ.cjs} +1 -1
- package/dist/{card-D_GlwZ5q.cjs.map → card-BLxPLqdQ.cjs.map} +1 -1
- package/dist/{card-DAbr-7Vy.js → card-DxSKxCid.js} +2 -2
- package/dist/{card-DAbr-7Vy.js.map → card-DxSKxCid.js.map} +1 -1
- package/dist/card.cjs +1 -1
- package/dist/card.js +1 -1
- package/dist/{checkbox-BNORaxMF.js → checkbox-B1wiM3Dv.js} +2 -2
- package/dist/{checkbox-BNORaxMF.js.map → checkbox-B1wiM3Dv.js.map} +1 -1
- package/dist/{checkbox-BUY_uc_r.cjs → checkbox-BCLkhp5G.cjs} +1 -1
- package/dist/{checkbox-BUY_uc_r.cjs.map → checkbox-BCLkhp5G.cjs.map} +1 -1
- package/dist/checkbox.cjs +1 -1
- package/dist/checkbox.js +1 -1
- package/dist/{chips-CXZ4dJCK.cjs → chips-C9dS1WKn.cjs} +44 -33
- package/dist/chips-C9dS1WKn.cjs.map +1 -0
- package/dist/{chips-Dg6Lk6BT.js → chips-vWmwqQed.js} +145 -122
- package/dist/chips-vWmwqQed.js.map +1 -0
- package/dist/chips.cjs +1 -1
- package/dist/chips.js +2 -2
- package/dist/connectivity.cjs +1 -1
- package/dist/connectivity.js +3 -3
- package/dist/content-drawer.cjs +1 -1
- package/dist/content-drawer.js +1 -1
- package/dist/{date-range-C-_be3_E.cjs → date-range-BV6HuvLw.cjs} +25 -19
- package/dist/date-range-BV6HuvLw.cjs.map +1 -0
- package/dist/{date-range-BU6WX7d5.js → date-range-D3ge1b4c.js} +129 -137
- package/dist/date-range-D3ge1b4c.js.map +1 -0
- package/dist/{date-range-inline-DJtUmHKF.cjs → date-range-inline-DpYgdLRv.cjs} +1 -1
- package/dist/{date-range-inline-DJtUmHKF.cjs.map → date-range-inline-DpYgdLRv.cjs.map} +1 -1
- package/dist/{date-range-inline-7o7xtVIu.js → date-range-inline-DuWQaWps.js} +2 -2
- package/dist/{date-range-inline-7o7xtVIu.js.map → date-range-inline-DuWQaWps.js.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.cjs +1 -1
- package/dist/delay.js +2 -2
- package/dist/{details-EfbDPVEo.js → details-C-GZaq3j.js} +2 -2
- package/dist/{details-EfbDPVEo.js.map → details-C-GZaq3j.js.map} +1 -1
- package/dist/{details-Bs0MyyvF.cjs → details-Dp5rLIWk.cjs} +1 -1
- package/dist/{details-Bs0MyyvF.cjs.map → details-Dp5rLIWk.cjs.map} +1 -1
- package/dist/details.cjs +1 -1
- package/dist/details.js +1 -1
- package/dist/{directives-fLwDj6b0.cjs → directives-D_l1E5H6.cjs} +3 -3
- package/dist/directives-D_l1E5H6.cjs.map +1 -0
- package/dist/{directives-zi1Mm2er.js → directives-DyS51FUh.js} +37 -21
- package/dist/directives-DyS51FUh.js.map +1 -0
- package/dist/directives.cjs +1 -1
- package/dist/directives.js +2 -2
- package/dist/{divider-CdIsWZrM.cjs → divider-CBnAmHMZ.cjs} +1 -1
- package/dist/{divider-CdIsWZrM.cjs.map → divider-CBnAmHMZ.cjs.map} +1 -1
- package/dist/{divider-CEPfrIwe.js → divider-nQffE0AD.js} +2 -2
- package/dist/{divider-CEPfrIwe.js.map → divider-nQffE0AD.js.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-g1vqqUp1.js → expand-DvTb-UPR.js} +3 -3
- package/dist/{expand-g1vqqUp1.js.map → expand-DvTb-UPR.js.map} +1 -1
- package/dist/{expand--at1k3qo.cjs → expand-mlP_3XWz.cjs} +1 -1
- package/dist/{expand--at1k3qo.cjs.map → expand-mlP_3XWz.cjs.map} +1 -1
- package/dist/expand.cjs +1 -1
- package/dist/expand.js +1 -1
- package/dist/fab.cjs +77 -0
- package/dist/fab.cjs.map +1 -0
- package/dist/fab.js +151 -0
- package/dist/fab.js.map +1 -0
- package/dist/{float-DxVzgI9o.js → float-C-Ko0Le3.js} +2 -2
- package/dist/{float-DxVzgI9o.js.map → float-C-Ko0Le3.js.map} +1 -1
- package/dist/{float-P9HukAm-.cjs → float-C17xgMT1.cjs} +1 -1
- package/dist/{float-P9HukAm-.cjs.map → float-C17xgMT1.cjs.map} +1 -1
- package/dist/float.cjs +1 -1
- package/dist/float.js +1 -1
- package/dist/{form-ByYhXe1p.cjs → form-CwPHcQYB.cjs} +1 -1
- package/dist/{form-ByYhXe1p.cjs.map → form-CwPHcQYB.cjs.map} +1 -1
- package/dist/{form-CqLaozHp.js → form-DA0hUu2h.js} +3 -3
- package/dist/{form-CqLaozHp.js.map → form-DA0hUu2h.js.map} +1 -1
- package/dist/form.cjs +6 -6
- package/dist/form.cjs.map +1 -1
- package/dist/form.js +25 -23
- package/dist/form.js.map +1 -1
- package/dist/handover/agent-runtime-followups.md +1 -1
- package/dist/handover/agent-runtime-v1.md +3 -3
- package/dist/{icons-CkphcMp6.js → icons-C6UfxmHZ.js} +2 -2
- package/dist/{icons-CkphcMp6.js.map → icons-C6UfxmHZ.js.map} +1 -1
- package/dist/{icons-DYtiRU5V.cjs → icons-CW3-oMSb.cjs} +1 -1
- package/dist/{icons-DYtiRU5V.cjs.map → icons-CW3-oMSb.cjs.map} +1 -1
- package/dist/icons.cjs +1 -1
- package/dist/icons.js +1 -1
- package/dist/{iframe-CjqJksl8.js → iframe-BTjZfYyh.js} +2 -2
- package/dist/{iframe-CjqJksl8.js.map → iframe-BTjZfYyh.js.map} +1 -1
- package/dist/{iframe-C3trkP8q.cjs → iframe-wuYT2xFz.cjs} +1 -1
- package/dist/{iframe-C3trkP8q.cjs.map → iframe-wuYT2xFz.cjs.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 +57 -56
- package/dist/{input-CG51zDVh.js → input-B_4g2ulO.js} +2 -2
- package/dist/{input-CG51zDVh.js.map → input-B_4g2ulO.js.map} +1 -1
- package/dist/{input-DuavpwNL.cjs → input-BrDiIT60.cjs} +1 -1
- package/dist/{input-DuavpwNL.cjs.map → input-BrDiIT60.cjs.map} +1 -1
- package/dist/{input-chip-57tgNXKT.cjs → input-chip-B-XWh4aE.cjs} +1 -1
- package/dist/input-chip-B-XWh4aE.cjs.map +1 -0
- package/dist/{input-chip-C6Lq1927.js → input-chip-BlWhOruv.js} +2 -2
- package/dist/input-chip-BlWhOruv.js.map +1 -0
- package/dist/input.cjs +1 -1
- package/dist/input.js +1 -1
- package/dist/json.cjs +1 -1
- package/dist/json.js +3 -3
- package/dist/kbd.cjs +1 -1
- package/dist/kbd.js +2 -2
- package/dist/{layout-6ipbiWTl.cjs → layout-BhyIcEVu.cjs} +1 -1
- package/dist/{layout-6ipbiWTl.cjs.map → layout-BhyIcEVu.cjs.map} +1 -1
- package/dist/{layout-D4IOwx7p.js → layout-Dxit9enO.js} +1 -1
- package/dist/{layout-D4IOwx7p.js.map → layout-Dxit9enO.js.map} +1 -1
- package/dist/layout.cjs +1 -1
- package/dist/layout.js +2 -2
- package/dist/{lightbox-H8pVWGMX.cjs → lightbox-CVBogswK.cjs} +1 -1
- package/dist/{lightbox-H8pVWGMX.cjs.map → lightbox-CVBogswK.cjs.map} +1 -1
- package/dist/{lightbox-CsyO2XSr.js → lightbox-D85XAAuC.js} +2 -2
- package/dist/{lightbox-CsyO2XSr.js.map → lightbox-D85XAAuC.js.map} +1 -1
- package/dist/lightbox.cjs +1 -1
- package/dist/lightbox.js +1 -1
- package/dist/{list-BAwH0pQW.js → list-DOF_yVn5.js} +2 -2
- package/dist/{list-BAwH0pQW.js.map → list-DOF_yVn5.js.map} +1 -1
- package/dist/{list-Bs9m8kw7.cjs → list-nVjLskgx.cjs} +1 -1
- package/dist/{list-Bs9m8kw7.cjs.map → list-nVjLskgx.cjs.map} +1 -1
- package/dist/list.cjs +1 -1
- package/dist/list.js +1 -1
- package/dist/{menu-BMcGzj1h.cjs → menu-DqmNjLgY.cjs} +1 -1
- package/dist/{menu-BMcGzj1h.cjs.map → menu-DqmNjLgY.cjs.map} +1 -1
- package/dist/{menu-tQVARVaC.js → menu-QrAK5Uu9.js} +3 -3
- package/dist/{menu-tQVARVaC.js.map → menu-QrAK5Uu9.js.map} +1 -1
- package/dist/menu.cjs +1 -1
- package/dist/menu.js +1 -1
- package/dist/{mixins-Bp0wIHg2.js → mixins-De1zjyhy.js} +1 -1
- package/dist/{mixins-Bp0wIHg2.js.map → mixins-De1zjyhy.js.map} +1 -1
- package/dist/{mixins-CGXSzZc7.cjs → mixins-DxHpyMHA.cjs} +1 -1
- package/dist/{mixins-CGXSzZc7.cjs.map → mixins-DxHpyMHA.cjs.map} +1 -1
- package/dist/mixins.cjs +1 -1
- package/dist/mixins.js +2 -2
- 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-D1tX2nx5.js → notification-BtAK7NK8.js} +4 -4
- package/dist/{notification-D1tX2nx5.js.map → notification-BtAK7NK8.js.map} +1 -1
- package/dist/{notification-Bz00zdpV.cjs → notification-DYzbUb5C.cjs} +1 -1
- package/dist/{notification-Bz00zdpV.cjs.map → notification-DYzbUb5C.cjs.map} +1 -1
- package/dist/notification.cjs +1 -1
- package/dist/notification.js +1 -1
- package/dist/{option-BpGV8Apj.js → option-DHwA0miA.js} +2 -2
- package/dist/{option-BpGV8Apj.js.map → option-DHwA0miA.js.map} +1 -1
- package/dist/{option-BnybLEDO.cjs → option-DnSPa8ro.cjs} +1 -1
- package/dist/{option-BnybLEDO.cjs.map → option-DnSPa8ro.cjs.map} +1 -1
- package/dist/option.cjs +1 -1
- package/dist/option.js +1 -1
- package/dist/{overlay-UQR2Dy3u.cjs → overlay-BVkqZmoS.cjs} +5 -5
- package/dist/overlay-BVkqZmoS.cjs.map +1 -0
- package/dist/{overlay-BpNhd74N.js → overlay-Del1sBEB.js} +108 -108
- package/dist/overlay-Del1sBEB.js.map +1 -0
- package/dist/overlay.cjs +1 -1
- package/dist/{overlay.confirm-body-CVDtVk5X.cjs → overlay.confirm-body-BV9umTAl.cjs} +1 -1
- package/dist/{overlay.confirm-body-CVDtVk5X.cjs.map → overlay.confirm-body-BV9umTAl.cjs.map} +1 -1
- package/dist/{overlay.confirm-body-BHcXu5Wk.js → overlay.confirm-body-DSONXUzl.js} +6 -6
- package/dist/{overlay.confirm-body-BHcXu5Wk.js.map → overlay.confirm-body-DSONXUzl.js.map} +1 -1
- package/dist/overlay.js +3 -3
- package/dist/{overlay.service-DTE6NwIM.js → overlay.service-BTp5Oq7f.js} +2 -2
- package/dist/{overlay.service-DTE6NwIM.js.map → overlay.service-BTp5Oq7f.js.map} +1 -1
- package/dist/{overlay.service-C8RsQzgM.cjs → overlay.service-XLlrsSdA.cjs} +1 -1
- package/dist/{overlay.service-C8RsQzgM.cjs.map → overlay.service-XLlrsSdA.cjs.map} +1 -1
- package/dist/{progress-gbIALDRs.cjs → progress-DUbTL9g9.cjs} +1 -1
- package/dist/{progress-gbIALDRs.cjs.map → progress-DUbTL9g9.cjs.map} +1 -1
- package/dist/{progress-CAKsxp29.js → progress-DYA83CFU.js} +2 -2
- package/dist/{progress-CAKsxp29.js.map → progress-DYA83CFU.js.map} +1 -1
- package/dist/progress.cjs +1 -1
- package/dist/progress.js +1 -1
- package/dist/{radio-group-CfJ5DtI4.cjs → radio-group-B-ORNtvR.cjs} +1 -1
- package/dist/{radio-group-CfJ5DtI4.cjs.map → radio-group-B-ORNtvR.cjs.map} +1 -1
- package/dist/{radio-group-otyvZvUk.js → radio-group-DxX0iJBo.js} +2 -2
- package/dist/{radio-group-otyvZvUk.js.map → radio-group-DxX0iJBo.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 +2 -2
- package/dist/{select-81jniVTs.cjs → select-B9uj_u-s.cjs} +1 -1
- package/dist/{select-81jniVTs.cjs.map → select-B9uj_u-s.cjs.map} +1 -1
- package/dist/{select-9vXx1fhr.js → select-C7gkA-ab.js} +3 -3
- package/dist/{select-9vXx1fhr.js.map → select-C7gkA-ab.js.map} +1 -1
- package/dist/select.cjs +1 -1
- package/dist/select.js +1 -1
- package/dist/skeleton.cjs +1 -1
- package/dist/skeleton.js +2 -2
- package/dist/skills/INDEX.md +1 -1
- package/dist/skills/SKILL.md +20 -18
- package/dist/skills/boat.md +21 -15
- package/dist/skills/fab.md +75 -0
- package/dist/skills/schmancy/INDEX.md +1 -1
- package/dist/skills/schmancy/SKILL.md +20 -18
- package/dist/skills/schmancy/boat.md +21 -15
- package/dist/skills/schmancy/fab.md +75 -0
- package/dist/skills/schmancy/steps.md +68 -34
- package/dist/skills/schmancy/theme.md +1 -1
- package/dist/skills/steps.md +68 -34
- package/dist/skills/theme.md +1 -1
- package/dist/slider.cjs +1 -1
- package/dist/slider.js +2 -2
- package/dist/{sound.service-CmIw63aM.cjs → sound.service-C7FDY_yD.cjs} +1 -1
- package/dist/{sound.service-CmIw63aM.cjs.map → sound.service-C7FDY_yD.cjs.map} +1 -1
- package/dist/{sound.service-D3ZSq1Kj.js → sound.service-O0232os6.js} +1 -1
- package/dist/{sound.service-D3ZSq1Kj.js.map → sound.service-O0232os6.js.map} +1 -1
- package/dist/{splash-screen-C5KAWXvA.cjs → splash-screen-DIS4odDr.cjs} +1 -1
- package/dist/{splash-screen-C5KAWXvA.cjs.map → splash-screen-DIS4odDr.cjs.map} +1 -1
- package/dist/{splash-screen-BOjrmGLk.js → splash-screen-jfE47xl0.js} +2 -2
- package/dist/{splash-screen-BOjrmGLk.js.map → splash-screen-jfE47xl0.js.map} +1 -1
- package/dist/splash-screen.cjs +1 -1
- package/dist/splash-screen.js +1 -1
- package/dist/{src-C5g3p1J5.js → src-BP3h-9d9.js} +36 -35
- package/dist/{src-C5g3p1J5.js.map → src-BP3h-9d9.js.map} +1 -1
- package/dist/{src-qzUpLbje.cjs → src-Um_pzb-U.cjs} +1 -1
- package/dist/{src-qzUpLbje.cjs.map → src-Um_pzb-U.cjs.map} +1 -1
- package/dist/{state-Cex3rmx2.cjs → state-Bj0M9a6T.cjs} +1 -1
- package/dist/{state-Cex3rmx2.cjs.map → state-Bj0M9a6T.cjs.map} +1 -1
- package/dist/{state-CWBRTSvE.js → state-DscWQpoM.js} +1 -1
- package/dist/{state-CWBRTSvE.js.map → state-DscWQpoM.js.map} +1 -1
- package/dist/state.cjs +1 -1
- package/dist/state.js +2 -2
- package/dist/steps.cjs +35 -19
- package/dist/steps.cjs.map +1 -1
- package/dist/steps.js +96 -73
- package/dist/steps.js.map +1 -1
- package/dist/{surface-9S5scTsD.js → surface-B4Wn4SOO.js} +2 -2
- package/dist/{surface-9S5scTsD.js.map → surface-B4Wn4SOO.js.map} +1 -1
- package/dist/{surface-PfiejLuw.cjs → surface-DRq6cVW6.cjs} +1 -1
- package/dist/{surface-PfiejLuw.cjs.map → surface-DRq6cVW6.cjs.map} +1 -1
- package/dist/surface.cjs +1 -1
- package/dist/surface.js +1 -1
- package/dist/switch.cjs +1 -1
- package/dist/switch.js +2 -2
- package/dist/table.cjs +1 -1
- package/dist/table.js +2 -2
- package/dist/{tabs-uYvb1P06.cjs → tabs-Ca_fbHPW.cjs} +1 -1
- package/dist/{tabs-uYvb1P06.cjs.map → tabs-Ca_fbHPW.cjs.map} +1 -1
- package/dist/{tabs-BBOjAmgG.js → tabs-CnQPo-XS.js} +2 -2
- package/dist/{tabs-BBOjAmgG.js.map → tabs-CnQPo-XS.js.map} +1 -1
- package/dist/tabs.cjs +1 -1
- package/dist/tabs.js +1 -1
- package/dist/teleport.cjs +1 -1
- package/dist/teleport.js +1 -1
- package/dist/{textarea-QzSj8Dkl.js → textarea-BvqENhTW.js} +2 -2
- package/dist/{textarea-QzSj8Dkl.js.map → textarea-BvqENhTW.js.map} +1 -1
- package/dist/{textarea-YPHX4g7Y.cjs → textarea-qr7oL8oU.cjs} +1 -1
- package/dist/{textarea-YPHX4g7Y.cjs.map → textarea-qr7oL8oU.cjs.map} +1 -1
- package/dist/textarea.cjs +1 -1
- package/dist/textarea.js +1 -1
- package/dist/theme-BSwJ2YZo.cjs +181 -0
- package/dist/{theme-iKUaS9JB.cjs.map → theme-BSwJ2YZo.cjs.map} +1 -1
- package/dist/{theme-C2Mp-VGt.js → theme-BV0EzHQ1.js} +6 -5
- package/dist/{theme-C2Mp-VGt.js.map → theme-BV0EzHQ1.js.map} +1 -1
- package/dist/{theme-button-CJmhxfMe.cjs → theme-button-C6fpUzPM.cjs} +1 -1
- package/dist/{theme-button-CJmhxfMe.cjs.map → theme-button-C6fpUzPM.cjs.map} +1 -1
- package/dist/{theme-button-DGWAXhzd.js → theme-button-O_xNCgI7.js} +2 -2
- package/dist/{theme-button-DGWAXhzd.js.map → theme-button-O_xNCgI7.js.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 +3 -3
- package/dist/{theme.service-hc4N-1Oz.js → theme.service-DwLhhOmP.js} +1 -1
- package/dist/{theme.service-hc4N-1Oz.js.map → theme.service-DwLhhOmP.js.map} +1 -1
- package/dist/{theme.service-p61RsJBF.cjs → theme.service-kn9MC025.cjs} +1 -1
- package/dist/{theme.service-p61RsJBF.cjs.map → theme.service-kn9MC025.cjs.map} +1 -1
- package/dist/tree.cjs +1 -1
- package/dist/tree.js +2 -2
- package/dist/{typography-DwV0sqht.js → typography-Dtdooaic.js} +2 -2
- package/dist/{typography-DwV0sqht.js.map → typography-Dtdooaic.js.map} +1 -1
- package/dist/{typography-Bdt8RlX2.cjs → typography-opFYuUYS.cjs} +1 -1
- package/dist/{typography-Bdt8RlX2.cjs.map → typography-opFYuUYS.cjs.map} +1 -1
- package/dist/typography.cjs +1 -1
- package/dist/typography.js +1 -1
- package/dist/visually-hidden.cjs +1 -1
- package/dist/visually-hidden.js +2 -2
- package/dist/{window-D2WfvNng.cjs → window-BSAemI9J.cjs} +1 -1
- package/dist/{window-D2WfvNng.cjs.map → window-BSAemI9J.cjs.map} +1 -1
- package/dist/{window-n4jN60B_.js → window-ConcHirJ.js} +3 -3
- package/dist/{window-n4jN60B_.js.map → window-ConcHirJ.js.map} +1 -1
- package/dist/window.cjs +1 -1
- package/dist/window.js +1 -1
- package/package.json +1 -1
- package/skills/schmancy/INDEX.md +1 -1
- package/skills/schmancy/SKILL.md +20 -18
- package/skills/schmancy/boat.md +21 -15
- package/skills/schmancy/fab.md +75 -0
- package/skills/schmancy/steps.md +68 -34
- package/skills/schmancy/theme.md +1 -1
- package/src/CLAUDE.md +22 -16
- package/src/boat/boat.test.ts +130 -0
- package/src/boat/boat.ts +144 -121
- package/src/button/icon-button.ts +18 -30
- package/src/chips/assist-chip.ts +2 -263
- package/src/chips/chips.ts +2 -259
- package/src/chips/filter-chip.ts +2 -255
- package/src/chips/index.ts +2 -5
- package/src/chips/input-chip.ts +2 -413
- package/src/chips/suggestion-chip.ts +2 -266
- package/src/directives/fill.ts +28 -5
- package/src/directives/reveal.ts +192 -118
- package/src/fab/fab.test.ts +101 -0
- package/src/fab/fab.ts +226 -0
- package/src/fab/index.ts +1 -0
- package/src/form/fields/chips/assist-chip.ts +263 -0
- package/src/form/fields/chips/chips.ts +234 -0
- package/src/form/fields/chips/filter-chip.ts +255 -0
- package/src/form/fields/chips/index.ts +5 -0
- package/src/form/fields/chips/input-chip.ts +413 -0
- package/src/form/fields/chips/suggestion-chip.ts +266 -0
- package/src/form/fields/date-range/date-range.test.ts +44 -0
- package/src/form/fields/date-range/date-range.ts +103 -97
- package/src/form/fields/index.ts +1 -0
- package/src/index.ts +2 -1
- package/src/overlay/overlay.animations.ts +2 -3
- package/src/overlay/overlay.component.ts +8 -4
- package/src/overlay/overlay.types.ts +14 -2
- package/src/steps/index.ts +1 -1
- package/src/steps/schmancy-step.ts +91 -65
- package/src/steps/{schmancy-steps-container.ts → schmancy-steps.ts} +18 -38
- package/src/steps/steps.context.ts +5 -4
- package/src/steps/steps.test.ts +120 -0
- package/src/theme/theme.component.ts +1 -0
- package/src/theme/theme.style.css +3 -0
- package/types/src/boat/boat.d.ts +27 -9
- package/types/src/boat/boat.test.d.ts +2 -0
- package/types/src/button/icon-button.d.ts +3 -2
- package/types/src/chips/assist-chip.d.ts +1 -47
- package/types/src/chips/chips.d.ts +1 -43
- package/types/src/chips/filter-chip.d.ts +1 -67
- package/types/src/chips/index.d.ts +1 -5
- package/types/src/chips/input-chip.d.ts +1 -82
- package/types/src/chips/suggestion-chip.d.ts +1 -52
- package/types/src/directives/reveal.d.ts +15 -5
- package/types/src/fab/fab.d.ts +80 -0
- package/types/src/fab/fab.test.d.ts +2 -0
- package/types/src/fab/index.d.ts +1 -0
- package/types/src/form/fields/chips/assist-chip.d.ts +47 -0
- package/types/src/form/fields/chips/chips.d.ts +35 -0
- package/types/src/form/fields/chips/filter-chip.d.ts +67 -0
- package/types/src/form/fields/chips/index.d.ts +5 -0
- package/types/src/form/fields/chips/input-chip.d.ts +82 -0
- package/types/src/form/fields/chips/suggestion-chip.d.ts +52 -0
- package/types/src/form/fields/date-range/date-range.d.ts +5 -10
- package/types/src/form/fields/index.d.ts +1 -0
- package/types/src/index.d.ts +2 -1
- package/types/src/overlay/overlay.component.d.ts +1 -0
- package/types/src/overlay/overlay.types.d.ts +12 -2
- package/types/src/steps/index.d.ts +1 -1
- package/types/src/steps/schmancy-step.d.ts +8 -23
- package/types/src/steps/{schmancy-steps-container.d.ts → schmancy-steps.d.ts} +8 -9
- package/types/src/steps/steps.context.d.ts +2 -1
- package/types/src/steps/steps.test.d.ts +2 -0
- package/types/src/theme/theme.component.d.ts +1 -0
- package/dist/SchmancyElement-CA0Wqt8m.js +0 -284
- package/dist/SchmancyElement-CA0Wqt8m.js.map +0 -1
- package/dist/SchmancyElement-CYIif26I.cjs +0 -2
- package/dist/SchmancyElement-CYIif26I.cjs.map +0 -1
- package/dist/boat-Vqjgo10B.cjs +0 -33
- package/dist/boat-Vqjgo10B.cjs.map +0 -1
- package/dist/boat-lr7MPZ7H.js.map +0 -1
- package/dist/chips-CXZ4dJCK.cjs.map +0 -1
- package/dist/chips-Dg6Lk6BT.js.map +0 -1
- package/dist/date-range-BU6WX7d5.js.map +0 -1
- package/dist/date-range-C-_be3_E.cjs.map +0 -1
- package/dist/directives-fLwDj6b0.cjs.map +0 -1
- package/dist/directives-zi1Mm2er.js.map +0 -1
- package/dist/input-chip-57tgNXKT.cjs.map +0 -1
- package/dist/input-chip-C6Lq1927.js.map +0 -1
- package/dist/overlay-BpNhd74N.js.map +0 -1
- package/dist/overlay-UQR2Dy3u.cjs.map +0 -1
- package/dist/theme-iKUaS9JB.cjs +0 -181
|
@@ -68,6 +68,50 @@ describe('schmancy-date-range', () => {
|
|
|
68
68
|
expect(form.checkValidity()).toBe(true)
|
|
69
69
|
})
|
|
70
70
|
|
|
71
|
+
it('paints both validity surfaces when required, empty, and submitted', async () => {
|
|
72
|
+
host.innerHTML = `<form><schmancy-date-range name="w" required></schmancy-date-range></form>`
|
|
73
|
+
const form = host.querySelector('form') as HTMLFormElement
|
|
74
|
+
const dr = host.querySelector('schmancy-date-range') as HTMLElement & {
|
|
75
|
+
dateFrom: { label: string; value: string }
|
|
76
|
+
dateTo: { label: string; value: string }
|
|
77
|
+
markSubmitted(): void
|
|
78
|
+
checkValidity(): boolean
|
|
79
|
+
}
|
|
80
|
+
await nextUpdate()
|
|
81
|
+
await nextUpdate()
|
|
82
|
+
dr.dateFrom = { label: 'From', value: '' }
|
|
83
|
+
dr.dateTo = { label: 'To', value: '' }
|
|
84
|
+
await nextUpdate()
|
|
85
|
+
|
|
86
|
+
// Platform surface: the form blocks submit.
|
|
87
|
+
expect(form.checkValidity()).toBe(false)
|
|
88
|
+
|
|
89
|
+
// Rendered surface is gated until submit (validateOn default 'dirty').
|
|
90
|
+
dr.markSubmitted()
|
|
91
|
+
dr.checkValidity()
|
|
92
|
+
await nextUpdate()
|
|
93
|
+
await nextUpdate()
|
|
94
|
+
|
|
95
|
+
const root = (dr as unknown as { shadowRoot: ShadowRoot }).shadowRoot
|
|
96
|
+
const alert = root.querySelector('[role="alert"]')
|
|
97
|
+
expect(alert, 'a role=alert message must render').not.toBeNull()
|
|
98
|
+
expect(alert?.textContent?.trim()).toBe('Please select a date range.')
|
|
99
|
+
// Control itself carries a visible invalid treatment.
|
|
100
|
+
expect(
|
|
101
|
+
root.querySelector('section.outline-error-default'),
|
|
102
|
+
'the control must carry an invalid treatment',
|
|
103
|
+
).not.toBeNull()
|
|
104
|
+
|
|
105
|
+
// Filling the range clears both surfaces.
|
|
106
|
+
dr.dateFrom = { label: 'From', value: '2026-01-01' }
|
|
107
|
+
dr.dateTo = { label: 'To', value: '2026-01-31' }
|
|
108
|
+
await nextUpdate()
|
|
109
|
+
await nextUpdate()
|
|
110
|
+
expect(form.checkValidity()).toBe(true)
|
|
111
|
+
expect(root.querySelector('[role="alert"]')).toBeNull()
|
|
112
|
+
expect(root.querySelector('section.outline-error-default')).toBeNull()
|
|
113
|
+
})
|
|
114
|
+
|
|
71
115
|
it('has no axe-core a11y violations', async () => {
|
|
72
116
|
host.innerHTML = `<schmancy-date-range name="window"></schmancy-date-range>`
|
|
73
117
|
await nextUpdate()
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import dayjs from 'dayjs'
|
|
2
2
|
import quarterOfYear from 'dayjs/plugin/quarterOfYear'
|
|
3
|
-
import { html, PropertyValues } from 'lit'
|
|
3
|
+
import { html, nothing, PropertyValues } from 'lit'
|
|
4
4
|
import { customElement, property, state } from 'lit/decorators.js'
|
|
5
|
-
import { fromEvent,
|
|
5
|
+
import { concat, exhaustMap, finalize, fromEvent, map, merge, of, Subject, switchMap, takeUntil, tap, timer } from 'rxjs'
|
|
6
6
|
import { SchmancyFormField } from '@mixins/index'
|
|
7
7
|
import { show } from '../../../overlay/overlay.service'
|
|
8
8
|
import { detectDateRangeType, formatDateRange } from './date-range-helpers'
|
|
@@ -55,6 +55,12 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
55
55
|
/** When true, collapses to just an icon button on mobile screens */
|
|
56
56
|
@property({ type: Boolean }) collapse = false
|
|
57
57
|
|
|
58
|
+
// Session inputs — driven by handlers, consumed by the single pipeline
|
|
59
|
+
// in connectedCallback (rxjs ONE_PIPELINE_ONE_SUBSCRIBE / SESSIONS).
|
|
60
|
+
private readonly open$ = new Subject<MouseEvent | undefined>()
|
|
61
|
+
private readonly close$ = new Subject<void>()
|
|
62
|
+
private readonly announce$ = new Subject<string>()
|
|
63
|
+
|
|
58
64
|
// Internal states
|
|
59
65
|
@state() private isOpen = false
|
|
60
66
|
@state() private selectedDateRange: string = ''
|
|
@@ -95,17 +101,71 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
95
101
|
this.updateSelectedDateRange()
|
|
96
102
|
}
|
|
97
103
|
|
|
98
|
-
//
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
104
|
+
// One pipeline, one subscribe (rxjs ONE_PIPELINE_ONE_SUBSCRIBE): the
|
|
105
|
+
// dropdown open/close session, screen-reader announcements, and
|
|
106
|
+
// document keyboard navigation merge into a single chain torn down by
|
|
107
|
+
// takeUntil(this.disconnecting).
|
|
108
|
+
merge(
|
|
109
|
+
// Dropdown is a session (rxjs SESSIONS_USE_HIGHER_ORDER_OBSERVABLES):
|
|
110
|
+
// open$ opens the overlay; show() completes when an inner handler
|
|
111
|
+
// dispatches `close`, close$ dismisses it externally; finalize
|
|
112
|
+
// resets isOpen on either teardown path.
|
|
113
|
+
this.open$.pipe(
|
|
114
|
+
tap(() => {
|
|
115
|
+
this.dispatchEvent(new CustomEvent('beforeopen', { bubbles: true, composed: true }))
|
|
116
|
+
this.isOpen = true
|
|
117
|
+
}),
|
|
118
|
+
exhaustMap(anchor =>
|
|
119
|
+
show(
|
|
120
|
+
html`
|
|
121
|
+
<schmancy-date-range-dialog
|
|
122
|
+
.type="${this.type}"
|
|
123
|
+
.dateFrom="${this.dateFrom}"
|
|
124
|
+
.dateTo="${this.dateTo}"
|
|
125
|
+
.minDate="${this.minDate}"
|
|
126
|
+
.maxDate="${this.maxDate}"
|
|
127
|
+
.activePreset="${this.activePreset}"
|
|
128
|
+
.presetCategories="${this.presetCategories}"
|
|
129
|
+
@preset-select="${(ev: CustomEvent) => {
|
|
130
|
+
this.activePreset = ev.detail.preset.label
|
|
131
|
+
this.setDateRange(ev.detail.preset.range.dateFrom, ev.detail.preset.range.dateTo)
|
|
132
|
+
dispatchClose(ev.currentTarget)
|
|
133
|
+
}}"
|
|
134
|
+
@date-change="${() => this.updateSelectedDateRange()}"
|
|
135
|
+
@apply-dates="${(ev: CustomEvent) => {
|
|
136
|
+
const { dateFrom, dateTo, swapIfNeeded } = ev.detail
|
|
137
|
+
if (swapIfNeeded) {
|
|
138
|
+
this.setDateRange(dateTo, dateFrom)
|
|
139
|
+
} else {
|
|
140
|
+
this.setDateRange(dateFrom, dateTo)
|
|
141
|
+
}
|
|
142
|
+
dispatchClose(ev.currentTarget)
|
|
143
|
+
}}"
|
|
144
|
+
@announce="${(ev: CustomEvent) => this.announce$.next(ev.detail.message)}"
|
|
145
|
+
></schmancy-date-range-dialog>
|
|
146
|
+
`,
|
|
147
|
+
{ anchor },
|
|
148
|
+
).pipe(
|
|
149
|
+
takeUntil(this.close$),
|
|
150
|
+
finalize(() => {
|
|
151
|
+
this.isOpen = false
|
|
152
|
+
}),
|
|
153
|
+
),
|
|
154
|
+
),
|
|
155
|
+
),
|
|
156
|
+
// Announcements (rxjs LIFT_EVERY_ASYNC_SOURCE): one Subject, one
|
|
157
|
+
// switchMap-cleared timer — not a fresh timer().subscribe() per call.
|
|
158
|
+
this.announce$.pipe(
|
|
159
|
+
switchMap(message => concat(of(message), timer(100).pipe(map(() => '')))),
|
|
160
|
+
tap(message => {
|
|
161
|
+
this.announceMessage = message
|
|
162
|
+
}),
|
|
163
|
+
),
|
|
164
|
+
// Document keyboard navigation.
|
|
165
|
+
fromEvent<KeyboardEvent>(document, 'keydown').pipe(tap(event => this.handleKeyboardNavigation(event))),
|
|
166
|
+
)
|
|
105
167
|
.pipe(takeUntil(this.disconnecting))
|
|
106
|
-
.subscribe(
|
|
107
|
-
this.handleKeyboardNavigation(event)
|
|
108
|
-
})
|
|
168
|
+
.subscribe()
|
|
109
169
|
}
|
|
110
170
|
|
|
111
171
|
updated(changedProps: PropertyValues) {
|
|
@@ -182,23 +242,23 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
182
242
|
}
|
|
183
243
|
|
|
184
244
|
/** `dirty` tracks the underlying date strings, not the wide-union value. */
|
|
185
|
-
private
|
|
186
|
-
private
|
|
245
|
+
private dateFromDefault: string = ''
|
|
246
|
+
private dateToDefault: string = ''
|
|
187
247
|
override firstUpdated(changed: PropertyValues): void {
|
|
188
248
|
super.firstUpdated(changed)
|
|
189
|
-
this.
|
|
190
|
-
this.
|
|
249
|
+
this.dateFromDefault = this.dateFrom?.value ?? ''
|
|
250
|
+
this.dateToDefault = this.dateTo?.value ?? ''
|
|
191
251
|
}
|
|
192
252
|
override get dirty(): boolean {
|
|
193
253
|
return (
|
|
194
|
-
(this.dateFrom?.value ?? '') !== this.
|
|
195
|
-
(this.dateTo?.value ?? '') !== this.
|
|
254
|
+
(this.dateFrom?.value ?? '') !== this.dateFromDefault ||
|
|
255
|
+
(this.dateTo?.value ?? '') !== this.dateToDefault
|
|
196
256
|
)
|
|
197
257
|
}
|
|
198
258
|
|
|
199
259
|
override resetForm(): void {
|
|
200
|
-
this.dateFrom = { ...this.dateFrom, value: this.
|
|
201
|
-
this.dateTo = { ...this.dateTo, value: this.
|
|
260
|
+
this.dateFrom = { ...this.dateFrom, value: this.dateFromDefault }
|
|
261
|
+
this.dateTo = { ...this.dateTo, value: this.dateToDefault }
|
|
202
262
|
super.resetForm()
|
|
203
263
|
}
|
|
204
264
|
|
|
@@ -282,7 +342,7 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
282
342
|
this.updateSelectedDateRange()
|
|
283
343
|
|
|
284
344
|
// Announce change to screen readers
|
|
285
|
-
this.
|
|
345
|
+
this.announce$.next(`Date range updated: ${this.selectedDateRange}`)
|
|
286
346
|
|
|
287
347
|
this.dispatchEvent(
|
|
288
348
|
new CustomEvent<{ dateFrom: string; dateTo: string }>('change', {
|
|
@@ -296,72 +356,15 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
296
356
|
private toggleDropdown(e: MouseEvent) {
|
|
297
357
|
e.stopPropagation()
|
|
298
358
|
if (this.disabled || this.step !== undefined) return
|
|
299
|
-
|
|
359
|
+
// Drive the session pipeline (connectedCallback) — no imperative
|
|
360
|
+
// open/close, no manual subscription field.
|
|
300
361
|
if (this.isOpen) {
|
|
301
|
-
this.
|
|
362
|
+
this.close$.next()
|
|
302
363
|
} else {
|
|
303
|
-
this.
|
|
364
|
+
this.open$.next(e)
|
|
304
365
|
}
|
|
305
366
|
}
|
|
306
367
|
|
|
307
|
-
private _overlaySubscription: Subscription | null = null
|
|
308
|
-
|
|
309
|
-
private openDropdown(e?: MouseEvent) {
|
|
310
|
-
if (this.disabled || this.step !== undefined) return
|
|
311
|
-
|
|
312
|
-
this.dispatchEvent(new CustomEvent('beforeopen', { bubbles: true, composed: true }))
|
|
313
|
-
this.isOpen = true
|
|
314
|
-
|
|
315
|
-
// Inline-template overlay. Inner handlers dispatch a 'close' event
|
|
316
|
-
// from the dialog itself (via the module-scoped `dispatchClose`),
|
|
317
|
-
// which `show()` translates into observable completion + an emission.
|
|
318
|
-
// Layout (centered vs sheet) is chosen by the overlay system based on
|
|
319
|
-
// viewport / anchor presence.
|
|
320
|
-
const dialogContent = html`
|
|
321
|
-
<schmancy-date-range-dialog
|
|
322
|
-
.type="${this.type}"
|
|
323
|
-
.dateFrom="${this.dateFrom}"
|
|
324
|
-
.dateTo="${this.dateTo}"
|
|
325
|
-
.minDate="${this.minDate}"
|
|
326
|
-
.maxDate="${this.maxDate}"
|
|
327
|
-
.activePreset="${this.activePreset}"
|
|
328
|
-
.presetCategories="${this.presetCategories}"
|
|
329
|
-
@preset-select="${(ev: CustomEvent) => {
|
|
330
|
-
this.activePreset = ev.detail.preset.label
|
|
331
|
-
this.setDateRange(ev.detail.preset.range.dateFrom, ev.detail.preset.range.dateTo)
|
|
332
|
-
dispatchClose(ev.currentTarget)
|
|
333
|
-
}}"
|
|
334
|
-
@date-change="${() => this.updateSelectedDateRange()}"
|
|
335
|
-
@apply-dates="${(ev: CustomEvent) => {
|
|
336
|
-
const { dateFrom, dateTo, swapIfNeeded } = ev.detail
|
|
337
|
-
if (swapIfNeeded) {
|
|
338
|
-
this.setDateRange(dateTo, dateFrom)
|
|
339
|
-
} else {
|
|
340
|
-
this.setDateRange(dateFrom, dateTo)
|
|
341
|
-
}
|
|
342
|
-
dispatchClose(ev.currentTarget)
|
|
343
|
-
}}"
|
|
344
|
-
@announce="${(ev: CustomEvent) => this.announceToScreenReader(ev.detail.message)}"
|
|
345
|
-
></schmancy-date-range-dialog>
|
|
346
|
-
`
|
|
347
|
-
|
|
348
|
-
this._overlaySubscription?.unsubscribe()
|
|
349
|
-
this._overlaySubscription = show(dialogContent, { anchor: e })
|
|
350
|
-
.pipe(takeUntil(this.disconnecting))
|
|
351
|
-
.subscribe({
|
|
352
|
-
complete: () => {
|
|
353
|
-
this.isOpen = false
|
|
354
|
-
this._overlaySubscription = null
|
|
355
|
-
},
|
|
356
|
-
})
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
private closeDropdown() {
|
|
360
|
-
this._overlaySubscription?.unsubscribe()
|
|
361
|
-
this._overlaySubscription = null
|
|
362
|
-
this.isOpen = false
|
|
363
|
-
}
|
|
364
|
-
|
|
365
368
|
/**
|
|
366
369
|
* Shifts the date range based on the step property
|
|
367
370
|
*/
|
|
@@ -522,20 +525,15 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
522
525
|
return toDate.isBefore(maxDate)
|
|
523
526
|
}
|
|
524
527
|
|
|
525
|
-
/**
|
|
526
|
-
* Announce messages to screen readers
|
|
527
|
-
*/
|
|
528
|
-
private announceToScreenReader(message: string) {
|
|
529
|
-
this.announceMessage = message
|
|
530
|
-
// Clear the message after announcement
|
|
531
|
-
timer(100)
|
|
532
|
-
.pipe(takeUntil(this.disconnecting))
|
|
533
|
-
.subscribe(() => {
|
|
534
|
-
this.announceMessage = ''
|
|
535
|
-
})
|
|
536
|
-
}
|
|
537
528
|
|
|
538
529
|
render() {
|
|
530
|
+
// Step 6 — validity is two surfaces: when checkValidity() has flipped
|
|
531
|
+
// `error` (gated by `_shouldShowError`), the control must visibly carry
|
|
532
|
+
// the invalid treatment AND render the message. Platform validity is
|
|
533
|
+
// set in checkValidity(); this paints the user-facing half.
|
|
534
|
+
const showError = this.error && !!this.validationMessage
|
|
535
|
+
const errorRing = showError ? ' rounded outline outline-2 outline-error-default' : ''
|
|
536
|
+
|
|
539
537
|
return html`
|
|
540
538
|
<div class="relative ${this.disabled ? 'opacity-60 pointer-events-none' : ''}">
|
|
541
539
|
<!-- Screen reader announcements -->
|
|
@@ -545,18 +543,22 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
545
543
|
|
|
546
544
|
<!-- Collapsed: icon-only on mobile when collapse=true -->
|
|
547
545
|
<schmancy-icon-button
|
|
548
|
-
class="${this.collapse ? 'lg:hidden' : 'hidden'}"
|
|
546
|
+
class="${this.collapse ? 'lg:hidden' : 'hidden'}${errorRing}"
|
|
549
547
|
variant="outlined"
|
|
550
548
|
type="button"
|
|
549
|
+
aria-invalid=${showError ? 'true' : 'false'}
|
|
551
550
|
aria-label="Select date range. Current: ${this.selectedDateRange || 'No date selected'}"
|
|
552
551
|
@click=${(e: MouseEvent) => this.toggleDropdown(e)}
|
|
553
552
|
?disabled=${this.disabled}
|
|
554
553
|
>
|
|
555
|
-
|
|
554
|
+
date_range
|
|
556
555
|
</schmancy-icon-button>
|
|
557
556
|
|
|
558
557
|
<!-- Full UI: always visible when collapse=false, or lg+ when collapse=true -->
|
|
559
|
-
<section
|
|
558
|
+
<section
|
|
559
|
+
@click=${(event: Event) => event.stopPropagation()}
|
|
560
|
+
aria-invalid=${showError ? 'true' : 'false'}
|
|
561
|
+
class="${this.collapse ? 'hidden lg:flex' : 'flex'}${errorRing}">
|
|
560
562
|
<schmancy-icon-button
|
|
561
563
|
type="button"
|
|
562
564
|
aria-label="Previous ${this.activePreset ? this.activePreset.toLowerCase() : 'date range'}"
|
|
@@ -590,6 +592,10 @@ export class SchmancyDateRange extends SchmancyFormField() {
|
|
|
590
592
|
arrow_right
|
|
591
593
|
</schmancy-icon-button>
|
|
592
594
|
</section>
|
|
595
|
+
|
|
596
|
+
${showError
|
|
597
|
+
? html`<div role="alert" class="text-error-default text-sm mt-1">${this.validationMessage}</div>`
|
|
598
|
+
: nothing}
|
|
593
599
|
</div>
|
|
594
600
|
`
|
|
595
601
|
}
|
package/src/form/fields/index.ts
CHANGED
package/src/index.ts
CHANGED
|
@@ -7,7 +7,7 @@ export * from './busy';
|
|
|
7
7
|
export * from './button';
|
|
8
8
|
export * from './card';
|
|
9
9
|
export * from './form/fields/checkbox';
|
|
10
|
-
export * from './chips';
|
|
10
|
+
export * from './form/fields/chips';
|
|
11
11
|
export * from './connectivity';
|
|
12
12
|
export * from './content-drawer';
|
|
13
13
|
export * from './form/fields/date-range';
|
|
@@ -19,6 +19,7 @@ export * from './discovery';
|
|
|
19
19
|
export * from './divider';
|
|
20
20
|
export * from './dropdown';
|
|
21
21
|
export * from './expand';
|
|
22
|
+
export * from './fab';
|
|
22
23
|
export * from './float';
|
|
23
24
|
export * from './window';
|
|
24
25
|
export * from './form';
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DURATION_EXIT,
|
|
3
3
|
getEasing,
|
|
4
|
-
SPRING_GENTLE,
|
|
5
4
|
SPRING_SMOOTH,
|
|
6
5
|
SPRING_SNAPPY,
|
|
7
6
|
} from '../utils/animation'
|
|
@@ -162,8 +161,8 @@ export function surfaceAnimation(layout: OverlayLayout, direction: 'in' | 'out')
|
|
|
162
161
|
{ opacity: 1, transform: 'translateY(0)' },
|
|
163
162
|
],
|
|
164
163
|
options: {
|
|
165
|
-
duration:
|
|
166
|
-
easing: getEasing(
|
|
164
|
+
duration: SPRING_SNAPPY.duration,
|
|
165
|
+
easing: getEasing(SPRING_SNAPPY),
|
|
167
166
|
fill: 'forwards',
|
|
168
167
|
},
|
|
169
168
|
}
|
|
@@ -119,6 +119,7 @@ export class SchmancyOverlay extends SchmancyElement {
|
|
|
119
119
|
@property({ type: String, reflect: true }) tier: OverlayTier = 'modal'
|
|
120
120
|
|
|
121
121
|
@state() private _active = false
|
|
122
|
+
@state() private _full = false
|
|
122
123
|
|
|
123
124
|
@query('.backdrop') private _backdrop?: HTMLDivElement
|
|
124
125
|
@query('.surface') private _surface!: HTMLElement
|
|
@@ -152,6 +153,7 @@ export class SchmancyOverlay extends SchmancyElement {
|
|
|
152
153
|
this._mounted = true
|
|
153
154
|
|
|
154
155
|
this.dismissable = options.dismissable !== false
|
|
156
|
+
this._full = options.full ?? false
|
|
155
157
|
this._rawAnchor = options.anchor
|
|
156
158
|
this._anchorOriginAnchor = options.anchor
|
|
157
159
|
this._resolvedAnchor = resolveAnchorRef(options.anchor)
|
|
@@ -278,13 +280,15 @@ export class SchmancyOverlay extends SchmancyElement {
|
|
|
278
280
|
protected render(): TemplateResult {
|
|
279
281
|
if (!this._active) return html``
|
|
280
282
|
const baseClasses =
|
|
281
|
-
'surface fixed pointer-events-auto
|
|
283
|
+
'surface fixed pointer-events-auto ' +
|
|
282
284
|
'bg-surface-container/85 text-surface-on backdrop-blur-md ' +
|
|
283
285
|
'border border-surface-on/8'
|
|
284
286
|
const layoutClasses =
|
|
285
287
|
this.layout === 'sheet'
|
|
286
|
-
?
|
|
287
|
-
|
|
288
|
+
? this._full
|
|
289
|
+
? 'left-0 right-0 bottom-0 w-full h-[90dvh] rounded-t-[28px] shadow-overlay flex flex-col overflow-hidden'
|
|
290
|
+
: 'left-0 right-0 bottom-0 w-full max-h-[90dvh] rounded-t-[28px] shadow-overlay overflow-auto'
|
|
291
|
+
: 'max-w-[min(480px,calc(100vw-2rem))] max-h-[90dvh] rounded-3xl shadow-overlay-anchored overflow-auto'
|
|
288
292
|
return html`
|
|
289
293
|
<div class="shell fixed inset-0 pointer-events-none" part="shell">
|
|
290
294
|
${when(
|
|
@@ -300,7 +304,7 @@ export class SchmancyOverlay extends SchmancyElement {
|
|
|
300
304
|
aria-modal=${this.modal ? 'true' : 'false'}
|
|
301
305
|
tabindex="-1"
|
|
302
306
|
>
|
|
303
|
-
<div id=${MOUNT_POINT_ID}></div>
|
|
307
|
+
<div id=${MOUNT_POINT_ID} class=${this.layout === 'sheet' && this._full ? 'flex-1 min-h-0 overflow-hidden' : ''}></div>
|
|
304
308
|
</section>
|
|
305
309
|
</div>
|
|
306
310
|
`
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { TemplateResult } from 'lit'
|
|
2
2
|
import type { Observable } from 'rxjs'
|
|
3
|
-
import type { ComponentType } from '../area/router.types'
|
|
4
|
-
import type { THistoryStrategy } from '../area/router.types'
|
|
3
|
+
import type { ComponentType, THistoryStrategy } from '../area/router.types'
|
|
5
4
|
|
|
6
5
|
/**
|
|
7
6
|
* Sync factory that returns a TemplateResult. Called at mount time so closed-over
|
|
@@ -103,6 +102,19 @@ export interface ShowOptions {
|
|
|
103
102
|
* takeover view that doesn't have an anchor. */
|
|
104
103
|
as?: OverlayLayout
|
|
105
104
|
|
|
105
|
+
/** When `true` and layout resolves to `'sheet'`, the surface takes the
|
|
106
|
+
* full available height (`h-[90dvh]`) instead of sizing to content.
|
|
107
|
+
* The mount point becomes `flex-1 min-h-0 overflow-hidden` so the
|
|
108
|
+
* mounted component can fill it via `height: 100%`. Default `false`. */
|
|
109
|
+
full?: boolean
|
|
110
|
+
|
|
111
|
+
/** When `true` and layout is `'sheet'`, the surface takes the full
|
|
112
|
+
* available height (`h-[90dvh]`) rather than sizing to content. The
|
|
113
|
+
* mount point becomes `flex-1` so the mounted component can fill it
|
|
114
|
+
* via `height: 100%`. Use for immersive full-height panels (e.g. a
|
|
115
|
+
* document review). Default `false`. */
|
|
116
|
+
fillHeight?: boolean
|
|
117
|
+
|
|
106
118
|
/** Default `'push'`. Same vocabulary as `area.push()`.
|
|
107
119
|
* - `'push'` — new history entry; back dismisses, forward re-opens.
|
|
108
120
|
* - `'replace'` — replace current entry; back skips the overlay.
|
package/src/steps/index.ts
CHANGED