diff --git a/frappe/desk/doctype/onboarding_slide/onboarding_slide.py b/frappe/desk/doctype/onboarding_slide/onboarding_slide.py
index 8c75d10b9a..e63c5d7628 100644
--- a/frappe/desk/doctype/onboarding_slide/onboarding_slide.py
+++ b/frappe/desk/doctype/onboarding_slide/onboarding_slide.py
@@ -101,10 +101,15 @@ def is_continue_slide_required(first_slide):
def create_onboarding_docs(values, doctype=None, app=None, slide_type=None):
data = json.loads(values)
doc = frappe.new_doc(doctype)
- if hasattr(doc, 'create_onboarding_docs'):
- doc.create_onboarding_docs(data)
- else:
- create_generic_onboarding_doc(data, doctype, slide_type)
+ try:
+ if hasattr(doc, 'create_onboarding_docs'):
+ doc.flags.ignore_validate = True
+ doc.flags.ignore_mandatory = True
+ doc.create_onboarding_docs(data)
+ else:
+ create_generic_onboarding_doc(data, doctype, slide_type)
+ except Exception:
+ pass
def create_generic_onboarding_doc(data, doctype, slide_type):
if slide_type == 'Settings':
@@ -117,8 +122,8 @@ def create_generic_onboarding_doc(data, doctype, slide_type):
doc = frappe.new_doc(doctype)
for entry in data:
doc.set(entry, data.get(entry))
+ doc.flags.ignore_validate = True
doc.flags.ignore_mandatory = True
- doc.flags.ignore_links = True
doc.insert()
@frappe.whitelist()
diff --git a/frappe/public/js/frappe/ui/onboarding_dialog.js b/frappe/public/js/frappe/ui/onboarding_dialog.js
index 962cf988e8..3879768bfa 100644
--- a/frappe/public/js/frappe/ui/onboarding_dialog.js
+++ b/frappe/public/js/frappe/ui/onboarding_dialog.js
@@ -14,17 +14,30 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide {
this.$next_btn = this.slides_footer.find('.next-btn');
this.$complete_btn = this.slides_footer.find('.complete-btn');
this.$action_button = this.slides_footer.find('.next-btn');
+
if (this.help_links) {
this.$help_links = $(`
`).appendTo(this.$body);
this.setup_help_links();
}
+
+ this.$skip_btn = this.slides_footer.find('.skip-btn').on('click', () => {
+ $('.onboarding-dialog').modal('toggle');
+ });
}
setup_form() {
super.setup_form();
const fields = this.get_atomic_fields();
+
+ // remove link indicator
+ fields.map((field) => {
+ if (field.fieldtype == 'Link') {
+ $('.link-btn').remove();
+ }
+ });
+
if (fields.length == 1) {
this.$form_wrapper.addClass("text-center");
} else {
@@ -33,8 +46,13 @@ frappe.setup.OnboardingSlide = class OnboardingSlide extends frappe.ui.Slide {
}
before_show() {
- (this.id === 0) ?
- this.$next_btn.text(__('Let\'s Start')) : this.$next_btn.text(__('Next'));
+ if (this.id === 0) {
+ this.$next_btn.text(__('Let\'s Go'));
+ this.$skip_btn.removeClass('hide');
+ } else {
+ this.$next_btn.text(__('Next'));
+ this.$skip_btn.addClass('hide');
+ }
//last slide
if (this.is_last_slide()) {
this.$complete_btn.removeClass('hide').addClass('action primary');
@@ -143,7 +161,10 @@ frappe.setup.OnboardingDialog = class OnboardingDialog {
before_load: ($footer) => {
$footer.find('.prev-btn').addClass('hide');
$footer.find('.next-btn').removeClass('btn-default').addClass('btn-primary action');
- $footer.find('.text-right').prepend(
+ $footer.find('.prev-div').prepend(
+ $(`
+ ${__("Do It Later")}`));
+ $footer.find('.next-div').prepend(
$(`
${__("Complete")}`));
}
diff --git a/frappe/public/js/frappe/ui/slides.js b/frappe/public/js/frappe/ui/slides.js
index 19a6cf9263..2f5da13207 100644
--- a/frappe/public/js/frappe/ui/slides.js
+++ b/frappe/public/js/frappe/ui/slides.js
@@ -77,7 +77,7 @@ frappe.ui.Slide = class Slide {
// Form methods
get_atomic_fields() {
var fields = JSON.parse(JSON.stringify(this.fields));
- if(this.add_more) {
+ if (this.add_more) {
this.count = 1;
fields = fields.map((field, i) => {
if (field.fieldname) {
@@ -149,9 +149,14 @@ frappe.ui.Slide = class Slide {
bind_fields_to_action_btn() {
var me = this;
this.reqd_fields.map((field) => {
- field.$wrapper.on('change input', () => {
+ field.$wrapper.on('change input click', () => {
me.reset_action_button_state();
});
+ field.$wrapper.on('keydown', 'input', e => {
+ if (e.key == 'Enter') {
+ me.reset_action_button_state();
+ }
+ });
});
}
@@ -332,10 +337,10 @@ frappe.ui.Slides = class Slides {
make_prev_next_buttons() {
$(`
-
+
-
`).appendTo(this.$footer);
diff --git a/frappe/public/less/desk.less b/frappe/public/less/desk.less
index 555216e7ee..6736fcc3c4 100644
--- a/frappe/public/less/desk.less
+++ b/frappe/public/less/desk.less
@@ -966,11 +966,15 @@ input[type="checkbox"] {
.onboarding-dialog {
.slide-body {
- width: 65%;
margin-right: auto;
margin-left: auto;
}
+ .slides-wrapper {
+ padding-left: 10px;
+ padding-right: 10px;
+ }
+
.modal-content {
border: 1px solid #d1d8dd;
box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.1);
@@ -1009,6 +1013,9 @@ input[type="checkbox"] {
margin-top: 15px;
}
+ .skip-btn {
+ padding: 5px 0px 5px 0px;
+ }
}
/* broken image styling */