File tree Expand file tree Collapse file tree 4 files changed +183
-5
lines changed
special-pages/pages/history/app Expand file tree Collapse file tree 4 files changed +183
-5
lines changed Original file line number Diff line number Diff line change
1
+ < link rel ="stylesheet " href ="/reset.css ">
2
+ < style >
3
+ body {
4
+ height : 100vh ;
5
+ }
6
+ .layout {
7
+ display : grid;
8
+ height : 100vh ;
9
+ width : 100% ;
10
+ grid-template-rows : max-content 1fr ;
11
+ grid-template-areas : 'header' 'main' ;
12
+ }
13
+ .scroller {
14
+ grid-area : main;
15
+ overflow : auto;
16
+ width : 100% ;
17
+ z-index : 0 ;
18
+ }
19
+
20
+ header {
21
+ background : lightcyan;
22
+ padding : 2rem ;
23
+ grid-area : header;
24
+ view-transition-name : header;
25
+ z-index : 1 ;
26
+ }
27
+ </ style >
28
+ < div class ="layout ">
29
+ < header >
30
+ < div >
31
+ < p > hother</ p >
32
+ </ div >
33
+ </ header >
34
+ < div class ="scroller ">
35
+ < ul >
36
+ < li > 1</ li >
37
+ < li > 2</ li >
38
+ < li > 3</ li >
39
+ < li > 4</ li >
40
+ < li > 5</ li >
41
+ < li > 6</ li >
42
+ < li > 7</ li >
43
+ < li > 8</ li >
44
+ < li > 9</ li >
45
+ < li > 10</ li >
46
+ < li > 11</ li >
47
+ < li > 12</ li >
48
+ < li > 13</ li >
49
+ < li > 14</ li >
50
+ < li > 15</ li >
51
+ < li > 16</ li >
52
+ < li > 17</ li >
53
+ < li > 18</ li >
54
+ < li > 19</ li >
55
+ < li > 20</ li >
56
+ < li > 21</ li >
57
+ < li > 22</ li >
58
+ < li > 23</ li >
59
+ < li > 24</ li >
60
+ < li > 25</ li >
61
+ < li > 26</ li >
62
+ < li > 27</ li >
63
+ < li > 28</ li >
64
+ < li > 29</ li >
65
+ < li > 30</ li >
66
+ < li > 31</ li >
67
+ < li > 32</ li >
68
+ < li > 33</ li >
69
+ < li > 34</ li >
70
+ < li > 35</ li >
71
+ < li > 36</ li >
72
+ < li > 37</ li >
73
+ < li > 38</ li >
74
+ < li > 39</ li >
75
+ < li > 40</ li >
76
+ < li > 41</ li >
77
+ < li > 42</ li >
78
+ < li > 43</ li >
79
+ < li > 44</ li >
80
+ < li > 45</ li >
81
+ < li > 46</ li >
82
+ < li > 47</ li >
83
+ < li > 48</ li >
84
+ < li > 49</ li >
85
+ < li > 50</ li >
86
+ < li > 51</ li >
87
+ < li > 52</ li >
88
+ < li > 53</ li >
89
+ < li > 54</ li >
90
+ < li > 55</ li >
91
+ < li > 56</ li >
92
+ < li > 57</ li >
93
+ < li > 58</ li >
94
+ < li > 59</ li >
95
+ < li > 60</ li >
96
+ < li > 61</ li >
97
+ < li > 62</ li >
98
+ < li > 63</ li >
99
+ < li > 64</ li >
100
+ < li > 65</ li >
101
+ < li > 66</ li >
102
+ < li > 67</ li >
103
+ < li > 68</ li >
104
+ < li > 69</ li >
105
+ < li > 70</ li >
106
+ < li > 71</ li >
107
+ < li > 72</ li >
108
+ < li > 73</ li >
109
+ < li > 74</ li >
110
+ < li > 75</ li >
111
+ < li > 76</ li >
112
+ < li > 77</ li >
113
+ < li > 78</ li >
114
+ < li > 79</ li >
115
+ < li > 80</ li >
116
+ < li > 81</ li >
117
+ < li > 82</ li >
118
+ < li > 83</ li >
119
+ < li > 84</ li >
120
+ < li > 85</ li >
121
+ < li > 86</ li >
122
+ < li > 87</ li >
123
+ < li > 88</ li >
124
+ < li > 89</ li >
125
+ < li > 90</ li >
126
+ < li > 91</ li >
127
+ < li > 92</ li >
128
+ < li > 93</ li >
129
+ < li > 94</ li >
130
+ < li > 95</ li >
131
+ < li > 96</ li >
132
+ < li > 97</ li >
133
+ < li > 98</ li >
134
+ < li > 99</ li >
135
+ < li > 100</ li >
136
+ </ ul >
137
+ </ div >
138
+ </ div >
139
+
140
+ < script type ="module ">
141
+ const createRemoveButton = ( li ) => {
142
+ const button = document . createElement ( 'button' ) ;
143
+ button . textContent = 'Remove' ;
144
+ button . addEventListener ( 'click' , ( ) => {
145
+ document . startViewTransition ( ( ) => {
146
+ li . remove ( ) ;
147
+ } )
148
+ } ) ;
149
+ return button ;
150
+ } ;
151
+ document . querySelectorAll ( 'li' ) . forEach ( ( item , index ) => {
152
+ item . style . viewTransitionName = `item-${ index } ` ;
153
+ const removeButton = createRemoveButton ( item ) ;
154
+ item . appendChild ( removeButton ) ;
155
+ } ) ;
156
+ </ script >
Original file line number Diff line number Diff line change @@ -19,6 +19,7 @@ import { useSearchCommit } from '../global/hooks/useSearchCommit.js';
19
19
import { useRangesData } from '../global/Providers/HistoryServiceProvider.js' ;
20
20
import { usePlatformName } from '../types.js' ;
21
21
import { useLayoutMode } from '../global/hooks/useLayoutMode.js' ;
22
+ import { useClickAnywhereElse } from '../global/hooks/useClickAnywhereElse.jsx' ;
22
23
23
24
export function App ( ) {
24
25
const platformName = usePlatformName ( ) ;
@@ -39,6 +40,7 @@ export function App() {
39
40
useURLReflection ( ) ;
40
41
useSearchCommit ( ) ;
41
42
useSearchCommitForRange ( ) ;
43
+ const clickAnywhere = useClickAnywhereElse ( ) ;
42
44
43
45
/**
44
46
* onClick can be passed directly to the main container,
@@ -62,7 +64,13 @@ export function App() {
62
64
} , [ onKeyDown , query ] ) ;
63
65
64
66
return (
65
- < div class = { styles . layout } data-theme = { isDarkMode ? 'dark' : 'light' } data-platform = { platformName } data-layout-mode = { mode } >
67
+ < div
68
+ class = { styles . layout }
69
+ data-theme = { isDarkMode ? 'dark' : 'light' }
70
+ data-platform = { platformName }
71
+ data-layout-mode = { mode }
72
+ onClick = { clickAnywhere }
73
+ >
66
74
< aside class = { styles . aside } >
67
75
< Sidebar ranges = { ranges } />
68
76
</ aside >
Original file line number Diff line number Diff line change @@ -99,11 +99,7 @@ export function useRowInteractions(mainRef) {
99
99
if ( handled ) {
100
100
event . preventDefault ( ) ;
101
101
event . stopImmediatePropagation ( ) ;
102
- } else {
103
- console . log ( 'did not handle selection' ) ;
104
102
}
105
- } else {
106
- dispatch ( { kind : 'reset' , reason : 'click occurred outside of rows' } ) ;
107
103
}
108
104
}
109
105
Original file line number Diff line number Diff line change
1
+ import { useSelectionDispatch } from '../Providers/SelectionProvider.js' ;
2
+ import { useCallback } from 'preact/hooks' ;
3
+
4
+ /**
5
+ * Custom hook that creates a callback function to handle click events occurring outside of specified elements.
6
+ * The callback dispatches a reset action when the click event target is not a button or an anchor element.
7
+ */
8
+ export function useClickAnywhereElse ( ) {
9
+ const dispatch = useSelectionDispatch ( ) ;
10
+ return useCallback (
11
+ ( e ) => {
12
+ if ( e . target ?. closest ?. ( 'button,a' ) === null ) {
13
+ dispatch ( { kind : 'reset' , reason : 'click occurred outside of rows' } ) ;
14
+ }
15
+ } ,
16
+ [ dispatch ] ,
17
+ ) ;
18
+ }
You can’t perform that action at this time.
0 commit comments