This is the third step in the Property Editor tutorial. In this part, we will integrate built-in Umbraco Contexts. For this sample, we will use the UmbNotificationContext for some pop-ups and the UmbModalManagerContext. UmbNotificationContext is used to show a dialog when you click the Trim button and the textbox's input length is longer than the maxLength configuration.
Now we can use the notification context, let's change our #onTrimText method.
First, check if the length of our input is smaller or equal to our maxLength configuration. If it is, we have nothing to trim and will send a notification saying there is nothing to trim.
Here we can use the NotificationContext's peek method. It has two parameters UmbNotificationColor and anUmbNotificationDefaultData object.
Add the #onTextTrim()method above the render() method:
suggestions-property-editor-ui.element.ts
#onTextTrim() {
if (!this._maxChars) return;
if (!this.value || (this.value as string).length <= this._maxChars) {
const data: UmbNotificationDefaultData = {
message: `Nothing to trim!`,
};
this._notificationContext?.peek("danger", { data });
return;
}
}
Add a click event to the trim text button in the render() method:
suggestions-property-editor-ui.element.ts
<uui-button
id="suggestion-trimmer"
class="element"
look="outline"
label="Trim text"
@click=${this.#onTextTrim}
>
Trim text
</uui-button>
If our input length is less or equal to our maxLength configuration, we will now get a notification when pressing the Trim button.
Adding more logic to the context
Let's continue to add more logic. If the length is more than the maxChars configuration, we want to show a dialog for the user to confirm the trim.
Here, we use the ModalManagerContext which has an open method to show a dialog.
Like the notification context, we need to import it and consume it in the constructor.
Add the following import in the suggestions-property-editor-ui.element.ts file:
suggestions-property-editor-ui.element.ts
import { UMB_MODAL_MANAGER_CONTEXT, UMB_CONFIRM_MODAL,} from "@umbraco-cms/backoffice/modal";
Remove the UmbNotificationContext from the "@umbraco-cms/backoffice/notification" import:
import { UMB_NOTIFICATION_CONTEXT, UmbNotificationDefaultData } from "@umbraco-cms/backoffice/notification";
Update the constructor to consume the UMB_MODAL_MANAGER_CONTEXTand the UMB_CONFIRM_MODAL.