From 2facba3d18002381096319a027b82c59732df3e3 Mon Sep 17 00:00:00 2001 From: Andreas Boesl Date: Thu, 22 Aug 2024 08:09:15 +0200 Subject: [PATCH] vue: introduced layout options for Dictionary and CascadingDropdown Change-Id: I2d76df9dd76cd7f9a9e64695e50e291ec863b6b2 --- cmk/gui/form_specs/vue/shared_type_defs.py | 13 +++++++++++++ .../form/components/vue_formspec_components.ts | 2 ++ .../source/vue_formspec/components.json | 17 ++++++++++++++--- .../source/vue_formspec/postprocess.py | 2 ++ 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/cmk/gui/form_specs/vue/shared_type_defs.py b/cmk/gui/form_specs/vue/shared_type_defs.py index 4a27f74cbcd..cc6bd6da2b0 100644 --- a/cmk/gui/form_specs/vue/shared_type_defs.py +++ b/cmk/gui/form_specs/vue/shared_type_defs.py @@ -9,6 +9,7 @@ from __future__ import annotations from dataclasses import dataclass, field +from enum import Enum from typing import Any, Optional, Union @@ -50,6 +51,11 @@ class DictionaryGroup: help: Optional[str] = None +class Layout(str, Enum): + default = "default" + two_columns = "two_columns" + + @dataclass(kw_only=True) class SingleChoiceElement: name: Any @@ -62,6 +68,11 @@ class MultipleChoiceElement: title: str +class Layout1(str, Enum): + default = "default" + horizontal = "horizontal" + + @dataclass(kw_only=True) class ValidationMessage: location: list[str] @@ -135,6 +146,7 @@ class Dictionary(FormSpec): elements: list[DictionaryElement] = field(default_factory=lambda: []) no_elements_text: Optional[str] = None additional_static_elements: Optional[dict[str, Any]] = None + layout: Layout = Layout.default @dataclass(kw_only=True) @@ -169,6 +181,7 @@ class CascadingSingleChoice(FormSpec): elements: list[CascadingSingleChoiceElement] = field(default_factory=lambda: []) no_elements_text: Optional[str] = None label: Optional[str] = None + layout: Layout1 = Layout1.default @dataclass(kw_only=True) diff --git a/packages/cmk-frontend-vue/src/form/components/vue_formspec_components.ts b/packages/cmk-frontend-vue/src/form/components/vue_formspec_components.ts index a0d2cbb28af..ea0d57f32c5 100644 --- a/packages/cmk-frontend-vue/src/form/components/vue_formspec_components.ts +++ b/packages/cmk-frontend-vue/src/form/components/vue_formspec_components.ts @@ -44,6 +44,7 @@ export type Dictionary = FormSpec & { groups: DictionaryGroup[]; no_elements_text?: string; additional_static_elements?: {}; + layout: "default" | "two_columns"; }; export type List = FormSpec & { type: "list"; @@ -74,6 +75,7 @@ export type CascadingSingleChoice = FormSpec & { no_elements_text?: string; label?: string; input_hint: unknown; + layout: "default" | "horizontal"; }; export type FixedValue = FormSpec & { type: "fixed_value"; diff --git a/packages/cmk-shared-typing/source/vue_formspec/components.json b/packages/cmk-shared-typing/source/vue_formspec/components.json index 3dc436bd65e..0e52b5ce809 100644 --- a/packages/cmk-shared-typing/source/vue_formspec/components.json +++ b/packages/cmk-shared-typing/source/vue_formspec/components.json @@ -239,13 +239,19 @@ }, "additional_static_elements": { "type": "object" + }, + "layout": { + "enum": ["default", "two_columns"], + "default": "default" } }, "required": [ "type", "elements", "static_elements_key", - "groups" + "groups", + "layout" + ], "allOf": [ { @@ -389,12 +395,17 @@ "label": { "type": "string" }, - "input_hint": {} + "input_hint": {}, + "layout": { + "enum": ["default", "horizontal"], + "default": "default" + } }, "required": [ "type", "elements", - "input_hint" + "input_hint", + "layout" ], "allOf": [ { diff --git a/packages/cmk-shared-typing/source/vue_formspec/postprocess.py b/packages/cmk-shared-typing/source/vue_formspec/postprocess.py index 8cd43a9a6fe..af5725abfb8 100644 --- a/packages/cmk-shared-typing/source/vue_formspec/postprocess.py +++ b/packages/cmk-shared-typing/source/vue_formspec/postprocess.py @@ -12,10 +12,12 @@ STRIP_OPTIONAL = [ ("FormSpec", "validators"), ("Dictionary", "elements"), + ("Dictionary", "layout"), ("SingleChoice", "elements"), ("MultipleChoice", "elements"), ("MultipleChoice", "show_toggle_all"), ("CascadingSingleChoice", "elements"), + ("CascadingSingleChoice", "layout"), ]