From 034ffb924b82b1eddd5de24d2a1b9fc8e895f9cc Mon Sep 17 00:00:00 2001 From: Andrew Nicols Date: Fri, 18 Feb 2022 08:52:45 +0800 Subject: [PATCH] MDL-73915 js: Upgrade babel and eslint --- .eslintrc | 5 +- .../moodle-tool_capability-search-min.js | 2 +- .../amd/build/data_deletion.min.js | 2 +- .../amd/build/defaultsactions.min.js | 2 +- .../amd/build/myrequestactions.min.js | 2 +- .../amd/build/myrequestactions.min.js.map | 2 +- .../amd/build/requestactions.min.js | 2 +- admin/tool/langimport/amd/build/search.min.js | 2 +- .../langimport/amd/build/search.min.js.map | 2 +- .../moodle-tool_monitor-dropdown-min.js | 2 +- .../policy/amd/build/managedocsactions.min.js | 2 +- admin/tool/usertours/amd/build/tour.min.js | 2 +- .../tool/usertours/amd/build/tour.min.js.map | 2 +- ...moodle-availability_completion-form-min.js | 2 +- .../moodle-availability_date-form-min.js | 2 +- .../moodle-availability_grade-form-min.js | 2 +- .../moodle-availability_group-form-min.js | 2 +- .../moodle-availability_grouping-form-min.js | 2 +- .../moodle-availability_profile-form-min.js | 2 +- .../moodle-core_availability-form-min.js | 6 +- backup/util/ui/amd/build/async_backup.min.js | 2 +- .../moodle-backup-backupselectall-min.js | 2 +- .../moodle-backup-confirmcancel-min.js | 2 +- badges/amd/build/backpackactions.min.js | 2 +- blocks/accessreview/amd/build/module.min.js | 2 +- .../accessreview/amd/build/module.min.js.map | 2 +- .../amd/build/ajax_response_renderer.min.js | 2 +- .../build/ajax_response_renderer.min.js.map | 2 +- blocks/navigation/amd/build/nav_loader.min.js | 2 +- calendar/amd/build/repository.min.js | 2 +- calendar/amd/build/view_manager.min.js | 2 +- calendar/amd/build/view_manager.min.js.map | 2 +- contentbank/amd/build/actions.min.js | 2 +- contentbank/amd/build/search.min.js | 2 +- course/amd/build/activitychooser.min.js | 2 +- course/amd/build/activitychooser.min.js.map | 2 +- course/amd/build/copy_modal.min.js | 2 +- course/amd/build/downloadcontent.min.js | 2 +- course/amd/build/downloadcontent.min.js.map | 2 +- .../local/activitychooser/dialogue.min.js | 2 +- .../local/activitychooser/dialogue.min.js.map | 2 +- .../local/activitychooser/repository.min.js | 2 +- .../amd/build/manual_completion_toggle.min.js | 2 +- .../build/manual_completion_toggle.min.js.map | 2 +- course/amd/build/view.min.js | 2 +- course/amd/build/view.min.js.map | 2 +- .../moodle-course-categoryexpander-min.js | 2 +- .../moodle-course-coursebase-min.js | 2 +- .../moodle-course-dragdrop-min.js | 4 +- .../moodle-course-formatchooser-min.js | 2 +- .../moodle-course-management-min.js | 8 +- .../moodle-course-util-cm-min.js | 2 +- .../moodle-course-util-section-min.js | 2 +- enrol/manual/amd/build/quickenrolment.min.js | 2 +- .../amd/build/quickenrolment.min.js.map | 2 +- .../moodle-filter_glossary-autolinker-min.js | 2 +- .../moodle-filter_mathjaxloader-loader-min.js | 2 +- .../grader/gradingpanel/comparison.min.js | 2 +- .../grader/gradingpanel/normalise.min.js | 2 +- .../grades/grader/gradingpanel/point.min.js | 2 +- .../grader/gradingpanel/repository.min.js | 2 +- .../build/grades/grader/gradingpanel.min.js | 2 +- .../build/grades/grader/gradingpanel.min.js | 2 +- ...gradereport_grader-gradereporttable-min.js | 4 +- ...le-gradereport_history-userselector-min.js | 4 +- lib/amd/build/adapter.min.js | 2 +- lib/amd/build/adapter.min.js.map | 2 +- lib/amd/build/addblockmodal.min.js | 2 +- lib/amd/build/aria.min.js | 2 +- lib/amd/build/chart_base.min.js | 2 +- lib/amd/build/chart_base.min.js.map | 2 +- lib/amd/build/chart_output_chartjs.min.js | 2 +- lib/amd/build/chart_series.min.js | 2 +- lib/amd/build/chart_series.min.js.map | 2 +- lib/amd/build/chartjs-lazy.min.js | 2 +- lib/amd/build/chartjs-lazy.min.js.map | 2 +- lib/amd/build/drawer.min.js | 2 +- lib/amd/build/drawer.min.js.map | 2 +- lib/amd/build/emoji/auto_complete.min.js | 2 +- lib/amd/build/emoji/auto_complete.min.js.map | 2 +- lib/amd/build/emoji/picker.min.js | 2 +- lib/amd/build/emoji/picker.min.js.map | 2 +- lib/amd/build/local/aria/aria-hidden.min.js | 2 +- lib/amd/build/local/modal/alert.min.js | 2 +- lib/amd/build/local/modal/alert.min.js.map | 2 +- lib/amd/build/loglevel.min.js | 2 +- lib/amd/build/loglevel.min.js.map | 2 +- lib/amd/build/modal.min.js | 2 +- lib/amd/build/modal.min.js.map | 2 +- lib/amd/build/modal_cancel.min.js | 2 +- lib/amd/build/modal_cancel.min.js.map | 2 +- lib/amd/build/modal_factory.min.js | 2 +- lib/amd/build/modal_factory.min.js.map | 2 +- lib/amd/build/modal_save_cancel.min.js | 2 +- lib/amd/build/modal_save_cancel.min.js.map | 2 +- lib/amd/build/mustache.min.js | 2 +- lib/amd/build/mustache.min.js.map | 2 +- lib/amd/build/notification.min.js | 2 +- lib/amd/build/notification.min.js.map | 2 +- lib/amd/build/popper.min.js | 2 +- lib/amd/build/popper.min.js.map | 2 +- lib/amd/build/prefetch.min.js | 2 +- lib/amd/build/prefetch.min.js.map | 2 +- lib/amd/build/pubsub.min.js | 2 +- lib/amd/build/showhidesettings.min.js | 2 +- lib/amd/build/sortable_list.min.js | 2 +- lib/amd/build/sortable_list.min.js.map | 2 +- lib/amd/build/str.min.js | 2 +- lib/amd/build/str.min.js.map | 2 +- lib/amd/build/toast.min.js | 2 +- lib/amd/build/toast.min.js.map | 2 +- lib/amd/build/utils.min.js | 2 +- ...le-atto_accessibilitychecker-button-min.js | 2 +- ...dle-atto_accessibilityhelper-button-min.js | 2 +- .../moodle-atto_align-button-min.js | 2 +- .../moodle-atto_charmap-button-min.js | 4 +- .../moodle-atto_collapse-button-min.js | 2 +- .../moodle-atto_emoticon-button-min.js | 2 +- .../moodle-atto_equation-button-min.js | 4 +- .../moodle-atto_h5p-button-min.js | 4 +- .../moodle-atto_html-beautify-min.js | 47 +- .../moodle-atto_html-codemirror-min.js | 75 +- .../moodle-atto_image-button-min.js | 6 +- .../moodle-atto_indent-button-min.js | 2 +- .../moodle-atto_link-button-min.js | 2 +- .../moodle-atto_managefiles-button-min.js | 2 +- .../moodle-atto_managefiles-usedfiles-min.js | 2 +- .../moodle-atto_media-button-min.js | 8 +- .../moodle-atto_recordrtc-button-min.js | 2 +- .../moodle-atto_recordrtc-recording-min.js | 4 +- .../moodle-atto_rtl-button-min.js | 2 +- .../moodle-atto_table-button-min.js | 8 +- .../moodle-atto_undo-button-min.js | 2 +- .../moodle-editor_atto-editor-min.js | 10 +- .../moodle-editor_atto-menu-min.js | 2 +- .../moodle-editor_atto-plugin-min.js | 4 +- .../moodle-editor_atto-rangy-min.js | 33 +- lib/form/amd/build/dynamicform.min.js | 2 +- lib/form/amd/build/dynamicform.min.js.map | 2 +- lib/form/amd/build/events.min.js | 2 +- lib/form/amd/build/modalform.min.js | 2 +- lib/form/amd/build/modalform.min.js.map | 2 +- .../moodle-form-dateselector-min.js | 4 +- .../moodle-form-shortforms-min.js | 2 +- lib/table/amd/build/dynamic.min.js | 2 +- lib/table/amd/build/dynamic.min.js.map | 2 +- .../moodle-core-actionmenu-min.js | 4 +- .../moodle-core-blocks-min.js | 4 +- .../moodle-core-chooserdialogue-min.js | 2 +- .../moodle-core-dragdrop-min.js | 4 +- .../moodle-core-formchangechecker-min.js | 2 +- .../moodle-core-languninstallconfirm-min.js | 2 +- .../moodle-core-lockscroll-min.js | 2 +- .../moodle-core-maintenancemodetimer-min.js | 2 +- ...dle-core-notification-ajaxexception-min.js | 2 +- .../moodle-core-notification-alert-min.js | 2 +- .../moodle-core-notification-confirm-min.js | 2 +- .../moodle-core-notification-dialogue-min.js | 4 +- .../moodle-core-notification-exception-min.js | 2 +- .../moodle-core-tooltip-min.js | 2 +- .../moodle-core-widget-focusafterclose-min.js | 2 +- .../videojs/amd/build/Youtube-lazy.min.js | 2 +- .../videojs/amd/build/Youtube-lazy.min.js.map | 2 +- media/player/videojs/amd/build/loader.min.js | 2 +- .../videojs/amd/build/loader.min.js.map | 2 +- .../videojs/amd/build/local/ogv/ogv.min.js | 2 +- .../amd/build/local/ogv/ogv.min.js.map | 2 +- .../videojs/amd/build/video-lazy.min.js | 2 +- .../videojs/amd/build/video-lazy.min.js.map | 2 +- .../amd/build/videojs-flash-lazy.min.js | 2 +- .../amd/build/videojs-flash-lazy.min.js.map | 2 +- .../amd/build/videojs-ogvjs-lazy.min.js | 2 +- .../amd/build/videojs-ogvjs-lazy.min.js.map | 2 +- .../amd/build/message_drawer_router.min.js | 2 +- .../build/message_drawer_router.min.js.map | 2 +- .../message_drawer_view_conversation.min.js | 2 +- ...essage_drawer_view_conversation.min.js.map | 2 +- ...ge_drawer_view_conversation_patcher.min.js | 2 +- ...rawer_view_conversation_patcher.min.js.map | 2 +- ...essage_drawer_view_overview_section.min.js | 2 +- .../build/message_drawer_view_search.min.js | 2 +- .../message_drawer_view_search.min.js.map | 2 +- message/amd/build/message_send_bulk.min.js | 2 +- ...oodle-message_airnotifier-toolboxes-min.js | 2 +- .../notification_area_control_area.min.js | 2 +- .../notification_area_control_area.min.js.map | 2 +- ...oodle-assignfeedback_editpdf-editor-min.js | 18 +- .../moodle-mod_assign-history-min.js | 2 +- .../amd/build/discussion_nested_v2.min.js | 2 +- .../amd/build/discussion_nested_v2.min.js.map | 2 +- .../build/grades/expandconversation.min.js | 2 +- .../grades/expandconversation.min.js.map | 2 +- mod/forum/amd/build/grades/grader.min.js | 2 +- mod/forum/amd/build/grades/grader.min.js.map | 2 +- .../amd/build/local/grades/grader.min.js | 2 +- .../amd/build/local/grades/grader.min.js.map | 2 +- .../grades/local/grader/gradingpanel.min.js | 2 +- .../grades/local/grader/user_picker.min.js | 2 +- .../local/grader/user_picker.min.js.map | 2 +- .../amd/build/local/layout/fullscreen.min.js | 2 +- .../build/local/layout/fullscreen.min.js.map | 2 +- mod/lti/amd/build/contentitem.min.js | 2 +- .../moodle-mod_quiz-autosave-min.js | 2 +- .../moodle-mod_quiz-dragdrop-min.js | 4 +- .../moodle-mod_quiz-questionchooser-min.js | 2 +- .../moodle-mod_quiz-quizbase-min.js | 2 +- .../moodle-mod_quiz-toolboxes-min.js | 6 +- .../moodle-mod_quiz-util-page-min.js | 2 +- .../moodle-mod_quiz-util-slot-min.js | 2 +- mod/workshop/amd/build/modform.min.js | 2 +- npm-shrinkwrap.json | 9000 ++++++----------- package.json | 25 +- payment/amd/build/gateways_modal.min.js | 2 +- payment/amd/build/modal_gateways.min.js | 2 +- payment/amd/build/modal_gateways.min.js.map | 2 +- .../paypal/amd/build/gateways_modal.min.js | 2 +- .../amd/build/gateways_modal.min.js.map | 2 +- .../moodle-question-chooser-min.js | 2 +- .../moodle-question-searchform-min.js | 2 +- ...moodle-report_eventlist-eventfilter-min.js | 2 +- .../moodle-report_loglive-fetchlogs-min.js | 2 +- theme/boost/amd/build/bootstrap/alert.min.js | 2 +- .../amd/build/bootstrap/alert.min.js.map | 2 +- theme/boost/amd/build/bootstrap/button.min.js | 2 +- .../amd/build/bootstrap/button.min.js.map | 2 +- .../boost/amd/build/bootstrap/carousel.min.js | 2 +- .../amd/build/bootstrap/carousel.min.js.map | 2 +- .../boost/amd/build/bootstrap/collapse.min.js | 2 +- .../amd/build/bootstrap/collapse.min.js.map | 2 +- .../boost/amd/build/bootstrap/dropdown.min.js | 2 +- .../amd/build/bootstrap/dropdown.min.js.map | 2 +- theme/boost/amd/build/bootstrap/modal.min.js | 2 +- .../amd/build/bootstrap/modal.min.js.map | 2 +- .../boost/amd/build/bootstrap/popover.min.js | 2 +- .../amd/build/bootstrap/popover.min.js.map | 2 +- .../amd/build/bootstrap/scrollspy.min.js | 2 +- .../amd/build/bootstrap/scrollspy.min.js.map | 2 +- theme/boost/amd/build/bootstrap/tab.min.js | 2 +- .../boost/amd/build/bootstrap/tab.min.js.map | 2 +- theme/boost/amd/build/bootstrap/toast.min.js | 2 +- .../amd/build/bootstrap/toast.min.js.map | 2 +- .../build/bootstrap/tools/sanitizer.min.js | 2 +- .../bootstrap/tools/sanitizer.min.js.map | 2 +- .../boost/amd/build/bootstrap/tooltip.min.js | 2 +- .../amd/build/bootstrap/tooltip.min.js.map | 2 +- theme/boost/amd/build/loader.min.js | 2 +- theme/boost/amd/build/loader.min.js.map | 2 +- theme/boost/amd/build/pending.min.js | 2 +- theme/boost/amd/build/pending.min.js.map | 2 +- theme/boost/amd/build/scroll.min.js | 2 +- theme/boost/amd/build/scroll.min.js.map | 2 +- user/amd/build/form_user_selector.min.js | 2 +- user/amd/build/form_user_selector.min.js.map | 2 +- .../local/participants/bulkactions.min.js | 2 +- .../local/participants/bulkactions.min.js.map | 2 +- .../local/participantsfilter/filter.min.js | 2 +- .../participantsfilter/filter.min.js.map | 2 +- .../filtertypes/country.min.js | 2 +- .../filtertypes/country.min.js.map | 2 +- .../filtertypes/courseid.min.js | 2 +- .../filtertypes/courseid.min.js.map | 2 +- .../filtertypes/keyword.min.js | 2 +- .../filtertypes/keyword.min.js.map | 2 +- user/amd/build/participants.min.js | 2 +- user/amd/build/participants.min.js.map | 2 +- user/amd/build/participantsfilter.min.js | 2 +- user/amd/build/participantsfilter.min.js.map | 2 +- user/amd/build/repository.min.js | 2 +- user/amd/build/status_field.min.js | 2 +- user/amd/build/status_field.min.js.map | 2 +- 270 files changed, 3543 insertions(+), 6252 deletions(-) diff --git a/.eslintrc b/.eslintrc index a388f57560c..0493181083f 100644 --- a/.eslintrc +++ b/.eslintrc @@ -227,7 +227,7 @@ }, // We're using babel transpiling so use their parser // for linting. - parser: 'babel-eslint', + parser: '@babel/eslint-parser', // Check AMD with some slightly stricter rules. rules: { 'no-unused-vars': 'error', @@ -300,7 +300,8 @@ }, parserOptions: { 'ecmaVersion': 9, - 'sourceType': 'module' + 'sourceType': 'module', + 'requireConfigFile': false, } } ] diff --git a/admin/tool/capability/yui/build/moodle-tool_capability-search/moodle-tool_capability-search-min.js b/admin/tool/capability/yui/build/moodle-tool_capability-search/moodle-tool_capability-search-min.js index 30e97fccc72..fee3a858e71 100644 --- a/admin/tool/capability/yui/build/moodle-tool_capability-search/moodle-tool_capability-search-min.js +++ b/admin/tool/capability/yui/build/moodle-tool_capability-search/moodle-tool_capability-search-min.js @@ -1 +1 @@ -YUI.add("moodle-tool_capability-search",function(s,t){var e=function(){e.superclass.constructor.apply(this,arguments)};e.prototype={form:null,select:null,selectoptions:{},input:null,button:null,cancel:null,lastsearch:null,initializer:function(){this.form=s.one("#capability-overview-form"),this.select=this.form.one("select[data-search=capability]"),this.select.setStyle("minWidth",this.select.get("offsetWidth")),this.select.get("options").each(function(t){var e=t.get("value");this.selectoptions[e]=t},this),this.button=this.form.all("input[type=submit]"),this.lastsearch=this.form.one("input[name=search]");var t=s.Node.create('
'),e=s.Node.create('");this.cancel=s.Node.create(''),this.input=s.Node.create(''),t.append(e).append(this.input).append(this.cancel),this.select.insert(t,"before"),this.input.on("keyup",this.typed,this),this.select.on("change",this.validate,this),this.cancel.on("click",function(){this.input.set("value",""),this.typed()},this),this.lastsearch&&(this.input.set("value",this.lastsearch.get("value")),this.typed(),this.select.one("option[selected]")&&this.select.set("scrollTop",this.select.one("option[selected]").get("getX"))),this.validate()},validate:function(){this.button.set("disabled",""===this.select.get("value"))},typed:function(){var t,e=this.input.get("value"),s=0,i=null;for(t in this.lastsearch&&this.lastsearch.set("value",e),this.select.all("option").remove(),this.selectoptions)0<=t.indexOf(e)&&(s++,i=this.selectoptions[t],this.select.append(this.selectoptions[t]));0===s?this.input.addClass("error"):(this.input.removeClass("error"),1===s&&i.set("selected",!0)),""!==e?this.cancel.removeClass("d-none"):this.cancel.addClass("d-none"),this.validate()}},s.extend(e,s.Base,e.prototype,{NAME:"tool_capability-search",ATTRS:{strsearch:{}}}),M.tool_capability=M.tool_capability||{},M.tool_capability.init_capability_search=function(t){new e(t)}},"@VERSION@",{requires:["base","node"]}); \ No newline at end of file +YUI.add("moodle-tool_capability-search",function(s,t){var e=function(){e.superclass.constructor.apply(this,arguments)};s.extend(e,s.Base,e.prototype={form:null,select:null,selectoptions:{},input:null,button:null,cancel:null,lastsearch:null,initializer:function(){this.form=s.one("#capability-overview-form"),this.select=this.form.one("select[data-search=capability]"),this.select.setStyle("minWidth",this.select.get("offsetWidth")),this.select.get("options").each(function(t){var e=t.get("value");this.selectoptions[e]=t},this),this.button=this.form.all("input[type=submit]"),this.lastsearch=this.form.one("input[name=search]");var t=s.Node.create('
'),e=s.Node.create('");this.cancel=s.Node.create(''),this.input=s.Node.create(''),t.append(e).append(this.input).append(this.cancel),this.select.insert(t,"before"),this.input.on("keyup",this.typed,this),this.select.on("change",this.validate,this),this.cancel.on("click",function(){this.input.set("value",""),this.typed()},this),this.lastsearch&&(this.input.set("value",this.lastsearch.get("value")),this.typed(),this.select.one("option[selected]")&&this.select.set("scrollTop",this.select.one("option[selected]").get("getX"))),this.validate()},validate:function(){this.button.set("disabled",""===this.select.get("value"))},typed:function(){var t,e=this.input.get("value"),s=0,i=null;for(t in this.lastsearch&&this.lastsearch.set("value",e),this.select.all("option").remove(),this.selectoptions)0<=t.indexOf(e)&&(s++,i=this.selectoptions[t],this.select.append(this.selectoptions[t]));0===s?this.input.addClass("error"):(this.input.removeClass("error"),1===s&&i.set("selected",!0)),""!==e?this.cancel.removeClass("d-none"):this.cancel.addClass("d-none"),this.validate()}},{NAME:"tool_capability-search",ATTRS:{strsearch:{}}}),M.tool_capability=M.tool_capability||{},M.tool_capability.init_capability_search=function(t){new e(t)}},"@VERSION@",{requires:["base","node"]}); \ No newline at end of file diff --git a/admin/tool/dataprivacy/amd/build/data_deletion.min.js b/admin/tool/dataprivacy/amd/build/data_deletion.min.js index 88f9f42ce41..fe2296d9825 100644 --- a/admin/tool/dataprivacy/amd/build/data_deletion.min.js +++ b/admin/tool/dataprivacy/amd/build/data_deletion.min.js @@ -1,2 +1,2 @@ -define ("tool_dataprivacy/data_deletion",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events"],function(a,b,c,d,e,f){var h={MARK_FOR_DELETION:"[data-action=\"markfordeletion\"]",SELECT_ALL:"[data-action=\"selectall\"]"},i={SELECTCONTEXT:".selectcontext"},j=function(){this.registerEvents()};j.prototype.registerEvents=function(){a(h.MARK_FOR_DELETION).click(function(b){b.preventDefault();var c=[];a(i.SELECTCONTEXT).each(function(){var b=a(this);if(b.is(":checked")){c.push(b.val())}});g(c)});a(h.SELECT_ALL).change(function(b){b.preventDefault();var c=a(this);if(c.is(":checked")){a(i.SELECTCONTEXT).attr("checked","checked")}else{a(i.SELECTCONTEXT).removeAttr("checked")}})};function g(a){var g="";d.get_strings([{key:"confirm",component:"moodle"},{key:"confirmcontextdeletion",component:"tool_dataprivacy"}]).then(function(a){g=a[0];var b=a[1];return e.create({title:g,body:b,type:e.types.SAVE_CANCEL})}).then(function(d){d.setSaveButtonText(g);d.getRoot().on(f.save,function(){b.call([{methodname:"tool_dataprivacy_confirm_contexts_for_deletion",args:{ids:a}}])[0].done(function(a){if(a.result){window.location.reload()}else{c.addNotification({message:a.warnings[0].message,type:"error"})}}).fail(c.exception)});d.getRoot().on(f.hidden,function(){d.destroy()});return d}).done(function(a){a.show()}).fail(c.exception)}return j}); +define ("tool_dataprivacy/data_deletion",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events"],function(a,b,c,d,e,f){var g={MARK_FOR_DELETION:"[data-action=\"markfordeletion\"]",SELECT_ALL:"[data-action=\"selectall\"]"},h={SELECTCONTEXT:".selectcontext"},i=function(){this.registerEvents()};i.prototype.registerEvents=function(){a(g.MARK_FOR_DELETION).click(function(b){b.preventDefault();var c=[];a(h.SELECTCONTEXT).each(function(){var b=a(this);if(b.is(":checked")){c.push(b.val())}});j(c)});a(g.SELECT_ALL).change(function(b){b.preventDefault();var c=a(this);if(c.is(":checked")){a(h.SELECTCONTEXT).attr("checked","checked")}else{a(h.SELECTCONTEXT).removeAttr("checked")}})};function j(a){var g="";d.get_strings([{key:"confirm",component:"moodle"},{key:"confirmcontextdeletion",component:"tool_dataprivacy"}]).then(function(a){g=a[0];var b=a[1];return e.create({title:g,body:b,type:e.types.SAVE_CANCEL})}).then(function(d){d.setSaveButtonText(g);d.getRoot().on(f.save,function(){b.call([{methodname:"tool_dataprivacy_confirm_contexts_for_deletion",args:{ids:a}}])[0].done(function(a){if(a.result){window.location.reload()}else{c.addNotification({message:a.warnings[0].message,type:"error"})}}).fail(c.exception)});d.getRoot().on(f.hidden,function(){d.destroy()});return d}).done(function(a){a.show()}).fail(c.exception)}return i}); //# sourceMappingURL=data_deletion.min.js.map diff --git a/admin/tool/dataprivacy/amd/build/defaultsactions.min.js b/admin/tool/dataprivacy/amd/build/defaultsactions.min.js index fa8e7fcac27..e65b6b7ffa4 100644 --- a/admin/tool/dataprivacy/amd/build/defaultsactions.min.js +++ b/admin/tool/dataprivacy/amd/build/defaultsactions.min.js @@ -1,2 +1,2 @@ -define ("tool_dataprivacy/defaultsactions",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events","core/templates"],function(a,b,c,d,f,g,h){var k={EDIT_LEVEL_DEFAULTS:"[data-action=\"edit-level-defaults\"]",NEW_ACTIVITY_DEFAULTS:"[data-action=\"new-activity-defaults\"]",EDIT_ACTIVITY_DEFAULTS:"[data-action=\"edit-activity-defaults\"]",DELETE_ACTIVITY_DEFAULTS:"[data-action=\"delete-activity-defaults\"]"},l=-1,m=function(){this.registerEvents()};m.prototype.registerEvents=function(){a(k.EDIT_LEVEL_DEFAULTS).click(function(f){f.preventDefault();var e=a(this),g=e.data("contextlevel"),h=e.data("category"),j=e.data("purpose"),k=b.call([{methodname:"tool_dataprivacy_get_category_options",args:{}},{methodname:"tool_dataprivacy_get_purpose_options",args:{}}]),l=d.get_string("editdefaults","tool_dataprivacy",a("#defaults-header").text());a.when(k[0],k[1],l).then(function(a,b,c){var d=a.options,e=b.options;i(c,g,h,j,null,d,e,null);return!0}).catch(c.exception)});a(k.NEW_ACTIVITY_DEFAULTS).click(function(f){f.preventDefault();var e=a(this),g=e.data("contextlevel"),h=b.call([{methodname:"tool_dataprivacy_get_category_options",args:{}},{methodname:"tool_dataprivacy_get_purpose_options",args:{}},{methodname:"tool_dataprivacy_get_activity_options",args:{nodefaults:!0}}]),j=d.get_string("addnewdefaults","tool_dataprivacy");a.when(h[0],h[1],h[2],j).then(function(a,b,c,d){var e=a.options,f=b.options,h=c.options;i(d,g,null,null,null,e,f,h);return!0}).catch(c.exception)});a(k.EDIT_ACTIVITY_DEFAULTS).click(function(f){f.preventDefault();var e=a(this),g=e.data("contextlevel"),h=e.data("category"),j=e.data("purpose"),k=e.data("activityname"),l=b.call([{methodname:"tool_dataprivacy_get_category_options",args:{}},{methodname:"tool_dataprivacy_get_purpose_options",args:{}},{methodname:"tool_dataprivacy_get_activity_options",args:{}}]),m=d.get_string("editmoduledefaults","tool_dataprivacy");a.when(l[0],l[1],l[2],m).then(function(a,b,c,d){var e=a.options,f=b.options,l=c.options;i(d,g,h,j,k,e,f,l);return!0}).catch(c.exception)});a(k.DELETE_ACTIVITY_DEFAULTS).click(function(b){b.preventDefault();var e=a(this),i=e.data("contextlevel"),k=e.data("activityname"),m=e.data("activitydisplayname");f.create({title:d.get_string("deletedefaults","tool_dataprivacy",m),body:h.render("tool_dataprivacy/delete_activity_defaults",{activityname:m}),type:f.types.SAVE_CANCEL,large:!0}).then(function(a){a.setSaveButtonText(d.get_string("delete"));a.getRoot().on(g.save,function(){j(i,l,l,k,!1)});a.getRoot().on(g.hidden,function(){a.destroy()});a.show();return!0}).catch(c.exception)})};function i(b,d,e,i,k,l,m,n){if(null!==e){l.forEach(function(a){if(a.id===e){a.selected=!0}})}if(null!==i){m.forEach(function(a){if(a.id===i){a.selected=!0}})}var o={contextlevel:d,categoryoptions:l,purposeoptions:m};if(null!==n&&n.length){if(null===k){o.newactivitydefaults=!0}else{n.forEach(function(a){if(k===a.name){a.selected=!0}})}o.modemodule=!0;o.activityoptions=n}f.create({title:b,body:h.render("tool_dataprivacy/category_purpose_form",o),type:f.types.SAVE_CANCEL,large:!0}).then(function(b){b.getRoot().on(g.save,function(){var b=a("#activity"),c="undefined"!=typeof b?b.val():null,d=a("#override"),e="undefined"!=typeof d?d.is(":checked"):!1;j(a("#contextlevel").val(),a("#category").val(),a("#purpose").val(),c,e)});b.getRoot().on(g.hidden,function(){b.destroy()});b.show();return b}).catch(c.exception)}function j(a,c,d,e,f){b.call([{methodname:"tool_dataprivacy_set_context_defaults",args:{contextlevel:a,category:c,purpose:d,override:f,activity:e}}])[0].done(function(a){if(a.result){window.location.reload()}})}return{init:function init(){return new m}}}); +define ("tool_dataprivacy/defaultsactions",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events","core/templates"],function(a,b,c,d,f,g,h){var i={EDIT_LEVEL_DEFAULTS:"[data-action=\"edit-level-defaults\"]",NEW_ACTIVITY_DEFAULTS:"[data-action=\"new-activity-defaults\"]",EDIT_ACTIVITY_DEFAULTS:"[data-action=\"edit-activity-defaults\"]",DELETE_ACTIVITY_DEFAULTS:"[data-action=\"delete-activity-defaults\"]"},j=-1,k=function(){this.registerEvents()};k.prototype.registerEvents=function(){a(i.EDIT_LEVEL_DEFAULTS).click(function(f){f.preventDefault();var e=a(this),g=e.data("contextlevel"),h=e.data("category"),i=e.data("purpose"),j=b.call([{methodname:"tool_dataprivacy_get_category_options",args:{}},{methodname:"tool_dataprivacy_get_purpose_options",args:{}}]),k=d.get_string("editdefaults","tool_dataprivacy",a("#defaults-header").text());a.when(j[0],j[1],k).then(function(a,b,c){var d=a.options,e=b.options;l(c,g,h,i,null,d,e,null);return!0}).catch(c.exception)});a(i.NEW_ACTIVITY_DEFAULTS).click(function(f){f.preventDefault();var e=a(this),g=e.data("contextlevel"),h=b.call([{methodname:"tool_dataprivacy_get_category_options",args:{}},{methodname:"tool_dataprivacy_get_purpose_options",args:{}},{methodname:"tool_dataprivacy_get_activity_options",args:{nodefaults:!0}}]),i=d.get_string("addnewdefaults","tool_dataprivacy");a.when(h[0],h[1],h[2],i).then(function(a,b,c,d){var e=a.options,f=b.options,h=c.options;l(d,g,null,null,null,e,f,h);return!0}).catch(c.exception)});a(i.EDIT_ACTIVITY_DEFAULTS).click(function(f){f.preventDefault();var e=a(this),g=e.data("contextlevel"),h=e.data("category"),i=e.data("purpose"),j=e.data("activityname"),k=b.call([{methodname:"tool_dataprivacy_get_category_options",args:{}},{methodname:"tool_dataprivacy_get_purpose_options",args:{}},{methodname:"tool_dataprivacy_get_activity_options",args:{}}]),m=d.get_string("editmoduledefaults","tool_dataprivacy");a.when(k[0],k[1],k[2],m).then(function(a,b,c,d){var e=a.options,f=b.options,k=c.options;l(d,g,h,i,j,e,f,k);return!0}).catch(c.exception)});a(i.DELETE_ACTIVITY_DEFAULTS).click(function(b){b.preventDefault();var e=a(this),i=e.data("contextlevel"),k=e.data("activityname"),l=e.data("activitydisplayname");f.create({title:d.get_string("deletedefaults","tool_dataprivacy",l),body:h.render("tool_dataprivacy/delete_activity_defaults",{activityname:l}),type:f.types.SAVE_CANCEL,large:!0}).then(function(a){a.setSaveButtonText(d.get_string("delete"));a.getRoot().on(g.save,function(){m(i,j,j,k,!1)});a.getRoot().on(g.hidden,function(){a.destroy()});a.show();return!0}).catch(c.exception)})};function l(b,d,e,i,j,k,l,n){if(null!==e){k.forEach(function(a){if(a.id===e){a.selected=!0}})}if(null!==i){l.forEach(function(a){if(a.id===i){a.selected=!0}})}var o={contextlevel:d,categoryoptions:k,purposeoptions:l};if(null!==n&&n.length){if(null===j){o.newactivitydefaults=!0}else{n.forEach(function(a){if(j===a.name){a.selected=!0}})}o.modemodule=!0;o.activityoptions=n}f.create({title:b,body:h.render("tool_dataprivacy/category_purpose_form",o),type:f.types.SAVE_CANCEL,large:!0}).then(function(b){b.getRoot().on(g.save,function(){var b=a("#activity"),c="undefined"!=typeof b?b.val():null,d=a("#override"),e="undefined"!=typeof d?d.is(":checked"):!1;m(a("#contextlevel").val(),a("#category").val(),a("#purpose").val(),c,e)});b.getRoot().on(g.hidden,function(){b.destroy()});b.show();return b}).catch(c.exception)}function m(a,c,d,e,f){b.call([{methodname:"tool_dataprivacy_set_context_defaults",args:{contextlevel:a,category:c,purpose:d,override:f,activity:e}}])[0].done(function(a){if(a.result){window.location.reload()}})}return{init:function init(){return new k}}}); //# sourceMappingURL=defaultsactions.min.js.map diff --git a/admin/tool/dataprivacy/amd/build/myrequestactions.min.js b/admin/tool/dataprivacy/amd/build/myrequestactions.min.js index b1b7317c48a..0235b33117c 100644 --- a/admin/tool/dataprivacy/amd/build/myrequestactions.min.js +++ b/admin/tool/dataprivacy/amd/build/myrequestactions.min.js @@ -1,2 +1,2 @@ -define ("tool_dataprivacy/myrequestactions",["exports","core/ajax","core/notification","core/pending","core/str"],function(a,b,c,d,e){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.init=void 0;b=f(b);c=f(c);d=f(d);function f(a){return a&&a.__esModule?a:{default:a}}function g(a,b){return m(a)||l(a,b)||j(a,b)||h()}function h(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function j(a,b){if(!a)return;if("string"==typeof a)return k(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return k(a,b)}function k(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);ca.length)b=a.length;for(var c=0,d=Array(b);c.\n\n/**\n * AMD module to enable users to manage their own data requests.\n *\n * @module tool_dataprivacy/myrequestactions\n * @copyright 2018 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Ajax from 'core/ajax';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {get_strings as getStrings} from 'core/str';\n\nconst SELECTORS = {\n CANCEL_REQUEST: '[data-action=\"cancel\"][data-requestid]',\n};\n\n/**\n * Initialize module\n */\nexport const init = () => {\n document.addEventListener('click', event => {\n const triggerElement = event.target.closest(SELECTORS.CANCEL_REQUEST);\n if (triggerElement === null) {\n return;\n }\n\n event.preventDefault();\n\n const requiredStrings = [\n {key: 'cancelrequest', component: 'tool_dataprivacy'},\n {key: 'cancelrequestconfirmation', component: 'tool_dataprivacy'},\n ];\n\n getStrings(requiredStrings).then(([cancelRequest, cancelConfirm]) => {\n return Notification.confirm(cancelRequest, cancelConfirm, cancelRequest, null, () => {\n const pendingPromise = new Pending('tool/dataprivacy:cancelRequest');\n const request = {\n methodname: 'tool_dataprivacy_cancel_data_request',\n args: {requestid: triggerElement.dataset.requestid}\n };\n\n Ajax.call([request])[0].then(response => {\n if (response.result) {\n window.location.reload();\n } else {\n Notification.addNotification({\n type: 'error',\n message: response.warnings[0].message\n });\n }\n return pendingPromise.resolve();\n }).catch(Notification.exception);\n });\n }).catch();\n });\n};\n"],"file":"myrequestactions.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/myrequestactions.js"],"names":["SELECTORS","CANCEL_REQUEST","init","document","addEventListener","event","triggerElement","target","closest","preventDefault","key","component","then","cancelRequest","cancelConfirm","Notification","confirm","pendingPromise","Pending","request","methodname","args","requestid","dataset","Ajax","call","response","result","window","location","reload","addNotification","type","message","warnings","resolve","catch","exception"],"mappings":"kNAuBA,OACA,OACA,O,2hCAGMA,CAAAA,CAAS,CAAG,CACdC,cAAc,CAAE,0CADF,C,QAOE,QAAPC,CAAAA,IAAO,EAAM,CACtBC,QAAQ,CAACC,gBAAT,CAA0B,OAA1B,CAAmC,SAAAC,CAAK,CAAI,CACxC,GAAMC,CAAAA,CAAc,CAAGD,CAAK,CAACE,MAAN,CAAaC,OAAb,CAAqBR,CAAS,CAACC,cAA/B,CAAvB,CACA,GAAuB,IAAnB,GAAAK,CAAJ,CAA6B,CACzB,MACH,CAEDD,CAAK,CAACI,cAAN,GAOA,kBALwB,CACpB,CAACC,GAAG,CAAE,eAAN,CAAuBC,SAAS,CAAE,kBAAlC,CADoB,CAEpB,CAACD,GAAG,CAAE,2BAAN,CAAmCC,SAAS,CAAE,kBAA9C,CAFoB,CAKxB,EAA4BC,IAA5B,CAAiC,WAAoC,cAAlCC,CAAkC,MAAnBC,CAAmB,MACjE,MAAOC,WAAaC,OAAb,CAAqBH,CAArB,CAAoCC,CAApC,CAAmDD,CAAnD,CAAkE,IAAlE,CAAwE,UAAM,IAC3EI,CAAAA,CAAc,CAAG,GAAIC,UAAJ,CAAY,gCAAZ,CAD0D,CAE3EC,CAAO,CAAG,CACZC,UAAU,CAAE,sCADA,CAEZC,IAAI,CAAE,CAACC,SAAS,CAAEhB,CAAc,CAACiB,OAAf,CAAuBD,SAAnC,CAFM,CAFiE,CAOjFE,UAAKC,IAAL,CAAU,CAACN,CAAD,CAAV,EAAqB,CAArB,EAAwBP,IAAxB,CAA6B,SAAAc,CAAQ,CAAI,CACrC,GAAIA,CAAQ,CAACC,MAAb,CAAqB,CACjBC,MAAM,CAACC,QAAP,CAAgBC,MAAhB,EACH,CAFD,IAEO,CACHf,UAAagB,eAAb,CAA6B,CACzBC,IAAI,CAAE,OADmB,CAEzBC,OAAO,CAAEP,CAAQ,CAACQ,QAAT,CAAkB,CAAlB,EAAqBD,OAFL,CAA7B,CAIH,CACD,MAAOhB,CAAAA,CAAc,CAACkB,OAAf,EACV,CAVD,EAUGC,KAVH,CAUSrB,UAAasB,SAVtB,CAWH,CAlBM,CAmBV,CApBD,EAoBGD,KApBH,EAqBH,CAlCD,CAmCH,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * AMD module to enable users to manage their own data requests.\n *\n * @module tool_dataprivacy/myrequestactions\n * @copyright 2018 Jun Pataleta\n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Ajax from 'core/ajax';\nimport Notification from 'core/notification';\nimport Pending from 'core/pending';\nimport {get_strings as getStrings} from 'core/str';\n\nconst SELECTORS = {\n CANCEL_REQUEST: '[data-action=\"cancel\"][data-requestid]',\n};\n\n/**\n * Initialize module\n */\nexport const init = () => {\n document.addEventListener('click', event => {\n const triggerElement = event.target.closest(SELECTORS.CANCEL_REQUEST);\n if (triggerElement === null) {\n return;\n }\n\n event.preventDefault();\n\n const requiredStrings = [\n {key: 'cancelrequest', component: 'tool_dataprivacy'},\n {key: 'cancelrequestconfirmation', component: 'tool_dataprivacy'},\n ];\n\n getStrings(requiredStrings).then(([cancelRequest, cancelConfirm]) => {\n return Notification.confirm(cancelRequest, cancelConfirm, cancelRequest, null, () => {\n const pendingPromise = new Pending('tool/dataprivacy:cancelRequest');\n const request = {\n methodname: 'tool_dataprivacy_cancel_data_request',\n args: {requestid: triggerElement.dataset.requestid}\n };\n\n Ajax.call([request])[0].then(response => {\n if (response.result) {\n window.location.reload();\n } else {\n Notification.addNotification({\n type: 'error',\n message: response.warnings[0].message\n });\n }\n return pendingPromise.resolve();\n }).catch(Notification.exception);\n });\n }).catch();\n });\n};\n"],"file":"myrequestactions.min.js"} \ No newline at end of file diff --git a/admin/tool/dataprivacy/amd/build/requestactions.min.js b/admin/tool/dataprivacy/amd/build/requestactions.min.js index 3c081e89dda..a15474f55f7 100644 --- a/admin/tool/dataprivacy/amd/build/requestactions.min.js +++ b/admin/tool/dataprivacy/amd/build/requestactions.min.js @@ -1,2 +1,2 @@ -define ("tool_dataprivacy/requestactions",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events","core/templates","tool_dataprivacy/data_request_modal","tool_dataprivacy/events"],function(a,b,c,d,e,f,g,h,i){var q={APPROVE_REQUEST:"[data-action=\"approve\"]",DENY_REQUEST:"[data-action=\"deny\"]",VIEW_REQUEST:"[data-action=\"view\"]",MARK_COMPLETE:"[data-action=\"complete\"]",CHANGE_BULK_ACTION:"[id=\"bulk-action\"]",CONFIRM_BULK_ACTION:"[id=\"confirm-bulk-action\"]",SELECT_ALL:"[data-action=\"selectall\"]"},r={APPROVE:1,DENY:2},s={SELECT_REQUEST:".selectrequests"},t=function(){this.registerEvents()};t.prototype.registerEvents=function(){a(q.VIEW_REQUEST).click(function(d){d.preventDefault();var k=a(this).data("requestid"),m=b.call([{methodname:"tool_dataprivacy_get_data_request",args:{requestid:k}}]);a.when(m[0]).then(function(a){if(a.result){return a.result}c.addNotification({message:a.warnings[0].message,type:"error"});return!1}).then(function(a){var b=g.render("tool_dataprivacy/request_details",a),c={approvedeny:a.approvedeny,canmarkcomplete:a.canmarkcomplete};return e.create({title:a.typename,body:b,type:h.TYPE,large:!0,templateContext:c})}).then(function(a){a.getRoot().on(i.approve,function(){o(i.approve,j(k))});a.getRoot().on(i.deny,function(){o(i.deny,l(k))});a.getRoot().on(i.complete,function(){p("tool_dataprivacy_mark_complete",{requestid:k})});a.getRoot().on(f.hidden,function(){a.destroy()});a.show()}).catch(c.exception)});a(q.APPROVE_REQUEST).click(function(b){b.preventDefault();var c=a(this).data("requestid");o(i.approve,j(c))});a(q.DENY_REQUEST).click(function(b){b.preventDefault();var c=a(this).data("requestid");o(i.deny,l(c))});a(q.MARK_COMPLETE).click(function(b){b.preventDefault();var c=a(this).data("requestid");o(i.complete,n(c))});a(q.CONFIRM_BULK_ACTION).click(function(){var b=[],e="",f={},g=[{key:"selectbulkaction",component:"tool_dataprivacy"},{key:"selectdatarequests",component:"tool_dataprivacy"},{key:"ok"}],h=parseInt(a("#bulk-action").val());if(h!=r.APPROVE&&h!=r.DENY){d.get_strings(g).done(function(a){c.alert("",a[0],a[2])}).fail(c.exception);return}a(".selectrequests:checked").each(function(){b.push(a(this).val())});if(1>b.length){d.get_strings(g).done(function(a){c.alert("",a[1],a[2])}).fail(c.exception);return}switch(h){case r.APPROVE:e=i.bulkApprove;f=k(b);break;case r.DENY:e=i.bulkDeny;f=m(b);}o(e,f)});a(q.SELECT_ALL).change(function(b){b.preventDefault();var c=a(this).is(":checked");a(s.SELECT_REQUEST).prop("checked",c)})};function j(a){return{wsfunction:"tool_dataprivacy_approve_data_request",wsparams:{requestid:a}}}function k(a){return{wsfunction:"tool_dataprivacy_bulk_approve_data_requests",wsparams:{requestids:a}}}function l(a){return{wsfunction:"tool_dataprivacy_deny_data_request",wsparams:{requestid:a}}}function m(a){return{wsfunction:"tool_dataprivacy_bulk_deny_data_requests",wsparams:{requestids:a}}}function n(a){return{wsfunction:"tool_dataprivacy_mark_complete",wsparams:{requestid:a}}}function o(a,b){var g=[];switch(a){case i.approve:g=[{key:"approverequest",component:"tool_dataprivacy"},{key:"confirmapproval",component:"tool_dataprivacy"}];break;case i.bulkApprove:g=[{key:"bulkapproverequests",component:"tool_dataprivacy"},{key:"confirmbulkapproval",component:"tool_dataprivacy"}];break;case i.deny:g=[{key:"denyrequest",component:"tool_dataprivacy"},{key:"confirmdenial",component:"tool_dataprivacy"}];break;case i.bulkDeny:g=[{key:"bulkdenyrequests",component:"tool_dataprivacy"},{key:"confirmbulkdenial",component:"tool_dataprivacy"}];break;case i.complete:g=[{key:"markcomplete",component:"tool_dataprivacy"},{key:"confirmcompletion",component:"tool_dataprivacy"}];break;}var h="";d.get_strings(g).then(function(a){h=a[0];var b=a[1];return e.create({title:h,body:b,type:e.types.SAVE_CANCEL})}).then(function(a){a.setSaveButtonText(h);a.getRoot().on(f.save,function(){p(b.wsfunction,b.wsparams)});a.getRoot().on(f.hidden,function(){a.destroy()});a.show()}).catch(c.exception)}function p(a,d){b.call([{methodname:a,args:d}])[0].done(function(a){if(a.result){window.location.reload()}else{c.addNotification({message:a.warnings[0].message,type:"error"})}}).fail(c.exception)}return t}); +define ("tool_dataprivacy/requestactions",["jquery","core/ajax","core/notification","core/str","core/modal_factory","core/modal_events","core/templates","tool_dataprivacy/data_request_modal","tool_dataprivacy/events"],function(a,b,c,d,e,f,g,h,i){var j={APPROVE_REQUEST:"[data-action=\"approve\"]",DENY_REQUEST:"[data-action=\"deny\"]",VIEW_REQUEST:"[data-action=\"view\"]",MARK_COMPLETE:"[data-action=\"complete\"]",CHANGE_BULK_ACTION:"[id=\"bulk-action\"]",CONFIRM_BULK_ACTION:"[id=\"confirm-bulk-action\"]",SELECT_ALL:"[data-action=\"selectall\"]"},k={APPROVE:1,DENY:2},l={SELECT_REQUEST:".selectrequests"},m=function(){this.registerEvents()};m.prototype.registerEvents=function(){a(j.VIEW_REQUEST).click(function(d){d.preventDefault();var j=a(this).data("requestid"),k=b.call([{methodname:"tool_dataprivacy_get_data_request",args:{requestid:j}}]);a.when(k[0]).then(function(a){if(a.result){return a.result}c.addNotification({message:a.warnings[0].message,type:"error"});return!1}).then(function(a){var b=g.render("tool_dataprivacy/request_details",a),c={approvedeny:a.approvedeny,canmarkcomplete:a.canmarkcomplete};return e.create({title:a.typename,body:b,type:h.TYPE,large:!0,templateContext:c})}).then(function(a){a.getRoot().on(i.approve,function(){s(i.approve,n(j))});a.getRoot().on(i.deny,function(){s(i.deny,p(j))});a.getRoot().on(i.complete,function(){t("tool_dataprivacy_mark_complete",{requestid:j})});a.getRoot().on(f.hidden,function(){a.destroy()});a.show()}).catch(c.exception)});a(j.APPROVE_REQUEST).click(function(b){b.preventDefault();var c=a(this).data("requestid");s(i.approve,n(c))});a(j.DENY_REQUEST).click(function(b){b.preventDefault();var c=a(this).data("requestid");s(i.deny,p(c))});a(j.MARK_COMPLETE).click(function(b){b.preventDefault();var c=a(this).data("requestid");s(i.complete,r(c))});a(j.CONFIRM_BULK_ACTION).click(function(){var b=[],e="",f={},g=[{key:"selectbulkaction",component:"tool_dataprivacy"},{key:"selectdatarequests",component:"tool_dataprivacy"},{key:"ok"}],h=parseInt(a("#bulk-action").val());if(h!=k.APPROVE&&h!=k.DENY){d.get_strings(g).done(function(a){c.alert("",a[0],a[2])}).fail(c.exception);return}a(".selectrequests:checked").each(function(){b.push(a(this).val())});if(1>b.length){d.get_strings(g).done(function(a){c.alert("",a[1],a[2])}).fail(c.exception);return}switch(h){case k.APPROVE:e=i.bulkApprove;f=o(b);break;case k.DENY:e=i.bulkDeny;f=q(b);}s(e,f)});a(j.SELECT_ALL).change(function(b){b.preventDefault();var c=a(this).is(":checked");a(l.SELECT_REQUEST).prop("checked",c)})};function n(a){return{wsfunction:"tool_dataprivacy_approve_data_request",wsparams:{requestid:a}}}function o(a){return{wsfunction:"tool_dataprivacy_bulk_approve_data_requests",wsparams:{requestids:a}}}function p(a){return{wsfunction:"tool_dataprivacy_deny_data_request",wsparams:{requestid:a}}}function q(a){return{wsfunction:"tool_dataprivacy_bulk_deny_data_requests",wsparams:{requestids:a}}}function r(a){return{wsfunction:"tool_dataprivacy_mark_complete",wsparams:{requestid:a}}}function s(a,b){var g=[];switch(a){case i.approve:g=[{key:"approverequest",component:"tool_dataprivacy"},{key:"confirmapproval",component:"tool_dataprivacy"}];break;case i.bulkApprove:g=[{key:"bulkapproverequests",component:"tool_dataprivacy"},{key:"confirmbulkapproval",component:"tool_dataprivacy"}];break;case i.deny:g=[{key:"denyrequest",component:"tool_dataprivacy"},{key:"confirmdenial",component:"tool_dataprivacy"}];break;case i.bulkDeny:g=[{key:"bulkdenyrequests",component:"tool_dataprivacy"},{key:"confirmbulkdenial",component:"tool_dataprivacy"}];break;case i.complete:g=[{key:"markcomplete",component:"tool_dataprivacy"},{key:"confirmcompletion",component:"tool_dataprivacy"}];break;}var h="";d.get_strings(g).then(function(a){h=a[0];var b=a[1];return e.create({title:h,body:b,type:e.types.SAVE_CANCEL})}).then(function(a){a.setSaveButtonText(h);a.getRoot().on(f.save,function(){t(b.wsfunction,b.wsparams)});a.getRoot().on(f.hidden,function(){a.destroy()});a.show()}).catch(c.exception)}function t(a,d){b.call([{methodname:a,args:d}])[0].done(function(a){if(a.result){window.location.reload()}else{c.addNotification({message:a.warnings[0].message,type:"error"})}}).fail(c.exception)}return m}); //# sourceMappingURL=requestactions.min.js.map diff --git a/admin/tool/langimport/amd/build/search.min.js b/admin/tool/langimport/amd/build/search.min.js index 9f2b1aacce2..8c50bc169be 100644 --- a/admin/tool/langimport/amd/build/search.min.js +++ b/admin/tool/langimport/amd/build/search.min.js @@ -1,2 +1,2 @@ -define ("tool_langimport/search",["exports","core/pending","core/utils"],function(a,b,c){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=function(a){return a&&a.__esModule?a:{default:a}}(b);function d(a,b){return j(a)||h(a,b)||f(a,b)||e()}function e(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function f(a,b){if(!a)return;if("string"==typeof a)return g(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);if("Object"===c&&a.constructor)c=a.constructor.name;if("Map"===c||"Set"===c)return Array.from(c);if("Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c))return g(a,b)}function g(a,b){if(null==b||b>a.length)b=a.length;for(var c=0,d=Array(b);ca.length)b=a.length;for(var c=0,d=Array(b);c.\n\n/**\n * Add search filtering of available language packs\n *\n * @module tool_langimport/search\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Pending from 'core/pending';\nimport {debounce} from 'core/utils';\n\nconst SELECTORS = {\n AVAILABLE_LANG_SELECT: 'select',\n AVAILABLE_LANG_SEARCH: '[data-action=\"search\"]',\n};\n\nconst DEBOUNCE_TIMER = 250;\n\n/**\n * Initialize module\n *\n * @param {Element} form\n */\nconst init = (form) => {\n const availableLangsElement = form.querySelector(SELECTORS.AVAILABLE_LANG_SELECT);\n\n const availableLangsFilter = (event) => {\n const pendingPromise = new Pending('tool_langimport/search:filter');\n\n // Remove existing options.\n availableLangsElement.querySelectorAll('option').forEach((option) => {\n option.remove();\n });\n\n // Filter for matching languages.\n const searchTerm = event.target.value.toLowerCase();\n const availableLanguages = JSON.parse(availableLangsElement.dataset.availableLanguages);\n const filteredLanguages = Object.keys(availableLanguages).reduce((matches, langcode) => {\n if (availableLanguages[langcode].toLowerCase().includes(searchTerm)) {\n matches[langcode] = availableLanguages[langcode];\n }\n return matches;\n }, []);\n\n // Re-create filtered options.\n Object.entries(filteredLanguages).forEach(([langcode, langname]) => {\n const option = document.createElement('option');\n option.value = langcode;\n option.innerText = langname;\n availableLangsElement.append(option);\n });\n\n pendingPromise.resolve();\n };\n\n // Cache initial available language options.\n const availableLanguages = {};\n availableLangsElement.querySelectorAll('option').forEach((option) => {\n availableLanguages[option.value] = option.text;\n });\n availableLangsElement.dataset.availableLanguages = JSON.stringify(availableLanguages);\n\n // Register event listeners on the search element.\n const availableLangsSearch = form.querySelector(SELECTORS.AVAILABLE_LANG_SEARCH);\n availableLangsSearch.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n });\n\n // Debounce the event listener to allow the user to finish typing.\n availableLangsSearch.addEventListener('keyup', (event) => {\n const pendingPromise = new Pending('tool_langimport/search:keyup');\n\n debounce(availableLangsFilter, DEBOUNCE_TIMER)(event);\n setTimeout(() => {\n pendingPromise.resolve();\n }, DEBOUNCE_TIMER);\n });\n};\n\nexport default {\n init: init,\n};\n"],"file":"search.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/search.js"],"names":["SELECTORS","AVAILABLE_LANG_SELECT","AVAILABLE_LANG_SEARCH","DEBOUNCE_TIMER","init","form","availableLangsElement","querySelector","availableLangsFilter","event","pendingPromise","Pending","querySelectorAll","forEach","option","remove","searchTerm","target","value","toLowerCase","availableLanguages","JSON","parse","dataset","filteredLanguages","Object","keys","reduce","matches","langcode","includes","entries","langname","document","createElement","innerText","append","resolve","text","stringify","availableLangsSearch","addEventListener","key","preventDefault","setTimeout"],"mappings":"wKAuBA,uD,w+BAGMA,CAAAA,CAAS,CAAG,CACdC,qBAAqB,CAAE,QADT,CAEdC,qBAAqB,CAAE,0BAFT,C,CAKZC,CAAc,CAAG,G,WAiER,CACXC,IAAI,CA3DK,QAAPA,CAAAA,IAAO,CAACC,CAAD,CAAU,IACbC,CAAAA,CAAqB,CAAGD,CAAI,CAACE,aAAL,CAAmBP,CAAS,CAACC,qBAA7B,CADX,CAGbO,CAAoB,CAAG,SAACC,CAAD,CAAW,CACpC,GAAMC,CAAAA,CAAc,CAAG,GAAIC,UAAJ,CAAY,+BAAZ,CAAvB,CAGAL,CAAqB,CAACM,gBAAtB,CAAuC,QAAvC,EAAiDC,OAAjD,CAAyD,SAACC,CAAD,CAAY,CACjEA,CAAM,CAACC,MAAP,EACH,CAFD,EAJoC,GAS9BC,CAAAA,CAAU,CAAGP,CAAK,CAACQ,MAAN,CAAaC,KAAb,CAAmBC,WAAnB,EATiB,CAU9BC,CAAkB,CAAGC,IAAI,CAACC,KAAL,CAAWhB,CAAqB,CAACiB,OAAtB,CAA8BH,kBAAzC,CAVS,CAW9BI,CAAiB,CAAGC,MAAM,CAACC,IAAP,CAAYN,CAAZ,EAAgCO,MAAhC,CAAuC,SAACC,CAAD,CAAUC,CAAV,CAAuB,CACpF,GAAIT,CAAkB,CAACS,CAAD,CAAlB,CAA6BV,WAA7B,GAA2CW,QAA3C,CAAoDd,CAApD,CAAJ,CAAqE,CACjEY,CAAO,CAACC,CAAD,CAAP,CAAoBT,CAAkB,CAACS,CAAD,CACzC,CACD,MAAOD,CAAAA,CACV,CALyB,CAKvB,EALuB,CAXU,CAmBpCH,MAAM,CAACM,OAAP,CAAeP,CAAf,EAAkCX,OAAlC,CAA0C,WAA0B,cAAxBgB,CAAwB,MAAdG,CAAc,MAC1DlB,CAAM,CAAGmB,QAAQ,CAACC,aAAT,CAAuB,QAAvB,CADiD,CAEhEpB,CAAM,CAACI,KAAP,CAAeW,CAAf,CACAf,CAAM,CAACqB,SAAP,CAAmBH,CAAnB,CACA1B,CAAqB,CAAC8B,MAAtB,CAA6BtB,CAA7B,CACH,CALD,EAOAJ,CAAc,CAAC2B,OAAf,EACH,CA9BkB,CAiCbjB,CAAkB,CAAG,EAjCR,CAkCnBd,CAAqB,CAACM,gBAAtB,CAAuC,QAAvC,EAAiDC,OAAjD,CAAyD,SAACC,CAAD,CAAY,CACjEM,CAAkB,CAACN,CAAM,CAACI,KAAR,CAAlB,CAAmCJ,CAAM,CAACwB,IAC7C,CAFD,EAGAhC,CAAqB,CAACiB,OAAtB,CAA8BH,kBAA9B,CAAmDC,IAAI,CAACkB,SAAL,CAAenB,CAAf,CAAnD,CAGA,GAAMoB,CAAAA,CAAoB,CAAGnC,CAAI,CAACE,aAAL,CAAmBP,CAAS,CAACE,qBAA7B,CAA7B,CACAsC,CAAoB,CAACC,gBAArB,CAAsC,SAAtC,CAAiD,SAAChC,CAAD,CAAW,CACxD,GAAkB,OAAd,GAAAA,CAAK,CAACiC,GAAV,CAA2B,CACvBjC,CAAK,CAACkC,cAAN,EACH,CACJ,CAJD,EAOAH,CAAoB,CAACC,gBAArB,CAAsC,OAAtC,CAA+C,SAAChC,CAAD,CAAW,CACtD,GAAMC,CAAAA,CAAc,CAAG,GAAIC,UAAJ,CAAY,8BAAZ,CAAvB,CAEA,eAASH,CAAT,CAA+BL,CAA/B,EAA+CM,CAA/C,EACAmC,UAAU,CAAC,UAAM,CACblC,CAAc,CAAC2B,OAAf,EACH,CAFS,CAEPlC,CAFO,CAGb,CAPD,CAQH,CAEc,C","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * Add search filtering of available language packs\n *\n * @module tool_langimport/search\n * @copyright 2021 Paul Holden \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport Pending from 'core/pending';\nimport {debounce} from 'core/utils';\n\nconst SELECTORS = {\n AVAILABLE_LANG_SELECT: 'select',\n AVAILABLE_LANG_SEARCH: '[data-action=\"search\"]',\n};\n\nconst DEBOUNCE_TIMER = 250;\n\n/**\n * Initialize module\n *\n * @param {Element} form\n */\nconst init = (form) => {\n const availableLangsElement = form.querySelector(SELECTORS.AVAILABLE_LANG_SELECT);\n\n const availableLangsFilter = (event) => {\n const pendingPromise = new Pending('tool_langimport/search:filter');\n\n // Remove existing options.\n availableLangsElement.querySelectorAll('option').forEach((option) => {\n option.remove();\n });\n\n // Filter for matching languages.\n const searchTerm = event.target.value.toLowerCase();\n const availableLanguages = JSON.parse(availableLangsElement.dataset.availableLanguages);\n const filteredLanguages = Object.keys(availableLanguages).reduce((matches, langcode) => {\n if (availableLanguages[langcode].toLowerCase().includes(searchTerm)) {\n matches[langcode] = availableLanguages[langcode];\n }\n return matches;\n }, []);\n\n // Re-create filtered options.\n Object.entries(filteredLanguages).forEach(([langcode, langname]) => {\n const option = document.createElement('option');\n option.value = langcode;\n option.innerText = langname;\n availableLangsElement.append(option);\n });\n\n pendingPromise.resolve();\n };\n\n // Cache initial available language options.\n const availableLanguages = {};\n availableLangsElement.querySelectorAll('option').forEach((option) => {\n availableLanguages[option.value] = option.text;\n });\n availableLangsElement.dataset.availableLanguages = JSON.stringify(availableLanguages);\n\n // Register event listeners on the search element.\n const availableLangsSearch = form.querySelector(SELECTORS.AVAILABLE_LANG_SEARCH);\n availableLangsSearch.addEventListener('keydown', (event) => {\n if (event.key === 'Enter') {\n event.preventDefault();\n }\n });\n\n // Debounce the event listener to allow the user to finish typing.\n availableLangsSearch.addEventListener('keyup', (event) => {\n const pendingPromise = new Pending('tool_langimport/search:keyup');\n\n debounce(availableLangsFilter, DEBOUNCE_TIMER)(event);\n setTimeout(() => {\n pendingPromise.resolve();\n }, DEBOUNCE_TIMER);\n });\n};\n\nexport default {\n init: init,\n};\n"],"file":"search.min.js"} \ No newline at end of file diff --git a/admin/tool/monitor/yui/build/moodle-tool_monitor-dropdown/moodle-tool_monitor-dropdown-min.js b/admin/tool/monitor/yui/build/moodle-tool_monitor-dropdown/moodle-tool_monitor-dropdown-min.js index 2e8537e4ccb..d30bd3f47fd 100644 --- a/admin/tool/monitor/yui/build/moodle-tool_monitor-dropdown/moodle-tool_monitor-dropdown-min.js +++ b/admin/tool/monitor/yui/build/moodle-tool_monitor-dropdown/moodle-tool_monitor-dropdown-min.js @@ -1 +1 @@ -YUI.add("moodle-tool_monitor-dropdown",function(s,e){function t(){t.superclass.constructor.apply(this,arguments)}var n="#id_plugin",i="#id_eventname",a="option";s.extend(t,s.Base,{plugin:null,eventname:null,initializer:function(){this.plugin=s.one(n),this.eventname=s.one(i);var e=this.eventname.get("value");this.updateEventsList(),this.updateSelection(e),this.plugin.on("change",this.updateEventsList,this)},updateEventsList:function(){var n,e,t,i=this.plugin.get("value"),o="\\"+i+"\\";this.eventname.all(a).remove(!0),e=this.get("eventlist"),(t=s.Node.create('")).set("selected","selected"),this.eventname.appendChild(t),s.Object.each(e,function(e,t){t.substring(0,o.length)===o&&(n=s.Node.create('"),this.eventname.appendChild(n))},this)},updateSelection:function(t){this.eventname.get("options").each(function(e){e.get("value")===t&&e.set("selected","selected")},this)}},{NAME:"dropDown",ATTRS:{eventlist:null}}),s.namespace("M.tool_monitor.DropDown").init=function(e){return new t(e)}},"@VERSION@",{requires:["base","event","node"]}); \ No newline at end of file +YUI.add("moodle-tool_monitor-dropdown",function(o,e){function t(){t.superclass.constructor.apply(this,arguments)}var n="#id_plugin",i="#id_eventname",s="option";o.extend(t,o.Base,{plugin:null,eventname:null,initializer:function(){this.plugin=o.one(n),this.eventname=o.one(i);var e=this.eventname.get("value");this.updateEventsList(),this.updateSelection(e),this.plugin.on("change",this.updateEventsList,this)},updateEventsList:function(){var n,e,t=this.plugin.get("value"),i="\\"+t+"\\";this.eventname.all(s).remove(!0),t=this.get("eventlist"),(e=o.Node.create('")).set("selected","selected"),this.eventname.appendChild(e),o.Object.each(t,function(e,t){t.substring(0,i.length)===i&&(n=o.Node.create('"),this.eventname.appendChild(n))},this)},updateSelection:function(t){this.eventname.get("options").each(function(e){e.get("value")===t&&e.set("selected","selected")},this)}},{NAME:"dropDown",ATTRS:{eventlist:null}}),o.namespace("M.tool_monitor.DropDown").init=function(e){return new t(e)}},"@VERSION@",{requires:["base","event","node"]}); \ No newline at end of file diff --git a/admin/tool/policy/amd/build/managedocsactions.min.js b/admin/tool/policy/amd/build/managedocsactions.min.js index e5a1692f384..01ff00fb88d 100644 --- a/admin/tool/policy/amd/build/managedocsactions.min.js +++ b/admin/tool/policy/amd/build/managedocsactions.min.js @@ -1,2 +1,2 @@ -define ("tool_policy/managedocsactions",["jquery","core/log","core/config","core/str","core/modal_factory","core/modal_events"],function(a,b,c,d,e,f){"use strict";var h={LINKS:"[data-action]",MAKE_CURRENT:"[data-action=\"makecurrent\"]",INACTIVATE:"[data-action=\"inactivate\"]",DELETE:"[data-action=\"delete\"]"};function g(a){this.base=a;this.initEvents()}g.prototype.initEvents=function(){var g=this;g.base.on("click",h.LINKS,function(g){g.stopPropagation();var i=a(g.currentTarget),j,k;if(i.is(h.MAKE_CURRENT)){j=d.get_strings([{key:"activating",component:"tool_policy"},{key:"activateconfirm",component:"tool_policy",param:{name:i.closest("[data-policy-name]").attr("data-policy-name"),revision:i.closest("[data-policy-revision]").attr("data-policy-revision")}},{key:"activateconfirmyes",component:"tool_policy"}])}else if(i.is(h.INACTIVATE)){j=d.get_strings([{key:"inactivating",component:"tool_policy"},{key:"inactivatingconfirm",component:"tool_policy",param:{name:i.closest("[data-policy-name]").attr("data-policy-name"),revision:i.closest("[data-policy-revision]").attr("data-policy-revision")}},{key:"inactivatingconfirmyes",component:"tool_policy"}])}else if(i.is(h.DELETE)){j=d.get_strings([{key:"deleting",component:"tool_policy"},{key:"deleteconfirm",component:"tool_policy",param:{name:i.closest("[data-policy-name]").attr("data-policy-name"),revision:i.closest("[data-policy-revision]").attr("data-policy-revision")}},{key:"delete",component:"core"}])}else{b.error("unknown action type detected","tool_policy/managedocsactions");return}g.preventDefault();j.then(function(a){k=a;return e.create({title:k[0],body:k[1],type:e.types.SAVE_CANCEL})}).then(function(a){a.setSaveButtonText(k[2]);a.getRoot().on(f.save,function(){window.location.href=i.attr("href")+"&sesskey="+c.sesskey+"&confirm=1"});a.getRoot().on(f.hidden,function(){a.destroy()});a.show();return!0}).catch(function(a){b.error(a);return!1})})};return{init:function init(b){var c=a(document.getElementById(b));if(c.length){return new g(c)}else{throw new Error("managedocsactions: Invalid base element identifier")}}}}); +define ("tool_policy/managedocsactions",["jquery","core/log","core/config","core/str","core/modal_factory","core/modal_events"],function(a,b,c,d,e,f){"use strict";var g={LINKS:"[data-action]",MAKE_CURRENT:"[data-action=\"makecurrent\"]",INACTIVATE:"[data-action=\"inactivate\"]",DELETE:"[data-action=\"delete\"]"};function h(a){this.base=a;this.initEvents()}h.prototype.initEvents=function(){var h=this;h.base.on("click",g.LINKS,function(h){h.stopPropagation();var i=a(h.currentTarget),j,k;if(i.is(g.MAKE_CURRENT)){j=d.get_strings([{key:"activating",component:"tool_policy"},{key:"activateconfirm",component:"tool_policy",param:{name:i.closest("[data-policy-name]").attr("data-policy-name"),revision:i.closest("[data-policy-revision]").attr("data-policy-revision")}},{key:"activateconfirmyes",component:"tool_policy"}])}else if(i.is(g.INACTIVATE)){j=d.get_strings([{key:"inactivating",component:"tool_policy"},{key:"inactivatingconfirm",component:"tool_policy",param:{name:i.closest("[data-policy-name]").attr("data-policy-name"),revision:i.closest("[data-policy-revision]").attr("data-policy-revision")}},{key:"inactivatingconfirmyes",component:"tool_policy"}])}else if(i.is(g.DELETE)){j=d.get_strings([{key:"deleting",component:"tool_policy"},{key:"deleteconfirm",component:"tool_policy",param:{name:i.closest("[data-policy-name]").attr("data-policy-name"),revision:i.closest("[data-policy-revision]").attr("data-policy-revision")}},{key:"delete",component:"core"}])}else{b.error("unknown action type detected","tool_policy/managedocsactions");return}h.preventDefault();j.then(function(a){k=a;return e.create({title:k[0],body:k[1],type:e.types.SAVE_CANCEL})}).then(function(a){a.setSaveButtonText(k[2]);a.getRoot().on(f.save,function(){window.location.href=i.attr("href")+"&sesskey="+c.sesskey+"&confirm=1"});a.getRoot().on(f.hidden,function(){a.destroy()});a.show();return!0}).catch(function(a){b.error(a);return!1})})};return{init:function init(b){var c=a(document.getElementById(b));if(c.length){return new h(c)}else{throw new Error("managedocsactions: Invalid base element identifier")}}}}); //# sourceMappingURL=managedocsactions.min.js.map diff --git a/admin/tool/usertours/amd/build/tour.min.js b/admin/tool/usertours/amd/build/tour.min.js index 29a3d9afab6..954627584a1 100644 --- a/admin/tool/usertours/amd/build/tour.min.js +++ b/admin/tool/usertours/amd/build/tour.min.js @@ -1,2 +1,2 @@ -define ("tool_usertours/tour",["exports","jquery","core/aria","core/popper"],function(a,b,c,d){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=g(b);c=f(c);d=g(d);function e(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;e=function(){return a};return a}function f(a){if(a&&a.__esModule){return a}if(null===a||"object"!==h(a)&&"function"!=typeof a){return{default:a}}var b=e();if(b&&b.has(a)){return b.get(a)}var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a){if(Object.prototype.hasOwnProperty.call(a,f)){var g=d?Object.getOwnPropertyDescriptor(a,f):null;if(g&&(g.get||g.set)){Object.defineProperty(c,f,g)}else{c[f]=a[f]}}}c.default=a;if(b){b.set(a,c)}return c}function g(a){return a&&a.__esModule?a:{default:a}}function h(a){"@babel/helpers - typeof";if("function"==typeof Symbol&&"symbol"==typeof Symbol.iterator){h=function(a){return typeof a}}else{h=function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a}}return h(a)}function i(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function j(a,b){for(var c=0,d;ca){return this.endTour()}var c=this.getStepConfig(a);if(null===c){return this.endTour()}return this._gotoStep(c,b)}},{key:"_gotoStep",value:function _gotoStep(a,b){if(!a){return this.endTour()}if("undefined"!=typeof a.delay&&a.delay&&!a.delayed){a.delayed=!0;window.setTimeout(this._gotoStep.bind(this),a.delay,a,b);return this}else if(!a.orphan&&!this.isStepActuallyVisible(a)){var c=-1==b?"getPreviousStepNumber":"getNextStepNumber";return this.gotoStep(this[c](a.stepNumber),b)}this.hide();this.fireEventHandlers("beforeRender",a);this.renderStep(a);this.fireEventHandlers("afterRender",a);return this}},{key:"getStepConfig",value:function getStepConfig(a){if(null===a||0>a||a>=this.steps.length){return null}var c=this.normalizeStepConfig(this.steps[a]);c=b.default.extend(c,{stepNumber:a});return c}},{key:"normalizeStepConfig",value:function normalizeStepConfig(a){if("undefined"!=typeof a.reflex&&"undefined"==typeof a.moveAfterClick){a.moveAfterClick=a.reflex}if("undefined"!=typeof a.element&&"undefined"==typeof a.target){a.target=a.element}if("undefined"!=typeof a.content&&"undefined"==typeof a.body){a.body=a.content}a=b.default.extend({},this.stepDefaults,a);a=b.default.extend({},{attachTo:a.target,attachPoint:"after"},a);if(a.attachTo){a.attachTo=(0,b.default)(a.attachTo).first()}return a}},{key:"getStepTarget",value:function getStepTarget(a){if(a.target){return(0,b.default)(a.target)}return null}},{key:"fireEventHandlers",value:function fireEventHandlers(a,b){if("undefined"==typeof this.eventHandlers[a]){return this}this.eventHandlers[a].forEach(function(a){a.call(this,b)},this);return this}},{key:"addEventHandler",value:function addEventHandler(a,b){if("undefined"==typeof this.eventHandlers[a]){this.eventHandlers[a]=[]}this.eventHandlers[a].push(b);return this}},{key:"processStepListeners",value:function processStepListeners(a){this.listeners.push({node:this.currentStepNode,args:["click","[data-role=\"next\"]",b.default.proxy(this.next,this)]},{node:this.currentStepNode,args:["click","[data-role=\"previous\"]",b.default.proxy(this.previous,this)]},{node:this.currentStepNode,args:["click","[data-role=\"end\"]",b.default.proxy(this.endTour,this)]},{node:(0,b.default)("[data-flexitour=\"backdrop\"]"),args:["click",b.default.proxy(this.hide,this)]},{node:(0,b.default)("body"),args:["keydown",b.default.proxy(this.handleKeyDown,this)]});if(a.moveOnClick){var c=this.getStepTarget(a);this.listeners.push({node:c,args:["click",b.default.proxy(function(a){if(0===(0,b.default)(a.target).parents("[data-flexitour=\"container\"]").length){window.setTimeout(b.default.proxy(this.next,this),500)}},this)]})}this.listeners.forEach(function(a){a.node.on.apply(a.node,a.args)});return this}},{key:"resetStepListeners",value:function resetStepListeners(){if(this.listeners){this.listeners.forEach(function(a){a.node.off.apply(a.node,a.args)})}this.listeners=[];return this}},{key:"renderStep",value:function renderStep(a){this.currentStepConfig=a;this.setCurrentStepNumber(a.stepNumber);var c=(0,b.default)(this.getTemplateContent());c.find("[data-placeholder=\"title\"]").html(a.title);c.find("[data-placeholder=\"body\"]").html(a.body);if(this.isFirstStep(a.stepNumber)){c.find("[data-role=\"previous\"]").hide()}else{c.find("[data-role=\"previous\"]").prop("disabled",!1)}if(this.isLastStep(a.stepNumber)){c.find("[data-role=\"next\"]").hide();c.find("[data-role=\"end\"]").removeClass("btn-secondary").addClass("btn-primary")}else{c.find("[data-role=\"next\"]").prop("disabled",!1)}c.find("[data-role=\"previous\"]").attr("role","button");c.find("[data-role=\"next\"]").attr("role","button");c.find("[data-role=\"end\"]").attr("role","button");a.template=c;this.addStepToPage(a);this.processStepListeners(a);return this}},{key:"getTemplateContent",value:function getTemplateContent(){return(0,b.default)(this.templateContent).clone()}},{key:"addStepToPage",value:function addStepToPage(a){var c=(0,b.default)("").html(a.template).hide(),e=(0,b.default)("body, html").stop(!0,!0);if(this.isStepActuallyVisible(a)){var f=this.getStepTarget(a);f.data("flexitour","target");var g=this.calculateZIndex(f);if(g){a.zIndex=g+1}if(a.zIndex){c.css("zIndex",a.zIndex+1)}this.positionBackdrop(a);(0,b.default)(document.body).append(c);this.currentStepNode=c;this.currentStepNode.css({top:0,left:0});e.animate({scrollTop:this.calculateScrollTop(a)}).promise().then(function(){this.positionStep(a);this.revealStep(a)}.bind(this)).catch(function(){})}else if(a.orphan){a.isOrphan=!0;a.attachTo=(0,b.default)("body").first();a.attachPoint="append";this.positionBackdrop(a);c.addClass("orphan");(0,b.default)(document.body).append(c);this.currentStepNode=c;this.currentStepNode.offset(this.calculateStepPositionInPage());this.currentStepNode.css("position","fixed");this.currentStepPopper=new d.default((0,b.default)("body"),this.currentStepNode[0],{removeOnDestroy:!0,placement:a.placement+"-start",arrowElement:"[data-role=\"arrow\"]",modifiers:{hide:{enabled:!1},applyStyle:{onLoad:null,enabled:!1}}});this.revealStep(a)}return this}},{key:"revealStep",value:function revealStep(a){this.currentStepNode.fadeIn("",b.default.proxy(function(){this.announceStep(a);this.currentStepNode.focus();window.setTimeout(b.default.proxy(function(){if(this.currentStepNode){this.currentStepNode.focus()}},this),100)},this));return this}},{key:"announceStep",value:function announceStep(a){var b="tour-step-"+this.tourName+"-"+a.stepNumber;this.currentStepNode.attr("id",b);var c=this.currentStepNode.find("[data-placeholder=\"body\"]").first();c.attr("id",b+"-body");c.attr("role","document");var d=this.currentStepNode.find("[data-placeholder=\"title\"]").first();d.attr("id",b+"-title");d.attr("aria-labelledby",b+"-body");this.currentStepNode.attr("role","dialog");this.currentStepNode.attr("tabindex",0);this.currentStepNode.attr("aria-labelledby",b+"-title");this.currentStepNode.attr("aria-describedby",b+"-body");var e=this.getStepTarget(a);if(e){if(!e.attr("tabindex")){e.attr("tabindex",0)}e.data("original-describedby",e.attr("aria-describedby")).attr("aria-describedby",b+"-body")}this.accessibilityShow(a);return this}},{key:"handleKeyDown",value:function handleKeyDown(a){var c="a[href], link[href], [draggable=true], [contenteditable=true], ";c+=":input:enabled, [tabindex], button:enabled";switch(a.keyCode){case 27:this.endTour();break;case 9:(function(){if(!this.currentStepConfig.hasBackdrop){return}var d=(0,b.default)(document.activeElement),e=this.getStepTarget(this.currentStepConfig),f=(0,b.default)(c),g=(0,b.default)("span[data-flexitour=\"container\"]"),h;if(e){f=f.filter(function(a,b){return null!==e&&(e.has(b).length||g.has(b).length||e.is(b)||g.is(b))})}f.each(function(a,b){if(d.is(b)){h=a;return!1}return!0});var i,j,k;if(void 0!=h){var l=1;if(a.shiftKey){l=-1}i=h;do{i+=l;j=(0,b.default)(f[i])}while(j.length&&j.is(":disabled")||j.is(":hidden"));if(j.length){k=j.closest(e).length;k=k||j.closest(this.currentStepNode).length}else{k=!1}}if(k){j.focus()}else{if(a.shiftKey){this.currentStepNode.find(c).last().focus()}else{if(this.currentStepConfig.isOrphan){this.currentStepNode.focus()}else{e.focus()}}}a.preventDefault()}).call(this);break;}}},{key:"startTour",value:function startTour(a){if(this.storage&&"undefined"==typeof a){var b=this.storage.getItem(this.storageKey);if(b){var c=parseInt(b,10);if(c<=this.steps.length){a=c}}}if("undefined"==typeof a){a=this.getCurrentStepNumber()}this.fireEventHandlers("beforeStart",a);this.gotoStep(a);this.fireEventHandlers("afterStart",a);return this}},{key:"restartTour",value:function restartTour(){return this.startTour(0)}},{key:"endTour",value:function endTour(){this.fireEventHandlers("beforeEnd");if(this.currentStepConfig){var a=this.getStepTarget(this.currentStepConfig);if(a){if(!a.attr("tabindex")){a.attr("tabindex","-1")}a.focus()}}this.hide(!0);this.fireEventHandlers("afterEnd");return this}},{key:"hide",value:function hide(a){this.fireEventHandlers("beforeHide");if(this.currentStepNode&&this.currentStepNode.length){this.currentStepNode.hide();if(this.currentStepPopper){this.currentStepPopper.destroy()}}if(this.currentStepConfig){var d=this.getStepTarget(this.currentStepConfig);if(d){if(d.data("original-labelledby")){d.attr("aria-labelledby",d.data("original-labelledby"))}if(d.data("original-describedby")){d.attr("aria-describedby",d.data("original-describedby"))}if(d.data("original-tabindex")){d.attr("tabindex",d.data("tabindex"))}}this.currentStepConfig=null}var c=0;if(a){c=400}(0,b.default)("[data-flexitour=\"step-background\"]").remove();(0,b.default)("[data-flexitour=\"step-backdrop\"]").removeAttr("data-flexitour");(0,b.default)("[data-flexitour=\"backdrop\"]").fadeOut(c,function(){(0,b.default)(this).remove()});if(this.currentStepNode&&this.currentStepNode.length){var e=this.currentStepNode.attr("id");if(e){var f="[aria-describedby=\""+e+"-body\"]";(0,b.default)(f).removeAttr("tabindex");(0,b.default)(f).removeAttr("aria-describedby")}}this.resetStepListeners();this.accessibilityHide();this.fireEventHandlers("afterHide");this.currentStepNode=null;this.currentStepPopper=null;return this}},{key:"show",value:function show(){var a=this.getCurrentStepNumber();return this.gotoStep(a)}},{key:"getStepContainer",value:function getStepContainer(){return(0,b.default)(this.currentStepNode)}},{key:"calculateScrollTop",value:function calculateScrollTop(a){var c=(0,b.default)(window).scrollTop(),d=(0,b.default)(window).height(),e=this.getStepTarget(a);if("top"===a.placement){c=e.offset().top-d/2}else if("bottom"===a.placement){c=e.offset().top+e.height()-d/2}else if(e.height()<=.8*d){c=e.offset().top-(d-e.height())/2}else{c=e.offset().top-.2*d}c=Math.max(0,c);c=Math.min((0,b.default)(document).height()-d,c);return Math.ceil(c)}},{key:"calculateStepPositionInPage",value:function calculateStepPositionInPage(){var a=(0,b.default)(window).height(),c=this.currentStepNode.height(),d=(0,b.default)(window).width(),e=this.currentStepNode.width();return{top:Math.ceil((a-c)/2),left:Math.ceil((d-e)/2)}}},{key:"positionStep",value:function positionStep(a){var c=this.currentStepNode;if(!c||!c.length){return this}a.placement=this.recalculatePlacement(a);var e;switch(a.placement){case"left":e=["left","right","top","bottom"];break;case"right":e=["right","left","top","bottom"];break;case"top":e=["top","bottom","right","left"];break;case"bottom":e=["bottom","top","right","left"];break;default:e="flip";break;}var f=this.getStepTarget(a),g={placement:a.placement+"-start",removeOnDestroy:!0,modifiers:{flip:{behaviour:e},arrow:{element:"[data-role=\"arrow\"]"}},onCreate:function onCreate(a){h(a)},onUpdate:function onUpdate(a){h(a)}},h=function(a){var c=a.placement.split("-")[0],d=-1!==["left","right"].indexOf(c),e=a.instance.popper.querySelector("[data-role=\"arrow\"]"),f=(0,b.default)(a.instance.popper.querySelector("[data-role=\"flexitour-step\"]"));if(d){var g=parseFloat(window.getComputedStyle(e).height),h=parseFloat(window.getComputedStyle(e).top),i=parseFloat(window.getComputedStyle(a.instance.popper).height),j=parseFloat(window.getComputedStyle(a.instance.popper).top),k=parseFloat(f.css("borderTopWidth")),l=2*parseFloat(f.css("borderTopLeftRadius")),m=h+g/2,n=i+j-k-l,o=j+k+l;if(m>=n||m<=o){var y=0;if(m>i/2){y=n-g}else{y=o+g}(0,b.default)(e).css("top",y)}}else{var p=parseFloat(window.getComputedStyle(e).width),q=parseFloat(window.getComputedStyle(e).left),r=parseFloat(window.getComputedStyle(a.instance.popper).width),s=parseFloat(window.getComputedStyle(a.instance.popper).left),t=parseFloat(f.css("borderTopWidth")),u=2*parseFloat(f.css("borderTopLeftRadius")),v=q+p/2,w=r+s-t-u,x=s+t+u;if(v>=w||v<=x){var z=0;if(v>r/2){z=w-p}else{z=x+p}(0,b.default)(e).css("left",z)}}},i=(0,b.default)("[data-flexitour=\"step-background\"]");if(i.length){f=i}this.currentStepPopper=new d.default(f,c[0],g);return this}},{key:"recalculatePlacement",value:function recalculatePlacement(a){var b=this.getStepTarget(a),c=this.currentStepNode.width()+16,d=b.offset().left-10,e=b.offset().left+b.width()+10,f=a.placement;if(-1!==["left","right"].indexOf(f)){if(ddocument.documentElement.clientWidth){f="top"}}return f}},{key:"positionBackdrop",value:function positionBackdrop(a){if(a.backdrop){this.currentStepConfig.hasBackdrop=!0;var g=(0,b.default)("
");if(a.zIndex){if("append"===a.attachPoint){a.attachTo.append(g)}else{g.insertAfter(a.attachTo)}}else{(0,b.default)("body").append(g)}if(this.isStepActuallyVisible(a)){var c=(0,b.default)("
"),d=this.getStepTarget(a),e=10,f=d;if(e){f=(0,b.default)("body")}c.css({width:d.outerWidth()+e+e,height:d.outerHeight()+e+e,left:d.offset().left-e,top:d.offset().top-e,backgroundColor:this.calculateInherittedBackgroundColor(f)});if(d.offset().left").hide();(0,b.default)("body").append(c);var d=c.css("backgroundColor");c.remove();a=(0,b.default)(a);while(a.length&&a[0]!==document){var e=a.css("backgroundColor");if(e!==d){return e}a=a.parent()}return null}},{key:"calculatePosition",value:function calculatePosition(a){a=(0,b.default)(a);while(a.length&&a[0]!==document){var c=a.css("position");if("static"!==c){return c}a=a.parent()}return null}},{key:"accessibilityShow",value:function accessibilityShow(){var a=function(a){var b=a.data("flexitour");if(b){switch(b){case"container":case"target":return;}}var d=a.attr("aria-hidden");if(!d){a.attr("data-has-hidden",!0);c.hide(a)}};this.currentStepNode.siblings().each(function(c,d){a((0,b.default)(d))});this.currentStepNode.parentsUntil("body").siblings().each(function(c,d){a((0,b.default)(d))})}},{key:"accessibilityHide",value:function accessibilityHide(){var a=function(a){var b=a.attr("data-has-hidden");if("undefined"!=typeof b){a.removeAttr("data-has-hidden");c.unhide(a)}};(0,b.default)("[data-has-hidden]").each(function(c,d){a((0,b.default)(d))})}}]);return a}();a.default=l;return a.default}); +define ("tool_usertours/tour",["exports","jquery","core/aria","core/popper"],function(a,b,c,d){"use strict";Object.defineProperty(a,"__esModule",{value:!0});a.default=void 0;b=g(b);c=f(c);d=g(d);function e(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(e=function(a){return a?c:b})(a)}function f(a,b){if(!b&&a&&a.__esModule){return a}if(null===a||"object"!==h(a)&&"function"!=typeof a){return{default:a}}var c=e(b);if(c&&c.has(a)){return c.get(a)}var d={},f=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var g in a){if("default"!=g&&Object.prototype.hasOwnProperty.call(a,g)){var i=f?Object.getOwnPropertyDescriptor(a,g):null;if(i&&(i.get||i.set)){Object.defineProperty(d,g,i)}else{d[g]=a[g]}}}d.default=a;if(c){c.set(a,d)}return d}function g(a){return a&&a.__esModule?a:{default:a}}function h(a){"@babel/helpers - typeof";return h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},h(a)}function i(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}function j(a,b){for(var c=0,d;ca){return this.endTour()}var c=this.getStepConfig(a);if(null===c){return this.endTour()}return this._gotoStep(c,b)}},{key:"_gotoStep",value:function _gotoStep(a,b){if(!a){return this.endTour()}if("undefined"!=typeof a.delay&&a.delay&&!a.delayed){a.delayed=!0;window.setTimeout(this._gotoStep.bind(this),a.delay,a,b);return this}else if(!a.orphan&&!this.isStepActuallyVisible(a)){var c=-1==b?"getPreviousStepNumber":"getNextStepNumber";return this.gotoStep(this[c](a.stepNumber),b)}this.hide();this.fireEventHandlers("beforeRender",a);this.renderStep(a);this.fireEventHandlers("afterRender",a);return this}},{key:"getStepConfig",value:function getStepConfig(a){if(null===a||0>a||a>=this.steps.length){return null}var c=this.normalizeStepConfig(this.steps[a]);c=b.default.extend(c,{stepNumber:a});return c}},{key:"normalizeStepConfig",value:function normalizeStepConfig(a){if("undefined"!=typeof a.reflex&&"undefined"==typeof a.moveAfterClick){a.moveAfterClick=a.reflex}if("undefined"!=typeof a.element&&"undefined"==typeof a.target){a.target=a.element}if("undefined"!=typeof a.content&&"undefined"==typeof a.body){a.body=a.content}a=b.default.extend({},this.stepDefaults,a);a=b.default.extend({},{attachTo:a.target,attachPoint:"after"},a);if(a.attachTo){a.attachTo=(0,b.default)(a.attachTo).first()}return a}},{key:"getStepTarget",value:function getStepTarget(a){if(a.target){return(0,b.default)(a.target)}return null}},{key:"fireEventHandlers",value:function fireEventHandlers(a,b){if("undefined"==typeof this.eventHandlers[a]){return this}this.eventHandlers[a].forEach(function(a){a.call(this,b)},this);return this}},{key:"addEventHandler",value:function addEventHandler(a,b){if("undefined"==typeof this.eventHandlers[a]){this.eventHandlers[a]=[]}this.eventHandlers[a].push(b);return this}},{key:"processStepListeners",value:function processStepListeners(a){this.listeners.push({node:this.currentStepNode,args:["click","[data-role=\"next\"]",b.default.proxy(this.next,this)]},{node:this.currentStepNode,args:["click","[data-role=\"previous\"]",b.default.proxy(this.previous,this)]},{node:this.currentStepNode,args:["click","[data-role=\"end\"]",b.default.proxy(this.endTour,this)]},{node:(0,b.default)("[data-flexitour=\"backdrop\"]"),args:["click",b.default.proxy(this.hide,this)]},{node:(0,b.default)("body"),args:["keydown",b.default.proxy(this.handleKeyDown,this)]});if(a.moveOnClick){var c=this.getStepTarget(a);this.listeners.push({node:c,args:["click",b.default.proxy(function(a){if(0===(0,b.default)(a.target).parents("[data-flexitour=\"container\"]").length){window.setTimeout(b.default.proxy(this.next,this),500)}},this)]})}this.listeners.forEach(function(a){a.node.on.apply(a.node,a.args)});return this}},{key:"resetStepListeners",value:function resetStepListeners(){if(this.listeners){this.listeners.forEach(function(a){a.node.off.apply(a.node,a.args)})}this.listeners=[];return this}},{key:"renderStep",value:function renderStep(a){this.currentStepConfig=a;this.setCurrentStepNumber(a.stepNumber);var c=(0,b.default)(this.getTemplateContent());c.find("[data-placeholder=\"title\"]").html(a.title);c.find("[data-placeholder=\"body\"]").html(a.body);if(this.isFirstStep(a.stepNumber)){c.find("[data-role=\"previous\"]").hide()}else{c.find("[data-role=\"previous\"]").prop("disabled",!1)}if(this.isLastStep(a.stepNumber)){c.find("[data-role=\"next\"]").hide();c.find("[data-role=\"end\"]").removeClass("btn-secondary").addClass("btn-primary")}else{c.find("[data-role=\"next\"]").prop("disabled",!1)}c.find("[data-role=\"previous\"]").attr("role","button");c.find("[data-role=\"next\"]").attr("role","button");c.find("[data-role=\"end\"]").attr("role","button");a.template=c;this.addStepToPage(a);this.processStepListeners(a);return this}},{key:"getTemplateContent",value:function getTemplateContent(){return(0,b.default)(this.templateContent).clone()}},{key:"addStepToPage",value:function addStepToPage(a){var c=(0,b.default)("").html(a.template).hide(),e=(0,b.default)("body, html").stop(!0,!0);if(this.isStepActuallyVisible(a)){var f=this.getStepTarget(a);f.data("flexitour","target");var g=this.calculateZIndex(f);if(g){a.zIndex=g+1}if(a.zIndex){c.css("zIndex",a.zIndex+1)}this.positionBackdrop(a);(0,b.default)(document.body).append(c);this.currentStepNode=c;this.currentStepNode.css({top:0,left:0});e.animate({scrollTop:this.calculateScrollTop(a)}).promise().then(function(){this.positionStep(a);this.revealStep(a)}.bind(this)).catch(function(){})}else if(a.orphan){a.isOrphan=!0;a.attachTo=(0,b.default)("body").first();a.attachPoint="append";this.positionBackdrop(a);c.addClass("orphan");(0,b.default)(document.body).append(c);this.currentStepNode=c;this.currentStepNode.offset(this.calculateStepPositionInPage());this.currentStepNode.css("position","fixed");this.currentStepPopper=new d.default((0,b.default)("body"),this.currentStepNode[0],{removeOnDestroy:!0,placement:a.placement+"-start",arrowElement:"[data-role=\"arrow\"]",modifiers:{hide:{enabled:!1},applyStyle:{onLoad:null,enabled:!1}}});this.revealStep(a)}return this}},{key:"revealStep",value:function revealStep(a){this.currentStepNode.fadeIn("",b.default.proxy(function(){this.announceStep(a);this.currentStepNode.focus();window.setTimeout(b.default.proxy(function(){if(this.currentStepNode){this.currentStepNode.focus()}},this),100)},this));return this}},{key:"announceStep",value:function announceStep(a){var b="tour-step-"+this.tourName+"-"+a.stepNumber;this.currentStepNode.attr("id",b);var c=this.currentStepNode.find("[data-placeholder=\"body\"]").first();c.attr("id",b+"-body");c.attr("role","document");var d=this.currentStepNode.find("[data-placeholder=\"title\"]").first();d.attr("id",b+"-title");d.attr("aria-labelledby",b+"-body");this.currentStepNode.attr("role","dialog");this.currentStepNode.attr("tabindex",0);this.currentStepNode.attr("aria-labelledby",b+"-title");this.currentStepNode.attr("aria-describedby",b+"-body");var e=this.getStepTarget(a);if(e){if(!e.attr("tabindex")){e.attr("tabindex",0)}e.data("original-describedby",e.attr("aria-describedby")).attr("aria-describedby",b+"-body")}this.accessibilityShow(a);return this}},{key:"handleKeyDown",value:function handleKeyDown(a){var c="a[href], link[href], [draggable=true], [contenteditable=true], ";c+=":input:enabled, [tabindex], button:enabled";switch(a.keyCode){case 27:this.endTour();break;case 9:(function(){if(!this.currentStepConfig.hasBackdrop){return}var d=(0,b.default)(document.activeElement),e=this.getStepTarget(this.currentStepConfig),f=(0,b.default)(c),g=(0,b.default)("span[data-flexitour=\"container\"]"),h;if(e){f=f.filter(function(a,b){return null!==e&&(e.has(b).length||g.has(b).length||e.is(b)||g.is(b))})}f.each(function(a,b){if(d.is(b)){h=a;return!1}return!0});var i,j,k;if(void 0!=h){var l=1;if(a.shiftKey){l=-1}i=h;do{i+=l;j=(0,b.default)(f[i])}while(j.length&&j.is(":disabled")||j.is(":hidden"));if(j.length){k=j.closest(e).length;k=k||j.closest(this.currentStepNode).length}else{k=!1}}if(k){j.focus()}else{if(a.shiftKey){this.currentStepNode.find(c).last().focus()}else{if(this.currentStepConfig.isOrphan){this.currentStepNode.focus()}else{e.focus()}}}a.preventDefault()}).call(this);break;}}},{key:"startTour",value:function startTour(a){if(this.storage&&"undefined"==typeof a){var b=this.storage.getItem(this.storageKey);if(b){var c=parseInt(b,10);if(c<=this.steps.length){a=c}}}if("undefined"==typeof a){a=this.getCurrentStepNumber()}this.fireEventHandlers("beforeStart",a);this.gotoStep(a);this.fireEventHandlers("afterStart",a);return this}},{key:"restartTour",value:function restartTour(){return this.startTour(0)}},{key:"endTour",value:function endTour(){this.fireEventHandlers("beforeEnd");if(this.currentStepConfig){var a=this.getStepTarget(this.currentStepConfig);if(a){if(!a.attr("tabindex")){a.attr("tabindex","-1")}a.focus()}}this.hide(!0);this.fireEventHandlers("afterEnd");return this}},{key:"hide",value:function hide(a){this.fireEventHandlers("beforeHide");if(this.currentStepNode&&this.currentStepNode.length){this.currentStepNode.hide();if(this.currentStepPopper){this.currentStepPopper.destroy()}}if(this.currentStepConfig){var d=this.getStepTarget(this.currentStepConfig);if(d){if(d.data("original-labelledby")){d.attr("aria-labelledby",d.data("original-labelledby"))}if(d.data("original-describedby")){d.attr("aria-describedby",d.data("original-describedby"))}if(d.data("original-tabindex")){d.attr("tabindex",d.data("tabindex"))}}this.currentStepConfig=null}var c=0;if(a){c=400}(0,b.default)("[data-flexitour=\"step-background\"]").remove();(0,b.default)("[data-flexitour=\"step-backdrop\"]").removeAttr("data-flexitour");(0,b.default)("[data-flexitour=\"backdrop\"]").fadeOut(c,function(){(0,b.default)(this).remove()});if(this.currentStepNode&&this.currentStepNode.length){var e=this.currentStepNode.attr("id");if(e){var f="[aria-describedby=\""+e+"-body\"]";(0,b.default)(f).removeAttr("tabindex");(0,b.default)(f).removeAttr("aria-describedby")}}this.resetStepListeners();this.accessibilityHide();this.fireEventHandlers("afterHide");this.currentStepNode=null;this.currentStepPopper=null;return this}},{key:"show",value:function show(){var a=this.getCurrentStepNumber();return this.gotoStep(a)}},{key:"getStepContainer",value:function getStepContainer(){return(0,b.default)(this.currentStepNode)}},{key:"calculateScrollTop",value:function calculateScrollTop(a){var c=(0,b.default)(window).scrollTop(),d=(0,b.default)(window).height(),e=this.getStepTarget(a);if("top"===a.placement){c=e.offset().top-d/2}else if("bottom"===a.placement){c=e.offset().top+e.height()-d/2}else if(e.height()<=.8*d){c=e.offset().top-(d-e.height())/2}else{c=e.offset().top-.2*d}c=Math.max(0,c);c=Math.min((0,b.default)(document).height()-d,c);return Math.ceil(c)}},{key:"calculateStepPositionInPage",value:function calculateStepPositionInPage(){var a=(0,b.default)(window).height(),c=this.currentStepNode.height(),d=(0,b.default)(window).width(),e=this.currentStepNode.width();return{top:Math.ceil((a-c)/2),left:Math.ceil((d-e)/2)}}},{key:"positionStep",value:function positionStep(a){var c=this.currentStepNode;if(!c||!c.length){return this}a.placement=this.recalculatePlacement(a);var e;switch(a.placement){case"left":e=["left","right","top","bottom"];break;case"right":e=["right","left","top","bottom"];break;case"top":e=["top","bottom","right","left"];break;case"bottom":e=["bottom","top","right","left"];break;default:e="flip";break;}var f=this.getStepTarget(a),g={placement:a.placement+"-start",removeOnDestroy:!0,modifiers:{flip:{behaviour:e},arrow:{element:"[data-role=\"arrow\"]"}},onCreate:function onCreate(a){h(a)},onUpdate:function onUpdate(a){h(a)}},h=function(a){var c=a.placement.split("-")[0],d=-1!==["left","right"].indexOf(c),e=a.instance.popper.querySelector("[data-role=\"arrow\"]"),f=(0,b.default)(a.instance.popper.querySelector("[data-role=\"flexitour-step\"]"));if(d){var g=parseFloat(window.getComputedStyle(e).height),h=parseFloat(window.getComputedStyle(e).top),i=parseFloat(window.getComputedStyle(a.instance.popper).height),j=parseFloat(window.getComputedStyle(a.instance.popper).top),k=parseFloat(f.css("borderTopWidth")),l=2*parseFloat(f.css("borderTopLeftRadius")),m=h+g/2,n=i+j-k-l,o=j+k+l;if(m>=n||m<=o){var y=0;if(m>i/2){y=n-g}else{y=o+g}(0,b.default)(e).css("top",y)}}else{var p=parseFloat(window.getComputedStyle(e).width),q=parseFloat(window.getComputedStyle(e).left),r=parseFloat(window.getComputedStyle(a.instance.popper).width),s=parseFloat(window.getComputedStyle(a.instance.popper).left),t=parseFloat(f.css("borderTopWidth")),u=2*parseFloat(f.css("borderTopLeftRadius")),v=q+p/2,w=r+s-t-u,x=s+t+u;if(v>=w||v<=x){var z=0;if(v>r/2){z=w-p}else{z=x+p}(0,b.default)(e).css("left",z)}}},i=(0,b.default)("[data-flexitour=\"step-background\"]");if(i.length){f=i}this.currentStepPopper=new d.default(f,c[0],g);return this}},{key:"recalculatePlacement",value:function recalculatePlacement(a){var b=this.getStepTarget(a),c=this.currentStepNode.width()+16,d=b.offset().left-10,e=b.offset().left+b.width()+10,f=a.placement;if(-1!==["left","right"].indexOf(f)){if(ddocument.documentElement.clientWidth){f="top"}}return f}},{key:"positionBackdrop",value:function positionBackdrop(a){if(a.backdrop){this.currentStepConfig.hasBackdrop=!0;var g=(0,b.default)("
");if(a.zIndex){if("append"===a.attachPoint){a.attachTo.append(g)}else{g.insertAfter(a.attachTo)}}else{(0,b.default)("body").append(g)}if(this.isStepActuallyVisible(a)){var c=(0,b.default)("
"),d=this.getStepTarget(a),e=10,f=d;if(e){f=(0,b.default)("body")}c.css({width:d.outerWidth()+e+e,height:d.outerHeight()+e+e,left:d.offset().left-e,top:d.offset().top-e,backgroundColor:this.calculateInherittedBackgroundColor(f)});if(d.offset().left").hide();(0,b.default)("body").append(c);var d=c.css("backgroundColor");c.remove();a=(0,b.default)(a);while(a.length&&a[0]!==document){var e=a.css("backgroundColor");if(e!==d){return e}a=a.parent()}return null}},{key:"calculatePosition",value:function calculatePosition(a){a=(0,b.default)(a);while(a.length&&a[0]!==document){var c=a.css("position");if("static"!==c){return c}a=a.parent()}return null}},{key:"accessibilityShow",value:function accessibilityShow(){var a=function(a){var b=a.data("flexitour");if(b){switch(b){case"container":case"target":return;}}var d=a.attr("aria-hidden");if(!d){a.attr("data-has-hidden",!0);c.hide(a)}};this.currentStepNode.siblings().each(function(c,d){a((0,b.default)(d))});this.currentStepNode.parentsUntil("body").siblings().each(function(c,d){a((0,b.default)(d))})}},{key:"accessibilityHide",value:function accessibilityHide(){var a=function(a){var b=a.attr("data-has-hidden");if("undefined"!=typeof b){a.removeAttr("data-has-hidden");c.unhide(a)}};(0,b.default)("[data-has-hidden]").each(function(c,d){a((0,b.default)(d))})}}]);return a}();a.default=l;return a.default}); //# sourceMappingURL=tour.min.js.map diff --git a/admin/tool/usertours/amd/build/tour.min.js.map b/admin/tool/usertours/amd/build/tour.min.js.map index 79c49c8ba88..8f74b1fbbaf 100644 --- a/admin/tool/usertours/amd/build/tour.min.js.map +++ b/admin/tool/usertours/amd/build/tour.min.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/tour.js"],"names":["Tour","config","init","eventHandlers","reset","originalConfiguration","configure","apply","arguments","storage","window","sessionStorage","storageKey","tourName","e","hide","resetStepListeners","steps","currentStepNumber","eventName","forEach","handler","addEventHandler","resetStepDefaults","template","templateContent","checkMinimumRequirements","Error","length","loadOriginalConfiguration","stepDefaults","setStepDefaults","$","extend","element","placement","delay","moveOnClick","moveAfterTime","orphan","direction","parseInt","stepNumber","setItem","code","DOMException","QUOTA_EXCEEDED_ERR","removeItem","getCurrentStepNumber","nextStepNumber","isStepPotentiallyVisible","getStepConfig","previousStepNumber","getNextStepNumber","getPreviousStepNumber","stepConfig","isStepActuallyVisible","target","getStepTarget","is","gotoStep","endTour","_gotoStep","delayed","setTimeout","bind","fn","fireEventHandlers","renderStep","normalizeStepConfig","reflex","moveAfterClick","content","body","attachTo","attachPoint","first","data","thisEvent","call","push","listeners","node","currentStepNode","args","proxy","next","previous","handleKeyDown","targetNode","parents","listener","on","off","currentStepConfig","setCurrentStepNumber","getTemplateContent","find","html","title","isFirstStep","prop","isLastStep","removeClass","addClass","attr","addStepToPage","processStepListeners","clone","animationTarget","stop","zIndex","calculateZIndex","css","positionBackdrop","document","append","top","left","animate","scrollTop","calculateScrollTop","promise","then","positionStep","revealStep","catch","isOrphan","offset","calculateStepPositionInPage","currentStepPopper","Popper","removeOnDestroy","arrowElement","modifiers","enabled","applyStyle","onLoad","fadeIn","announceStep","focus","stepId","bodyRegion","headerRegion","accessibilityShow","tabbableSelector","keyCode","hasBackdrop","activeElement","stepTarget","tabbableNodes","dialogContainer","currentIndex","filter","index","has","each","nextIndex","nextNode","focusRelevant","shiftKey","closest","last","preventDefault","startAt","storageStartValue","getItem","storageStartAt","startTour","previousTarget","transition","destroy","fadeTime","remove","removeAttr","fadeOut","currentStepElement","accessibilityHide","viewportHeight","height","Math","max","min","ceil","stepHeight","viewportWidth","width","stepWidth","recalculatePlacement","flipBehavior","flip","behaviour","arrow","onCreate","recalculateArrowPosition","onUpdate","split","isVertical","indexOf","instance","popper","querySelector","stepElement","arrowHeight","parseFloat","getComputedStyle","arrowOffset","popperHeight","popperOffset","popperBorderWidth","popperBorderRadiusWidth","arrowPos","maxPos","minPos","newArrowPos","arrowWidth","popperWidth","background","widthContent","targetOffsetLeft","targetOffsetRight","documentElement","clientWidth","backdrop","insertAfter","buffer","colorNode","outerWidth","outerHeight","backgroundColor","calculateInherittedBackgroundColor","targetRadius","targetPosition","calculatePosition","fader","opacity","elem","position","value","isNaN","parent","fakeNode","fakeElemColor","color","hideFunction","child","flexitourRole","hidden","Aria","siblings","parentsUntil","showFunction","unhide"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * Manage user tours in Moodle.\n *\n * @module tool_usertours/tour\n * @copyright 2018 Andrew Nicols \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport $ from 'jquery';\nimport * as Aria from 'core/aria';\nimport Popper from 'core/popper';\n\n/**\n * A Tour.\n *\n * @class\n */\nexport default class Tour {\n /**\n * @param {object} config The configuration object.\n */\n constructor(config) {\n this.init(config);\n }\n\n /**\n * Initialise the tour.\n *\n * @method init\n * @param {Object} config The configuration object.\n * @chainable\n * @return {Object} this.\n */\n init(config) {\n // Unset all handlers.\n this.eventHandlers = {};\n\n // Reset the current tour states.\n this.reset();\n\n // Store the initial configuration.\n this.originalConfiguration = config || {};\n\n // Apply configuration.\n this.configure.apply(this, arguments);\n\n try {\n this.storage = window.sessionStorage;\n this.storageKey = 'tourstate_' + this.tourName;\n } catch (e) {\n this.storage = false;\n this.storageKey = '';\n }\n\n return this;\n }\n\n /**\n * Reset the current tour state.\n *\n * @method reset\n * @chainable\n * @return {Object} this.\n */\n reset() {\n // Hide the current step.\n this.hide();\n\n // Unset all handlers.\n this.eventHandlers = [];\n\n // Unset all listeners.\n this.resetStepListeners();\n\n // Unset the original configuration.\n this.originalConfiguration = {};\n\n // Reset the current step number and list of steps.\n this.steps = [];\n\n // Reset the current step number.\n this.currentStepNumber = 0;\n\n return this;\n }\n\n /**\n * Prepare tour configuration.\n *\n * @method configure\n * @param {Object} config The configuration object.\n * @chainable\n * @return {Object} this.\n */\n configure(config) {\n if (typeof config === 'object') {\n // Tour name.\n if (typeof config.tourName !== 'undefined') {\n this.tourName = config.tourName;\n }\n\n // Set up eventHandlers.\n if (config.eventHandlers) {\n for (let eventName in config.eventHandlers) {\n config.eventHandlers[eventName].forEach(function(handler) {\n this.addEventHandler(eventName, handler);\n }, this);\n }\n }\n\n // Reset the step configuration.\n this.resetStepDefaults(true);\n\n // Configure the steps.\n if (typeof config.steps === 'object') {\n this.steps = config.steps;\n }\n\n if (typeof config.template !== 'undefined') {\n this.templateContent = config.template;\n }\n }\n\n // Check that we have enough to start the tour.\n this.checkMinimumRequirements();\n\n return this;\n }\n\n /**\n * Check that the configuration meets the minimum requirements.\n *\n * @method checkMinimumRequirements\n */\n checkMinimumRequirements() {\n // Need a tourName.\n if (!this.tourName) {\n throw new Error(\"Tour Name required\");\n }\n\n // Need a minimum of one step.\n if (!this.steps || !this.steps.length) {\n throw new Error(\"Steps must be specified\");\n }\n }\n\n /**\n * Reset step default configuration.\n *\n * @method resetStepDefaults\n * @param {Boolean} loadOriginalConfiguration Whether to load the original configuration supplied with the Tour.\n * @chainable\n * @return {Object} this.\n */\n resetStepDefaults(loadOriginalConfiguration) {\n if (typeof loadOriginalConfiguration === 'undefined') {\n loadOriginalConfiguration = true;\n }\n\n this.stepDefaults = {};\n if (!loadOriginalConfiguration || typeof this.originalConfiguration.stepDefaults === 'undefined') {\n this.setStepDefaults({});\n } else {\n this.setStepDefaults(this.originalConfiguration.stepDefaults);\n }\n\n return this;\n }\n\n /**\n * Set the step defaults.\n *\n * @method setStepDefaults\n * @param {Object} stepDefaults The step defaults to apply to all steps\n * @chainable\n * @return {Object} this.\n */\n setStepDefaults(stepDefaults) {\n if (!this.stepDefaults) {\n this.stepDefaults = {};\n }\n $.extend(\n this.stepDefaults,\n {\n element: '',\n placement: 'top',\n delay: 0,\n moveOnClick: false,\n moveAfterTime: 0,\n orphan: false,\n direction: 1,\n },\n stepDefaults\n );\n\n return this;\n }\n\n /**\n * Retrieve the current step number.\n *\n * @method getCurrentStepNumber\n * @return {Integer} The current step number\n */\n getCurrentStepNumber() {\n return parseInt(this.currentStepNumber, 10);\n }\n\n /**\n * Store the current step number.\n *\n * @method setCurrentStepNumber\n * @param {Integer} stepNumber The current step number\n * @chainable\n */\n setCurrentStepNumber(stepNumber) {\n this.currentStepNumber = stepNumber;\n if (this.storage) {\n try {\n this.storage.setItem(this.storageKey, stepNumber);\n } catch (e) {\n if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n this.storage.removeItem(this.storageKey);\n }\n }\n }\n }\n\n /**\n * Get the next step number after the currently displayed step.\n *\n * @method getNextStepNumber\n * @param {Integer} stepNumber The current step number\n * @return {Integer} The next step number to display\n */\n getNextStepNumber(stepNumber) {\n if (typeof stepNumber === 'undefined') {\n stepNumber = this.getCurrentStepNumber();\n }\n let nextStepNumber = stepNumber + 1;\n\n // Keep checking the remaining steps.\n while (nextStepNumber <= this.steps.length) {\n if (this.isStepPotentiallyVisible(this.getStepConfig(nextStepNumber))) {\n return nextStepNumber;\n }\n nextStepNumber++;\n }\n\n return null;\n }\n\n /**\n * Get the previous step number before the currently displayed step.\n *\n * @method getPreviousStepNumber\n * @param {Integer} stepNumber The current step number\n * @return {Integer} The previous step number to display\n */\n getPreviousStepNumber(stepNumber) {\n if (typeof stepNumber === 'undefined') {\n stepNumber = this.getCurrentStepNumber();\n }\n let previousStepNumber = stepNumber - 1;\n\n // Keep checking the remaining steps.\n while (previousStepNumber >= 0) {\n if (this.isStepPotentiallyVisible(this.getStepConfig(previousStepNumber))) {\n return previousStepNumber;\n }\n previousStepNumber--;\n }\n\n return null;\n }\n\n /**\n * Is the step the final step number?\n *\n * @method isLastStep\n * @param {Integer} stepNumber Step number to test\n * @return {Boolean} Whether the step is the final step\n */\n isLastStep(stepNumber) {\n let nextStepNumber = this.getNextStepNumber(stepNumber);\n\n return nextStepNumber === null;\n }\n\n /**\n * Is the step the first step number?\n *\n * @method isFirstStep\n * @param {Integer} stepNumber Step number to test\n * @return {Boolean} Whether the step is the first step\n */\n isFirstStep(stepNumber) {\n let previousStepNumber = this.getPreviousStepNumber(stepNumber);\n\n return previousStepNumber === null;\n }\n\n /**\n * Is this step potentially visible?\n *\n * @method isStepPotentiallyVisible\n * @param {Object} stepConfig The step configuration to normalise\n * @return {Boolean} Whether the step is the potentially visible\n */\n isStepPotentiallyVisible(stepConfig) {\n if (!stepConfig) {\n // Without step config, there can be no step.\n return false;\n }\n\n if (this.isStepActuallyVisible(stepConfig)) {\n // If it is actually visible, it is already potentially visible.\n return true;\n }\n\n if (typeof stepConfig.orphan !== 'undefined' && stepConfig.orphan) {\n // Orphan steps have no target. They are always visible.\n return true;\n }\n\n if (typeof stepConfig.delay !== 'undefined' && stepConfig.delay) {\n // Only return true if the activated has not been used yet.\n return true;\n }\n\n // Not theoretically, or actually visible.\n return false;\n }\n\n /**\n * Is this step actually visible?\n *\n * @method isStepActuallyVisible\n * @param {Object} stepConfig The step configuration to normalise\n * @return {Boolean} Whether the step is actually visible\n */\n isStepActuallyVisible(stepConfig) {\n if (!stepConfig) {\n // Without step config, there can be no step.\n return false;\n }\n\n let target = this.getStepTarget(stepConfig);\n if (target && target.length && target.is(':visible')) {\n // Without a target, there can be no step.\n return !!target.length;\n }\n\n return false;\n }\n\n /**\n * Go to the next step in the tour.\n *\n * @method next\n * @chainable\n * @return {Object} this.\n */\n next() {\n return this.gotoStep(this.getNextStepNumber());\n }\n\n /**\n * Go to the previous step in the tour.\n *\n * @method previous\n * @chainable\n * @return {Object} this.\n */\n previous() {\n return this.gotoStep(this.getPreviousStepNumber(), -1);\n }\n\n /**\n * Go to the specified step in the tour.\n *\n * @method gotoStep\n * @param {Integer} stepNumber The step number to display\n * @param {Integer} direction Next or previous step\n * @chainable\n * @return {Object} this.\n */\n gotoStep(stepNumber, direction) {\n if (stepNumber < 0) {\n return this.endTour();\n }\n\n let stepConfig = this.getStepConfig(stepNumber);\n if (stepConfig === null) {\n return this.endTour();\n }\n\n return this._gotoStep(stepConfig, direction);\n }\n\n _gotoStep(stepConfig, direction) {\n if (!stepConfig) {\n return this.endTour();\n }\n\n if (typeof stepConfig.delay !== 'undefined' && stepConfig.delay && !stepConfig.delayed) {\n stepConfig.delayed = true;\n window.setTimeout(this._gotoStep.bind(this), stepConfig.delay, stepConfig, direction);\n\n return this;\n } else if (!stepConfig.orphan && !this.isStepActuallyVisible(stepConfig)) {\n let fn = direction == -1 ? 'getPreviousStepNumber' : 'getNextStepNumber';\n return this.gotoStep(this[fn](stepConfig.stepNumber), direction);\n }\n\n this.hide();\n\n this.fireEventHandlers('beforeRender', stepConfig);\n this.renderStep(stepConfig);\n this.fireEventHandlers('afterRender', stepConfig);\n\n return this;\n }\n\n /**\n * Fetch the normalised step configuration for the specified step number.\n *\n * @method getStepConfig\n * @param {Integer} stepNumber The step number to fetch configuration for\n * @return {Object} The step configuration\n */\n getStepConfig(stepNumber) {\n if (stepNumber === null || stepNumber < 0 || stepNumber >= this.steps.length) {\n return null;\n }\n\n // Normalise the step configuration.\n let stepConfig = this.normalizeStepConfig(this.steps[stepNumber]);\n\n // Add the stepNumber to the stepConfig.\n stepConfig = $.extend(stepConfig, {stepNumber: stepNumber});\n\n return stepConfig;\n }\n\n /**\n * Normalise the supplied step configuration.\n *\n * @method normalizeStepConfig\n * @param {Object} stepConfig The step configuration to normalise\n * @return {Object} The normalised step configuration\n */\n normalizeStepConfig(stepConfig) {\n\n if (typeof stepConfig.reflex !== 'undefined' && typeof stepConfig.moveAfterClick === 'undefined') {\n stepConfig.moveAfterClick = stepConfig.reflex;\n }\n\n if (typeof stepConfig.element !== 'undefined' && typeof stepConfig.target === 'undefined') {\n stepConfig.target = stepConfig.element;\n }\n\n if (typeof stepConfig.content !== 'undefined' && typeof stepConfig.body === 'undefined') {\n stepConfig.body = stepConfig.content;\n }\n\n stepConfig = $.extend({}, this.stepDefaults, stepConfig);\n\n stepConfig = $.extend({}, {\n attachTo: stepConfig.target,\n attachPoint: 'after',\n }, stepConfig);\n\n if (stepConfig.attachTo) {\n stepConfig.attachTo = $(stepConfig.attachTo).first();\n }\n\n return stepConfig;\n }\n\n /**\n * Fetch the actual step target from the selector.\n *\n * This should not be called until after any delay has completed.\n *\n * @method getStepTarget\n * @param {Object} stepConfig The step configuration\n * @return {$}\n */\n getStepTarget(stepConfig) {\n if (stepConfig.target) {\n return $(stepConfig.target);\n }\n\n return null;\n }\n\n /**\n * Fire any event handlers for the specified event.\n *\n * @param {String} eventName The name of the event to handle\n * @param {Object} data Any data to pass to the event\n * @chainable\n * @return {Object} this.\n */\n fireEventHandlers(eventName, data) {\n if (typeof this.eventHandlers[eventName] === 'undefined') {\n return this;\n }\n\n this.eventHandlers[eventName].forEach(function(thisEvent) {\n thisEvent.call(this, data);\n }, this);\n\n return this;\n }\n\n /**\n * @method addEventHandler\n * @param {string} eventName The name of the event to listen for\n * @param {function} handler The event handler to call\n * @return {Object} this.\n */\n addEventHandler(eventName, handler) {\n if (typeof this.eventHandlers[eventName] === 'undefined') {\n this.eventHandlers[eventName] = [];\n }\n\n this.eventHandlers[eventName].push(handler);\n\n return this;\n }\n\n /**\n * Process listeners for the step being shown.\n *\n * @method processStepListeners\n * @param {object} stepConfig The configuration for the step\n * @chainable\n * @return {Object} this.\n */\n processStepListeners(stepConfig) {\n this.listeners.push(\n // Next/Previous buttons.\n {\n node: this.currentStepNode,\n args: ['click', '[data-role=\"next\"]', $.proxy(this.next, this)]\n }, {\n node: this.currentStepNode,\n args: ['click', '[data-role=\"previous\"]', $.proxy(this.previous, this)]\n },\n\n // Close and end tour buttons.\n {\n node: this.currentStepNode,\n args: ['click', '[data-role=\"end\"]', $.proxy(this.endTour, this)]\n },\n\n // Click backdrop and hide tour.\n {\n node: $('[data-flexitour=\"backdrop\"]'),\n args: ['click', $.proxy(this.hide, this)]\n },\n\n // Keypresses.\n {\n node: $('body'),\n args: ['keydown', $.proxy(this.handleKeyDown, this)]\n });\n\n if (stepConfig.moveOnClick) {\n var targetNode = this.getStepTarget(stepConfig);\n this.listeners.push({\n node: targetNode,\n args: ['click', $.proxy(function(e) {\n if ($(e.target).parents('[data-flexitour=\"container\"]').length === 0) {\n // Ignore clicks when they are in the flexitour.\n window.setTimeout($.proxy(this.next, this), 500);\n }\n }, this)]\n });\n }\n\n this.listeners.forEach(function(listener) {\n listener.node.on.apply(listener.node, listener.args);\n });\n\n return this;\n }\n\n /**\n * Reset step listeners.\n *\n * @method resetStepListeners\n * @chainable\n * @return {Object} this.\n */\n resetStepListeners() {\n // Stop listening to all external handlers.\n if (this.listeners) {\n this.listeners.forEach(function(listener) {\n listener.node.off.apply(listener.node, listener.args);\n });\n }\n this.listeners = [];\n\n return this;\n }\n\n /**\n * The standard step renderer.\n *\n * @method renderStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n renderStep(stepConfig) {\n // Store the current step configuration for later.\n this.currentStepConfig = stepConfig;\n this.setCurrentStepNumber(stepConfig.stepNumber);\n\n // Fetch the template and convert it to a $ object.\n let template = $(this.getTemplateContent());\n\n // Title.\n template.find('[data-placeholder=\"title\"]')\n .html(stepConfig.title);\n\n // Body.\n template.find('[data-placeholder=\"body\"]')\n .html(stepConfig.body);\n\n // Is this the first step?\n if (this.isFirstStep(stepConfig.stepNumber)) {\n template.find('[data-role=\"previous\"]').hide();\n } else {\n template.find('[data-role=\"previous\"]').prop('disabled', false);\n }\n\n // Is this the final step?\n if (this.isLastStep(stepConfig.stepNumber)) {\n template.find('[data-role=\"next\"]').hide();\n template.find('[data-role=\"end\"]').removeClass(\"btn-secondary\").addClass(\"btn-primary\");\n } else {\n template.find('[data-role=\"next\"]').prop('disabled', false);\n }\n\n template.find('[data-role=\"previous\"]').attr('role', 'button');\n template.find('[data-role=\"next\"]').attr('role', 'button');\n template.find('[data-role=\"end\"]').attr('role', 'button');\n\n // Replace the template with the updated version.\n stepConfig.template = template;\n\n // Add to the page.\n this.addStepToPage(stepConfig);\n\n // Process step listeners after adding to the page.\n // This uses the currentNode.\n this.processStepListeners(stepConfig);\n\n return this;\n }\n\n /**\n * Getter for the template content.\n *\n * @method getTemplateContent\n * @return {$}\n */\n getTemplateContent() {\n return $(this.templateContent).clone();\n }\n\n /**\n * Helper to add a step to the page.\n *\n * @method addStepToPage\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n addStepToPage(stepConfig) {\n // Create the stepNode from the template data.\n let currentStepNode = $('')\n .html(stepConfig.template)\n .hide();\n\n // The scroll animation occurs on the body or html.\n let animationTarget = $('body, html')\n .stop(true, true);\n\n if (this.isStepActuallyVisible(stepConfig)) {\n let targetNode = this.getStepTarget(stepConfig);\n\n targetNode.data('flexitour', 'target');\n\n let zIndex = this.calculateZIndex(targetNode);\n if (zIndex) {\n stepConfig.zIndex = zIndex + 1;\n }\n\n if (stepConfig.zIndex) {\n currentStepNode.css('zIndex', stepConfig.zIndex + 1);\n }\n\n // Add the backdrop.\n this.positionBackdrop(stepConfig);\n\n $(document.body).append(currentStepNode);\n this.currentStepNode = currentStepNode;\n\n // Ensure that the step node is positioned.\n // Some situations mean that the value is not properly calculated without this step.\n this.currentStepNode.css({\n top: 0,\n left: 0,\n });\n\n animationTarget\n .animate({\n scrollTop: this.calculateScrollTop(stepConfig),\n }).promise().then(function() {\n this.positionStep(stepConfig);\n this.revealStep(stepConfig);\n return;\n }.bind(this))\n .catch(function() {\n // Silently fail.\n });\n\n } else if (stepConfig.orphan) {\n stepConfig.isOrphan = true;\n\n // This will be appended to the body instead.\n stepConfig.attachTo = $('body').first();\n stepConfig.attachPoint = 'append';\n\n // Add the backdrop.\n this.positionBackdrop(stepConfig);\n\n // This is an orphaned step.\n currentStepNode.addClass('orphan');\n\n // It lives in the body.\n $(document.body).append(currentStepNode);\n this.currentStepNode = currentStepNode;\n\n this.currentStepNode.offset(this.calculateStepPositionInPage());\n this.currentStepNode.css('position', 'fixed');\n\n this.currentStepPopper = new Popper(\n $('body'),\n this.currentStepNode[0], {\n removeOnDestroy: true,\n placement: stepConfig.placement + '-start',\n arrowElement: '[data-role=\"arrow\"]',\n // Empty the modifiers. We've already placed the step and don't want it moved.\n modifiers: {\n hide: {\n enabled: false,\n },\n applyStyle: {\n onLoad: null,\n enabled: false,\n },\n }\n }\n );\n\n this.revealStep(stepConfig);\n }\n\n return this;\n }\n\n /**\n * Make the given step visible.\n *\n * @method revealStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n revealStep(stepConfig) {\n // Fade the step in.\n this.currentStepNode.fadeIn('', $.proxy(function() {\n // Announce via ARIA.\n this.announceStep(stepConfig);\n\n // Focus on the current step Node.\n this.currentStepNode.focus();\n window.setTimeout($.proxy(function() {\n // After a brief delay, focus again.\n // There seems to be an issue with Jaws where it only reads the dialogue title initially.\n // This second focus helps it to read the full dialogue.\n if (this.currentStepNode) {\n this.currentStepNode.focus();\n }\n }, this), 100);\n\n }, this));\n\n return this;\n }\n\n /**\n * Helper to announce the step on the page.\n *\n * @method announceStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n announceStep(stepConfig) {\n // Setup the step Dialogue as per:\n // * https://www.w3.org/TR/wai-aria-practices/#dialog_nonmodal\n // * https://www.w3.org/TR/wai-aria-practices/#dialog_modal\n\n // Generate an ID for the current step node.\n let stepId = 'tour-step-' + this.tourName + '-' + stepConfig.stepNumber;\n this.currentStepNode.attr('id', stepId);\n\n let bodyRegion = this.currentStepNode.find('[data-placeholder=\"body\"]').first();\n bodyRegion.attr('id', stepId + '-body');\n bodyRegion.attr('role', 'document');\n\n let headerRegion = this.currentStepNode.find('[data-placeholder=\"title\"]').first();\n headerRegion.attr('id', stepId + '-title');\n headerRegion.attr('aria-labelledby', stepId + '-body');\n\n // Generally, a modal dialog has a role of dialog.\n this.currentStepNode.attr('role', 'dialog');\n this.currentStepNode.attr('tabindex', 0);\n this.currentStepNode.attr('aria-labelledby', stepId + '-title');\n this.currentStepNode.attr('aria-describedby', stepId + '-body');\n\n // Configure ARIA attributes on the target.\n let target = this.getStepTarget(stepConfig);\n if (target) {\n if (!target.attr('tabindex')) {\n target.attr('tabindex', 0);\n }\n\n target\n .data('original-describedby', target.attr('aria-describedby'))\n .attr('aria-describedby', stepId + '-body')\n ;\n }\n\n this.accessibilityShow(stepConfig);\n\n return this;\n }\n\n /**\n * Handle key down events.\n *\n * @method handleKeyDown\n * @param {EventFacade} e\n */\n handleKeyDown(e) {\n let tabbableSelector = 'a[href], link[href], [draggable=true], [contenteditable=true], ';\n tabbableSelector += ':input:enabled, [tabindex], button:enabled';\n switch (e.keyCode) {\n case 27:\n this.endTour();\n break;\n\n // 9 == Tab - trap focus for items with a backdrop.\n case 9:\n // Tab must be handled on key up only in this instance.\n (function() {\n if (!this.currentStepConfig.hasBackdrop) {\n // Trapping tab focus is only handled for those steps with a backdrop.\n return;\n }\n\n // Find all tabbable locations.\n let activeElement = $(document.activeElement);\n let stepTarget = this.getStepTarget(this.currentStepConfig);\n let tabbableNodes = $(tabbableSelector);\n let dialogContainer = $('span[data-flexitour=\"container\"]');\n let currentIndex;\n // Filter out element which is not belong to target section or dialogue.\n if (stepTarget) {\n tabbableNodes = tabbableNodes.filter(function(index, element) {\n return stepTarget !== null\n && (stepTarget.has(element).length\n || dialogContainer.has(element).length\n || stepTarget.is(element)\n || dialogContainer.is(element));\n });\n }\n\n // Find index of focusing element.\n tabbableNodes.each(function(index, element) {\n if (activeElement.is(element)) {\n currentIndex = index;\n return false;\n }\n // Keep looping.\n return true;\n });\n\n let nextIndex;\n let nextNode;\n let focusRelevant;\n if (currentIndex != void 0) {\n let direction = 1;\n if (e.shiftKey) {\n direction = -1;\n }\n nextIndex = currentIndex;\n do {\n nextIndex += direction;\n nextNode = $(tabbableNodes[nextIndex]);\n } while (nextNode.length && nextNode.is(':disabled') || nextNode.is(':hidden'));\n if (nextNode.length) {\n // A new f\n focusRelevant = nextNode.closest(stepTarget).length;\n focusRelevant = focusRelevant || nextNode.closest(this.currentStepNode).length;\n } else {\n // Unable to find the target somehow.\n focusRelevant = false;\n }\n }\n\n if (focusRelevant) {\n nextNode.focus();\n } else {\n if (e.shiftKey) {\n // Focus on the last tabbable node in the step.\n this.currentStepNode.find(tabbableSelector).last().focus();\n } else {\n if (this.currentStepConfig.isOrphan) {\n // Focus on the step - there is no target.\n this.currentStepNode.focus();\n } else {\n // Focus on the step target.\n stepTarget.focus();\n }\n }\n }\n e.preventDefault();\n }).call(this);\n break;\n }\n }\n\n /**\n * Start the current tour.\n *\n * @method startTour\n * @param {Integer} startAt Which step number to start at. If not specified, starts at the last point.\n * @chainable\n * @return {Object} this.\n */\n startTour(startAt) {\n if (this.storage && typeof startAt === 'undefined') {\n let storageStartValue = this.storage.getItem(this.storageKey);\n if (storageStartValue) {\n let storageStartAt = parseInt(storageStartValue, 10);\n if (storageStartAt <= this.steps.length) {\n startAt = storageStartAt;\n }\n }\n }\n\n if (typeof startAt === 'undefined') {\n startAt = this.getCurrentStepNumber();\n }\n\n this.fireEventHandlers('beforeStart', startAt);\n this.gotoStep(startAt);\n this.fireEventHandlers('afterStart', startAt);\n\n return this;\n }\n\n /**\n * Restart the tour from the beginning, resetting the completionlag.\n *\n * @method restartTour\n * @chainable\n * @return {Object} this.\n */\n restartTour() {\n return this.startTour(0);\n }\n\n /**\n * End the current tour.\n *\n * @method endTour\n * @chainable\n * @return {Object} this.\n */\n endTour() {\n this.fireEventHandlers('beforeEnd');\n\n if (this.currentStepConfig) {\n let previousTarget = this.getStepTarget(this.currentStepConfig);\n if (previousTarget) {\n if (!previousTarget.attr('tabindex')) {\n previousTarget.attr('tabindex', '-1');\n }\n previousTarget.focus();\n }\n }\n\n this.hide(true);\n\n this.fireEventHandlers('afterEnd');\n\n return this;\n }\n\n /**\n * Hide any currently visible steps.\n *\n * @method hide\n * @param {Bool} transition Animate the visibility change\n * @chainable\n * @return {Object} this.\n */\n hide(transition) {\n this.fireEventHandlers('beforeHide');\n\n if (this.currentStepNode && this.currentStepNode.length) {\n this.currentStepNode.hide();\n if (this.currentStepPopper) {\n this.currentStepPopper.destroy();\n }\n }\n\n // Restore original target configuration.\n if (this.currentStepConfig) {\n let target = this.getStepTarget(this.currentStepConfig);\n if (target) {\n if (target.data('original-labelledby')) {\n target.attr('aria-labelledby', target.data('original-labelledby'));\n }\n\n if (target.data('original-describedby')) {\n target.attr('aria-describedby', target.data('original-describedby'));\n }\n\n if (target.data('original-tabindex')) {\n target.attr('tabindex', target.data('tabindex'));\n }\n }\n\n // Clear the step configuration.\n this.currentStepConfig = null;\n }\n\n let fadeTime = 0;\n if (transition) {\n fadeTime = 400;\n }\n\n // Remove the backdrop features.\n $('[data-flexitour=\"step-background\"]').remove();\n $('[data-flexitour=\"step-backdrop\"]').removeAttr('data-flexitour');\n $('[data-flexitour=\"backdrop\"]').fadeOut(fadeTime, function() {\n $(this).remove();\n });\n\n // Remove aria-describedby and tabindex attributes.\n if (this.currentStepNode && this.currentStepNode.length) {\n let stepId = this.currentStepNode.attr('id');\n if (stepId) {\n let currentStepElement = '[aria-describedby=\"' + stepId + '-body\"]';\n $(currentStepElement).removeAttr('tabindex');\n $(currentStepElement).removeAttr('aria-describedby');\n }\n }\n\n // Reset the listeners.\n this.resetStepListeners();\n\n this.accessibilityHide();\n\n this.fireEventHandlers('afterHide');\n\n this.currentStepNode = null;\n this.currentStepPopper = null;\n return this;\n }\n\n /**\n * Show the current steps.\n *\n * @method show\n * @chainable\n * @return {Object} this.\n */\n show() {\n // Show the current step.\n let startAt = this.getCurrentStepNumber();\n\n return this.gotoStep(startAt);\n }\n\n /**\n * Return the current step node.\n *\n * @method getStepContainer\n * @return {jQuery}\n */\n getStepContainer() {\n return $(this.currentStepNode);\n }\n\n /**\n * Calculate scrollTop.\n *\n * @method calculateScrollTop\n * @param {Object} stepConfig The step configuration of the step\n * @return {Number}\n */\n calculateScrollTop(stepConfig) {\n let scrollTop = $(window).scrollTop();\n let viewportHeight = $(window).height();\n let targetNode = this.getStepTarget(stepConfig);\n\n if (stepConfig.placement === 'top') {\n // If the placement is top, center scroll at the top of the target.\n scrollTop = targetNode.offset().top - (viewportHeight / 2);\n } else if (stepConfig.placement === 'bottom') {\n // If the placement is bottom, center scroll at the bottom of the target.\n scrollTop = targetNode.offset().top + targetNode.height() - (viewportHeight / 2);\n } else if (targetNode.height() <= (viewportHeight * 0.8)) {\n // If the placement is left/right, and the target fits in the viewport, centre screen on the target\n scrollTop = targetNode.offset().top - ((viewportHeight - targetNode.height()) / 2);\n } else {\n // If the placement is left/right, and the target is bigger than the viewport, set scrollTop to target.top + buffer\n // and change step attachmentTarget to top+.\n scrollTop = targetNode.offset().top - (viewportHeight * 0.2);\n }\n\n // Never scroll over the top.\n scrollTop = Math.max(0, scrollTop);\n\n // Never scroll beyond the bottom.\n scrollTop = Math.min($(document).height() - viewportHeight, scrollTop);\n\n return Math.ceil(scrollTop);\n }\n\n /**\n * Calculate dialogue position for page middle.\n *\n * @method calculateScrollTop\n * @return {Number}\n */\n calculateStepPositionInPage() {\n let viewportHeight = $(window).height();\n let stepHeight = this.currentStepNode.height();\n\n let viewportWidth = $(window).width();\n let stepWidth = this.currentStepNode.width();\n\n return {\n top: Math.ceil((viewportHeight - stepHeight) / 2),\n left: Math.ceil((viewportWidth - stepWidth) / 2)\n };\n }\n\n /**\n * Position the step on the page.\n *\n * @method positionStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n positionStep(stepConfig) {\n let content = this.currentStepNode;\n if (!content || !content.length) {\n // Unable to find the step node.\n return this;\n }\n\n stepConfig.placement = this.recalculatePlacement(stepConfig);\n let flipBehavior;\n switch (stepConfig.placement) {\n case 'left':\n flipBehavior = ['left', 'right', 'top', 'bottom'];\n break;\n case 'right':\n flipBehavior = ['right', 'left', 'top', 'bottom'];\n break;\n case 'top':\n flipBehavior = ['top', 'bottom', 'right', 'left'];\n break;\n case 'bottom':\n flipBehavior = ['bottom', 'top', 'right', 'left'];\n break;\n default:\n flipBehavior = 'flip';\n break;\n }\n\n let target = this.getStepTarget(stepConfig);\n var config = {\n placement: stepConfig.placement + '-start',\n removeOnDestroy: true,\n modifiers: {\n flip: {\n behaviour: flipBehavior,\n },\n arrow: {\n element: '[data-role=\"arrow\"]',\n },\n },\n onCreate: function(data) {\n recalculateArrowPosition(data);\n },\n onUpdate: function(data) {\n recalculateArrowPosition(data);\n },\n };\n\n let recalculateArrowPosition = function(data) {\n let placement = data.placement.split('-')[0];\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n const arrowElement = data.instance.popper.querySelector('[data-role=\"arrow\"]');\n const stepElement = $(data.instance.popper.querySelector('[data-role=\"flexitour-step\"]'));\n if (isVertical) {\n let arrowHeight = parseFloat(window.getComputedStyle(arrowElement).height);\n let arrowOffset = parseFloat(window.getComputedStyle(arrowElement).top);\n let popperHeight = parseFloat(window.getComputedStyle(data.instance.popper).height);\n let popperOffset = parseFloat(window.getComputedStyle(data.instance.popper).top);\n let popperBorderWidth = parseFloat(stepElement.css('borderTopWidth'));\n let popperBorderRadiusWidth = parseFloat(stepElement.css('borderTopLeftRadius')) * 2;\n let arrowPos = arrowOffset + (arrowHeight / 2);\n let maxPos = popperHeight + popperOffset - popperBorderWidth - popperBorderRadiusWidth;\n let minPos = popperOffset + popperBorderWidth + popperBorderRadiusWidth;\n if (arrowPos >= maxPos || arrowPos <= minPos) {\n let newArrowPos = 0;\n if (arrowPos > (popperHeight / 2)) {\n newArrowPos = maxPos - arrowHeight;\n } else {\n newArrowPos = minPos + arrowHeight;\n }\n $(arrowElement).css('top', newArrowPos);\n }\n } else {\n let arrowWidth = parseFloat(window.getComputedStyle(arrowElement).width);\n let arrowOffset = parseFloat(window.getComputedStyle(arrowElement).left);\n let popperWidth = parseFloat(window.getComputedStyle(data.instance.popper).width);\n let popperOffset = parseFloat(window.getComputedStyle(data.instance.popper).left);\n let popperBorderWidth = parseFloat(stepElement.css('borderTopWidth'));\n let popperBorderRadiusWidth = parseFloat(stepElement.css('borderTopLeftRadius')) * 2;\n let arrowPos = arrowOffset + (arrowWidth / 2);\n let maxPos = popperWidth + popperOffset - popperBorderWidth - popperBorderRadiusWidth;\n let minPos = popperOffset + popperBorderWidth + popperBorderRadiusWidth;\n if (arrowPos >= maxPos || arrowPos <= minPos) {\n let newArrowPos = 0;\n if (arrowPos > (popperWidth / 2)) {\n newArrowPos = maxPos - arrowWidth;\n } else {\n newArrowPos = minPos + arrowWidth;\n }\n $(arrowElement).css('left', newArrowPos);\n }\n }\n };\n\n let background = $('[data-flexitour=\"step-background\"]');\n if (background.length) {\n target = background;\n }\n this.currentStepPopper = new Popper(target, content[0], config);\n\n return this;\n }\n\n /**\n * For left/right placement, checks that there is room for the step at current window size.\n *\n * If there is not enough room, changes placement to 'top'.\n *\n * @method recalculatePlacement\n * @param {Object} stepConfig The step configuration of the step\n * @return {String} The placement after recalculate\n */\n recalculatePlacement(stepConfig) {\n const buffer = 10;\n const arrowWidth = 16;\n let target = this.getStepTarget(stepConfig);\n let widthContent = this.currentStepNode.width() + arrowWidth;\n let targetOffsetLeft = target.offset().left - buffer;\n let targetOffsetRight = target.offset().left + target.width() + buffer;\n let placement = stepConfig.placement;\n\n if (['left', 'right'].indexOf(placement) !== -1) {\n if ((targetOffsetLeft < (widthContent + buffer)) &&\n ((targetOffsetRight + widthContent + buffer) > document.documentElement.clientWidth)) {\n placement = 'top';\n }\n }\n return placement;\n }\n\n /**\n * Add the backdrop.\n *\n * @method positionBackdrop\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n positionBackdrop(stepConfig) {\n if (stepConfig.backdrop) {\n this.currentStepConfig.hasBackdrop = true;\n let backdrop = $('
');\n\n if (stepConfig.zIndex) {\n if (stepConfig.attachPoint === 'append') {\n stepConfig.attachTo.append(backdrop);\n } else {\n backdrop.insertAfter(stepConfig.attachTo);\n }\n } else {\n $('body').append(backdrop);\n }\n\n if (this.isStepActuallyVisible(stepConfig)) {\n // The step has a visible target.\n // Punch a hole through the backdrop.\n let background = $('
');\n\n let targetNode = this.getStepTarget(stepConfig);\n\n let buffer = 10;\n\n let colorNode = targetNode;\n if (buffer) {\n colorNode = $('body');\n }\n\n background.css({\n width: targetNode.outerWidth() + buffer + buffer,\n height: targetNode.outerHeight() + buffer + buffer,\n left: targetNode.offset().left - buffer,\n top: targetNode.offset().top - buffer,\n backgroundColor: this.calculateInherittedBackgroundColor(colorNode),\n });\n\n if (targetNode.offset().left < buffer) {\n background.css({\n width: targetNode.outerWidth() + targetNode.offset().left + buffer,\n left: targetNode.offset().left,\n });\n }\n\n if (targetNode.offset().top < buffer) {\n background.css({\n height: targetNode.outerHeight() + targetNode.offset().top + buffer,\n top: targetNode.offset().top,\n });\n }\n\n let targetRadius = targetNode.css('borderRadius');\n if (targetRadius && targetRadius !== $('body').css('borderRadius')) {\n background.css('borderRadius', targetRadius);\n }\n\n let targetPosition = this.calculatePosition(targetNode);\n if (targetPosition === 'fixed') {\n background.css('top', 0);\n } else if (targetPosition === 'absolute') {\n background.css('position', 'fixed');\n }\n\n let fader = background.clone();\n fader.css({\n backgroundColor: backdrop.css('backgroundColor'),\n opacity: backdrop.css('opacity'),\n });\n fader.attr('data-flexitour', 'step-background-fader');\n\n if (stepConfig.zIndex) {\n if (stepConfig.attachPoint === 'append') {\n stepConfig.attachTo.append(background);\n } else {\n fader.insertAfter(stepConfig.attachTo);\n background.insertAfter(stepConfig.attachTo);\n }\n } else {\n $('body').append(fader);\n $('body').append(background);\n }\n\n // Add the backdrop data to the actual target.\n // This is the part which actually does the work.\n targetNode.attr('data-flexitour', 'step-backdrop');\n\n if (stepConfig.zIndex) {\n backdrop.css('zIndex', stepConfig.zIndex);\n background.css('zIndex', stepConfig.zIndex + 1);\n targetNode.css('zIndex', stepConfig.zIndex + 2);\n }\n\n fader.fadeOut('2000', function() {\n $(this).remove();\n });\n }\n }\n return this;\n }\n\n /**\n * Calculate the inheritted z-index.\n *\n * @method calculateZIndex\n * @param {jQuery} elem The element to calculate z-index for\n * @return {Number} Calculated z-index\n */\n calculateZIndex(elem) {\n elem = $(elem);\n while (elem.length && elem[0] !== document) {\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\n // This makes behavior of this function consistent across browsers\n // WebKit always returns auto if the element is positioned.\n let position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\n // IE returns 0 when zIndex is not specified\n // other browsers return a string\n // we ignore the case of nested elements with an explicit value of 0\n //
\n let value = parseInt(elem.css(\"zIndex\"), 10);\n if (!isNaN(value) && value !== 0) {\n return value;\n }\n }\n elem = elem.parent();\n }\n\n return 0;\n }\n\n /**\n * Calculate the inheritted background colour.\n *\n * @method calculateInherittedBackgroundColor\n * @param {jQuery} elem The element to calculate colour for\n * @return {String} Calculated background colour\n */\n calculateInherittedBackgroundColor(elem) {\n // Use a fake node to compare each element against.\n let fakeNode = $('
').hide();\n $('body').append(fakeNode);\n let fakeElemColor = fakeNode.css('backgroundColor');\n fakeNode.remove();\n\n elem = $(elem);\n while (elem.length && elem[0] !== document) {\n let color = elem.css('backgroundColor');\n if (color !== fakeElemColor) {\n return color;\n }\n elem = elem.parent();\n }\n\n return null;\n }\n\n /**\n * Calculate the inheritted position.\n *\n * @method calculatePosition\n * @param {jQuery} elem The element to calculate position for\n * @return {String} Calculated position\n */\n calculatePosition(elem) {\n elem = $(elem);\n while (elem.length && elem[0] !== document) {\n let position = elem.css('position');\n if (position !== 'static') {\n return position;\n }\n elem = elem.parent();\n }\n\n return null;\n }\n\n /**\n * Perform accessibility changes for step shown.\n *\n * This will add aria-hidden=\"true\" to all siblings and parent siblings.\n *\n * @method accessibilityShow\n */\n accessibilityShow() {\n let stateHolder = 'data-has-hidden';\n let attrName = 'aria-hidden';\n let hideFunction = function(child) {\n let flexitourRole = child.data('flexitour');\n if (flexitourRole) {\n switch (flexitourRole) {\n case 'container':\n case 'target':\n return;\n }\n }\n\n let hidden = child.attr(attrName);\n if (!hidden) {\n child.attr(stateHolder, true);\n Aria.hide(child);\n }\n };\n\n this.currentStepNode.siblings().each(function(index, node) {\n hideFunction($(node));\n });\n this.currentStepNode.parentsUntil('body').siblings().each(function(index, node) {\n hideFunction($(node));\n });\n }\n\n /**\n * Perform accessibility changes for step hidden.\n *\n * This will remove any newly added aria-hidden=\"true\".\n *\n * @method accessibilityHide\n */\n accessibilityHide() {\n let stateHolder = 'data-has-hidden';\n let showFunction = function(child) {\n let hidden = child.attr(stateHolder);\n if (typeof hidden !== 'undefined') {\n child.removeAttr(stateHolder);\n Aria.unhide(child);\n }\n };\n\n $('[' + stateHolder + ']').each(function(index, node) {\n showFunction($(node));\n });\n }\n}\n"],"file":"tour.min.js"} \ No newline at end of file +{"version":3,"sources":["../src/tour.js"],"names":["Tour","config","init","eventHandlers","reset","originalConfiguration","configure","apply","arguments","storage","window","sessionStorage","storageKey","tourName","e","hide","resetStepListeners","steps","currentStepNumber","eventName","forEach","handler","addEventHandler","resetStepDefaults","template","templateContent","checkMinimumRequirements","Error","length","loadOriginalConfiguration","stepDefaults","setStepDefaults","$","extend","element","placement","delay","moveOnClick","moveAfterTime","orphan","direction","parseInt","stepNumber","setItem","code","DOMException","QUOTA_EXCEEDED_ERR","removeItem","getCurrentStepNumber","nextStepNumber","isStepPotentiallyVisible","getStepConfig","previousStepNumber","getNextStepNumber","getPreviousStepNumber","stepConfig","isStepActuallyVisible","target","getStepTarget","is","gotoStep","endTour","_gotoStep","delayed","setTimeout","bind","fn","fireEventHandlers","renderStep","normalizeStepConfig","reflex","moveAfterClick","content","body","attachTo","attachPoint","first","data","thisEvent","call","push","listeners","node","currentStepNode","args","proxy","next","previous","handleKeyDown","targetNode","parents","listener","on","off","currentStepConfig","setCurrentStepNumber","getTemplateContent","find","html","title","isFirstStep","prop","isLastStep","removeClass","addClass","attr","addStepToPage","processStepListeners","clone","animationTarget","stop","zIndex","calculateZIndex","css","positionBackdrop","document","append","top","left","animate","scrollTop","calculateScrollTop","promise","then","positionStep","revealStep","catch","isOrphan","offset","calculateStepPositionInPage","currentStepPopper","Popper","removeOnDestroy","arrowElement","modifiers","enabled","applyStyle","onLoad","fadeIn","announceStep","focus","stepId","bodyRegion","headerRegion","accessibilityShow","tabbableSelector","keyCode","hasBackdrop","activeElement","stepTarget","tabbableNodes","dialogContainer","currentIndex","filter","index","has","each","nextIndex","nextNode","focusRelevant","shiftKey","closest","last","preventDefault","startAt","storageStartValue","getItem","storageStartAt","startTour","previousTarget","transition","destroy","fadeTime","remove","removeAttr","fadeOut","currentStepElement","accessibilityHide","viewportHeight","height","Math","max","min","ceil","stepHeight","viewportWidth","width","stepWidth","recalculatePlacement","flipBehavior","flip","behaviour","arrow","onCreate","recalculateArrowPosition","onUpdate","split","isVertical","indexOf","instance","popper","querySelector","stepElement","arrowHeight","parseFloat","getComputedStyle","arrowOffset","popperHeight","popperOffset","popperBorderWidth","popperBorderRadiusWidth","arrowPos","maxPos","minPos","newArrowPos","arrowWidth","popperWidth","background","widthContent","targetOffsetLeft","targetOffsetRight","documentElement","clientWidth","backdrop","insertAfter","buffer","colorNode","outerWidth","outerHeight","backgroundColor","calculateInherittedBackgroundColor","targetRadius","targetPosition","calculatePosition","fader","opacity","elem","position","value","isNaN","parent","fakeNode","fakeElemColor","color","hideFunction","child","flexitourRole","hidden","Aria","siblings","parentsUntil","showFunction","unhide"],"mappings":"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","sourcesContent":["// This file is part of Moodle - http://moodle.org/\n//\n// Moodle is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// Moodle is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with Moodle. If not, see .\n\n/**\n * Manage user tours in Moodle.\n *\n * @module tool_usertours/tour\n * @copyright 2018 Andrew Nicols \n * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later\n */\n\nimport $ from 'jquery';\nimport * as Aria from 'core/aria';\nimport Popper from 'core/popper';\n\n/**\n * A Tour.\n *\n * @class\n */\nexport default class Tour {\n /**\n * @param {object} config The configuration object.\n */\n constructor(config) {\n this.init(config);\n }\n\n /**\n * Initialise the tour.\n *\n * @method init\n * @param {Object} config The configuration object.\n * @chainable\n * @return {Object} this.\n */\n init(config) {\n // Unset all handlers.\n this.eventHandlers = {};\n\n // Reset the current tour states.\n this.reset();\n\n // Store the initial configuration.\n this.originalConfiguration = config || {};\n\n // Apply configuration.\n this.configure.apply(this, arguments);\n\n try {\n this.storage = window.sessionStorage;\n this.storageKey = 'tourstate_' + this.tourName;\n } catch (e) {\n this.storage = false;\n this.storageKey = '';\n }\n\n return this;\n }\n\n /**\n * Reset the current tour state.\n *\n * @method reset\n * @chainable\n * @return {Object} this.\n */\n reset() {\n // Hide the current step.\n this.hide();\n\n // Unset all handlers.\n this.eventHandlers = [];\n\n // Unset all listeners.\n this.resetStepListeners();\n\n // Unset the original configuration.\n this.originalConfiguration = {};\n\n // Reset the current step number and list of steps.\n this.steps = [];\n\n // Reset the current step number.\n this.currentStepNumber = 0;\n\n return this;\n }\n\n /**\n * Prepare tour configuration.\n *\n * @method configure\n * @param {Object} config The configuration object.\n * @chainable\n * @return {Object} this.\n */\n configure(config) {\n if (typeof config === 'object') {\n // Tour name.\n if (typeof config.tourName !== 'undefined') {\n this.tourName = config.tourName;\n }\n\n // Set up eventHandlers.\n if (config.eventHandlers) {\n for (let eventName in config.eventHandlers) {\n config.eventHandlers[eventName].forEach(function(handler) {\n this.addEventHandler(eventName, handler);\n }, this);\n }\n }\n\n // Reset the step configuration.\n this.resetStepDefaults(true);\n\n // Configure the steps.\n if (typeof config.steps === 'object') {\n this.steps = config.steps;\n }\n\n if (typeof config.template !== 'undefined') {\n this.templateContent = config.template;\n }\n }\n\n // Check that we have enough to start the tour.\n this.checkMinimumRequirements();\n\n return this;\n }\n\n /**\n * Check that the configuration meets the minimum requirements.\n *\n * @method checkMinimumRequirements\n */\n checkMinimumRequirements() {\n // Need a tourName.\n if (!this.tourName) {\n throw new Error(\"Tour Name required\");\n }\n\n // Need a minimum of one step.\n if (!this.steps || !this.steps.length) {\n throw new Error(\"Steps must be specified\");\n }\n }\n\n /**\n * Reset step default configuration.\n *\n * @method resetStepDefaults\n * @param {Boolean} loadOriginalConfiguration Whether to load the original configuration supplied with the Tour.\n * @chainable\n * @return {Object} this.\n */\n resetStepDefaults(loadOriginalConfiguration) {\n if (typeof loadOriginalConfiguration === 'undefined') {\n loadOriginalConfiguration = true;\n }\n\n this.stepDefaults = {};\n if (!loadOriginalConfiguration || typeof this.originalConfiguration.stepDefaults === 'undefined') {\n this.setStepDefaults({});\n } else {\n this.setStepDefaults(this.originalConfiguration.stepDefaults);\n }\n\n return this;\n }\n\n /**\n * Set the step defaults.\n *\n * @method setStepDefaults\n * @param {Object} stepDefaults The step defaults to apply to all steps\n * @chainable\n * @return {Object} this.\n */\n setStepDefaults(stepDefaults) {\n if (!this.stepDefaults) {\n this.stepDefaults = {};\n }\n $.extend(\n this.stepDefaults,\n {\n element: '',\n placement: 'top',\n delay: 0,\n moveOnClick: false,\n moveAfterTime: 0,\n orphan: false,\n direction: 1,\n },\n stepDefaults\n );\n\n return this;\n }\n\n /**\n * Retrieve the current step number.\n *\n * @method getCurrentStepNumber\n * @return {Integer} The current step number\n */\n getCurrentStepNumber() {\n return parseInt(this.currentStepNumber, 10);\n }\n\n /**\n * Store the current step number.\n *\n * @method setCurrentStepNumber\n * @param {Integer} stepNumber The current step number\n * @chainable\n */\n setCurrentStepNumber(stepNumber) {\n this.currentStepNumber = stepNumber;\n if (this.storage) {\n try {\n this.storage.setItem(this.storageKey, stepNumber);\n } catch (e) {\n if (e.code === DOMException.QUOTA_EXCEEDED_ERR) {\n this.storage.removeItem(this.storageKey);\n }\n }\n }\n }\n\n /**\n * Get the next step number after the currently displayed step.\n *\n * @method getNextStepNumber\n * @param {Integer} stepNumber The current step number\n * @return {Integer} The next step number to display\n */\n getNextStepNumber(stepNumber) {\n if (typeof stepNumber === 'undefined') {\n stepNumber = this.getCurrentStepNumber();\n }\n let nextStepNumber = stepNumber + 1;\n\n // Keep checking the remaining steps.\n while (nextStepNumber <= this.steps.length) {\n if (this.isStepPotentiallyVisible(this.getStepConfig(nextStepNumber))) {\n return nextStepNumber;\n }\n nextStepNumber++;\n }\n\n return null;\n }\n\n /**\n * Get the previous step number before the currently displayed step.\n *\n * @method getPreviousStepNumber\n * @param {Integer} stepNumber The current step number\n * @return {Integer} The previous step number to display\n */\n getPreviousStepNumber(stepNumber) {\n if (typeof stepNumber === 'undefined') {\n stepNumber = this.getCurrentStepNumber();\n }\n let previousStepNumber = stepNumber - 1;\n\n // Keep checking the remaining steps.\n while (previousStepNumber >= 0) {\n if (this.isStepPotentiallyVisible(this.getStepConfig(previousStepNumber))) {\n return previousStepNumber;\n }\n previousStepNumber--;\n }\n\n return null;\n }\n\n /**\n * Is the step the final step number?\n *\n * @method isLastStep\n * @param {Integer} stepNumber Step number to test\n * @return {Boolean} Whether the step is the final step\n */\n isLastStep(stepNumber) {\n let nextStepNumber = this.getNextStepNumber(stepNumber);\n\n return nextStepNumber === null;\n }\n\n /**\n * Is the step the first step number?\n *\n * @method isFirstStep\n * @param {Integer} stepNumber Step number to test\n * @return {Boolean} Whether the step is the first step\n */\n isFirstStep(stepNumber) {\n let previousStepNumber = this.getPreviousStepNumber(stepNumber);\n\n return previousStepNumber === null;\n }\n\n /**\n * Is this step potentially visible?\n *\n * @method isStepPotentiallyVisible\n * @param {Object} stepConfig The step configuration to normalise\n * @return {Boolean} Whether the step is the potentially visible\n */\n isStepPotentiallyVisible(stepConfig) {\n if (!stepConfig) {\n // Without step config, there can be no step.\n return false;\n }\n\n if (this.isStepActuallyVisible(stepConfig)) {\n // If it is actually visible, it is already potentially visible.\n return true;\n }\n\n if (typeof stepConfig.orphan !== 'undefined' && stepConfig.orphan) {\n // Orphan steps have no target. They are always visible.\n return true;\n }\n\n if (typeof stepConfig.delay !== 'undefined' && stepConfig.delay) {\n // Only return true if the activated has not been used yet.\n return true;\n }\n\n // Not theoretically, or actually visible.\n return false;\n }\n\n /**\n * Is this step actually visible?\n *\n * @method isStepActuallyVisible\n * @param {Object} stepConfig The step configuration to normalise\n * @return {Boolean} Whether the step is actually visible\n */\n isStepActuallyVisible(stepConfig) {\n if (!stepConfig) {\n // Without step config, there can be no step.\n return false;\n }\n\n let target = this.getStepTarget(stepConfig);\n if (target && target.length && target.is(':visible')) {\n // Without a target, there can be no step.\n return !!target.length;\n }\n\n return false;\n }\n\n /**\n * Go to the next step in the tour.\n *\n * @method next\n * @chainable\n * @return {Object} this.\n */\n next() {\n return this.gotoStep(this.getNextStepNumber());\n }\n\n /**\n * Go to the previous step in the tour.\n *\n * @method previous\n * @chainable\n * @return {Object} this.\n */\n previous() {\n return this.gotoStep(this.getPreviousStepNumber(), -1);\n }\n\n /**\n * Go to the specified step in the tour.\n *\n * @method gotoStep\n * @param {Integer} stepNumber The step number to display\n * @param {Integer} direction Next or previous step\n * @chainable\n * @return {Object} this.\n */\n gotoStep(stepNumber, direction) {\n if (stepNumber < 0) {\n return this.endTour();\n }\n\n let stepConfig = this.getStepConfig(stepNumber);\n if (stepConfig === null) {\n return this.endTour();\n }\n\n return this._gotoStep(stepConfig, direction);\n }\n\n _gotoStep(stepConfig, direction) {\n if (!stepConfig) {\n return this.endTour();\n }\n\n if (typeof stepConfig.delay !== 'undefined' && stepConfig.delay && !stepConfig.delayed) {\n stepConfig.delayed = true;\n window.setTimeout(this._gotoStep.bind(this), stepConfig.delay, stepConfig, direction);\n\n return this;\n } else if (!stepConfig.orphan && !this.isStepActuallyVisible(stepConfig)) {\n let fn = direction == -1 ? 'getPreviousStepNumber' : 'getNextStepNumber';\n return this.gotoStep(this[fn](stepConfig.stepNumber), direction);\n }\n\n this.hide();\n\n this.fireEventHandlers('beforeRender', stepConfig);\n this.renderStep(stepConfig);\n this.fireEventHandlers('afterRender', stepConfig);\n\n return this;\n }\n\n /**\n * Fetch the normalised step configuration for the specified step number.\n *\n * @method getStepConfig\n * @param {Integer} stepNumber The step number to fetch configuration for\n * @return {Object} The step configuration\n */\n getStepConfig(stepNumber) {\n if (stepNumber === null || stepNumber < 0 || stepNumber >= this.steps.length) {\n return null;\n }\n\n // Normalise the step configuration.\n let stepConfig = this.normalizeStepConfig(this.steps[stepNumber]);\n\n // Add the stepNumber to the stepConfig.\n stepConfig = $.extend(stepConfig, {stepNumber: stepNumber});\n\n return stepConfig;\n }\n\n /**\n * Normalise the supplied step configuration.\n *\n * @method normalizeStepConfig\n * @param {Object} stepConfig The step configuration to normalise\n * @return {Object} The normalised step configuration\n */\n normalizeStepConfig(stepConfig) {\n\n if (typeof stepConfig.reflex !== 'undefined' && typeof stepConfig.moveAfterClick === 'undefined') {\n stepConfig.moveAfterClick = stepConfig.reflex;\n }\n\n if (typeof stepConfig.element !== 'undefined' && typeof stepConfig.target === 'undefined') {\n stepConfig.target = stepConfig.element;\n }\n\n if (typeof stepConfig.content !== 'undefined' && typeof stepConfig.body === 'undefined') {\n stepConfig.body = stepConfig.content;\n }\n\n stepConfig = $.extend({}, this.stepDefaults, stepConfig);\n\n stepConfig = $.extend({}, {\n attachTo: stepConfig.target,\n attachPoint: 'after',\n }, stepConfig);\n\n if (stepConfig.attachTo) {\n stepConfig.attachTo = $(stepConfig.attachTo).first();\n }\n\n return stepConfig;\n }\n\n /**\n * Fetch the actual step target from the selector.\n *\n * This should not be called until after any delay has completed.\n *\n * @method getStepTarget\n * @param {Object} stepConfig The step configuration\n * @return {$}\n */\n getStepTarget(stepConfig) {\n if (stepConfig.target) {\n return $(stepConfig.target);\n }\n\n return null;\n }\n\n /**\n * Fire any event handlers for the specified event.\n *\n * @param {String} eventName The name of the event to handle\n * @param {Object} data Any data to pass to the event\n * @chainable\n * @return {Object} this.\n */\n fireEventHandlers(eventName, data) {\n if (typeof this.eventHandlers[eventName] === 'undefined') {\n return this;\n }\n\n this.eventHandlers[eventName].forEach(function(thisEvent) {\n thisEvent.call(this, data);\n }, this);\n\n return this;\n }\n\n /**\n * @method addEventHandler\n * @param {string} eventName The name of the event to listen for\n * @param {function} handler The event handler to call\n * @return {Object} this.\n */\n addEventHandler(eventName, handler) {\n if (typeof this.eventHandlers[eventName] === 'undefined') {\n this.eventHandlers[eventName] = [];\n }\n\n this.eventHandlers[eventName].push(handler);\n\n return this;\n }\n\n /**\n * Process listeners for the step being shown.\n *\n * @method processStepListeners\n * @param {object} stepConfig The configuration for the step\n * @chainable\n * @return {Object} this.\n */\n processStepListeners(stepConfig) {\n this.listeners.push(\n // Next/Previous buttons.\n {\n node: this.currentStepNode,\n args: ['click', '[data-role=\"next\"]', $.proxy(this.next, this)]\n }, {\n node: this.currentStepNode,\n args: ['click', '[data-role=\"previous\"]', $.proxy(this.previous, this)]\n },\n\n // Close and end tour buttons.\n {\n node: this.currentStepNode,\n args: ['click', '[data-role=\"end\"]', $.proxy(this.endTour, this)]\n },\n\n // Click backdrop and hide tour.\n {\n node: $('[data-flexitour=\"backdrop\"]'),\n args: ['click', $.proxy(this.hide, this)]\n },\n\n // Keypresses.\n {\n node: $('body'),\n args: ['keydown', $.proxy(this.handleKeyDown, this)]\n });\n\n if (stepConfig.moveOnClick) {\n var targetNode = this.getStepTarget(stepConfig);\n this.listeners.push({\n node: targetNode,\n args: ['click', $.proxy(function(e) {\n if ($(e.target).parents('[data-flexitour=\"container\"]').length === 0) {\n // Ignore clicks when they are in the flexitour.\n window.setTimeout($.proxy(this.next, this), 500);\n }\n }, this)]\n });\n }\n\n this.listeners.forEach(function(listener) {\n listener.node.on.apply(listener.node, listener.args);\n });\n\n return this;\n }\n\n /**\n * Reset step listeners.\n *\n * @method resetStepListeners\n * @chainable\n * @return {Object} this.\n */\n resetStepListeners() {\n // Stop listening to all external handlers.\n if (this.listeners) {\n this.listeners.forEach(function(listener) {\n listener.node.off.apply(listener.node, listener.args);\n });\n }\n this.listeners = [];\n\n return this;\n }\n\n /**\n * The standard step renderer.\n *\n * @method renderStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n renderStep(stepConfig) {\n // Store the current step configuration for later.\n this.currentStepConfig = stepConfig;\n this.setCurrentStepNumber(stepConfig.stepNumber);\n\n // Fetch the template and convert it to a $ object.\n let template = $(this.getTemplateContent());\n\n // Title.\n template.find('[data-placeholder=\"title\"]')\n .html(stepConfig.title);\n\n // Body.\n template.find('[data-placeholder=\"body\"]')\n .html(stepConfig.body);\n\n // Is this the first step?\n if (this.isFirstStep(stepConfig.stepNumber)) {\n template.find('[data-role=\"previous\"]').hide();\n } else {\n template.find('[data-role=\"previous\"]').prop('disabled', false);\n }\n\n // Is this the final step?\n if (this.isLastStep(stepConfig.stepNumber)) {\n template.find('[data-role=\"next\"]').hide();\n template.find('[data-role=\"end\"]').removeClass(\"btn-secondary\").addClass(\"btn-primary\");\n } else {\n template.find('[data-role=\"next\"]').prop('disabled', false);\n }\n\n template.find('[data-role=\"previous\"]').attr('role', 'button');\n template.find('[data-role=\"next\"]').attr('role', 'button');\n template.find('[data-role=\"end\"]').attr('role', 'button');\n\n // Replace the template with the updated version.\n stepConfig.template = template;\n\n // Add to the page.\n this.addStepToPage(stepConfig);\n\n // Process step listeners after adding to the page.\n // This uses the currentNode.\n this.processStepListeners(stepConfig);\n\n return this;\n }\n\n /**\n * Getter for the template content.\n *\n * @method getTemplateContent\n * @return {$}\n */\n getTemplateContent() {\n return $(this.templateContent).clone();\n }\n\n /**\n * Helper to add a step to the page.\n *\n * @method addStepToPage\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n addStepToPage(stepConfig) {\n // Create the stepNode from the template data.\n let currentStepNode = $('')\n .html(stepConfig.template)\n .hide();\n\n // The scroll animation occurs on the body or html.\n let animationTarget = $('body, html')\n .stop(true, true);\n\n if (this.isStepActuallyVisible(stepConfig)) {\n let targetNode = this.getStepTarget(stepConfig);\n\n targetNode.data('flexitour', 'target');\n\n let zIndex = this.calculateZIndex(targetNode);\n if (zIndex) {\n stepConfig.zIndex = zIndex + 1;\n }\n\n if (stepConfig.zIndex) {\n currentStepNode.css('zIndex', stepConfig.zIndex + 1);\n }\n\n // Add the backdrop.\n this.positionBackdrop(stepConfig);\n\n $(document.body).append(currentStepNode);\n this.currentStepNode = currentStepNode;\n\n // Ensure that the step node is positioned.\n // Some situations mean that the value is not properly calculated without this step.\n this.currentStepNode.css({\n top: 0,\n left: 0,\n });\n\n animationTarget\n .animate({\n scrollTop: this.calculateScrollTop(stepConfig),\n }).promise().then(function() {\n this.positionStep(stepConfig);\n this.revealStep(stepConfig);\n return;\n }.bind(this))\n .catch(function() {\n // Silently fail.\n });\n\n } else if (stepConfig.orphan) {\n stepConfig.isOrphan = true;\n\n // This will be appended to the body instead.\n stepConfig.attachTo = $('body').first();\n stepConfig.attachPoint = 'append';\n\n // Add the backdrop.\n this.positionBackdrop(stepConfig);\n\n // This is an orphaned step.\n currentStepNode.addClass('orphan');\n\n // It lives in the body.\n $(document.body).append(currentStepNode);\n this.currentStepNode = currentStepNode;\n\n this.currentStepNode.offset(this.calculateStepPositionInPage());\n this.currentStepNode.css('position', 'fixed');\n\n this.currentStepPopper = new Popper(\n $('body'),\n this.currentStepNode[0], {\n removeOnDestroy: true,\n placement: stepConfig.placement + '-start',\n arrowElement: '[data-role=\"arrow\"]',\n // Empty the modifiers. We've already placed the step and don't want it moved.\n modifiers: {\n hide: {\n enabled: false,\n },\n applyStyle: {\n onLoad: null,\n enabled: false,\n },\n }\n }\n );\n\n this.revealStep(stepConfig);\n }\n\n return this;\n }\n\n /**\n * Make the given step visible.\n *\n * @method revealStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n revealStep(stepConfig) {\n // Fade the step in.\n this.currentStepNode.fadeIn('', $.proxy(function() {\n // Announce via ARIA.\n this.announceStep(stepConfig);\n\n // Focus on the current step Node.\n this.currentStepNode.focus();\n window.setTimeout($.proxy(function() {\n // After a brief delay, focus again.\n // There seems to be an issue with Jaws where it only reads the dialogue title initially.\n // This second focus helps it to read the full dialogue.\n if (this.currentStepNode) {\n this.currentStepNode.focus();\n }\n }, this), 100);\n\n }, this));\n\n return this;\n }\n\n /**\n * Helper to announce the step on the page.\n *\n * @method announceStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n announceStep(stepConfig) {\n // Setup the step Dialogue as per:\n // * https://www.w3.org/TR/wai-aria-practices/#dialog_nonmodal\n // * https://www.w3.org/TR/wai-aria-practices/#dialog_modal\n\n // Generate an ID for the current step node.\n let stepId = 'tour-step-' + this.tourName + '-' + stepConfig.stepNumber;\n this.currentStepNode.attr('id', stepId);\n\n let bodyRegion = this.currentStepNode.find('[data-placeholder=\"body\"]').first();\n bodyRegion.attr('id', stepId + '-body');\n bodyRegion.attr('role', 'document');\n\n let headerRegion = this.currentStepNode.find('[data-placeholder=\"title\"]').first();\n headerRegion.attr('id', stepId + '-title');\n headerRegion.attr('aria-labelledby', stepId + '-body');\n\n // Generally, a modal dialog has a role of dialog.\n this.currentStepNode.attr('role', 'dialog');\n this.currentStepNode.attr('tabindex', 0);\n this.currentStepNode.attr('aria-labelledby', stepId + '-title');\n this.currentStepNode.attr('aria-describedby', stepId + '-body');\n\n // Configure ARIA attributes on the target.\n let target = this.getStepTarget(stepConfig);\n if (target) {\n if (!target.attr('tabindex')) {\n target.attr('tabindex', 0);\n }\n\n target\n .data('original-describedby', target.attr('aria-describedby'))\n .attr('aria-describedby', stepId + '-body')\n ;\n }\n\n this.accessibilityShow(stepConfig);\n\n return this;\n }\n\n /**\n * Handle key down events.\n *\n * @method handleKeyDown\n * @param {EventFacade} e\n */\n handleKeyDown(e) {\n let tabbableSelector = 'a[href], link[href], [draggable=true], [contenteditable=true], ';\n tabbableSelector += ':input:enabled, [tabindex], button:enabled';\n switch (e.keyCode) {\n case 27:\n this.endTour();\n break;\n\n // 9 == Tab - trap focus for items with a backdrop.\n case 9:\n // Tab must be handled on key up only in this instance.\n (function() {\n if (!this.currentStepConfig.hasBackdrop) {\n // Trapping tab focus is only handled for those steps with a backdrop.\n return;\n }\n\n // Find all tabbable locations.\n let activeElement = $(document.activeElement);\n let stepTarget = this.getStepTarget(this.currentStepConfig);\n let tabbableNodes = $(tabbableSelector);\n let dialogContainer = $('span[data-flexitour=\"container\"]');\n let currentIndex;\n // Filter out element which is not belong to target section or dialogue.\n if (stepTarget) {\n tabbableNodes = tabbableNodes.filter(function(index, element) {\n return stepTarget !== null\n && (stepTarget.has(element).length\n || dialogContainer.has(element).length\n || stepTarget.is(element)\n || dialogContainer.is(element));\n });\n }\n\n // Find index of focusing element.\n tabbableNodes.each(function(index, element) {\n if (activeElement.is(element)) {\n currentIndex = index;\n return false;\n }\n // Keep looping.\n return true;\n });\n\n let nextIndex;\n let nextNode;\n let focusRelevant;\n if (currentIndex != void 0) {\n let direction = 1;\n if (e.shiftKey) {\n direction = -1;\n }\n nextIndex = currentIndex;\n do {\n nextIndex += direction;\n nextNode = $(tabbableNodes[nextIndex]);\n } while (nextNode.length && nextNode.is(':disabled') || nextNode.is(':hidden'));\n if (nextNode.length) {\n // A new f\n focusRelevant = nextNode.closest(stepTarget).length;\n focusRelevant = focusRelevant || nextNode.closest(this.currentStepNode).length;\n } else {\n // Unable to find the target somehow.\n focusRelevant = false;\n }\n }\n\n if (focusRelevant) {\n nextNode.focus();\n } else {\n if (e.shiftKey) {\n // Focus on the last tabbable node in the step.\n this.currentStepNode.find(tabbableSelector).last().focus();\n } else {\n if (this.currentStepConfig.isOrphan) {\n // Focus on the step - there is no target.\n this.currentStepNode.focus();\n } else {\n // Focus on the step target.\n stepTarget.focus();\n }\n }\n }\n e.preventDefault();\n }).call(this);\n break;\n }\n }\n\n /**\n * Start the current tour.\n *\n * @method startTour\n * @param {Integer} startAt Which step number to start at. If not specified, starts at the last point.\n * @chainable\n * @return {Object} this.\n */\n startTour(startAt) {\n if (this.storage && typeof startAt === 'undefined') {\n let storageStartValue = this.storage.getItem(this.storageKey);\n if (storageStartValue) {\n let storageStartAt = parseInt(storageStartValue, 10);\n if (storageStartAt <= this.steps.length) {\n startAt = storageStartAt;\n }\n }\n }\n\n if (typeof startAt === 'undefined') {\n startAt = this.getCurrentStepNumber();\n }\n\n this.fireEventHandlers('beforeStart', startAt);\n this.gotoStep(startAt);\n this.fireEventHandlers('afterStart', startAt);\n\n return this;\n }\n\n /**\n * Restart the tour from the beginning, resetting the completionlag.\n *\n * @method restartTour\n * @chainable\n * @return {Object} this.\n */\n restartTour() {\n return this.startTour(0);\n }\n\n /**\n * End the current tour.\n *\n * @method endTour\n * @chainable\n * @return {Object} this.\n */\n endTour() {\n this.fireEventHandlers('beforeEnd');\n\n if (this.currentStepConfig) {\n let previousTarget = this.getStepTarget(this.currentStepConfig);\n if (previousTarget) {\n if (!previousTarget.attr('tabindex')) {\n previousTarget.attr('tabindex', '-1');\n }\n previousTarget.focus();\n }\n }\n\n this.hide(true);\n\n this.fireEventHandlers('afterEnd');\n\n return this;\n }\n\n /**\n * Hide any currently visible steps.\n *\n * @method hide\n * @param {Bool} transition Animate the visibility change\n * @chainable\n * @return {Object} this.\n */\n hide(transition) {\n this.fireEventHandlers('beforeHide');\n\n if (this.currentStepNode && this.currentStepNode.length) {\n this.currentStepNode.hide();\n if (this.currentStepPopper) {\n this.currentStepPopper.destroy();\n }\n }\n\n // Restore original target configuration.\n if (this.currentStepConfig) {\n let target = this.getStepTarget(this.currentStepConfig);\n if (target) {\n if (target.data('original-labelledby')) {\n target.attr('aria-labelledby', target.data('original-labelledby'));\n }\n\n if (target.data('original-describedby')) {\n target.attr('aria-describedby', target.data('original-describedby'));\n }\n\n if (target.data('original-tabindex')) {\n target.attr('tabindex', target.data('tabindex'));\n }\n }\n\n // Clear the step configuration.\n this.currentStepConfig = null;\n }\n\n let fadeTime = 0;\n if (transition) {\n fadeTime = 400;\n }\n\n // Remove the backdrop features.\n $('[data-flexitour=\"step-background\"]').remove();\n $('[data-flexitour=\"step-backdrop\"]').removeAttr('data-flexitour');\n $('[data-flexitour=\"backdrop\"]').fadeOut(fadeTime, function() {\n $(this).remove();\n });\n\n // Remove aria-describedby and tabindex attributes.\n if (this.currentStepNode && this.currentStepNode.length) {\n let stepId = this.currentStepNode.attr('id');\n if (stepId) {\n let currentStepElement = '[aria-describedby=\"' + stepId + '-body\"]';\n $(currentStepElement).removeAttr('tabindex');\n $(currentStepElement).removeAttr('aria-describedby');\n }\n }\n\n // Reset the listeners.\n this.resetStepListeners();\n\n this.accessibilityHide();\n\n this.fireEventHandlers('afterHide');\n\n this.currentStepNode = null;\n this.currentStepPopper = null;\n return this;\n }\n\n /**\n * Show the current steps.\n *\n * @method show\n * @chainable\n * @return {Object} this.\n */\n show() {\n // Show the current step.\n let startAt = this.getCurrentStepNumber();\n\n return this.gotoStep(startAt);\n }\n\n /**\n * Return the current step node.\n *\n * @method getStepContainer\n * @return {jQuery}\n */\n getStepContainer() {\n return $(this.currentStepNode);\n }\n\n /**\n * Calculate scrollTop.\n *\n * @method calculateScrollTop\n * @param {Object} stepConfig The step configuration of the step\n * @return {Number}\n */\n calculateScrollTop(stepConfig) {\n let scrollTop = $(window).scrollTop();\n let viewportHeight = $(window).height();\n let targetNode = this.getStepTarget(stepConfig);\n\n if (stepConfig.placement === 'top') {\n // If the placement is top, center scroll at the top of the target.\n scrollTop = targetNode.offset().top - (viewportHeight / 2);\n } else if (stepConfig.placement === 'bottom') {\n // If the placement is bottom, center scroll at the bottom of the target.\n scrollTop = targetNode.offset().top + targetNode.height() - (viewportHeight / 2);\n } else if (targetNode.height() <= (viewportHeight * 0.8)) {\n // If the placement is left/right, and the target fits in the viewport, centre screen on the target\n scrollTop = targetNode.offset().top - ((viewportHeight - targetNode.height()) / 2);\n } else {\n // If the placement is left/right, and the target is bigger than the viewport, set scrollTop to target.top + buffer\n // and change step attachmentTarget to top+.\n scrollTop = targetNode.offset().top - (viewportHeight * 0.2);\n }\n\n // Never scroll over the top.\n scrollTop = Math.max(0, scrollTop);\n\n // Never scroll beyond the bottom.\n scrollTop = Math.min($(document).height() - viewportHeight, scrollTop);\n\n return Math.ceil(scrollTop);\n }\n\n /**\n * Calculate dialogue position for page middle.\n *\n * @method calculateScrollTop\n * @return {Number}\n */\n calculateStepPositionInPage() {\n let viewportHeight = $(window).height();\n let stepHeight = this.currentStepNode.height();\n\n let viewportWidth = $(window).width();\n let stepWidth = this.currentStepNode.width();\n\n return {\n top: Math.ceil((viewportHeight - stepHeight) / 2),\n left: Math.ceil((viewportWidth - stepWidth) / 2)\n };\n }\n\n /**\n * Position the step on the page.\n *\n * @method positionStep\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n positionStep(stepConfig) {\n let content = this.currentStepNode;\n if (!content || !content.length) {\n // Unable to find the step node.\n return this;\n }\n\n stepConfig.placement = this.recalculatePlacement(stepConfig);\n let flipBehavior;\n switch (stepConfig.placement) {\n case 'left':\n flipBehavior = ['left', 'right', 'top', 'bottom'];\n break;\n case 'right':\n flipBehavior = ['right', 'left', 'top', 'bottom'];\n break;\n case 'top':\n flipBehavior = ['top', 'bottom', 'right', 'left'];\n break;\n case 'bottom':\n flipBehavior = ['bottom', 'top', 'right', 'left'];\n break;\n default:\n flipBehavior = 'flip';\n break;\n }\n\n let target = this.getStepTarget(stepConfig);\n var config = {\n placement: stepConfig.placement + '-start',\n removeOnDestroy: true,\n modifiers: {\n flip: {\n behaviour: flipBehavior,\n },\n arrow: {\n element: '[data-role=\"arrow\"]',\n },\n },\n onCreate: function(data) {\n recalculateArrowPosition(data);\n },\n onUpdate: function(data) {\n recalculateArrowPosition(data);\n },\n };\n\n let recalculateArrowPosition = function(data) {\n let placement = data.placement.split('-')[0];\n const isVertical = ['left', 'right'].indexOf(placement) !== -1;\n const arrowElement = data.instance.popper.querySelector('[data-role=\"arrow\"]');\n const stepElement = $(data.instance.popper.querySelector('[data-role=\"flexitour-step\"]'));\n if (isVertical) {\n let arrowHeight = parseFloat(window.getComputedStyle(arrowElement).height);\n let arrowOffset = parseFloat(window.getComputedStyle(arrowElement).top);\n let popperHeight = parseFloat(window.getComputedStyle(data.instance.popper).height);\n let popperOffset = parseFloat(window.getComputedStyle(data.instance.popper).top);\n let popperBorderWidth = parseFloat(stepElement.css('borderTopWidth'));\n let popperBorderRadiusWidth = parseFloat(stepElement.css('borderTopLeftRadius')) * 2;\n let arrowPos = arrowOffset + (arrowHeight / 2);\n let maxPos = popperHeight + popperOffset - popperBorderWidth - popperBorderRadiusWidth;\n let minPos = popperOffset + popperBorderWidth + popperBorderRadiusWidth;\n if (arrowPos >= maxPos || arrowPos <= minPos) {\n let newArrowPos = 0;\n if (arrowPos > (popperHeight / 2)) {\n newArrowPos = maxPos - arrowHeight;\n } else {\n newArrowPos = minPos + arrowHeight;\n }\n $(arrowElement).css('top', newArrowPos);\n }\n } else {\n let arrowWidth = parseFloat(window.getComputedStyle(arrowElement).width);\n let arrowOffset = parseFloat(window.getComputedStyle(arrowElement).left);\n let popperWidth = parseFloat(window.getComputedStyle(data.instance.popper).width);\n let popperOffset = parseFloat(window.getComputedStyle(data.instance.popper).left);\n let popperBorderWidth = parseFloat(stepElement.css('borderTopWidth'));\n let popperBorderRadiusWidth = parseFloat(stepElement.css('borderTopLeftRadius')) * 2;\n let arrowPos = arrowOffset + (arrowWidth / 2);\n let maxPos = popperWidth + popperOffset - popperBorderWidth - popperBorderRadiusWidth;\n let minPos = popperOffset + popperBorderWidth + popperBorderRadiusWidth;\n if (arrowPos >= maxPos || arrowPos <= minPos) {\n let newArrowPos = 0;\n if (arrowPos > (popperWidth / 2)) {\n newArrowPos = maxPos - arrowWidth;\n } else {\n newArrowPos = minPos + arrowWidth;\n }\n $(arrowElement).css('left', newArrowPos);\n }\n }\n };\n\n let background = $('[data-flexitour=\"step-background\"]');\n if (background.length) {\n target = background;\n }\n this.currentStepPopper = new Popper(target, content[0], config);\n\n return this;\n }\n\n /**\n * For left/right placement, checks that there is room for the step at current window size.\n *\n * If there is not enough room, changes placement to 'top'.\n *\n * @method recalculatePlacement\n * @param {Object} stepConfig The step configuration of the step\n * @return {String} The placement after recalculate\n */\n recalculatePlacement(stepConfig) {\n const buffer = 10;\n const arrowWidth = 16;\n let target = this.getStepTarget(stepConfig);\n let widthContent = this.currentStepNode.width() + arrowWidth;\n let targetOffsetLeft = target.offset().left - buffer;\n let targetOffsetRight = target.offset().left + target.width() + buffer;\n let placement = stepConfig.placement;\n\n if (['left', 'right'].indexOf(placement) !== -1) {\n if ((targetOffsetLeft < (widthContent + buffer)) &&\n ((targetOffsetRight + widthContent + buffer) > document.documentElement.clientWidth)) {\n placement = 'top';\n }\n }\n return placement;\n }\n\n /**\n * Add the backdrop.\n *\n * @method positionBackdrop\n * @param {Object} stepConfig The step configuration of the step\n * @chainable\n * @return {Object} this.\n */\n positionBackdrop(stepConfig) {\n if (stepConfig.backdrop) {\n this.currentStepConfig.hasBackdrop = true;\n let backdrop = $('
');\n\n if (stepConfig.zIndex) {\n if (stepConfig.attachPoint === 'append') {\n stepConfig.attachTo.append(backdrop);\n } else {\n backdrop.insertAfter(stepConfig.attachTo);\n }\n } else {\n $('body').append(backdrop);\n }\n\n if (this.isStepActuallyVisible(stepConfig)) {\n // The step has a visible target.\n // Punch a hole through the backdrop.\n let background = $('
');\n\n let targetNode = this.getStepTarget(stepConfig);\n\n let buffer = 10;\n\n let colorNode = targetNode;\n if (buffer) {\n colorNode = $('body');\n }\n\n background.css({\n width: targetNode.outerWidth() + buffer + buffer,\n height: targetNode.outerHeight() + buffer + buffer,\n left: targetNode.offset().left - buffer,\n top: targetNode.offset().top - buffer,\n backgroundColor: this.calculateInherittedBackgroundColor(colorNode),\n });\n\n if (targetNode.offset().left < buffer) {\n background.css({\n width: targetNode.outerWidth() + targetNode.offset().left + buffer,\n left: targetNode.offset().left,\n });\n }\n\n if (targetNode.offset().top < buffer) {\n background.css({\n height: targetNode.outerHeight() + targetNode.offset().top + buffer,\n top: targetNode.offset().top,\n });\n }\n\n let targetRadius = targetNode.css('borderRadius');\n if (targetRadius && targetRadius !== $('body').css('borderRadius')) {\n background.css('borderRadius', targetRadius);\n }\n\n let targetPosition = this.calculatePosition(targetNode);\n if (targetPosition === 'fixed') {\n background.css('top', 0);\n } else if (targetPosition === 'absolute') {\n background.css('position', 'fixed');\n }\n\n let fader = background.clone();\n fader.css({\n backgroundColor: backdrop.css('backgroundColor'),\n opacity: backdrop.css('opacity'),\n });\n fader.attr('data-flexitour', 'step-background-fader');\n\n if (stepConfig.zIndex) {\n if (stepConfig.attachPoint === 'append') {\n stepConfig.attachTo.append(background);\n } else {\n fader.insertAfter(stepConfig.attachTo);\n background.insertAfter(stepConfig.attachTo);\n }\n } else {\n $('body').append(fader);\n $('body').append(background);\n }\n\n // Add the backdrop data to the actual target.\n // This is the part which actually does the work.\n targetNode.attr('data-flexitour', 'step-backdrop');\n\n if (stepConfig.zIndex) {\n backdrop.css('zIndex', stepConfig.zIndex);\n background.css('zIndex', stepConfig.zIndex + 1);\n targetNode.css('zIndex', stepConfig.zIndex + 2);\n }\n\n fader.fadeOut('2000', function() {\n $(this).remove();\n });\n }\n }\n return this;\n }\n\n /**\n * Calculate the inheritted z-index.\n *\n * @method calculateZIndex\n * @param {jQuery} elem The element to calculate z-index for\n * @return {Number} Calculated z-index\n */\n calculateZIndex(elem) {\n elem = $(elem);\n while (elem.length && elem[0] !== document) {\n // Ignore z-index if position is set to a value where z-index is ignored by the browser\n // This makes behavior of this function consistent across browsers\n // WebKit always returns auto if the element is positioned.\n let position = elem.css(\"position\");\n if (position === \"absolute\" || position === \"relative\" || position === \"fixed\") {\n // IE returns 0 when zIndex is not specified\n // other browsers return a string\n // we ignore the case of nested elements with an explicit value of 0\n //
\n let value = parseInt(elem.css(\"zIndex\"), 10);\n if (!isNaN(value) && value !== 0) {\n return value;\n }\n }\n elem = elem.parent();\n }\n\n return 0;\n }\n\n /**\n * Calculate the inheritted background colour.\n *\n * @method calculateInherittedBackgroundColor\n * @param {jQuery} elem The element to calculate colour for\n * @return {String} Calculated background colour\n */\n calculateInherittedBackgroundColor(elem) {\n // Use a fake node to compare each element against.\n let fakeNode = $('
').hide();\n $('body').append(fakeNode);\n let fakeElemColor = fakeNode.css('backgroundColor');\n fakeNode.remove();\n\n elem = $(elem);\n while (elem.length && elem[0] !== document) {\n let color = elem.css('backgroundColor');\n if (color !== fakeElemColor) {\n return color;\n }\n elem = elem.parent();\n }\n\n return null;\n }\n\n /**\n * Calculate the inheritted position.\n *\n * @method calculatePosition\n * @param {jQuery} elem The element to calculate position for\n * @return {String} Calculated position\n */\n calculatePosition(elem) {\n elem = $(elem);\n while (elem.length && elem[0] !== document) {\n let position = elem.css('position');\n if (position !== 'static') {\n return position;\n }\n elem = elem.parent();\n }\n\n return null;\n }\n\n /**\n * Perform accessibility changes for step shown.\n *\n * This will add aria-hidden=\"true\" to all siblings and parent siblings.\n *\n * @method accessibilityShow\n */\n accessibilityShow() {\n let stateHolder = 'data-has-hidden';\n let attrName = 'aria-hidden';\n let hideFunction = function(child) {\n let flexitourRole = child.data('flexitour');\n if (flexitourRole) {\n switch (flexitourRole) {\n case 'container':\n case 'target':\n return;\n }\n }\n\n let hidden = child.attr(attrName);\n if (!hidden) {\n child.attr(stateHolder, true);\n Aria.hide(child);\n }\n };\n\n this.currentStepNode.siblings().each(function(index, node) {\n hideFunction($(node));\n });\n this.currentStepNode.parentsUntil('body').siblings().each(function(index, node) {\n hideFunction($(node));\n });\n }\n\n /**\n * Perform accessibility changes for step hidden.\n *\n * This will remove any newly added aria-hidden=\"true\".\n *\n * @method accessibilityHide\n */\n accessibilityHide() {\n let stateHolder = 'data-has-hidden';\n let showFunction = function(child) {\n let hidden = child.attr(stateHolder);\n if (typeof hidden !== 'undefined') {\n child.removeAttr(stateHolder);\n Aria.unhide(child);\n }\n };\n\n $('[' + stateHolder + ']').each(function(index, node) {\n showFunction($(node));\n });\n }\n}\n"],"file":"tour.min.js"} \ No newline at end of file diff --git a/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-min.js b/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-min.js index 3c31ebec29f..06805c7054d 100644 --- a/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-min.js +++ b/availability/condition/completion/yui/build/moodle-availability_completion-form/moodle-availability_completion-form-min.js @@ -1 +1 @@ -YUI.add("moodle-availability_completion-form",function(o,e){M.availability_completion=M.availability_completion||{},M.availability_completion.form=o.Object(M.core_availability.plugin),M.availability_completion.form.initInner=function(e){this.cms=e},M.availability_completion.form.getNode=function(e){var i,l,t,a=' '+M.util.get_string("title","availability_completion")+' ",t=o.Node.create(''+a+""),e.cm!==undefined&&t.one("select[name=cm] > option[value="+e.cm+"]")&&t.one("select[name=cm]").set("value",""+e.cm),e.e!==undefined&&t.one("select[name=e]").set("value",""+e.e),M.availability_completion.form.addedEvents||(M.availability_completion.form.addedEvents=!0,o.one(".availability-field").delegate("change",function(){M.core_availability.form.update()},".availability_completion select")),t},M.availability_completion.form.fillValue=function(e,i){e.cm=parseInt(i.one("select[name=cm]").get("value"),10),e.e=parseInt(i.one("select[name=e]").get("value"),10)},M.availability_completion.form.fillErrors=function(i,e){var l,t=parseInt(e.one("select[name=cm]").get("value"),10);0===t&&i.push("availability_completion:error_selectcmid"),2!==(l=parseInt(e.one("select[name=e]").get("value"),10))&&3!==l||this.cms.forEach(function(e){e.id===t&&null===e.completiongradeitemnumber&&i.push("availability_completion:error_selectcmidpassfail")})}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file +YUI.add("moodle-availability_completion-form",function(o,e){M.availability_completion=M.availability_completion||{},M.availability_completion.form=o.Object(M.core_availability.plugin),M.availability_completion.form.initInner=function(e){this.cms=e},M.availability_completion.form.getNode=function(e){for(var i,l,t=' '+M.util.get_string("title","availability_completion")+' ",l=o.Node.create(''+t+""),e.cm!==undefined&&l.one("select[name=cm] > option[value="+e.cm+"]")&&l.one("select[name=cm]").set("value",""+e.cm),e.e!==undefined&&l.one("select[name=e]").set("value",""+e.e),M.availability_completion.form.addedEvents||(M.availability_completion.form.addedEvents=!0,o.one(".availability-field").delegate("change",function(){M.core_availability.form.update()},".availability_completion select")),l},M.availability_completion.form.fillValue=function(e,i){e.cm=parseInt(i.one("select[name=cm]").get("value"),10),e.e=parseInt(i.one("select[name=e]").get("value"),10)},M.availability_completion.form.fillErrors=function(i,e){var l=parseInt(e.one("select[name=cm]").get("value"),10);0===l&&i.push("availability_completion:error_selectcmid"),2!==(e=parseInt(e.one("select[name=e]").get("value"),10))&&3!==e||this.cms.forEach(function(e){e.id===l&&null===e.completiongradeitemnumber&&i.push("availability_completion:error_selectcmidpassfail")})}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file diff --git a/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-min.js b/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-min.js index 4235144f9b4..04b294fb600 100644 --- a/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-min.js +++ b/availability/condition/date/yui/build/moodle-availability_date-form/moodle-availability_date-form-min.js @@ -1 +1 @@ -YUI.add("moodle-availability_date-form",function(s,e){M.availability_date=M.availability_date||{},M.availability_date.form=s.Object(M.core_availability.plugin),M.availability_date.form.initInner=function(e,a){this.html=e,this.defaultTime=a},M.availability_date.form.getNode=function(e){var a,t,i,l,n=''+M.util.get_string("direction_before","availability_date")+' "+this.html,o=s.Node.create(""+n+"");return e.t!==undefined?(o.setData("time",e.t),o.all("select:not([name=direction])").each(function(e){e.set("disabled",!0)}),a=M.cfg.wwwroot+"/availability/condition/date/ajax.php?action=fromtime&time="+e.t,s.io(a,{on:{success:function(e,a){var t,i,l=s.JSON.parse(a.responseText);for(t in l)(i=o.one("select[name=x\\["+t+"\\]]")).set("value",""+l[t]),i.set("disabled",!1)},failure:function(){window.alert(M.util.get_string("ajaxerror","availability_date"))}}})):o.setData("time",this.defaultTime),e.d!==undefined&&o.one("select[name=direction]").set("value",e.d),M.availability_date.form.addedEvents||(M.availability_date.form.addedEvents=!0,(t=s.one(".availability-field")).delegate("change",function(){M.core_availability.form.update()},".availability_date select[name=direction]"),t.delegate("change",function(){M.availability_date.form.updateTime(this.ancestor("span.availability_date"))},".availability_date select:not([name=direction])")),o.one("a[href=#]")&&(M.form.dateselector.init_single_date_selector(o),i=o.one("select[name=x\\[year\\]]"),l=i.set,i.set=function(e,a){l.call(i,e,a),"selectedIndex"===e&&setTimeout(function(){M.availability_date.form.updateTime(o)},0)}),o},M.availability_date.form.updateTime=function(t){var e=M.cfg.wwwroot+"/availability/condition/date/ajax.php?action=totime&year="+t.one("select[name=x\\[year\\]]").get("value")+"&month="+t.one("select[name=x\\[month\\]]").get("value")+"&day="+t.one("select[name=x\\[day\\]]").get("value")+"&hour="+t.one("select[name=x\\[hour\\]]").get("value")+"&minute="+t.one("select[name=x\\[minute\\]]").get("value");s.io(e,{on:{success:function(e,a){t.setData("time",a.responseText),M.core_availability.form.update()},failure:function(){window.alert(M.util.get_string("ajaxerror","availability_date"))}}})},M.availability_date.form.fillValue=function(e,a){e.d=a.one("select[name=direction]").get("value"),e.t=parseInt(a.getData("time"),10)}},"@VERSION@",{requires:["base","node","event","io","moodle-core_availability-form"]}); \ No newline at end of file +YUI.add("moodle-availability_date-form",function(o,e){M.availability_date=M.availability_date||{},M.availability_date.form=o.Object(M.core_availability.plugin),M.availability_date.form.initInner=function(e,a){this.html=e,this.defaultTime=a},M.availability_date.form.getNode=function(e){var t,i,a=''+M.util.get_string("direction_before","availability_date")+' "+this.html,n=o.Node.create(""+a+"");return e.t!==undefined?(n.setData("time",e.t),n.all("select:not([name=direction])").each(function(e){e.set("disabled",!0)}),a=M.cfg.wwwroot+"/availability/condition/date/ajax.php?action=fromtime&time="+e.t,o.io(a,{on:{success:function(e,a){var t,i,l=o.JSON.parse(a.responseText);for(t in l)(i=n.one("select[name=x\\["+t+"\\]]")).set("value",""+l[t]),i.set("disabled",!1)},failure:function(){window.alert(M.util.get_string("ajaxerror","availability_date"))}}})):n.setData("time",this.defaultTime),e.d!==undefined&&n.one("select[name=direction]").set("value",e.d),M.availability_date.form.addedEvents||(M.availability_date.form.addedEvents=!0,(a=o.one(".availability-field")).delegate("change",function(){M.core_availability.form.update()},".availability_date select[name=direction]"),a.delegate("change",function(){M.availability_date.form.updateTime(this.ancestor("span.availability_date"))},".availability_date select:not([name=direction])")),n.one("a[href=#]")&&(M.form.dateselector.init_single_date_selector(n),t=n.one("select[name=x\\[year\\]]"),i=t.set,t.set=function(e,a){i.call(t,e,a),"selectedIndex"===e&&setTimeout(function(){M.availability_date.form.updateTime(n)},0)}),n},M.availability_date.form.updateTime=function(t){var e=M.cfg.wwwroot+"/availability/condition/date/ajax.php?action=totime&year="+t.one("select[name=x\\[year\\]]").get("value")+"&month="+t.one("select[name=x\\[month\\]]").get("value")+"&day="+t.one("select[name=x\\[day\\]]").get("value")+"&hour="+t.one("select[name=x\\[hour\\]]").get("value")+"&minute="+t.one("select[name=x\\[minute\\]]").get("value");o.io(e,{on:{success:function(e,a){t.setData("time",a.responseText),M.core_availability.form.update()},failure:function(){window.alert(M.util.get_string("ajaxerror","availability_date"))}}})},M.availability_date.form.fillValue=function(e,a){e.d=a.one("select[name=direction]").get("value"),e.t=parseInt(a.getData("time"),10)}},"@VERSION@",{requires:["base","node","event","io","moodle-core_availability-form"]}); \ No newline at end of file diff --git a/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-min.js b/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-min.js index 0e71a081388..2e8fe8c5a40 100644 --- a/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-min.js +++ b/availability/condition/grade/yui/build/moodle-availability_grade-form/moodle-availability_grade-form-min.js @@ -1 +1 @@ -YUI.add("moodle-availability_grade-form",function(o,a){M.availability_grade=M.availability_grade||{},M.availability_grade.form=o.Object(M.core_availability.plugin),M.availability_grade.form.grades=null,M.availability_grade.form.initInner=function(a){this.grades=a,this.nodesSoFar=0},M.availability_grade.form.getNode=function(a){var e,i,l,t,n,r;for(this.nodesSoFar++,e='
%
%',t=o.Node.create('
'+e+"
"),a.id!==undefined&&t.one("select[name=id] > option[value="+a.id+"]")&&t.one("select[name=id]").set("value",""+a.id),a.min!==undefined&&(t.one("input[name=min]").set("checked",!0),t.one("input[name=minval]").set("value",a.min)),a.max!==undefined&&(t.one("input[name=max]").set("checked",!0),t.one("input[name=maxval]").set("value",a.max)),n=function(a,e){var i=a.ancestor("label").next("label").one("input"),l=a.get("checked");return i.set("disabled",!l),e&&l&&i.focus(),l},t.all("input[type=checkbox]").each(n),M.availability_grade.form.addedEvents||(M.availability_grade.form.addedEvents=!0,(r=o.one(".availability-field")).delegate("change",function(){M.core_availability.form.update()},".availability_grade select[name=id]"),r.delegate("click",function(){n(this,!0),M.core_availability.form.update()},".availability_grade input[type=checkbox]"),r.delegate("valuechange",function(){M.core_availability.form.update()},".availability_grade input[type=text]")),t},M.availability_grade.form.fillValue=function(a,e){a.id=parseInt(e.one("select[name=id]").get("value"),10),e.one("input[name=min]").get("checked")&&(a.min=this.getValue("minval",e)),e.one("input[name=max]").get("checked")&&(a.max=this.getValue("maxval",e))},M.availability_grade.form.getValue=function(a,e){var i,l=e.one("input[name="+a+"]").get("value");return!/^[0-9]+([.,][0-9]+)?$/.test(l)||(i=parseFloat(l.replace(",",".")))<0||100
%
%',t=r.Node.create('
'+e+"
"),a.id!==undefined&&t.one("select[name=id] > option[value="+a.id+"]")&&t.one("select[name=id]").set("value",""+a.id),a.min!==undefined&&(t.one("input[name=min]").set("checked",!0),t.one("input[name=minval]").set("value",a.min)),a.max!==undefined&&(t.one("input[name=max]").set("checked",!0),t.one("input[name=maxval]").set("value",a.max)),n=function(a,e){var i=a.ancestor("label").next("label").one("input"),a=a.get("checked");return i.set("disabled",!a),e&&a&&i.focus(),a},t.all("input[type=checkbox]").each(n),M.availability_grade.form.addedEvents||(M.availability_grade.form.addedEvents=!0,(a=r.one(".availability-field")).delegate("change",function(){M.core_availability.form.update()},".availability_grade select[name=id]"),a.delegate("click",function(){n(this,!0),M.core_availability.form.update()},".availability_grade input[type=checkbox]"),a.delegate("valuechange",function(){M.core_availability.form.update()},".availability_grade input[type=text]")),t},M.availability_grade.form.fillValue=function(a,e){a.id=parseInt(e.one("select[name=id]").get("value"),10),e.one("input[name=min]").get("checked")&&(a.min=this.getValue("minval",e)),e.one("input[name=max]").get("checked")&&(a.max=this.getValue("maxval",e))},M.availability_grade.form.getValue=function(a,e){a=e.one("input[name="+a+"]").get("value");return!/^[0-9]+([.,][0-9]+)?$/.test(a)||(e=parseFloat(a.replace(",",".")))<0||100 ",l=t.Node.create(''+o+""),i.creating===undefined&&(i.id!==undefined&&l.one("select[name=id] > option[value="+i.id+"]")?l.one("select[name=id]").set("value",""+i.id):i.id===undefined&&l.one("select[name=id]").set("value","any")),M.availability_group.form.addedEvents||(M.availability_group.form.addedEvents=!0,t.one(".availability-field").delegate("change",function(){M.core_availability.form.update()},".availability_group select")),l},M.availability_group.form.fillValue=function(i,a){var e=a.one("select[name=id]").get("value");"choose"===e?i.id="choose":"any"!==e&&(i.id=parseInt(e,10))},M.availability_group.form.fillErrors=function(i,a){var e={};this.fillValue(e,a),e.id&&"choose"===e.id&&i.push("availability_group:error_selectgroup")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file +YUI.add("moodle-availability_group-form",function(t,i){M.availability_group=M.availability_group||{},M.availability_group.form=t.Object(M.core_availability.plugin),M.availability_group.form.groups=null,M.availability_group.form.initInner=function(i){this.groups=i},M.availability_group.form.getNode=function(i){for(var a,e,l='")+""),i.creating===undefined&&(i.id!==undefined&&e.one("select[name=id] > option[value="+i.id+"]")?e.one("select[name=id]").set("value",""+i.id):i.id===undefined&&e.one("select[name=id]").set("value","any")),M.availability_group.form.addedEvents||(M.availability_group.form.addedEvents=!0,t.one(".availability-field").delegate("change",function(){M.core_availability.form.update()},".availability_group select")),e},M.availability_group.form.fillValue=function(i,a){a=a.one("select[name=id]").get("value");"choose"===a?i.id="choose":"any"!==a&&(i.id=parseInt(a,10))},M.availability_group.form.fillErrors=function(i,a){var e={};this.fillValue(e,a),e.id&&"choose"===e.id&&i.push("availability_group:error_selectgroup")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file diff --git a/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-min.js b/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-min.js index 19802037577..c07e5f1725e 100644 --- a/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-min.js +++ b/availability/condition/grouping/yui/build/moodle-availability_grouping-form/moodle-availability_grouping-form-min.js @@ -1 +1 @@ -YUI.add("moodle-availability_grouping-form",function(n,i){M.availability_grouping=M.availability_grouping||{},M.availability_grouping.form=n.Object(M.core_availability.plugin),M.availability_grouping.form.groupings=null,M.availability_grouping.form.initInner=function(i){this.groupings=i},M.availability_grouping.form.getNode=function(i){var a,e,l,o='",l=n.Node.create(''+o+""),i.id!==undefined&&l.one("select[name=id] > option[value="+i.id+"]")&&l.one("select[name=id]").set("value",""+i.id),M.availability_grouping.form.addedEvents||(M.availability_grouping.form.addedEvents=!0,n.one(".availability-field").delegate("change",function(){M.core_availability.form.update()},".availability_grouping select")),l},M.availability_grouping.form.fillValue=function(i,a){var e=a.one("select[name=id]").get("value");i.id="choose"===e?"choose":parseInt(e,10)},M.availability_grouping.form.fillErrors=function(i,a){var e={};this.fillValue(e,a),"choose"===e.id&&i.push("availability_grouping:error_selectgrouping")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file +YUI.add("moodle-availability_grouping-form",function(n,i){M.availability_grouping=M.availability_grouping||{},M.availability_grouping.form=n.Object(M.core_availability.plugin),M.availability_grouping.form.groupings=null,M.availability_grouping.form.initInner=function(i){this.groupings=i},M.availability_grouping.form.getNode=function(i){for(var a,e,l='")+""),i.id!==undefined&&e.one("select[name=id] > option[value="+i.id+"]")&&e.one("select[name=id]").set("value",""+i.id),M.availability_grouping.form.addedEvents||(M.availability_grouping.form.addedEvents=!0,n.one(".availability-field").delegate("change",function(){M.core_availability.form.update()},".availability_grouping select")),e},M.availability_grouping.form.fillValue=function(i,a){a=a.one("select[name=id]").get("value");i.id="choose"===a?"choose":parseInt(a,10)},M.availability_grouping.form.fillErrors=function(i,a){var e={};this.fillValue(e,a),"choose"===e.id&&i.push("availability_grouping:error_selectgrouping")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file diff --git a/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-min.js b/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-min.js index 38bb84f55eb..004d9f7f826 100644 --- a/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-min.js +++ b/availability/condition/profile/yui/build/moodle-availability_profile-form/moodle-availability_profile-form-min.js @@ -1 +1 @@ -YUI.add("moodle-availability_profile-form",function(f,e){M.availability_profile=M.availability_profile||{},M.availability_profile.form=f.Object(M.core_availability.plugin),M.availability_profile.form.profiles=null,M.availability_profile.form.initInner=function(e,i){this.standardFields=e,this.customFields=i},M.availability_profile.form.getNode=function(e){var i,l,a,t,o,s,n=' ',t=f.Node.create(''+n+""),e.sf!==undefined&&t.one("select[name=field] > option[value=sf_"+e.sf+"]")?t.one("select[name=field]").set("value","sf_"+e.sf):e.cf!==undefined&&t.one("select[name=field] > option[value=cf_"+e.cf+"]")&&t.one("select[name=field]").set("value","cf_"+e.cf),e.op!==undefined&&t.one("select[name=op] > option[value="+e.op+"]")&&(t.one("select[name=op]").set("value",e.op),"isempty"!==e.op&&"isnotempty"!==e.op||t.one("input[name=value]").set("disabled",!0)),e.v!==undefined&&t.one("input").set("value",e.v),M.availability_profile.form.addedEvents||(M.availability_profile.form.addedEvents=!0,o=function(e){var i=e.ancestor("span.availability_profile"),l=i.one("select[name=op]"),a="isempty"===l.get("value")||"isnotempty"===l.get("value");i.one("input[name=value]").set("disabled",a),M.core_availability.form.update()},(s=f.one(".availability-field")).delegate("change",function(){o(this)},".availability_profile select"),s.delegate("change",function(){o(this)},".availability_profile input[name=value]")),t},M.availability_profile.form.fillValue=function(e,i){var l,a=i.one("select[name=field]").get("value");"sf_"===a.substr(0,3)?e.sf=a.substr(3):"cf_"===a.substr(0,3)&&(e.cf=a.substr(3)),e.op=i.one("select[name=op]").get("value"),(l=i.one("input[name=value]")).get("disabled")||(e.v=l.get("value"))},M.availability_profile.form.fillErrors=function(e,i){var l={};this.fillValue(l,i),l.sf===undefined&&l.cf===undefined&&e.push("availability_profile:error_selectfield"),l.v!==undefined&&/^\s*$/.test(l.v)&&e.push("availability_profile:error_setvalue")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file +YUI.add("moodle-availability_profile-form",function(n,e){M.availability_profile=M.availability_profile||{},M.availability_profile.form=n.Object(M.core_availability.plugin),M.availability_profile.form.profiles=null,M.availability_profile.form.initInner=function(e,i){this.standardFields=e,this.customFields=i},M.availability_profile.form.getNode=function(e){for(var i,l,a,t,o=' ',a=n.Node.create(''+o+""),e.sf!==undefined&&a.one("select[name=field] > option[value=sf_"+e.sf+"]")?a.one("select[name=field]").set("value","sf_"+e.sf):e.cf!==undefined&&a.one("select[name=field] > option[value=cf_"+e.cf+"]")&&a.one("select[name=field]").set("value","cf_"+e.cf),e.op!==undefined&&a.one("select[name=op] > option[value="+e.op+"]")&&(a.one("select[name=op]").set("value",e.op),"isempty"!==e.op&&"isnotempty"!==e.op||a.one("input[name=value]").set("disabled",!0)),e.v!==undefined&&a.one("input").set("value",e.v),M.availability_profile.form.addedEvents||(M.availability_profile.form.addedEvents=!0,t=function(e){var e=e.ancestor("span.availability_profile"),i=e.one("select[name=op]"),i="isempty"===i.get("value")||"isnotempty"===i.get("value");e.one("input[name=value]").set("disabled",i),M.core_availability.form.update()},(e=n.one(".availability-field")).delegate("change",function(){t(this)},".availability_profile select"),e.delegate("change",function(){t(this)},".availability_profile input[name=value]")),a},M.availability_profile.form.fillValue=function(e,i){var l=i.one("select[name=field]").get("value");"sf_"===l.substr(0,3)?e.sf=l.substr(3):"cf_"===l.substr(0,3)&&(e.cf=l.substr(3)),e.op=i.one("select[name=op]").get("value"),(l=i.one("input[name=value]")).get("disabled")||(e.v=l.get("value"))},M.availability_profile.form.fillErrors=function(e,i){var l={};this.fillValue(l,i),l.sf===undefined&&l.cf===undefined&&e.push("availability_profile:error_selectfield"),l.v!==undefined&&/^\s*$/.test(l.v)&&e.push("availability_profile:error_setvalue")}},"@VERSION@",{requires:["base","node","event","moodle-core_availability-form"]}); \ No newline at end of file diff --git a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js index 88010289440..741ff3fac1d 100644 --- a/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js +++ b/availability/yui/build/moodle-core_availability-form/moodle-core_availability-form-min.js @@ -1,3 +1,3 @@ -YUI.add("moodle-core_availability-form",function(c,i){M.core_availability=M.core_availability||{},M.core_availability.form={plugins:{},field:null,mainDiv:null,rootList:null,idCounter:0,restrictByGroup:null,init:function(i){var t,e,a,l,n,o,s;for(t in i)e=i[t],(a=M[e[0]].form).init.apply(a,e);if(this.field=c.one("#id_availabilityconditionsjson"),this.field.setAttribute("aria-hidden","true"),this.mainDiv=c.Node.create(''),this.field.insert(this.mainDiv,"after"),n=null,""!==(l=this.field.get("value")))try{n=c.JSON.parse(l)}catch(r){this.field.set("value","")}this.rootList=new M.core_availability.List(n,!0),this.mainDiv.appendChild(this.rootList.node),this.update(),this.rootList.renumber(),this.mainDiv.setAttribute("aria-live","polite"),this.field.ancestor("form").on("submit",function(){this.mainDiv.all("input,textarea,select").set("disabled",!0)},this),this.restrictByGroup=c.one("#restrictbygroup"),this.restrictByGroup&&(this.restrictByGroup.on("click",this.addRestrictByGroup,this),o=c.one("#id_groupmode"),s=c.one("#id_groupingid"),o&&o.on("change",this.updateRestrictByGroup,this),s&&s.on("change",this.updateRestrictByGroup,this),this.updateRestrictByGroup())},update:function(){var i=this.rootList.getValue(),t=[];this.rootList.fillErrors(t),0!==t.length&&(i.errors=t),this.field.set("value",c.JSON.stringify(i)),this.updateRestrictByGroup()},updateRestrictByGroup:function(){var i,t,e,a;this.restrictByGroup&&("&"!==this.rootList.getValue().op||(this.rootList.hasItemOfType("group")||this.rootList.hasItemOfType("grouping"))?this.restrictByGroup.set("disabled",!0):(i=c.one("#id_groupmode"),t=c.one("#id_groupingid"),e=1===Number(this.restrictByGroup.getData("groupavailability")),a=1===Number(this.restrictByGroup.getData("groupingavailability")),i&&0!==Number(i.get("value"))&&e||t&&0!==Number(t.get("value"))&&a?this.restrictByGroup.set("disabled",!1):this.restrictByGroup.set("disabled",!0)))},addRestrictByGroup:function(i){var t,e,a,l,n;i.preventDefault(),t=c.one("#id_groupmode"),e=c.one("#id_groupingid"),a=1===Number(this.restrictByGroup.getData("groupavailability")),l=1===Number(this.restrictByGroup.getData("groupingavailability")),e&&0!==Number(e.get("value"))&&l?n=new M.core_availability.Item({type:"grouping",id:Number(e.get("value"))},!0):t&&a&&(n=new M.core_availability.Item({type:"group"},!0)),null!==n&&(this.rootList.addChild(n),this.update(),this.rootList.renumber(),this.rootList.updateHtml())}},M.core_availability.plugin={allowAdd:!1,init:function(i,t,e){var a=i.replace(/^availability_/,"");this.allowAdd=t,(M.core_availability.form.plugins[a]=this).initInner.apply(this,e)},initInner:function(){},getNode:function(){throw"getNode not implemented"},fillValue:function(){throw"fillValue not implemented"},fillErrors:function(){},focusAfterAdd:function(i){i.one("input:not([disabled]),select:not([disabled])").focus()}},M.core_availability.List=function(i,t,e){var a,l,n,o,s,r,d;if(this.children=[],t!==undefined&&(this.root=t),this.node=c.Node.create('

'+M.util.get_string("listheader_sign_before","availability")+' '+M.util.get_string("listheader_single","availability")+''+M.util.get_string("listheader_multi_before","availability")+' "+M.util.get_string("listheader_multi_after","availability")+'
'+M.util.get_string("none","moodle")+'
'),t||this.node.addClass("availability-childlist d-sm-flex align-items-center"),this.inner=this.node.one("> .availability-inner"),a=!0,t?(i&&i.show!==undefined&&(a=i.show),this.eyeIcon=new M.core_availability.EyeIcon(!1,a),this.node.one(".availability-header").get("firstChild").insert(this.eyeIcon.span,"before")):e&&(i&&i.showc!==undefined&&(a=i.showc),this.eyeIcon=new M.core_availability.EyeIcon(!1,a),this.inner.insert(this.eyeIcon.span,"before")),t||(l=new M.core_availability.DeleteIcon(this),(n=this.node.one(".availability-none")).appendChild(document.createTextNode(" ")),n.appendChild(l.span),n.appendChild(c.Node.create(''+M.util.get_string("invalid","availability")+""))),(o=c.Node.create('")).on("click",function(){this.clickAdd()},this),this.node.one("div.availability-button").appendChild(o),i){switch(i.op){case"&":case"|":this.node.one(".availability-neg").set("value","");break;case"!&":case"!|":this.node.one(".availability-neg").set("value","!")}switch(i.op){case"&":case"!&":this.node.one(".availability-op").set("value","&");break;case"|":case"!|":this.node.one(".availability-op").set("value","|")}for(s=0;s
')),this.children.push(i),this.inner.one(".availability-children").appendChild(i.node)},M.core_availability.List.prototype.focusAfterAdd=function(){this.inner.one("button").focus()},M.core_availability.List.prototype.isIndividualShowIcons=function(){var i,t;if(!this.root)throw"Can only call this on root list";return i="!"===this.node.one(".availability-neg").get("value"),t="|"===this.node.one(".availability-op").get("value"),!i&&!t||i&&t},M.core_availability.List.prototype.renumber=function(i){var t,e,a,l={count:this.children.length};for(t=i===undefined?l.number="":(l.number=i+":",i+"."),e=M.util.get_string("setheading","availability",l),this.node.one("> h3").set("innerHTML",e),a=0;a .availability-children").removeAttribute("aria-hidden"),this.inner.one("> .availability-none").setAttribute("aria-hidden","true"),this.inner.one("> .availability-header").removeAttribute("aria-hidden"),1 .availability-children").setAttribute("aria-hidden","true"),this.inner.one("> .availability-none").removeAttribute("aria-hidden"),this.inner.one("> .availability-header").setAttribute("aria-hidden","true")),this.root){for(i=this.isIndividualShowIcons(),t=0;t .availability-children > .availability-connector span.label").each(function(i){i.set("innerHTML",a)})},M.core_availability.List.prototype.deleteDescendant=function(i){var t,e,a;for(t=0;t .availability-children").removeChild(a),M.core_availability.form.update(),this.updateHtml(),this.inner.one("> .availability-button").one("button").focus(),!0;if(e instanceof M.core_availability.List&&e.deleteDescendant(i))return!0}return!1},M.core_availability.List.prototype.clickAdd=function(){var i,t,e,a,l,n,o=c.Node.create('
    "),s=o.one("button"),r={dialog:null},d=o.one("ul");for(l in M.core_availability.form.plugins)M.core_availability.form.plugins[l].allowAdd&&(i=c.Node.create('
  • '),t="availability_addrestriction_"+l,(e=c.Node.create('
    ")).on("click",this.getAddHandler(l,r),this),i.appendChild(e),a=c.Node.create('
    "),i.appendChild(a),d.appendChild(i));i=c.Node.create('
  • '),t="availability_addrestriction_list_",(e=c.Node.create('
    ")).on("click",this.getAddHandler(null,r),this),i.appendChild(e),a=c.Node.create('
    "),i.appendChild(a),d.appendChild(i),n={headerContent:M.util.get_string("addrestriction","availability"),bodyContent:o,additionalBaseClass:"availability-dialogue",draggable:!0,modal:!0,closeButton:!1,width:"450px"},r.dialog=new M.core.dialogue(n),r.dialog.show(),s.on("click",function(){r.dialog.destroy(),this.inner.one("> .availability-button").one("button").focus()},this)},M.core_availability.List.prototype.getAddHandler=function(t,e){return function(){var i;i=t?new M.core_availability.Item({type:t,creating:!0},this.root):new M.core_availability.List({c:[],showc:!0},!1,this.root),this.addChild(i),M.core_availability.form.update(),M.core_availability.form.rootList.renumber(),this.updateHtml(),e.dialog.destroy(),i.focusAfterAdd()}},M.core_availability.List.prototype.getValue=function(){var i,t={};for(t.op=this.node.one(".availability-neg").get("value")+this.node.one(".availability-op").get("value"),t.c=[],i=0;i'+M.util.get_string("missingplugin","availability")+"
    ")):(this.plugin=M.core_availability.form.plugins[i.type],this.pluginNode=this.plugin.getNode(i),this.pluginNode.addClass("availability_"+i.type)),this.node=c.Node.create('

    '),t&&(e=!0,i.showc!==undefined&&(e=i.showc),this.eyeIcon=new M.core_availability.EyeIcon(!0,e),this.node.appendChild(this.eyeIcon.span)),this.pluginNode.addClass("availability-plugincontrols"),this.node.appendChild(this.pluginNode),a=new M.core_availability.DeleteIcon(this),this.node.appendChild(a.span),this.node.appendChild(document.createTextNode(" ")),this.node.appendChild(c.Node.create(''))},M.core_availability.Item.prototype.getValue=function(){var i={type:this.pluginType};return this.plugin&&this.plugin.fillValue(i,this.pluginNode),i},M.core_availability.Item.prototype.fillErrors=function(i){var t,e=i.length;this.plugin?this.plugin.fillErrors(i,this.pluginNode):i.push("core_availability:item_unknowntype"),t=this.node.one("> .badge-warning"),i.length===e||t.get("firstChild")?i.length===e&&t.get("firstChild")&&t.get("firstChild").remove():t.appendChild(document.createTextNode(M.util.get_string("invalid","availability")))},M.core_availability.Item.prototype.renumber=function(i){var t,e={number:i};this.plugin?e.type=M.util.get_string("title","availability_"+this.pluginType):e.type="["+this.pluginType+"]",e.number=i+":",t=M.util.get_string("itemheading","availability",e),this.node.one("> h3").set("innerHTML",t)},M.core_availability.Item.prototype.focusAfterAdd=function(){this.plugin.focusAfterAdd(this.pluginNode)},M.core_availability.Item.prototype.pluginType=null,M.core_availability.Item.prototype.plugin=null,M.core_availability.Item.prototype.eyeIcon=null,M.core_availability.Item.prototype.node=null,M.core_availability.Item.prototype.pluginNode=null,M.core_availability.EyeIcon=function(i,t){var e,a,l,n,o;this.individual=i,this.span=c.Node.create(''),e=c.Node.create(""),this.span.appendChild(e),a=i?"_individual":"_all",l=function(){var i=M.util.get_string("hidden"+a,"availability");e.set("src",M.util.image_url("i/show","core")),e.set("alt",i),this.span.set("title",i+" • "+M.util.get_string("show_verb","availability"))},n=function(){var i=M.util.get_string("shown"+a,"availability");e.set("src",M.util.image_url("i/hide","core")),e.set("alt",i),this.span.set("title",i+" • "+M.util.get_string("hide_verb","availability"))},t?n.call(this):l.call(this),o=function(i){i.preventDefault(),this.isHidden()?n.call(this):l.call(this),M.core_availability.form.update()},this.span.on("click",o,this),this.span.on("key",o,"up:32",this),this.span.on("key",function(i){i.preventDefault()},"down:32",this)},M.core_availability.EyeIcon.prototype.individual=!1,M.core_availability.EyeIcon.prototype.span=null,M.core_availability.EyeIcon.prototype.isHidden=function(){var i=this.individual?"_individual":"_all",t=M.util.get_string("hidden"+i,"availability");return this.span.one("img").get("alt")===t},M.core_availability.DeleteIcon=function(t){var i,e;this.span=c.Node.create(''),i=c.Node.create(''+M.util.get_string('),this.span.appendChild(i),e=function(i){i.preventDefault(),M.core_availability.form.rootList.deleteDescendant(t),M.core_availability.form.rootList.renumber()},this.span.on("click",e,this),this.span.on("key",e,"up:32",this),this.span.on("key",function(i){i.preventDefault()},"down:32",this)},M.core_availability.DeleteIcon.prototype.span=null},"@VERSION@",{requires:["base","node","event","event-delegate","panel","moodle-core-notification-dialogue","json"]}); \ No newline at end of file +YUI.add("moodle-core_availability-form",function(d,i){M.core_availability=M.core_availability||{},M.core_availability.form={plugins:{},field:null,mainDiv:null,rootList:null,idCounter:0,restrictByGroup:null,init:function(i){var t,e,a,l,n;for(t in i)e=i[t],(a=M[e[0]].form).init.apply(a,e);if(this.field=d.one("#id_availabilityconditionsjson"),this.field.setAttribute("aria-hidden","true"),this.mainDiv=d.Node.create(''),this.field.insert(this.mainDiv,"after"),n=null,""!==(l=this.field.get("value")))try{n=d.JSON.parse(l)}catch(o){this.field.set("value","")}this.rootList=new M.core_availability.List(n,!0),this.mainDiv.appendChild(this.rootList.node),this.update(),this.rootList.renumber(),this.mainDiv.setAttribute("aria-live","polite"),this.field.ancestor("form").on("submit",function(){this.mainDiv.all("input,textarea,select").set("disabled",!0)},this),this.restrictByGroup=d.one("#restrictbygroup"),this.restrictByGroup&&(this.restrictByGroup.on("click",this.addRestrictByGroup,this),l=d.one("#id_groupmode"),n=d.one("#id_groupingid"),l&&l.on("change",this.updateRestrictByGroup,this),n&&n.on("change",this.updateRestrictByGroup,this),this.updateRestrictByGroup())},update:function(){var i=this.rootList.getValue(),t=[];this.rootList.fillErrors(t),0!==t.length&&(i.errors=t),this.field.set("value",d.JSON.stringify(i)),this.updateRestrictByGroup()},updateRestrictByGroup:function(){var i,t,e,a;this.restrictByGroup&&("&"!==this.rootList.getValue().op||(this.rootList.hasItemOfType("group")||this.rootList.hasItemOfType("grouping"))?this.restrictByGroup.set("disabled",!0):(i=d.one("#id_groupmode"),t=d.one("#id_groupingid"),e=1===Number(this.restrictByGroup.getData("groupavailability")),a=1===Number(this.restrictByGroup.getData("groupingavailability")),i&&0!==Number(i.get("value"))&&e||t&&0!==Number(t.get("value"))&&a?this.restrictByGroup.set("disabled",!1):this.restrictByGroup.set("disabled",!0)))},addRestrictByGroup:function(i){var t,e,a,l;i.preventDefault(),i=d.one("#id_groupmode"),t=d.one("#id_groupingid"),e=1===Number(this.restrictByGroup.getData("groupavailability")),a=1===Number(this.restrictByGroup.getData("groupingavailability")),t&&0!==Number(t.get("value"))&&a?l=new M.core_availability.Item({type:"grouping",id:Number(t.get("value"))},!0):i&&e&&(l=new M.core_availability.Item({type:"group"},!0)),null!==l&&(this.rootList.addChild(l),this.update(),this.rootList.renumber(),this.rootList.updateHtml())}},M.core_availability.plugin={allowAdd:!1,init:function(i,t,e){i=i.replace(/^availability_/,"");this.allowAdd=t,(M.core_availability.form.plugins[i]=this).initInner.apply(this,e)},initInner:function(){},getNode:function(){throw"getNode not implemented"},fillValue:function(){throw"fillValue not implemented"},fillErrors:function(){},focusAfterAdd:function(i){i.one("input:not([disabled]),select:not([disabled])").focus()}},M.core_availability.List=function(i,t,e){var a,l,n;if(this.children=[],t!==undefined&&(this.root=t),this.node=d.Node.create('

    '+M.util.get_string("listheader_sign_before","availability")+' '+M.util.get_string("listheader_single","availability")+''+M.util.get_string("listheader_multi_before","availability")+' "+M.util.get_string("listheader_multi_after","availability")+'
    '+M.util.get_string("none","moodle")+'
    '),t||this.node.addClass("availability-childlist d-sm-flex align-items-center"),this.inner=this.node.one("> .availability-inner"),a=!0,t?(i&&i.show!==undefined&&(a=i.show),this.eyeIcon=new M.core_availability.EyeIcon(!1,a),this.node.one(".availability-header").get("firstChild").insert(this.eyeIcon.span,"before")):e&&(i&&i.showc!==undefined&&(a=i.showc),this.eyeIcon=new M.core_availability.EyeIcon(!1,a),this.inner.insert(this.eyeIcon.span,"before")),t||(e=new M.core_availability.DeleteIcon(this),(a=this.node.one(".availability-none")).appendChild(document.createTextNode(" ")),a.appendChild(e.span),a.appendChild(d.Node.create(''+M.util.get_string("invalid","availability")+""))),(t=d.Node.create('")).on("click",function(){this.clickAdd()},this),this.node.one("div.availability-button").appendChild(t),i){switch(i.op){case"&":case"|":this.node.one(".availability-neg").set("value","");break;case"!&":case"!|":this.node.one(".availability-neg").set("value","!")}switch(i.op){case"&":case"!&":this.node.one(".availability-op").set("value","&");break;case"|":case"!|":this.node.one(".availability-op").set("value","|")}for(l=0;l')),this.children.push(i),this.inner.one(".availability-children").appendChild(i.node)},M.core_availability.List.prototype.focusAfterAdd=function(){this.inner.one("button").focus()},M.core_availability.List.prototype.isIndividualShowIcons=function(){var i,t;if(!this.root)throw"Can only call this on root list";return i="!"===this.node.one(".availability-neg").get("value"),t="|"===this.node.one(".availability-op").get("value"),!i&&!t||i&&t},M.core_availability.List.prototype.renumber=function(i){var t,e={count:this.children.length},a=i===undefined?e.number="":(e.number=i+":",i+"."),i=M.util.get_string("setheading","availability",e);for(this.node.one("> h3").set("innerHTML",i),t=0;t .availability-children").removeAttribute("aria-hidden"),this.inner.one("> .availability-none").setAttribute("aria-hidden","true"),this.inner.one("> .availability-header").removeAttribute("aria-hidden"),1 .availability-children").setAttribute("aria-hidden","true"),this.inner.one("> .availability-none").removeAttribute("aria-hidden"),this.inner.one("> .availability-header").setAttribute("aria-hidden","true")),this.root){for(i=this.isIndividualShowIcons(),t=0;t .availability-children > .availability-connector span.label").each(function(i){i.set("innerHTML",a)})},M.core_availability.List.prototype.deleteDescendant=function(i){for(var t,e,a=0;a .availability-children").removeChild(e),M.core_availability.form.update(),this.updateHtml(),this.inner.one("> .availability-button").one("button").focus(),!0;if(t instanceof M.core_availability.List&&t.deleteDescendant(i))return!0}return!1},M.core_availability.List.prototype.clickAdd=function(){var i,t,e,a,l,n=d.Node.create('
      "),o=n.one("button"),s={dialog:null},r=n.one("ul");for(l in M.core_availability.form.plugins)M.core_availability.form.plugins[l].allowAdd&&(i=d.Node.create('
    • '),(e=d.Node.create('
      ")).on("click",this.getAddHandler(l,s),this),i.appendChild(e),a=d.Node.create('
      "),i.appendChild(a),r.appendChild(i));i=d.Node.create('
    • '),(e=d.Node.create('
      ")).on("click",this.getAddHandler(null,s),this),i.appendChild(e),a=d.Node.create('
      "),i.appendChild(a),r.appendChild(i),n={headerContent:M.util.get_string("addrestriction","availability"),bodyContent:n,additionalBaseClass:"availability-dialogue",draggable:!0,modal:!0,closeButton:!1,width:"450px"},s.dialog=new M.core.dialogue(n),s.dialog.show(),o.on("click",function(){s.dialog.destroy(),this.inner.one("> .availability-button").one("button").focus()},this)},M.core_availability.List.prototype.getAddHandler=function(t,e){return function(){var i=t?new M.core_availability.Item({type:t,creating:!0},this.root):new M.core_availability.List({c:[],showc:!0},!1,this.root);this.addChild(i),M.core_availability.form.update(),M.core_availability.form.rootList.renumber(),this.updateHtml(),e.dialog.destroy(),i.focusAfterAdd()}},M.core_availability.List.prototype.getValue=function(){var i,t={};for(t.op=this.node.one(".availability-neg").get("value")+this.node.one(".availability-op").get("value"),t.c=[],i=0;i'+M.util.get_string("missingplugin","availability")+"")):(this.plugin=M.core_availability.form.plugins[i.type],this.pluginNode=this.plugin.getNode(i),this.pluginNode.addClass("availability_"+i.type)),this.node=d.Node.create('

      '),t&&(t=!0,i.showc!==undefined&&(t=i.showc),this.eyeIcon=new M.core_availability.EyeIcon(!0,t),this.node.appendChild(this.eyeIcon.span)),this.pluginNode.addClass("availability-plugincontrols"),this.node.appendChild(this.pluginNode),i=new M.core_availability.DeleteIcon(this),this.node.appendChild(i.span),this.node.appendChild(document.createTextNode(" ")),this.node.appendChild(d.Node.create(''))},M.core_availability.Item.prototype.getValue=function(){var i={type:this.pluginType};return this.plugin&&this.plugin.fillValue(i,this.pluginNode),i},M.core_availability.Item.prototype.fillErrors=function(i){var t,e=i.length;this.plugin?this.plugin.fillErrors(i,this.pluginNode):i.push("core_availability:item_unknowntype"),t=this.node.one("> .badge-warning"),i.length===e||t.get("firstChild")?i.length===e&&t.get("firstChild")&&t.get("firstChild").remove():t.appendChild(document.createTextNode(M.util.get_string("invalid","availability")))},M.core_availability.Item.prototype.renumber=function(i){var t={number:i};this.plugin?t.type=M.util.get_string("title","availability_"+this.pluginType):t.type="["+this.pluginType+"]",t.number=i+":",i=M.util.get_string("itemheading","availability",t),this.node.one("> h3").set("innerHTML",i)},M.core_availability.Item.prototype.focusAfterAdd=function(){this.plugin.focusAfterAdd(this.pluginNode)},M.core_availability.Item.prototype.pluginType=null,M.core_availability.Item.prototype.plugin=null,M.core_availability.Item.prototype.eyeIcon=null,M.core_availability.Item.prototype.node=null,M.core_availability.Item.prototype.pluginNode=null,M.core_availability.EyeIcon=function(i,t){var e,a,l,n;this.individual=i,this.span=d.Node.create('
      '),e=d.Node.create(""),this.span.appendChild(e),a=i?"_individual":"_all",l=function(){var i=M.util.get_string("hidden"+a,"availability");e.set("src",M.util.image_url("i/show","core")),e.set("alt",i),this.span.set("title",i+" • "+M.util.get_string("show_verb","availability"))},n=function(){var i=M.util.get_string("shown"+a,"availability");e.set("src",M.util.image_url("i/hide","core")),e.set("alt",i),this.span.set("title",i+" • "+M.util.get_string("hide_verb","availability"))},(t?n:l).call(this),this.span.on("click",i=function(i){i.preventDefault(),(this.isHidden()?n:l).call(this),M.core_availability.form.update()},this),this.span.on("key",i,"up:32",this),this.span.on("key",function(i){i.preventDefault()},"down:32",this)},M.core_availability.EyeIcon.prototype.individual=!1,M.core_availability.EyeIcon.prototype.span=null,M.core_availability.EyeIcon.prototype.isHidden=function(){var i=this.individual?"_individual":"_all",i=M.util.get_string("hidden"+i,"availability");return this.span.one("img").get("alt")===i},M.core_availability.DeleteIcon=function(t){var i;this.span=d.Node.create(''),i=d.Node.create(''+M.util.get_string('),this.span.appendChild(i),this.span.on("click",i=function(i){i.preventDefault(),M.core_availability.form.rootList.deleteDescendant(t),M.core_availability.form.rootList.renumber()},this),this.span.on("key",i,"up:32",this),this.span.on("key",function(i){i.preventDefault()},"down:32",this)},M.core_availability.DeleteIcon.prototype.span=null},"@VERSION@",{requires:["base","node","event","event-delegate","panel","moodle-core-notification-dialogue","json"]}); \ No newline at end of file diff --git a/backup/util/ui/amd/build/async_backup.min.js b/backup/util/ui/amd/build/async_backup.min.js index 1511c10a96d..ffba1a925e1 100644 --- a/backup/util/ui/amd/build/async_backup.min.js +++ b/backup/util/ui/amd/build/async_backup.min.js @@ -1,2 +1,2 @@ -define ("core_backup/async_backup",["jquery","core/ajax","core/str","core/notification","core/templates"],function(a,b,c,d,e){var q=900,r=1e3,s={},t=15e3,u=15e3,v=1.5,w,x,y,z,A,B,C,D=2e3;function f(a,b,c){var d=Math.round(c)+"%",e=document.querySelectorAll("[data-"+b+"id="+CSS.escape(a)+"]")[0],f=c.toFixed(2)+"%";e.setAttribute("aria-valuenow",d);e.style.width=d;e.innerHTML=f}function g(a,b,c){clearInterval(a);return setInterval(b,c)}function h(c){var f=a("#"+c+"_bar").parent().parent(),g=f.parent(),h=f.siblings(),i=h[1],j=a(i).text(),k=h[0],l=a(k).text();b.call([{methodname:"core_backup_get_async_backup_links_backup",args:{filename:l,contextid:x}}])[0].done(function(a){var b={filename:l,time:j,size:a.filesize,fileurl:a.fileurl,restoreurl:a.restoreurl};e.render("core/async_backup_progress_row",b).then(function(a,b){e.replaceNodeContents(g,a,b)}).fail(function(){d.exception(new Error("Failed to load table row"))})})}function i(c){var f=a("#"+c+"_bar").parent().parent(),g=f.parent(),h=f.siblings(),i=h[0],j=h[1],k=a(j).text();b.call([{methodname:"core_backup_get_async_backup_links_restore",args:{backupid:c,contextid:x}}])[0].done(function(b){var c=a(i).text(),f={resourcename:c,restoreurl:b.restoreurl,time:k};e.render("core/async_restore_progress_row",f).then(function(a,b){e.replaceNodeContents(g,a,b)}).fail(function(){d.exception(new Error("Failed to load table row"))})})}function j(a){var f=document.querySelectorAll("[data-restoreid="+CSS.escape(a)+"]")[0],g=f.closest("tr").children[1],h=g.innerHTML,i=document.createElement("a"),j=f.closest("td"),k=j.previousElementSibling;c.get_string("complete").then(function(a){k.innerHTML=a}).catch(function(){d.exception(new Error("Failed to load string: complete"))});e.render("core/async_copy_complete_cell",{}).then(function(a,b){e.replaceNodeContents(j,a,b)}).fail(function(){d.exception(new Error("Failed to load table cell"))});b.call([{methodname:"core_backup_get_async_backup_links_restore",args:{backupid:a,contextid:0}}])[0].done(function(a){i.setAttribute("href",a.restoreurl);i.innerHTML=h;g.innerHTML=null;g.appendChild(i)}).fail(function(){d.exception(new Error("Failed to update table row"))})}function k(e){var g=100*e.progress,h="backup",i=document.querySelectorAll("[data-"+h+"id="+CSS.escape(w)+"]")[0],j=a("#"+w+"_status"),k=a("#"+w+"_detail"),l=a("#"+w+"_button"),m;if(e.status==800){i.classList.add("bg-success");f(w,h,g);var n="async"+z+"processing";c.get_string(n,"backup").then(function(a){j.text(a)}).catch(function(){d.exception(new Error("Failed to load string: backup "+n))})}else if(e.status==q){i.classList.add("bg-danger");i.classList.remove("bg-success");f(w,h,100);var o="async"+z+"error",p="async"+z+"errordetail";m=[{key:o,component:"backup"},{key:p,component:"backup"}];c.get_strings(m).then(function(a){j.text(a[0]);k.text(a[1])}).catch(function(){d.exception(new Error("Failed to load string"))});a(".backup_progress").children("span").removeClass("backup_stage_current");a(".backup_progress").children("span").last().addClass("backup_stage_current");clearInterval(A)}else if(e.status==r){i.classList.add("bg-success");f(w,h,100);var s="async"+z+"complete";c.get_string(s,"backup").then(function(a){j.text(a)}).catch(function(){d.exception(new Error("Failed to load string: backup "+s))});if("restore"==z){b.call([{methodname:"core_backup_get_async_backup_links_restore",args:{backupid:w,contextid:x}}])[0].done(function(a){var b="async"+z+"completedetail",e="async"+z+"completebutton",f=[{key:b,component:"backup",param:a.restoreurl},{key:e,component:"backup"}];c.get_strings(f).then(function(b){k.html(b[0]);l.text(b[1]);l.attr("href",a.restoreurl)}).catch(function(){d.exception(new Error("Failed to load string"))})})}else{var t="async"+z+"completedetail",u="async"+z+"completebutton";m=[{key:t,component:"backup",param:y},{key:u,component:"backup"}];c.get_strings(m).then(function(a){k.html(a[0]);l.text(a[1]);l.attr("href",y)}).catch(function(){d.exception(new Error("Failed to load string"))})}a(".backup_progress").children("span").removeClass("backup_stage_current");a(".backup_progress").children("span").last().addClass("backup_stage_current");clearInterval(A)}}function l(a){a.forEach(function(a){var b=100*a.progress,c=a.backupid,d=a.operation,e=document.querySelectorAll("[data-"+d+"id="+CSS.escape(c)+"]")[0];if(a.status==800){e.classList.add("bg-success");f(c,d,b)}else if(a.status==q){e.classList.add("bg-danger");e.classList.add("complete");e.classList.remove("bg-success");f(c,d,100)}else if(a.status==r){e.classList.add("bg-success");e.classList.add("complete");f(c,d,100);if("backup"==d){h(c)}else{i(c)}}})}function m(a){a.forEach(function(a){var b=100*a.progress,e=a.backupid,g=a.operation,h=document.querySelectorAll("[data-"+g+"id="+CSS.escape(e)+"]")[0];if("restore"==g){var i=h.closest("tr").children[3];c.get_string("restore").then(function(a){i.innerHTML=a}).catch(function(){d.exception(new Error("Failed to load string: restore"))})}if(a.status==800){h.classList.add("bg-success");f(e,g,b)}else if(a.status==q){h.classList.add("bg-danger");h.classList.add("complete");h.classList.remove("bg-success");f(e,g,100)}else if(a.status==r&&"restore"==g){h.classList.add("bg-success");h.classList.add("complete");f(e,g,100);j(e)}})}function n(){b.call([{methodname:"core_backup_get_async_backup_progress",args:{backupids:[w],contextid:x}}],!0,!0,!1,D)[0].done(function(a){k(a[0]);u=t;A=g(A,n,t)}).fail(function(){u=u*v;A=g(A,n,u)})}function o(){var c=[],d=a(".progress").find(".progress-bar").not(".complete");d.each(function(){c.push(this.id.substring(0,32))});if(0"},p=g.one("fieldset#id_coursesettings .fcontainer.clearfix .grouped_settings.section_level");if(p&&p.one('input[type="checkbox"]')){for(l in s=p.ancestor("form").getAttribute("id"),t=!1,g.all('input[type="checkbox"]').each(function(e){var n=e.get("name");"_userdata"===n.substring(n.length-9)?t="_userdata":"_userinfo"===n.substring(n.length-9)&&(t="_userinfo")}),n=r("include_setting section_level","included",M.util.get_string("select","moodle"),' ('+M.util.get_string("showtypes","backup")+")"),t&&(n+=r("normal_setting","userdata",M.util.get_string("select","moodle"))),i=g.Node.create('
      '+n+"
      "),p.insert(i,"before"),c=function(e,n){g.one("#backup-all-mod_"+n).on("click",function(e){d(e,!0,"_included",n)}),g.one("#backup-none-mod_"+n).on("click",function(e){d(e,!1,"_included",n)}),t&&(g.one("#backup-all-userdata-mod_"+n).on("click",function(e){d(e,!0,t,n)}),g.one("#backup-none-userdata-mod_"+n).on("click",function(e){d(e,!1,t,n)}))},(o=g.Node.create('