Hide params during custom action

This commit is contained in:
Iván Ovejero 2022-05-09 09:38:53 +02:00
parent ba9c85e131
commit 216d2e0379
3 changed files with 32 additions and 13 deletions

View file

@ -60,7 +60,7 @@
</n8n-text>
</div>
<div v-if="customActionSelected" class="parameter-item parameter-notice">
<div v-if="isCustomActionSelected(nodeValues)" class="parameter-item parameter-notice">
<n8n-notice
:content="$locale.baseText(
'nodeSettings.useTheHttpRequestNode',
@ -132,18 +132,6 @@ export default mixins(
},
computed: {
...mapGetters('credentials', [ 'getCredentialTypeByName' ]),
customActionSelected (): boolean {
return (
this.nodeValues.parameters !== undefined &&
typeof this.nodeValues.parameters === 'object' &&
this.nodeValues.parameters !== null &&
!Array.isArray(this.nodeValues.parameters) &&
(
this.nodeValues.parameters.resource === 'customAction' ||
this.nodeValues.parameters.operation === 'customAction'
)
);
},
nodeType (): INodeTypeDescription | null {
if (this.node) {
return this.$store.getters.nodeType(this.node.type, this.node.typeVersion);

View file

@ -178,6 +178,13 @@ export default mixins(
return false;
}
if (
this.isCustomActionSelected(this.nodeValues) &&
this.mustHideDuringCustomAction(parameter, this.nodeValues)
) {
return false;
}
if (parameter.displayOptions === undefined) {
// If it is not defined no need to do a proper check
return true;

View file

@ -47,6 +47,23 @@ export const nodeHelpers = mixins(
return node.type === HTTP_REQUEST_NODE_TYPE && node.typeVersion === 2;
},
isCustomActionSelected (nodeValues: INodeParameters): boolean {
const { parameters } = nodeValues;
return (
isObjectLiteral(parameters) &&
(parameters.resource === 'customAction' || parameters.operation === 'customAction')
);
},
mustHideDuringCustomAction (parameter: INodeProperties, nodeValues: INodeParameters): boolean {
if (parameter && parameter.displayOptions && parameter.displayOptions.hide) return true;
const MUST_REMAIN_VISIBLE = ['authentication', 'resource', 'operation', ...Object.keys(nodeValues)];
return !MUST_REMAIN_VISIBLE.includes(parameter.name);
},
// Returns the parameter value
getParameterValue (nodeValues: INodeParameters, parameterName: string, path: string) {
return get(
@ -57,6 +74,9 @@ export const nodeHelpers = mixins(
// Returns if the given parameter should be displayed or not
displayParameter (nodeValues: INodeParameters, parameter: INodeProperties | INodeCredentialDescription, path: string, node: INodeUi | null) {
// TODO: If enabled, cannot select operation // If disabled (per original), cannot hide displayOptions.hide
// if (this.isCustomActionSelected(nodeValues)) return false;
return NodeHelpers.displayParameterPath(nodeValues, parameter, path, node);
},
@ -495,3 +515,7 @@ declare namespace HttpRequestNode {
};
}
}
function isObjectLiteral(maybeObject: unknown): maybeObject is { [key: string]: string } {
return typeof maybeObject === 'object' && maybeObject !== null && !Array.isArray(maybeObject);
}