2sxc Custom Input Fields (11.02+)
2sxc 11 makes it very easy to create custom input fields using standard WebComponents. This example shows the most basic case - just a dummy message (so not a real input field).
You can use it to learn about things like:
- Naming conventions for where to put the files
- Naming conventions for the
tagName
- Using
customElements.define(...)
to register your element - How web components use
constructor()
and making sure you have thesuper()
call there - Using
connectedCallback()
anddisconnectedCallback()
to init/destroy your component
So just have a look and discover how simple everything can be 🚀.
Edit for Anonymous Enabled for Tutorial
Important: We opened permissions that you can experience the edit dialog - so you can save, but it will just create draft data 😉.
Important: The feature "Public Use of Edit Form" is disabled
If you want this demo to run for anonymous users you would need it. Register your site on patrons.2sxc.org to get access to the feature.This example shows a dummy-field which doesn't allow editing, but will just show a message.
⬇️ Result | Source ➡️
Hit this edit button to have a look:
2sxc 11 makes it very easy to create custom input fields using standard WebComponents. This example shows a color picker using Pickr, a cool JS library.
⬇️ Result | Source ➡️
This example shows a real string-field uses Pickr to provide a color picker.
Hit this edit button to have a look:
You can learn how to:
- Use
connector.loadScript(...)
to load a js library - Use
connector.data
to get thevalue
and update it - How to only update the data if you really change it (so users can cancel the dialog without being asked)
- How to save
null
to explicitly not save or reset a value - Use
disconnectedCallback()
to destroy inner objects
Input fields may expect some configuration - like default colors or WebApi endpoints. To enable such a configuration, we need a Content-Type which defines all the fields that can be configured. This can be in the app-data, or it can be stored in a subfolder of the field-extension, to make redestribution easier.
⬇️ Result | Source ➡️
This example shows two color-picker fields, with different initial configurations.
Hit this edit button to have a look:
This example contains the json-exported content-type in the folder /system/field-string-app-color-pickr-pro/.data/contenttypes/
so you could just copy the extension folder to another app and use it from there.
So in this tutorial you'll learn how to:
- To see how the UI changes based on field configuration
- How to access such pre-configured settings with
connector.field.settings
- The Content-Type for configuration is included in the extension folder
Creating an own WYSIWYG would be super difficult. This is why we decided to create a simple API where you can use the existing WYSIWYG and just reconfigure it. For the configuration you will need to understand the TinyMCE API and the names of our callbacks, but then it's really easy.
⬇️ Result | Source ➡️
This example shows a reduced WYSIWYG with only 4 buttons.
Hit this edit button to have a look:
You can learn how to:
- Use
connector.loadScript(...)
to load the builtin WYSIWYG - ...and wait for the callback to ensure it's ready
- Create a inner
field-string-wysiwyg
- Set the mode to
edit
(instead ofpreview
) - Attach the
connector
so the inner object has it as well - Attach the
reconfigure
object - Create your own
Reconfigurator
which can make changes - Use
configureOptions
to set a different toolbar
This example show how we customize more of TinyMCE.
⬇️ Result | Source ➡️
This example keeps the default buttons and adds another one, with multi-language labels
Hit this edit button to have a look:
You can learn how to:
- Use
addTranslations()
- Use
configureOptions(...)
to extend the toolbar - Use configureAddOns to change button options for the image
- Run code when the editor is running
init
to add button definitions