Skip to content

Commit

Permalink
Merge branch 'main' into run
Browse files Browse the repository at this point in the history
  • Loading branch information
falkoschindler committed Sep 21, 2023
2 parents 5b977ff + 3edcb78 commit 501afa4
Show file tree
Hide file tree
Showing 7 changed files with 57 additions and 5 deletions.
25 changes: 25 additions & 0 deletions nicegui/elements/editor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
from typing import Any, Callable, Optional

from .mixins.disableable_element import DisableableElement
from .mixins.value_element import ValueElement


class Editor(ValueElement, DisableableElement):

def __init__(self,
*,
placeholder: Optional[str] = None,
value: str = '',
on_change: Optional[Callable[..., Any]] = None,
) -> None:
"""Editor
A WYSIWYG editor based on `Quasar's QEditor <https://quasar.dev/vue-components/editor>`_.
The value is a string containing the formatted text as HTML code.
:param value: initial value
:param on_change: callback to be invoked when the value changes
"""
super().__init__(tag='q-editor', value=value, on_value_change=on_change)
if placeholder is not None:
self._props['placeholder'] = placeholder
9 changes: 5 additions & 4 deletions nicegui/static/nicegui.css
Original file line number Diff line number Diff line change
Expand Up @@ -99,18 +99,19 @@ h6.q-timeline__title {
}
.nicegui-code {
position: relative;
background-color: rgba(127, 127, 127, 0.1);
box-shadow: 0 0 0.5em rgba(127, 127, 127, 0.05);
background-color: rgba(127, 159, 191, 0.1);
border: 1pt solid rgba(127, 159, 191, 0.15);
box-shadow: 0 0 0.5em rgba(127, 159, 191, 0.05);
border-radius: 0.25rem;
}

#popup {
position: fixed;
bottom: 0;
left: 0;
border: 1pt solid rgba(127, 127, 127, 0.25);
border: 1pt solid rgba(127, 159, 191, 0.25);
border-radius: 0.25em;
box-shadow: 0 0 0.5em rgba(127, 127, 127, 0.05);
box-shadow: 0 0 0.5em rgba(127, 159, 191, 0.05);
margin: 2em;
padding: 1.5em 4em;
display: flex;
Expand Down
2 changes: 2 additions & 0 deletions nicegui/ui.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
'date',
'dialog',
'echart',
'editor',
'expansion',
'grid',
'html',
Expand Down Expand Up @@ -118,6 +119,7 @@
from .elements.date import Date as date
from .elements.dialog import Dialog as dialog
from .elements.echart import EChart as echart
from .elements.editor import Editor as editor
from .elements.expansion import Expansion as expansion
from .elements.grid import Grid as grid
from .elements.html import Html as html
Expand Down
14 changes: 14 additions & 0 deletions tests/test_editor.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@

from nicegui import ui

from .screen import Screen


def test_editor(screen: Screen):
editor = ui.editor(placeholder='Type something here')
ui.markdown().bind_content_from(editor, 'value', backward=lambda v: f'HTML code:\n```\n{v}\n```')

screen.open('/')
screen.find_by_class('q-editor__content').click()
screen.type('Hello\nworld!')
screen.should_contain('Hello<div>world!</div>')
1 change: 1 addition & 0 deletions website/documentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ def captions_and_overlays_demo():
load_demo(ui.scene)
load_demo(ui.tree)
load_demo(ui.log)
load_demo(ui.editor)
load_demo(ui.code)
load_demo(ui.json_editor)

Expand Down
7 changes: 7 additions & 0 deletions website/more_documentation/editor_documentation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
from nicegui import ui


def main_demo() -> None:
editor = ui.editor(placeholder='Type something here')
ui.markdown().bind_content_from(editor, 'value',
backward=lambda v: f'HTML code:\n```\n{v}\n```')
4 changes: 3 additions & 1 deletion website/more_documentation/menu_documentation.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ def main_demo() -> None:

def more() -> None:
@text_demo('Custom Context Menu', '''
Using Quasar's `context-menu` and `touch-position` props, you can create custom context menus.
Using [Quasar's `context-menu`](https://quasar.dev/vue-components/menu#context-menu) and `touch-position` props,
you can create custom context menus.
These open by right-clicking on the parent.
''')
def custom_context_menu() -> None:
with ui.image('https://picsum.photos/id/377/640/360'):
Expand Down

0 comments on commit 501afa4

Please sign in to comment.