Tenho uma tabela e algumas células estouram. Essas <td>
têm uma classe que dá a elas reticências no final. Mas há uma maneira de adicionar um pequeno botão/span/qualquer coisa DEPOIS das reticências?
<td #elCol ...>
<ng-container *ngIf="overflows(elCol)">
YES <!-- this is displayed when it overflows, the function works -->
</ng-container>
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
<button *ngIf="overflows(elCol)">
click me <!-- Can't get this to displayed because it is behind the text -->
</button>
</td>
td {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
max-width: 20rem;
}
Podem ser empregadas soluções HTML/SCSS e TS/JS
você pode ter um
.container
elemento dentro do<td>
, envolvendo os elementos que você precisa um ao lado do outro, estilizando-o comdisplay: flex
.Então, a largura total do
<td>
será determinada pelo seu estilo, como você fez comwidth: 20rem
e, ainda assim, o texto que será truncado terá sua largura decidida por essa quantidade menos o espaço ocupado pelo botão seguinte.A demonstração está usando vanilla js/css e não reproduzindo estritamente sua intenção original voltada para Angular. A propósito, eu entendo que o que a lógica
*ngIf="overflows(elCol)"
faz é renderizar o elemento se o conteúdo estourar o.truncate
tamanho do elemento. Então, para mostrar o conceito, eu também implementei minha própria versão daoverflows
função que retornarátrue
oufalse
fornecerá o elemento que você deseja verificar.Na demonstração, essa função é invocada sobre ambos os
.truncate
elementos existentes nas duas linhas da tabela, onde o primeiro está transbordando e o segundo não.