@internetarchive/collection-browser 0.4.10-alpha.3 → 0.4.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +26 -26
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/LICENSE +661 -661
  8. package/README.md +83 -83
  9. package/dist/index.d.ts +9 -9
  10. package/dist/index.js +9 -9
  11. package/dist/src/app-root.d.ts +50 -50
  12. package/dist/src/app-root.js +278 -278
  13. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  17. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  18. package/dist/src/assets/img/icons/chevron.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  28. package/dist/src/assets/img/icons/login-required.js +2 -2
  29. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  55. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  56. package/dist/src/assets/img/icons/null-result.js +2 -2
  57. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  58. package/dist/src/assets/img/icons/restricted.js +2 -2
  59. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  60. package/dist/src/assets/img/icons/reviews.js +2 -2
  61. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  62. package/dist/src/assets/img/icons/upload.js +2 -2
  63. package/dist/src/assets/img/icons/views.d.ts +1 -1
  64. package/dist/src/assets/img/icons/views.js +2 -2
  65. package/dist/src/circular-activity-indicator.d.ts +5 -5
  66. package/dist/src/circular-activity-indicator.js +17 -17
  67. package/dist/src/collection-browser.d.ts +279 -279
  68. package/dist/src/collection-browser.js +1156 -1156
  69. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  70. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  71. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  72. package/dist/src/collection-facets/facets-template.js +125 -125
  73. package/dist/src/collection-facets/more-facets-content.d.ts +75 -75
  74. package/dist/src/collection-facets/more-facets-content.js +340 -340
  75. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  76. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  77. package/dist/src/collection-facets.d.ts +81 -81
  78. package/dist/src/collection-facets.js +375 -375
  79. package/dist/src/empty-placeholder.d.ts +11 -11
  80. package/dist/src/empty-placeholder.js +42 -42
  81. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  82. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  83. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  84. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  85. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  86. package/dist/src/mediatype/mediatype-config.js +85 -85
  87. package/dist/src/models.d.ts +115 -115
  88. package/dist/src/models.js +125 -125
  89. package/dist/src/models.js.map +1 -1
  90. package/dist/src/restoration-state-handler.d.ts +45 -45
  91. package/dist/src/restoration-state-handler.js +230 -230
  92. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  93. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  94. package/dist/src/sort-filter-bar/alpha-bar.d.ts +20 -20
  95. package/dist/src/sort-filter-bar/alpha-bar.js +136 -128
  96. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  97. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  99. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/list.js +2 -2
  101. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  102. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  103. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  104. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  105. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +108 -113
  106. package/dist/src/sort-filter-bar/sort-filter-bar.js +548 -614
  107. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  108. package/dist/src/styles/item-image-styles.d.ts +8 -8
  109. package/dist/src/styles/item-image-styles.js +9 -9
  110. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  111. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  112. package/dist/src/tiles/grid/account-tile.d.ts +20 -20
  113. package/dist/src/tiles/grid/account-tile.js +64 -64
  114. package/dist/src/tiles/grid/collection-tile.d.ts +17 -17
  115. package/dist/src/tiles/grid/collection-tile.js +71 -71
  116. package/dist/src/tiles/grid/item-tile.d.ts +32 -32
  117. package/dist/src/tiles/grid/item-tile.js +126 -129
  118. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  119. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  120. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +7 -7
  121. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  122. package/dist/src/tiles/grid/tile-stats.js +40 -40
  123. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  124. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  125. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  126. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  127. package/dist/src/tiles/image-block.d.ts +17 -17
  128. package/dist/src/tiles/image-block.js +72 -72
  129. package/dist/src/tiles/item-image.d.ts +35 -35
  130. package/dist/src/tiles/item-image.js +117 -117
  131. package/dist/src/tiles/list/account-label.d.ts +1 -1
  132. package/dist/src/tiles/list/account-label.js +6 -6
  133. package/dist/src/tiles/list/date-label.d.ts +1 -1
  134. package/dist/src/tiles/list/date-label.js +12 -12
  135. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  136. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  137. package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
  138. package/dist/src/tiles/list/tile-list-compact.js +99 -99
  139. package/dist/src/tiles/list/tile-list.d.ts +55 -55
  140. package/dist/src/tiles/list/tile-list.js +301 -301
  141. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  142. package/dist/src/tiles/mediatype-icon.js +47 -47
  143. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  144. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  145. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  146. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  147. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  148. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  149. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  150. package/dist/src/tiles/text-snippet-block.js +73 -73
  151. package/dist/src/tiles/tile-dispatcher.d.ts +58 -58
  152. package/dist/src/tiles/tile-dispatcher.js +194 -194
  153. package/dist/src/utils/analytics-events.d.ts +22 -22
  154. package/dist/src/utils/analytics-events.js +24 -24
  155. package/dist/src/utils/format-count.d.ts +7 -7
  156. package/dist/src/utils/format-count.js +76 -76
  157. package/dist/src/utils/format-date.d.ts +2 -2
  158. package/dist/src/utils/format-date.js +23 -23
  159. package/dist/src/utils/format-unit-size.d.ts +2 -2
  160. package/dist/src/utils/format-unit-size.js +33 -33
  161. package/dist/test/collection-browser.test.d.ts +1 -1
  162. package/dist/test/collection-browser.test.js +584 -584
  163. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  164. package/dist/test/collection-facets/facets-template.test.js +62 -62
  165. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  166. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  167. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  168. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  169. package/dist/test/collection-facets.test.d.ts +2 -2
  170. package/dist/test/collection-facets.test.js +460 -460
  171. package/dist/test/empty-placeholder.test.d.ts +1 -1
  172. package/dist/test/empty-placeholder.test.js +33 -33
  173. package/dist/test/icon-overlay.test.d.ts +1 -1
  174. package/dist/test/icon-overlay.test.js +24 -24
  175. package/dist/test/image-block.test.d.ts +1 -1
  176. package/dist/test/image-block.test.js +48 -48
  177. package/dist/test/item-image.test.d.ts +1 -1
  178. package/dist/test/item-image.test.js +84 -84
  179. package/dist/test/mediatype-config.test.d.ts +1 -1
  180. package/dist/test/mediatype-config.test.js +16 -16
  181. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  182. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  183. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  184. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  185. package/dist/test/mocks/mock-search-responses.d.ts +12 -12
  186. package/dist/test/mocks/mock-search-responses.js +341 -341
  187. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  188. package/dist/test/mocks/mock-search-service.js +40 -40
  189. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  190. package/dist/test/restoration-state-handler.test.js +125 -125
  191. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  192. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  193. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  194. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  195. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  196. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +197 -208
  197. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  198. package/dist/test/text-overlay.test.d.ts +1 -1
  199. package/dist/test/text-overlay.test.js +48 -48
  200. package/dist/test/text-snippet-block.test.d.ts +1 -1
  201. package/dist/test/text-snippet-block.test.js +57 -57
  202. package/dist/test/tile-stats.test.d.ts +1 -1
  203. package/dist/test/tile-stats.test.js +33 -33
  204. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  205. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  206. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  207. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  208. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  209. package/dist/test/tiles/grid/item-tile.test.js +158 -158
  210. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  211. package/dist/test/tiles/hover/hover-pane-controller.test.js +257 -257
  212. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  213. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  214. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  215. package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
  216. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  217. package/dist/test/tiles/list/tile-list.test.js +163 -163
  218. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  219. package/dist/test/tiles/tile-dispatcher.test.js +67 -67
  220. package/dist/test/utils/format-count.test.d.ts +1 -1
  221. package/dist/test/utils/format-count.test.js +23 -23
  222. package/dist/test/utils/format-date.test.d.ts +1 -1
  223. package/dist/test/utils/format-date.test.js +17 -17
  224. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  225. package/dist/test/utils/format-unit-size.test.js +17 -17
  226. package/local.archive.org.cert +86 -86
  227. package/local.archive.org.key +27 -27
  228. package/package.json +3 -4
  229. package/renovate.json +6 -6
  230. package/src/models.ts +6 -6
  231. package/src/sort-filter-bar/alpha-bar.ts +8 -0
  232. package/src/sort-filter-bar/sort-filter-bar.ts +197 -283
  233. package/src/tiles/grid/item-tile.ts +1 -5
  234. package/test/sort-filter-bar/sort-filter-bar.test.ts +39 -56
  235. package/tsconfig.json +21 -21
  236. package/web-dev-server.config.mjs +30 -30
  237. package/web-test-runner.config.mjs +41 -41
@@ -1,5 +1,5 @@
1
- import { LitElement, CSSResultGroup } from 'lit';
2
- export declare class FacetTombstoneRow extends LitElement {
3
- render(): import("lit-html").TemplateResult<1>;
4
- static get styles(): CSSResultGroup;
5
- }
1
+ import { LitElement, CSSResultGroup } from 'lit';
2
+ export declare class FacetTombstoneRow extends LitElement {
3
+ render(): import("lit-html").TemplateResult<1>;
4
+ static get styles(): CSSResultGroup;
5
+ }
@@ -1,17 +1,17 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- let FacetTombstoneRow = class FacetTombstoneRow extends LitElement {
5
- render() {
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement } from 'lit/decorators.js';
4
+ let FacetTombstoneRow = class FacetTombstoneRow extends LitElement {
5
+ render() {
6
6
  return html `
7
7
  <div id="row">
8
8
  <input type="checkbox" disabled />
9
9
  <div class="tombstone-line"></div>
10
10
  <div class="tombstone-line"></div>
11
11
  </div>
12
- `;
13
- }
14
- static get styles() {
12
+ `;
13
+ }
14
+ static get styles() {
15
15
  return css `
16
16
  #row {
17
17
  display: grid;
@@ -33,11 +33,11 @@ let FacetTombstoneRow = class FacetTombstoneRow extends LitElement {
33
33
  height: 15px;
34
34
  margin: 0;
35
35
  }
36
- `;
37
- }
38
- };
39
- FacetTombstoneRow = __decorate([
40
- customElement('facet-tombstone-row')
41
- ], FacetTombstoneRow);
42
- export { FacetTombstoneRow };
36
+ `;
37
+ }
38
+ };
39
+ FacetTombstoneRow = __decorate([
40
+ customElement('facet-tombstone-row')
41
+ ], FacetTombstoneRow);
42
+ export { FacetTombstoneRow };
43
43
  //# sourceMappingURL=facet-tombstone-row.js.map
@@ -1,16 +1,16 @@
1
- import { LitElement, TemplateResult, CSSResultGroup } from 'lit';
2
- import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
3
- import { FacetGroup, SelectedFacets } from '../models';
4
- export declare class FacetsTemplate extends LitElement {
5
- facetGroup?: FacetGroup;
6
- selectedFacets?: SelectedFacets;
7
- renderOn?: string;
8
- collectionNameCache?: CollectionNameCacheInterface;
9
- private facetClicked;
10
- private facetChecked;
11
- private facetUnchecked;
12
- private dispatchSelectedFacetsChanged;
13
- private getFacetsTemplate;
14
- render(): TemplateResult<1>;
15
- static get styles(): CSSResultGroup;
16
- }
1
+ import { LitElement, TemplateResult, CSSResultGroup } from 'lit';
2
+ import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
3
+ import { FacetGroup, SelectedFacets } from '../models';
4
+ export declare class FacetsTemplate extends LitElement {
5
+ facetGroup?: FacetGroup;
6
+ selectedFacets?: SelectedFacets;
7
+ renderOn?: string;
8
+ collectionNameCache?: CollectionNameCacheInterface;
9
+ private facetClicked;
10
+ private facetChecked;
11
+ private facetUnchecked;
12
+ private dispatchSelectedFacetsChanged;
13
+ private getFacetsTemplate;
14
+ render(): TemplateResult<1>;
15
+ static get styles(): CSSResultGroup;
16
+ }
@@ -1,106 +1,106 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import { repeat } from 'lit/directives/repeat.js';
5
- import eyeIcon from '../assets/img/icons/eye';
6
- import eyeClosedIcon from '../assets/img/icons/eye-closed';
7
- import { defaultSelectedFacets, } from '../models';
8
- let FacetsTemplate = class FacetsTemplate extends LitElement {
9
- facetClicked(e, count, negative) {
10
- const target = e.target;
11
- const { checked, name, value } = target;
12
- if (checked) {
13
- this.facetChecked(name, value, count, negative);
14
- }
15
- else {
16
- this.facetUnchecked(name, value);
17
- }
18
- }
19
- facetChecked(key, value, count, negative) {
20
- const { selectedFacets } = this;
21
- let newFacets;
22
- if (selectedFacets) {
23
- newFacets = {
24
- ...selectedFacets,
25
- };
26
- }
27
- else {
28
- newFacets = defaultSelectedFacets;
29
- }
30
- newFacets[key][value] = {
31
- state: negative ? 'hidden' : 'selected',
32
- count,
33
- };
34
- this.selectedFacets = newFacets;
35
- this.dispatchSelectedFacetsChanged();
36
- }
37
- facetUnchecked(key, value) {
38
- const { selectedFacets } = this;
39
- let newFacets;
40
- if (selectedFacets) {
41
- newFacets = {
42
- ...selectedFacets,
43
- };
44
- }
45
- else {
46
- newFacets = defaultSelectedFacets;
47
- }
48
- delete newFacets[key][value];
49
- this.selectedFacets = newFacets;
50
- this.dispatchSelectedFacetsChanged();
51
- }
52
- dispatchSelectedFacetsChanged() {
53
- const event = new CustomEvent('selectedFacetsChanged', {
54
- detail: this.selectedFacets,
55
- bubbles: true,
56
- composed: true,
57
- });
58
- this.dispatchEvent(event);
59
- }
60
- getFacetsTemplate(facetGroup) {
61
- let facetsBucket = facetGroup === null || facetGroup === void 0 ? void 0 : facetGroup.buckets;
62
- /**
63
- * sorting FacetBucket before render page / modal
64
- * - first, selected items should be at top having sorted
65
- * - second, suppressed/hidden items should be after selected having sorted
66
- * - and then no-selected / not suppressed items should render having sorted
67
- */
68
- facetsBucket = [
69
- ...facetsBucket
70
- .filter(x => x.state === 'selected')
71
- .sort((a, b) => (a.count < b.count ? 1 : -1)),
72
- ...facetsBucket
73
- .filter(x => x.state === 'hidden')
74
- .sort((a, b) => (a.count < b.count ? 1 : -1)),
75
- ...facetsBucket.filter(x => x.state === 'none'),
76
- ];
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { repeat } from 'lit/directives/repeat.js';
5
+ import eyeIcon from '../assets/img/icons/eye';
6
+ import eyeClosedIcon from '../assets/img/icons/eye-closed';
7
+ import { defaultSelectedFacets, } from '../models';
8
+ let FacetsTemplate = class FacetsTemplate extends LitElement {
9
+ facetClicked(e, count, negative) {
10
+ const target = e.target;
11
+ const { checked, name, value } = target;
12
+ if (checked) {
13
+ this.facetChecked(name, value, count, negative);
14
+ }
15
+ else {
16
+ this.facetUnchecked(name, value);
17
+ }
18
+ }
19
+ facetChecked(key, value, count, negative) {
20
+ const { selectedFacets } = this;
21
+ let newFacets;
22
+ if (selectedFacets) {
23
+ newFacets = {
24
+ ...selectedFacets,
25
+ };
26
+ }
27
+ else {
28
+ newFacets = defaultSelectedFacets;
29
+ }
30
+ newFacets[key][value] = {
31
+ state: negative ? 'hidden' : 'selected',
32
+ count,
33
+ };
34
+ this.selectedFacets = newFacets;
35
+ this.dispatchSelectedFacetsChanged();
36
+ }
37
+ facetUnchecked(key, value) {
38
+ const { selectedFacets } = this;
39
+ let newFacets;
40
+ if (selectedFacets) {
41
+ newFacets = {
42
+ ...selectedFacets,
43
+ };
44
+ }
45
+ else {
46
+ newFacets = defaultSelectedFacets;
47
+ }
48
+ delete newFacets[key][value];
49
+ this.selectedFacets = newFacets;
50
+ this.dispatchSelectedFacetsChanged();
51
+ }
52
+ dispatchSelectedFacetsChanged() {
53
+ const event = new CustomEvent('selectedFacetsChanged', {
54
+ detail: this.selectedFacets,
55
+ bubbles: true,
56
+ composed: true,
57
+ });
58
+ this.dispatchEvent(event);
59
+ }
60
+ getFacetsTemplate(facetGroup) {
61
+ let facetsBucket = facetGroup === null || facetGroup === void 0 ? void 0 : facetGroup.buckets;
62
+ /**
63
+ * sorting FacetBucket before render page / modal
64
+ * - first, selected items should be at top having sorted
65
+ * - second, suppressed/hidden items should be after selected having sorted
66
+ * - and then no-selected / not suppressed items should render having sorted
67
+ */
68
+ facetsBucket = [
69
+ ...facetsBucket
70
+ .filter(x => x.state === 'selected')
71
+ .sort((a, b) => (a.count < b.count ? 1 : -1)),
72
+ ...facetsBucket
73
+ .filter(x => x.state === 'hidden')
74
+ .sort((a, b) => (a.count < b.count ? 1 : -1)),
75
+ ...facetsBucket.filter(x => x.state === 'none'),
76
+ ];
77
77
  return html `
78
78
  <div class="facets-on-${this.renderOn}">
79
- ${repeat(facetsBucket, bucket => `${facetGroup.key}:${bucket.key}`, bucket => {
80
- var _a, _b;
81
- const showOnlyCheckboxId = `${facetGroup.key}:${bucket.key}-show-only`;
82
- const negativeCheckboxId = `${facetGroup.key}:${bucket.key}-negative`;
83
- // for collections, we need to asynchronously load the collection name
84
- // so we use the `async-collection-name` widget and for the rest, we have
85
- // a static value to use
86
- const bucketTextDisplay = facetGroup.key !== 'collection'
87
- ? html `${(_a = bucket.displayText) !== null && _a !== void 0 ? _a : bucket.key}`
79
+ ${repeat(facetsBucket, bucket => `${facetGroup.key}:${bucket.key}`, bucket => {
80
+ var _a, _b;
81
+ const showOnlyCheckboxId = `${facetGroup.key}:${bucket.key}-show-only`;
82
+ const negativeCheckboxId = `${facetGroup.key}:${bucket.key}-negative`;
83
+ // for collections, we need to asynchronously load the collection name
84
+ // so we use the `async-collection-name` widget and for the rest, we have
85
+ // a static value to use
86
+ const bucketTextDisplay = facetGroup.key !== 'collection'
87
+ ? html `${(_a = bucket.displayText) !== null && _a !== void 0 ? _a : bucket.key}`
88
88
  : html `<a href="/details/${bucket.key}">
89
89
  <async-collection-name
90
90
  .collectionNameCache=${this.collectionNameCache}
91
91
  .identifier=${bucket.key}
92
92
  placeholder="-"
93
93
  ></async-collection-name>
94
- </a> `;
95
- const facetHidden = bucket.state === 'hidden';
96
- const facetSelected = bucket.state === 'selected';
97
- const titleText = `${facetGroup.key}: ${(_b = bucket.displayText) !== null && _b !== void 0 ? _b : bucket.key}`;
98
- const onlyShowText = facetSelected
99
- ? `Show all ${facetGroup.key}s`
100
- : `Only show ${titleText}`;
101
- const hideText = `Hide ${titleText}`;
102
- const unhideText = `Unhide ${titleText}`;
103
- const showHideText = facetHidden ? unhideText : hideText;
94
+ </a> `;
95
+ const facetHidden = bucket.state === 'hidden';
96
+ const facetSelected = bucket.state === 'selected';
97
+ const titleText = `${facetGroup.key}: ${(_b = bucket.displayText) !== null && _b !== void 0 ? _b : bucket.key}`;
98
+ const onlyShowText = facetSelected
99
+ ? `Show all ${facetGroup.key}s`
100
+ : `Only show ${titleText}`;
101
+ const hideText = `Hide ${titleText}`;
102
+ const unhideText = `Unhide ${titleText}`;
103
+ const showHideText = facetHidden ? unhideText : hideText;
104
104
  return html `
105
105
  <div class="facet-row">
106
106
  <div class="facet-checkbox">
@@ -108,8 +108,8 @@ let FacetsTemplate = class FacetsTemplate extends LitElement {
108
108
  type="checkbox"
109
109
  .name=${facetGroup.key}
110
110
  .value=${bucket.key}
111
- @click=${(e) => {
112
- this.facetClicked(e, bucket.count, false);
111
+ @click=${(e) => {
112
+ this.facetClicked(e, bucket.count, false);
113
113
  }}
114
114
  .checked=${facetSelected}
115
115
  class="select-facet-checkbox"
@@ -121,8 +121,8 @@ let FacetsTemplate = class FacetsTemplate extends LitElement {
121
121
  id=${negativeCheckboxId}
122
122
  .name=${facetGroup.key}
123
123
  .value=${bucket.key}
124
- @click=${(e) => {
125
- this.facetClicked(e, bucket.count, true);
124
+ @click=${(e) => {
125
+ this.facetClicked(e, bucket.count, true);
126
126
  }}
127
127
  .checked=${facetHidden}
128
128
  class="hide-facet-checkbox"
@@ -147,15 +147,15 @@ let FacetsTemplate = class FacetsTemplate extends LitElement {
147
147
  </div>
148
148
  </label>
149
149
  </div>
150
- `;
150
+ `;
151
151
  })}
152
152
  </div>
153
- `;
154
- }
155
- render() {
156
- return html `${this.getFacetsTemplate(this.facetGroup)}`;
157
- }
158
- static get styles() {
153
+ `;
154
+ }
155
+ render() {
156
+ return html `${this.getFacetsTemplate(this.facetGroup)}`;
157
+ }
158
+ static get styles() {
159
159
  return css `
160
160
  @media (max-width: 560px) {
161
161
  .facets-on-modal {
@@ -256,23 +256,23 @@ let FacetsTemplate = class FacetsTemplate extends LitElement {
256
256
  a:hover {
257
257
  text-decoration: underline;
258
258
  }
259
- `;
260
- }
261
- };
262
- __decorate([
263
- property({ type: Object })
264
- ], FacetsTemplate.prototype, "facetGroup", void 0);
265
- __decorate([
266
- property({ type: Object })
267
- ], FacetsTemplate.prototype, "selectedFacets", void 0);
268
- __decorate([
269
- property({ type: String })
270
- ], FacetsTemplate.prototype, "renderOn", void 0);
271
- __decorate([
272
- property({ type: Object })
273
- ], FacetsTemplate.prototype, "collectionNameCache", void 0);
274
- FacetsTemplate = __decorate([
275
- customElement('facets-template')
276
- ], FacetsTemplate);
277
- export { FacetsTemplate };
259
+ `;
260
+ }
261
+ };
262
+ __decorate([
263
+ property({ type: Object })
264
+ ], FacetsTemplate.prototype, "facetGroup", void 0);
265
+ __decorate([
266
+ property({ type: Object })
267
+ ], FacetsTemplate.prototype, "selectedFacets", void 0);
268
+ __decorate([
269
+ property({ type: String })
270
+ ], FacetsTemplate.prototype, "renderOn", void 0);
271
+ __decorate([
272
+ property({ type: Object })
273
+ ], FacetsTemplate.prototype, "collectionNameCache", void 0);
274
+ FacetsTemplate = __decorate([
275
+ customElement('facets-template')
276
+ ], FacetsTemplate);
277
+ export { FacetsTemplate };
278
278
  //# sourceMappingURL=facets-template.js.map
@@ -1,75 +1,75 @@
1
- import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
- import { Aggregation, SearchServiceInterface, SearchType, FilterMap } from '@internetarchive/search-service';
3
- import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
4
- import type { ModalManagerInterface } from '@internetarchive/modal-manager';
5
- import type { AnalyticsManagerInterface } from '@internetarchive/analytics-manager';
6
- import { SelectedFacets, FacetGroup, FacetOption } from '../models';
7
- import '@internetarchive/ia-activity-indicator/ia-activity-indicator';
8
- import './more-facets-pagination';
9
- import './facets-template';
10
- export declare class MoreFacetsContent extends LitElement {
11
- facetKey?: FacetOption;
12
- facetAggregationKey?: FacetOption;
13
- query?: string;
14
- filterMap?: FilterMap;
15
- modalManager?: ModalManagerInterface;
16
- searchService?: SearchServiceInterface;
17
- searchType?: SearchType;
18
- collectionNameCache?: CollectionNameCacheInterface;
19
- selectedFacets?: SelectedFacets;
20
- sortedBy: 'count' | 'alpha';
21
- analyticsHandler?: AnalyticsManagerInterface;
22
- aggregations?: Record<string, Aggregation>;
23
- facetGroup?: FacetGroup[];
24
- facetGroupTitle?: String;
25
- pageNumber: number;
26
- /**
27
- * Facets are loading on popup
28
- */
29
- facetsLoading: boolean;
30
- paginationSize: number;
31
- facetsType: string;
32
- private facetsPerPage;
33
- updated(changed: PropertyValues): void;
34
- firstUpdated(): void;
35
- /**
36
- * Close more facets modal on Escape click
37
- */
38
- private setupEscapeListeners;
39
- /**
40
- * Get specific facets data from search-service API based of currently query params
41
- * - this.aggregations - hold result of search service and being used for further processing.
42
- */
43
- updateSpecificFacets(): Promise<void>;
44
- private pageNumberClicked;
45
- /**
46
- * Combines the selected facets with the aggregations to create a single list of facets
47
- */
48
- private get mergedFacets();
49
- /**
50
- * Converts the selected facets to a `FacetGroup` array,
51
- * which is easier to work with
52
- */
53
- private get selectedFacetGroups();
54
- /**
55
- * Converts the raw `aggregations` to `FacetGroups`, which are easier to use
56
- */
57
- private get aggregationFacetGroups();
58
- /**
59
- * for collections, we need to asynchronously load the collection name
60
- * so we use the `async-collection-name` widget and for the rest, we have a static value to use
61
- *
62
- * @param castedBuckets
63
- */
64
- private preloadCollectionNames;
65
- private get getMoreFacetsTemplate();
66
- private get loaderTemplate();
67
- private get facetsPaginationTemplate();
68
- private get footerTemplate();
69
- private sortFacetAggregation;
70
- private get getModalHeaderTemplate();
71
- render(): TemplateResult<1>;
72
- private applySearchFacetsClicked;
73
- private cancelClick;
74
- static get styles(): CSSResultGroup;
75
- }
1
+ import { CSSResultGroup, LitElement, PropertyValues, TemplateResult } from 'lit';
2
+ import { Aggregation, SearchServiceInterface, SearchType, FilterMap } from '@internetarchive/search-service';
3
+ import type { CollectionNameCacheInterface } from '@internetarchive/collection-name-cache';
4
+ import type { ModalManagerInterface } from '@internetarchive/modal-manager';
5
+ import type { AnalyticsManagerInterface } from '@internetarchive/analytics-manager';
6
+ import { SelectedFacets, FacetGroup, FacetOption } from '../models';
7
+ import '@internetarchive/ia-activity-indicator/ia-activity-indicator';
8
+ import './more-facets-pagination';
9
+ import './facets-template';
10
+ export declare class MoreFacetsContent extends LitElement {
11
+ facetKey?: FacetOption;
12
+ facetAggregationKey?: FacetOption;
13
+ query?: string;
14
+ filterMap?: FilterMap;
15
+ modalManager?: ModalManagerInterface;
16
+ searchService?: SearchServiceInterface;
17
+ searchType?: SearchType;
18
+ collectionNameCache?: CollectionNameCacheInterface;
19
+ selectedFacets?: SelectedFacets;
20
+ sortedBy: 'count' | 'alpha';
21
+ analyticsHandler?: AnalyticsManagerInterface;
22
+ aggregations?: Record<string, Aggregation>;
23
+ facetGroup?: FacetGroup[];
24
+ facetGroupTitle?: String;
25
+ pageNumber: number;
26
+ /**
27
+ * Facets are loading on popup
28
+ */
29
+ facetsLoading: boolean;
30
+ paginationSize: number;
31
+ facetsType: string;
32
+ private facetsPerPage;
33
+ updated(changed: PropertyValues): void;
34
+ firstUpdated(): void;
35
+ /**
36
+ * Close more facets modal on Escape click
37
+ */
38
+ private setupEscapeListeners;
39
+ /**
40
+ * Get specific facets data from search-service API based of currently query params
41
+ * - this.aggregations - hold result of search service and being used for further processing.
42
+ */
43
+ updateSpecificFacets(): Promise<void>;
44
+ private pageNumberClicked;
45
+ /**
46
+ * Combines the selected facets with the aggregations to create a single list of facets
47
+ */
48
+ private get mergedFacets();
49
+ /**
50
+ * Converts the selected facets to a `FacetGroup` array,
51
+ * which is easier to work with
52
+ */
53
+ private get selectedFacetGroups();
54
+ /**
55
+ * Converts the raw `aggregations` to `FacetGroups`, which are easier to use
56
+ */
57
+ private get aggregationFacetGroups();
58
+ /**
59
+ * for collections, we need to asynchronously load the collection name
60
+ * so we use the `async-collection-name` widget and for the rest, we have a static value to use
61
+ *
62
+ * @param castedBuckets
63
+ */
64
+ private preloadCollectionNames;
65
+ private get getMoreFacetsTemplate();
66
+ private get loaderTemplate();
67
+ private get facetsPaginationTemplate();
68
+ private get footerTemplate();
69
+ private sortFacetAggregation;
70
+ private get getModalHeaderTemplate();
71
+ render(): TemplateResult<1>;
72
+ private applySearchFacetsClicked;
73
+ private cancelClick;
74
+ static get styles(): CSSResultGroup;
75
+ }