termcast 1.3.48 → 1.3.50
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/dist/build.d.ts.map +1 -1
- package/dist/build.js +12 -0
- package/dist/build.js.map +1 -1
- package/dist/cli.js +5 -40
- package/dist/cli.js.map +1 -1
- package/dist/colors.d.ts +7 -7
- package/dist/colors.js +7 -7
- package/dist/compile.d.ts +6 -1
- package/dist/compile.d.ts.map +1 -1
- package/dist/compile.js +45 -26
- package/dist/compile.js.map +1 -1
- package/dist/components/actions.js +1 -1
- package/dist/components/actions.js.map +1 -1
- package/dist/components/bar-chart.d.ts +38 -0
- package/dist/components/bar-chart.d.ts.map +1 -0
- package/dist/components/bar-chart.js +158 -0
- package/dist/components/bar-chart.js.map +1 -0
- package/dist/components/bar-graph.d.ts +41 -0
- package/dist/components/bar-graph.d.ts.map +1 -0
- package/dist/components/bar-graph.js +95 -0
- package/dist/components/bar-graph.js.map +1 -0
- package/dist/components/detail.d.ts.map +1 -1
- package/dist/components/detail.js +5 -7
- package/dist/components/detail.js.map +1 -1
- package/dist/components/footer.d.ts.map +1 -1
- package/dist/components/footer.js +8 -9
- package/dist/components/footer.js.map +1 -1
- package/dist/components/form/date-picker.d.ts.map +1 -1
- package/dist/components/form/date-picker.js +7 -1
- package/dist/components/form/date-picker.js.map +1 -1
- package/dist/components/form/dropdown.d.ts.map +1 -1
- package/dist/components/form/dropdown.js +10 -2
- package/dist/components/form/dropdown.js.map +1 -1
- package/dist/components/form/index.d.ts.map +1 -1
- package/dist/components/form/index.js +4 -5
- package/dist/components/form/index.js.map +1 -1
- package/dist/components/form/use-form-navigation.d.ts.map +1 -1
- package/dist/components/form/use-form-navigation.js +6 -0
- package/dist/components/form/use-form-navigation.js.map +1 -1
- package/dist/components/graph.d.ts +111 -0
- package/dist/components/graph.d.ts.map +1 -0
- package/dist/components/graph.js +392 -0
- package/dist/components/graph.js.map +1 -0
- package/dist/components/icon.js +5 -5
- package/dist/components/icon.js.map +1 -1
- package/dist/components/list.d.ts +53 -5
- package/dist/components/list.d.ts.map +1 -1
- package/dist/components/list.js +125 -71
- package/dist/components/list.js.map +1 -1
- package/dist/components/loading-bar.js +3 -3
- package/dist/components/loading-bar.js.map +1 -1
- package/dist/components/loading-text.d.ts +1 -1
- package/dist/components/loading-text.d.ts.map +1 -1
- package/dist/components/loading-text.js +3 -1
- package/dist/components/loading-text.js.map +1 -1
- package/dist/components/metadata.js +2 -2
- package/dist/components/metadata.js.map +1 -1
- package/dist/components/row.d.ts +10 -0
- package/dist/components/row.d.ts.map +1 -0
- package/dist/components/row.js +12 -0
- package/dist/components/row.js.map +1 -0
- package/dist/components/table.d.ts +57 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +365 -0
- package/dist/components/table.js.map +1 -0
- package/dist/descendants.js +13 -13
- package/dist/descendants.js.map +1 -1
- package/dist/examples/bar-graph-weekly.d.ts +2 -0
- package/dist/examples/bar-graph-weekly.d.ts.map +1 -0
- package/dist/examples/bar-graph-weekly.js +95 -0
- package/dist/examples/bar-graph-weekly.js.map +1 -0
- package/dist/examples/components-weird-places.d.ts +2 -0
- package/dist/examples/components-weird-places.d.ts.map +1 -0
- package/dist/examples/components-weird-places.js +46 -0
- package/dist/examples/components-weird-places.js.map +1 -0
- package/dist/examples/graph-bar-chart.d.ts +2 -0
- package/dist/examples/graph-bar-chart.d.ts.map +1 -0
- package/dist/examples/graph-bar-chart.js +270 -0
- package/dist/examples/graph-bar-chart.js.map +1 -0
- package/dist/examples/graph-multi-series.d.ts +2 -0
- package/dist/examples/graph-multi-series.d.ts.map +1 -0
- package/dist/examples/graph-multi-series.js +23 -0
- package/dist/examples/graph-multi-series.js.map +1 -0
- package/dist/examples/graph-polymarket.d.ts +2 -0
- package/dist/examples/graph-polymarket.d.ts.map +1 -0
- package/dist/examples/graph-polymarket.js +109 -0
- package/dist/examples/graph-polymarket.js.map +1 -0
- package/dist/examples/graph-row.d.ts +2 -0
- package/dist/examples/graph-row.d.ts.map +1 -0
- package/dist/examples/graph-row.js +226 -0
- package/dist/examples/graph-row.js.map +1 -0
- package/dist/examples/graph-styles.d.ts +2 -0
- package/dist/examples/graph-styles.d.ts.map +1 -0
- package/dist/examples/graph-styles.js +316 -0
- package/dist/examples/graph-styles.js.map +1 -0
- package/dist/examples/list-accessory-table.d.ts +2 -0
- package/dist/examples/list-accessory-table.d.ts.map +1 -0
- package/dist/examples/list-accessory-table.js +46 -0
- package/dist/examples/list-accessory-table.js.map +1 -0
- package/dist/examples/list-item-accessories.d.ts +2 -0
- package/dist/examples/list-item-accessories.d.ts.map +1 -0
- package/dist/examples/list-item-accessories.js +27 -0
- package/dist/examples/list-item-accessories.js.map +1 -0
- package/dist/examples/list-no-actions.d.ts +2 -0
- package/dist/examples/list-no-actions.d.ts.map +1 -0
- package/dist/examples/list-no-actions.js +7 -0
- package/dist/examples/list-no-actions.js.map +1 -0
- package/dist/examples/simple-detail-table.d.ts +2 -0
- package/dist/examples/simple-detail-table.d.ts.map +1 -0
- package/dist/examples/simple-detail-table.js +45 -0
- package/dist/examples/simple-detail-table.js.map +1 -0
- package/dist/examples/simple-graph.d.ts +2 -0
- package/dist/examples/simple-graph.d.ts.map +1 -0
- package/dist/examples/simple-graph.js +32 -0
- package/dist/examples/simple-graph.js.map +1 -0
- package/dist/examples/simple-table-wrap.d.ts +2 -0
- package/dist/examples/simple-table-wrap.d.ts.map +1 -0
- package/dist/examples/simple-table-wrap.js +37 -0
- package/dist/examples/simple-table-wrap.js.map +1 -0
- package/dist/examples/table-edge-cases.d.ts +2 -0
- package/dist/examples/table-edge-cases.d.ts.map +1 -0
- package/dist/examples/table-edge-cases.js +70 -0
- package/dist/examples/table-edge-cases.js.map +1 -0
- package/dist/examples/table-flex-grow.d.ts +2 -0
- package/dist/examples/table-flex-grow.d.ts.map +1 -0
- package/dist/examples/table-flex-grow.js +18 -0
- package/dist/examples/table-flex-grow.js.map +1 -0
- package/dist/extensions/dev.d.ts.map +1 -1
- package/dist/extensions/dev.js +5 -1
- package/dist/extensions/dev.js.map +1 -1
- package/dist/globals.d.ts +1 -0
- package/dist/globals.d.ts.map +1 -1
- package/dist/globals.js +2 -0
- package/dist/globals.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/internal/date-picker-widget.d.ts.map +1 -1
- package/dist/internal/date-picker-widget.js +4 -0
- package/dist/internal/date-picker-widget.js.map +1 -1
- package/dist/internal/providers.d.ts.map +1 -1
- package/dist/internal/providers.js +1 -3
- package/dist/internal/providers.js.map +1 -1
- package/dist/markdown-utils.d.ts +22 -1
- package/dist/markdown-utils.d.ts.map +1 -1
- package/dist/markdown-utils.js +66 -1
- package/dist/markdown-utils.js.map +1 -1
- package/dist/opentui.d.ts +4 -0
- package/dist/opentui.d.ts.map +1 -0
- package/dist/opentui.js +3 -0
- package/dist/opentui.js.map +1 -0
- package/dist/release.d.ts +2 -1
- package/dist/release.d.ts.map +1 -1
- package/dist/release.js +2 -1
- package/dist/release.js.map +1 -1
- package/dist/state.d.ts +1 -0
- package/dist/state.d.ts.map +1 -1
- package/dist/state.js +1 -1
- package/dist/state.js.map +1 -1
- package/dist/theme.d.ts +1 -0
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +13 -0
- package/dist/theme.js.map +1 -1
- package/dist/themes/nerv.json +227 -0
- package/dist/themes/termcast.json +72 -71
- package/dist/themes.d.ts +2 -1
- package/dist/themes.d.ts.map +1 -1
- package/dist/themes.js +7 -5
- package/dist/themes.js.map +1 -1
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +3 -0
- package/dist/utils.js.map +1 -1
- package/package.json +13 -5
- package/src/build.tsx +13 -0
- package/src/cli.tsx +5 -49
- package/src/colors.tsx +7 -7
- package/src/compile.tsx +52 -29
- package/src/components/actions.tsx +1 -1
- package/src/components/bar-chart.tsx +271 -0
- package/src/components/bar-graph.tsx +214 -0
- package/src/components/detail.tsx +7 -8
- package/src/components/footer.tsx +14 -15
- package/src/components/form/date-picker.tsx +9 -0
- package/src/components/form/dropdown.tsx +13 -3
- package/src/components/form/index.tsx +4 -6
- package/src/components/form/use-form-navigation.tsx +6 -0
- package/src/components/graph.tsx +506 -0
- package/src/components/icon.tsx +5 -5
- package/src/components/list.tsx +210 -102
- package/src/components/loading-bar.tsx +3 -3
- package/src/components/loading-text.tsx +4 -2
- package/src/components/metadata.tsx +2 -2
- package/src/components/row.tsx +31 -0
- package/src/components/table.tsx +511 -0
- package/src/descendants.tsx +13 -13
- package/src/examples/action-shortcut.vitest.tsx +1 -1
- package/src/examples/actions-context.vitest.tsx +1 -1
- package/src/examples/bar-graph-weekly.tsx +264 -0
- package/src/examples/bar-graph-weekly.vitest.tsx +275 -0
- package/src/examples/detail-metadata-showcase.vitest.tsx +8 -8
- package/src/examples/form-basic.vitest.tsx +239 -0
- package/src/examples/form-dropdown.vitest.tsx +29 -29
- package/src/examples/form-tagpicker.vitest.tsx +27 -27
- package/src/examples/github.vitest.tsx +4 -4
- package/src/examples/graph-bar-chart.tsx +408 -0
- package/src/examples/graph-bar-chart.vitest.tsx +283 -0
- package/src/examples/graph-multi-series.tsx +36 -0
- package/src/examples/graph-multi-series.vitest.tsx +89 -0
- package/src/examples/graph-polymarket.tsx +182 -0
- package/src/examples/graph-polymarket.vitest.tsx +130 -0
- package/src/examples/graph-row.tsx +347 -0
- package/src/examples/graph-row.vitest.tsx +295 -0
- package/src/examples/graph-styles.tsx +457 -0
- package/src/examples/graph-styles.vitest.tsx +322 -0
- package/src/examples/list-accessory-table.tsx +77 -0
- package/src/examples/list-detail-metadata.vitest.tsx +21 -21
- package/src/examples/list-dropdown-default.vitest.tsx +12 -12
- package/src/examples/list-item-accessories.tsx +106 -0
- package/src/examples/list-item-accessories.vitest.tsx +115 -0
- package/src/examples/list-no-actions.tsx +18 -0
- package/src/examples/list-no-actions.vitest.tsx +97 -0
- package/src/examples/list-spacing-mode.vitest.tsx +6 -6
- package/src/examples/list-with-detail.vitest.tsx +92 -92
- package/src/examples/list-with-dropdown.vitest.tsx +49 -6
- package/src/examples/list-with-sections.vitest.tsx +61 -56
- package/src/examples/simple-detail-markdown.vitest.tsx +21 -17
- package/src/examples/simple-detail-table.tsx +65 -0
- package/src/examples/simple-detail-table.vitest.tsx +200 -0
- package/src/examples/simple-graph.tsx +51 -0
- package/src/examples/simple-graph.vitest.tsx +124 -0
- package/src/examples/simple-grid.vitest.tsx +3 -3
- package/src/examples/simple-list-search.vitest.tsx +65 -0
- package/src/examples/simple-navigation.vitest.tsx +3 -3
- package/src/examples/simple-table-wrap.tsx +55 -0
- package/src/examples/simple-table-wrap.vitest.tsx +91 -0
- package/src/examples/store.vitest.tsx +1 -1
- package/src/examples/table-edge-cases.tsx +72 -0
- package/src/examples/table-edge-cases.vitest.tsx +307 -0
- package/src/examples/table-flex-grow.tsx +53 -0
- package/src/examples/table-flex-grow.vitest.tsx +124 -0
- package/src/extensions/dev.tsx +7 -1
- package/src/globals.ts +3 -0
- package/src/index.tsx +31 -0
- package/src/internal/date-picker-widget.tsx +4 -0
- package/src/internal/providers.tsx +1 -4
- package/src/markdown-utils.tsx +82 -1
- package/src/opentui.tsx +5 -0
- package/src/release.tsx +3 -0
- package/src/state.tsx +2 -1
- package/src/theme.tsx +14 -0
- package/src/themes/nerv.json +231 -0
- package/src/themes/termcast.json +75 -71
- package/src/themes.ts +8 -5
- package/src/utils.tsx +4 -0
|
@@ -678,3 +678,242 @@ test('form scrolls with mouse wheel', async () => {
|
|
|
678
678
|
"
|
|
679
679
|
`)
|
|
680
680
|
}, 10000)
|
|
681
|
+
|
|
682
|
+
test('arrow down from checkbox to dropdown lands on first item', async () => {
|
|
683
|
+
await session.text({
|
|
684
|
+
waitFor: (text) => {
|
|
685
|
+
return /Form Component Demo/i.test(text)
|
|
686
|
+
},
|
|
687
|
+
})
|
|
688
|
+
|
|
689
|
+
// Navigate to Checkbox via tab: Description → Username → Password → Bio → Checkbox
|
|
690
|
+
await session.press('tab')
|
|
691
|
+
await session.press('tab')
|
|
692
|
+
await session.press('tab')
|
|
693
|
+
await session.press('tab')
|
|
694
|
+
|
|
695
|
+
const checkboxFocused = await session.text()
|
|
696
|
+
expect(checkboxFocused).toContain('Email Preferences')
|
|
697
|
+
|
|
698
|
+
// Arrow down from Checkbox should focus the Country dropdown
|
|
699
|
+
// Bug: the dropdown also processes the arrow and moves cursor to index 1 (Canada)
|
|
700
|
+
// Expected: cursor stays at index 0 (United States)
|
|
701
|
+
await session.press('down')
|
|
702
|
+
|
|
703
|
+
const afterDown = await session.text()
|
|
704
|
+
expect(afterDown).toMatchInlineSnapshot(`
|
|
705
|
+
"
|
|
706
|
+
|
|
707
|
+
|
|
708
|
+
|
|
709
|
+
|
|
710
|
+
│ Required field
|
|
711
|
+
│
|
|
712
|
+
◇ Password
|
|
713
|
+
│ Enter secure password
|
|
714
|
+
│
|
|
715
|
+
│ Must be at least 8 characters
|
|
716
|
+
│
|
|
717
|
+
◇ Biography
|
|
718
|
+
│ Tell us about yourself...
|
|
719
|
+
│
|
|
720
|
+
│
|
|
721
|
+
│ █
|
|
722
|
+
│ ▀
|
|
723
|
+
│ Maximum 500 characters
|
|
724
|
+
│
|
|
725
|
+
◇ Email Preferences
|
|
726
|
+
│ ○ Subscribe to newsletter
|
|
727
|
+
│
|
|
728
|
+
│ Receive weekly updates
|
|
729
|
+
│
|
|
730
|
+
◆ Country
|
|
731
|
+
│ Select your country
|
|
732
|
+
│
|
|
733
|
+
│ Americas
|
|
734
|
+
│› ○ United States
|
|
735
|
+
│ ○ Canada
|
|
736
|
+
│ ○ Mexico
|
|
737
|
+
│ Europe
|
|
738
|
+
│
|
|
739
|
+
│ Your country of residence
|
|
740
|
+
│
|
|
741
|
+
◇ Empty Dropdown
|
|
742
|
+
│ No items available
|
|
743
|
+
│
|
|
744
|
+
◇ Minimal Field
|
|
745
|
+
│ No info text
|
|
746
|
+
│
|
|
747
|
+
◇ Date of Birth
|
|
748
|
+
│
|
|
749
|
+
│ ← 2026 →
|
|
750
|
+
│ ← February →
|
|
751
|
+
|
|
752
|
+
|
|
753
|
+
ctrl ↵ submit tab navigate ^k actions
|
|
754
|
+
|
|
755
|
+
"
|
|
756
|
+
`)
|
|
757
|
+
|
|
758
|
+
// The cursor (›) should be on United States (index 0), not Canada (index 1)
|
|
759
|
+
expect(afterDown).toMatch(/›.*United States/)
|
|
760
|
+
}, 10000)
|
|
761
|
+
|
|
762
|
+
test('arrow down on last dropdown item moves focus to next form field', async () => {
|
|
763
|
+
await session.text({
|
|
764
|
+
waitFor: (text) => {
|
|
765
|
+
return /Form Component Demo/i.test(text)
|
|
766
|
+
},
|
|
767
|
+
})
|
|
768
|
+
|
|
769
|
+
// Description → Username → Password → Biography → Email Preferences
|
|
770
|
+
await session.press('tab')
|
|
771
|
+
await session.press('tab')
|
|
772
|
+
await session.press('tab')
|
|
773
|
+
await session.press('tab')
|
|
774
|
+
|
|
775
|
+
// Move from checkbox to country dropdown first item (United States)
|
|
776
|
+
await session.press('down')
|
|
777
|
+
|
|
778
|
+
// Move to last country option (Germany)
|
|
779
|
+
await session.press('down')
|
|
780
|
+
await session.press('down')
|
|
781
|
+
await session.press('down')
|
|
782
|
+
await session.press('down')
|
|
783
|
+
await session.press('down')
|
|
784
|
+
|
|
785
|
+
const focusedLastItemSnapshot = await session.text()
|
|
786
|
+
expect(focusedLastItemSnapshot).toMatch(/›.*Germany/)
|
|
787
|
+
|
|
788
|
+
// Repro: this should move focus to the next form field (Empty Dropdown)
|
|
789
|
+
await session.press('down')
|
|
790
|
+
|
|
791
|
+
const afterBoundaryDownSnapshot = await session.text()
|
|
792
|
+
expect(afterBoundaryDownSnapshot).toMatch(/◆\s+Empty Dropdown/)
|
|
793
|
+
expect(afterBoundaryDownSnapshot).toMatch(/◇\s+Country/)
|
|
794
|
+
}, 10000)
|
|
795
|
+
|
|
796
|
+
test('arrow up on first dropdown item moves focus to previous form field', async () => {
|
|
797
|
+
await session.text({
|
|
798
|
+
waitFor: (text) => {
|
|
799
|
+
return /Form Component Demo/i.test(text)
|
|
800
|
+
},
|
|
801
|
+
})
|
|
802
|
+
|
|
803
|
+
// Description → Username → Password → Biography → Email Preferences
|
|
804
|
+
await session.press('tab')
|
|
805
|
+
await session.press('tab')
|
|
806
|
+
await session.press('tab')
|
|
807
|
+
await session.press('tab')
|
|
808
|
+
|
|
809
|
+
// Move from checkbox to country dropdown first item (United States)
|
|
810
|
+
await session.press('down')
|
|
811
|
+
|
|
812
|
+
const firstItemFocusedSnapshot = await session.text()
|
|
813
|
+
expect(firstItemFocusedSnapshot).toMatch(/›.*United States/)
|
|
814
|
+
|
|
815
|
+
// Boundary up should move focus back to previous form field (Email Preferences)
|
|
816
|
+
await session.press('up')
|
|
817
|
+
|
|
818
|
+
const afterBoundaryUpSnapshot = await session.text()
|
|
819
|
+
expect(afterBoundaryUpSnapshot).toMatch(/◆\s+Email Preferences/)
|
|
820
|
+
expect(afterBoundaryUpSnapshot).toMatch(/◇\s+Country/)
|
|
821
|
+
}, 10000)
|
|
822
|
+
|
|
823
|
+
test('date picker down boundary moves focus to next form field', async () => {
|
|
824
|
+
await session.text({
|
|
825
|
+
waitFor: (text) => {
|
|
826
|
+
return /Form Component Demo/i.test(text)
|
|
827
|
+
},
|
|
828
|
+
})
|
|
829
|
+
|
|
830
|
+
await session.press('tab')
|
|
831
|
+
await session.press('tab')
|
|
832
|
+
await session.press('tab')
|
|
833
|
+
await session.press('tab')
|
|
834
|
+
await session.press('tab')
|
|
835
|
+
await session.press('tab')
|
|
836
|
+
await session.press('tab')
|
|
837
|
+
await session.press('tab')
|
|
838
|
+
|
|
839
|
+
const datePickerFocusedSnapshot = await session.text()
|
|
840
|
+
expect(datePickerFocusedSnapshot).toMatch(/◆\s+Date of Birth/)
|
|
841
|
+
|
|
842
|
+
await session.type('10')
|
|
843
|
+
await session.press('down')
|
|
844
|
+
|
|
845
|
+
const nonBoundaryDownSnapshot = await session.text()
|
|
846
|
+
expect(nonBoundaryDownSnapshot).toMatch(/◆\s+Date of Birth/)
|
|
847
|
+
expect(nonBoundaryDownSnapshot).not.toMatch(/◆\s+Upload Documents/)
|
|
848
|
+
|
|
849
|
+
await session.press('down')
|
|
850
|
+
await session.press('down')
|
|
851
|
+
|
|
852
|
+
const afterBoundaryDownSnapshot = await session.text()
|
|
853
|
+
expect(afterBoundaryDownSnapshot).toMatch(/◆\s+Upload Documents/)
|
|
854
|
+
expect(afterBoundaryDownSnapshot).toMatch(/◇\s+Date of Birth/)
|
|
855
|
+
}, 10000)
|
|
856
|
+
|
|
857
|
+
test('date picker up boundary moves focus to previous form field', async () => {
|
|
858
|
+
await session.text({
|
|
859
|
+
waitFor: (text) => {
|
|
860
|
+
return /Form Component Demo/i.test(text)
|
|
861
|
+
},
|
|
862
|
+
})
|
|
863
|
+
|
|
864
|
+
await session.press('tab')
|
|
865
|
+
await session.press('tab')
|
|
866
|
+
await session.press('tab')
|
|
867
|
+
await session.press('tab')
|
|
868
|
+
await session.press('tab')
|
|
869
|
+
await session.press('tab')
|
|
870
|
+
await session.press('tab')
|
|
871
|
+
await session.press('tab')
|
|
872
|
+
|
|
873
|
+
const datePickerFocusedSnapshot = await session.text()
|
|
874
|
+
expect(datePickerFocusedSnapshot).toMatch(/◆\s+Date of Birth/)
|
|
875
|
+
|
|
876
|
+
await session.type('1')
|
|
877
|
+
await session.press('up')
|
|
878
|
+
|
|
879
|
+
const afterFirstUpSnapshot = await session.text()
|
|
880
|
+
expect(afterFirstUpSnapshot).toMatch(/◆\s+Date of Birth/)
|
|
881
|
+
|
|
882
|
+
await session.press('up')
|
|
883
|
+
|
|
884
|
+
const afterSecondUpSnapshot = await session.text()
|
|
885
|
+
expect(afterSecondUpSnapshot).toMatch(/◆\s+Date of Birth/)
|
|
886
|
+
|
|
887
|
+
await session.press('up')
|
|
888
|
+
|
|
889
|
+
const afterBoundaryUpSnapshot = await session.text()
|
|
890
|
+
expect(afterBoundaryUpSnapshot).toMatch(/◆\s+Minimal Field/)
|
|
891
|
+
expect(afterBoundaryUpSnapshot).toMatch(/◇\s+Date of Birth/)
|
|
892
|
+
}, 10000)
|
|
893
|
+
|
|
894
|
+
test('textarea arrow keys move focus between adjacent form fields', async () => {
|
|
895
|
+
await session.text({
|
|
896
|
+
waitFor: (text) => {
|
|
897
|
+
return /Form Component Demo/i.test(text)
|
|
898
|
+
},
|
|
899
|
+
})
|
|
900
|
+
|
|
901
|
+
await session.press('tab')
|
|
902
|
+
await session.press('tab')
|
|
903
|
+
await session.press('tab')
|
|
904
|
+
|
|
905
|
+
const textareaFocusedSnapshot = await session.text()
|
|
906
|
+
expect(textareaFocusedSnapshot).toMatch(/◆\s+Biography/)
|
|
907
|
+
|
|
908
|
+
await session.type('hello')
|
|
909
|
+
await session.press('down')
|
|
910
|
+
|
|
911
|
+
const afterDownSnapshot = await session.text()
|
|
912
|
+
expect(afterDownSnapshot).toMatch(/◆\s+Email Preferences/)
|
|
913
|
+
expect(afterDownSnapshot).toMatch(/◇\s+Biography/)
|
|
914
|
+
|
|
915
|
+
await session.press('up')
|
|
916
|
+
|
|
917
|
+
const afterUpSnapshot = await session.text()
|
|
918
|
+
expect(afterUpSnapshot).toMatch(/◆\s+Biography/)
|
|
919
|
+
}, 10000)
|
|
@@ -110,8 +110,8 @@ test('form dropdown shows inline options', async () => {
|
|
|
110
110
|
│ TypeScript, Rust █
|
|
111
111
|
│ █
|
|
112
112
|
│ Frontend █
|
|
113
|
-
|
|
114
|
-
|
|
113
|
+
│› ● TypeScript █
|
|
114
|
+
│ ○ JavaScript █
|
|
115
115
|
│ ○ React █
|
|
116
116
|
│ ○ Vue █
|
|
117
117
|
│ █
|
|
@@ -169,9 +169,9 @@ test('form dropdown shows inline options', async () => {
|
|
|
169
169
|
◆ Programming Languages █
|
|
170
170
|
│ TypeScript, Rust █
|
|
171
171
|
│ █
|
|
172
|
-
|
|
172
|
+
│› ○ Svelte █
|
|
173
173
|
│ Backend █
|
|
174
|
-
|
|
174
|
+
│ ○ Node.js █
|
|
175
175
|
│ ○ Python █
|
|
176
176
|
│ ○ Go █
|
|
177
177
|
│ █
|
|
@@ -224,11 +224,11 @@ test('form dropdown shows inline options', async () => {
|
|
|
224
224
|
│ features █
|
|
225
225
|
│ █
|
|
226
226
|
◆ Programming Languages █
|
|
227
|
-
│ TypeScript, Rust,
|
|
227
|
+
│ TypeScript, Rust, Svelte █
|
|
228
228
|
│ █
|
|
229
|
-
|
|
229
|
+
│› ● Svelte █
|
|
230
230
|
│ Backend █
|
|
231
|
-
|
|
231
|
+
│ ○ Node.js █
|
|
232
232
|
│ ○ Python █
|
|
233
233
|
│ ○ Go █
|
|
234
234
|
│ █
|
|
@@ -351,11 +351,11 @@ test('form dropdown keyboard navigation', async () => {
|
|
|
351
351
|
◆ Programming Languages █
|
|
352
352
|
│ TypeScript, Rust █
|
|
353
353
|
│ █
|
|
354
|
-
|
|
355
|
-
│
|
|
356
|
-
│ ○
|
|
357
|
-
│ ○
|
|
358
|
-
|
|
354
|
+
│ Frontend █
|
|
355
|
+
│ ● TypeScript █
|
|
356
|
+
│ ○ JavaScript █
|
|
357
|
+
│ ○ React █
|
|
358
|
+
│› ○ Vue █
|
|
359
359
|
│ █
|
|
360
360
|
│ Choose your preferred programming languages █
|
|
361
361
|
│ █
|
|
@@ -408,9 +408,9 @@ test('form dropdown keyboard navigation', async () => {
|
|
|
408
408
|
◆ Programming Languages █
|
|
409
409
|
│ TypeScript, Rust █
|
|
410
410
|
│ █
|
|
411
|
-
|
|
411
|
+
│› ○ Svelte █
|
|
412
412
|
│ Backend █
|
|
413
|
-
|
|
413
|
+
│ ○ Node.js █
|
|
414
414
|
│ ○ Python █
|
|
415
415
|
│ ○ Go █
|
|
416
416
|
│ █
|
|
@@ -465,11 +465,11 @@ test('form dropdown keyboard navigation', async () => {
|
|
|
465
465
|
◆ Programming Languages █
|
|
466
466
|
│ TypeScript, Rust █
|
|
467
467
|
│ █
|
|
468
|
-
|
|
469
|
-
│
|
|
470
|
-
│ ○
|
|
471
|
-
│ ○
|
|
472
|
-
|
|
468
|
+
│ Frontend █
|
|
469
|
+
│ ● TypeScript █
|
|
470
|
+
│ ○ JavaScript █
|
|
471
|
+
│ ○ React █
|
|
472
|
+
│› ○ Vue █
|
|
473
473
|
│ █
|
|
474
474
|
│ Choose your preferred programming languages █
|
|
475
475
|
│ █
|
|
@@ -522,11 +522,11 @@ test('form dropdown keyboard navigation', async () => {
|
|
|
522
522
|
◆ Programming Languages █
|
|
523
523
|
│ TypeScript, Rust █
|
|
524
524
|
│ █
|
|
525
|
-
|
|
526
|
-
│
|
|
527
|
-
│ ○
|
|
528
|
-
│ ○
|
|
529
|
-
|
|
525
|
+
│ Frontend █
|
|
526
|
+
│ ● TypeScript █
|
|
527
|
+
│ ○ JavaScript █
|
|
528
|
+
│ ○ React █
|
|
529
|
+
│› ○ Vue █
|
|
530
530
|
│ █
|
|
531
531
|
│ Choose your preferred programming languages █
|
|
532
532
|
│ █
|
|
@@ -717,8 +717,8 @@ test('selecting second-to-last visible item should not scroll', async () => {
|
|
|
717
717
|
│ █
|
|
718
718
|
│ Frontend █
|
|
719
719
|
│ ● TypeScript █
|
|
720
|
-
|
|
721
|
-
|
|
720
|
+
│› ○ JavaScript █
|
|
721
|
+
│ ○ React █
|
|
722
722
|
│ ○ Vue █
|
|
723
723
|
│ █
|
|
724
724
|
│ Choose your preferred programming languages █
|
|
@@ -770,12 +770,12 @@ test('selecting second-to-last visible item should not scroll', async () => {
|
|
|
770
770
|
│ features █
|
|
771
771
|
│ █
|
|
772
772
|
◆ Programming Languages █
|
|
773
|
-
│ TypeScript, Rust,
|
|
773
|
+
│ TypeScript, Rust, JavaScript █
|
|
774
774
|
│ █
|
|
775
775
|
│ Frontend █
|
|
776
776
|
│ ● TypeScript █
|
|
777
|
-
|
|
778
|
-
|
|
777
|
+
│› ● JavaScript █
|
|
778
|
+
│ ○ React █
|
|
779
779
|
│ ○ Vue █
|
|
780
780
|
│ █
|
|
781
781
|
│ Choose your preferred programming languages █
|
|
@@ -153,8 +153,8 @@ test('form tagpicker shows inline options', async () => {
|
|
|
153
153
|
◆ Favorite Sport
|
|
154
154
|
│ Choose your favorite sport...
|
|
155
155
|
│
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
│› ○ Basketball
|
|
157
|
+
│ ○ Football
|
|
158
158
|
│ ○ Tennis
|
|
159
159
|
│ ○ Baseball
|
|
160
160
|
│ ○ Golf
|
|
@@ -213,11 +213,11 @@ test('form tagpicker shows inline options', async () => {
|
|
|
213
213
|
◆ Favorite Sport
|
|
214
214
|
│ Choose your favorite sport...
|
|
215
215
|
│
|
|
216
|
+
│ ○ Basketball
|
|
217
|
+
│ ○ Football
|
|
218
|
+
│ ○ Tennis
|
|
216
219
|
│ ○ Baseball
|
|
217
|
-
|
|
218
|
-
│› ○ Swimming
|
|
219
|
-
│ ○ Cycling
|
|
220
|
-
│ ○ Running
|
|
220
|
+
│› ○ Golf
|
|
221
221
|
│
|
|
222
222
|
│ Select your favorite sport from the list
|
|
223
223
|
│
|
|
@@ -268,13 +268,13 @@ test('form tagpicker shows inline options', async () => {
|
|
|
268
268
|
│ Test tag picker with multiple selection support
|
|
269
269
|
│
|
|
270
270
|
◆ Favorite Sport
|
|
271
|
-
│
|
|
271
|
+
│ Golf
|
|
272
272
|
│
|
|
273
|
+
│ ○ Basketball
|
|
274
|
+
│ ○ Football
|
|
275
|
+
│ ○ Tennis
|
|
273
276
|
│ ○ Baseball
|
|
274
|
-
|
|
275
|
-
│› ● Swimming
|
|
276
|
-
│ ○ Cycling
|
|
277
|
-
│ ○ Running
|
|
277
|
+
│› ● Golf
|
|
278
278
|
│
|
|
279
279
|
│ Select your favorite sport from the list
|
|
280
280
|
│
|
|
@@ -398,8 +398,8 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
398
398
|
│ ○ Basketball
|
|
399
399
|
│ ○ Football
|
|
400
400
|
│ ○ Tennis
|
|
401
|
-
|
|
402
|
-
|
|
401
|
+
│› ○ Baseball
|
|
402
|
+
│ ○ Golf
|
|
403
403
|
│
|
|
404
404
|
│ Select your favorite sport from the list
|
|
405
405
|
│
|
|
@@ -452,11 +452,11 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
452
452
|
◆ Favorite Sport
|
|
453
453
|
│ Choose your favorite sport...
|
|
454
454
|
│
|
|
455
|
+
│ ○ Basketball
|
|
456
|
+
│ ○ Football
|
|
457
|
+
│ ○ Tennis
|
|
455
458
|
│ ○ Baseball
|
|
456
|
-
|
|
457
|
-
│› ○ Swimming
|
|
458
|
-
│ ○ Cycling
|
|
459
|
-
│ ○ Running
|
|
459
|
+
│› ○ Golf
|
|
460
460
|
│
|
|
461
461
|
│ Select your favorite sport from the list
|
|
462
462
|
│
|
|
@@ -509,11 +509,11 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
509
509
|
◆ Favorite Sport
|
|
510
510
|
│ Choose your favorite sport...
|
|
511
511
|
│
|
|
512
|
-
│ ○
|
|
513
|
-
|
|
514
|
-
│ ○
|
|
515
|
-
|
|
516
|
-
│ ○
|
|
512
|
+
│ ○ Basketball
|
|
513
|
+
│ ○ Football
|
|
514
|
+
│ ○ Tennis
|
|
515
|
+
│› ○ Baseball
|
|
516
|
+
│ ○ Golf
|
|
517
517
|
│
|
|
518
518
|
│ Select your favorite sport from the list
|
|
519
519
|
│
|
|
@@ -566,11 +566,11 @@ test('form tagpicker keyboard navigation', async () => {
|
|
|
566
566
|
◆ Favorite Sport
|
|
567
567
|
│ Choose your favorite sport...
|
|
568
568
|
│
|
|
569
|
-
│ ○
|
|
570
|
-
|
|
571
|
-
│ ○
|
|
572
|
-
|
|
573
|
-
│ ○
|
|
569
|
+
│ ○ Basketball
|
|
570
|
+
│ ○ Football
|
|
571
|
+
│ ○ Tennis
|
|
572
|
+
│› ○ Baseball
|
|
573
|
+
│ ○ Golf
|
|
574
574
|
│
|
|
575
575
|
│ Select your favorite sport from the list
|
|
576
576
|
│
|
|
@@ -97,7 +97,7 @@ test.skipIf(!extensionExists)('github extension shows command list on launch', a
|
|
|
97
97
|
|
|
98
98
|
|
|
99
99
|
|
|
100
|
-
↵ run command ↑↓ navigate ^k actions
|
|
100
|
+
↵ run command ↑↓ navigate ^k actions powered by termcast.app
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
|
|
@@ -146,7 +146,7 @@ test.skipIf(!extensionExists)('github extension can navigate commands', async ()
|
|
|
146
146
|
|
|
147
147
|
|
|
148
148
|
|
|
149
|
-
↵ run command ↑↓ navigate ^k actions
|
|
149
|
+
↵ run command ↑↓ navigate ^k actions powered by termcast.app
|
|
150
150
|
|
|
151
151
|
|
|
152
152
|
|
|
@@ -192,7 +192,7 @@ test.skipIf(!extensionExists)('github extension can open actions panel', async (
|
|
|
192
192
|
│ Settings │
|
|
193
193
|
│ Configure GitHub... ⌃⇧, │
|
|
194
194
|
│ Change Theme... │
|
|
195
|
-
│
|
|
195
|
+
│ Toggle Console Logs │
|
|
196
196
|
│ │
|
|
197
197
|
│ │
|
|
198
198
|
│ │
|
|
@@ -239,7 +239,7 @@ test.skipIf(!extensionExists)('github extension can search commands', async () =
|
|
|
239
239
|
|
|
240
240
|
|
|
241
241
|
|
|
242
|
-
↵ run command ↑↓ navigate ^k actions
|
|
242
|
+
↵ run command ↑↓ navigate ^k actions powered by termcast.app
|
|
243
243
|
|
|
244
244
|
|
|
245
245
|
|