Skip to content

Commit

Permalink
custom component change to support pydantic v2
Browse files Browse the repository at this point in the history
  • Loading branch information
l0uden committed Feb 3, 2025
1 parent e4007a6 commit 8e76053
Showing 1 changed file with 11 additions and 14 deletions.
Original file line number Diff line number Diff line change
@@ -1,15 +1,9 @@
from typing import Optional, Union
from typing import Annotated, Literal, Optional, Union

from dash import dcc, html
from pydantic import AfterValidator, Field, PlainSerializer, PrivateAttr

import vizro.models as vm

try:
from pydantic.v1 import Field, PrivateAttr
except ImportError:
from pydantic import Field, PrivateAttr
from typing_extensions import Literal

from vizro.models import Action
from vizro.models._action._actions_chain import _action_validator_factory
from vizro.models._base import VizroBaseModel, _log_call
Expand All @@ -23,19 +17,22 @@ class NewDropdown(VizroBaseModel):
"""Categorical single/multi-selector `Dropdown` to be provided to `Filter`."""

type: Literal["new-dropdown"] = "new-dropdown"
options: Optional[MultiOptionType] = Field(None, description="Possible options the user can select from")
options: Optional[MultiOptionType] = Field(default=None, description="Possible options the user can select from")
value: Optional[Union[SingleOptionType, MultiOptionType]] = Field(
None, description="Options that are selected by default"
default=None, description="Options that are selected by default"
)
multi: bool = Field(True, description="Whether to allow selection of multiple values")
actions: list[Action] = []
multi: bool = Field(default=True, description="Whether to allow selection of multiple values")
actions: Annotated[
list[Action],
AfterValidator(_action_validator_factory("value")),
PlainSerializer(lambda x: x[0].actions),
Field(default=[]),
]
title: Optional[str] = Field(None, description="Title to be displayed")

# Component properties for actions and interactions
_input_property: str = PrivateAttr("value")

set_actions = _action_validator_factory("value")

@_log_call
def build(self):
full_options = self.options
Expand Down

0 comments on commit 8e76053

Please sign in to comment.