Skip to main content

Wagtail UI Plus

This Wagtail app provides several ui improvements to the Wagtail admin.

Conditional checkboxes

  • Automatically check a target checkbox whenever a trigger checkbox is checked
  • The reverse also applies, when the target checkbox is unchecked, the trigger checkbox is also unchecked
  • This functionality can be used to create an "all" option among a list of checkboxes
  • Supported trigger elements: BooleanField
  • Supported target elements: BooleanField

Conditional visibility

  • Show or hide form fields based on conditional visibility rules
  • Regular page fields:
    • Supported trigger elements: CharField (with choices), BooleanField
    • Supported target elements: Any subclass of EditHandler
  • Struct block fields:
    • Supported trigger elements: ChoiceBlock
    • Supported target elements: Any subclass of FieldBlock (within the same struct block)

Collapsable panels

  • Click on the panel header to collapse/expand the panel
  • Set the default collapsed state
  • Supported panels: MultiFieldPanel and StreamFieldPanel

Stream field improvements

  • Added borders around blocks
  • Added panel-style headers to blocks
  • Added spacing between blocks
  • Permanently visible add buttons
  • Use more of the available space for blocks
  • Supported blocks: CharBlock, TextBlock, EmailBlock, IntegerBlock, FloatBlock, DecimalBlock, RegexBlock, URLBlock, BooleanBlock, DateBlock, TimeBlock, DateTimeBlock, RichTextBlock, RawHTMLBlock, BlockQuoteBlock, ChoiceBlock, PageChooserBlock, DocumentChooserBlock, ImageChooserBlock, SnippetChooserBlock, EmbedBlock, StaticBlock, StructBlock and StreamBlock

Struct block improvements

  • All of the above stream field improvements
  • If the first field in the struct block is a CharBlock, TextBlock or RichtTextBlock, show it's value in the block header after the block type
  • Click on the block header to collapse/expand the struct block
  • All struct blocks are default collapsed on page load, but newly added blocks are default expanded

Compatibility

  • Wagtail 2.6.2

Installation

  • pip install wagtailuiplus
  • Add wagtailuiplus to your installed apps

Usage

Conditional checkboxes

  • Add the class wagtailuiplus__checkbox-handler to the trigger element
  • Add the class wagtailuiplus__checkbox-handler--{block_name} to the trigger element, where {block_name} is equal to the block name of the trigger element
  • Add the class wagtailuiplus__checkbox-handler-target--{block_name} to each target element, where {block_name} is equal to the block name of the trigger element
  • Add conditional visibility rules to the target elements

To check a target checkbox when the trigger field is checked:

  • Add the class wagtailuiplus__checkbox-handler-checked-if--checked to the target element

Screenshot

Conditional visibility

Steps to configure conditional visibility rules:

  • Add the class wagtailuiplus__choice-handler to the trigger element
  • Add the class wagtailuiplus__choice-handler--{block_name} to the trigger element, where {block_name} is equal to the block name of the trigger element
  • Add the class wagtailuiplus__choice-handler-target--{block_name} to each target element, where {block_name} is equal to the block name of the trigger element
  • Add conditional visibility rules to the target elements

To hide a target element if the trigger field has a certain value:

  • Add the class wagtailuiplus__choice-handler-hidden-if--{value} to the target element, where {value} is the value of the trigger element

To match the values of a BooleanField, use the string value true or false. Multiple rules on the same target element are treated as an or, so if any of the rules match, the element is hidden. In the following example, conditional visibility is used to show a page chooser when building an internal link, or show a text input when building an external link:

class LinkBlock(StructBlock):
    link_type = ChoiceBlock(
        choices = [
            ('internal', 'Internal link'),
            ('external', 'External link'),
        ],
        required=True,
        default='internal',
        label='Link type',
        classname=(
            'wagtailuiplus__choice-handler '
            'wagtailuiplus__choice-handler--link_type'
        )
    )
    link_page = PageChooserBlock(
        required=False,
        label='Link page',
        classname=(
            'wagtailuiplus__choice-handler-target--link_type '
            'wagtailuiplus__choice-handler-hidden-if--external'
        ),
    )
    link_url = CharBlock(
        required=False,
        label='Link url',
        classname=(
            'wagtailuiplus__choice-handler-target--link_type '
            'wagtailuiplus__choice-handler-hidden-if--internal'
        ),
    )

Screenshot

Collapsable panels

The panels automatically become collapsable. To set the initial collapsed state of panels, add the wagtailuiplus__panel--collapsed classname to the panel, for example:

class HomePage(Page):
    content_panels = [
        MultiFieldPanel([
            FieldPanel('title'),
        ], 'My multi field panel', classname='wagtailuiplus__panel--collapsed'),
    ]

Screenshot

StreamField UI improvements

The UI improvements automatically apply. Just create your StreamField as usual, for example:

from wagtail.admin.edit_handlers import StreamFieldPanel
from wagtail.core.blocks import (
  CharBlock,
  StreamBlock,
  StructBlock,
  RichTextBlock,
)
from wagtail.core.fields import StreamField
from wagtail.core.models import Page


class MyCharBlock(CharBlock):
    class Meta:
        icon = 'pilcrow'
        label = 'My char block'


class MyRichTextBlock(RichTextBlock):
    class Meta:
        icon = 'openquote'
        label = 'My rich text block'


class MyStreamBlock(StreamBlock):
    title = MyCharBlock()
    text = MyRichTextBlock()

    class Meta:
        label = 'My stream block'


class MyStructBlock(StructBlock):
    items = MyStreamBlock(required=False)

    class Meta:
        icon = 'list-ul'
        label = 'My struct block'


class HomePage(Page):
    my_stream_field = StreamField([
            ('my_title_block', MyCharBlock()),
            ('my_text_block', MyRichTextBlock()),
            ('my_struct_block', MyStructBlock()),
        ], blank=True, verbose_name='My stream field')

    content_panels = [
        StreamFieldPanel('my_stream_field'),
    ]

Screenshot

Metadata

Release files for wagtailuiplus 1.3.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wagtailuiplus 1.3.14
File Size Uploaded
wagtailuiplus-1.3.14.tar.gz 9.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wagtailuiplus 1.3.14
File Interpreter ABI Platform
wagtailuiplus-1.3.14-py3-none-any.whl Python 3 none any Details

Total release size: 18.3 kB

Release files / wagtailuiplus-1.3.14.tar.gz

Download URL wagtailuiplus-1.3.14.tar.gz
Size 9.4 kB
Tags Source
SHA-256 checksum
How to use checksums
c92a901d0ce91f7ee9f32b093829c584a0e03a5c61517e228aa515d6f9130d93
BLAKE2b-256 checksum
How to use checksums
2a8432e0880b058c57e7940342419078a5285d1d536c2afe006ca95514863b11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.1

Release files / wagtailuiplus-1.3.14-py3-none-any.whl

Download URL wagtailuiplus-1.3.14-py3-none-any.whl
Size 8.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08d54852d644483f69a368aa554e1ad05202db32c3c939d08ca1143db971f107
BLAKE2b-256 checksum
How to use checksums
0c1cc050e3d8eafbdbef3ed10059e3a5d491b9951794083517be4ee49cc01b68
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/40.5.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.1

Release history Release notifications | RSS feed

This release

1.3.14 This release

2 release files

1.3.13

2 release files

1.3.12

2 release files

1.3.11

2 release files

1.3.10

2 release files

1.3.9

2 release files

1.3.8

2 release files

1.3.7

2 release files

1.3.6

2 release files

1.3.5

2 release files

1.3.4

2 release files

1.3.3

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.4

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.3

2 release files

1.1.2

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page