@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.
- package/dist/src/app-root.d.ts +3 -0
- package/dist/src/app-root.js +695 -614
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/collection-browser.d.ts +0 -4
- package/dist/src/collection-browser.js +761 -779
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/manage/manage-bar.d.ts +7 -2
- package/dist/src/manage/manage-bar.js +102 -80
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/models.d.ts +0 -6
- package/dist/src/models.js +7 -16
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.js +1 -3
- package/dist/src/restoration-state-handler.js.map +1 -1
- package/dist/test/manage/manage-bar.test.d.ts +1 -0
- package/dist/test/manage/manage-bar.test.js +129 -7
- package/dist/test/manage/manage-bar.test.js.map +1 -1
- package/dist/test/restoration-state-handler.test.js +70 -0
- package/dist/test/restoration-state-handler.test.js.map +1 -1
- package/package.json +1 -1
- package/src/app-root.ts +1251 -1166
- package/src/collection-browser.ts +3049 -3077
- package/src/manage/manage-bar.ts +276 -247
- package/src/models.ts +879 -895
- package/src/restoration-state-handler.ts +546 -550
- package/test/manage/manage-bar.test.ts +347 -157
- package/test/restoration-state-handler.test.ts +569 -480
- package/.claude/settings.local.json +0 -11
|
@@ -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
|
-
*
|
|
20
|
+
* Which section of the profile page searches are for (e.g., uploads, reviews, ...)
|
|
20
21
|
*/
|
|
21
|
-
|
|
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:
|
|
232
|
+
property({ type: Array })
|
|
211
233
|
], ManageBar.prototype, "selectedItems", void 0);
|
|
212
234
|
__decorate([
|
|
213
235
|
property({ type: String })
|
|
214
|
-
], ManageBar.prototype, "
|
|
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"]}
|
package/dist/src/models.d.ts
CHANGED
|
@@ -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
|
package/dist/src/models.js
CHANGED
|
@@ -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
|
|
213
|
-
//
|
|
214
|
-
//
|
|
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',
|