From 8a6421b4c19969366e019e7362faee1db45e6f75 Mon Sep 17 00:00:00 2001 From: Sonny Bakker Date: Sat, 17 Oct 2020 14:43:35 +0200 Subject: [PATCH] Initial setup --- src/newsreader/core/forms.py | 6 ++++ .../js/components/AutoCompleteInput.js | 29 +++++++++++++++++++ src/newsreader/news/core/forms.py | 6 ++-- 3 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 src/newsreader/js/components/AutoCompleteInput.js diff --git a/src/newsreader/core/forms.py b/src/newsreader/core/forms.py index ca3fe22..d597808 100644 --- a/src/newsreader/core/forms.py +++ b/src/newsreader/core/forms.py @@ -7,3 +7,9 @@ class CheckboxInput(forms.CheckboxInput): def get_context(self, name, value, attrs): context = super().get_context(name, value, attrs) return {**context, **attrs} + + +class MultiAutoCompleteWidget(forms.TextInput): + def get_context(self, name, value, attrs): + context = super().get_context(name, value, attrs) + return context diff --git a/src/newsreader/js/components/AutoCompleteInput.js b/src/newsreader/js/components/AutoCompleteInput.js new file mode 100644 index 0000000..1f95c55 --- /dev/null +++ b/src/newsreader/js/components/AutoCompleteInput.js @@ -0,0 +1,29 @@ +import React from 'react'; + +class AutoCompleteInput extends React.Component { + state = { + filteredSuggestions: [], + activeSuggestions: [], + showSuggestions: false, + userInput: '', + }; + + onChange(e) {} + + onClick(e) {} + + onKeyDown(e) {} + + render() { + return ( + + ); + } +} + +export default AutoCompleteInput; diff --git a/src/newsreader/news/core/forms.py b/src/newsreader/news/core/forms.py index a08022a..c419b8e 100644 --- a/src/newsreader/news/core/forms.py +++ b/src/newsreader/news/core/forms.py @@ -2,6 +2,7 @@ from django import forms from django.forms.widgets import CheckboxSelectMultiple from newsreader.accounts.models import User +from newsreader.core.forms import MultiAutoCompleteWidget from newsreader.news.collection.models import CollectionRule from newsreader.news.core.models import Category @@ -21,7 +22,9 @@ class RulesWidget(CheckboxSelectMultiple): class CategoryForm(forms.ModelForm): rules = forms.ModelMultipleChoiceField( - required=False, queryset=CollectionRule.objects.none(), widget=RulesWidget + required=False, + queryset=CollectionRule.objects.none(), + widget=MultiAutoCompleteWidget, ) user = forms.ModelChoiceField( @@ -35,7 +38,6 @@ class CategoryForm(forms.ModelForm): super().__init__(*args, **kwargs) self.fields["rules"].queryset = CollectionRule.objects.filter(user=self.user) - self.fields["rules"].widget.category = self.instance self.fields["user"].queryset = User.objects.filter(pk=self.user.pk)