Dialog work

Get calendar quick add working again
This commit is contained in:
nathan 2022-12-01 11:20:58 -07:00
parent 83ab58329e
commit 634e00f948
3 changed files with 26 additions and 18 deletions

View File

@ -847,8 +847,12 @@ export class Et2Dialog extends Et2Widget(SlotMixin(SlDialog))
{ {
// Check for something with buttons slot set // Check for something with buttons slot set
let search_in = <HTMLElement>(this._template_widget?.DOMContainer || this._contentNode); let search_in = <HTMLElement>(this._template_widget?.DOMContainer || this._contentNode);
if(!search_in)
{
return;
}
let template_buttons = [ let template_buttons = [
...search_in.querySelectorAll('[slot="buttons"]'), ...search_in.querySelectorAll('[slot="footer"],[slot="buttons"]'),
// Look for a dialog footer, which will contain several buttons and possible other widgets // Look for a dialog footer, which will contain several buttons and possible other widgets
...search_in.querySelectorAll(".dialogFooterToolbar"), ...search_in.querySelectorAll(".dialogFooterToolbar"),
// Look for buttons at high level (not everywhere, otherwise we can't have other buttons in the template) // Look for buttons at high level (not everywhere, otherwise we can't have other buttons in the template)
@ -856,11 +860,17 @@ export class Et2Dialog extends Et2Widget(SlotMixin(SlDialog))
]; ];
if(template_buttons) if(template_buttons)
{ {
if(template_buttons[0].instanceOf(Et2Button))
{
template_buttons[0].variant = "primary";
template_buttons[0].outline = true;
}
template_buttons.forEach((button) => template_buttons.forEach((button) =>
{ {
button.setAttribute("slot", "footer"); button.setAttribute("slot", "footer");
this.appendChild(button); this.appendChild(button);
}) });
this.requestUpdate();
} }
// do NOT submit dialog, if it has no etemplate_exec_id, it only gives and error on server-side // do NOT submit dialog, if it has no etemplate_exec_id, it only gives and error on server-side
if (this._template_widget && !this._template_widget.widgetContainer.getInstanceManager().etemplate_exec_id) if (this._template_widget && !this._template_widget.widgetContainer.getInstanceManager().etemplate_exec_id)

View File

@ -2088,12 +2088,11 @@ export class CalendarApp extends EgwApp
return false; return false;
} }
// Insert the content into the correct place // Insert the content into the correct place
add_dialog._contentNode.remove(); add_dialog._contentNode.replaceChildren();
add_dialog.insertAdjacentHTML("beforeend", content.html); add_dialog._contentNode.insertAdjacentHTML("beforeend", content.html);
let template = add_dialog.querySelector("[id='calendar-add']"); let template = add_dialog.querySelector("[id='calendar-add']");
if(template) if(template)
{ {
template.slot = "";
template.addEventListener("load", add_dialog._adoptTemplateButtons); template.addEventListener("load", add_dialog._adoptTemplateButtons);
} }
} }
@ -2158,7 +2157,7 @@ export class CalendarApp extends EgwApp
if(invalid.filter((widget) => widget).length == 0) if(invalid.filter((widget) => widget).length == 0)
{ {
// Close the dialog, if everything is OK // Close the dialog, if everything is OK
(<Et2Dialog><unknown>document.querySelector('et2-dialog#quick_add')).close(); (<Et2Dialog><unknown>document.querySelector('et2-dialog#quick_add')).hide();
} }
}); });

View File

@ -28,17 +28,16 @@
</row> </row>
</rows> </rows>
</grid> </grid>
<hbox slot="buttons">
<button statustext="saves the changes made" label="Save" id="button[save]" image="save" background_image="1" <button statustext="saves the changes made" label="Save" id="button[save]" image="save" background_image="1"
onclick="return app.calendar.add_dialog_save(ev, widget); "/> onclick="return app.calendar.add_dialog_save(ev, widget); " slot="footer" default="true"/>
<button statustext="Full edit dialog" label="Edit" id="button[edit]" image="edit" background_image="1" <button statustext="Full edit dialog" label="Edit" id="button[edit]" image="edit" background_image="1"
onclick="return app.calendar.add_dialog_edit(ev, widget);"/> onclick="return app.calendar.add_dialog_edit(ev, widget);" slot="footer"/>
<button statustext="Close the window" label="Cancel" id="button[cancel]" <button statustext="Close the window" label="Cancel" id="button[cancel]"
onclick="document.querySelector('et2-dialog#quick_add').close()" image="cancel" onclick="document.querySelector('et2-dialog#quick_add').hide()" image="cancel"
background_image="1"/> background_image="1" slot="footer"/>
<checkbox label="Always use full edit dialog" id="new_event_dialog" <checkbox label="Always use full edit dialog" id="new_event_dialog"
statustext="Always use the full edit dialog, not this little dialog" statustext="Always use the full edit dialog, not this little dialog"
onchange="egw.set_preference('calendar',widget.id,widget.get_value() ? 'edit' : 'add');"/> onchange="egw.set_preference('calendar',widget.id,widget.get_value() ? 'edit' : 'add');"
</hbox> slot="footer"/>
</template> </template>
</overlay> </overlay>