diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 0aa28e0998734..89328d2c8cc7a 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -7406,9 +7406,24 @@ Keep your key file in a safe place. You will need it to create new versions of y {NUM_BOOKMARKS, plural, =1 {1 bookmark} other {# bookmarks}} + + Move to another folder + More + + Move to… + + + New Folder + + + Cancel + + + Save + {NUM_BOOKMARKS, plural, =1 {1 bookmark deleted} other {# bookmarks deleted}} diff --git a/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_CANCEL.png.sha1 b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_CANCEL.png.sha1 new file mode 100644 index 0000000000000..f25da2470ebe2 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_CANCEL.png.sha1 @@ -0,0 +1 @@ +fe5b327c457d6a3192928c3b35fdd90e5e8e8463 \ No newline at end of file diff --git a/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_MOVE_TO.png.sha1 b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_MOVE_TO.png.sha1 new file mode 100644 index 0000000000000..f25da2470ebe2 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_MOVE_TO.png.sha1 @@ -0,0 +1 @@ +fe5b327c457d6a3192928c3b35fdd90e5e8e8463 \ No newline at end of file diff --git a/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_MOVE_TO_ANOTHER_FOLDER.png.sha1 b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_MOVE_TO_ANOTHER_FOLDER.png.sha1 new file mode 100644 index 0000000000000..6c6588f8a6e64 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_MOVE_TO_ANOTHER_FOLDER.png.sha1 @@ -0,0 +1 @@ +57c9ca09e43e40316ea3cbea3d011385594deeba \ No newline at end of file diff --git a/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_NEW_FOLDER.png.sha1 b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_NEW_FOLDER.png.sha1 new file mode 100644 index 0000000000000..f25da2470ebe2 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_NEW_FOLDER.png.sha1 @@ -0,0 +1 @@ +fe5b327c457d6a3192928c3b35fdd90e5e8e8463 \ No newline at end of file diff --git a/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_SAVE.png.sha1 b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_SAVE.png.sha1 new file mode 100644 index 0000000000000..f25da2470ebe2 --- /dev/null +++ b/chrome/app/generated_resources_grd/IDS_BOOKMARKS_EDIT_SAVE.png.sha1 @@ -0,0 +1 @@ +fe5b327c457d6a3192928c3b35fdd90e5e8e8463 \ No newline at end of file diff --git a/chrome/browser/resources/side_panel/bookmarks/BUILD.gn b/chrome/browser/resources/side_panel/bookmarks/BUILD.gn index abc721aff525a..b4ace9da28d80 100644 --- a/chrome/browser/resources/side_panel/bookmarks/BUILD.gn +++ b/chrome/browser/resources/side_panel/bookmarks/BUILD.gn @@ -23,6 +23,7 @@ build_webui("build") { "commerce/shopping_list.ts", "power_bookmark_row.ts", "power_bookmarks_context_menu.ts", + "power_bookmarks_edit_dialog.ts", "power_bookmarks_list.ts", ] diff --git a/chrome/browser/resources/side_panel/bookmarks/icons.html b/chrome/browser/resources/side_panel/bookmarks/icons.html index 709ce743270be..fef3e065b8c54 100644 --- a/chrome/browser/resources/side_panel/bookmarks/icons.html +++ b/chrome/browser/resources/side_panel/bookmarks/icons.html @@ -19,6 +19,9 @@ + + + diff --git a/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_edit_dialog.html b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_edit_dialog.html new file mode 100644 index 0000000000000..a4b42cd6668ff --- /dev/null +++ b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_edit_dialog.html @@ -0,0 +1,64 @@ + + + +
$i18n{editMoveFolderTo}
+
+
+ + [[getActiveFolderTitle_(activeFolder_)]] +
+
+ + + +
+
+
+ $i18n{editNewFolder} +
+ $i18n{editCancel} + + $i18n{editSave} + +
+
+
diff --git a/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_edit_dialog.ts b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_edit_dialog.ts new file mode 100644 index 0000000000000..baa969f6b3de0 --- /dev/null +++ b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_edit_dialog.ts @@ -0,0 +1,115 @@ +// Copyright 2023 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +import '../strings.m.js'; +import 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js'; +import 'chrome://resources/cr_elements/cr_shared_style.css.js'; +import 'chrome://resources/polymer/v3_0/iron-list/iron-list.js'; + +import {CrDialogElement} from 'chrome://resources/cr_elements/cr_dialog/cr_dialog.js'; +import {assertNotReached} from 'chrome://resources/js/assert_ts.js'; +import {loadTimeData} from 'chrome://resources/js/load_time_data.js'; +import {PolymerElement} from 'chrome://resources/polymer/v3_0/polymer/polymer_bundled.min.js'; + +import {getTemplate} from './power_bookmarks_edit_dialog.html.js'; + +export interface PowerBookmarksEditDialogElement { + $: { + dialog: CrDialogElement, + }; +} + +function isFolder(node: chrome.bookmarks.BookmarkTreeNode) { + return !node.url; +} + +export class PowerBookmarksEditDialogElement extends PolymerElement { + static get is() { + return 'power-bookmarks-edit-dialog'; + } + + static get template() { + return getTemplate(); + } + + static get properties() { + return { + topLevelBookmarks_: { + type: Array, + value: () => [], + }, + + selectedBookmarks_: { + type: Array, + value: () => [], + }, + + selectedFolder_: { + type: Object, + value: null, + }, + + activeFolder_: { + type: Object, + value: null, + }, + }; + } + + private topLevelBookmarks_: chrome.bookmarks.BookmarkTreeNode[]; + private selectedBookmarks_: chrome.bookmarks.BookmarkTreeNode[]; + private selectedFolder_: chrome.bookmarks.BookmarkTreeNode|undefined; + private activeFolder_: chrome.bookmarks.BookmarkTreeNode|undefined; + + showDialog( + activeFolder: chrome.bookmarks.BookmarkTreeNode|undefined, + topLevelBookmarks: chrome.bookmarks.BookmarkTreeNode[], + selectedBookmarks: chrome.bookmarks.BookmarkTreeNode[]) { + this.activeFolder_ = activeFolder; + this.topLevelBookmarks_ = topLevelBookmarks; + this.selectedBookmarks_ = selectedBookmarks; + this.$.dialog.showModal(); + } + + private getActiveFolderTitle_() { + if (this.activeFolder_ && + this.activeFolder_.id !== loadTimeData.getString('otherBookmarksId') && + this.activeFolder_.id !== loadTimeData.getString('mobileBookmarksId')) { + return this.activeFolder_!.title; + } else { + return loadTimeData.getString('allBookmarks'); + } + } + + private getShownFolders_(): chrome.bookmarks.BookmarkTreeNode[] { + if (this.activeFolder_ && this.activeFolder_.children) { + return this.activeFolder_.children!.filter(isFolder); + } else if (!this.activeFolder_ && this.topLevelBookmarks_) { + return this.topLevelBookmarks_.filter(isFolder); + } + assertNotReached('No bookmarks to display in edit menu'); + } + + private onNewFolder_() { + // TODO + } + + private onCancel_() { + this.$.dialog.close(); + } + + private onSave_() { + // TODO + this.$.dialog.close(); + } +} + +declare global { + interface HTMLElementTagNameMap { + 'power-bookmarks-edit-dialog': PowerBookmarksEditDialogElement; + } +} + +customElements.define( + PowerBookmarksEditDialogElement.is, PowerBookmarksEditDialogElement); diff --git a/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.html b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.html index 7c1f6143eace8..fffc0478a896c 100644 --- a/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.html +++ b/chrome/browser/resources/side_panel/bookmarks/power_bookmarks_list.html @@ -202,6 +202,11 @@

[[getActiveFolderLabel_(activeFolderPath_.*)]]

title="$i18n{tooltipDelete}" aria-label="$i18n{tooltipDelete}" on-click="onDeleteClicked_"> + + [[getActiveFolderLabel_(activeFolderPath_.*)]] + +