diff --git a/js/components/button.js b/js/components/button.js new file mode 100644 index 000000000..093adaa4d --- /dev/null +++ b/js/components/button.js @@ -0,0 +1,26 @@ +/* + * Copyright (C) 2013-2022 Combodo SARL + * + * This file is part of iTop. + * + * iTop is free software; you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * iTop is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + */ + +; +// Apply a listener to element so we don't havec to create one for every button on the page +$('body').on('enter_loading_state.button.itop', '[data-role="ibo-button"]', function(){ + $(this).addClass('ibo-is-loading').prop('disabled', true); + }) + .on('leave_loading_state.button.itop', '[data-role="ibo-button"]', function(){ + $(this).removeClass('ibo-is-loading').prop('disabled', false); +}); diff --git a/sources/application/UI/Base/Component/Button/Button.php b/sources/application/UI/Base/Component/Button/Button.php index 9aeca2aed..23f97538f 100644 --- a/sources/application/UI/Base/Component/Button/Button.php +++ b/sources/application/UI/Base/Component/Button/Button.php @@ -35,7 +35,11 @@ class Button extends UIBlock public const BLOCK_CODE = 'ibo-button'; public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/button/layout'; public const DEFAULT_JS_TEMPLATE_REL_PATH = 'base/components/button/layout'; - + public const DEFAULT_JS_FILES_REL_PATH = [ + 'js/components/button.js', + ]; + public const REQUIRES_ANCESTORS_DEFAULT_JS_FILES = true; + // Specific constants /** @var string ENUM_ACTION_TYPE_REGULAR */ public const ENUM_ACTION_TYPE_REGULAR = 'regular'; diff --git a/sources/application/UI/Base/Component/Button/ButtonJS.php b/sources/application/UI/Base/Component/Button/ButtonJS.php index b0c5a271c..354f0817e 100644 --- a/sources/application/UI/Base/Component/Button/ButtonJS.php +++ b/sources/application/UI/Base/Component/Button/ButtonJS.php @@ -31,6 +31,7 @@ class ButtonJS extends Button { // Overloaded constants public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/button/buttonjs'; + public const REQUIRES_ANCESTORS_DEFAULT_JS_FILES = true; // Specific constants /** @var string ENUM_TYPE_BUTTON */ diff --git a/sources/application/UI/Base/Component/Button/ButtonURL.php b/sources/application/UI/Base/Component/Button/ButtonURL.php index 8b639205d..dd278879a 100644 --- a/sources/application/UI/Base/Component/Button/ButtonURL.php +++ b/sources/application/UI/Base/Component/Button/ButtonURL.php @@ -31,6 +31,7 @@ class ButtonURL extends Button { // Overloaded constants public const DEFAULT_HTML_TEMPLATE_REL_PATH = 'base/components/button/buttonurl'; + public const REQUIRES_ANCESTORS_DEFAULT_JS_FILES = true; // Specific constants /** @var string ENUM_TARGET_BLANK */