godown 3.0.0-canary.8 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +8 -2
- package/components/avatar.d.ts.map +1 -1
- package/components/avatar.js +1 -61
- 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 +7 -4
- package/components/breath.d.ts.map +1 -1
- package/components/breath.js +1 -79
- package/components/breath.js.map +1 -1
- package/components/button.d.ts +19 -10
- package/components/button.d.ts.map +1 -1
- package/components/button.js +1 -165
- package/components/button.js.map +1 -1
- package/components/card.d.ts +3 -2
- package/components/card.d.ts.map +1 -1
- package/components/card.js +1 -53
- package/components/card.js.map +1 -1
- package/components/carousel.d.ts +10 -5
- package/components/carousel.d.ts.map +1 -1
- package/components/carousel.js +1 -112
- package/components/carousel.js.map +1 -1
- package/components/details.d.ts +6 -2
- package/components/details.d.ts.map +1 -1
- package/components/details.js +1 -49
- package/components/details.js.map +1 -1
- package/components/dialog.d.ts +8 -3
- package/components/dialog.d.ts.map +1 -1
- package/components/dialog.js +1 -93
- 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 +11 -9
- 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 +4 -1
- package/components/flex.d.ts.map +1 -1
- package/components/flex.js +1 -54
- package/components/flex.js.map +1 -1
- package/components/form.d.ts +3 -3
- package/components/form.d.ts.map +1 -1
- package/components/form.js +1 -77
- package/components/form.js.map +1 -1
- package/components/grid.d.ts +10 -3
- package/components/grid.d.ts.map +1 -1
- package/components/grid.js +1 -55
- 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 +7 -3
- 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 +8 -9
- package/components/layout.d.ts.map +1 -1
- package/components/layout.js +1 -46
- package/components/layout.js.map +1 -1
- package/components/link.d.ts +8 -1
- package/components/link.d.ts.map +1 -1
- package/components/link.js +1 -42
- package/components/link.js.map +1 -1
- package/components/progress.d.ts +4 -11
- package/components/progress.d.ts.map +1 -1
- package/components/progress.js +1 -67
- package/components/progress.js.map +1 -1
- package/components/range.d.ts +22 -15
- package/components/range.d.ts.map +1 -1
- package/components/range.js +1 -273
- package/components/range.js.map +1 -1
- package/components/rotate.d.ts +4 -2
- 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 +20 -24
- 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 +8 -4
- package/components/select.d.ts.map +1 -1
- package/components/select.js +1 -212
- 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 +25 -2
- package/components/split.d.ts.map +1 -1
- package/components/split.js +1 -128
- package/components/split.js.map +1 -1
- package/components/switch.d.ts +8 -5
- 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 +8 -6
- package/components/time.d.ts.map +1 -1
- package/components/time.js +1 -85
- package/components/time.js.map +1 -1
- package/components/tooltip.d.ts +14 -2
- package/components/tooltip.d.ts.map +1 -1
- package/components/tooltip.js +1 -66
- package/components/tooltip.js.map +1 -1
- package/components/typewriter.d.ts +8 -14
- 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 -45
- 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 +6 -5
- 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 +20 -23
- package/dev/components/alert.js.map +1 -1
- package/dev/components/avatar.d.ts +8 -2
- package/dev/components/avatar.d.ts.map +1 -1
- package/dev/components/avatar.js +23 -13
- 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 +107 -0
- package/dev/components/badge.js.map +1 -0
- package/dev/components/breath.d.ts +7 -4
- package/dev/components/breath.d.ts.map +1 -1
- package/dev/components/breath.js +30 -26
- package/dev/components/breath.js.map +1 -1
- package/dev/components/button.d.ts +19 -10
- package/dev/components/button.d.ts.map +1 -1
- package/dev/components/button.js +47 -28
- package/dev/components/button.js.map +1 -1
- package/dev/components/card.d.ts +3 -2
- package/dev/components/card.d.ts.map +1 -1
- package/dev/components/card.js +23 -33
- package/dev/components/card.js.map +1 -1
- package/dev/components/carousel.d.ts +10 -5
- package/dev/components/carousel.d.ts.map +1 -1
- package/dev/components/carousel.js +33 -26
- package/dev/components/carousel.js.map +1 -1
- package/dev/components/details.d.ts +6 -2
- package/dev/components/details.d.ts.map +1 -1
- package/dev/components/details.js +24 -26
- package/dev/components/details.js.map +1 -1
- package/dev/components/dialog.d.ts +8 -3
- package/dev/components/dialog.d.ts.map +1 -1
- package/dev/components/dialog.js +21 -17
- 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 +29 -17
- package/dev/components/divider.js.map +1 -1
- package/dev/components/dragbox.d.ts +11 -9
- package/dev/components/dragbox.d.ts.map +1 -1
- package/dev/components/dragbox.js +11 -4
- package/dev/components/dragbox.js.map +1 -1
- package/dev/components/flex.d.ts +4 -1
- package/dev/components/flex.d.ts.map +1 -1
- package/dev/components/flex.js +25 -9
- package/dev/components/flex.js.map +1 -1
- package/dev/components/form.d.ts +3 -3
- package/dev/components/form.d.ts.map +1 -1
- package/dev/components/form.js +2 -5
- package/dev/components/form.js.map +1 -1
- package/dev/components/grid.d.ts +10 -3
- package/dev/components/grid.d.ts.map +1 -1
- package/dev/components/grid.js +18 -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 +103 -0
- package/dev/components/heading.js.map +1 -0
- package/dev/components/input.d.ts +7 -3
- package/dev/components/input.d.ts.map +1 -1
- package/dev/components/input.js +18 -18
- package/dev/components/input.js.map +1 -1
- package/dev/components/layout.d.ts +8 -9
- package/dev/components/layout.d.ts.map +1 -1
- package/dev/components/layout.js +38 -25
- package/dev/components/layout.js.map +1 -1
- package/dev/components/link.d.ts +8 -1
- package/dev/components/link.d.ts.map +1 -1
- package/dev/components/link.js +15 -3
- package/dev/components/link.js.map +1 -1
- package/dev/components/progress.d.ts +4 -11
- package/dev/components/progress.d.ts.map +1 -1
- package/dev/components/progress.js +43 -49
- package/dev/components/progress.js.map +1 -1
- package/dev/components/range.d.ts +22 -15
- package/dev/components/range.d.ts.map +1 -1
- package/dev/components/range.js +56 -61
- package/dev/components/range.js.map +1 -1
- package/dev/components/rotate.d.ts +4 -2
- package/dev/components/rotate.d.ts.map +1 -1
- package/dev/components/rotate.js +3 -5
- package/dev/components/rotate.js.map +1 -1
- package/dev/components/router.d.ts +20 -24
- package/dev/components/router.d.ts.map +1 -1
- package/dev/components/router.js +23 -36
- package/dev/components/router.js.map +1 -1
- package/dev/components/select.d.ts +8 -4
- package/dev/components/select.d.ts.map +1 -1
- package/dev/components/select.js +44 -32
- 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 +9 -9
- package/dev/components/skeleton.js.map +1 -1
- package/dev/components/split.d.ts +25 -2
- package/dev/components/split.d.ts.map +1 -1
- package/dev/components/split.js +71 -38
- package/dev/components/split.js.map +1 -1
- package/dev/components/switch.d.ts +8 -5
- package/dev/components/switch.d.ts.map +1 -1
- package/dev/components/switch.js +28 -31
- 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 +12 -15
- package/dev/components/text.js.map +1 -1
- package/dev/components/time.d.ts +8 -6
- package/dev/components/time.d.ts.map +1 -1
- package/dev/components/time.js +8 -14
- package/dev/components/time.js.map +1 -1
- package/dev/components/tooltip.d.ts +14 -2
- package/dev/components/tooltip.d.ts.map +1 -1
- package/dev/components/tooltip.js +54 -24
- package/dev/components/tooltip.js.map +1 -1
- package/dev/components/typewriter.d.ts +8 -14
- package/dev/components/typewriter.d.ts.map +1 -1
- package/dev/components/typewriter.js +22 -37
- 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 +18 -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 +25 -23
- package/dev/core/super-anchor.js.map +1 -1
- package/dev/core/super-input.d.ts +6 -5
- package/dev/core/super-input.d.ts.map +1 -1
- package/dev/core/super-input.js +43 -36
- 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 +2 -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 +11 -6
- 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 +26 -29
- package/src/components/avatar.ts +28 -17
- package/src/components/badge.ts +107 -0
- package/src/components/breath.ts +38 -31
- package/src/components/button.ts +55 -46
- package/src/components/card.ts +26 -34
- package/src/components/carousel.ts +48 -38
- package/src/components/details.ts +27 -28
- package/src/components/dialog.ts +30 -26
- package/src/components/divider.ts +29 -17
- package/src/components/dragbox.ts +25 -19
- package/src/components/flex.ts +26 -11
- package/src/components/form.ts +7 -9
- package/src/components/grid.ts +31 -13
- package/src/components/heading.ts +105 -0
- package/src/components/input.ts +23 -22
- package/src/components/layout.ts +26 -31
- package/src/components/link.ts +15 -4
- package/src/components/progress.ts +51 -52
- package/src/components/range.ts +82 -94
- package/src/components/rotate.ts +12 -11
- package/src/components/router.ts +59 -48
- package/src/components/select.ts +59 -47
- package/src/components/skeleton.ts +13 -11
- package/src/components/split.ts +90 -49
- package/src/components/switch.ts +38 -37
- package/src/components/text.ts +14 -21
- package/src/components/time.ts +20 -14
- package/src/components/tooltip.ts +54 -29
- package/src/components/typewriter.ts +41 -47
- package/src/core/global-style.ts +33 -19
- package/src/core/super-anchor.ts +30 -26
- package/src/core/super-input.ts +54 -54
- package/src/core/super-openable.ts +7 -7
- 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,7 +1,4 @@
|
|
1
|
-
import { godown } from "@godown/element
|
2
|
-
import { styles } from "@godown/element/decorators/styles.js";
|
3
|
-
import { htmlSlot } from "@godown/element/directives/html-slot.js";
|
4
|
-
import { RouteTree } from "@godown/element/tools/route-tree.js";
|
1
|
+
import { godown, htmlSlot, RouteTree, styles } from "@godown/element";
|
5
2
|
import { css, type PropertyValueMap, type TemplateResult } from "lit";
|
6
3
|
import { property, state } from "lit/decorators.js";
|
7
4
|
|
@@ -27,12 +24,14 @@ const protoName = "router";
|
|
27
24
|
*
|
28
25
|
* If no routes are matched, the default value (no named slot) will be rendered.
|
29
26
|
*
|
27
|
+
* @slot - Display slot when there is no match.
|
28
|
+
* @slot * - Matching slot will be displayed.
|
30
29
|
* @category navigation
|
31
30
|
*/
|
32
31
|
@godown(protoName)
|
33
32
|
@styles(css`:host{display:contents;}`)
|
34
|
-
class Router
|
35
|
-
static routerInstances = new Set<Router>();
|
33
|
+
class Router extends GlobalStyle {
|
34
|
+
static routerInstances: Set<Router> = new Set<Router>();
|
36
35
|
|
37
36
|
private __fieldRouteTree: RouteTree = new RouteTree();
|
38
37
|
private __slottedRouteTree: RouteTree = new RouteTree();
|
@@ -41,7 +40,7 @@ class Router<C = unknown> extends GlobalStyle {
|
|
41
40
|
& Record<string, any>
|
42
41
|
& {
|
43
42
|
path: string;
|
44
|
-
component?:
|
43
|
+
component?: unknown;
|
45
44
|
}
|
46
45
|
)[];
|
47
46
|
|
@@ -49,32 +48,32 @@ class Router<C = unknown> extends GlobalStyle {
|
|
49
48
|
* Render result.
|
50
49
|
*/
|
51
50
|
@state()
|
52
|
-
component:
|
51
|
+
component: unknown | TemplateResult = null;
|
52
|
+
|
53
53
|
/**
|
54
54
|
* Dynamic parameters record.
|
55
55
|
*/
|
56
56
|
@state()
|
57
57
|
params: Record<string, string> = {};
|
58
|
+
|
58
59
|
/**
|
59
60
|
* Value of matched path in routes.
|
60
61
|
*/
|
61
62
|
@state()
|
62
63
|
path: string;
|
64
|
+
|
63
65
|
/**
|
64
66
|
* Current pathname (equals to location.pathname).
|
65
67
|
*/
|
66
68
|
@property()
|
67
|
-
pathname
|
68
|
-
|
69
|
-
* Path prefix.
|
70
|
-
*/
|
71
|
-
@property()
|
72
|
-
baseURL = "";
|
69
|
+
pathname: string;
|
70
|
+
|
73
71
|
/**
|
74
72
|
* Rendered content when there is no match.
|
75
73
|
*/
|
76
74
|
@state()
|
77
75
|
default: TemplateResult = htmlSlot();
|
76
|
+
|
78
77
|
/**
|
79
78
|
* The type of routing sources.
|
80
79
|
*
|
@@ -84,6 +83,7 @@ class Router<C = unknown> extends GlobalStyle {
|
|
84
83
|
*/
|
85
84
|
@property()
|
86
85
|
type: "united" | "slotted" | "field" = "united";
|
86
|
+
|
87
87
|
/**
|
88
88
|
* Cache accessed records.
|
89
89
|
*
|
@@ -97,15 +97,20 @@ class Router<C = unknown> extends GlobalStyle {
|
|
97
97
|
this.__routes = value;
|
98
98
|
this.collectFieldRoutes(value);
|
99
99
|
}
|
100
|
-
|
100
|
+
|
101
|
+
get routes(): (Record<string, any> & {
|
102
|
+
path: string;
|
103
|
+
render?: (ur: ReturnType<Router["useRouter"]>) => unknown;
|
104
|
+
component?: unknown;
|
105
|
+
})[] {
|
101
106
|
return this.__routes;
|
102
107
|
}
|
103
108
|
|
104
|
-
clear() {
|
109
|
+
clear(): void {
|
105
110
|
this.__cacheRecord.clear();
|
106
111
|
}
|
107
112
|
|
108
|
-
protected render() {
|
113
|
+
protected render(): unknown {
|
109
114
|
this.params = {};
|
110
115
|
if (this.cache) {
|
111
116
|
const cached = this.__cacheRecord.get(this.pathname);
|
@@ -127,7 +132,7 @@ class Router<C = unknown> extends GlobalStyle {
|
|
127
132
|
return this.component ?? this.default ?? null;
|
128
133
|
}
|
129
134
|
|
130
|
-
connectedCallback() {
|
135
|
+
connectedCallback(): void {
|
131
136
|
super.connectedCallback();
|
132
137
|
Router.routerInstances.add(this);
|
133
138
|
this.pathname ??= location.pathname;
|
@@ -143,12 +148,17 @@ class Router<C = unknown> extends GlobalStyle {
|
|
143
148
|
}
|
144
149
|
}
|
145
150
|
|
146
|
-
disconnectedCallback() {
|
151
|
+
disconnectedCallback(): void {
|
147
152
|
super.disconnectedCallback();
|
148
153
|
Router.routerInstances.delete(this);
|
149
154
|
}
|
150
155
|
|
151
|
-
useRouter() {
|
156
|
+
useRouter(): {
|
157
|
+
pathname: string;
|
158
|
+
params: Record<string, string>;
|
159
|
+
path: string;
|
160
|
+
component: unknown;
|
161
|
+
} {
|
152
162
|
return {
|
153
163
|
pathname: this.pathname,
|
154
164
|
params: this.params,
|
@@ -158,17 +168,16 @@ class Router<C = unknown> extends GlobalStyle {
|
|
158
168
|
}
|
159
169
|
|
160
170
|
/**
|
161
|
-
*
|
162
|
-
* @param first whether this path is loaded for the first time.
|
171
|
+
* Callback function when the route changes.
|
163
172
|
*/
|
164
173
|
routeChangeCallback: (params: {
|
165
174
|
pathname: string;
|
166
175
|
params: Record<string, string>;
|
167
176
|
path: string;
|
168
|
-
component:
|
177
|
+
component: unknown | TemplateResult;
|
169
178
|
}, first: boolean) => void = null;
|
170
179
|
|
171
|
-
protected updated(changedProperties: PropertyValueMap<this>) {
|
180
|
+
protected updated(changedProperties: PropertyValueMap<this>): void {
|
172
181
|
const shouldDispatch = changedProperties.has("pathname") || changedProperties.has("path");
|
173
182
|
if (shouldDispatch) {
|
174
183
|
const ur = this.useRouter();
|
@@ -182,12 +191,10 @@ class Router<C = unknown> extends GlobalStyle {
|
|
182
191
|
}
|
183
192
|
|
184
193
|
/**
|
185
|
-
*
|
186
|
-
* @param query Query string.
|
187
|
-
* @returns Components or null.
|
194
|
+
* Get component from {@linkcode routes} by query.
|
188
195
|
*/
|
189
|
-
fieldComponent(query?: string) {
|
190
|
-
query ||= this.
|
196
|
+
fieldComponent(query?: string): unknown {
|
197
|
+
query ||= this.__fieldRouteTree.search(this.pathname)?.pattern;
|
191
198
|
this.path = query;
|
192
199
|
|
193
200
|
if (!query) {
|
@@ -199,35 +206,38 @@ class Router<C = unknown> extends GlobalStyle {
|
|
199
206
|
if (!route) {
|
200
207
|
return null;
|
201
208
|
}
|
209
|
+
|
210
|
+
if ("render" in route) {
|
211
|
+
return route.render?.(this.useRouter()) || null;
|
212
|
+
}
|
213
|
+
|
202
214
|
return route.component;
|
203
215
|
}
|
204
216
|
|
205
217
|
/**
|
206
|
-
*
|
207
|
-
* @param query Query string.
|
208
|
-
* @returns Named slot element template result or null.
|
218
|
+
* Get component from slotted elements by query.
|
209
219
|
*/
|
210
|
-
slottedComponent(
|
220
|
+
slottedComponent(query?: string): TemplateResult<1> {
|
211
221
|
const slottedPaths = this._slottedNames;
|
212
|
-
|
213
|
-
this.path =
|
222
|
+
query ||= this.__slottedRouteTree.search(this.pathname)?.pattern;
|
223
|
+
this.path = query;
|
214
224
|
|
215
|
-
if (!
|
225
|
+
if (!query) {
|
216
226
|
return null;
|
217
227
|
}
|
218
228
|
|
219
|
-
this.path = slottedPaths.find((s) => s ===
|
229
|
+
this.path = slottedPaths.find((s) => s === query);
|
220
230
|
if (!this.path) {
|
221
231
|
return null;
|
222
232
|
}
|
223
|
-
this.params = this.parseParams(
|
233
|
+
this.params = this.parseParams(query, this.pathname);
|
224
234
|
return htmlSlot(this.path);
|
225
235
|
}
|
226
236
|
|
227
237
|
/**
|
228
238
|
* Reset the route tree, clear cache, collect routes from child elements.
|
229
239
|
*/
|
230
|
-
collectSlottedRoutes() {
|
240
|
+
collectSlottedRoutes(): void {
|
231
241
|
this.__slottedRouteTree = new RouteTree();
|
232
242
|
this.clear();
|
233
243
|
this._slottedNames.forEach(slotName => {
|
@@ -238,7 +248,7 @@ class Router<C = unknown> extends GlobalStyle {
|
|
238
248
|
/**
|
239
249
|
* Reset the route tree, clear cache, collect routes from value.
|
240
250
|
*/
|
241
|
-
collectFieldRoutes(value: typeof this.routes) {
|
251
|
+
collectFieldRoutes(value: typeof this.routes): void {
|
242
252
|
this.__fieldRouteTree = new RouteTree();
|
243
253
|
this.clear();
|
244
254
|
value.forEach(({ path }) => {
|
@@ -246,19 +256,20 @@ class Router<C = unknown> extends GlobalStyle {
|
|
246
256
|
});
|
247
257
|
}
|
248
258
|
|
249
|
-
|
250
|
-
return
|
259
|
+
parseParams(routeTemplate: string, path: string = this.pathname): Record<string, string> {
|
260
|
+
return RouteTree.parseParams(path, routeTemplate);
|
251
261
|
}
|
252
262
|
|
253
|
-
|
254
|
-
return this.__fieldRouteTree.parseParams(path, routeTemplate);
|
255
|
-
}
|
256
|
-
|
257
|
-
static updateAll() {
|
263
|
+
static updateAll(): void {
|
258
264
|
this.routerInstances.forEach((i) => {
|
259
|
-
i.
|
265
|
+
i.handlePopstate();
|
260
266
|
});
|
261
267
|
}
|
268
|
+
|
269
|
+
handlePopstate = this.events.add(window, "popstate", () => {
|
270
|
+
this.pathname = location.pathname;
|
271
|
+
}) as () => void;
|
262
272
|
}
|
263
273
|
|
264
274
|
export default Router;
|
275
|
+
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 { attr, godown, type HandlerEvent, 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 { css, html, nothing, type TemplateResult } 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,32 +39,39 @@ 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
49
|
@styles(
|
52
50
|
css`
|
53
|
-
[part=
|
51
|
+
[part=input] {
|
54
52
|
text-overflow: ellipsis;
|
55
53
|
}
|
56
54
|
|
57
|
-
[part=
|
55
|
+
[part=content] {
|
58
56
|
position: absolute;
|
59
57
|
width: 100%;
|
58
|
+
visibility: hidden;
|
60
59
|
}
|
61
60
|
|
62
|
-
[direction=
|
61
|
+
[direction=bottom] [part=content] {
|
63
62
|
top: 100%;
|
64
63
|
}
|
65
64
|
|
66
|
-
[direction=
|
65
|
+
[direction=top] [part=content] {
|
67
66
|
bottom: 100%;
|
68
67
|
}
|
68
|
+
|
69
|
+
[visible] [part=content] {
|
70
|
+
visibility: visible
|
71
|
+
}
|
69
72
|
`,
|
70
73
|
)
|
71
74
|
class Select extends Input {
|
72
|
-
_cache = new WeakMap<HTMLElement, boolean>();
|
73
75
|
// @ts-ignore
|
74
76
|
value: string | string[];
|
75
77
|
|
@@ -80,53 +82,61 @@ class Select extends Input {
|
|
80
82
|
text: string;
|
81
83
|
|
82
84
|
@part("content")
|
83
|
-
_content: HTMLElement;
|
85
|
+
protected _content: HTMLElement;
|
84
86
|
|
85
87
|
@property()
|
86
88
|
direction: "top" | "bottom" | undefined;
|
87
89
|
|
88
90
|
@property({ type: Boolean })
|
89
|
-
multiple
|
91
|
+
multiple = false;
|
90
92
|
|
91
93
|
@property({ type: Boolean })
|
92
|
-
visible
|
94
|
+
visible = false;
|
93
95
|
|
94
96
|
@state()
|
95
97
|
protected autoDirection: "top" | "bottom" = "bottom";
|
98
|
+
|
96
99
|
protected lastChecked: HTMLElement;
|
97
100
|
protected defaultText: string;
|
98
101
|
protected defaultChecked: HTMLElement[];
|
99
102
|
private _store: { value: string; text: string; }[] = [];
|
100
103
|
|
101
|
-
protected render() {
|
102
|
-
return html`<div
|
103
|
-
|
104
|
+
protected render(): TemplateResult<1> {
|
105
|
+
return html`<div
|
106
|
+
part="root"
|
107
|
+
${
|
108
|
+
attr({
|
109
|
+
...this.observedRecord,
|
110
|
+
direction: this.direction || this.autoDirection,
|
111
|
+
})
|
112
|
+
}
|
113
|
+
class="input-field"
|
114
|
+
>
|
115
|
+
${[
|
104
116
|
this._renderPrefix(),
|
105
117
|
html`<input
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
118
|
+
part="input"
|
119
|
+
dir="${this.dir || nothing}"
|
120
|
+
id="${this.makeId}"
|
121
|
+
.value="${this.text}"
|
122
|
+
type="${this.type}"
|
123
|
+
placeholder="${this.placeholder || nothing}"
|
124
|
+
?autofocus="${this.autofocus}"
|
125
|
+
autocapitalize="${this.autocapitalize || nothing}"
|
126
|
+
autocomplete="${this.autocomplete || nothing}"
|
127
|
+
?disabled="${this.disabled}"
|
128
|
+
@focus="${this._handleFocus}"
|
129
|
+
@input="${this._handleInput}"
|
130
|
+
>`,
|
119
131
|
html`<label for="${this.makeId}" part="suffix">
|
120
|
-
|
121
|
-
|
122
|
-
html`<label for="${this.makeId}" part="content"
|
123
|
-
style="visibility:${this.visible ? "visible" : "hidden"}"
|
124
|
-
direction="${this.direction || this.autoDirection}">${htmlSlot()}</label>`,
|
132
|
+
<i part="icon">${svgCaretDown()}</i>
|
133
|
+
</label>`,
|
134
|
+
html`<label for="${this.makeId}" part="content"> ${htmlSlot()} </label>`,
|
125
135
|
]}
|
126
136
|
</div>`;
|
127
137
|
}
|
128
138
|
|
129
|
-
protected _handleFocus() {
|
139
|
+
protected _handleFocus(): void {
|
130
140
|
if (!this.direction) {
|
131
141
|
const { top, bottom } = this.getBoundingClientRect();
|
132
142
|
if (window.innerHeight - bottom < this._content.clientHeight && top > this._content.clientHeight) {
|
@@ -138,7 +148,7 @@ class Select extends Input {
|
|
138
148
|
this.visible = true;
|
139
149
|
}
|
140
150
|
|
141
|
-
protected firstUpdated() {
|
151
|
+
protected firstUpdated(): void {
|
142
152
|
this.events.add(this._content, "click", (e: HandlerEvent) => {
|
143
153
|
e.preventDefault();
|
144
154
|
e.stopPropagation();
|
@@ -164,7 +174,7 @@ class Select extends Input {
|
|
164
174
|
});
|
165
175
|
}
|
166
176
|
|
167
|
-
protected _connectedInit() {
|
177
|
+
protected _connectedInit(): void {
|
168
178
|
if (!this.value) {
|
169
179
|
const checked = [...this.querySelectorAll<HTMLElement>("[checked]")];
|
170
180
|
const list = this.multiple
|
@@ -193,7 +203,7 @@ class Select extends Input {
|
|
193
203
|
this.defaultChecked.forEach(element => updateChecked(element, 1));
|
194
204
|
}
|
195
205
|
|
196
|
-
select(value: string, text?: string) {
|
206
|
+
select(value: string, text?: string): 0 | 1 {
|
197
207
|
text ||= value;
|
198
208
|
let operation: 0 | 1 = 0;
|
199
209
|
if (this.multiple) {
|
@@ -216,12 +226,12 @@ class Select extends Input {
|
|
216
226
|
operation = 1;
|
217
227
|
}
|
218
228
|
}
|
219
|
-
this.dispatchEvent(new CustomEvent("
|
229
|
+
this.dispatchEvent(new CustomEvent("select", { detail: this.value, composed: true }));
|
220
230
|
this.filter();
|
221
231
|
return operation;
|
222
232
|
}
|
223
233
|
|
224
|
-
filter(query?: string) {
|
234
|
+
filter(query?: string): void {
|
225
235
|
query = query?.trim();
|
226
236
|
[...this.children].forEach((element: HTMLElement) => {
|
227
237
|
this.filterCallback(
|
@@ -235,26 +245,27 @@ class Select extends Input {
|
|
235
245
|
}
|
236
246
|
|
237
247
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
238
|
-
filterCallback(element: HTMLElement, match: boolean, query: string) {
|
248
|
+
filterCallback(element: HTMLElement, match: boolean, query: string): void {
|
239
249
|
element.style.display = match ? "" : "none";
|
240
250
|
}
|
241
251
|
|
242
|
-
protected _handleInput(e: HandlerEvent<HTMLInputElement>) {
|
252
|
+
protected _handleInput(e: HandlerEvent<HTMLInputElement>): void {
|
243
253
|
e.stopPropagation();
|
244
254
|
if (this.compositing) {
|
245
255
|
return;
|
246
256
|
}
|
247
257
|
const s = this._input.value;
|
248
258
|
this.filter(this.multiple ? betweenAt(this._input.selectionStart, s, ",") : s);
|
249
|
-
this.dispatchEvent(new CustomEvent("input", { detail: this.
|
259
|
+
this.dispatchEvent(new CustomEvent("input", { detail: this.value, composed: true, bubbles: true }));
|
260
|
+
this.dispatchEvent(new CustomEvent("change", { detail: this.value, composed: true }));
|
250
261
|
}
|
251
262
|
|
252
|
-
focus(options?: FocusOptions) {
|
263
|
+
focus(options?: FocusOptions): void {
|
253
264
|
this._input.focus(options);
|
254
265
|
this.visible = true;
|
255
266
|
}
|
256
267
|
|
257
|
-
blur() {
|
268
|
+
blur(): void {
|
258
269
|
this._input.blur();
|
259
270
|
this.visible = false;
|
260
271
|
super.blur();
|
@@ -266,3 +277,4 @@ class Select extends Input {
|
|
266
277
|
}
|
267
278
|
|
268
279
|
export default Select;
|
280
|
+
export { Select };
|
@@ -1,8 +1,6 @@
|
|
1
|
-
import { godown } from "@godown/element
|
2
|
-
import { styles } from "@godown/element/decorators/styles.js";
|
3
|
-
import { htmlSlot } from "@godown/element/directives/html-slot.js";
|
1
|
+
import { attr, godown, htmlSlot, styles } from "@godown/element";
|
4
2
|
import iconPhoto from "@godown/f7-icon/icons/photo.js";
|
5
|
-
import { css, html } from "lit";
|
3
|
+
import { css, html, type TemplateResult } from "lit";
|
6
4
|
import { property, state } from "lit/decorators.js";
|
7
5
|
|
8
6
|
import { cssGlobalVars, GlobalStyle, scopePrefix } from "../core/global-style.js";
|
@@ -36,7 +34,7 @@ const cssScope = scopePrefix(protoName);
|
|
36
34
|
overflow: hidden;
|
37
35
|
}
|
38
36
|
|
39
|
-
[part=
|
37
|
+
[part=root] {
|
40
38
|
height: 100%;
|
41
39
|
min-height: inherit;
|
42
40
|
text-align: center;
|
@@ -49,7 +47,7 @@ const cssScope = scopePrefix(protoName);
|
|
49
47
|
margin: calc(var(--size) * 0.05);
|
50
48
|
}
|
51
49
|
|
52
|
-
|
50
|
+
[animation=position] {
|
53
51
|
background-image: linear-gradient(
|
54
52
|
var(${cssScope}--deg),
|
55
53
|
var(${cssScope}--from) 36%,
|
@@ -70,7 +68,7 @@ const cssScope = scopePrefix(protoName);
|
|
70
68
|
}
|
71
69
|
}
|
72
70
|
|
73
|
-
|
71
|
+
[animation=opacity] {
|
74
72
|
animation-name: op;
|
75
73
|
animation-direction: alternate;
|
76
74
|
}
|
@@ -91,26 +89,30 @@ class Skeleton extends GlobalStyle {
|
|
91
89
|
*/
|
92
90
|
@property()
|
93
91
|
type: "text" | "image";
|
92
|
+
|
94
93
|
/**
|
95
94
|
* Animation type.
|
96
95
|
* opacity animation only effect on slotted element and image icon.
|
97
96
|
*/
|
98
97
|
@property()
|
99
98
|
animation: "position" | "opacity" = "position";
|
99
|
+
|
100
100
|
/**
|
101
101
|
* If false, render slot only.
|
102
102
|
*/
|
103
103
|
@state()
|
104
104
|
loading = true;
|
105
105
|
|
106
|
-
protected render() {
|
106
|
+
protected render(): TemplateResult<1> {
|
107
107
|
if (!this.loading) {
|
108
108
|
return htmlSlot();
|
109
109
|
}
|
110
|
-
return html`<div part="root"
|
111
|
-
|
112
|
-
|
110
|
+
return html`<div part="root" ${attr(this.observedRecord)}>
|
111
|
+
${this.type === "image" ? iconPhoto() : ""}
|
112
|
+
${htmlSlot("loading")}
|
113
|
+
</div>`;
|
113
114
|
}
|
114
115
|
}
|
115
116
|
|
116
117
|
export default Skeleton;
|
118
|
+
export { Skeleton };
|