@internetarchive/bookreader 5.0.0-32-shadydom → 5.0.0-32-1

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,6 +7,11 @@
7
7
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
8
8
  <meta name="apple-mobile-web-app-capable" content="yes">
9
9
 
10
+ <!-- WC dependencies -->
11
+ <script type="text/javascript" src="https://polyfill.io/v3/polyfill.min.js?features=es2015%2Ces5%2CglobalThis"></script>
12
+ <script type="text/javascript" src="https://unpkg.com/lit@2.1.2/polyfill-support.js"></script>
13
+ <script type="text/javascript" src="https://unpkg.com/@webcomponents/webcomponentsjs@2.2.10/webcomponents-bundle.js"></script>
14
+
10
15
  <!-- JS dependencies -->
11
16
  <script src="../BookReader/webcomponents-bundle.js"></script>
12
17
  <script src="../BookReader/jquery-1.10.1.js"></script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@internetarchive/bookreader",
3
- "version": "5.0.0-32-shadydom",
3
+ "version": "5.0.0-32-1",
4
4
  "description": "The Internet Archive BookReader.",
5
5
  "repository": {
6
6
  "type": "git",
@@ -26,7 +26,7 @@
26
26
  "private": false,
27
27
  "dependencies": {
28
28
  "@internetarchive/ia-activity-indicator": "^0.0.1",
29
- "@internetarchive/ia-item-navigator": "0.0.5-1",
29
+ "@internetarchive/ia-item-navigator": "0.0.5",
30
30
  "@internetarchive/ia-menu-slider": "^1.1.1",
31
31
  "@internetarchive/ia-sharing-options": "^0.1.4",
32
32
  "@internetarchive/icon-bookmark": "^1.1.3",
@@ -16,7 +16,7 @@ export default class BookmarksProvider {
16
16
  signedIn,
17
17
  bookreader,
18
18
  modal,
19
- onProviderChange
19
+ onProviderChange,
20
20
  } = options;
21
21
 
22
22
  const referrerStr = `referer=${encodeURIComponent(location.href)}`;
@@ -142,8 +142,8 @@ class IABookmarks extends LitElement {
142
142
  if (this.displayMode === 'login') {
143
143
  return;
144
144
  }
145
+ this.fetchUserBookmarks();
145
146
  this.setBREventListeners();
146
- this.initializeBookmarks();
147
147
  }
148
148
 
149
149
  updateDisplay() {
@@ -153,6 +153,9 @@ class IABookmarks extends LitElement {
153
153
  }
154
154
 
155
155
  fetchUserBookmarks() {
156
+ if (!this.api.identifier) {
157
+ return;
158
+ }
156
159
  this.fetchBookmarks()
157
160
  .then(() => {
158
161
  this.initializeBookmarks();
@@ -227,7 +230,7 @@ class IABookmarks extends LitElement {
227
230
  }
228
231
 
229
232
  fetchBookmarks() {
230
- return this.api.getAll().then((res) => {
233
+ return this.api.getAll().then(res => res.text()).then((res) => {
231
234
  let response;
232
235
  try {
233
236
  response = JSON.parse(res);
@@ -105,7 +105,7 @@ export class IaBookReader extends LitElement {
105
105
 
106
106
  render() {
107
107
  return html`
108
- <div>
108
+ <div class="main-component">
109
109
  <ia-item-navigator
110
110
  ?viewportInFullscreen=${this.fullscreen}
111
111
  .basehost=${this.baseHost}
@@ -170,17 +170,21 @@ export class IaBookReader extends LitElement {
170
170
  min-height: unset;
171
171
  }
172
172
 
173
- div[slot="main"] {
174
- display: flex;
173
+ .main-component {
174
+ height: 100%;
175
175
  width: 100%;
176
+ min-height: inherit;
176
177
  }
177
178
 
178
- slot[name="main"] {
179
- flex: 1;
179
+ div[slot="header"],
180
+ div[slot="main"] {
181
+ display: flex;
182
+ width: 100%;
180
183
  }
181
184
 
182
185
  slot {
183
186
  display: block;
187
+ flex: 1;
184
188
  }
185
189
 
186
190
  ia-item-navigator {
@@ -0,0 +1,57 @@
1
+ import {
2
+ html,
3
+ fixtureSync,
4
+ expect,
5
+ fixtureCleanup,
6
+ } from '@open-wc/testing';
7
+ import '../../../../src/BookNavigator/bookmarks/ia-bookmarks.js';
8
+ import sinon from 'sinon';
9
+
10
+ afterEach(() => {
11
+ sinon.restore();
12
+ fixtureCleanup();
13
+ });
14
+
15
+ describe('<ia-bookmarks>', () => {
16
+ it('uses `setup` to start component', async () => {
17
+ const el = fixtureSync(html`<ia-bookmarks></ia-bookmarks>`);
18
+ await el.updateComplete;
19
+
20
+ let fetchHappened = false;
21
+ el.bookreader.bookId = 'foo';
22
+ el.displayMode = 'bookmarks';
23
+
24
+ el.fetchBookmarks = async () => {
25
+ fetchHappened = true;
26
+ return await Promise.resolve();
27
+ };
28
+
29
+ const fetchSpy = sinon.spy(el, 'fetchUserBookmarks');
30
+
31
+ el.setup();
32
+ await el.updateComplete;
33
+
34
+ expect(fetchSpy.callCount).to.equal(1);
35
+ expect(fetchHappened).to.equal(true);
36
+ });
37
+ it('does not fetch user bookmarks if displayMode = login', async () => {
38
+ const el = fixtureSync(html`<ia-bookmarks></ia-bookmarks>`);
39
+ await el.updateComplete;
40
+
41
+ let fetchHappened = false;
42
+ el.displayMode = 'login';
43
+
44
+ el.fetchBookmarks = async () => {
45
+ fetchHappened = true;
46
+ return await Promise.resolve();
47
+ };
48
+
49
+ const fetchSpy = sinon.spy(el, 'fetchUserBookmarks');
50
+
51
+ el.setup();
52
+ await el.updateComplete;
53
+
54
+ expect(fetchSpy.callCount).to.equal(0);
55
+ expect(fetchHappened).to.equal(false);
56
+ });
57
+ });