familyfriendlymikey
2 years ago
8 changed files with 281 additions and 267 deletions
@ -0,0 +1,86 @@ |
|||||
|
tag app-home |
||||
|
|
||||
|
def mount |
||||
|
$links-input.focus! |
||||
|
|
||||
|
def handle_paste e |
||||
|
return unless config.data.enable_search_on_paste |
||||
|
return if state.query.length > 0 |
||||
|
global.setTimeout(&, 0) do |
||||
|
return if api.math_result isnt no |
||||
|
bang ||= config.data.default_bang |
||||
|
handle_bang! |
||||
|
|
||||
|
def handle_click_copy s |
||||
|
try |
||||
|
await window.navigator.clipboard.writeText(s) |
||||
|
state.query = '' |
||||
|
api.sort_links! |
||||
|
|
||||
|
def handle_input |
||||
|
api.set_link_selection_index 0 |
||||
|
api.sort_links! |
||||
|
|
||||
|
def handle_click_link |
||||
|
if state.active_bang or state.sorted_links.length < 1 |
||||
|
return handle_bang! |
||||
|
let link = api.selected_link |
||||
|
if link.is_bang |
||||
|
state.query = '' |
||||
|
state.active_bang = link |
||||
|
else |
||||
|
api.navigate link |
||||
|
|
||||
|
def handle_click_delete link |
||||
|
return unless window.confirm "Do you really want to delete {link..display_name}?" |
||||
|
handle_delete link |
||||
|
|
||||
|
def handle_click_pin link |
||||
|
api.pin_link link |
||||
|
|
||||
|
def handle_shift_backspace |
||||
|
return unless state.sorted_links.length > 0 |
||||
|
refs.edit.open api.selected_link |
||||
|
|
||||
|
def render |
||||
|
|
||||
|
<self> |
||||
|
css w:100% d:flex fld:column gap:10px ofy:hidden |
||||
|
|
||||
|
<.header> |
||||
|
css d:flex fld:row w:100% |
||||
|
css .side c:purple3/90 fs:15px d:flex ja:center w:30px cursor:pointer |
||||
|
css .side svg w:15px d:flex |
||||
|
css .left jc:left |
||||
|
css .right jc:right |
||||
|
|
||||
|
<.side.left@click=api.toggle_effective_names> |
||||
|
|
||||
|
if config.data.enable_effective_names |
||||
|
<svg src="../assets/eye.svg"> |
||||
|
|
||||
|
else |
||||
|
<svg src="../assets/eye-off.svg"> |
||||
|
|
||||
|
<input$links-input |
||||
|
bind=state.query |
||||
|
@input.if(!state.loading)=handle_input |
||||
|
@paste.if(!state.loading)=handle_paste |
||||
|
@cut=api.handle_cut |
||||
|
disabled=state.loading |
||||
|
> |
||||
|
|
||||
|
if (let m = api.math_result) isnt no |
||||
|
<.side.right@click=handle_click_copy(m)> |
||||
|
"= {Math.round(m * 100)/100}" |
||||
|
css c:blue3 fs:20px ml:10px w:unset |
||||
|
|
||||
|
else |
||||
|
<.side.right @click.if(!state.loading)=refs.settings.open> |
||||
|
<svg src="../assets/settings.svg"> |
||||
|
|
||||
|
if state.active_bang or state.sorted_links.length < 1 |
||||
|
<app-bang> |
||||
|
|
||||
|
else |
||||
|
<app-links> |
Loading…
Reference in new issue