Skip to content

Commit ed41b47

Browse files
authored
Merge pull request #272 from skryukov/infinite-scroll
Implement infinite scroll
2 parents a287dac + 2a78218 commit ed41b47

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+3860
-221
lines changed

.github/workflows/push.yml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,16 @@ jobs:
3434
fail-fast: false
3535
matrix:
3636
ruby: ['3.0', '3.1', '3.2', '3.3']
37-
rails: ['6.1', '7.0', '7.1', '7.2', '8.0']
37+
rails: ['6.1', '7.0', '7.1', '7.2', '8.0', '8.1']
3838
exclude:
3939
- ruby: '3.0'
4040
rails: '8.0'
4141
- ruby: '3.1'
4242
rails: '8.0'
43+
- ruby: '3.0'
44+
rails: '8.1'
45+
- ruby: '3.1'
46+
rails: '8.1'
4347
- ruby: '3.0'
4448
rails: '7.2'
4549
- ruby: '3.1'
@@ -63,9 +67,7 @@ jobs:
6367
uses: ruby/setup-ruby@v1
6468
with:
6569
ruby-version: ${{ matrix.ruby }}
66-
# Use the latest version of RubyGems with Ruby 3.0 to avoid:
67-
# https://bugs.ruby-lang.org/issues/19371
68-
rubygems: ${{ startsWith(matrix.ruby-version, '3.0') && 'latest' || 'default' }}
70+
rubygems: latest
6971
bundler-cache: true
7072
env:
7173
RAILS_VERSION: ${{ matrix.rails }}

Gemfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ source 'https://rubygems.org'
55
# Specify your gem's dependencies in inertia_rails.gemspec
66
gemspec
77

8-
version = ENV['RAILS_VERSION'] || '8.0'
8+
version = ENV.fetch('RAILS_VERSION', '8.1')
99
gem 'rails', "~> #{version}.0"
1010

1111
gem 'bundler', '~> 2.0'
@@ -17,3 +17,6 @@ gem 'responders'
1717
gem 'rspec-rails', '~> 6.0'
1818
gem 'rubocop', '~> 1.21'
1919
gem 'sqlite3'
20+
21+
gem 'kaminari'
22+
gem 'pagy'

docs/.vitepress/config.mts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ export default defineConfig({
127127
{ text: 'Prefetching', link: '/guide/prefetching' },
128128
{ text: 'Load when visible', link: '/guide/load-when-visible' },
129129
{ text: 'Merging props', link: '/guide/merging-props' },
130+
{ text: 'Infinite scroll', link: '/guide/infinite-scroll' },
130131
{ text: 'Remembering state', link: '/guide/remembering-state' },
131132
],
132133
},
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<script setup lang="ts">
2+
import { computed, ref } from 'vue'
3+
import { useTabsSelectedState } from '../composables/useTabsSelectedState'
4+
5+
const props = defineProps<{
6+
v: string
7+
}>()
8+
9+
// Use the shared tabs state system
10+
const acceptValues = ref(['Vue', 'React', 'Svelte 4', 'Svelte 5'])
11+
const sharedStateKey = ref('frameworks')
12+
13+
const { selected } = useTabsSelectedState(acceptValues, sharedStateKey)
14+
15+
const shouldShow = computed(() => {
16+
if (!selected.value) return false
17+
18+
// Handle multiple values separated by pipe (|)
19+
const values = props.v.split('|').map((v) => v.trim())
20+
return values.includes(selected.value)
21+
})
22+
</script>
23+
24+
<template>
25+
<span v-if="shouldShow" class="opt-text">
26+
<slot></slot>
27+
</span>
28+
</template>
29+
30+
<style scoped>
31+
.opt-text {
32+
display: inline;
33+
}
34+
</style>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script setup lang="ts">
2+
import Opt from './Opt.vue'
3+
</script>
4+
5+
<template>
6+
<Opt v="React">
7+
<slot></slot>
8+
</Opt>
9+
</template>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script setup lang="ts">
2+
import Opt from './Opt.vue'
3+
</script>
4+
5+
<template>
6+
<Opt v="Svelte 4|Svelte 5">
7+
<slot></slot>
8+
</Opt>
9+
</template>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script setup lang="ts">
2+
import Opt from './Opt.vue'
3+
</script>
4+
5+
<template>
6+
<Opt v="Svelte 4">
7+
<slot></slot>
8+
</Opt>
9+
</template>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script setup lang="ts">
2+
import Opt from './Opt.vue'
3+
</script>
4+
5+
<template>
6+
<Opt v="Svelte 5">
7+
<slot></slot>
8+
</Opt>
9+
</template>
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<script setup lang="ts">
2+
import Opt from './Opt.vue'
3+
</script>
4+
5+
<template>
6+
<Opt v="Vue">
7+
<slot></slot>
8+
</Opt>
9+
</template>
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
11
import AvailableSince from './AvailableSince.vue'
2+
import Opt from './Opt.vue'
3+
import React from './React.vue'
4+
import Svelte from './Svelte.vue'
5+
import Svelte4 from './Svelte4.vue'
6+
import Svelte5 from './Svelte5.vue'
7+
import Vue from './Vue.vue'
28

3-
export { AvailableSince }
9+
export { AvailableSince, Opt, React, Svelte, Svelte4, Svelte5, Vue }

0 commit comments

Comments
 (0)