Skip to content

Commit 9f035e7

Browse files
committed
warn when next element not found
1 parent 667eefd commit 9f035e7

File tree

7 files changed

+378
-4
lines changed

7 files changed

+378
-4
lines changed

src/assert.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,14 @@ export default {
99
}
1010

1111
if ($element.length === 0) {
12-
throw new Error(`Element "${elementOrSelector}" not found for "${property}"`);
12+
throw new Error(`Element "${elementOrSelector}" not found for config option "${property}"`);
1313
}
1414
},
1515
anyElement(elementOrSelector, property) {
1616
const $element = $(elementOrSelector);
1717

1818
if ($element.length === 0) {
19-
throw new Error(`Element "${elementOrSelector}" not found for "${property}"`);
19+
throw new Error(`Element "${elementOrSelector}" not found for config option "${property}"`);
2020
}
2121
},
2222
warn(fn, ...args) {

src/infinite-ajax-scroll.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,10 @@ export default class InfiniteAjaxScroll {
3636
}
3737

3838
this.nextHandler = nextHandler;
39-
if (typeof this.options.next === 'function') {
39+
40+
if (this.options.next === false) {
41+
this.nextHandler = function() {}
42+
} else if (typeof this.options.next === 'function') {
4043
this.nextHandler = this.options.next;
4144
}
4245

src/next-handler.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import $ from 'tealight';
2+
import Assert from './assert';
23

34
export function nextHandler(pageIndex) {
45
let ias = this;
@@ -7,6 +8,8 @@ export function nextHandler(pageIndex) {
78
let nextEl = $(ias.options.next, lastResponse)[0];
89

910
if (!nextEl) {
11+
Assert.warn(Assert.singleElement, ias.options.next, 'next');
12+
1013
return;
1114
}
1215

@@ -21,6 +24,14 @@ export function nextHandler(pageIndex) {
2124
return ias.append(data.items)
2225
.then(() => {
2326
return !!nextEl;
27+
})
28+
.then((hasNextEl) => {
29+
// only warn for first page, because at some point it's expected that there is no next element
30+
if (!hasNextEl && pageIndex <= 1 && console && console.warn) {
31+
console.warn(`Element "${ias.options.next}" not found for option "next" on "${data.url}"`)
32+
}
33+
34+
return hasNextEl;
2435
});
2536
});
2637
}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Page 1 - Infinite Ajax Scroll</title>
6+
7+
<link rel="stylesheet" href="style.css"/>
8+
</head>
9+
<body>
10+
11+
<div class="surface-container">
12+
<div class="blocks">
13+
<span class="blocks__block">1</span>
14+
<span class="blocks__block">2</span>
15+
<span class="blocks__block">3</span>
16+
<span class="blocks__block">4</span>
17+
<span class="blocks__block">5</span>
18+
<span class="blocks__block">6</span>
19+
<span class="blocks__block">7</span>
20+
<span class="blocks__block">8</span>
21+
<span class="blocks__block">9</span>
22+
<span class="blocks__block">10</span>
23+
24+
<span class="blocks__block">11</span>
25+
<span class="blocks__block">12</span>
26+
<span class="blocks__block">13</span>
27+
<span class="blocks__block">14</span>
28+
<span class="blocks__block">15</span>
29+
<span class="blocks__block">16</span>
30+
<span class="blocks__block">17</span>
31+
<span class="blocks__block">18</span>
32+
<span class="blocks__block">19</span>
33+
<span class="blocks__block">20</span>
34+
35+
<span class="blocks__block">21</span>
36+
<span class="blocks__block">22</span>
37+
<span class="blocks__block">23</span>
38+
<span class="blocks__block">24</span>
39+
<span class="blocks__block">25</span>
40+
<span class="blocks__block">26</span>
41+
<span class="blocks__block">27</span>
42+
<span class="blocks__block">28</span>
43+
<span class="blocks__block">29</span>
44+
<span class="blocks__block">30</span>
45+
46+
<span class="blocks__block">31</span>
47+
<span class="blocks__block">32</span>
48+
<span class="blocks__block">33</span>
49+
<span class="blocks__block">34</span>
50+
<span class="blocks__block">35</span>
51+
<span class="blocks__block">36</span>
52+
<span class="blocks__block">37</span>
53+
<span class="blocks__block">38</span>
54+
<span class="blocks__block">39</span>
55+
<span class="blocks__block">40</span>
56+
57+
<span class="blocks__block">41</span>
58+
<span class="blocks__block">42</span>
59+
<span class="blocks__block">43</span>
60+
<span class="blocks__block">44</span>
61+
<span class="blocks__block">45</span>
62+
<span class="blocks__block">46</span>
63+
<span class="blocks__block">47</span>
64+
<span class="blocks__block">48</span>
65+
<span class="blocks__block">49</span>
66+
<span class="blocks__block">50</span>
67+
68+
<span class="blocks__block">51</span>
69+
<span class="blocks__block">52</span>
70+
<span class="blocks__block">53</span>
71+
<span class="blocks__block">54</span>
72+
<span class="blocks__block">55</span>
73+
<span class="blocks__block">56</span>
74+
<span class="blocks__block">57</span>
75+
<span class="blocks__block">58</span>
76+
<span class="blocks__block">59</span>
77+
<span class="blocks__block">60</span>
78+
79+
<span class="blocks__block">61</span>
80+
<span class="blocks__block">62</span>
81+
<span class="blocks__block">63</span>
82+
<span class="blocks__block">64</span>
83+
<span class="blocks__block">65</span>
84+
<span class="blocks__block">66</span>
85+
<span class="blocks__block">67</span>
86+
<span class="blocks__block">68</span>
87+
<span class="blocks__block">69</span>
88+
<span class="blocks__block">70</span>
89+
</div>
90+
91+
<div class="pager">
92+
<a href="page2-no-next-el.html" class="pager__next">Next page &rightarrow;</a>
93+
</div>
94+
95+
<button id="trigger1" class="trigger">Load more</button>
96+
97+
<div class="spinner">
98+
Loading...
99+
</div>
100+
</div>
101+
102+
<!--<script src="../../../dist/infinite-ajax-scroll.js"></script>-->
103+
<script src="index.js"></script>
104+
105+
</body>
106+
</html>
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Page 1 - Infinite Ajax Scroll</title>
6+
7+
<link rel="stylesheet" href="style.css"/>
8+
</head>
9+
<body>
10+
11+
<div class="surface-container">
12+
<div class="blocks">
13+
<span class="blocks__block">1</span>
14+
<span class="blocks__block">2</span>
15+
<span class="blocks__block">3</span>
16+
<span class="blocks__block">4</span>
17+
<span class="blocks__block">5</span>
18+
<span class="blocks__block">6</span>
19+
<span class="blocks__block">7</span>
20+
<span class="blocks__block">8</span>
21+
<span class="blocks__block">9</span>
22+
<span class="blocks__block">10</span>
23+
24+
<span class="blocks__block">11</span>
25+
<span class="blocks__block">12</span>
26+
<span class="blocks__block">13</span>
27+
<span class="blocks__block">14</span>
28+
<span class="blocks__block">15</span>
29+
<span class="blocks__block">16</span>
30+
<span class="blocks__block">17</span>
31+
<span class="blocks__block">18</span>
32+
<span class="blocks__block">19</span>
33+
<span class="blocks__block">20</span>
34+
35+
<span class="blocks__block">21</span>
36+
<span class="blocks__block">22</span>
37+
<span class="blocks__block">23</span>
38+
<span class="blocks__block">24</span>
39+
<span class="blocks__block">25</span>
40+
<span class="blocks__block">26</span>
41+
<span class="blocks__block">27</span>
42+
<span class="blocks__block">28</span>
43+
<span class="blocks__block">29</span>
44+
<span class="blocks__block">30</span>
45+
46+
<span class="blocks__block">31</span>
47+
<span class="blocks__block">32</span>
48+
<span class="blocks__block">33</span>
49+
<span class="blocks__block">34</span>
50+
<span class="blocks__block">35</span>
51+
<span class="blocks__block">36</span>
52+
<span class="blocks__block">37</span>
53+
<span class="blocks__block">38</span>
54+
<span class="blocks__block">39</span>
55+
<span class="blocks__block">40</span>
56+
57+
<span class="blocks__block">41</span>
58+
<span class="blocks__block">42</span>
59+
<span class="blocks__block">43</span>
60+
<span class="blocks__block">44</span>
61+
<span class="blocks__block">45</span>
62+
<span class="blocks__block">46</span>
63+
<span class="blocks__block">47</span>
64+
<span class="blocks__block">48</span>
65+
<span class="blocks__block">49</span>
66+
<span class="blocks__block">50</span>
67+
68+
<span class="blocks__block">51</span>
69+
<span class="blocks__block">52</span>
70+
<span class="blocks__block">53</span>
71+
<span class="blocks__block">54</span>
72+
<span class="blocks__block">55</span>
73+
<span class="blocks__block">56</span>
74+
<span class="blocks__block">57</span>
75+
<span class="blocks__block">58</span>
76+
<span class="blocks__block">59</span>
77+
<span class="blocks__block">60</span>
78+
79+
<span class="blocks__block">61</span>
80+
<span class="blocks__block">62</span>
81+
<span class="blocks__block">63</span>
82+
<span class="blocks__block">64</span>
83+
<span class="blocks__block">65</span>
84+
<span class="blocks__block">66</span>
85+
<span class="blocks__block">67</span>
86+
<span class="blocks__block">68</span>
87+
<span class="blocks__block">69</span>
88+
<span class="blocks__block">70</span>
89+
</div>
90+
91+
<div class="pager">
92+
</div>
93+
94+
<button id="trigger1" class="trigger">Load more</button>
95+
96+
<div class="spinner">
97+
Loading...
98+
</div>
99+
</div>
100+
101+
<!--<script src="../../../dist/infinite-ajax-scroll.js"></script>-->
102+
<script src="index.js"></script>
103+
104+
</body>
105+
</html>
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
<!DOCTYPE html>
2+
<html lang="en">
3+
<head>
4+
<meta charset="UTF-8">
5+
<title>Page 2 - Infinite Ajax Scroll</title>
6+
7+
<link rel="stylesheet" href="style.css"/>
8+
</head>
9+
<body>
10+
11+
<div class="surface-container">
12+
<div class="blocks">
13+
<span class="blocks__block">71</span>
14+
<span class="blocks__block">72</span>
15+
<span class="blocks__block">73</span>
16+
<span class="blocks__block">74</span>
17+
<span class="blocks__block">75</span>
18+
<span class="blocks__block">76</span>
19+
<span class="blocks__block">77</span>
20+
<span class="blocks__block">78</span>
21+
<span class="blocks__block">79</span>
22+
<span class="blocks__block">80</span>
23+
24+
<span class="blocks__block">81</span>
25+
<span class="blocks__block">82</span>
26+
<span class="blocks__block">83</span>
27+
<span class="blocks__block">84</span>
28+
<span class="blocks__block">85</span>
29+
<span class="blocks__block">86</span>
30+
<span class="blocks__block">87</span>
31+
<span class="blocks__block">88</span>
32+
<span class="blocks__block">89</span>
33+
<span class="blocks__block">90</span>
34+
35+
<span class="blocks__block">91</span>
36+
<span class="blocks__block">92</span>
37+
<span class="blocks__block">93</span>
38+
<span class="blocks__block">94</span>
39+
<span class="blocks__block">95</span>
40+
<span class="blocks__block">96</span>
41+
<span class="blocks__block">97</span>
42+
<span class="blocks__block">98</span>
43+
<span class="blocks__block">99</span>
44+
<span class="blocks__block">100</span>
45+
46+
<span class="blocks__block">101</span>
47+
<span class="blocks__block">102</span>
48+
<span class="blocks__block">103</span>
49+
<span class="blocks__block">104</span>
50+
<span class="blocks__block">105</span>
51+
<span class="blocks__block">106</span>
52+
<span class="blocks__block">107</span>
53+
<span class="blocks__block">108</span>
54+
<span class="blocks__block">109</span>
55+
<span class="blocks__block">110</span>
56+
57+
<span class="blocks__block">111</span>
58+
<span class="blocks__block">112</span>
59+
<span class="blocks__block">113</span>
60+
<span class="blocks__block">114</span>
61+
<span class="blocks__block">115</span>
62+
<span class="blocks__block">116</span>
63+
<span class="blocks__block">117</span>
64+
<span class="blocks__block">118</span>
65+
<span class="blocks__block">119</span>
66+
<span class="blocks__block">120</span>
67+
68+
<span class="blocks__block">121</span>
69+
<span class="blocks__block">122</span>
70+
<span class="blocks__block">123</span>
71+
<span class="blocks__block">124</span>
72+
<span class="blocks__block">125</span>
73+
<span class="blocks__block">126</span>
74+
<span class="blocks__block">127</span>
75+
<span class="blocks__block">128</span>
76+
<span class="blocks__block">129</span>
77+
<span class="blocks__block">130</span>
78+
79+
<span class="blocks__block">131</span>
80+
<span class="blocks__block">132</span>
81+
<span class="blocks__block">133</span>
82+
<span class="blocks__block">134</span>
83+
<span class="blocks__block">135</span>
84+
<span class="blocks__block">136</span>
85+
<span class="blocks__block">137</span>
86+
<span class="blocks__block">138</span>
87+
<span class="blocks__block">139</span>
88+
<span class="blocks__block">140</span>
89+
</div>
90+
91+
<div class="pager">
92+
<a href="page1.html" class="pager__prev">&leftarrow; Prev page</a>
93+
</div>
94+
95+
<button class="trigger">Load more</button>
96+
97+
<div class="spinner">
98+
Loading...
99+
</div>
100+
</div>
101+
102+
<script src="index.js"></script>
103+
104+
</body>
105+
</html>

0 commit comments

Comments
 (0)