godown 3.0.0-canary.9 → 3.0.1
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/README.md +38 -9
- package/alert.d.ts +1 -0
- package/alert.d.ts.map +1 -1
- package/alert.js +1 -5
- package/alert.js.map +1 -1
- package/avatar.d.ts +1 -0
- package/avatar.d.ts.map +1 -1
- package/avatar.js +1 -5
- package/avatar.js.map +1 -1
- package/badge.d.ts +9 -0
- package/badge.d.ts.map +1 -0
- package/badge.js +2 -0
- package/badge.js.map +1 -0
- package/breath.js +1 -5
- package/breath.js.map +1 -1
- package/build/godown+lit.iife.js +59 -0
- package/build/godown+lit.iife.js.map +1 -0
- package/build/godown+lit.js +59 -0
- package/build/godown+lit.js.map +1 -0
- package/build/godown+lit.umd.js +59 -0
- package/build/godown+lit.umd.js.map +1 -0
- package/build/godown.iife.js +47 -0
- package/build/godown.js +48 -0
- package/build/godown.js.map +1 -0
- package/build/godown.umd.js +48 -0
- package/build/godown.umd.js.map +1 -0
- package/button.d.ts +1 -0
- package/button.d.ts.map +1 -1
- package/button.js +1 -5
- package/button.js.map +1 -1
- package/card.d.ts +1 -0
- package/card.d.ts.map +1 -1
- package/card.js +1 -5
- package/card.js.map +1 -1
- package/carousel.d.ts +1 -0
- package/carousel.d.ts.map +1 -1
- package/carousel.js +1 -5
- package/carousel.js.map +1 -1
- package/components/alert.d.ts +4 -1
- package/components/alert.d.ts.map +1 -1
- package/components/alert.js +1 -176
- package/components/alert.js.map +1 -1
- package/components/avatar.d.ts +7 -2
- package/components/avatar.d.ts.map +1 -1
- package/components/avatar.js +1 -62
- package/components/avatar.js.map +1 -1
- package/components/badge.d.ts +23 -0
- package/components/badge.d.ts.map +1 -0
- package/components/badge.js +2 -0
- package/components/badge.js.map +1 -0
- package/components/breath.d.ts +6 -4
- package/components/breath.d.ts.map +1 -1
- package/components/breath.js +1 -80
- package/components/breath.js.map +1 -1
- package/components/button.d.ts +8 -5
- package/components/button.d.ts.map +1 -1
- package/components/button.js +1 -168
- package/components/button.js.map +1 -1
- package/components/card.d.ts +3 -1
- package/components/card.d.ts.map +1 -1
- package/components/card.js +1 -48
- package/components/card.js.map +1 -1
- package/components/carousel.d.ts +5 -1
- package/components/carousel.d.ts.map +1 -1
- package/components/carousel.js +1 -113
- package/components/carousel.js.map +1 -1
- package/components/details.d.ts +4 -3
- package/components/details.d.ts.map +1 -1
- package/components/details.js +1 -52
- package/components/details.js.map +1 -1
- package/components/dialog.d.ts +4 -2
- package/components/dialog.d.ts.map +1 -1
- package/components/dialog.js +1 -96
- package/components/dialog.js.map +1 -1
- package/components/divider.d.ts +3 -3
- package/components/divider.d.ts.map +1 -1
- package/components/divider.js +1 -36
- package/components/divider.js.map +1 -1
- package/components/dragbox.d.ts +4 -2
- package/components/dragbox.d.ts.map +1 -1
- package/components/dragbox.js +1 -109
- package/components/dragbox.js.map +1 -1
- package/components/flex.d.ts +3 -1
- package/components/flex.d.ts.map +1 -1
- package/components/flex.js +1 -62
- package/components/flex.js.map +1 -1
- package/components/form.d.ts +3 -1
- package/components/form.d.ts.map +1 -1
- package/components/form.js +1 -75
- package/components/form.js.map +1 -1
- package/components/grid.d.ts +3 -1
- package/components/grid.d.ts.map +1 -1
- package/components/grid.js +1 -56
- package/components/grid.js.map +1 -1
- package/components/heading.d.ts +29 -0
- package/components/heading.d.ts.map +1 -0
- package/components/heading.js +2 -0
- package/components/heading.js.map +1 -0
- package/components/input.d.ts +5 -1
- package/components/input.d.ts.map +1 -1
- package/components/input.js +1 -50
- package/components/input.js.map +1 -1
- package/components/layout.d.ts +6 -4
- package/components/layout.d.ts.map +1 -1
- package/components/layout.js +1 -58
- package/components/layout.js.map +1 -1
- package/components/link.d.ts +5 -0
- package/components/link.d.ts.map +1 -1
- package/components/link.js +1 -44
- package/components/link.js.map +1 -1
- package/components/progress.d.ts +3 -1
- package/components/progress.d.ts.map +1 -1
- package/components/progress.js +1 -58
- package/components/progress.js.map +1 -1
- package/components/range.d.ts +10 -4
- package/components/range.d.ts.map +1 -1
- package/components/range.js +1 -266
- package/components/range.js.map +1 -1
- package/components/rotate.d.ts +3 -1
- package/components/rotate.d.ts.map +1 -1
- package/components/rotate.js +1 -56
- package/components/rotate.js.map +1 -1
- package/components/router.d.ts +27 -34
- package/components/router.d.ts.map +1 -1
- package/components/router.js +1 -250
- package/components/router.js.map +1 -1
- package/components/select.d.ts +7 -2
- package/components/select.d.ts.map +1 -1
- package/components/select.js +1 -211
- package/components/select.js.map +1 -1
- package/components/skeleton.d.ts +3 -1
- package/components/skeleton.d.ts.map +1 -1
- package/components/skeleton.js +1 -54
- package/components/skeleton.js.map +1 -1
- package/components/split.d.ts +8 -2
- package/components/split.d.ts.map +1 -1
- package/components/split.js +1 -153
- package/components/split.js.map +1 -1
- package/components/switch.d.ts +5 -2
- package/components/switch.d.ts.map +1 -1
- package/components/switch.js +1 -92
- package/components/switch.js.map +1 -1
- package/components/text.d.ts +3 -1
- package/components/text.d.ts.map +1 -1
- package/components/text.js +1 -43
- package/components/text.js.map +1 -1
- package/components/time.d.ts +4 -2
- package/components/time.d.ts.map +1 -1
- package/components/time.js +1 -77
- package/components/time.js.map +1 -1
- package/components/tooltip.d.ts +4 -2
- package/components/tooltip.d.ts.map +1 -1
- package/components/tooltip.js +1 -80
- package/components/tooltip.js.map +1 -1
- package/components/typewriter.d.ts +6 -12
- package/components/typewriter.d.ts.map +1 -1
- package/components/typewriter.js +1 -129
- package/components/typewriter.js.map +1 -1
- package/core/global-style.d.ts +2 -2
- package/core/global-style.d.ts.map +1 -1
- package/core/global-style.js +1 -52
- package/core/global-style.js.map +1 -1
- package/core/super-anchor.d.ts +2 -1
- package/core/super-anchor.d.ts.map +1 -1
- package/core/super-anchor.js +1 -38
- package/core/super-anchor.js.map +1 -1
- package/core/super-input.d.ts +4 -3
- package/core/super-input.d.ts.map +1 -1
- package/core/super-input.js +1 -111
- package/core/super-input.js.map +1 -1
- package/core/super-openable.d.ts +1 -1
- package/core/super-openable.d.ts.map +1 -1
- package/core/super-openable.js +1 -37
- package/core/super-openable.js.map +1 -1
- package/custom-elements.json +1 -1
- package/details.d.ts +1 -0
- package/details.d.ts.map +1 -1
- package/details.js +1 -5
- package/details.js.map +1 -1
- package/dev/alert.d.ts +1 -0
- package/dev/alert.d.ts.map +1 -1
- package/dev/alert.js +1 -0
- package/dev/alert.js.map +1 -1
- package/dev/avatar.d.ts +1 -0
- package/dev/avatar.d.ts.map +1 -1
- package/dev/avatar.js +1 -0
- package/dev/avatar.js.map +1 -1
- package/dev/badge.d.ts +9 -0
- package/dev/badge.d.ts.map +1 -0
- package/dev/badge.js +5 -0
- package/dev/badge.js.map +1 -0
- package/dev/button.d.ts +1 -0
- package/dev/button.d.ts.map +1 -1
- package/dev/button.js +1 -0
- package/dev/button.js.map +1 -1
- package/dev/card.d.ts +1 -0
- package/dev/card.d.ts.map +1 -1
- package/dev/card.js +1 -0
- package/dev/card.js.map +1 -1
- package/dev/carousel.d.ts +1 -0
- package/dev/carousel.d.ts.map +1 -1
- package/dev/carousel.js +1 -0
- package/dev/carousel.js.map +1 -1
- package/dev/components/alert.d.ts +4 -1
- package/dev/components/alert.d.ts.map +1 -1
- package/dev/components/alert.js +87 -77
- package/dev/components/alert.js.map +1 -1
- package/dev/components/avatar.d.ts +7 -2
- package/dev/components/avatar.d.ts.map +1 -1
- package/dev/components/avatar.js +60 -32
- package/dev/components/avatar.js.map +1 -1
- package/dev/components/badge.d.ts +23 -0
- package/dev/components/badge.d.ts.map +1 -0
- package/dev/components/badge.js +114 -0
- package/dev/components/badge.js.map +1 -0
- package/dev/components/breath.d.ts +6 -4
- package/dev/components/breath.d.ts.map +1 -1
- package/dev/components/breath.js +40 -31
- package/dev/components/breath.js.map +1 -1
- package/dev/components/button.d.ts +8 -5
- package/dev/components/button.d.ts.map +1 -1
- package/dev/components/button.js +38 -21
- package/dev/components/button.js.map +1 -1
- package/dev/components/card.d.ts +3 -1
- package/dev/components/card.d.ts.map +1 -1
- package/dev/components/card.js +43 -41
- package/dev/components/card.js.map +1 -1
- package/dev/components/carousel.d.ts +5 -1
- package/dev/components/carousel.d.ts.map +1 -1
- package/dev/components/carousel.js +81 -55
- package/dev/components/carousel.js.map +1 -1
- package/dev/components/details.d.ts +4 -3
- package/dev/components/details.d.ts.map +1 -1
- package/dev/components/details.js +76 -70
- package/dev/components/details.js.map +1 -1
- package/dev/components/dialog.d.ts +4 -2
- package/dev/components/dialog.d.ts.map +1 -1
- package/dev/components/dialog.js +65 -60
- package/dev/components/dialog.js.map +1 -1
- package/dev/components/divider.d.ts +3 -3
- package/dev/components/divider.d.ts.map +1 -1
- package/dev/components/divider.js +27 -10
- package/dev/components/divider.js.map +1 -1
- package/dev/components/dragbox.d.ts +4 -2
- package/dev/components/dragbox.d.ts.map +1 -1
- package/dev/components/dragbox.js +22 -13
- package/dev/components/dragbox.js.map +1 -1
- package/dev/components/flex.d.ts +3 -1
- package/dev/components/flex.d.ts.map +1 -1
- package/dev/components/flex.js +22 -9
- package/dev/components/flex.js.map +1 -1
- package/dev/components/form.d.ts +3 -1
- package/dev/components/form.d.ts.map +1 -1
- package/dev/components/form.js +6 -7
- package/dev/components/form.js.map +1 -1
- package/dev/components/grid.d.ts +3 -1
- package/dev/components/grid.d.ts.map +1 -1
- package/dev/components/grid.js +22 -10
- package/dev/components/grid.js.map +1 -1
- package/dev/components/heading.d.ts +29 -0
- package/dev/components/heading.d.ts.map +1 -0
- package/dev/components/heading.js +125 -0
- package/dev/components/heading.js.map +1 -0
- package/dev/components/input.d.ts +5 -1
- package/dev/components/input.d.ts.map +1 -1
- package/dev/components/input.js +36 -28
- package/dev/components/input.js.map +1 -1
- package/dev/components/layout.d.ts +6 -4
- package/dev/components/layout.d.ts.map +1 -1
- package/dev/components/layout.js +53 -39
- package/dev/components/layout.js.map +1 -1
- package/dev/components/link.d.ts +5 -0
- package/dev/components/link.d.ts.map +1 -1
- package/dev/components/link.js +13 -3
- package/dev/components/link.js.map +1 -1
- package/dev/components/progress.d.ts +3 -1
- package/dev/components/progress.d.ts.map +1 -1
- package/dev/components/progress.js +20 -8
- package/dev/components/progress.js.map +1 -1
- package/dev/components/range.d.ts +10 -4
- package/dev/components/range.d.ts.map +1 -1
- package/dev/components/range.js +69 -64
- package/dev/components/range.js.map +1 -1
- package/dev/components/rotate.d.ts +3 -1
- package/dev/components/rotate.d.ts.map +1 -1
- package/dev/components/rotate.js +14 -9
- package/dev/components/rotate.js.map +1 -1
- package/dev/components/router.d.ts +27 -34
- package/dev/components/router.d.ts.map +1 -1
- package/dev/components/router.js +25 -38
- package/dev/components/router.js.map +1 -1
- package/dev/components/select.d.ts +7 -2
- package/dev/components/select.d.ts.map +1 -1
- package/dev/components/select.js +79 -58
- package/dev/components/select.js.map +1 -1
- package/dev/components/skeleton.d.ts +3 -1
- package/dev/components/skeleton.d.ts.map +1 -1
- package/dev/components/skeleton.js +67 -63
- package/dev/components/skeleton.js.map +1 -1
- package/dev/components/split.d.ts +8 -2
- package/dev/components/split.d.ts.map +1 -1
- package/dev/components/split.js +67 -51
- package/dev/components/split.js.map +1 -1
- package/dev/components/switch.d.ts +5 -2
- package/dev/components/switch.d.ts.map +1 -1
- package/dev/components/switch.js +91 -85
- package/dev/components/switch.js.map +1 -1
- package/dev/components/text.d.ts +3 -1
- package/dev/components/text.d.ts.map +1 -1
- package/dev/components/text.js +56 -53
- package/dev/components/text.js.map +1 -1
- package/dev/components/time.d.ts +4 -2
- package/dev/components/time.d.ts.map +1 -1
- package/dev/components/time.js +19 -6
- package/dev/components/time.js.map +1 -1
- package/dev/components/tooltip.d.ts +4 -2
- package/dev/components/tooltip.d.ts.map +1 -1
- package/dev/components/tooltip.js +45 -27
- package/dev/components/tooltip.js.map +1 -1
- package/dev/components/typewriter.d.ts +6 -12
- package/dev/components/typewriter.d.ts.map +1 -1
- package/dev/components/typewriter.js +48 -54
- package/dev/components/typewriter.js.map +1 -1
- package/dev/core/global-style.d.ts +2 -2
- package/dev/core/global-style.d.ts.map +1 -1
- package/dev/core/global-style.js +19 -14
- package/dev/core/global-style.js.map +1 -1
- package/dev/core/super-anchor.d.ts +2 -1
- package/dev/core/super-anchor.d.ts.map +1 -1
- package/dev/core/super-anchor.js +15 -12
- package/dev/core/super-anchor.js.map +1 -1
- package/dev/core/super-input.d.ts +4 -3
- package/dev/core/super-input.d.ts.map +1 -1
- package/dev/core/super-input.js +64 -42
- package/dev/core/super-input.js.map +1 -1
- package/dev/core/super-openable.d.ts +1 -1
- package/dev/core/super-openable.d.ts.map +1 -1
- package/dev/core/super-openable.js +1 -2
- package/dev/core/super-openable.js.map +1 -1
- package/dev/details.d.ts +1 -0
- package/dev/details.d.ts.map +1 -1
- package/dev/details.js +1 -0
- package/dev/details.js.map +1 -1
- package/dev/dialog.d.ts +1 -0
- package/dev/dialog.d.ts.map +1 -1
- package/dev/dialog.js +1 -0
- package/dev/dialog.js.map +1 -1
- package/dev/divider.d.ts +1 -0
- package/dev/divider.d.ts.map +1 -1
- package/dev/divider.js +1 -0
- package/dev/divider.js.map +1 -1
- package/dev/dragbox.d.ts +1 -0
- package/dev/dragbox.d.ts.map +1 -1
- package/dev/dragbox.js +1 -0
- package/dev/dragbox.js.map +1 -1
- package/dev/flex.d.ts +1 -0
- package/dev/flex.d.ts.map +1 -1
- package/dev/flex.js +1 -0
- package/dev/flex.js.map +1 -1
- package/dev/form.d.ts +1 -0
- package/dev/form.d.ts.map +1 -1
- package/dev/form.js +1 -0
- package/dev/form.js.map +1 -1
- package/dev/grid.d.ts +1 -0
- package/dev/grid.d.ts.map +1 -1
- package/dev/grid.js +1 -0
- package/dev/grid.js.map +1 -1
- package/dev/heading.d.ts +9 -0
- package/dev/heading.d.ts.map +1 -0
- package/dev/heading.js +5 -0
- package/dev/heading.js.map +1 -0
- package/dev/index.d.ts +2 -0
- package/dev/index.d.ts.map +1 -1
- package/dev/index.js +2 -0
- package/dev/index.js.map +1 -1
- package/dev/layout.d.ts.map +1 -1
- package/dev/progress.d.ts.map +1 -1
- package/dev/router.d.ts.map +1 -1
- package/dev/split.d.ts +1 -1
- package/dev/split.d.ts.map +1 -1
- package/dev/typewriter.d.ts +1 -0
- package/dev/typewriter.d.ts.map +1 -1
- package/dev/typewriter.js +1 -0
- package/dev/typewriter.js.map +1 -1
- package/dialog.d.ts +1 -0
- package/dialog.d.ts.map +1 -1
- package/dialog.js +1 -5
- package/dialog.js.map +1 -1
- package/divider.d.ts +1 -0
- package/divider.d.ts.map +1 -1
- package/divider.js +1 -5
- package/divider.js.map +1 -1
- package/dragbox.d.ts +1 -0
- package/dragbox.d.ts.map +1 -1
- package/dragbox.js +1 -5
- package/dragbox.js.map +1 -1
- package/flex.d.ts +1 -0
- package/flex.d.ts.map +1 -1
- package/flex.js +1 -5
- package/flex.js.map +1 -1
- package/form.d.ts +1 -0
- package/form.d.ts.map +1 -1
- package/form.js +1 -5
- package/form.js.map +1 -1
- package/grid.d.ts +1 -0
- package/grid.d.ts.map +1 -1
- package/grid.js +1 -5
- package/grid.js.map +1 -1
- package/heading.d.ts +9 -0
- package/heading.d.ts.map +1 -0
- package/heading.js +2 -0
- package/heading.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.d.ts.map +1 -1
- package/index.js +1 -56
- package/index.js.map +1 -1
- package/input.js +1 -5
- package/input.js.map +1 -1
- package/layout.d.ts.map +1 -1
- package/layout.js +1 -5
- package/layout.js.map +1 -1
- package/link.js +1 -5
- package/link.js.map +1 -1
- package/package.json +13 -8
- package/progress.d.ts.map +1 -1
- package/progress.js +1 -5
- package/progress.js.map +1 -1
- package/range.js +1 -5
- package/range.js.map +1 -1
- package/rotate.js +1 -5
- package/rotate.js.map +1 -1
- package/router.d.ts.map +1 -1
- package/router.js +1 -5
- package/router.js.map +1 -1
- package/select.js +1 -5
- package/select.js.map +1 -1
- package/skeleton.js +1 -5
- package/skeleton.js.map +1 -1
- package/split.d.ts +1 -1
- package/split.d.ts.map +1 -1
- package/split.js +1 -5
- package/split.js.map +1 -1
- package/src/alert.ts +2 -0
- package/src/avatar.ts +2 -0
- package/src/badge.ts +13 -0
- package/src/button.ts +2 -0
- package/src/card.ts +2 -0
- package/src/carousel.ts +2 -0
- package/src/components/alert.ts +92 -86
- package/src/components/avatar.ts +65 -39
- package/src/components/badge.ts +110 -0
- package/src/components/breath.ts +47 -38
- package/src/components/button.ts +38 -36
- package/src/components/card.ts +45 -46
- package/src/components/carousel.ts +91 -66
- package/src/components/details.ts +79 -75
- package/src/components/dialog.ts +74 -73
- package/src/components/divider.ts +28 -13
- package/src/components/dragbox.ts +30 -25
- package/src/components/flex.ts +35 -22
- package/src/components/form.ts +12 -15
- package/src/components/grid.ts +35 -23
- package/src/components/heading.ts +123 -0
- package/src/components/input.ts +43 -37
- package/src/components/layout.ts +52 -44
- package/src/components/link.ts +13 -4
- package/src/components/progress.ts +22 -10
- package/src/components/range.ts +107 -108
- package/src/components/rotate.ts +24 -18
- package/src/components/router.ts +64 -67
- package/src/components/select.ts +94 -78
- package/src/components/skeleton.ts +70 -68
- package/src/components/split.ts +81 -67
- package/src/components/switch.ts +97 -93
- package/src/components/text.ts +55 -58
- package/src/components/time.ts +26 -13
- package/src/components/tooltip.ts +44 -32
- package/src/components/typewriter.ts +54 -61
- package/src/core/global-style.ts +34 -21
- package/src/core/super-anchor.ts +17 -14
- package/src/core/super-input.ts +76 -63
- package/src/core/super-openable.ts +8 -14
- package/src/details.ts +2 -0
- package/src/dialog.ts +2 -0
- package/src/divider.ts +2 -0
- package/src/dragbox.ts +2 -0
- package/src/flex.ts +2 -0
- package/src/form.ts +2 -0
- package/src/grid.ts +2 -0
- package/src/heading.ts +13 -0
- package/src/index.ts +2 -0
- package/src/layout.ts +1 -0
- package/src/progress.ts +1 -0
- package/src/router.ts +1 -0
- package/src/split.ts +1 -1
- package/src/typewriter.ts +2 -0
- package/switch.js +1 -5
- package/switch.js.map +1 -1
- package/text.js +1 -5
- package/text.js.map +1 -1
- package/time.js +1 -5
- package/time.js.map +1 -1
- package/tooltip.js +1 -5
- package/tooltip.js.map +1 -1
- package/typewriter.d.ts +1 -0
- package/typewriter.d.ts.map +1 -1
- package/typewriter.js +1 -5
- package/typewriter.js.map +1 -1
- package/vscode.html-custom-data.json +1 -1
- package/web-types.json +1 -1
package/src/components/router.ts
CHANGED
@@ -1,12 +1,26 @@
|
|
1
|
-
import { godown } from "@godown/element
|
2
|
-
import {
|
3
|
-
import { htmlSlot } from "@godown/element/directives/html-slot.js";
|
4
|
-
import { RouteTree } from "@godown/element/tools/route-tree.js";
|
5
|
-
import { css, type PropertyValueMap, type TemplateResult } from "lit";
|
1
|
+
import { RouteTree, godown, htmlSlot, omit, styles } from "@godown/element";
|
2
|
+
import { type PropertyValueMap, type TemplateResult, css } from "lit";
|
6
3
|
import { property, state } from "lit/decorators.js";
|
7
4
|
|
8
5
|
import { GlobalStyle } from "../core/global-style.js";
|
9
6
|
|
7
|
+
interface RouteState {
|
8
|
+
pathname: string;
|
9
|
+
params: Record<string, string>;
|
10
|
+
path: string;
|
11
|
+
}
|
12
|
+
|
13
|
+
interface RouteResult extends RouteState {
|
14
|
+
component: unknown;
|
15
|
+
}
|
16
|
+
|
17
|
+
interface RouteItem {
|
18
|
+
[key: PropertyKey]: unknown;
|
19
|
+
path: string;
|
20
|
+
render?: (state?: RouteState) => unknown;
|
21
|
+
component?: unknown;
|
22
|
+
}
|
23
|
+
|
10
24
|
const protoName = "router";
|
11
25
|
|
12
26
|
/**
|
@@ -32,50 +46,43 @@ const protoName = "router";
|
|
32
46
|
* @category navigation
|
33
47
|
*/
|
34
48
|
@godown(protoName)
|
35
|
-
@styles(css
|
36
|
-
|
37
|
-
|
49
|
+
@styles(css`
|
50
|
+
:host {
|
51
|
+
display: contents;
|
52
|
+
}
|
53
|
+
`)
|
54
|
+
class Router extends GlobalStyle {
|
55
|
+
static routerInstances: Set<Router> = new Set<Router>();
|
38
56
|
|
39
57
|
private __fieldRouteTree: RouteTree = new RouteTree();
|
40
58
|
private __slottedRouteTree: RouteTree = new RouteTree();
|
41
|
-
private __cacheRecord = new Map<string,
|
42
|
-
private __routes:
|
43
|
-
& Record<string, any>
|
44
|
-
& {
|
45
|
-
path: string;
|
46
|
-
component?: C;
|
47
|
-
}
|
48
|
-
)[];
|
59
|
+
private __cacheRecord = new Map<string, RouteResult>();
|
60
|
+
private __routes: RouteItem[];
|
49
61
|
|
50
62
|
/**
|
51
63
|
* Render result.
|
52
64
|
*/
|
53
65
|
@state()
|
54
|
-
component:
|
66
|
+
component: unknown | TemplateResult = null;
|
55
67
|
|
56
68
|
/**
|
57
69
|
* Dynamic parameters record.
|
58
70
|
*/
|
59
|
-
|
60
|
-
|
71
|
+
get params(): Record<string, string> {
|
72
|
+
return RouteTree.parseParams(this.pathname, this.path);
|
73
|
+
}
|
61
74
|
|
62
75
|
/**
|
63
76
|
* Value of matched path in routes.
|
64
77
|
*/
|
65
78
|
@state()
|
66
|
-
path
|
79
|
+
path?: string;
|
67
80
|
|
68
81
|
/**
|
69
82
|
* Current pathname (equals to location.pathname).
|
70
83
|
*/
|
71
84
|
@property()
|
72
|
-
pathname =
|
73
|
-
|
74
|
-
/**
|
75
|
-
* Path prefix.
|
76
|
-
*/
|
77
|
-
@property()
|
78
|
-
baseURL = "";
|
85
|
+
pathname: string = location.pathname;
|
79
86
|
|
80
87
|
/**
|
81
88
|
* Rendered content when there is no match.
|
@@ -107,16 +114,15 @@ class Router<C = unknown> extends GlobalStyle {
|
|
107
114
|
this.collectFieldRoutes(value);
|
108
115
|
}
|
109
116
|
|
110
|
-
get routes() {
|
117
|
+
get routes(): RouteItem[] {
|
111
118
|
return this.__routes;
|
112
119
|
}
|
113
120
|
|
114
|
-
clear() {
|
121
|
+
clear(): void {
|
115
122
|
this.__cacheRecord.clear();
|
116
123
|
}
|
117
124
|
|
118
|
-
protected render() {
|
119
|
-
this.params = {};
|
125
|
+
protected render(): unknown {
|
120
126
|
if (this.cache) {
|
121
127
|
const cached = this.__cacheRecord.get(this.pathname);
|
122
128
|
if (cached) {
|
@@ -134,13 +140,12 @@ class Router<C = unknown> extends GlobalStyle {
|
|
134
140
|
default:
|
135
141
|
this.component = this.fieldComponent() ?? this.slottedComponent();
|
136
142
|
}
|
137
|
-
return this.component ?? this.default
|
143
|
+
return this.component ?? this.default;
|
138
144
|
}
|
139
145
|
|
140
|
-
connectedCallback() {
|
146
|
+
connectedCallback(): void {
|
141
147
|
super.connectedCallback();
|
142
148
|
Router.routerInstances.add(this);
|
143
|
-
this.pathname ??= location.pathname;
|
144
149
|
|
145
150
|
if (this.type !== "field") {
|
146
151
|
const mutationObserver = new MutationObserver(this.collectSlottedRoutes);
|
@@ -153,12 +158,12 @@ class Router<C = unknown> extends GlobalStyle {
|
|
153
158
|
}
|
154
159
|
}
|
155
160
|
|
156
|
-
disconnectedCallback() {
|
161
|
+
disconnectedCallback(): void {
|
157
162
|
super.disconnectedCallback();
|
158
163
|
Router.routerInstances.delete(this);
|
159
164
|
}
|
160
165
|
|
161
|
-
useRouter() {
|
166
|
+
useRouter(): RouteResult {
|
162
167
|
return {
|
163
168
|
pathname: this.pathname,
|
164
169
|
params: this.params,
|
@@ -170,14 +175,9 @@ class Router<C = unknown> extends GlobalStyle {
|
|
170
175
|
/**
|
171
176
|
* Callback function when the route changes.
|
172
177
|
*/
|
173
|
-
routeChangeCallback: (params:
|
174
|
-
|
175
|
-
|
176
|
-
path: string;
|
177
|
-
component: C | TemplateResult;
|
178
|
-
}, first: boolean) => void = null;
|
179
|
-
|
180
|
-
protected updated(changedProperties: PropertyValueMap<this>) {
|
178
|
+
routeChangeCallback: (params: RouteResult, first: boolean) => void = null;
|
179
|
+
|
180
|
+
protected updated(changedProperties: PropertyValueMap<this>): void {
|
181
181
|
const shouldDispatch = changedProperties.has("pathname") || changedProperties.has("path");
|
182
182
|
if (shouldDispatch) {
|
183
183
|
const ur = this.useRouter();
|
@@ -193,49 +193,53 @@ class Router<C = unknown> extends GlobalStyle {
|
|
193
193
|
/**
|
194
194
|
* Get component from {@linkcode routes} by query.
|
195
195
|
*/
|
196
|
-
fieldComponent(query?: string) {
|
197
|
-
query ||= this.
|
196
|
+
fieldComponent(query?: string): unknown {
|
197
|
+
query ||= this.__fieldRouteTree.search(this.pathname)?.pattern;
|
198
198
|
this.path = query;
|
199
199
|
|
200
200
|
if (!query) {
|
201
201
|
return null;
|
202
202
|
}
|
203
203
|
|
204
|
-
this.params = this.parseParams(this.path, this.pathname);
|
205
204
|
const route = this.routes.find((r) => r.path === query);
|
206
205
|
if (!route) {
|
207
206
|
return null;
|
208
207
|
}
|
208
|
+
|
209
|
+
if ("render" in route) {
|
210
|
+
return route.render?.(omit(this.useRouter(), "component")) || null;
|
211
|
+
}
|
212
|
+
|
209
213
|
return route.component;
|
210
214
|
}
|
211
215
|
|
212
216
|
/**
|
213
217
|
* Get component from slotted elements by query.
|
214
218
|
*/
|
215
|
-
slottedComponent(
|
219
|
+
slottedComponent(query?: string): TemplateResult<1> {
|
216
220
|
const slottedPaths = this._slottedNames;
|
217
|
-
|
218
|
-
this.path =
|
221
|
+
query ||= this.__slottedRouteTree.search(this.pathname)?.pattern;
|
222
|
+
this.path = query;
|
219
223
|
|
220
|
-
if (!
|
224
|
+
if (!query) {
|
221
225
|
return null;
|
222
226
|
}
|
223
227
|
|
224
|
-
this.path = slottedPaths.find((s) => s ===
|
228
|
+
this.path = slottedPaths.find((s) => s === query);
|
225
229
|
if (!this.path) {
|
226
230
|
return null;
|
227
231
|
}
|
228
|
-
|
232
|
+
|
229
233
|
return htmlSlot(this.path);
|
230
234
|
}
|
231
235
|
|
232
236
|
/**
|
233
237
|
* Reset the route tree, clear cache, collect routes from child elements.
|
234
238
|
*/
|
235
|
-
collectSlottedRoutes() {
|
239
|
+
collectSlottedRoutes(): void {
|
236
240
|
this.__slottedRouteTree = new RouteTree();
|
237
241
|
this.clear();
|
238
|
-
this._slottedNames.forEach(slotName => {
|
242
|
+
this._slottedNames.forEach((slotName) => {
|
239
243
|
this.__slottedRouteTree.insert(slotName);
|
240
244
|
});
|
241
245
|
}
|
@@ -243,7 +247,7 @@ class Router<C = unknown> extends GlobalStyle {
|
|
243
247
|
/**
|
244
248
|
* Reset the route tree, clear cache, collect routes from value.
|
245
249
|
*/
|
246
|
-
collectFieldRoutes(value: typeof this.routes) {
|
250
|
+
collectFieldRoutes(value: typeof this.routes): void {
|
247
251
|
this.__fieldRouteTree = new RouteTree();
|
248
252
|
this.clear();
|
249
253
|
value.forEach(({ path }) => {
|
@@ -251,23 +255,16 @@ class Router<C = unknown> extends GlobalStyle {
|
|
251
255
|
});
|
252
256
|
}
|
253
257
|
|
254
|
-
|
255
|
-
return this.__fieldRouteTree.useWhich(this.baseURL + path);
|
256
|
-
}
|
257
|
-
|
258
|
-
parseParams(routeTemplate: string, path: string) {
|
259
|
-
return this.__fieldRouteTree.parseParams(path, routeTemplate);
|
260
|
-
}
|
261
|
-
|
262
|
-
static updateAll() {
|
258
|
+
static updateAll(): void {
|
263
259
|
this.routerInstances.forEach((i) => {
|
264
260
|
i.handlePopstate();
|
265
261
|
});
|
266
262
|
}
|
267
263
|
|
268
|
-
handlePopstate = this.events.add(window, "popstate", () => {
|
264
|
+
handlePopstate: () => void = this.events.add(window, "popstate", () => {
|
269
265
|
this.pathname = location.pathname;
|
270
|
-
})
|
266
|
+
});
|
271
267
|
}
|
272
268
|
|
273
269
|
export default Router;
|
270
|
+
export { Router };
|
package/src/components/select.ts
CHANGED
@@ -1,12 +1,7 @@
|
|
1
|
-
import { HandlerEvent } from "@godown/element";
|
2
|
-
import { godown } from "@godown/element/decorators/godown.js";
|
3
|
-
import { part } from "@godown/element/decorators/part.js";
|
4
|
-
import { styles } from "@godown/element/decorators/styles.js";
|
5
|
-
import { htmlSlot } from "@godown/element/directives/html-slot.js";
|
1
|
+
import { type HandlerEvent, attr, godown, htmlSlot, part, styles } from "@godown/element";
|
6
2
|
import svgCaretDown from "@godown/f7-icon/icons/chevron-down.js";
|
7
|
-
import { css, html, nothing } from "lit";
|
3
|
+
import { type TemplateResult, css, html, nothing } from "lit";
|
8
4
|
import { property, state } from "lit/decorators.js";
|
9
|
-
import { ifDefined } from "lit/directives/if-defined.js";
|
10
5
|
|
11
6
|
import Input from "./input.js";
|
12
7
|
|
@@ -44,30 +39,36 @@ const protoName = "select";
|
|
44
39
|
*
|
45
40
|
* Input will filter the element.
|
46
41
|
*
|
42
|
+
* @fires input - Fires when the input value changes.
|
43
|
+
* @fires change - Fires when the input value changes.
|
44
|
+
* @fires select - Fires when select an option.
|
47
45
|
* @slot - Options.
|
48
46
|
* @category input
|
49
47
|
*/
|
50
48
|
@godown(protoName)
|
51
|
-
@styles(
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
}
|
49
|
+
@styles(css`
|
50
|
+
[part="input"] {
|
51
|
+
text-overflow: ellipsis;
|
52
|
+
}
|
56
53
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
54
|
+
[part="content"] {
|
55
|
+
position: absolute;
|
56
|
+
width: 100%;
|
57
|
+
visibility: hidden;
|
58
|
+
}
|
61
59
|
|
62
|
-
|
63
|
-
|
64
|
-
|
60
|
+
[direction="bottom"] [part="content"] {
|
61
|
+
top: 100%;
|
62
|
+
}
|
65
63
|
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
64
|
+
[direction="top"] [part="content"] {
|
65
|
+
bottom: 100%;
|
66
|
+
}
|
67
|
+
|
68
|
+
[visible] [part="content"] {
|
69
|
+
visibility: visible;
|
70
|
+
}
|
71
|
+
`)
|
71
72
|
class Select extends Input {
|
72
73
|
// @ts-ignore
|
73
74
|
value: string | string[];
|
@@ -85,10 +86,10 @@ class Select extends Input {
|
|
85
86
|
direction: "top" | "bottom" | undefined;
|
86
87
|
|
87
88
|
@property({ type: Boolean })
|
88
|
-
multiple
|
89
|
+
multiple = false;
|
89
90
|
|
90
91
|
@property({ type: Boolean })
|
91
|
-
visible
|
92
|
+
visible = false;
|
92
93
|
|
93
94
|
@state()
|
94
95
|
protected autoDirection: "top" | "bottom" = "bottom";
|
@@ -96,37 +97,57 @@ class Select extends Input {
|
|
96
97
|
protected lastChecked: HTMLElement;
|
97
98
|
protected defaultText: string;
|
98
99
|
protected defaultChecked: HTMLElement[];
|
99
|
-
private _store: { value: string; text: string
|
100
|
+
private _store: { value: string; text: string }[] = [];
|
100
101
|
|
101
|
-
protected render() {
|
102
|
-
return html
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
102
|
+
protected render(): TemplateResult<1> {
|
103
|
+
return html`
|
104
|
+
<div
|
105
|
+
part="root"
|
106
|
+
${attr({
|
107
|
+
...this.observedRecord,
|
108
|
+
direction: this.direction || this.autoDirection,
|
109
|
+
})}
|
110
|
+
class="input-field"
|
111
|
+
>
|
112
|
+
${[
|
113
|
+
this._renderPrefix(),
|
114
|
+
html`
|
115
|
+
<input
|
116
|
+
part="input"
|
117
|
+
type="${this.type}"
|
118
|
+
.value="${this.text}"
|
119
|
+
?autofocus="${this.autofocus}"
|
120
|
+
?disabled="${this.disabled}"
|
121
|
+
autocapitalize="${this.autocapitalize || nothing}"
|
122
|
+
autocomplete="${this.autocomplete || nothing}"
|
123
|
+
placeholder="${this.placeholder || nothing}"
|
124
|
+
id="${this.makeId}"
|
125
|
+
@focus="${this._handleFocus}"
|
126
|
+
@input="${this._handleInput}"
|
127
|
+
/>
|
128
|
+
`,
|
129
|
+
html`
|
130
|
+
<label
|
131
|
+
for="${this.makeId}"
|
132
|
+
part="suffix"
|
133
|
+
>
|
134
|
+
<i part="icon">${svgCaretDown()}</i>
|
135
|
+
</label>
|
136
|
+
`,
|
137
|
+
html`
|
138
|
+
<label
|
139
|
+
for="${this.makeId}"
|
140
|
+
part="content"
|
141
|
+
>
|
142
|
+
${htmlSlot()}
|
143
|
+
</label>
|
144
|
+
`,
|
145
|
+
]}
|
146
|
+
</div>
|
147
|
+
`;
|
127
148
|
}
|
128
149
|
|
129
|
-
protected _handleFocus() {
|
150
|
+
protected _handleFocus(): void {
|
130
151
|
if (!this.direction) {
|
131
152
|
const { top, bottom } = this.getBoundingClientRect();
|
132
153
|
if (window.innerHeight - bottom < this._content.clientHeight && top > this._content.clientHeight) {
|
@@ -138,7 +159,7 @@ class Select extends Input {
|
|
138
159
|
this.visible = true;
|
139
160
|
}
|
140
161
|
|
141
|
-
protected firstUpdated() {
|
162
|
+
protected firstUpdated(): void {
|
142
163
|
this.events.add(this._content, "click", (e: HandlerEvent) => {
|
143
164
|
e.preventDefault();
|
144
165
|
e.stopPropagation();
|
@@ -164,14 +185,10 @@ class Select extends Input {
|
|
164
185
|
});
|
165
186
|
}
|
166
187
|
|
167
|
-
protected _connectedInit() {
|
188
|
+
protected _connectedInit(): void {
|
168
189
|
if (!this.value) {
|
169
190
|
const checked = [...this.querySelectorAll<HTMLElement>("[checked]")];
|
170
|
-
const list = this.multiple
|
171
|
-
? checked
|
172
|
-
: checked.length
|
173
|
-
? [this.lastChecked = checked[0]]
|
174
|
-
: [];
|
191
|
+
const list = this.multiple ? checked : checked.length ? [(this.lastChecked = checked[0])] : [];
|
175
192
|
list.forEach((element: HTMLElement) => {
|
176
193
|
const operation = this.select(this.optionValue(element), element.textContent);
|
177
194
|
updateChecked(element, operation);
|
@@ -189,23 +206,23 @@ class Select extends Input {
|
|
189
206
|
reset(): void {
|
190
207
|
this.value = this.default;
|
191
208
|
this.text = this.defaultText;
|
192
|
-
this.querySelectorAll<HTMLElement>("[checked]").forEach(element => updateChecked(element, 0));
|
193
|
-
this.defaultChecked.forEach(element => updateChecked(element, 1));
|
209
|
+
this.querySelectorAll<HTMLElement>("[checked]").forEach((element) => updateChecked(element, 0));
|
210
|
+
this.defaultChecked.forEach((element) => updateChecked(element, 1));
|
194
211
|
}
|
195
212
|
|
196
|
-
select(value: string, text?: string) {
|
213
|
+
select(value: string, text?: string): 0 | 1 {
|
197
214
|
text ||= value;
|
198
215
|
let operation: 0 | 1 = 0;
|
199
216
|
if (this.multiple) {
|
200
|
-
const i = this._store.findIndex(s => s.value === value);
|
217
|
+
const i = this._store.findIndex((s) => s.value === value);
|
201
218
|
if (i > -1) {
|
202
219
|
this._store.splice(i, 1);
|
203
220
|
} else {
|
204
221
|
this._store.push({ value, text });
|
205
222
|
operation = 1;
|
206
223
|
}
|
207
|
-
this.value = this._store.map(s => s.value);
|
208
|
-
this.text = this._store.map(s => s.text).join(", ");
|
224
|
+
this.value = this._store.map((s) => s.value);
|
225
|
+
this.text = this._store.map((s) => s.text).join(", ");
|
209
226
|
} else {
|
210
227
|
if (this.value === value) {
|
211
228
|
this.value = "";
|
@@ -216,45 +233,43 @@ class Select extends Input {
|
|
216
233
|
operation = 1;
|
217
234
|
}
|
218
235
|
}
|
219
|
-
this.dispatchEvent(new CustomEvent("
|
236
|
+
this.dispatchEvent(new CustomEvent("select", { detail: this.value, composed: true }));
|
220
237
|
this.filter();
|
221
238
|
return operation;
|
222
239
|
}
|
223
240
|
|
224
|
-
filter(query?: string) {
|
241
|
+
filter(query?: string): void {
|
225
242
|
query = query?.trim();
|
226
243
|
[...this.children].forEach((element: HTMLElement) => {
|
227
244
|
this.filterCallback(
|
228
245
|
element,
|
229
|
-
!query
|
230
|
-
|| contain(this.optionValue(element), query)
|
231
|
-
|| contain(element.textContent, query),
|
246
|
+
!query || contain(this.optionValue(element), query) || contain(element.textContent, query),
|
232
247
|
query,
|
233
248
|
);
|
234
249
|
});
|
235
250
|
}
|
236
251
|
|
237
|
-
|
238
|
-
filterCallback(element: HTMLElement, match: boolean, query: string) {
|
252
|
+
filterCallback(element: HTMLElement, match: boolean, query: string): void {
|
239
253
|
element.style.display = match ? "" : "none";
|
240
254
|
}
|
241
255
|
|
242
|
-
protected _handleInput(e: HandlerEvent<HTMLInputElement>) {
|
256
|
+
protected _handleInput(e: HandlerEvent<HTMLInputElement>): void {
|
243
257
|
e.stopPropagation();
|
244
258
|
if (this.compositing) {
|
245
259
|
return;
|
246
260
|
}
|
247
261
|
const s = this._input.value;
|
248
262
|
this.filter(this.multiple ? betweenAt(this._input.selectionStart, s, ",") : s);
|
249
|
-
this.dispatchEvent(new CustomEvent("input", { detail: this.
|
263
|
+
this.dispatchEvent(new CustomEvent("input", { detail: this.value, composed: true, bubbles: true }));
|
264
|
+
this.dispatchEvent(new CustomEvent("change", { detail: this.value, composed: true }));
|
250
265
|
}
|
251
266
|
|
252
|
-
focus(options?: FocusOptions) {
|
267
|
+
focus(options?: FocusOptions): void {
|
253
268
|
this._input.focus(options);
|
254
269
|
this.visible = true;
|
255
270
|
}
|
256
271
|
|
257
|
-
blur() {
|
272
|
+
blur(): void {
|
258
273
|
this._input.blur();
|
259
274
|
this.visible = false;
|
260
275
|
super.blur();
|
@@ -266,3 +281,4 @@ class Select extends Input {
|
|
266
281
|
}
|
267
282
|
|
268
283
|
export default Select;
|
284
|
+
export { Select };
|