März 25, 2020

Back to the 90's - window.confirm

Unser Design System enthält (natürlich) auch Styles für ein Modal-Fenster. Eine JS-Komponente gibt's kostenlos mit dazu.

Nun musste ich in letzter Zeit immer mal wieder Oberflächen bauen, die einem erlauben, Dinge zu löschen. Dinge zu löschen, ist ne feine Sache - solange man es absichtlich tut. Versehentlich ist es dann nicht mehr sooo geil.

Um das zu preventieren (doch, ich glaube, dieses Wort gibt's...) wird vor dem konkreten Request noch einmal nachgefragt, ob sich der User auch wiiirrrkllliiich sicher ist.

Nun bin ich dazu übergegangen, diese Nachfrage im Modal anzuzeigen. An und für sich auch nicht falsch. Immerhin ist unser Modal ja kinderleicht zu integrieren. Nichtsdestotrotz macht es die Sache schon noch etwas komplizierter, da dieser Zwischenschritt asynchron abläuft & auch entwickelt werden muss. Klickt der User also auf "Löschen", wird das Modal gerendet. Darin klickt er auf "Ok", was schließlich den Request absendet.

Kann man so machen. Richtig kacke ist es dann auch nicht. Es geht aber viel einfacher.

Und zwar mit dem guten alten "Confirm"-Dialog:

window.confirm('Willst du das wirklich tun - oder bist du einfach nur behindert?!');

Das Schöne an dieser Lösung ist, dass sie synchron abläuft. Sie unterbricht also einfach das Skript bzw. die jeweilige Funktion und wartet auf den Userinput. Klickt dieser auf "Ok", geht's weiter, ansonsten wird halt abgebrochen. Man muss nichts mehr coden. Der eine Befehl reicht.

Früher hat man diesen Weg gemieden, da das angezeigte Modal vom Browser selbst angezeigt wird und damals rriiicchhtttigg kacke & oldschool aussah. Mittlerweile sieht es aber in allen modernen Browsern recht stylisch aus und kann genutzt werden, ohne eine Sehbehinderung zu verursachen. Zugegeben: es passt dann wahrscheinlich nicht ganz ins restliche CI - aber ist das so schlimm? Mindestens bei internen Administrationstools ist es eine gute Option.

Ich zumindest, werde es wieder an allen möglichen Stellen für alles mögliche anwenden. Probiert's mal aus.