copy to clipboard
This commit is contained in:
23
src/main.py
23
src/main.py
@@ -109,7 +109,6 @@ async def main():
|
|||||||
# Copy button
|
# Copy button
|
||||||
with ui.row().classes('w-full justify-end q-gutter-sm'):
|
with ui.row().classes('w-full justify-end q-gutter-sm'):
|
||||||
copy_button = ui.button('Copy to Clipboard', icon='content_copy').props('outline')
|
copy_button = ui.button('Copy to Clipboard', icon='content_copy').props('outline')
|
||||||
copy_button.disable()
|
|
||||||
|
|
||||||
# Action buttons
|
# Action buttons
|
||||||
with ui.card().classes('w-full'):
|
with ui.card().classes('w-full'):
|
||||||
@@ -136,8 +135,24 @@ async def main():
|
|||||||
def update_char_count():
|
def update_char_count():
|
||||||
char_count_label.text = f'{len(input_text.value)} characters'
|
char_count_label.text = f'{len(input_text.value)} characters'
|
||||||
|
|
||||||
def mock_copy():
|
async def copy_to_clipboard():
|
||||||
ui.notify('Text copied to clipboard (mockup)', type='positive')
|
if output_text.value:
|
||||||
|
await ui.run_javascript(f'''
|
||||||
|
navigator.clipboard.writeText({repr(output_text.value)}).then(() => {{
|
||||||
|
// Success handled by notify below
|
||||||
|
}}).catch(() => {{
|
||||||
|
// Fallback for older browsers
|
||||||
|
const textArea = document.createElement('textarea');
|
||||||
|
textArea.value = {repr(output_text.value)};
|
||||||
|
document.body.appendChild(textArea);
|
||||||
|
textArea.select();
|
||||||
|
document.execCommand('copy');
|
||||||
|
document.body.removeChild(textArea);
|
||||||
|
}});
|
||||||
|
''')
|
||||||
|
ui.notify('Text copied to clipboard!', type='positive')
|
||||||
|
else:
|
||||||
|
ui.notify('No text to copy', type='warning')
|
||||||
|
|
||||||
def clear_all():
|
def clear_all():
|
||||||
input_text.value = ''
|
input_text.value = ''
|
||||||
@@ -150,7 +165,7 @@ async def main():
|
|||||||
|
|
||||||
# Connect event handlers
|
# Connect event handlers
|
||||||
input_text.on('input', update_char_count)
|
input_text.on('input', update_char_count)
|
||||||
copy_button.on_click(mock_copy)
|
copy_button.on_click(copy_to_clipboard)
|
||||||
clear_button.on_click(clear_all)
|
clear_button.on_click(clear_all)
|
||||||
|
|
||||||
# Footer
|
# Footer
|
||||||
|
|||||||
Reference in New Issue
Block a user