Source code for flask_uio.base

from flask import url_for, current_app
from .prop import ValidProp
from .element import Body, Head, Html
[docs]class FomanticHead(Head): """Head widget with Fomantic UI Args: title (string): Page's title. elements (list[Element], optional): list of element. Defaults to None. links (list[Link], optional): list of link. Defaults to None. scripts (list[Script], optional): list of script. Defaults to None. summernote (bool, optional): enable summernote. Defaults to False. """ summernote = ValidProp(bool) def __init__(self, title, elements=None, links=None, scripts=None, summernote=False, **attrs): super().__init__(title, elements, links, scripts, **attrs) # get fomantic static folder static_folder = current_app.config.get('FLASK_UIO_FOMANTIC_STATIC_FOLDER') if static_folder is None: static_folder = 'flaskuio.static' # get & add fomantic css filename filename = current_app.config.get('FLASK_UIO_FOMANTIC_CSS_FILENAME') if filename is None: filename = 'style/semantic.min.css' self.append_link(url_for(static_folder, filename=filename)) # add support css for summernote (rich text editor) self.summernote = summernote if self.summernote: self.append_link(url_for('flaskuio.static', filename='vendor/summernote-0.8.18-dist/summernote-lite.min.css')) self.append_link(url_for('flaskuio.static', filename='style/main.css'))
[docs]class FomanticBody(Body): """Body widget with Fomantic UI Args: elements (list[Element], optional): list of element. Defaults to None. scripts (list[Script], optional): list of script. Defaults to None. summernote (bool, optional): enable summernote. Defaults to False. """ summernote = ValidProp(bool) def __init__(self, elements=None, scripts=None, summernote=False, **attrs): super().__init__(elements, scripts, **attrs) # get fomantic static folder static_folder = current_app.config.get('FLASK_UIO_FOMANTIC_STATIC_FOLDER') if static_folder is None: static_folder = 'flaskuio.static' # get fomantic js filename filename = current_app.config.get('FLASK_UIO_FOMANTIC_JS_FILENAME') if filename is None: filename = 'script/semantic.min.js' # add script required for fomantic ui self.append_script(url_for('flaskuio.static', filename='script/jquery-3.5.1.min.js')) self.append_script(url_for('flaskuio.static', filename='script/jquery-dateformat.js')) self.append_script(url_for(static_folder, filename=filename)) self.append_script(url_for('flaskuio.static', filename='script/custom-semantic.js')) # add support script for summernote (rich text editor) self.summernote = summernote if self.summernote: self.append_script(url_for('flaskuio.static', filename='vendor/summernote-0.8.18-dist/summernote-lite.min.js')) self.append_script(url_for('flaskuio.static', filename='script/summernote.js'))
[docs]class Document(Html): """Document widget (HTML) Args: title (string): Page's title. summernote (bool, optional): enable summernote. Defaults to False. More Info: - See https://fomantic-ui.com/ - See https://summernote.org/ """ summernote = ValidProp(bool) def __init__(self, title, summernote=False): css_framework = current_app.config.get('FLASK_UIO_CSS_FRAMEWORK') or 'fomanticui' if css_framework == 'fomanticui': self.head = FomanticHead(title, summernote=summernote) self.body = FomanticBody(summernote=summernote)