Skip to content

Commit e450a1d

Browse files
authored
Merge pull request #195 from wagtail/remove-widgetwithscript
Migrates away from using WidgetWithScript
2 parents 1cc5497 + 7b52375 commit e450a1d

7 files changed

Lines changed: 19 additions & 21 deletions

File tree

client/src/index.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,6 @@ import AutocompleteInput, {
44

55
export { AutocompleteInput, initAutocompleteInput };
66

7-
window.initAutoCompleteWidget = inputId => {
8-
const autocompleteInputNode = document.querySelector(
9-
`[data-autocomplete-input-id=${inputId}]`
10-
);
7+
window.initAutoCompleteWidget = autocompleteInputNode => {
118
initAutocompleteInput(autocompleteInputNode);
129
};
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class AutocompleteController extends window.StimulusModule.Controller {
2+
connect() {
3+
window.initAutoCompleteWidget(this.element);
4+
}
5+
}
6+
7+
window.wagtail.app.register('autocomplete-controller', AutocompleteController);

wagtailautocomplete/static/wagtailautocomplete/dist.css

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wagtailautocomplete/static/wagtailautocomplete/dist.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

wagtailautocomplete/templates/wagtailautocomplete/autocomplete.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
data-autocomplete-input-value="{{ widget.value }}"
55
data-autocomplete-input-type="{{ widget.target_model }}"
66
data-autocomplete-input-id="{{ widget.attrs.id }}"
7+
data-controller="autocomplete-controller"
78
{% if widget.can_create %}data-autocomplete-input-can-create{% endif %}
89
{% if widget.is_single %}data-autocomplete-input-is-single{% endif %}
910
data-autocomplete-input

wagtailautocomplete/tests/test_edit_handlers.py

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,7 @@ def test_form_field_media(self):
4747

4848
self.assertIn('wagtailautocomplete/dist.css', media_html)
4949
self.assertIn('wagtailautocomplete/dist.js', media_html)
50-
51-
def test_render_js_init(self):
52-
result = self.autocomplete_panel.render_html()
53-
self.assertIn('initAutoCompleteWidget("id_owner");', result)
50+
self.assertIn('wagtailautocomplete/controller.js', media_html)
5451

5552
def test_render_as_field(self):
5653
result = self.autocomplete_panel.render_html()

wagtailautocomplete/widgets.py

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,16 @@
11
import json
22

3-
from django import forms
3+
from django.forms import widgets, Media
44
from wagtail.admin.staticfiles import versioned_static
5-
from wagtail.utils.widgets import WidgetWithScript
65

76
from .views import render_page
87

98

10-
class Autocomplete(WidgetWithScript):
9+
class Autocomplete(widgets.TextInput):
1110
template_name = 'wagtailautocomplete/autocomplete.html'
1211

1312
def __init__(self, target_model, can_create=False, is_single=True, attrs=None):
1413
super().__init__(attrs)
15-
1614
self.target_model = target_model
1715
self.can_create = can_create
1816
self.is_single = is_single
@@ -49,16 +47,14 @@ def value_from_datadict(self, data, files, name):
4947
return value.get('pk', None)
5048
return None
5149

52-
def render_js_init(self, id_, name, value):
53-
return "initAutoCompleteWidget({id});".format(
54-
id=json.dumps(id_),
55-
)
56-
5750
@property
5851
def media(self):
59-
return forms.Media(
52+
return Media(
6053
css={
6154
'all': [versioned_static('wagtailautocomplete/dist.css')],
6255
},
63-
js=[versioned_static('wagtailautocomplete/dist.js')],
56+
js=[
57+
versioned_static('wagtailautocomplete/dist.js'),
58+
versioned_static('wagtailautocomplete/controller.js'),
59+
],
6460
)

0 commit comments

Comments
 (0)