diff --git a/app/src/components/ConfigPanel.vue b/app/src/components/ConfigPanel.vue index 367b64c2..d4dad0da 100644 --- a/app/src/components/ConfigPanel.vue +++ b/app/src/components/ConfigPanel.vue @@ -1,7 +1,7 @@ diff --git a/app/src/components/globals/formItems/ButtonItem.vue b/app/src/components/globals/formItems/ButtonItem.vue new file mode 100644 index 00000000..9f890444 --- /dev/null +++ b/app/src/components/globals/formItems/ButtonItem.vue @@ -0,0 +1,39 @@ + + + diff --git a/app/src/helpers/commons.js b/app/src/helpers/commons.js index b52a7e9c..fd2fff76 100644 --- a/app/src/helpers/commons.js +++ b/app/src/helpers/commons.js @@ -63,6 +63,19 @@ export function flattenObjectLiteral (obj, flattened = {}) { } +/** + * Returns an new Object filtered with passed filter function. + * Each entry `[key, value]` will be forwarded to the `filter` function. + * + * @param {Object} obj - object to filter. + * @param {Function} filter - the filter function to call for each entry. + * @return {Object} + */ +export function filterObject (obj, filter) { + return Object.fromEntries(Object.entries(obj).filter((...args) => filter(...args))) +} + + /** * Returns an new array containing items that are in first array but not in the other. * diff --git a/app/src/helpers/yunohostArguments.js b/app/src/helpers/yunohostArguments.js index f0cc4d08..6f5893c5 100644 --- a/app/src/helpers/yunohostArguments.js +++ b/app/src/helpers/yunohostArguments.js @@ -229,6 +229,12 @@ export function formatYunoHostArgument (arg) { name: 'MarkdownItem', props: ['label:ask'], renderSelf: true + }, + { + types: ['button'], + name: 'ButtonItem', + props: ['type:style', 'label:ask', 'icon', 'enabled', 'args'], + renderSelf: true } ] @@ -328,6 +334,10 @@ export function formatYunoHostArguments (args, forms) { if ('visible' in arg && ![false, '"false"'].includes(arg.visible)) { addEvaluationGetter('visible', field, arg.visible, forms) } + + if ('enabled' in arg) { + addEvaluationGetter('enabled', field.props, arg.enabled, forms) + } } return { form, fields, validations, errors } @@ -354,6 +364,7 @@ export function formatYunoHostConfigPanels (data) { for (const _section of sections) { const section = { id: _section.id, + isActionSection: _section.is_action_section, visible: [undefined, true, '"true"'].includes(_section.visible) } if (_section.help) section.help = formatI18nField(_section.help)