Skip to content

Commit c858f22

Browse files
committed
render it works now
1 parent d5ee737 commit c858f22

File tree

3 files changed

+23
-24
lines changed

3 files changed

+23
-24
lines changed

livewire/templatetags/livewire_tags.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ def livewire_scripts(context):
1616

1717
@register.simple_tag(takes_context=True)
1818
def livewire(context, component, **kwargs):
19-
livewire_component = instance_class(component, **kwargs)
20-
return livewire_component.render_to_templatetag()
19+
livewire_component = instance_class(component)
20+
return livewire_component.render_to_templatetag(**kwargs)

livewire/utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,5 +45,5 @@ def instance_class(component_name, **kwargs):
4545
module = importlib.import_module(path)
4646
class_name = get_component_name(component_name)
4747
class_livewire = getattr(module, '{}Livewire'.format(class_name))
48-
inst = class_livewire(**kwargs)
48+
inst = class_livewire()
4949
return inst

livewire/views.py

Lines changed: 20 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,34 @@
1818

1919
def livewire_message(request, component_name):
2020
inst = instance_class(component_name)
21+
context = {}
2122
if request.method == "POST":
22-
inst.parser_payload(request)
23-
resp = inst.render()
23+
context = inst.parser_payload(request)
24+
resp = inst.render(**context)
2425
return JsonResponse(resp, safe=False)
2526

2627

27-
2828
class LivewireTemplateTag:
29-
def render_to_templatetag(self):
29+
def render_to_templatetag(self, **kwargs):
3030
self.id = get_id()
3131
component = self.get_component_name()
32-
context = self.get_context_data()
32+
data = self.get_context_data(**kwargs)
3333
initial_data = {
3434
"id": self.id,
3535
"name": component,
3636
"redirectTo": False,
3737
"events": [],
3838
"eventQueue": [],
3939
"dispatchQueue": [],
40-
"data": context,
40+
"data": data,
4141
"children": {},
42-
"effects":[],
42+
"effects": [],
4343
"checksum": "9e4c194bb6aabf5f1", # TODO: checksum
4444
}
45+
context = {}
4546
context["initial_data"] = initial_data
4647
component_template = self.get_template_name()
47-
self.render(context)
48+
self.render(**context)
4849
return self.render_component(component_template, context)
4950

5051
class LivewireProcessData:
@@ -64,6 +65,7 @@ def parser_payload(self, request):
6465
self.request = request
6566
payload = json.loads(request.body)
6667
self.id = payload.get("id")
68+
data = payload.get("data", {})
6769
action_queue = payload.get("actionQueue", [])
6870
for action in action_queue:
6971
action_type = action.get("type")
@@ -79,20 +81,16 @@ def parser_payload(self, request):
7981
patterns
8082
"""
8183
local_method = getattr(self, method)
82-
local_method(*params)
84+
return local_method(*params)
8385
elif action_type == "syncInput":
84-
data = {}
8586
data[action_payload["name"]] = action_payload["value"]
86-
self.update_context(data)
87+
return self.update_context(data)
88+
8789

8890

8991
class LivewireComponent(LivewireTemplateTag, LivewireProcessData):
9092
id = None
9193

92-
def __init__(self, **kwargs):
93-
for key, value in kwargs.items():
94-
setattr(self, key, value)
95-
9694
def get_component_name(self):
9795
name = self.__class__.__name__.replace("Livewire", "")
9896
name = snakecase(name)
@@ -101,22 +99,23 @@ def get_component_name(self):
10199
def get_template_name(self):
102100
return self.template_name
103101

104-
def get_context_data(self):
102+
def get_context_data(self, **kwargs):
105103
mount_result = {}
106104
# call mount if exists
107105
if hasattr(self, "mount") and callable(self.mount): # Livewire Compatility
108106
mount_result = self.mount()
109-
110107
params = get_vars(self)
111108
for property in params:
112109
mount_result[property] = getattr(self, property)
110+
if kwargs:
111+
mount_result.update(kwargs)
113112
return mount_result
114113

115-
def get_dom(self, template_name):
116-
context = self.get_context_data()
114+
def get_dom(self, template_name, context):
115+
context = self.get_context_data(**context)
117116
return self.render_component(template_name, context)
118117

119-
def render(self, context={}):
118+
def render(self, **context):
120119
"""
121120
A Livewire component's render method gets called on the initial page load AND every subsequent component update.
122121
TODO: to Implement
@@ -125,7 +124,7 @@ def render(self, context={}):
125124
return self.view(template_name, context)
126125

127126
def view(self, template_name, context):
128-
dom = self.get_dom(template_name)
127+
dom = self.get_dom(template_name, context)
129128
return self.render_to_response(template_name, dom)
130129

131130
def render_component(self, component_template, context={}):

0 commit comments

Comments
 (0)