@internetarchive/collection-browser 0.4.9-alpha.2 → 0.4.9

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 (261) 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 +281 -281
  68. package/dist/src/collection-browser.js +1201 -1200
  69. package/dist/src/collection-browser.js.map +1 -1
  70. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  71. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  72. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  73. package/dist/src/collection-facets/facets-template.js +125 -125
  74. package/dist/src/collection-facets/more-facets-content.d.ts +77 -77
  75. package/dist/src/collection-facets/more-facets-content.js +357 -357
  76. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  77. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  78. package/dist/src/collection-facets.d.ts +83 -83
  79. package/dist/src/collection-facets.js +392 -392
  80. package/dist/src/empty-placeholder.d.ts +11 -11
  81. package/dist/src/empty-placeholder.js +42 -42
  82. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  83. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  84. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  85. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  86. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  87. package/dist/src/mediatype/mediatype-config.js +85 -85
  88. package/dist/src/models.d.ts +115 -114
  89. package/dist/src/models.js +125 -125
  90. package/dist/src/models.js.map +1 -1
  91. package/dist/src/restoration-state-handler.d.ts +45 -45
  92. package/dist/src/restoration-state-handler.js +230 -230
  93. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -0
  94. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +61 -0
  95. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -0
  96. package/dist/src/sort-filter-bar/alpha-bar.d.ts +20 -12
  97. package/dist/src/sort-filter-bar/alpha-bar.js +166 -58
  98. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  99. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  101. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  102. package/dist/src/sort-filter-bar/img/list.js +2 -2
  103. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  104. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  105. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  106. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  107. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +108 -108
  108. package/dist/src/sort-filter-bar/sort-filter-bar.js +438 -438
  109. package/dist/src/styles/item-image-styles.d.ts +8 -8
  110. package/dist/src/styles/item-image-styles.js +9 -9
  111. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  112. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  113. package/dist/src/tiles/grid/account-tile.d.ts +20 -17
  114. package/dist/src/tiles/grid/account-tile.js +68 -46
  115. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  116. package/dist/src/tiles/grid/collection-tile.d.ts +17 -14
  117. package/dist/src/tiles/grid/collection-tile.js +75 -53
  118. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  119. package/dist/src/tiles/grid/item-tile.d.ts +32 -29
  120. package/dist/src/tiles/grid/item-tile.js +126 -108
  121. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  122. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  123. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +44 -8
  124. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
  125. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  126. package/dist/src/tiles/grid/tile-stats.js +40 -40
  127. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -197
  128. package/dist/src/tiles/hover/hover-pane-controller.js +352 -331
  129. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  130. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  131. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  132. package/dist/src/tiles/image-block.d.ts +17 -17
  133. package/dist/src/tiles/image-block.js +72 -72
  134. package/dist/src/tiles/item-image.d.ts +35 -35
  135. package/dist/src/tiles/item-image.js +117 -117
  136. package/dist/src/tiles/list/account-label.d.ts +1 -1
  137. package/dist/src/tiles/list/account-label.js +6 -6
  138. package/dist/src/tiles/list/date-label.d.ts +1 -1
  139. package/dist/src/tiles/list/date-label.js +12 -12
  140. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  141. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  142. package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
  143. package/dist/src/tiles/list/tile-list-compact.js +99 -99
  144. package/dist/src/tiles/list/tile-list.d.ts +55 -55
  145. package/dist/src/tiles/list/tile-list.js +303 -297
  146. package/dist/src/tiles/list/tile-list.js.map +1 -1
  147. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  148. package/dist/src/tiles/mediatype-icon.js +47 -47
  149. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  150. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  151. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  152. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  153. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  154. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  155. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  156. package/dist/src/tiles/text-snippet-block.js +73 -73
  157. package/dist/src/tiles/tile-dispatcher.d.ts +58 -55
  158. package/dist/src/tiles/tile-dispatcher.js +203 -179
  159. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  160. package/dist/src/utils/analytics-events.d.ts +22 -22
  161. package/dist/src/utils/analytics-events.js +24 -24
  162. package/dist/src/utils/format-count.d.ts +7 -7
  163. package/dist/src/utils/format-count.js +76 -76
  164. package/dist/src/utils/format-date.d.ts +2 -2
  165. package/dist/src/utils/format-date.js +23 -23
  166. package/dist/src/utils/format-unit-size.d.ts +2 -2
  167. package/dist/src/utils/format-unit-size.js +33 -33
  168. package/dist/test/collection-browser.test.d.ts +1 -1
  169. package/dist/test/collection-browser.test.js +584 -584
  170. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  171. package/dist/test/collection-facets/facets-template.test.js +62 -62
  172. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  173. package/dist/test/collection-facets/more-facets-content.test.js +114 -114
  174. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  175. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  176. package/dist/test/collection-facets.test.d.ts +2 -2
  177. package/dist/test/collection-facets.test.js +508 -508
  178. package/dist/test/empty-placeholder.test.d.ts +1 -1
  179. package/dist/test/empty-placeholder.test.js +33 -33
  180. package/dist/test/icon-overlay.test.d.ts +1 -1
  181. package/dist/test/icon-overlay.test.js +24 -24
  182. package/dist/test/image-block.test.d.ts +1 -1
  183. package/dist/test/image-block.test.js +48 -48
  184. package/dist/test/item-image.test.d.ts +1 -1
  185. package/dist/test/item-image.test.js +84 -84
  186. package/dist/test/mediatype-config.test.d.ts +1 -1
  187. package/dist/test/mediatype-config.test.js +16 -16
  188. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  189. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  190. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  191. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  192. package/dist/test/mocks/mock-search-responses.d.ts +12 -12
  193. package/dist/test/mocks/mock-search-responses.js +341 -341
  194. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  195. package/dist/test/mocks/mock-search-service.js +40 -40
  196. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  197. package/dist/test/restoration-state-handler.test.js +125 -125
  198. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -0
  199. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +13 -0
  200. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -0
  201. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  202. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -43
  203. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  204. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  205. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +197 -197
  206. package/dist/test/text-overlay.test.d.ts +1 -1
  207. package/dist/test/text-overlay.test.js +48 -48
  208. package/dist/test/text-snippet-block.test.d.ts +1 -1
  209. package/dist/test/text-snippet-block.test.js +57 -57
  210. package/dist/test/tile-stats.test.d.ts +1 -1
  211. package/dist/test/tile-stats.test.js +33 -33
  212. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  213. package/dist/test/tiles/grid/account-tile.test.js +81 -60
  214. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  215. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  216. package/dist/test/tiles/grid/collection-tile.test.js +81 -57
  217. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  218. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  219. package/dist/test/tiles/grid/item-tile.test.js +163 -142
  220. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  221. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  222. package/dist/test/tiles/hover/hover-pane-controller.test.js +257 -257
  223. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  224. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  225. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  226. package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
  227. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  228. package/dist/test/tiles/list/tile-list.test.js +163 -163
  229. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -0
  230. package/dist/test/tiles/tile-dispatcher.test.js +101 -0
  231. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -0
  232. package/dist/test/utils/format-count.test.d.ts +1 -1
  233. package/dist/test/utils/format-count.test.js +23 -23
  234. package/dist/test/utils/format-date.test.d.ts +1 -1
  235. package/dist/test/utils/format-date.test.js +17 -17
  236. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  237. package/dist/test/utils/format-unit-size.test.js +17 -17
  238. package/local.archive.org.cert +86 -86
  239. package/local.archive.org.key +27 -27
  240. package/package.json +1 -1
  241. package/renovate.json +6 -6
  242. package/src/collection-browser.ts +1 -0
  243. package/src/models.ts +1 -0
  244. package/src/sort-filter-bar/alpha-bar-tooltip.ts +54 -0
  245. package/src/sort-filter-bar/alpha-bar.ts +133 -9
  246. package/src/tiles/grid/account-tile.ts +23 -1
  247. package/src/tiles/grid/collection-tile.ts +31 -2
  248. package/src/tiles/grid/item-tile.ts +22 -2
  249. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +37 -1
  250. package/src/tiles/hover/hover-pane-controller.ts +38 -1
  251. package/src/tiles/list/tile-list.ts +8 -1
  252. package/src/tiles/tile-dispatcher.ts +29 -2
  253. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +17 -0
  254. package/test/sort-filter-bar/alpha-bar.test.ts +46 -1
  255. package/test/tiles/grid/account-tile.test.ts +27 -0
  256. package/test/tiles/grid/collection-tile.test.ts +30 -0
  257. package/test/tiles/grid/item-tile.test.ts +27 -0
  258. package/test/tiles/tile-dispatcher.test.ts +122 -0
  259. package/tsconfig.json +21 -21
  260. package/web-dev-server.config.mjs +30 -30
  261. package/web-test-runner.config.mjs +41 -41
@@ -1,25 +1,27 @@
1
- import { __decorate } from "tslib";
2
- /* eslint-disable import/no-duplicates */
3
- import { css, html, LitElement, nothing, } from 'lit';
4
- import { customElement, property } from 'lit/decorators.js';
5
- import { ifDefined } from 'lit/directives/if-defined.js';
6
- import { formatDate } from '../../utils/format-date';
7
- import { baseTileStyles } from './styles/tile-grid-shared-styles';
8
- import '../image-block';
9
- import '../text-snippet-block';
10
- import '../item-image';
11
- import '../mediatype-icon';
12
- import './tile-stats';
13
- let ItemTile = class ItemTile extends LitElement {
14
- constructor() {
15
- super(...arguments);
16
- this.loggedIn = false;
17
- }
18
- render() {
19
- var _a, _b, _c, _d, _e;
20
- const itemTitle = (_a = this.model) === null || _a === void 0 ? void 0 : _a.title;
1
+ import { __decorate } from "tslib";
2
+ /* eslint-disable import/no-duplicates */
3
+ import { css, html, LitElement, nothing, } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ import { ifDefined } from 'lit/directives/if-defined.js';
6
+ import { formatDate } from '../../utils/format-date';
7
+ import { baseTileStyles } from './styles/tile-grid-shared-styles';
8
+ import '../image-block';
9
+ import '../text-snippet-block';
10
+ import '../item-image';
11
+ import '../mediatype-icon';
12
+ import './tile-stats';
13
+ let ItemTile = class ItemTile extends LitElement {
14
+ constructor() {
15
+ super(...arguments);
16
+ this.loggedIn = false;
17
+ this.showInfoButton = false;
18
+ }
19
+ render() {
20
+ var _a, _b, _c, _d, _e;
21
+ const itemTitle = (_a = this.model) === null || _a === void 0 ? void 0 : _a.title;
21
22
  return html `
22
23
  <div class="container">
24
+ ${this.infoButtonTemplate}
23
25
  <div class="tile-details">
24
26
  <div class="item-info">
25
27
  ${this.imageBlockTemplate}
@@ -31,8 +33,8 @@ let ItemTile = class ItemTile extends LitElement {
31
33
  </div>
32
34
 
33
35
  ${this.volumeIssueTemplate}
34
- ${this.doesSortedByDate
35
- ? this.sortedDateInfoTemplate
36
+ ${this.doesSortedByDate
37
+ ? this.sortedDateInfoTemplate
36
38
  : this.creatorTemplate}
37
39
  ${this.textSnippetsTemplate}
38
40
  </div>
@@ -46,24 +48,24 @@ let ItemTile = class ItemTile extends LitElement {
46
48
  </tile-stats>
47
49
  </div>
48
50
  </div>
49
- `;
50
- }
51
- /**
52
- * Templates
53
- */
54
- get creatorTemplate() {
55
- var _a, _b, _c;
56
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.creator))
57
- return nothing;
51
+ `;
52
+ }
53
+ /**
54
+ * Templates
55
+ */
56
+ get creatorTemplate() {
57
+ var _a, _b, _c;
58
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.creator))
59
+ return nothing;
58
60
  return html `
59
61
  <div class="created-by">
60
62
  <span class="truncated" title=${ifDefined((_b = this.model) === null || _b === void 0 ? void 0 : _b.creator)}>
61
63
  by&nbsp;${(_c = this.model) === null || _c === void 0 ? void 0 : _c.creator}
62
64
  </span>
63
65
  </div>
64
- `;
65
- }
66
- get imageBlockTemplate() {
66
+ `;
67
+ }
68
+ get imageBlockTemplate() {
67
69
  return html `
68
70
  <image-block
69
71
  .model=${this.model}
@@ -74,75 +76,88 @@ let ItemTile = class ItemTile extends LitElement {
74
76
  .viewSize=${'grid'}
75
77
  >
76
78
  </image-block>
77
- `;
78
- }
79
- get sortedDateInfoTemplate() {
80
- var _a, _b, _c, _d, _e;
81
- let sortedValue;
82
- // console.log('model: ', this.model)
83
- switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
84
- case 'date':
85
- sortedValue = { field: 'published', value: (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished };
86
- break;
87
- case 'reviewdate':
88
- sortedValue = { field: 'reviewed', value: (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed };
89
- break;
90
- case 'addeddate':
91
- sortedValue = { field: 'added', value: (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded };
92
- break;
93
- case 'publicdate':
94
- sortedValue = { field: 'archived', value: (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived };
95
- break;
96
- default:
97
- break;
98
- }
99
- if (!(sortedValue === null || sortedValue === void 0 ? void 0 : sortedValue.value)) {
100
- return nothing;
101
- }
79
+ `;
80
+ }
81
+ get sortedDateInfoTemplate() {
82
+ var _a, _b, _c, _d, _e;
83
+ let sortedValue;
84
+ switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
85
+ case 'date':
86
+ sortedValue = { field: 'published', value: (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished };
87
+ break;
88
+ case 'reviewdate':
89
+ sortedValue = { field: 'reviewed', value: (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed };
90
+ break;
91
+ case 'addeddate':
92
+ sortedValue = { field: 'added', value: (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded };
93
+ break;
94
+ case 'publicdate':
95
+ sortedValue = { field: 'archived', value: (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived };
96
+ break;
97
+ default:
98
+ break;
99
+ }
100
+ if (!(sortedValue === null || sortedValue === void 0 ? void 0 : sortedValue.value)) {
101
+ return nothing;
102
+ }
102
103
  return html `
103
104
  <div class="date-sorted-by truncated">
104
105
  <span>
105
106
  ${sortedValue === null || sortedValue === void 0 ? void 0 : sortedValue.field} ${formatDate(sortedValue === null || sortedValue === void 0 ? void 0 : sortedValue.value, 'long')}
106
107
  </span>
107
108
  </div>
108
- `;
109
- }
110
- get textSnippetsTemplate() {
111
- var _a;
112
- if (!this.hasSnippets)
113
- return nothing;
109
+ `;
110
+ }
111
+ get infoButtonTemplate() {
112
+ // &#9432; is an information icon
113
+ return this.showInfoButton
114
+ ? html `<button class="info-button" @click=${this.infoButtonPressed}>
115
+ &#9432;
116
+ <span class="sr-only">More info</span>
117
+ </button>`
118
+ : nothing;
119
+ }
120
+ get textSnippetsTemplate() {
121
+ var _a;
122
+ if (!this.hasSnippets)
123
+ return nothing;
114
124
  return html `
115
125
  <text-snippet-block viewsize="grid" .snippets=${(_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets}>
116
126
  </text-snippet-block>
117
- `;
118
- }
119
- get volumeIssueTemplate() {
120
- var _a, _b, _c, _d;
121
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume) || !((_b = this.model) === null || _b === void 0 ? void 0 : _b.issue))
122
- return nothing;
127
+ `;
128
+ }
129
+ get volumeIssueTemplate() {
130
+ var _a, _b, _c, _d;
131
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume) || !((_b = this.model) === null || _b === void 0 ? void 0 : _b.issue))
132
+ return nothing;
123
133
  return html `
124
134
  <div class="volume-issue">
125
135
  <span class="truncated" title="volume|issue">
126
136
  Volume&nbsp;${(_c = this.model) === null || _c === void 0 ? void 0 : _c.volume}, Issue&nbsp;${(_d = this.model) === null || _d === void 0 ? void 0 : _d.issue}
127
137
  </span>
128
138
  </div>
129
- `;
130
- }
131
- get doesSortedByDate() {
132
- var _a;
133
- return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field);
134
- }
135
- get hasSnippets() {
136
- var _a, _b;
137
- return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
138
- }
139
- /**
140
- * CSS
141
- */
142
- static get styles() {
143
- const tileBorderColor = css `var(--tileBorderColor, #dddddd)`;
144
- return [
145
- baseTileStyles,
139
+ `;
140
+ }
141
+ get doesSortedByDate() {
142
+ var _a;
143
+ return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field);
144
+ }
145
+ get hasSnippets() {
146
+ var _a, _b;
147
+ return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
148
+ }
149
+ infoButtonPressed(e) {
150
+ e.preventDefault();
151
+ const event = new CustomEvent('infoButtonPressed', { detail: { x: e.clientX, y: e.clientY } });
152
+ this.dispatchEvent(event);
153
+ }
154
+ /**
155
+ * CSS
156
+ */
157
+ static get styles() {
158
+ const tileBorderColor = css `var(--tileBorderColor, #dddddd)`;
159
+ return [
160
+ baseTileStyles,
146
161
  css `
147
162
  .container {
148
163
  border: 1px solid ${tileBorderColor};
@@ -166,24 +181,27 @@ let ItemTile = class ItemTile extends LitElement {
166
181
  -webkit-touch-callout: default;
167
182
  }
168
183
  }
169
- `,
170
- ];
171
- }
172
- };
173
- __decorate([
174
- property({ type: String })
175
- ], ItemTile.prototype, "baseImageUrl", void 0);
176
- __decorate([
177
- property({ type: Boolean })
178
- ], ItemTile.prototype, "loggedIn", void 0);
179
- __decorate([
180
- property({ type: Object })
181
- ], ItemTile.prototype, "model", void 0);
182
- __decorate([
183
- property({ type: Object })
184
- ], ItemTile.prototype, "sortParam", void 0);
185
- ItemTile = __decorate([
186
- customElement('item-tile')
187
- ], ItemTile);
188
- export { ItemTile };
184
+ `,
185
+ ];
186
+ }
187
+ };
188
+ __decorate([
189
+ property({ type: String })
190
+ ], ItemTile.prototype, "baseImageUrl", void 0);
191
+ __decorate([
192
+ property({ type: Boolean })
193
+ ], ItemTile.prototype, "loggedIn", void 0);
194
+ __decorate([
195
+ property({ type: Object })
196
+ ], ItemTile.prototype, "model", void 0);
197
+ __decorate([
198
+ property({ type: Object })
199
+ ], ItemTile.prototype, "sortParam", void 0);
200
+ __decorate([
201
+ property({ type: Boolean })
202
+ ], ItemTile.prototype, "showInfoButton", void 0);
203
+ ItemTile = __decorate([
204
+ customElement('item-tile')
205
+ ], ItemTile);
206
+ export { ItemTile };
189
207
  //# sourceMappingURL=item-tile.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"item-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/item-tile.ts"],"names":[],"mappings":";AAAA,yCAAyC;AACzC,OAAO,EACL,GAAG,EAEH,IAAI,EACJ,UAAU,EACV,OAAO,GAER,MAAM,KAAK,CAAC;AACb,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,8BAA8B,CAAC;AAGzD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,gBAAgB,CAAC;AACxB,OAAO,uBAAuB,CAAC;AAC/B,OAAO,eAAe,CAAC;AACvB,OAAO,mBAAmB,CAAC;AAC3B,OAAO,cAAc,CAAC;AAGtB,IAAa,QAAQ,GAArB,MAAa,QAAS,SAAQ,UAAU;IAAxC;;QAG+B,aAAQ,GAAG,KAAK,CAAC;IAuKhD,CAAC;IAjKC,MAAM;;QACJ,MAAM,SAAS,GAAG,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAC;QAEpC,OAAO,IAAI,CAAA;;;;cAID,IAAI,CAAC,kBAAkB;;;4CAGO,SAAS,CAAC,SAAS,CAAC;kBAC9C,SAAS;;;;cAIb,IAAI,CAAC,mBAAmB;cACxB,IAAI,CAAC,gBAAgB;YACrB,CAAC,CAAC,IAAI,CAAC,sBAAsB;YAC7B,CAAC,CAAC,IAAI,CAAC,eAAe;cACtB,IAAI,CAAC,oBAAoB;;;;yBAId,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;yBACrB,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;wBACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;4BAChB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY;;;;;KAK/C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAY,eAAe;;QACzB,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,CAAA;YAAE,OAAO,OAAO,CAAC;QAEzC,OAAO,IAAI,CAAA;;wCAEyB,SAAS,CAAC,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO,CAAC;oBAClD,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO;;;KAGlC,CAAC;IACJ,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAA;;iBAEE,IAAI,CAAC,KAAK;wBACH,IAAI,CAAC,YAAY;oBACrB,IAAI,CAAC,QAAQ;yBACR,KAAK;sBACR,KAAK;oBACP,MAAM;;;KAGrB,CAAC;IACJ,CAAC;IAED,IAAY,sBAAsB;;QAChC,IAAI,WAAW,CAAC;QAEhB,qCAAqC;QACrC,QAAQ,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,EAAE;YAC7B,KAAK,MAAM;gBACT,WAAW,GAAG,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,EAAE,CAAC;gBACvE,MAAM;YACR,KAAK,YAAY;gBACf,WAAW,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,EAAE,CAAC;gBACrE,MAAM;YACR,KAAK,WAAW;gBACd,WAAW,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,EAAE,CAAC;gBAC/D,MAAM;YACR,KAAK,YAAY;gBACf,WAAW,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,EAAE,CAAC;gBACrE,MAAM;YACR;gBACE,MAAM;SACT;QAED,IAAI,CAAC,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,CAAA,EAAE;YACvB,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,IAAI,CAAA;;;YAGH,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,IAAI,UAAU,CAAC,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,KAAK,EAAE,MAAM,CAAC;;;KAGnE,CAAC;IACJ,CAAC;IAED,IAAY,oBAAoB;;QAC9B,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO,OAAO,CAAC;QAEtC,OAAO,IAAI,CAAA;sDACuC,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;;KAErE,CAAC;IACJ,CAAC;IAED,IAAY,mBAAmB;;QAC7B,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK,CAAA;YAAE,OAAO,OAAO,CAAC;QAE9D,OAAO,IAAI,CAAA;;;wBAGS,MAAA,IAAI,CAAC,KAAK,0CAAE,MAAM,gBAAgB,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK;;;KAGtE,CAAC;IACJ,CAAC;IAED,IAAY,gBAAgB;;QAC1B,OAAO,CAAC,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC,QAAQ,CAC/D,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAe,CAChC,CAAC;IACJ,CAAC;IAED,IAAY,WAAW;;QACrB,OAAO,CAAC,CAAC,CAAA,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ,0CAAE,MAAM,CAAA,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,MAAM,KAAK,MAAM;QACf,MAAM,eAAe,GAAG,GAAG,CAAA,iCAAiC,CAAC;QAE7D,OAAO;YACL,cAAc;YACd,GAAG,CAAA;;8BAEqB,eAAe;;;;;;;;;;;;;;;;;;;;;OAqBtC;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AAzK6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAuB;AAErB;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;0CAAkB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;uCAAmB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;2CAAuB;AAPvC,QAAQ;IADpB,aAAa,CAAC,WAAW,CAAC;GACd,QAAQ,CA0KpB;SA1KY,QAAQ","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport {\n css,\n CSSResultGroup,\n html,\n LitElement,\n nothing,\n TemplateResult,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { SortParam } from '@internetarchive/search-service';\n\nimport { formatDate } from '../../utils/format-date';\nimport type { TileModel } from '../../models';\n\nimport { baseTileStyles } from './styles/tile-grid-shared-styles';\nimport '../image-block';\nimport '../text-snippet-block';\nimport '../item-image';\nimport '../mediatype-icon';\nimport './tile-stats';\n\n@customElement('item-tile')\nexport class ItemTile extends LitElement {\n @property({ type: String }) baseImageUrl?: string;\n\n @property({ type: Boolean }) loggedIn = false;\n\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: Object }) sortParam?: SortParam;\n\n render() {\n const itemTitle = this.model?.title;\n\n return html`\n <div class=\"container\">\n <div class=\"tile-details\">\n <div class=\"item-info\">\n ${this.imageBlockTemplate}\n\n <div id=\"title\">\n <h1 class=\"truncated\" title=${ifDefined(itemTitle)}>\n ${itemTitle}\n </h1>\n </div>\n\n ${this.volumeIssueTemplate}\n ${this.doesSortedByDate\n ? this.sortedDateInfoTemplate\n : this.creatorTemplate}\n ${this.textSnippetsTemplate}\n </div>\n\n <tile-stats\n .mediatype=${this.model?.mediatype}\n .viewCount=${this.model?.viewCount}\n .favCount=${this.model?.favCount}\n .commentCount=${this.model?.commentCount}\n >\n </tile-stats>\n </div>\n </div>\n `;\n }\n\n /**\n * Templates\n */\n private get creatorTemplate(): TemplateResult | typeof nothing {\n if (!this.model?.creator) return nothing;\n\n return html`\n <div class=\"created-by\">\n <span class=\"truncated\" title=${ifDefined(this.model?.creator)}>\n by&nbsp;${this.model?.creator}\n </span>\n </div>\n `;\n }\n\n private get imageBlockTemplate(): TemplateResult {\n return html`\n <image-block\n .model=${this.model}\n .baseImageUrl=${this.baseImageUrl}\n .loggedIn=${this.loggedIn}\n .isCompactTile=${false}\n .isListTile=${false}\n .viewSize=${'grid'}\n >\n </image-block>\n `;\n }\n\n private get sortedDateInfoTemplate() {\n let sortedValue;\n\n // console.log('model: ', this.model)\n switch (this.sortParam?.field) {\n case 'date':\n sortedValue = { field: 'published', value: this.model?.datePublished };\n break;\n case 'reviewdate':\n sortedValue = { field: 'reviewed', value: this.model?.dateReviewed };\n break;\n case 'addeddate':\n sortedValue = { field: 'added', value: this.model?.dateAdded };\n break;\n case 'publicdate':\n sortedValue = { field: 'archived', value: this.model?.dateArchived };\n break;\n default:\n break;\n }\n\n if (!sortedValue?.value) {\n return nothing;\n }\n return html`\n <div class=\"date-sorted-by truncated\">\n <span>\n ${sortedValue?.field} ${formatDate(sortedValue?.value, 'long')}\n </span>\n </div>\n `;\n }\n\n private get textSnippetsTemplate(): TemplateResult | typeof nothing {\n if (!this.hasSnippets) return nothing;\n\n return html`\n <text-snippet-block viewsize=\"grid\" .snippets=${this.model?.snippets}>\n </text-snippet-block>\n `;\n }\n\n private get volumeIssueTemplate(): TemplateResult | typeof nothing {\n if (!this.model?.volume || !this.model?.issue) return nothing;\n\n return html`\n <div class=\"volume-issue\">\n <span class=\"truncated\" title=\"volume|issue\">\n Volume&nbsp;${this.model?.volume}, Issue&nbsp;${this.model?.issue}\n </span>\n </div>\n `;\n }\n\n private get doesSortedByDate() {\n return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes(\n this.sortParam?.field as string\n );\n }\n\n private get hasSnippets(): boolean {\n return !!this.model?.snippets?.length;\n }\n\n /**\n * CSS\n */\n static get styles(): CSSResultGroup {\n const tileBorderColor = css`var(--tileBorderColor, #dddddd)`;\n\n return [\n baseTileStyles,\n css`\n .container {\n border: 1px solid ${tileBorderColor};\n }\n\n text-snippet-block {\n --containerLeftMargin: 5px;\n --containerTopMargin: 5px;\n }\n\n /**\n * iOS Safari long-press on tiles (to bring up hover pane)\n * gets messy without this\n */\n @media screen and (pointer: coarse) and (hover: none) {\n .container {\n -webkit-touch-callout: none;\n }\n\n .truncated {\n -webkit-touch-callout: default;\n }\n }\n `,\n ];\n }\n}\n"]}
1
+ {"version":3,"file":"item-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/item-tile.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable import/no-duplicates */\nimport {\n css,\n CSSResultGroup,\n html,\n LitElement,\n nothing,\n TemplateResult,\n} from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport type { SortParam } from '@internetarchive/search-service';\n\nimport { formatDate } from '../../utils/format-date';\nimport type { TileModel } from '../../models';\n\nimport { baseTileStyles } from './styles/tile-grid-shared-styles';\nimport '../image-block';\nimport '../text-snippet-block';\nimport '../item-image';\nimport '../mediatype-icon';\nimport './tile-stats';\n\n@customElement('item-tile')\nexport class ItemTile extends LitElement {\n @property({ type: String }) baseImageUrl?: string;\n\n @property({ type: Boolean }) loggedIn = false;\n\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: Object }) sortParam?: SortParam;\n\n @property({ type: Boolean }) showInfoButton = false;\n\n render() {\n const itemTitle = this.model?.title;\n\n return html`\n <div class=\"container\">\n ${this.infoButtonTemplate}\n <div class=\"tile-details\">\n <div class=\"item-info\">\n ${this.imageBlockTemplate}\n\n <div id=\"title\">\n <h1 class=\"truncated\" title=${ifDefined(itemTitle)}>\n ${itemTitle}\n </h1>\n </div>\n\n ${this.volumeIssueTemplate}\n ${this.doesSortedByDate\n ? this.sortedDateInfoTemplate\n : this.creatorTemplate}\n ${this.textSnippetsTemplate}\n </div>\n\n <tile-stats\n .mediatype=${this.model?.mediatype}\n .viewCount=${this.model?.viewCount}\n .favCount=${this.model?.favCount}\n .commentCount=${this.model?.commentCount}\n >\n </tile-stats>\n </div>\n </div>\n `;\n }\n\n /**\n * Templates\n */\n private get creatorTemplate(): TemplateResult | typeof nothing {\n if (!this.model?.creator) return nothing;\n\n return html`\n <div class=\"created-by\">\n <span class=\"truncated\" title=${ifDefined(this.model?.creator)}>\n by&nbsp;${this.model?.creator}\n </span>\n </div>\n `;\n }\n\n private get imageBlockTemplate(): TemplateResult {\n return html`\n <image-block\n .model=${this.model}\n .baseImageUrl=${this.baseImageUrl}\n .loggedIn=${this.loggedIn}\n .isCompactTile=${false}\n .isListTile=${false}\n .viewSize=${'grid'}\n >\n </image-block>\n `;\n }\n\n private get sortedDateInfoTemplate() {\n let sortedValue;\n switch (this.sortParam?.field) {\n case 'date':\n sortedValue = { field: 'published', value: this.model?.datePublished };\n break;\n case 'reviewdate':\n sortedValue = { field: 'reviewed', value: this.model?.dateReviewed };\n break;\n case 'addeddate':\n sortedValue = { field: 'added', value: this.model?.dateAdded };\n break;\n case 'publicdate':\n sortedValue = { field: 'archived', value: this.model?.dateArchived };\n break;\n default:\n break;\n }\n\n if (!sortedValue?.value) {\n return nothing;\n }\n return html`\n <div class=\"date-sorted-by truncated\">\n <span>\n ${sortedValue?.field} ${formatDate(sortedValue?.value, 'long')}\n </span>\n </div>\n `;\n }\n\n private get infoButtonTemplate(): TemplateResult | typeof nothing {\n // &#9432; is an information icon\n return this.showInfoButton\n ? html`<button class=\"info-button\" @click=${this.infoButtonPressed}>\n &#9432;\n <span class=\"sr-only\">More info</span>\n </button>`\n : nothing;\n }\n\n private get textSnippetsTemplate(): TemplateResult | typeof nothing {\n if (!this.hasSnippets) return nothing;\n\n return html`\n <text-snippet-block viewsize=\"grid\" .snippets=${this.model?.snippets}>\n </text-snippet-block>\n `;\n }\n\n private get volumeIssueTemplate(): TemplateResult | typeof nothing {\n if (!this.model?.volume || !this.model?.issue) return nothing;\n\n return html`\n <div class=\"volume-issue\">\n <span class=\"truncated\" title=\"volume|issue\">\n Volume&nbsp;${this.model?.volume}, Issue&nbsp;${this.model?.issue}\n </span>\n </div>\n `;\n }\n\n private get doesSortedByDate() {\n return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes(\n this.sortParam?.field as string\n );\n }\n\n private get hasSnippets(): boolean {\n return !!this.model?.snippets?.length;\n }\n\n private infoButtonPressed(e: PointerEvent): void {\n e.preventDefault();\n const event = new CustomEvent<{ x: number; y: number }>(\n 'infoButtonPressed',\n { detail: { x: e.clientX, y: e.clientY } }\n );\n this.dispatchEvent(event);\n }\n\n /**\n * CSS\n */\n static get styles(): CSSResultGroup {\n const tileBorderColor = css`var(--tileBorderColor, #dddddd)`;\n\n return [\n baseTileStyles,\n css`\n .container {\n border: 1px solid ${tileBorderColor};\n }\n\n text-snippet-block {\n --containerLeftMargin: 5px;\n --containerTopMargin: 5px;\n }\n\n /**\n * iOS Safari long-press on tiles (to bring up hover pane)\n * gets messy without this\n */\n @media screen and (pointer: coarse) and (hover: none) {\n .container {\n -webkit-touch-callout: none;\n }\n\n .truncated {\n -webkit-touch-callout: default;\n }\n }\n `,\n ];\n }\n}\n"]}
@@ -1 +1 @@
1
- export declare const baseTileStyles: import("lit").CSSResult;
1
+ export declare const baseTileStyles: import("lit").CSSResult;
@@ -1,9 +1,9 @@
1
- import { css } from 'lit';
2
- /**
3
- * Base tile styles
4
- */
5
- const tileBackgroundColor = css `var(--tileBackgroundColor, #ffffff)`;
6
- const tileCornerRadius = css `var(--tileCornerRadius, 4px)`;
1
+ import { css } from 'lit';
2
+ /**
3
+ * Base tile styles
4
+ */
5
+ const tileBackgroundColor = css `var(--tileBackgroundColor, #ffffff)`;
6
+ const tileCornerRadius = css `var(--tileCornerRadius, 4px)`;
7
7
  export const baseTileStyles = css `
8
8
  .container {
9
9
  background-color: ${tileBackgroundColor};
@@ -48,7 +48,7 @@ export const baseTileStyles = css `
48
48
  .archivist-since {
49
49
  display: flex;
50
50
  justify-content: left;
51
- align-items: flex-end; /* Important to start text from bottom */
51
+ align-items: flex-start;
52
52
  padding: 0 5px;
53
53
  }
54
54
 
@@ -94,8 +94,44 @@ export const baseTileStyles = css `
94
94
  text-decoration: underline;
95
95
  }
96
96
 
97
+ .info-button {
98
+ position: absolute;
99
+ right: 10px;
100
+ top: 10px;
101
+ margin: 0;
102
+ padding: 0;
103
+ border: none;
104
+ border-radius: 50%;
105
+ display: flex;
106
+ justify-content: center;
107
+ align-items: center;
108
+ background: rgba(220, 220, 220, 0.5);
109
+ color: white;
110
+ font-size: 2rem;
111
+ font-weight: bold;
112
+ line-height: 1;
113
+ text-shadow: black 1px 1px 3px;
114
+ overflow: visible;
115
+ aspect-ratio: 1 / 1;
116
+ z-index: 1;
117
+ }
118
+
97
119
  .hidden {
98
120
  display: none;
99
121
  }
100
- `;
122
+
123
+ .sr-only {
124
+ position: absolute !important;
125
+ width: 1px !important;
126
+ height: 1px !important;
127
+ margin: -1px !important;
128
+ padding: 0 !important;
129
+ border: 0 !important;
130
+ overflow: hidden !important;
131
+ white-space: nowrap !important;
132
+ clip: rect(1px, 1px, 1px, 1px) !important;
133
+ -webkit-clip-path: inset(50%) !important;
134
+ clip-path: inset(50%) !important;
135
+ }
136
+ `;
101
137
  //# sourceMappingURL=tile-grid-shared-styles.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tile-grid-shared-styles.js","sourceRoot":"","sources":["../../../../../src/tiles/grid/styles/tile-grid-shared-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AAEH,MAAM,mBAAmB,GAAG,GAAG,CAAA,qCAAqC,CAAC;AACrE,MAAM,gBAAgB,GAAG,GAAG,CAAA,8BAA8B,CAAC;AAE3D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;wBAET,mBAAmB;;qBAEtB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFpC,CAAC","sourcesContent":["import { css } from 'lit';\n\n/**\n * Base tile styles\n */\n\nconst tileBackgroundColor = css`var(--tileBackgroundColor, #ffffff)`;\nconst tileCornerRadius = css`var(--tileCornerRadius, 4px)`;\n\nexport const baseTileStyles = css`\n .container {\n background-color: ${tileBackgroundColor};\n border: 1px #2c2c2c;\n border-radius: ${tileCornerRadius};\n box-shadow: 1px 1px 2px 0;\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n image-block {\n display: block;\n position: relative;\n text-align: center;\n }\n\n .tile-details {\n display: flex;\n flex-direction: column;\n height: 100%;\n row-gap: 10px;\n font-family: 'Helvetica Neue', ui-sans-serif, system-ui, sans-serif;\n }\n\n .item-info {\n display: flex;\n flex-direction: column;\n row-gap: 5px;\n flex-grow: 1;\n }\n\n #title {\n padding: 0 5px;\n }\n\n .created-by,\n .date-sorted-by,\n .volume-issue,\n .archivist-since {\n display: flex;\n justify-content: left;\n align-items: flex-end; /* Important to start text from bottom */\n padding: 0 5px;\n }\n\n .truncated {\n flex: 1;\n color: #2c2c2c;\n min-width: 0; /* Important for long words! */\n text-align: left;\n line-height: 15px;\n text-overflow: ellipsis;\n overflow: hidden;\n word-wrap: break-word;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n }\n\n h1.truncated {\n display: -webkit-box;\n margin: 0px;\n line-height: 15px;\n font-size: 14px;\n font-weight: 500;\n padding-bottom: 1px;\n }\n\n span {\n display: -webkit-box;\n font-size: 1.4rem;\n line-height: 15px;\n overflow: hidden;\n word-wrap: break-word;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n padding-bottom: 1px;\n }\n\n .container:hover > .tile-details > .item-info > #title > .truncated {\n text-decoration: underline;\n }\n\n /** this is a workaround for Safari 15 where the hover effects are not working */\n #title:hover > .truncated {\n text-decoration: underline;\n }\n\n .hidden {\n display: none;\n }\n`;\n"]}
1
+ {"version":3,"file":"tile-grid-shared-styles.js","sourceRoot":"","sources":["../../../../../src/tiles/grid/styles/tile-grid-shared-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AAEH,MAAM,mBAAmB,GAAG,GAAG,CAAA,qCAAqC,CAAC;AACrE,MAAM,gBAAgB,GAAG,GAAG,CAAA,8BAA8B,CAAC;AAE3D,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;;wBAET,mBAAmB;;qBAEtB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6HpC,CAAC","sourcesContent":["import { css } from 'lit';\n\n/**\n * Base tile styles\n */\n\nconst tileBackgroundColor = css`var(--tileBackgroundColor, #ffffff)`;\nconst tileCornerRadius = css`var(--tileCornerRadius, 4px)`;\n\nexport const baseTileStyles = css`\n .container {\n background-color: ${tileBackgroundColor};\n border: 1px #2c2c2c;\n border-radius: ${tileCornerRadius};\n box-shadow: 1px 1px 2px 0;\n box-sizing: border-box;\n height: 100%;\n display: flex;\n flex-direction: column;\n width: 100%;\n }\n\n image-block {\n display: block;\n position: relative;\n text-align: center;\n }\n\n .tile-details {\n display: flex;\n flex-direction: column;\n height: 100%;\n row-gap: 10px;\n font-family: 'Helvetica Neue', ui-sans-serif, system-ui, sans-serif;\n }\n\n .item-info {\n display: flex;\n flex-direction: column;\n row-gap: 5px;\n flex-grow: 1;\n }\n\n #title {\n padding: 0 5px;\n }\n\n .created-by,\n .date-sorted-by,\n .volume-issue,\n .archivist-since {\n display: flex;\n justify-content: left;\n align-items: flex-start;\n padding: 0 5px;\n }\n\n .truncated {\n flex: 1;\n color: #2c2c2c;\n min-width: 0; /* Important for long words! */\n text-align: left;\n line-height: 15px;\n text-overflow: ellipsis;\n overflow: hidden;\n word-wrap: break-word;\n -webkit-line-clamp: 3;\n -webkit-box-orient: vertical;\n }\n\n h1.truncated {\n display: -webkit-box;\n margin: 0px;\n line-height: 15px;\n font-size: 14px;\n font-weight: 500;\n padding-bottom: 1px;\n }\n\n span {\n display: -webkit-box;\n font-size: 1.4rem;\n line-height: 15px;\n overflow: hidden;\n word-wrap: break-word;\n -webkit-line-clamp: 1;\n -webkit-box-orient: vertical;\n padding-bottom: 1px;\n }\n\n .container:hover > .tile-details > .item-info > #title > .truncated {\n text-decoration: underline;\n }\n\n /** this is a workaround for Safari 15 where the hover effects are not working */\n #title:hover > .truncated {\n text-decoration: underline;\n }\n\n .info-button {\n position: absolute;\n right: 10px;\n top: 10px;\n margin: 0;\n padding: 0;\n border: none;\n border-radius: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n background: rgba(220, 220, 220, 0.5);\n color: white;\n font-size: 2rem;\n font-weight: bold;\n line-height: 1;\n text-shadow: black 1px 1px 3px;\n overflow: visible;\n aspect-ratio: 1 / 1;\n z-index: 1;\n }\n\n .hidden {\n display: none;\n }\n\n .sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n margin: -1px !important;\n padding: 0 !important;\n border: 0 !important;\n overflow: hidden !important;\n white-space: nowrap !important;\n clip: rect(1px, 1px, 1px, 1px) !important;\n -webkit-clip-path: inset(50%) !important;\n clip-path: inset(50%) !important;\n }\n`;\n"]}
@@ -1,10 +1,10 @@
1
- import { CSSResultGroup, LitElement } from 'lit';
2
- export declare class TileStats extends LitElement {
3
- mediatype?: string;
4
- itemCount?: number;
5
- viewCount?: number;
6
- favCount?: number;
7
- commentCount?: number;
8
- render(): import("lit-html").TemplateResult<1>;
9
- static get styles(): CSSResultGroup;
10
- }
1
+ import { CSSResultGroup, LitElement } from 'lit';
2
+ export declare class TileStats extends LitElement {
3
+ mediatype?: string;
4
+ itemCount?: number;
5
+ viewCount?: number;
6
+ favCount?: number;
7
+ commentCount?: number;
8
+ render(): import("lit-html").TemplateResult<1>;
9
+ static get styles(): CSSResultGroup;
10
+ }
@@ -1,18 +1,18 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import { favoriteFilledIcon } from '../../assets/img/icons/favorite-filled';
5
- import { reviewsIcon } from '../../assets/img/icons/reviews';
6
- import { uploadIcon } from '../../assets/img/icons/upload';
7
- import { viewsIcon } from '../../assets/img/icons/views';
8
- import { formatCount } from '../../utils/format-count';
9
- let TileStats = class TileStats extends LitElement {
10
- render() {
11
- const formattedFavCount = formatCount(this.favCount, 'short', 'short');
12
- const formattedReviewCount = formatCount(this.commentCount, 'short', 'short');
13
- const uploadsOrViewsTitle = this.mediatype === 'account'
14
- ? `${this.itemCount} uploads`
15
- : `${this.viewCount} all-time views`;
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { favoriteFilledIcon } from '../../assets/img/icons/favorite-filled';
5
+ import { reviewsIcon } from '../../assets/img/icons/reviews';
6
+ import { uploadIcon } from '../../assets/img/icons/upload';
7
+ import { viewsIcon } from '../../assets/img/icons/views';
8
+ import { formatCount } from '../../utils/format-count';
9
+ let TileStats = class TileStats extends LitElement {
10
+ render() {
11
+ const formattedFavCount = formatCount(this.favCount, 'short', 'short');
12
+ const formattedReviewCount = formatCount(this.commentCount, 'short', 'short');
13
+ const uploadsOrViewsTitle = this.mediatype === 'account'
14
+ ? `${this.itemCount} uploads`
15
+ : `${this.viewCount} all-time views`;
16
16
  return html `
17
17
  <div class="item-stats">
18
18
  <p class="sr-only">
@@ -48,9 +48,9 @@ let TileStats = class TileStats extends LitElement {
48
48
  </li>
49
49
  </ul>
50
50
  </div>
51
- `;
52
- }
53
- static get styles() {
51
+ `;
52
+ }
53
+ static get styles() {
54
54
  return css `
55
55
  mediatype-icon {
56
56
  --iconHeight: 25px;
@@ -123,26 +123,26 @@ let TileStats = class TileStats extends LitElement {
123
123
  display: block;
124
124
  text-align: center;
125
125
  }
126
- `;
127
- }
128
- };
129
- __decorate([
130
- property({ type: String })
131
- ], TileStats.prototype, "mediatype", void 0);
132
- __decorate([
133
- property({ type: Number })
134
- ], TileStats.prototype, "itemCount", void 0);
135
- __decorate([
136
- property({ type: Number })
137
- ], TileStats.prototype, "viewCount", void 0);
138
- __decorate([
139
- property({ type: Number })
140
- ], TileStats.prototype, "favCount", void 0);
141
- __decorate([
142
- property({ type: Number })
143
- ], TileStats.prototype, "commentCount", void 0);
144
- TileStats = __decorate([
145
- customElement('tile-stats')
146
- ], TileStats);
147
- export { TileStats };
126
+ `;
127
+ }
128
+ };
129
+ __decorate([
130
+ property({ type: String })
131
+ ], TileStats.prototype, "mediatype", void 0);
132
+ __decorate([
133
+ property({ type: Number })
134
+ ], TileStats.prototype, "itemCount", void 0);
135
+ __decorate([
136
+ property({ type: Number })
137
+ ], TileStats.prototype, "viewCount", void 0);
138
+ __decorate([
139
+ property({ type: Number })
140
+ ], TileStats.prototype, "favCount", void 0);
141
+ __decorate([
142
+ property({ type: Number })
143
+ ], TileStats.prototype, "commentCount", void 0);
144
+ TileStats = __decorate([
145
+ customElement('tile-stats')
146
+ ], TileStats);
147
+ export { TileStats };
148
148
  //# sourceMappingURL=tile-stats.js.map