React Tree Grid Sizing
The Ignite UI for React Sizing feature in React Tree Grid is an important aspect of creating responsive and user-friendly grid interfaces. The React Tree Grid Sizing feature enables users to adjust the width and height of the grid to accommodate different screen sizes, content, or user preferences. In terms of border and padding size for the IgrTreeGrid, they are taken into its width/height size calculations or also known as Border box sizing. It is applied in all scenarios.
[!Note] If the Border box sizing is overridden by the user we cannot guarantee that the
IgrTreeGridwill size correctly.
React Tree Grid Width
Se awidth entrada não tiver valor atribuído, seu valor padrão é100% e tentaIgrTreeGrid preencher o espaço disponível. Você pode verificar como a grade reage a isso naPercentages seção.
[!Note] Setting manually the
widthstyle of theIgrTreeGriditself will result in an unexpected behavior.
Null
A gradewidth pode aceitar o valor denull, que, quando definido, renderiza todas as colunas do DOM. A grade é dimensionada de acordo para que não haja barra de rolagem horizontal da grade, já que a virtualização de colunas não é aplicada.
- Se houver 6 colunas e nenhuma delas tiver largura definida, a grade terá
widthde816px, porque cada coluna por padrão tem atribuídowidthde136pxnesse cenário. O mesmo acontecerá se as colunas tiveremwidthpercentuais. Se a barra de rolagem vertical for renderizada ou houver recursos que renderizam colunas adicionais, a largura delas também será adicionada.
- Se houver 6 colunas com largura de coluna definida para
200px, elas em nossa janela e todas estarão visíveis:
- Se houver mais colunas ou outras com maior largura que saem da visão do navegador, todas ainda vão renderizar. Vamos ter a mesma quantidade de colunas, mas cada uma com largura de coluna de
300px. Como nem todos cabem na área de visualização do navegador, isso criará uma barra de rolagem nativamente. O próximo exemplo mostra exatamente esse cenário:
- Se a grade tiver um elemento pai de qualquer tipo e não tiver nenhum overflow configurado, ela ainda assim renderizará todas as colunas visíveis. Caso contrário, se o elemento pai tiver overflow
autoouscroll, uma barra de rolagem para esse elemento pai será renderizada nativamente. O pai tem maior altura para facilitar a visualização no exemplo a seguir.
[!Note] Due to this behavior, if the grid data contains too many columns, it might have significant impact on the browser performance, since all columns would be rendered without virtualization.
Pixels
Quando oIgrTreeGrid tem suawidth entrada definida para pixels, ele define o tamanho total da grade para esse valor e será estático. Ele não reage a nenhum redimensionamento ou mudança no DOM do navegador, embora isso não aconteça com o conteúdo da grade:
- Quando a largura é definida em pixels para que a grade renderize a barra de rolagem horizontal, sua largura de conteúdo precisa exceder a grade
widthespecificada. Vamos por exemplo, fazer com que a largura combinada das colunas seja1200pxexcedida. Nesse caso, uma barra de rolagem horizontal será renderizada.
- Para cenários onde a grade tem um elemento pai, depende do estilo do pai se ela vai renderizar a barra de rolagem ou não. Todo o resto relacionado à própria grade ainda é mantido. Se a largura do elemento pai for menor que a largura da grade e tiver o estilo de overflow configurado como
autoou,scrolla barra de rolagem será renderizada nativamente. Por exemplo, se o pai definiuwidthpara1000pxe oIgrTreeGridwidthainda1200pxestá, ele ficará semelhante às seguintes ilustrações:
Percentages
Quando owidth deIgrTreeGrid é definido para percentuais, ele dimensiona a grade de acordo com a largura do elemento pai. Se o elemento pai não tiver largura especificada, oIgrTreeGrid tamanho da vontade em relação à janela do navegador.
- Por exemplo, se definirmos a entrada da grade
widthpara100%e não houver nenhum elemento pai, ele preencherá 100% da largura disponível da janela do navegador. Se for redimensionado, a grade também será redimensionada de acordo.
- Se definirmos a largura da grade como
100%e houver um elemento pai com largura específica de1200px, isso significará que a grade terá tamanho relativo a esse elemento e sua largura final será1200px.
- Se tivermos um elemento pai com
widthde1000pxe temos as gradewidthdefinidas para150%, a largura da grade calculada será1500px. Nesse caso, a grade ainda será totalmente visível, mas se desativarmosoverflow: autoo pai, esse pai renderizará a barra de rolagem sozinho.
React Tree Grid Height
Por padrão, se nenhuma altura for definida para oIgrTreeGrid, ela será definida para100%. Você pode verificar como a grade reage dependendo da estrutura do DOM naPercentages seção.
[!Note] Setting manually the
heightstyle of theIgrTreeGriditself will result in an unexpected behavior.
Null
OIgrTreeGrid height A entrada pode aceitarnull valor, que, quando definido, exibe todas as linhas sem barra de rolagem, não importa quantas sejam. Nesse caso, não há virtualização vertical, já que a grade renderiza todas as linhas de qualquer forma.
- Se tivermos dados com 14 linhas, neste caso, a grade renderizará todas as 14 e dimensionará a grade para que todas fiquem visíveis sem nenhum espaço vazio dentro da grade.
- Se tivermos 24 linhas, a grade ainda renderizará todas as linhas, mas como são muitas, elas excedem os limites do navegador. É por isso que o próprio navegador renderizará a barra de rolagem vertical por padrão para que o usuário possa rolar para baixo até o restante das linhas.
- Se houver um elemento pai com definido
height, a grade ainda renderizará todas as linhas e não será afetada. Digamos que o pai ou mãe tenhaheightde.650pxSe estiveroverflowdefinido paraautoou,scrollele renderizará uma barra de rolagem vertical, mas a grade ainda não será afetada:
[!Note] Due to this behavior, if the grid data contains too many rows, it might have significant impact on the browser performance, since all rows would be rendered without virtualization.
Pixels
Definindo oIgrTreeGrid height Em pixels é mais direto, já que a grade terá tamanho específico em todas as ocasiões, de forma semelhante a comowidth é definida nos pixels.
- Se definirmos, por exemplo, a altura
500pxcom 4 linhas para nossos dados, a grade ficará nesse tamanho e, como 4 linhas não são suficientes para preencher a área visível, espera-se que haja alguma área vazia.
- Se o número de linhas exceder a área visível da grade quando
heightestá definido para pixels, uma barra de rolagem vertical será renderizada. Por exemplo, uma grade com500pxaltura definida e 14 linhas será renderizada da seguinte forma:
- Se houver um elemento pai com
heightdefinido, a menos que tenhaoverflowsido definido comoautoouscroll, a grade ainda será totalmente visível. Caso contrário, ele vai renderizar uma barra de rolagem.
Percentages
Quando aheight entrada é definida para percentuais, oIgrTreeGrid tamanho da will é baseado na altura do elemento pai. Se o elemento pai tiver seuheight conjunto em pixels ou porcentagens, a grade terá tamanho relativo ao tamanho do pai.
Quando o elemento pai não tem altura definida, o navegador não atribui altura a ele inicialmente e o dimensiona com base em seus filhos e seu tamanho. É por isso que não há como a grade saber qual altura de base usar para aplicar o dimensionamento percentual com base nela. Por esse motivo, ele renderizará no máximo 10 linhas e, se forem mais linhas, uma barra de rolagem vertical será renderizada. Caso contrário, a grade se ajustará ao número de linhas renderizadas. Examinaremos esse cenário com mais detalhes nos próximos exemplos.
Vamos definirwidth como1200px e o elemento pai não ter nenhum tamanho aplicado a ele:
- Se houver menos de 10 linhas, a grade tentará encaixar todas as linhas na área visível sem ter um espaço vazio entre a última linha e a parte inferior da área visível. Por exemplo, vamos ter os dados da grade consistindo em 7 linhas. A grade renderizará todas as 7 linhas sem barra de rolagem vertical e sem espaço vazio dentro da grade.
- Se houver mais de 10 linhas, uma barra de rolagem vertical será renderizada para o restante das linhas e apenas 10 linhas poderão ser visíveis a qualquer momento. No próximo exemplo, apenas o número da linha é aumentado para 14.
- Se definirmos a altura do elemento pai para
800pxe aIgrTreeGridaltura,100%isso significa que a grade será dimensionada para 100% de800px.
- Se o
IgrTreeGridheighté definido para um número maior que100%e o elemento pai tem altura; para o pai renderizar a barra de rolagem, novamente precisa teroverflowdefinido comoautoouscroll. Caso contrário, a grade será totalmente visível e com tamanho relativo ao tamanho do pai.
- Se quisermos que a grade seja dimensionada para
100%a janela do navegador, precisaríamos definir tantobodya altura quanto a dos elementos da grade pai para100%. Nesse caso, o elemento pai pode ser dimensionado e a grade será dimensionada de acordo se o navegador for redimensionado.
React Tree Grid Column Sizing
Dependendo do tamanho da grade em si, as colunas dentro dela também podem ser dimensionadas de forma diferente, o que pode resultar em cenários em que a grade renderiza a barra de rolagem horizontal ou não. As colunas podem ter largura definida em pixels, porcentagens ou dimensionadas automaticamente quando nada é definido. Vamos dar uma olhada mais profunda nesses cenários nesta seção.
Default
Por padrão, quando uma coluna não tem uma largura especificada, ela tenta autodimensionar, para que ela preencha se houver algum espaço vazio disponível na área de visualização da grade. Colunas com tamanho automático têm largura mínima de136px, então se a área disponível for menor que136px para aquela coluna, ela será padrão para esse tamanho.
Quando a grade é redimensionada nesses cenários, a largura da coluna também é atualizada para refletir as alterações, para preencher qualquer novo espaço vazio disponível.
- Se uma coluna não tiver especificado
widthe oIgrTreeGridtemwidthdefinido paranull, ela será dimensionada para o mínimo de136px. Isso significa que, para uma grade comwidthnulle 6 colunas que não têm largura, cada coluna terá o tamanho para136px.
- Quando há múltiplas colunas autodimensionadas, elas dividem igualmente o espaço disponível entre si. Isso significa que, se tivermos 6 colunas e houver área vazia de ,
1200pxcada uma terá o tamanho de200px.
- Se houver espaço vazio disponível, de modo que cada coluna com tamanho automático será menor,
136pxtodas as colunas com tamanho automático serão direcionadas por136pxpadrão e a grade renderizará a barra de rolagem horizontal. No próximo exemplo, vamos ter 12 colunas com tamanho automático e a gradewidthdefinida para1000px.
- Se uma coluna não tiver
widthespecificado, mas todas as outras colunas tiveremwidthpixels ou porcentagens, essa coluna tentará também preencher o espaço disponível. Por exemplo, se não tivermos largura definida para a primeira coluna e todas as outras 5 têmwidthof100px, a primeira preencherá o restante.
- O mesmo vale se várias colunas não tiverem
widthespecificado, todas dividirão igualmente o espaço disponível entre si. Na ilustração seguinte, a primeira coluna estáwidthdefinida para100px.
[!Note] Feature columns like Row Selector checkbox column and etc. fill additional space that is taken into account when autosizing columns.
Pixels
Quando as colunas têm pixels definidoswidth específicos, elas se mantêm nesse tamanho, a menos que sejam redimensionadas manualmente. Como a combinaçãowidth das colunas é estática, ela pode ser menor que aIgrTreeGrid width ou ultrapassá-la.
- Se a combinação
widthde todas as colunas for menor que aIgrTreeGridwidth, haveria um espaço vazio dentro da grade que as colunas não conseguiriam preencher. Esse é o comportamento esperado doIgrTreeGrid. No próximo exemplo, as colunas têm150pxlargura.
- Se a soma
widthde todas as colunas for maior que a realIgrTreeGridwidth, uma barra de rolagem horizontal será renderizada. No próximo exemplo, cada uma das 6 colunas tem largura de300pxe grade tem largura de1200px, o que significa que as colunas combinadas têm excesso de600pxque sai dos limites.
Percentages
Quando as colunas têm percentuaiswidth, seu tamanho é calculado em relação ao tamanho da grade. É semelhante ao funcionamento da largura nos pixels, mas também oferece resposta às colunas, o que significa que, quando a grade é redimensionada, as colunas também serão redimensionadas de acordo.
- Se a largura combinada de todas as colunas for menor,
100%de forma semelhante a quando está em pixels, pode haver uma área vazia da grade que as colunas não cobrem.
- Se a largura combinada for exata
100%, as colunas preencherão todo o espaço disponível da grade.
- Se a largura combinada exceder
100%para que o usuário possa ver as colunas fora de vista, uma barra de rolagem horizontal é renderizada.
- Se as colunas estiverem definidas em porcentagens e a grade
widthestiver definida paranull, ela se aplicariawidtha cada136pxcoluna. Isso porque as colunas não podem ser dimensionadas relativamente à grade, já que ela não temwidthsi mesma e depende do seu conteúdo para ser dimensionado quandowidthestá.nullNo exemplo a seguir, todas as 6 colunas foramwidthdefinidas para50%:
API References
Additional Resources
Nossa comunidade é ativa e sempre acolhedora para novas ideias.