Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 9 additions & 8 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ Caso adicionado no escopo inicial, todos os conteúdos abaixo não serão adicio
### Segurança
- Fixada versão do `axios` (removido `^`) em `package.json`, `ui/package.json` e `docs/package.json` para evitar atualizações automáticas em versões comprometidas (`0.30.4` e `1.14.1`).

### Corrigido
- `QasInfiniteScroll`: Corrigido `scrollTarget` para usar o container do overlay (`.pv-layout-overlay-drawer__content`) quando o componente é utilizado dentro de um overlay navigation. ([#1490](https://github.com/bildvitta/asteroid/issues/1490))

## [3.20.0-beta.14] - 23-03-2026

## BREAKING CHANGES
Expand All @@ -60,12 +63,6 @@ Caso adicionado no escopo inicial, todos os conteúdos abaixo não serão adicio
- CSS: adicionadas classes utilitárias `text-magic-ai`, `bg-magic-ai` e `border-magic-ai` para aplicação do gradiente de magic AI em textos, fundos e bordas respectivamente.
- `QasDateTimeInput`: adicionado comportamento de setar hora automaticamente após digitar a data. ([#1411](https://github.com/bildvitta/asteroid/issues/1411))

### Modificado
- `QasListView`: removida lógica que acionava delete automático quando `useStore: false` e `entity` estava definido; o comportamento agora é controlado exclusivamente pelas props `useAutoHandleOnDelete` e `useAutoRefetchOnDelete`.
- `search-filter.js`: modificado lógica dos campos dependentes, quando o campo estiver desabilitado, só o campo só será limpo, não batera a API. ([#1453](https://github.com/bildvitta/asteroid/issues/1453))
- `QasDateTimeInput`: modificado comportamento do model, ao sair do campo e a data for inválida ou incompleta, vamos limpar o model, mas iremos continuar exibindo o valor incorreto no campo com o aviso de erro.
- `filters.js`: modificado label da função booleanLabel para começarem com letras maiúsculas.

### Corrigido
- `QasSelect`: corrigido comportamento do texto do input do select sobrepor o item selecionado ao apertar a tecla tab.
- `QasSelectListDialog`: corrigido mutação direta da prop `options` causada por `filteredOptions` ser inicializado com a mesma referência do array original. Corrigido usando `ref([...props.options])` para garantir uma cópia independente.
Expand All @@ -74,6 +71,12 @@ Caso adicionado no escopo inicial, todos os conteúdos abaixo não serão adicio
- Corrigido cor da linha quando da step anterior quando uma outra step é finalizada. ([#1105](https://github.com/bildvitta/asteroid/issues/1105))
- Corrigido tamanho das linhas centrais setando proporções na primeira e última linha. ([#1105](https://github.com/bildvitta/asteroid/issues/1105))

### Modificado
- `QasListView`: removida lógica que acionava delete automático quando `useStore: false` e `entity` estava definido; o comportamento agora é controlado exclusivamente pelas props `useAutoHandleOnDelete` e `useAutoRefetchOnDelete`.
- `search-filter.js`: modificado lógica dos campos dependentes, quando o campo estiver desabilitado, só o campo só será limpo, não batera a API. ([#1453](https://github.com/bildvitta/asteroid/issues/1453))
- `QasDateTimeInput`: modificado comportamento do model, ao sair do campo e a data for inválida ou incompleta, vamos limpar o model, mas iremos continuar exibindo o valor incorreto no campo com o aviso de erro.
- `filters.js`: modificado label da função booleanLabel para começarem com letras maiúsculas.

### Removido
- `QasBoardGenerator`:
- removido prop `useMarkRaw`, agora o componente faz o controle sozinho de quando vai ser ou não reativo os dados.
Expand Down Expand Up @@ -4982,5 +4985,3 @@ Adicionado suporte para Pinia/Vuex Seguindo os padrões da biblioteca `@bildvitt
[3.20.0-beta.10]: https://github.com/bildvitta/asteroid/compare/v3.20.0-beta.9...v3.20.0-beta.10?expand=1
[3.20.0-beta.13]: https://github.com/bildvitta/asteroid/compare/v3.20.0-beta.10-alpha.15...v3.20.0-beta.13?expand=1
[3.20.0-beta.14]: https://github.com/bildvitta/asteroid/compare/v3.20.0-beta.14-alpha.4...v3.20.0-beta.14?expand=1
[3.20.0-beta.15]: https://github.com/bildvitta/asteroid/compare/v3.20.0-beta.14...v3.20.0-beta.15?expand=1
[3.20.0-beta.16]: https://github.com/bildvitta/asteroid/compare/v3.20.0-beta.15...v3.20.0-beta.16?expand=1
34 changes: 28 additions & 6 deletions ui/src/components/infinite-scroll/QasInfiniteScroll.vue
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@
import QasEmptyResultText from '../empty-result-text/QasEmptyResultText.vue'

import { ref, computed, inject, nextTick } from 'vue'

import NotifyError from '../../plugins/notify-error/NotifyError.js'
import { useOverlayNavigation } from '../../composables'

defineOptions({ name: 'QasInfiniteScroll' })

Expand Down Expand Up @@ -69,13 +71,20 @@ const props = defineProps({

defineExpose({ refresh, remove, fetchList })

// emits
const emit = defineEmits(['fetch-success', 'fetch-error'])

// models
const modelList = defineModel('list', { type: Array, default: () => [] })
const modelFields = defineModel('fields', { type: Object, default: () => ({}) })

// globals
const axios = inject('axios')

// composables
const { isOverlay } = useOverlayNavigation()

// refs
const infiniteScroll = ref(null)

const hasFetchingError = ref(false)
Expand All @@ -84,14 +93,27 @@ const hasMadeFirstFetch = ref(false)
const count = ref(0)
const offset = ref(0)

// computeds
const listLength = computed(() => modelList.value.length)

const attributes = computed(() => ({
offset: 100,
debounce: 0,
...(props.maxHeight && { scrollTarget: '.qas-infinite-scroll' }),
...props.infiniteScrollProps
}))
const attributes = computed(() => {
/**
* Quando o componente é utilizado dentro de um overlay, o scroll target deve ser o container do conteúdo do drawer,
* para que o infinite scroll funcione corretamente. Caso contrário, o scroll target é a própria div do infinite
* scroll, mas apenas se a prop maxHeight for definida, garantindo que haja um container com scroll.
* Se maxHeight não for definido, o infinite scroll irá escutar o scroll da janela por padrão.
*/
const scrollTarget = isOverlay
? '.pv-layout-overlay-drawer__content'
: props.maxHeight ? '.qas-infinite-scroll' : undefined

return {
offset: 100,
debounce: 0,
scrollTarget,
...props.infiniteScrollProps
}
})

const isEmptyList = computed(() => !listLength.value && !isFetching.value)

Expand Down