AkiraAkira.dev
2 min de leitura

A zona que deixa de convidar

O componente estava feito, montado no ecrã real, com um PDF já anexado. E continuava a pedir outro ficheiro que não podia aceitar.

também em EN FR

O componente estava feito. Montado no ecrã de Faturas do nosferry.com, com um PDF já anexado, e a dizer Drag a file here.

Não podia aceitar mais nenhum. O multiple estava desligado, havia um ficheiro escolhido, e o ficheiro seguinte ia substituir o que lá estava sem avisar. A zona anunciava uma capacidade que não tinha. Nada rebentou. Nenhum teste ficou vermelho. O ecrã fez uma promessa que o código não cumpria.

Até aí, aceitar um ficheiro passava por um <input type="file">. A caixa era do design system e o controlo lá dentro era do Chrome: Choose File No file chosen, no tipo de letra do Chrome, em inglês, e não havia forma de o estilizar. Era o único sítio onde a aplicação deixava de parecer ela própria. O Dropzone do @akira-io/ui resolve isso. Não é a parte interessante: qualquer design system lá chega mais cedo ou mais tarde.

O que interessa é uma linha:

const inviting = multiple || chosen.length === 0;

Com um ficheiro escolhido e sem multiple, a área de arrastar e largar, o rótulo e o botão desaparecem. Fica o ficheiro, o tamanho e o controlo que o remove, e substituir implica remover primeiro. Com multiple nada muda, porque outro ficheiro ainda cabe. A raiz e o input escondido continuam montados nos dois casos: desaparece o convite, nunca o que está por baixo.

A objeção é legítima. É mais um estado para manter, e custa um clique que antes ninguém pagava. Continua a ser o lado mais barato. Um convite falso é um defeito de que ninguém se queixa: larga-se o segundo ficheiro, vê-se o primeiro desaparecer e deixa-se de confiar no ecrã. O clique a mais vê-se. A promessa quebrada não.

Nada disto veio do desenho. Veio de ter a peça montada no ecrã para o qual foi feita, com conteúdo a sério lá dentro.

O desenho aprova aquilo que consegue ver. Só o ecrã real mostra o que a peça anda a prometer.

partilhar