From 20bd9085b7eb19310b513ea52083968ee435f0bf Mon Sep 17 00:00:00 2001 From: Oliver Tacke Date: Fri, 11 Nov 2022 12:17:58 +0100 Subject: [PATCH] H5P-3599 Hide buttons based on min/max setting --- vertical-tabs.js | 33 +++++++++++++++++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/vertical-tabs.js b/vertical-tabs.js index 3113539..569633b 100644 --- a/vertical-tabs.js +++ b/vertical-tabs.js @@ -57,12 +57,16 @@ H5PEditor.VerticalTabs = (function ($) { 'role': 'tablist', 'class': 'h5p-ul' }).appendTo($inner); - H5PEditor.createButton('add-entity', H5PEditor.t('core', 'addEntity', {':entity': entity}), function () { + + var $buttonAddEntity = H5PEditor.createButton('add-entity', H5PEditor.t('core', 'addEntity', {':entity': entity}), function () { if (list.addItem()) { $tabs.children(':last').trigger('open'); toggleOrderButtonsState(); + updateButtons(); } - }, true).appendTo($inner); + }, true); + $buttonAddEntity.appendTo($inner); + var $forms = $('
', { 'class': 'h5p-vtab-forms' }).appendTo($wrapper); @@ -70,6 +74,7 @@ H5PEditor.VerticalTabs = (function ($) { // Once all items have been added we toggle the state of the order buttons list.once('changeWidget', function () { toggleOrderButtonsState(); + updateButtons(); }); } @@ -129,6 +134,29 @@ H5PEditor.VerticalTabs = (function ($) { toggleOrderButtonsState(); }; + /** + * Update buttons. + * + * @private + */ + var updateButtons = function () { + if (typeof list.getConfig !== 'function') { + return; // Might be older core version + } + + // Show remove buttons if more tabs than min + if (typeof list.getConfig().min === 'number') { + $tabs.find('.vtab-remove-wrapper') + .toggle((list.getValue() || []).length > list.getConfig().min); + } + + // Show add button if less tabs than max + if (typeof list.getConfig().max === 'number') { + $buttonAddEntity + .toggle((list.getValue() || []).length < list.getConfig().max); + } + }; + /** * Decode HTML entities * @param {String} @@ -415,6 +443,7 @@ H5PEditor.VerticalTabs = (function ($) { $tab.remove(); $form.remove(); reindexLabels(); + updateButtons(); }); // Create form wrapper