@internetarchive/collection-browser 4.3.0 → 4.3.1-alpha-webdev8165.0

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.
@@ -1,6 +1,7 @@
1
1
  import { LitElement, TemplateResult, CSSResultGroup } from 'lit';
2
2
  import { type ModalManagerInterface } from '@internetarchive/modal-manager';
3
3
  import type { ManageableItem } from '../models';
4
+ import { PageElementName } from '@internetarchive/search-service';
4
5
  import './remove-items-modal-content';
5
6
  export declare class ManageBar extends LitElement {
6
7
  /**
@@ -16,9 +17,9 @@ export declare class ManageBar extends LitElement {
16
17
  */
17
18
  selectedItems: Array<ManageableItem>;
18
19
  /**
19
- * Message shows as note in the modal when removing items
20
+ * Which section of the profile page searches are for (e.g., uploads, reviews, ...)
20
21
  */
21
- manageViewModalMsg?: string;
22
+ profileElement?: PageElementName;
22
23
  /**
23
24
  * Whether to show the "Select All" button (default false)
24
25
  */
@@ -36,6 +37,10 @@ export declare class ManageBar extends LitElement {
36
37
  */
37
38
  removeAllowed: boolean;
38
39
  render(): TemplateResult;
40
+ /**
41
+ * Message to show in the manage view modal, depending on context.
42
+ */
43
+ private get manageViewModalMsg();
39
44
  private cancelClicked;
40
45
  private removeItemsClicked;
41
46
  private manageItemsClicked;
@@ -1,5 +1,5 @@
1
1
  import { __decorate } from "tslib";
2
- import { msg } from '@lit/localize';
2
+ import { msg, str } from '@lit/localize';
3
3
  import { LitElement, html, css } from 'lit';
4
4
  import { customElement, property } from 'lit/decorators.js';
5
5
  import { when } from 'lit/directives/when.js';
@@ -35,45 +35,67 @@ let ManageBar = class ManageBar extends LitElement {
35
35
  this.removeAllowed = false;
36
36
  }
37
37
  render() {
38
- return html `
39
- <div class="manage-container">
40
- <span class="manage-label">${this.label}</span>
41
- <div class="manage-buttons">
42
- <button class="ia-button dark" @click=${this.cancelClicked}>
43
- ${msg('Cancel')}
44
- </button>
45
- <button
46
- class="ia-button danger"
47
- ?disabled=${!this.removeAllowed}
48
- @click=${this.showRemoveItemsModal}
49
- >
50
- ${msg('Remove selected items')} (${this.selectedItems.length})...
51
- </button>
52
- ${when(this.showItemManageButton, () => html ` <button
53
- class="ia-button warning"
54
- ?disabled=${!this.removeAllowed}
55
- @click=${this.manageItemsClicked}
56
- >
57
- ${msg('Item Manager the items')} (${this.selectedItems.length})
58
- </button>`)}
59
- <div class="selection-buttons">
60
- ${when(this.showSelectAll, () => html ` <button
61
- class="ia-button link select-all-btn"
62
- @click=${this.selectAllClicked}
63
- >
64
- ${msg('Select all')}
65
- </button>`)}
66
- ${when(this.showUnselectAll, () => html ` <button
67
- class="ia-button link unselect-all-btn"
68
- @click=${this.unselectAllClicked}
69
- >
70
- ${msg('Unselect all')}
71
- </button>`)}
72
- </div>
73
- </div>
74
- </div>
38
+ return html `
39
+ <div class="manage-container">
40
+ <span class="manage-label">${this.label}</span>
41
+ <div class="manage-buttons">
42
+ <button class="ia-button dark" @click=${this.cancelClicked}>
43
+ ${msg('Cancel')}
44
+ </button>
45
+ <button
46
+ class="ia-button danger"
47
+ ?disabled=${!this.removeAllowed}
48
+ @click=${this.showRemoveItemsModal}
49
+ >
50
+ ${msg('Remove selected items')} (${this.selectedItems.length})...
51
+ </button>
52
+ ${when(this.showItemManageButton, () => html ` <button
53
+ class="ia-button warning"
54
+ ?disabled=${!this.removeAllowed}
55
+ @click=${this.manageItemsClicked}
56
+ >
57
+ ${msg('Item Manager the items')} (${this.selectedItems.length})
58
+ </button>`)}
59
+ <div class="selection-buttons">
60
+ ${when(this.showSelectAll, () => html ` <button
61
+ class="ia-button link select-all-btn"
62
+ @click=${this.selectAllClicked}
63
+ >
64
+ ${msg('Select all')}
65
+ </button>`)}
66
+ ${when(this.showUnselectAll, () => html ` <button
67
+ class="ia-button link unselect-all-btn"
68
+ @click=${this.unselectAllClicked}
69
+ >
70
+ ${msg('Unselect all')}
71
+ </button>`)}
72
+ </div>
73
+ </div>
74
+ </div>
75
75
  `;
76
76
  }
77
+ /**
78
+ * Message to show in the manage view modal, depending on context.
79
+ */
80
+ get manageViewModalMsg() {
81
+ const pluralize = this.selectedItems.length > 1;
82
+ const subject = pluralize ? 'these items' : 'this item';
83
+ let listName = '';
84
+ switch (this.profileElement) {
85
+ case 'uploads':
86
+ listName = 'uploads list';
87
+ break;
88
+ case 'web_archives':
89
+ listName = 'web archives list';
90
+ break;
91
+ case 'favorites':
92
+ listName = 'favorites list';
93
+ break;
94
+ default:
95
+ return '';
96
+ }
97
+ return msg(str `Note: It may take a few minutes for ${subject} to stop appearing in your ${listName}.`);
98
+ }
77
99
  cancelClicked() {
78
100
  this.dispatchEvent(new CustomEvent('cancel'));
79
101
  }
@@ -94,12 +116,12 @@ let ManageBar = class ManageBar extends LitElement {
94
116
  * @param items Which items to list in the modal
95
117
  */
96
118
  showRemoveItemsModal() {
97
- const customModalContent = html `
98
- <remove-items-modal-content
99
- .items=${this.selectedItems}
100
- .message=${this.manageViewModalMsg}
101
- @confirm=${() => this.removeItemsClicked()}
102
- ></remove-items-modal-content>
119
+ const customModalContent = html `
120
+ <remove-items-modal-content
121
+ .items=${this.selectedItems}
122
+ .message=${this.manageViewModalMsg}
123
+ @confirm=${() => this.removeItemsClicked()}
124
+ ></remove-items-modal-content>
103
125
  `;
104
126
  const config = new ModalConfig({
105
127
  showProcessingIndicator: false,
@@ -163,40 +185,40 @@ let ManageBar = class ManageBar extends LitElement {
163
185
  });
164
186
  }
165
187
  static get styles() {
166
- return css `
167
- ${iaButtonStyle}
168
- .manage-container {
169
- display: flex;
170
- align-items: center;
171
- column-gap: 5px;
172
- padding: 20px 0 20px;
173
- flex-wrap: wrap;
174
- }
175
-
176
- .manage-label {
177
- display: inline-block;
178
- font-weight: bold;
179
- font-size: 1.8rem;
180
- padding-right: 10px;
181
- }
182
-
183
- .manage-buttons {
184
- display: flex;
185
- flex-wrap: wrap;
186
- align-items: center;
187
- column-gap: 5px;
188
- }
189
-
190
- .selection-buttons {
191
- display: inherit;
192
- }
193
-
194
- .ia-button,
195
- button {
196
- padding: 6px 12px;
197
- font-size: 1.4rem;
198
- margin: 3px 0;
199
- }
188
+ return css `
189
+ ${iaButtonStyle}
190
+ .manage-container {
191
+ display: flex;
192
+ align-items: center;
193
+ column-gap: 5px;
194
+ padding: 20px 0 20px;
195
+ flex-wrap: wrap;
196
+ }
197
+
198
+ .manage-label {
199
+ display: inline-block;
200
+ font-weight: bold;
201
+ font-size: 1.8rem;
202
+ padding-right: 10px;
203
+ }
204
+
205
+ .manage-buttons {
206
+ display: flex;
207
+ flex-wrap: wrap;
208
+ align-items: center;
209
+ column-gap: 5px;
210
+ }
211
+
212
+ .selection-buttons {
213
+ display: inherit;
214
+ }
215
+
216
+ .ia-button,
217
+ button {
218
+ padding: 6px 12px;
219
+ font-size: 1.4rem;
220
+ margin: 3px 0;
221
+ }
200
222
  `;
201
223
  }
202
224
  };
@@ -207,11 +229,11 @@ __decorate([
207
229
  property({ type: Object })
208
230
  ], ManageBar.prototype, "modalManager", void 0);
209
231
  __decorate([
210
- property({ type: Object })
232
+ property({ type: Array })
211
233
  ], ManageBar.prototype, "selectedItems", void 0);
212
234
  __decorate([
213
235
  property({ type: String })
214
- ], ManageBar.prototype, "manageViewModalMsg", void 0);
236
+ ], ManageBar.prototype, "profileElement", void 0);
215
237
  __decorate([
216
238
  property({ type: Boolean })
217
239
  ], ManageBar.prototype, "showSelectAll", void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"manage-bar.js","sourceRoot":"","sources":["../../../src/manage/manage-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { msg } from '@lit/localize';\nimport { LitElement, html, css, TemplateResult, CSSResultGroup } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { when } from 'lit/directives/when.js';\nimport {\n ModalConfig,\n type ModalManagerInterface,\n} from '@internetarchive/modal-manager';\nimport type { ManageableItem } from '../models';\nimport iaButtonStyle from '../styles/ia-button';\nimport './remove-items-modal-content';\n\n@customElement('manage-bar')\nexport class ManageBar extends LitElement {\n /**\n * The label displayed in front of the management buttons\n */\n @property({ type: String }) label = msg('Select items to remove');\n\n /**\n * The shared modal manager component for displaying modal dialogs on this page\n */\n @property({ type: Object }) modalManager?: ModalManagerInterface;\n\n /**\n * Array of items that have been selected for management\n */\n @property({ type: Object }) selectedItems: Array<ManageableItem> = [];\n\n /**\n * Message shows as note in the modal when removing items\n */\n @property({ type: String }) manageViewModalMsg?: string;\n\n /**\n * Whether to show the \"Select All\" button (default false)\n */\n @property({ type: Boolean }) showSelectAll = false;\n\n /**\n * Whether to show the \"Unselect All\" button (default false)\n */\n @property({ type: Boolean }) showUnselectAll = false;\n\n /**\n * Whether to show \"Item Manager the items\" button (default false)\n */\n @property({ type: Boolean }) showItemManageButton = false;\n\n /**\n * Whether to active delete button for selectable items\n */\n @property({ type: Boolean }) removeAllowed = false;\n\n render(): TemplateResult {\n return html`\n <div class=\"manage-container\">\n <span class=\"manage-label\">${this.label}</span>\n <div class=\"manage-buttons\">\n <button class=\"ia-button dark\" @click=${this.cancelClicked}>\n ${msg('Cancel')}\n </button>\n <button\n class=\"ia-button danger\"\n ?disabled=${!this.removeAllowed}\n @click=${this.showRemoveItemsModal}\n >\n ${msg('Remove selected items')} (${this.selectedItems.length})...\n </button>\n ${when(\n this.showItemManageButton,\n () =>\n html` <button\n class=\"ia-button warning\"\n ?disabled=${!this.removeAllowed}\n @click=${this.manageItemsClicked}\n >\n ${msg('Item Manager the items')} (${this.selectedItems.length})\n </button>`,\n )}\n <div class=\"selection-buttons\">\n ${when(\n this.showSelectAll,\n () =>\n html` <button\n class=\"ia-button link select-all-btn\"\n @click=${this.selectAllClicked}\n >\n ${msg('Select all')}\n </button>`,\n )}\n ${when(\n this.showUnselectAll,\n () =>\n html` <button\n class=\"ia-button link unselect-all-btn\"\n @click=${this.unselectAllClicked}\n >\n ${msg('Unselect all')}\n </button>`,\n )}\n </div>\n </div>\n </div>\n `;\n }\n\n private cancelClicked(): void {\n this.dispatchEvent(new CustomEvent('cancel'));\n }\n\n private removeItemsClicked(): void {\n this.dispatchEvent(new CustomEvent('removeItems'));\n }\n\n private manageItemsClicked(): void {\n this.dispatchEvent(new CustomEvent('manageItems'));\n }\n\n private selectAllClicked(): void {\n this.dispatchEvent(new CustomEvent('selectAll'));\n }\n\n private unselectAllClicked(): void {\n this.dispatchEvent(new CustomEvent('unselectAll'));\n }\n\n /**\n * Shows a modal dialog confirming the list of items to be removed\n * @param items Which items to list in the modal\n */\n private showRemoveItemsModal(): void {\n const customModalContent = html`\n <remove-items-modal-content\n .items=${this.selectedItems}\n .message=${this.manageViewModalMsg}\n @confirm=${() => this.removeItemsClicked()}\n ></remove-items-modal-content>\n `;\n\n const config = new ModalConfig({\n showProcessingIndicator: false,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#194880',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Are you sure you want to remove these items?')}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n customModalContent,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n /**\n * Shows a modal dialog indicating that item removal is being processed\n */\n showRemoveItemsProcessingModal(): void {\n const config = new ModalConfig({\n showProcessingIndicator: true,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#194880',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Removing selected items...')}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n /**\n * Shows a modal dialog indicating that an error occurred while removing items\n */\n showRemoveItemsErrorModal(): void {\n const config = new ModalConfig({\n showProcessingIndicator: false,\n processingImageMode: 'processing',\n bodyColor: '#fff',\n headerColor: '#691916',\n showHeaderLogo: false,\n closeOnBackdropClick: true,\n title: html`${msg('Error: unable to remove items')}`,\n message: html`${msg(\n 'An error occurred while removing items. Please try again in a few minutes.',\n )}`,\n });\n\n this.modalManager?.classList.add('remove-items');\n this.modalManager?.showModal({\n config,\n userClosedModalCallback: () => {\n this.modalManager?.classList.remove('remove-items');\n },\n });\n }\n\n static get styles(): CSSResultGroup {\n return css`\n ${iaButtonStyle}\n .manage-container {\n display: flex;\n align-items: center;\n column-gap: 5px;\n padding: 20px 0 20px;\n flex-wrap: wrap;\n }\n\n .manage-label {\n display: inline-block;\n font-weight: bold;\n font-size: 1.8rem;\n padding-right: 10px;\n }\n\n .manage-buttons {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n column-gap: 5px;\n }\n\n .selection-buttons {\n display: inherit;\n }\n\n .ia-button,\n button {\n padding: 6px 12px;\n font-size: 1.4rem;\n margin: 3px 0;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"manage-bar.js","sourceRoot":"","sources":["../../../src/manage/manage-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import { msg, str } from '@lit/localize';\r\nimport { LitElement, html, css, TemplateResult, CSSResultGroup } from 'lit';\r\nimport { customElement, property } from 'lit/decorators.js';\r\nimport { when } from 'lit/directives/when.js';\r\nimport {\r\n ModalConfig,\r\n type ModalManagerInterface,\r\n} from '@internetarchive/modal-manager';\r\nimport type { ManageableItem } from '../models';\r\nimport { PageElementName } from '@internetarchive/search-service';\r\nimport iaButtonStyle from '../styles/ia-button';\r\nimport './remove-items-modal-content';\r\n\r\n@customElement('manage-bar')\r\nexport class ManageBar extends LitElement {\r\n /**\r\n * The label displayed in front of the management buttons\r\n */\r\n @property({ type: String }) label = msg('Select items to remove');\r\n\r\n /**\r\n * The shared modal manager component for displaying modal dialogs on this page\r\n */\r\n @property({ type: Object }) modalManager?: ModalManagerInterface;\r\n\r\n /**\r\n * Array of items that have been selected for management\r\n */\r\n @property({ type: Array }) selectedItems: Array<ManageableItem> = [];\r\n\r\n /**\r\n * Which section of the profile page searches are for (e.g., uploads, reviews, ...)\r\n */\r\n @property({ type: String }) profileElement?: PageElementName;\r\n\r\n /**\r\n * Whether to show the \"Select All\" button (default false)\r\n */\r\n @property({ type: Boolean }) showSelectAll = false;\r\n\r\n /**\r\n * Whether to show the \"Unselect All\" button (default false)\r\n */\r\n @property({ type: Boolean }) showUnselectAll = false;\r\n\r\n /**\r\n * Whether to show \"Item Manager the items\" button (default false)\r\n */\r\n @property({ type: Boolean }) showItemManageButton = false;\r\n\r\n /**\r\n * Whether to active delete button for selectable items\r\n */\r\n @property({ type: Boolean }) removeAllowed = false;\r\n\r\n render(): TemplateResult {\r\n return html`\r\n <div class=\"manage-container\">\r\n <span class=\"manage-label\">${this.label}</span>\r\n <div class=\"manage-buttons\">\r\n <button class=\"ia-button dark\" @click=${this.cancelClicked}>\r\n ${msg('Cancel')}\r\n </button>\r\n <button\r\n class=\"ia-button danger\"\r\n ?disabled=${!this.removeAllowed}\r\n @click=${this.showRemoveItemsModal}\r\n >\r\n ${msg('Remove selected items')} (${this.selectedItems.length})...\r\n </button>\r\n ${when(\r\n this.showItemManageButton,\r\n () =>\r\n html` <button\r\n class=\"ia-button warning\"\r\n ?disabled=${!this.removeAllowed}\r\n @click=${this.manageItemsClicked}\r\n >\r\n ${msg('Item Manager the items')} (${this.selectedItems.length})\r\n </button>`,\r\n )}\r\n <div class=\"selection-buttons\">\r\n ${when(\r\n this.showSelectAll,\r\n () =>\r\n html` <button\r\n class=\"ia-button link select-all-btn\"\r\n @click=${this.selectAllClicked}\r\n >\r\n ${msg('Select all')}\r\n </button>`,\r\n )}\r\n ${when(\r\n this.showUnselectAll,\r\n () =>\r\n html` <button\r\n class=\"ia-button link unselect-all-btn\"\r\n @click=${this.unselectAllClicked}\r\n >\r\n ${msg('Unselect all')}\r\n </button>`,\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * Message to show in the manage view modal, depending on context.\r\n */\r\n private get manageViewModalMsg(): string {\r\n const pluralize = this.selectedItems.length > 1;\r\n const subject = pluralize ? 'these items' : 'this item';\r\n\r\n let listName = '';\r\n\r\n switch (this.profileElement) {\r\n case 'uploads':\r\n listName = 'uploads list';\r\n break;\r\n case 'web_archives':\r\n listName = 'web archives list';\r\n break;\r\n case 'favorites':\r\n listName = 'favorites list';\r\n break;\r\n default:\r\n return '';\r\n }\r\n\r\n return msg(\r\n str`Note: It may take a few minutes for ${subject} to stop appearing in your ${listName}.`,\r\n );\r\n }\r\n\r\n private cancelClicked(): void {\r\n this.dispatchEvent(new CustomEvent('cancel'));\r\n }\r\n\r\n private removeItemsClicked(): void {\r\n this.dispatchEvent(new CustomEvent('removeItems'));\r\n }\r\n\r\n private manageItemsClicked(): void {\r\n this.dispatchEvent(new CustomEvent('manageItems'));\r\n }\r\n\r\n private selectAllClicked(): void {\r\n this.dispatchEvent(new CustomEvent('selectAll'));\r\n }\r\n\r\n private unselectAllClicked(): void {\r\n this.dispatchEvent(new CustomEvent('unselectAll'));\r\n }\r\n\r\n /**\r\n * Shows a modal dialog confirming the list of items to be removed\r\n * @param items Which items to list in the modal\r\n */\r\n private showRemoveItemsModal(): void {\r\n const customModalContent = html`\r\n <remove-items-modal-content\r\n .items=${this.selectedItems}\r\n .message=${this.manageViewModalMsg}\r\n @confirm=${() => this.removeItemsClicked()}\r\n ></remove-items-modal-content>\r\n `;\r\n\r\n const config = new ModalConfig({\r\n showProcessingIndicator: false,\r\n processingImageMode: 'processing',\r\n bodyColor: '#fff',\r\n headerColor: '#194880',\r\n showHeaderLogo: false,\r\n closeOnBackdropClick: true,\r\n title: html`${msg('Are you sure you want to remove these items?')}`,\r\n });\r\n\r\n this.modalManager?.classList.add('remove-items');\r\n this.modalManager?.showModal({\r\n config,\r\n customModalContent,\r\n userClosedModalCallback: () => {\r\n this.modalManager?.classList.remove('remove-items');\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Shows a modal dialog indicating that item removal is being processed\r\n */\r\n showRemoveItemsProcessingModal(): void {\r\n const config = new ModalConfig({\r\n showProcessingIndicator: true,\r\n processingImageMode: 'processing',\r\n bodyColor: '#fff',\r\n headerColor: '#194880',\r\n showHeaderLogo: false,\r\n closeOnBackdropClick: true,\r\n title: html`${msg('Removing selected items...')}`,\r\n });\r\n\r\n this.modalManager?.classList.add('remove-items');\r\n this.modalManager?.showModal({\r\n config,\r\n userClosedModalCallback: () => {\r\n this.modalManager?.classList.remove('remove-items');\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Shows a modal dialog indicating that an error occurred while removing items\r\n */\r\n showRemoveItemsErrorModal(): void {\r\n const config = new ModalConfig({\r\n showProcessingIndicator: false,\r\n processingImageMode: 'processing',\r\n bodyColor: '#fff',\r\n headerColor: '#691916',\r\n showHeaderLogo: false,\r\n closeOnBackdropClick: true,\r\n title: html`${msg('Error: unable to remove items')}`,\r\n message: html`${msg(\r\n 'An error occurred while removing items. Please try again in a few minutes.',\r\n )}`,\r\n });\r\n\r\n this.modalManager?.classList.add('remove-items');\r\n this.modalManager?.showModal({\r\n config,\r\n userClosedModalCallback: () => {\r\n this.modalManager?.classList.remove('remove-items');\r\n },\r\n });\r\n }\r\n\r\n static get styles(): CSSResultGroup {\r\n return css`\r\n ${iaButtonStyle}\r\n .manage-container {\r\n display: flex;\r\n align-items: center;\r\n column-gap: 5px;\r\n padding: 20px 0 20px;\r\n flex-wrap: wrap;\r\n }\r\n\r\n .manage-label {\r\n display: inline-block;\r\n font-weight: bold;\r\n font-size: 1.8rem;\r\n padding-right: 10px;\r\n }\r\n\r\n .manage-buttons {\r\n display: flex;\r\n flex-wrap: wrap;\r\n align-items: center;\r\n column-gap: 5px;\r\n }\r\n\r\n .selection-buttons {\r\n display: inherit;\r\n }\r\n\r\n .ia-button,\r\n button {\r\n padding: 6px 12px;\r\n font-size: 1.4rem;\r\n margin: 3px 0;\r\n }\r\n `;\r\n }\r\n}\r\n"]}
@@ -138,12 +138,6 @@ export interface SortOption {
138
138
  * Whether this sort option may appear in the sort bar.
139
139
  */
140
140
  shownInSortBar: boolean;
141
- /**
142
- * Whether this sort option should be saved to the URL.
143
- * If false, then no `sort` param will be added to the URL when this sort option
144
- * is selected.
145
- */
146
- shownInURL: boolean;
147
141
  /**
148
142
  * Whether this sort option is passed to the search service.
149
143
  * If false, then no sort param will be passed to the search service at all when
@@ -190,7 +190,6 @@ export const SORT_OPTIONS = {
190
190
  defaultSortDirection: null,
191
191
  canSetDirection: false,
192
192
  shownInSortBar: false,
193
- shownInURL: false,
194
193
  handledBySearchService: false, // We rely on the PPS default sort handling in these cases
195
194
  displayName: '',
196
195
  urlNames: ['', null, undefined], // Empty or nullish sort params result in default sorting
@@ -204,30 +203,30 @@ export const SORT_OPTIONS = {
204
203
  defaultSortDirection: null,
205
204
  canSetDirection: true,
206
205
  shownInSortBar: false,
207
- shownInURL: false,
208
206
  handledBySearchService: true, // The unrecognized sort param is passed along as-is
209
207
  displayName: '',
210
208
  urlNames: [],
211
209
  },
212
- // Relevance sort is unique in that it does not produce a URL param when it is set.
213
- // It is only available when there is a user-specified query that relevancy can be scored against.
214
- // Therefore, it does not appear as a sort bar option when browsing a collection with no query set.
210
+ // Relevance sort is only available when there is a user-specified query that relevancy can be
211
+ // scored against. Therefore, it does not appear as a sort bar option when browsing a collection
212
+ // with no query set. When relevance is the page default (e.g., for regular searches), it is
213
+ // remapped to SortField.default and does not produce a URL param. When it is NOT the default
214
+ // (e.g., TV searches), it writes `sort=relevance` to the URL. The `_score` alias is retained
215
+ // for backwards compatibility (it's what the PPS uses under the hood).
215
216
  [SortField.relevance]: {
216
217
  field: SortField.relevance,
217
218
  defaultSortDirection: null,
218
219
  canSetDirection: false,
219
220
  shownInSortBar: true,
220
- shownInURL: false,
221
221
  handledBySearchService: false,
222
222
  displayName: 'Relevance',
223
- urlNames: ['_score'],
223
+ urlNames: ['relevance', '_score'],
224
224
  },
225
225
  [SortField.alltimeview]: {
226
226
  field: SortField.alltimeview,
227
227
  defaultSortDirection: 'desc',
228
228
  canSetDirection: true,
229
229
  shownInSortBar: true,
230
- shownInURL: true,
231
230
  handledBySearchService: true,
232
231
  searchServiceKey: 'downloads',
233
232
  displayName: 'All-time views',
@@ -238,7 +237,6 @@ export const SORT_OPTIONS = {
238
237
  defaultSortDirection: 'desc',
239
238
  canSetDirection: true,
240
239
  shownInSortBar: true,
241
- shownInURL: true,
242
240
  handledBySearchService: true,
243
241
  searchServiceKey: 'week',
244
242
  displayName: 'Weekly views',
@@ -249,7 +247,6 @@ export const SORT_OPTIONS = {
249
247
  defaultSortDirection: 'asc',
250
248
  canSetDirection: true,
251
249
  shownInSortBar: true,
252
- shownInURL: true,
253
250
  handledBySearchService: true,
254
251
  searchServiceKey: 'titleSorter',
255
252
  displayName: 'Title',
@@ -260,7 +257,6 @@ export const SORT_OPTIONS = {
260
257
  defaultSortDirection: 'desc',
261
258
  canSetDirection: true,
262
259
  shownInSortBar: true,
263
- shownInURL: true,
264
260
  handledBySearchService: true,
265
261
  searchServiceKey: 'date',
266
262
  displayName: 'Date published',
@@ -271,7 +267,6 @@ export const SORT_OPTIONS = {
271
267
  defaultSortDirection: 'desc',
272
268
  canSetDirection: true,
273
269
  shownInSortBar: true,
274
- shownInURL: true,
275
270
  handledBySearchService: true,
276
271
  searchServiceKey: 'publicdate',
277
272
  displayName: 'Date archived',
@@ -282,7 +277,6 @@ export const SORT_OPTIONS = {
282
277
  defaultSortDirection: 'desc',
283
278
  canSetDirection: true,
284
279
  shownInSortBar: true,
285
- shownInURL: true,
286
280
  handledBySearchService: true,
287
281
  searchServiceKey: 'reviewdate',
288
282
  displayName: 'Date reviewed',
@@ -293,7 +287,6 @@ export const SORT_OPTIONS = {
293
287
  defaultSortDirection: 'desc',
294
288
  canSetDirection: true,
295
289
  shownInSortBar: true,
296
- shownInURL: true,
297
290
  handledBySearchService: true,
298
291
  searchServiceKey: 'addeddate',
299
292
  displayName: 'Date added',
@@ -304,7 +297,6 @@ export const SORT_OPTIONS = {
304
297
  defaultSortDirection: 'desc',
305
298
  canSetDirection: false,
306
299
  shownInSortBar: true, // But only when viewing fav-* collections
307
- shownInURL: false,
308
300
  handledBySearchService: false,
309
301
  searchServiceKey: 'favoritedate',
310
302
  displayName: 'Date favorited',
@@ -315,7 +307,6 @@ export const SORT_OPTIONS = {
315
307
  defaultSortDirection: 'asc',
316
308
  canSetDirection: true,
317
309
  shownInSortBar: true,
318
- shownInURL: true,
319
310
  handledBySearchService: true,
320
311
  searchServiceKey: 'creatorSorter',
321
312
  displayName: 'Creator',