Skip to content

Commit f6bb278

Browse files
committed
Handle dirty for dbModels.
1 parent 86d827a commit f6bb278

File tree

2 files changed

+20
-3
lines changed

2 files changed

+20
-3
lines changed

django_unicorn/static/js/eventListeners.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,6 @@ export function addActionEventListener(component, eventType) {
259259
export function addModelEventListener(component, element, eventType) {
260260
eventType = eventType || element.model.eventType;
261261
element.events.push(eventType);
262-
263262
const { el } = element;
264263

265264
el.addEventListener(eventType, (event) => {
@@ -349,6 +348,18 @@ export function addDbEventListener(component, element, eventType) {
349348
return;
350349
}
351350

351+
for (let i = 0; i < component.data[element.model.name].length; i++) {
352+
const dbModel = component.data[element.model.name][i];
353+
354+
if (dbModel.pk.toString() === element.db.pk) {
355+
if (dbModel[element.field.name] !== element.getValue()) {
356+
element.handleDirty();
357+
} else {
358+
element.handleDirty(true);
359+
}
360+
}
361+
}
362+
352363
if (!component.lastTriggeringElements.some((e) => e.isSame(element))) {
353364
component.lastTriggeringElements.push(element);
354365
}

example/unicorn/templates/unicorn/models.html

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
<div>
2+
<style>
3+
.dirty {
4+
border: red 1px solid !important;
5+
}
6+
</style>
7+
28
<div>
39
<h3>New Flavor (instance variable)</h3>
410

@@ -62,14 +68,14 @@ <h3>Last 2 added flavors</h3>
6268
<h4>PK: {{ flavor.pk }}</h4>
6369
<div>
6470
<label>Name</label>
65-
<input type="text" unicorn:field.defer="name"></input>
71+
<input type="text" unicorn:field.defer="name" u:dirty.class="dirty"></input>
6672

6773
<strong>Name</strong> {{ flavor.name }}
6874
</div>
6975

7076
<div>
7177
<label>Label</label>
72-
<input type="text" unicorn:field.defer="label"></input>
78+
<input type="text" unicorn:field.defer="label" u:dirty.class="dirty"></input>
7379

7480
<strong>Label</strong> {{ flavor.label }}
7581
</div>

0 commit comments

Comments
 (0)