|
@@ -24,7 +24,7 @@ PROPS_PATTERN = re.compile(r'([:\w\-]+)(?:=(?:("[^"\\]*(?:\\.[^"\\]*)*")|([\w\-.
|
|
|
|
|
|
|
|
|
|
class Element(Visibility):
|
|
class Element(Visibility):
|
|
- components: List[JsComponent] = []
|
|
|
|
|
|
+ component: Optional[JsComponent] = None
|
|
libraries: List[Library] = []
|
|
libraries: List[Library] = []
|
|
extra_libraries: List[Library] = []
|
|
extra_libraries: List[Library] = []
|
|
exposed_libraries: List[Library] = []
|
|
exposed_libraries: List[Library] = []
|
|
@@ -42,7 +42,7 @@ class Element(Visibility):
|
|
self.client = _client or globals.get_client()
|
|
self.client = _client or globals.get_client()
|
|
self.id = self.client.next_element_id
|
|
self.id = self.client.next_element_id
|
|
self.client.next_element_id += 1
|
|
self.client.next_element_id += 1
|
|
- self.tag = tag if tag else self.components[0].tag if self.components else 'div'
|
|
|
|
|
|
+ self.tag = tag if tag else self.component.tag if self.component else 'div'
|
|
self._classes: List[str] = []
|
|
self._classes: List[str] = []
|
|
self._style: Dict[str, str] = {}
|
|
self._style: Dict[str, str] = {}
|
|
self._props: Dict[str, Any] = {'key': self.id} # HACK: workaround for #600 and #898
|
|
self._props: Dict[str, Any] = {'key': self.id} # HACK: workaround for #600 and #898
|
|
@@ -72,7 +72,7 @@ class Element(Visibility):
|
|
) -> None:
|
|
) -> None:
|
|
super().__init_subclass__()
|
|
super().__init_subclass__()
|
|
base = Path(inspect.getfile(cls)).parent
|
|
base = Path(inspect.getfile(cls)).parent
|
|
- cls.components = [register_vue_component(Path(component), base)] if component else []
|
|
|
|
|
|
+ cls.component = register_vue_component(Path(component), base) if component else None
|
|
cls.libraries = [register_library(Path(library), base) for library in libraries]
|
|
cls.libraries = [register_library(Path(library), base) for library in libraries]
|
|
cls.extra_libraries = [register_library(Path(library), base) for library in extra_libraries]
|
|
cls.extra_libraries = [register_library(Path(library), base) for library in extra_libraries]
|
|
cls.exposed_libraries = [register_library(Path(library), base, expose=True) for library in exposed_libraries]
|
|
cls.exposed_libraries = [register_library(Path(library), base, expose=True) for library in exposed_libraries]
|
|
@@ -115,8 +115,17 @@ class Element(Visibility):
|
|
'text': self._text,
|
|
'text': self._text,
|
|
'slots': self._collect_slot_dict(),
|
|
'slots': self._collect_slot_dict(),
|
|
'events': [listener.to_dict() for listener in self._event_listeners.values()],
|
|
'events': [listener.to_dict() for listener in self._event_listeners.values()],
|
|
- 'components': [{'key': c.key, 'name': c.name, 'tag': c.tag} for c in self.components],
|
|
|
|
- 'libraries': [{'key': l.key, 'name': l.name} for l in self.libraries],
|
|
|
|
|
|
+ 'component': {
|
|
|
|
+ 'key': self.component.key,
|
|
|
|
+ 'name': self.component.name,
|
|
|
|
+ 'tag': self.component.tag
|
|
|
|
+ } if self.component else None,
|
|
|
|
+ 'libraries': [
|
|
|
|
+ {
|
|
|
|
+ 'key': library.key,
|
|
|
|
+ 'name': library.name,
|
|
|
|
+ } for library in self.libraries
|
|
|
|
+ ],
|
|
}
|
|
}
|
|
|
|
|
|
@staticmethod
|
|
@staticmethod
|