@internetarchive/collection-browser 0.3.8 → 0.3.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.
- package/.editorconfig +29 -29
- package/.github/workflows/ci.yml +26 -26
- package/.github/workflows/gh-pages-main.yml +39 -39
- package/.github/workflows/npm-publish.yml +39 -39
- package/.github/workflows/pr-preview.yml +38 -38
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +9 -9
- package/dist/index.js +9 -9
- package/dist/src/app-root.d.ts +48 -48
- package/dist/src/app-root.js +258 -258
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +278 -278
- package/dist/src/collection-browser.js +1105 -1105
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
- package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
- package/dist/src/collection-facets/facets-template.d.ts +16 -16
- package/dist/src/collection-facets/facets-template.js +125 -125
- package/dist/src/collection-facets/more-facets-content.d.ts +76 -76
- package/dist/src/collection-facets/more-facets-content.js +353 -353
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +192 -192
- package/dist/src/collection-facets.d.ts +77 -77
- package/dist/src/collection-facets.js +388 -388
- package/dist/src/empty-placeholder.d.ts +11 -11
- package/dist/src/empty-placeholder.js +42 -42
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +85 -85
- package/dist/src/models.d.ts +103 -103
- package/dist/src/models.js +117 -117
- package/dist/src/restoration-state-handler.d.ts +46 -46
- package/dist/src/restoration-state-handler.js +230 -230
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
- package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
- package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +8 -8
- package/dist/src/tiles/grid/account-tile.js +20 -20
- package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
- package/dist/src/tiles/grid/collection-tile.js +23 -23
- package/dist/src/tiles/grid/item-tile.d.ts +24 -24
- package/dist/src/tiles/grid/item-tile.js +87 -87
- package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
- package/dist/src/tiles/grid/tile-stats.js +40 -40
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +69 -69
- package/dist/src/tiles/item-image.d.ts +31 -31
- package/dist/src/tiles/item-image.js +103 -103
- package/dist/src/tiles/list/account-label.d.ts +1 -1
- package/dist/src/tiles/list/account-label.js +6 -6
- package/dist/src/tiles/list/date-label.d.ts +1 -1
- package/dist/src/tiles/list/date-label.js +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
- package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
- package/dist/src/tiles/list/tile-list-compact.d.ts +21 -21
- package/dist/src/tiles/list/tile-list-compact.js +93 -93
- package/dist/src/tiles/list/tile-list.d.ts +50 -50
- package/dist/src/tiles/list/tile-list.js +280 -275
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +47 -47
- package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
- package/dist/src/tiles/overlay/icon-overlay.js +30 -30
- package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
- package/dist/src/tiles/overlay/text-overlay.js +31 -31
- package/dist/src/tiles/text-snippet-block.d.ts +29 -29
- package/dist/src/tiles/text-snippet-block.js +81 -81
- package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
- package/dist/src/tiles/tile-dispatcher.js +128 -128
- package/dist/src/utils/analytics-events.d.ts +22 -22
- package/dist/src/utils/analytics-events.js +24 -24
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +23 -23
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +575 -575
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +62 -62
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +114 -114
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +544 -544
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +33 -33
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +56 -56
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
- package/dist/test/mocks/mock-collection-name-cache.js +13 -13
- package/dist/test/mocks/mock-search-responses.d.ts +10 -10
- package/dist/test/mocks/mock-search-responses.js +271 -271
- package/dist/test/mocks/mock-search-service.d.ts +13 -13
- package/dist/test/mocks/mock-search-service.js +36 -36
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +126 -126
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +41 -41
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +33 -33
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +107 -107
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +92 -92
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +136 -92
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/index.html +24 -24
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +1 -1
- package/renovate.json +6 -6
- package/src/tiles/list/tile-list.ts +12 -5
- package/test/tiles/list/tile-list.test.ts +51 -0
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { LitElement, html, css, nothing, } from 'lit';
|
|
3
|
-
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
4
|
-
import { SortField, SortFieldDisplayName, } from '../models';
|
|
5
|
-
import './alpha-bar';
|
|
6
|
-
import { sortIcon } from './img/sort-triangle';
|
|
7
|
-
import { tileIcon } from './img/tile';
|
|
8
|
-
import { listIcon } from './img/list';
|
|
9
|
-
import { compactIcon } from './img/compact';
|
|
10
|
-
let SortFilterBar = class SortFilterBar extends LitElement {
|
|
11
|
-
constructor() {
|
|
12
|
-
super(...arguments);
|
|
13
|
-
this.sortDirection = null;
|
|
14
|
-
this.selectedSort = SortField.relevance;
|
|
15
|
-
this.selectedTitleFilter = null;
|
|
16
|
-
this.selectedCreatorFilter = null;
|
|
17
|
-
this.showRelevance = true;
|
|
18
|
-
this.alphaSelectorVisible = null;
|
|
19
|
-
this.dateSortSelectorVisible = false;
|
|
20
|
-
this.viewSortSelectorVisible = false;
|
|
21
|
-
this.desktopSelectorBarWidth = 0;
|
|
22
|
-
this.selectorBarContainerWidth = 0;
|
|
23
|
-
this.hoveringOverDateSortOptions = false;
|
|
24
|
-
this.boundSortBarSelectorEscapeListener = (e) => {
|
|
25
|
-
if (e.key === 'Escape') {
|
|
26
|
-
this.viewSortSelectorVisible = false;
|
|
27
|
-
this.dateSortSelectorVisible = false;
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
render() {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { LitElement, html, css, nothing, } from 'lit';
|
|
3
|
+
import { customElement, property, query, state } from 'lit/decorators.js';
|
|
4
|
+
import { SortField, SortFieldDisplayName, } from '../models';
|
|
5
|
+
import './alpha-bar';
|
|
6
|
+
import { sortIcon } from './img/sort-triangle';
|
|
7
|
+
import { tileIcon } from './img/tile';
|
|
8
|
+
import { listIcon } from './img/list';
|
|
9
|
+
import { compactIcon } from './img/compact';
|
|
10
|
+
let SortFilterBar = class SortFilterBar extends LitElement {
|
|
11
|
+
constructor() {
|
|
12
|
+
super(...arguments);
|
|
13
|
+
this.sortDirection = null;
|
|
14
|
+
this.selectedSort = SortField.relevance;
|
|
15
|
+
this.selectedTitleFilter = null;
|
|
16
|
+
this.selectedCreatorFilter = null;
|
|
17
|
+
this.showRelevance = true;
|
|
18
|
+
this.alphaSelectorVisible = null;
|
|
19
|
+
this.dateSortSelectorVisible = false;
|
|
20
|
+
this.viewSortSelectorVisible = false;
|
|
21
|
+
this.desktopSelectorBarWidth = 0;
|
|
22
|
+
this.selectorBarContainerWidth = 0;
|
|
23
|
+
this.hoveringOverDateSortOptions = false;
|
|
24
|
+
this.boundSortBarSelectorEscapeListener = (e) => {
|
|
25
|
+
if (e.key === 'Escape') {
|
|
26
|
+
this.viewSortSelectorVisible = false;
|
|
27
|
+
this.dateSortSelectorVisible = false;
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
32
|
return html `
|
|
33
33
|
<div id="container">
|
|
34
34
|
<div id="sort-bar">
|
|
@@ -44,113 +44,113 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
44
44
|
<div id="display-style-selector">${this.displayOptionTemplate}</div>
|
|
45
45
|
</div>
|
|
46
46
|
|
|
47
|
-
${this.viewSortSelectorVisible && !this.mobileSelectorVisible
|
|
48
|
-
? this.viewSortSelector
|
|
47
|
+
${this.viewSortSelectorVisible && !this.mobileSelectorVisible
|
|
48
|
+
? this.viewSortSelector
|
|
49
49
|
: nothing}
|
|
50
|
-
${this.dateSortSelectorVisible && !this.mobileSelectorVisible
|
|
51
|
-
? this.dateSortSelector
|
|
50
|
+
${this.dateSortSelectorVisible && !this.mobileSelectorVisible
|
|
51
|
+
? this.dateSortSelector
|
|
52
52
|
: nothing}
|
|
53
53
|
${this.alphaBarTemplate}
|
|
54
54
|
|
|
55
55
|
<div id="bottom-shadow"></div>
|
|
56
56
|
</div>
|
|
57
|
-
`;
|
|
58
|
-
}
|
|
59
|
-
updated(changed) {
|
|
60
|
-
if (changed.has('displayMode')) {
|
|
61
|
-
this.displayModeChanged();
|
|
62
|
-
}
|
|
63
|
-
if (changed.has('selectedSort') && this.sortDirection === null) {
|
|
64
|
-
this.sortDirection = 'desc';
|
|
65
|
-
}
|
|
66
|
-
if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {
|
|
67
|
-
this.alphaSelectorVisible = 'title';
|
|
68
|
-
}
|
|
69
|
-
if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {
|
|
70
|
-
this.alphaSelectorVisible = 'creator';
|
|
71
|
-
}
|
|
72
|
-
if (changed.has('dateSortSelectorVisible') ||
|
|
73
|
-
changed.has('viewSortSelectorVisible')) {
|
|
74
|
-
this.setupEscapeListeners();
|
|
75
|
-
}
|
|
76
|
-
if (changed.has('resizeObserver')) {
|
|
77
|
-
const oldObserver = changed.get('resizeObserver');
|
|
78
|
-
if (oldObserver)
|
|
79
|
-
this.disconnectResizeObserver(oldObserver);
|
|
80
|
-
this.setupResizeObserver();
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
setupEscapeListeners() {
|
|
84
|
-
if (this.dateSortSelectorVisible || this.viewSortSelectorVisible) {
|
|
85
|
-
document.addEventListener('keydown', this.boundSortBarSelectorEscapeListener);
|
|
86
|
-
}
|
|
87
|
-
else {
|
|
88
|
-
document.removeEventListener('keydown', this.boundSortBarSelectorEscapeListener);
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
disconnectedCallback() {
|
|
92
|
-
if (this.resizeObserver) {
|
|
93
|
-
this.disconnectResizeObserver(this.resizeObserver);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
disconnectResizeObserver(resizeObserver) {
|
|
97
|
-
resizeObserver.removeObserver({
|
|
98
|
-
target: this.sortSelectorContainer,
|
|
99
|
-
handler: this,
|
|
100
|
-
});
|
|
101
|
-
resizeObserver.removeObserver({
|
|
102
|
-
target: this.desktopSortSelector,
|
|
103
|
-
handler: this,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
setupResizeObserver() {
|
|
107
|
-
if (!this.resizeObserver)
|
|
108
|
-
return;
|
|
109
|
-
this.resizeObserver.addObserver({
|
|
110
|
-
target: this.sortSelectorContainer,
|
|
111
|
-
handler: this,
|
|
112
|
-
});
|
|
113
|
-
this.resizeObserver.addObserver({
|
|
114
|
-
target: this.desktopSortSelector,
|
|
115
|
-
handler: this,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
get mobileSelectorVisible() {
|
|
119
|
-
return this.selectorBarContainerWidth - 10 < this.desktopSelectorBarWidth;
|
|
120
|
-
}
|
|
121
|
-
get alphaBarTemplate() {
|
|
122
|
-
if (!['title', 'creator'].includes(this.selectedSort))
|
|
123
|
-
return nothing;
|
|
124
|
-
if (this.alphaSelectorVisible === null) {
|
|
125
|
-
if (this.selectedSort === 'creator')
|
|
126
|
-
return this.creatorSelectorBar;
|
|
127
|
-
if (this.selectedSort === 'title')
|
|
128
|
-
return this.titleSelectorBar;
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
return this.alphaSelectorVisible === 'creator'
|
|
132
|
-
? this.creatorSelectorBar
|
|
133
|
-
: this.titleSelectorBar;
|
|
134
|
-
}
|
|
135
|
-
return nothing;
|
|
136
|
-
}
|
|
137
|
-
handleResize(entry) {
|
|
138
|
-
if (entry.target === this.desktopSortSelector) {
|
|
139
|
-
this.desktopSelectorBarWidth = entry.contentRect.width;
|
|
140
|
-
}
|
|
141
|
-
else if (entry.target === this.sortSelectorContainer) {
|
|
142
|
-
this.selectorBarContainerWidth = entry.contentRect.width;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
get sortDirectionSelectorTemplate() {
|
|
57
|
+
`;
|
|
58
|
+
}
|
|
59
|
+
updated(changed) {
|
|
60
|
+
if (changed.has('displayMode')) {
|
|
61
|
+
this.displayModeChanged();
|
|
62
|
+
}
|
|
63
|
+
if (changed.has('selectedSort') && this.sortDirection === null) {
|
|
64
|
+
this.sortDirection = 'desc';
|
|
65
|
+
}
|
|
66
|
+
if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {
|
|
67
|
+
this.alphaSelectorVisible = 'title';
|
|
68
|
+
}
|
|
69
|
+
if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {
|
|
70
|
+
this.alphaSelectorVisible = 'creator';
|
|
71
|
+
}
|
|
72
|
+
if (changed.has('dateSortSelectorVisible') ||
|
|
73
|
+
changed.has('viewSortSelectorVisible')) {
|
|
74
|
+
this.setupEscapeListeners();
|
|
75
|
+
}
|
|
76
|
+
if (changed.has('resizeObserver')) {
|
|
77
|
+
const oldObserver = changed.get('resizeObserver');
|
|
78
|
+
if (oldObserver)
|
|
79
|
+
this.disconnectResizeObserver(oldObserver);
|
|
80
|
+
this.setupResizeObserver();
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
setupEscapeListeners() {
|
|
84
|
+
if (this.dateSortSelectorVisible || this.viewSortSelectorVisible) {
|
|
85
|
+
document.addEventListener('keydown', this.boundSortBarSelectorEscapeListener);
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
document.removeEventListener('keydown', this.boundSortBarSelectorEscapeListener);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
disconnectedCallback() {
|
|
92
|
+
if (this.resizeObserver) {
|
|
93
|
+
this.disconnectResizeObserver(this.resizeObserver);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
disconnectResizeObserver(resizeObserver) {
|
|
97
|
+
resizeObserver.removeObserver({
|
|
98
|
+
target: this.sortSelectorContainer,
|
|
99
|
+
handler: this,
|
|
100
|
+
});
|
|
101
|
+
resizeObserver.removeObserver({
|
|
102
|
+
target: this.desktopSortSelector,
|
|
103
|
+
handler: this,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
setupResizeObserver() {
|
|
107
|
+
if (!this.resizeObserver)
|
|
108
|
+
return;
|
|
109
|
+
this.resizeObserver.addObserver({
|
|
110
|
+
target: this.sortSelectorContainer,
|
|
111
|
+
handler: this,
|
|
112
|
+
});
|
|
113
|
+
this.resizeObserver.addObserver({
|
|
114
|
+
target: this.desktopSortSelector,
|
|
115
|
+
handler: this,
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
get mobileSelectorVisible() {
|
|
119
|
+
return this.selectorBarContainerWidth - 10 < this.desktopSelectorBarWidth;
|
|
120
|
+
}
|
|
121
|
+
get alphaBarTemplate() {
|
|
122
|
+
if (!['title', 'creator'].includes(this.selectedSort))
|
|
123
|
+
return nothing;
|
|
124
|
+
if (this.alphaSelectorVisible === null) {
|
|
125
|
+
if (this.selectedSort === 'creator')
|
|
126
|
+
return this.creatorSelectorBar;
|
|
127
|
+
if (this.selectedSort === 'title')
|
|
128
|
+
return this.titleSelectorBar;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
return this.alphaSelectorVisible === 'creator'
|
|
132
|
+
? this.creatorSelectorBar
|
|
133
|
+
: this.titleSelectorBar;
|
|
134
|
+
}
|
|
135
|
+
return nothing;
|
|
136
|
+
}
|
|
137
|
+
handleResize(entry) {
|
|
138
|
+
if (entry.target === this.desktopSortSelector) {
|
|
139
|
+
this.desktopSelectorBarWidth = entry.contentRect.width;
|
|
140
|
+
}
|
|
141
|
+
else if (entry.target === this.sortSelectorContainer) {
|
|
142
|
+
this.selectorBarContainerWidth = entry.contentRect.width;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
get sortDirectionSelectorTemplate() {
|
|
146
146
|
return html `
|
|
147
147
|
<div id="sort-direction-selector">
|
|
148
148
|
<button
|
|
149
149
|
id="sort-ascending-btn"
|
|
150
150
|
class="sort-button ${this.sortDirection === 'asc' ? 'selected' : ''}"
|
|
151
151
|
?disabled=${this.selectedSort === 'relevance'}
|
|
152
|
-
@click=${() => {
|
|
153
|
-
this.setSortDirections('asc');
|
|
152
|
+
@click=${() => {
|
|
153
|
+
this.setSortDirections('asc');
|
|
154
154
|
}}
|
|
155
155
|
>
|
|
156
156
|
${sortIcon}
|
|
@@ -159,16 +159,16 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
159
159
|
id="sort-descending-btn"
|
|
160
160
|
class="sort-button ${this.sortDirection === 'desc' ? 'selected' : ''}"
|
|
161
161
|
?disabled=${this.selectedSort === 'relevance'}
|
|
162
|
-
@click=${() => {
|
|
163
|
-
this.setSortDirections('desc');
|
|
162
|
+
@click=${() => {
|
|
163
|
+
this.setSortDirections('desc');
|
|
164
164
|
}}
|
|
165
165
|
>
|
|
166
166
|
${sortIcon}
|
|
167
167
|
</button>
|
|
168
168
|
</div>
|
|
169
|
-
`;
|
|
170
|
-
}
|
|
171
|
-
get desktopSortSelectorTemplate() {
|
|
169
|
+
`;
|
|
170
|
+
}
|
|
171
|
+
get desktopSortSelectorTemplate() {
|
|
172
172
|
return html `
|
|
173
173
|
<ul
|
|
174
174
|
id="desktop-sort-selector"
|
|
@@ -176,112 +176,112 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
176
176
|
>
|
|
177
177
|
<li id="sort-by-text">Sort By</li>
|
|
178
178
|
<li>
|
|
179
|
-
${this.showRelevance
|
|
180
|
-
? this.getSortDisplayOption(SortField.relevance)
|
|
179
|
+
${this.showRelevance
|
|
180
|
+
? this.getSortDisplayOption(SortField.relevance)
|
|
181
181
|
: nothing}
|
|
182
182
|
</li>
|
|
183
183
|
<li>
|
|
184
|
-
${this.getSortDisplayOption(SortField.weeklyview, {
|
|
185
|
-
clickEvent: () => {
|
|
186
|
-
if (!this.viewOptionSelected)
|
|
187
|
-
this.setSelectedSort(SortField.weeklyview);
|
|
188
|
-
this.viewSortSelectorVisible = !this.viewSortSelectorVisible;
|
|
189
|
-
this.dateSortSelectorVisible = false;
|
|
190
|
-
this.alphaSelectorVisible = null;
|
|
191
|
-
this.selectedTitleFilter = null;
|
|
192
|
-
this.selectedCreatorFilter = null;
|
|
193
|
-
this.emitTitleLetterChangedEvent();
|
|
194
|
-
this.emitCreatorLetterChangedEvent();
|
|
195
|
-
},
|
|
196
|
-
displayName: html `${this.viewSortField}`,
|
|
197
|
-
isSelected: () => this.viewOptionSelected,
|
|
184
|
+
${this.getSortDisplayOption(SortField.weeklyview, {
|
|
185
|
+
clickEvent: () => {
|
|
186
|
+
if (!this.viewOptionSelected)
|
|
187
|
+
this.setSelectedSort(SortField.weeklyview);
|
|
188
|
+
this.viewSortSelectorVisible = !this.viewSortSelectorVisible;
|
|
189
|
+
this.dateSortSelectorVisible = false;
|
|
190
|
+
this.alphaSelectorVisible = null;
|
|
191
|
+
this.selectedTitleFilter = null;
|
|
192
|
+
this.selectedCreatorFilter = null;
|
|
193
|
+
this.emitTitleLetterChangedEvent();
|
|
194
|
+
this.emitCreatorLetterChangedEvent();
|
|
195
|
+
},
|
|
196
|
+
displayName: html `${this.viewSortField}`,
|
|
197
|
+
isSelected: () => this.viewOptionSelected,
|
|
198
198
|
})}
|
|
199
199
|
</li>
|
|
200
200
|
<li>
|
|
201
|
-
${this.getSortDisplayOption(SortField.title, {
|
|
202
|
-
clickEvent: () => {
|
|
203
|
-
this.alphaSelectorVisible = 'title';
|
|
204
|
-
this.selectedCreatorFilter = null;
|
|
205
|
-
this.dateSortSelectorVisible = false;
|
|
206
|
-
this.viewSortSelectorVisible = false;
|
|
207
|
-
this.setSelectedSort(SortField.title);
|
|
208
|
-
this.emitCreatorLetterChangedEvent();
|
|
209
|
-
},
|
|
201
|
+
${this.getSortDisplayOption(SortField.title, {
|
|
202
|
+
clickEvent: () => {
|
|
203
|
+
this.alphaSelectorVisible = 'title';
|
|
204
|
+
this.selectedCreatorFilter = null;
|
|
205
|
+
this.dateSortSelectorVisible = false;
|
|
206
|
+
this.viewSortSelectorVisible = false;
|
|
207
|
+
this.setSelectedSort(SortField.title);
|
|
208
|
+
this.emitCreatorLetterChangedEvent();
|
|
209
|
+
},
|
|
210
210
|
})}
|
|
211
211
|
</li>
|
|
212
212
|
<li>
|
|
213
|
-
${this.getSortDisplayOption(SortField.date, {
|
|
214
|
-
clickEvent: () => {
|
|
215
|
-
if (!this.dateOptionSelected)
|
|
216
|
-
this.setSelectedSort(SortField.date);
|
|
217
|
-
this.dateSortSelectorVisible = !this.dateSortSelectorVisible;
|
|
218
|
-
this.viewSortSelectorVisible = false;
|
|
219
|
-
this.alphaSelectorVisible = null;
|
|
220
|
-
this.selectedTitleFilter = null;
|
|
221
|
-
this.selectedCreatorFilter = null;
|
|
222
|
-
this.emitTitleLetterChangedEvent();
|
|
223
|
-
this.emitCreatorLetterChangedEvent();
|
|
224
|
-
},
|
|
225
|
-
displayName: html `${this.dateSortField}`,
|
|
226
|
-
isSelected: () => this.dateOptionSelected,
|
|
213
|
+
${this.getSortDisplayOption(SortField.date, {
|
|
214
|
+
clickEvent: () => {
|
|
215
|
+
if (!this.dateOptionSelected)
|
|
216
|
+
this.setSelectedSort(SortField.date);
|
|
217
|
+
this.dateSortSelectorVisible = !this.dateSortSelectorVisible;
|
|
218
|
+
this.viewSortSelectorVisible = false;
|
|
219
|
+
this.alphaSelectorVisible = null;
|
|
220
|
+
this.selectedTitleFilter = null;
|
|
221
|
+
this.selectedCreatorFilter = null;
|
|
222
|
+
this.emitTitleLetterChangedEvent();
|
|
223
|
+
this.emitCreatorLetterChangedEvent();
|
|
224
|
+
},
|
|
225
|
+
displayName: html `${this.dateSortField}`,
|
|
226
|
+
isSelected: () => this.dateOptionSelected,
|
|
227
227
|
})}
|
|
228
228
|
</li>
|
|
229
229
|
<li>
|
|
230
|
-
${this.getSortDisplayOption(SortField.creator, {
|
|
231
|
-
clickEvent: () => {
|
|
232
|
-
this.alphaSelectorVisible = 'creator';
|
|
233
|
-
this.selectedTitleFilter = null;
|
|
234
|
-
this.dateSortSelectorVisible = false;
|
|
235
|
-
this.setSelectedSort(SortField.creator);
|
|
236
|
-
this.emitTitleLetterChangedEvent();
|
|
237
|
-
},
|
|
230
|
+
${this.getSortDisplayOption(SortField.creator, {
|
|
231
|
+
clickEvent: () => {
|
|
232
|
+
this.alphaSelectorVisible = 'creator';
|
|
233
|
+
this.selectedTitleFilter = null;
|
|
234
|
+
this.dateSortSelectorVisible = false;
|
|
235
|
+
this.setSelectedSort(SortField.creator);
|
|
236
|
+
this.emitTitleLetterChangedEvent();
|
|
237
|
+
},
|
|
238
238
|
})}
|
|
239
239
|
</li>
|
|
240
240
|
</ul>
|
|
241
|
-
`;
|
|
242
|
-
}
|
|
243
|
-
/**
|
|
244
|
-
* This generates each of the sort option links.
|
|
245
|
-
*
|
|
246
|
-
* It manages the display value and the selected state of the option.
|
|
247
|
-
*
|
|
248
|
-
* @param sortField
|
|
249
|
-
* @param options {
|
|
250
|
-
* additionalClickEvent?: () => void; If this is provided, it will also be called when the option is clicked.
|
|
251
|
-
* displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.
|
|
252
|
-
* isSelected?: () => boolean; A function that returns true if the option is selected. Defaults to the selectedSort === sortField.
|
|
253
|
-
* }
|
|
254
|
-
* @returns
|
|
255
|
-
*/
|
|
256
|
-
getSortDisplayOption(sortField, options) {
|
|
257
|
-
var _a, _b;
|
|
258
|
-
const isSelected = (_a = options === null || options === void 0 ? void 0 : options.isSelected) !== null && _a !== void 0 ? _a : (() => this.selectedSort === sortField);
|
|
259
|
-
const displayName = (_b = options === null || options === void 0 ? void 0 : options.displayName) !== null && _b !== void 0 ? _b : SortFieldDisplayName[sortField];
|
|
241
|
+
`;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* This generates each of the sort option links.
|
|
245
|
+
*
|
|
246
|
+
* It manages the display value and the selected state of the option.
|
|
247
|
+
*
|
|
248
|
+
* @param sortField
|
|
249
|
+
* @param options {
|
|
250
|
+
* additionalClickEvent?: () => void; If this is provided, it will also be called when the option is clicked.
|
|
251
|
+
* displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.
|
|
252
|
+
* isSelected?: () => boolean; A function that returns true if the option is selected. Defaults to the selectedSort === sortField.
|
|
253
|
+
* }
|
|
254
|
+
* @returns
|
|
255
|
+
*/
|
|
256
|
+
getSortDisplayOption(sortField, options) {
|
|
257
|
+
var _a, _b;
|
|
258
|
+
const isSelected = (_a = options === null || options === void 0 ? void 0 : options.isSelected) !== null && _a !== void 0 ? _a : (() => this.selectedSort === sortField);
|
|
259
|
+
const displayName = (_b = options === null || options === void 0 ? void 0 : options.displayName) !== null && _b !== void 0 ? _b : SortFieldDisplayName[sortField];
|
|
260
260
|
return html `
|
|
261
261
|
<a
|
|
262
262
|
href="#"
|
|
263
|
-
@click=${(e) => {
|
|
264
|
-
e.preventDefault();
|
|
265
|
-
if (options === null || options === void 0 ? void 0 : options.clickEvent) {
|
|
266
|
-
options.clickEvent(e);
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
this.alphaSelectorVisible = null;
|
|
270
|
-
this.dateSortSelectorVisible = false;
|
|
271
|
-
this.selectedTitleFilter = null;
|
|
272
|
-
this.selectedCreatorFilter = null;
|
|
273
|
-
this.setSelectedSort(sortField);
|
|
274
|
-
this.emitTitleLetterChangedEvent();
|
|
275
|
-
this.emitCreatorLetterChangedEvent();
|
|
276
|
-
}
|
|
263
|
+
@click=${(e) => {
|
|
264
|
+
e.preventDefault();
|
|
265
|
+
if (options === null || options === void 0 ? void 0 : options.clickEvent) {
|
|
266
|
+
options.clickEvent(e);
|
|
267
|
+
}
|
|
268
|
+
else {
|
|
269
|
+
this.alphaSelectorVisible = null;
|
|
270
|
+
this.dateSortSelectorVisible = false;
|
|
271
|
+
this.selectedTitleFilter = null;
|
|
272
|
+
this.selectedCreatorFilter = null;
|
|
273
|
+
this.setSelectedSort(sortField);
|
|
274
|
+
this.emitTitleLetterChangedEvent();
|
|
275
|
+
this.emitCreatorLetterChangedEvent();
|
|
276
|
+
}
|
|
277
277
|
}}
|
|
278
278
|
class=${isSelected() ? 'selected' : ''}
|
|
279
279
|
>
|
|
280
280
|
${displayName}
|
|
281
281
|
</a>
|
|
282
|
-
`;
|
|
283
|
-
}
|
|
284
|
-
get mobileSortSelectorTemplate() {
|
|
282
|
+
`;
|
|
283
|
+
}
|
|
284
|
+
get mobileSortSelectorTemplate() {
|
|
285
285
|
return html `
|
|
286
286
|
<select
|
|
287
287
|
id="mobile-sort-selector"
|
|
@@ -294,20 +294,20 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
294
294
|
</option>
|
|
295
295
|
`)}
|
|
296
296
|
</select>
|
|
297
|
-
`;
|
|
298
|
-
}
|
|
299
|
-
mobileSortChanged(e) {
|
|
300
|
-
const target = e.target;
|
|
301
|
-
this.setSelectedSort(target.value);
|
|
302
|
-
}
|
|
303
|
-
get displayOptionTemplate() {
|
|
297
|
+
`;
|
|
298
|
+
}
|
|
299
|
+
mobileSortChanged(e) {
|
|
300
|
+
const target = e.target;
|
|
301
|
+
this.setSelectedSort(target.value);
|
|
302
|
+
}
|
|
303
|
+
get displayOptionTemplate() {
|
|
304
304
|
return html `
|
|
305
305
|
<ul>
|
|
306
306
|
<li>
|
|
307
307
|
<button
|
|
308
308
|
id="grid-button"
|
|
309
|
-
@click=${() => {
|
|
310
|
-
this.displayMode = 'grid';
|
|
309
|
+
@click=${() => {
|
|
310
|
+
this.displayMode = 'grid';
|
|
311
311
|
}}
|
|
312
312
|
class=${this.displayMode === 'grid' ? 'active' : ''}
|
|
313
313
|
title="Tile view"
|
|
@@ -318,8 +318,8 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
318
318
|
<li>
|
|
319
319
|
<button
|
|
320
320
|
id="list-detail-button"
|
|
321
|
-
@click=${() => {
|
|
322
|
-
this.displayMode = 'list-detail';
|
|
321
|
+
@click=${() => {
|
|
322
|
+
this.displayMode = 'list-detail';
|
|
323
323
|
}}
|
|
324
324
|
class=${this.displayMode === 'list-detail' ? 'active' : ''}
|
|
325
325
|
title="List view"
|
|
@@ -330,8 +330,8 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
330
330
|
<li>
|
|
331
331
|
<button
|
|
332
332
|
id="list-compact-button"
|
|
333
|
-
@click=${() => {
|
|
334
|
-
this.displayMode = 'list-compact';
|
|
333
|
+
@click=${() => {
|
|
334
|
+
this.displayMode = 'list-compact';
|
|
335
335
|
}}
|
|
336
336
|
class=${this.displayMode === 'list-compact' ? 'active' : ''}
|
|
337
337
|
title="Compact list view"
|
|
@@ -340,17 +340,17 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
340
340
|
</button>
|
|
341
341
|
</li>
|
|
342
342
|
</ul>
|
|
343
|
-
`;
|
|
344
|
-
}
|
|
345
|
-
get dateSortSelector() {
|
|
343
|
+
`;
|
|
344
|
+
}
|
|
345
|
+
get dateSortSelector() {
|
|
346
346
|
return html `
|
|
347
347
|
<div
|
|
348
348
|
id="date-sort-selector-backdrop"
|
|
349
|
-
@keyup=${() => {
|
|
350
|
-
this.dateSortSelectorVisible = false;
|
|
349
|
+
@keyup=${() => {
|
|
350
|
+
this.dateSortSelectorVisible = false;
|
|
351
351
|
}}
|
|
352
|
-
@click=${() => {
|
|
353
|
-
this.dateSortSelectorVisible = false;
|
|
352
|
+
@click=${() => {
|
|
353
|
+
this.dateSortSelectorVisible = false;
|
|
354
354
|
}}
|
|
355
355
|
></div>
|
|
356
356
|
<div id="date-sort-selector">
|
|
@@ -361,17 +361,17 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
361
361
|
<li>${this.getDateSortButton(SortField.dateadded)}</li>
|
|
362
362
|
</ul>
|
|
363
363
|
</div>
|
|
364
|
-
`;
|
|
365
|
-
}
|
|
366
|
-
get viewSortSelector() {
|
|
364
|
+
`;
|
|
365
|
+
}
|
|
366
|
+
get viewSortSelector() {
|
|
367
367
|
return html `
|
|
368
368
|
<div
|
|
369
369
|
id="view-sort-selector-backdrop"
|
|
370
|
-
@keyup=${() => {
|
|
371
|
-
this.viewSortSelectorVisible = false;
|
|
370
|
+
@keyup=${() => {
|
|
371
|
+
this.viewSortSelectorVisible = false;
|
|
372
372
|
}}
|
|
373
|
-
@click=${() => {
|
|
374
|
-
this.viewSortSelectorVisible = false;
|
|
373
|
+
@click=${() => {
|
|
374
|
+
this.viewSortSelectorVisible = false;
|
|
375
375
|
}}
|
|
376
376
|
></div>
|
|
377
377
|
<div id="view-sort-selector">
|
|
@@ -380,151 +380,151 @@ let SortFilterBar = class SortFilterBar extends LitElement {
|
|
|
380
380
|
<li>${this.getDateSortButton(SortField.weeklyview)}</li>
|
|
381
381
|
</ul>
|
|
382
382
|
</div>
|
|
383
|
-
`;
|
|
384
|
-
}
|
|
385
|
-
getDateSortButton(sortField) {
|
|
383
|
+
`;
|
|
384
|
+
}
|
|
385
|
+
getDateSortButton(sortField) {
|
|
386
386
|
return html `
|
|
387
387
|
<button
|
|
388
|
-
@click=${() => {
|
|
389
|
-
this.selectDateSort(sortField);
|
|
388
|
+
@click=${() => {
|
|
389
|
+
this.selectDateSort(sortField);
|
|
390
390
|
}}
|
|
391
391
|
class=${this.selectedSort === sortField ? 'selected' : ''}
|
|
392
392
|
>
|
|
393
393
|
${SortFieldDisplayName[sortField]}
|
|
394
394
|
</button>
|
|
395
|
-
`;
|
|
396
|
-
}
|
|
397
|
-
selectDateSort(sortField) {
|
|
398
|
-
this.dateSortSelectorVisible = false;
|
|
399
|
-
this.viewSortSelectorVisible = false;
|
|
400
|
-
this.setSelectedSort(sortField);
|
|
401
|
-
}
|
|
402
|
-
setSortDirections(sortDirection) {
|
|
403
|
-
this.sortDirection = sortDirection;
|
|
404
|
-
this.emitSortChangedEvent();
|
|
405
|
-
}
|
|
406
|
-
setSelectedSort(sort) {
|
|
407
|
-
this.selectedSort = sort;
|
|
408
|
-
this.emitSortChangedEvent();
|
|
409
|
-
}
|
|
410
|
-
/**
|
|
411
|
-
* There are four date sort options.
|
|
412
|
-
*
|
|
413
|
-
* This checks to see if the current sort is one of them.
|
|
414
|
-
*
|
|
415
|
-
* @readonly
|
|
416
|
-
* @private
|
|
417
|
-
* @type {boolean}
|
|
418
|
-
* @memberof SortFilterBar
|
|
419
|
-
*/
|
|
420
|
-
get dateOptionSelected() {
|
|
421
|
-
const dateSortFields = [
|
|
422
|
-
SortField.datearchived,
|
|
423
|
-
SortField.date,
|
|
424
|
-
SortField.datereviewed,
|
|
425
|
-
SortField.dateadded,
|
|
426
|
-
];
|
|
427
|
-
return dateSortFields.includes(this.selectedSort);
|
|
428
|
-
}
|
|
429
|
-
/**
|
|
430
|
-
* There are two view sort options.
|
|
431
|
-
*
|
|
432
|
-
* This checks to see if the current sort is one of them.
|
|
433
|
-
*
|
|
434
|
-
* @readonly
|
|
435
|
-
* @private
|
|
436
|
-
* @type {boolean}
|
|
437
|
-
* @memberof SortFilterBar
|
|
438
|
-
*/
|
|
439
|
-
get viewOptionSelected() {
|
|
440
|
-
const viewSortFields = [
|
|
441
|
-
SortField.alltimeview,
|
|
442
|
-
SortField.weeklyview,
|
|
443
|
-
];
|
|
444
|
-
return viewSortFields.includes(this.selectedSort);
|
|
445
|
-
}
|
|
446
|
-
/**
|
|
447
|
-
* The display name of the current date field
|
|
448
|
-
*
|
|
449
|
-
* @readonly
|
|
450
|
-
* @private
|
|
451
|
-
* @type {string}
|
|
452
|
-
* @memberof SortFilterBar
|
|
453
|
-
*/
|
|
454
|
-
get dateSortField() {
|
|
455
|
-
var _a;
|
|
456
|
-
const defaultSort = SortFieldDisplayName[SortField.date];
|
|
457
|
-
const name = this.dateOptionSelected
|
|
458
|
-
? (_a = SortFieldDisplayName[this.selectedSort]) !== null && _a !== void 0 ? _a : defaultSort
|
|
459
|
-
: defaultSort;
|
|
460
|
-
return name;
|
|
461
|
-
}
|
|
462
|
-
/**
|
|
463
|
-
* The display name of the current view field
|
|
464
|
-
*
|
|
465
|
-
* @readonly
|
|
466
|
-
* @private
|
|
467
|
-
* @type {string}
|
|
468
|
-
* @memberof SortFilterBar
|
|
469
|
-
*/
|
|
470
|
-
get viewSortField() {
|
|
471
|
-
var _a;
|
|
472
|
-
const defaultSort = SortFieldDisplayName[SortField.weeklyview];
|
|
473
|
-
const name = this.viewOptionSelected
|
|
474
|
-
? (_a = SortFieldDisplayName[this.selectedSort]) !== null && _a !== void 0 ? _a : defaultSort
|
|
475
|
-
: defaultSort;
|
|
476
|
-
return name;
|
|
477
|
-
}
|
|
478
|
-
get titleSelectorBar() {
|
|
395
|
+
`;
|
|
396
|
+
}
|
|
397
|
+
selectDateSort(sortField) {
|
|
398
|
+
this.dateSortSelectorVisible = false;
|
|
399
|
+
this.viewSortSelectorVisible = false;
|
|
400
|
+
this.setSelectedSort(sortField);
|
|
401
|
+
}
|
|
402
|
+
setSortDirections(sortDirection) {
|
|
403
|
+
this.sortDirection = sortDirection;
|
|
404
|
+
this.emitSortChangedEvent();
|
|
405
|
+
}
|
|
406
|
+
setSelectedSort(sort) {
|
|
407
|
+
this.selectedSort = sort;
|
|
408
|
+
this.emitSortChangedEvent();
|
|
409
|
+
}
|
|
410
|
+
/**
|
|
411
|
+
* There are four date sort options.
|
|
412
|
+
*
|
|
413
|
+
* This checks to see if the current sort is one of them.
|
|
414
|
+
*
|
|
415
|
+
* @readonly
|
|
416
|
+
* @private
|
|
417
|
+
* @type {boolean}
|
|
418
|
+
* @memberof SortFilterBar
|
|
419
|
+
*/
|
|
420
|
+
get dateOptionSelected() {
|
|
421
|
+
const dateSortFields = [
|
|
422
|
+
SortField.datearchived,
|
|
423
|
+
SortField.date,
|
|
424
|
+
SortField.datereviewed,
|
|
425
|
+
SortField.dateadded,
|
|
426
|
+
];
|
|
427
|
+
return dateSortFields.includes(this.selectedSort);
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* There are two view sort options.
|
|
431
|
+
*
|
|
432
|
+
* This checks to see if the current sort is one of them.
|
|
433
|
+
*
|
|
434
|
+
* @readonly
|
|
435
|
+
* @private
|
|
436
|
+
* @type {boolean}
|
|
437
|
+
* @memberof SortFilterBar
|
|
438
|
+
*/
|
|
439
|
+
get viewOptionSelected() {
|
|
440
|
+
const viewSortFields = [
|
|
441
|
+
SortField.alltimeview,
|
|
442
|
+
SortField.weeklyview,
|
|
443
|
+
];
|
|
444
|
+
return viewSortFields.includes(this.selectedSort);
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* The display name of the current date field
|
|
448
|
+
*
|
|
449
|
+
* @readonly
|
|
450
|
+
* @private
|
|
451
|
+
* @type {string}
|
|
452
|
+
* @memberof SortFilterBar
|
|
453
|
+
*/
|
|
454
|
+
get dateSortField() {
|
|
455
|
+
var _a;
|
|
456
|
+
const defaultSort = SortFieldDisplayName[SortField.date];
|
|
457
|
+
const name = this.dateOptionSelected
|
|
458
|
+
? (_a = SortFieldDisplayName[this.selectedSort]) !== null && _a !== void 0 ? _a : defaultSort
|
|
459
|
+
: defaultSort;
|
|
460
|
+
return name;
|
|
461
|
+
}
|
|
462
|
+
/**
|
|
463
|
+
* The display name of the current view field
|
|
464
|
+
*
|
|
465
|
+
* @readonly
|
|
466
|
+
* @private
|
|
467
|
+
* @type {string}
|
|
468
|
+
* @memberof SortFilterBar
|
|
469
|
+
*/
|
|
470
|
+
get viewSortField() {
|
|
471
|
+
var _a;
|
|
472
|
+
const defaultSort = SortFieldDisplayName[SortField.weeklyview];
|
|
473
|
+
const name = this.viewOptionSelected
|
|
474
|
+
? (_a = SortFieldDisplayName[this.selectedSort]) !== null && _a !== void 0 ? _a : defaultSort
|
|
475
|
+
: defaultSort;
|
|
476
|
+
return name;
|
|
477
|
+
}
|
|
478
|
+
get titleSelectorBar() {
|
|
479
479
|
return html ` <alpha-bar
|
|
480
480
|
.selectedLetter=${this.selectedTitleFilter}
|
|
481
481
|
@letterChanged=${this.titleLetterChanged}
|
|
482
|
-
></alpha-bar>`;
|
|
483
|
-
}
|
|
484
|
-
get creatorSelectorBar() {
|
|
482
|
+
></alpha-bar>`;
|
|
483
|
+
}
|
|
484
|
+
get creatorSelectorBar() {
|
|
485
485
|
return html ` <alpha-bar
|
|
486
486
|
.selectedLetter=${this.selectedCreatorFilter}
|
|
487
487
|
@letterChanged=${this.creatorLetterChanged}
|
|
488
|
-
></alpha-bar>`;
|
|
489
|
-
}
|
|
490
|
-
titleLetterChanged(e) {
|
|
491
|
-
var _a;
|
|
492
|
-
this.selectedTitleFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
|
|
493
|
-
this.emitTitleLetterChangedEvent();
|
|
494
|
-
}
|
|
495
|
-
creatorLetterChanged(e) {
|
|
496
|
-
var _a;
|
|
497
|
-
this.selectedCreatorFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
|
|
498
|
-
this.emitCreatorLetterChangedEvent();
|
|
499
|
-
}
|
|
500
|
-
emitTitleLetterChangedEvent() {
|
|
501
|
-
const event = new CustomEvent('titleLetterChanged', {
|
|
502
|
-
detail: { selectedLetter: this.selectedTitleFilter },
|
|
503
|
-
});
|
|
504
|
-
this.dispatchEvent(event);
|
|
505
|
-
}
|
|
506
|
-
emitCreatorLetterChangedEvent() {
|
|
507
|
-
const event = new CustomEvent('creatorLetterChanged', {
|
|
508
|
-
detail: { selectedLetter: this.selectedCreatorFilter },
|
|
509
|
-
});
|
|
510
|
-
this.dispatchEvent(event);
|
|
511
|
-
}
|
|
512
|
-
displayModeChanged() {
|
|
513
|
-
const event = new CustomEvent('displayModeChanged', {
|
|
514
|
-
detail: { displayMode: this.displayMode },
|
|
515
|
-
});
|
|
516
|
-
this.dispatchEvent(event);
|
|
517
|
-
}
|
|
518
|
-
emitSortChangedEvent() {
|
|
519
|
-
const event = new CustomEvent('sortChanged', {
|
|
520
|
-
detail: {
|
|
521
|
-
selectedSort: this.selectedSort,
|
|
522
|
-
sortDirection: this.sortDirection,
|
|
523
|
-
},
|
|
524
|
-
});
|
|
525
|
-
this.dispatchEvent(event);
|
|
526
|
-
}
|
|
527
|
-
};
|
|
488
|
+
></alpha-bar>`;
|
|
489
|
+
}
|
|
490
|
+
titleLetterChanged(e) {
|
|
491
|
+
var _a;
|
|
492
|
+
this.selectedTitleFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
|
|
493
|
+
this.emitTitleLetterChangedEvent();
|
|
494
|
+
}
|
|
495
|
+
creatorLetterChanged(e) {
|
|
496
|
+
var _a;
|
|
497
|
+
this.selectedCreatorFilter = (_a = e.detail.selectedLetter) !== null && _a !== void 0 ? _a : null;
|
|
498
|
+
this.emitCreatorLetterChangedEvent();
|
|
499
|
+
}
|
|
500
|
+
emitTitleLetterChangedEvent() {
|
|
501
|
+
const event = new CustomEvent('titleLetterChanged', {
|
|
502
|
+
detail: { selectedLetter: this.selectedTitleFilter },
|
|
503
|
+
});
|
|
504
|
+
this.dispatchEvent(event);
|
|
505
|
+
}
|
|
506
|
+
emitCreatorLetterChangedEvent() {
|
|
507
|
+
const event = new CustomEvent('creatorLetterChanged', {
|
|
508
|
+
detail: { selectedLetter: this.selectedCreatorFilter },
|
|
509
|
+
});
|
|
510
|
+
this.dispatchEvent(event);
|
|
511
|
+
}
|
|
512
|
+
displayModeChanged() {
|
|
513
|
+
const event = new CustomEvent('displayModeChanged', {
|
|
514
|
+
detail: { displayMode: this.displayMode },
|
|
515
|
+
});
|
|
516
|
+
this.dispatchEvent(event);
|
|
517
|
+
}
|
|
518
|
+
emitSortChangedEvent() {
|
|
519
|
+
const event = new CustomEvent('sortChanged', {
|
|
520
|
+
detail: {
|
|
521
|
+
selectedSort: this.selectedSort,
|
|
522
|
+
sortDirection: this.sortDirection,
|
|
523
|
+
},
|
|
524
|
+
});
|
|
525
|
+
this.dispatchEvent(event);
|
|
526
|
+
}
|
|
527
|
+
};
|
|
528
528
|
SortFilterBar.styles = css `
|
|
529
529
|
#container {
|
|
530
530
|
position: relative;
|
|
@@ -729,54 +729,54 @@ SortFilterBar.styles = css `
|
|
|
729
729
|
width: 24px;
|
|
730
730
|
height: 24px;
|
|
731
731
|
}
|
|
732
|
-
`;
|
|
733
|
-
__decorate([
|
|
734
|
-
property({ type: String })
|
|
735
|
-
], SortFilterBar.prototype, "displayMode", void 0);
|
|
736
|
-
__decorate([
|
|
737
|
-
property({ type: String })
|
|
738
|
-
], SortFilterBar.prototype, "sortDirection", void 0);
|
|
739
|
-
__decorate([
|
|
740
|
-
property({ type: String })
|
|
741
|
-
], SortFilterBar.prototype, "selectedSort", void 0);
|
|
742
|
-
__decorate([
|
|
743
|
-
property({ type: String })
|
|
744
|
-
], SortFilterBar.prototype, "selectedTitleFilter", void 0);
|
|
745
|
-
__decorate([
|
|
746
|
-
property({ type: String })
|
|
747
|
-
], SortFilterBar.prototype, "selectedCreatorFilter", void 0);
|
|
748
|
-
__decorate([
|
|
749
|
-
property({ type: Boolean })
|
|
750
|
-
], SortFilterBar.prototype, "showRelevance", void 0);
|
|
751
|
-
__decorate([
|
|
752
|
-
property({ type: Object })
|
|
753
|
-
], SortFilterBar.prototype, "resizeObserver", void 0);
|
|
754
|
-
__decorate([
|
|
755
|
-
state()
|
|
756
|
-
], SortFilterBar.prototype, "alphaSelectorVisible", void 0);
|
|
757
|
-
__decorate([
|
|
758
|
-
state()
|
|
759
|
-
], SortFilterBar.prototype, "dateSortSelectorVisible", void 0);
|
|
760
|
-
__decorate([
|
|
761
|
-
state()
|
|
762
|
-
], SortFilterBar.prototype, "viewSortSelectorVisible", void 0);
|
|
763
|
-
__decorate([
|
|
764
|
-
state()
|
|
765
|
-
], SortFilterBar.prototype, "desktopSelectorBarWidth", void 0);
|
|
766
|
-
__decorate([
|
|
767
|
-
state()
|
|
768
|
-
], SortFilterBar.prototype, "selectorBarContainerWidth", void 0);
|
|
769
|
-
__decorate([
|
|
770
|
-
state()
|
|
771
|
-
], SortFilterBar.prototype, "hoveringOverDateSortOptions", void 0);
|
|
772
|
-
__decorate([
|
|
773
|
-
query('#desktop-sort-selector')
|
|
774
|
-
], SortFilterBar.prototype, "desktopSortSelector", void 0);
|
|
775
|
-
__decorate([
|
|
776
|
-
query('#sort-selector-container')
|
|
777
|
-
], SortFilterBar.prototype, "sortSelectorContainer", void 0);
|
|
778
|
-
SortFilterBar = __decorate([
|
|
779
|
-
customElement('sort-filter-bar')
|
|
780
|
-
], SortFilterBar);
|
|
781
|
-
export { SortFilterBar };
|
|
732
|
+
`;
|
|
733
|
+
__decorate([
|
|
734
|
+
property({ type: String })
|
|
735
|
+
], SortFilterBar.prototype, "displayMode", void 0);
|
|
736
|
+
__decorate([
|
|
737
|
+
property({ type: String })
|
|
738
|
+
], SortFilterBar.prototype, "sortDirection", void 0);
|
|
739
|
+
__decorate([
|
|
740
|
+
property({ type: String })
|
|
741
|
+
], SortFilterBar.prototype, "selectedSort", void 0);
|
|
742
|
+
__decorate([
|
|
743
|
+
property({ type: String })
|
|
744
|
+
], SortFilterBar.prototype, "selectedTitleFilter", void 0);
|
|
745
|
+
__decorate([
|
|
746
|
+
property({ type: String })
|
|
747
|
+
], SortFilterBar.prototype, "selectedCreatorFilter", void 0);
|
|
748
|
+
__decorate([
|
|
749
|
+
property({ type: Boolean })
|
|
750
|
+
], SortFilterBar.prototype, "showRelevance", void 0);
|
|
751
|
+
__decorate([
|
|
752
|
+
property({ type: Object })
|
|
753
|
+
], SortFilterBar.prototype, "resizeObserver", void 0);
|
|
754
|
+
__decorate([
|
|
755
|
+
state()
|
|
756
|
+
], SortFilterBar.prototype, "alphaSelectorVisible", void 0);
|
|
757
|
+
__decorate([
|
|
758
|
+
state()
|
|
759
|
+
], SortFilterBar.prototype, "dateSortSelectorVisible", void 0);
|
|
760
|
+
__decorate([
|
|
761
|
+
state()
|
|
762
|
+
], SortFilterBar.prototype, "viewSortSelectorVisible", void 0);
|
|
763
|
+
__decorate([
|
|
764
|
+
state()
|
|
765
|
+
], SortFilterBar.prototype, "desktopSelectorBarWidth", void 0);
|
|
766
|
+
__decorate([
|
|
767
|
+
state()
|
|
768
|
+
], SortFilterBar.prototype, "selectorBarContainerWidth", void 0);
|
|
769
|
+
__decorate([
|
|
770
|
+
state()
|
|
771
|
+
], SortFilterBar.prototype, "hoveringOverDateSortOptions", void 0);
|
|
772
|
+
__decorate([
|
|
773
|
+
query('#desktop-sort-selector')
|
|
774
|
+
], SortFilterBar.prototype, "desktopSortSelector", void 0);
|
|
775
|
+
__decorate([
|
|
776
|
+
query('#sort-selector-container')
|
|
777
|
+
], SortFilterBar.prototype, "sortSelectorContainer", void 0);
|
|
778
|
+
SortFilterBar = __decorate([
|
|
779
|
+
customElement('sort-filter-bar')
|
|
780
|
+
], SortFilterBar);
|
|
781
|
+
export { SortFilterBar };
|
|
782
782
|
//# sourceMappingURL=sort-filter-bar.js.map
|