agusmakmun / agusmakmun/django-markdown-editor

JavaScript issue with autocomplete_fields and Semantic UI

Abierto
#271 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
JavaScript
Estrellas
901
Forks
1.3k
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Related to issue #100, but slightly different - the latest version may have fixed the bug when Bootstrap is used, but there's a Javascript issue that arises when Semantic is used. I suspect this is due to a namespacing issue with the Select2 widget. When `autocomplete_fields` are defined on a ModelAdmin, the select2 Javascript gets included in the ``. This is the order:

```

... [other stuff]
[at the very bottom]
```

The error I get in console looks like this:
```
Uncaught TypeError: o.find(...).dropdown is not a function
at HTMLDivElement. (martor.semantic.min.js:9:12540)
at Function.each (jquery.js:383:19)
at jQuery.fn.init.each (jquery.js:205:17)
at fn.martor (martor.semantic.min.js:9:344)
at HTMLDocument. (martor.semantic.min.js:9:14373)
at mightThrow (jquery.js:3489:29)
at process (jquery.js:3557:12)
```

Which is triggered by the use of `$().dropdown()` and `$().tab()` in martor.semantic.js:

```js
// Handle tabs.
mainMartor.find('.ui.martor-toolbar .ui.dropdown').dropdown();
mainMartor.find('.ui.tab-martor-menu .item').tab();
```

And here's a screenshot of how it looks:
![image](https://github.com/user-attachments/assets/5e28b653-4f5c-4544-a95f-e3e6e763b9aa)

## Steps to reproduce

To reproduce in the demo app, in settings.py change `MARTOR_THEME = 'bootstrap'` to `MARTOR_THEME = 'semantic'` and then navigate to /admin/app/post/add/. Django version 5.1.4, Martor version 1.6.45, and Chrome 131.0.6778.139.

Possible solutions: to change MARTOR_THEME back to bootstrap (which might work for the demo app, but doesn't really work if I already have Semantic for my project) or to turn off autocomplete. I also tried merely removing the corresponding 2 offending lines from martor.semantic.min.js but it breaks the functionality of the Editor/Preview tabs.

I've also tried installing django-semantic-admin, which seems to automatically turn manytomany fields into Semantic UI dropdown widgets (bypassing select2) without the need to list autocomplete_fields. So far it seems to work, but it would be nice to be able to use Martor and autocomplete_fields together without having to install a different app.

(Thanks for all your work on this @agusmakmun! It's such a useful app.)

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.