diff --git a/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts b/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts index ffec830d1..b08c6de36 100644 --- a/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts +++ b/arduino-ide-extension/src/browser/boards/boards-config-dialog.ts @@ -34,6 +34,7 @@ export class BoardsConfigDialog extends AbstractDialog { ) { super({ ...props, maxWidth: 500 }); + this.node.id = 'select-board-dialog-container'; this.contentNode.classList.add('select-board-dialog'); this.contentNode.appendChild(this.createDescription()); diff --git a/arduino-ide-extension/src/browser/boards/boards-config.tsx b/arduino-ide-extension/src/browser/boards/boards-config.tsx index 7edd30e76..c145ec924 100644 --- a/arduino-ide-extension/src/browser/boards/boards-config.tsx +++ b/arduino-ide-extension/src/browser/boards/boards-config.tsx @@ -299,6 +299,18 @@ export class BoardsConfig extends React.Component< } } + const boardsList = Array.from(distinctBoards.values()).map((board) => ( + + key={toKey(board)} + item={board} + label={board.name} + details={board.details} + selected={board.selected} + onClick={this.selectBoard} + missing={board.missing} + /> + )); + return (
@@ -315,19 +327,17 @@ export class BoardsConfig extends React.Component< />
-
- {Array.from(distinctBoards.values()).map((board) => ( - - key={toKey(board)} - item={board} - label={board.name} - details={board.details} - selected={board.selected} - onClick={this.selectBoard} - missing={board.missing} - /> - ))} -
+ {boardsList.length > 0 ? ( +
{boardsList}
+ ) : ( +
+ {nls.localize( + 'arduino/board/noBoardsFound', + 'No boards found for "{0}"', + query + )} +
+ )}
); } @@ -342,7 +352,7 @@ export class BoardsConfig extends React.Component< ); } return !ports.length ? ( -
+
{nls.localize('arduino/board/noPortsDiscovered', 'No ports discovered')}
) : ( diff --git a/arduino-ide-extension/src/browser/dialogs/settings/settings-dialog.tsx b/arduino-ide-extension/src/browser/dialogs/settings/settings-dialog.tsx index b4ad879d1..7ebc7c5ba 100644 --- a/arduino-ide-extension/src/browser/dialogs/settings/settings-dialog.tsx +++ b/arduino-ide-extension/src/browser/dialogs/settings/settings-dialog.tsx @@ -155,7 +155,6 @@ export class AdditionalUrlsDialog extends AbstractDialog { this.textArea = document.createElement('textarea'); this.textArea.className = 'theia-input'; - this.textArea.setAttribute('style', 'flex: 0;'); this.textArea.value = urls .filter((url) => url.trim()) .filter((url) => !!url) diff --git a/arduino-ide-extension/src/browser/style/boards-config-dialog.css b/arduino-ide-extension/src/browser/style/boards-config-dialog.css index 1beb7c4f9..59633efb4 100644 --- a/arduino-ide-extension/src/browser/style/boards-config-dialog.css +++ b/arduino-ide-extension/src/browser/style/boards-config-dialog.css @@ -1,5 +1,11 @@ +#select-board-dialog-container > .dialogBlock { + width: 640px; + height: 500px; +} + div#select-board-dialog { margin: 5px; + height: 100%; } div#select-board-dialog .selectBoardContainer { @@ -7,12 +13,17 @@ div#select-board-dialog .selectBoardContainer { gap: 10px; overflow: hidden; max-height: 100%; + height: 100%; } .select-board-dialog .head { margin: 5px; } +.dialogContent.select-board-dialog { + height: 100%; +} + div.dialogContent.select-board-dialog > div.head .title { font-weight: 400; letter-spacing: 0.02em; @@ -63,6 +74,7 @@ div#select-board-dialog .selectBoardContainer .list .item.selected i { display: flex; flex-direction: column; max-height: 100%; + height: 100%; } #select-board-dialog .selectBoardContainer .left.container .content { @@ -131,6 +143,7 @@ div#select-board-dialog .selectBoardContainer .list .item.selected i { #select-board-dialog .selectBoardContainer .list { max-height: 200px; overflow-y: auto; + flex: 1; } #select-board-dialog .selectBoardContainer .ports.list { @@ -282,3 +295,11 @@ div#select-board-dialog .selectBoardContainer .list .item.selected i { display: none; } } + +#select-board-dialog .no-result { + text-transform: uppercase; + height: 100%; + user-select: none; + padding: 10px 5px; + overflow-wrap: break-word; +} diff --git a/arduino-ide-extension/src/browser/style/dialogs.css b/arduino-ide-extension/src/browser/style/dialogs.css index aa5ef3fe1..4d56484e8 100644 --- a/arduino-ide-extension/src/browser/style/dialogs.css +++ b/arduino-ide-extension/src/browser/style/dialogs.css @@ -9,7 +9,8 @@ total = padding + margin = 96px */ max-width: calc(100% - 96px) !important; - min-width: unset; + + min-width: 424px; max-height: 560px; padding: 0 28px; } @@ -85,3 +86,4 @@ max-height: 400px; } } + \ No newline at end of file diff --git a/arduino-ide-extension/src/browser/style/settings-dialog.css b/arduino-ide-extension/src/browser/style/settings-dialog.css index 017f8c07e..a3315454c 100644 --- a/arduino-ide-extension/src/browser/style/settings-dialog.css +++ b/arduino-ide-extension/src/browser/style/settings-dialog.css @@ -88,10 +88,12 @@ } .additional-urls-dialog textarea { - width: 100%; + resize: none; } .p-Widget.dialogOverlay .dialogBlock .dialogContent.additional-urls-dialog { - display: block; + display: flex; overflow: hidden; + padding: 0 1px; + margin: 0 -1px; } diff --git a/arduino-ide-extension/src/browser/theia/workspace/workspace-commands.ts b/arduino-ide-extension/src/browser/theia/workspace/workspace-commands.ts index 5b864732b..2fbcbdb26 100644 --- a/arduino-ide-extension/src/browser/theia/workspace/workspace-commands.ts +++ b/arduino-ide-extension/src/browser/theia/workspace/workspace-commands.ts @@ -17,7 +17,6 @@ import { SketchesServiceClientImpl, } from '../../../common/protocol/sketches-service-client-impl'; import { SaveAsSketch } from '../../contributions/save-as-sketch'; -import { SingleTextInputDialog } from '@theia/core/lib/browser'; import { nls } from '@theia/core/lib/common'; @injectable() @@ -161,20 +160,26 @@ export class WorkspaceCommandContribution extends TheiaWorkspaceCommandContribut return; } const initialValue = uri.path.base; - const dialog = new SingleTextInputDialog({ - title: nls.localize('theia/workspace/newFileName', 'New name for file'), - initialValue, - initialSelectionRange: { - start: 0, - end: uri.path.name.length, - }, - validate: (name, mode) => { - if (initialValue === name && mode === 'preview') { - return false; - } - return this.validateFileName(name, parent, false); + const parentUri = parent.resource; + + const dialog = new WorkspaceInputDialog( + { + title: nls.localize('theia/workspace/newFileName', 'New name for file'), + initialValue, + parentUri, + initialSelectionRange: { + start: 0, + end: uri.path.name.length, + }, + validate: (name, mode) => { + if (initialValue === name && mode === 'preview') { + return false; + } + return this.validateFileName(name, parent, false); + }, }, - }); + this.labelProvider + ); const newName = await dialog.open(); const newNameWithExt = this.maybeAppendInoExt(newName); if (newNameWithExt) { diff --git a/arduino-ide-extension/src/browser/theia/workspace/workspace-input-dialog.ts b/arduino-ide-extension/src/browser/theia/workspace/workspace-input-dialog.ts index 7dca96b7f..5f4deb5b2 100644 --- a/arduino-ide-extension/src/browser/theia/workspace/workspace-input-dialog.ts +++ b/arduino-ide-extension/src/browser/theia/workspace/workspace-input-dialog.ts @@ -18,6 +18,7 @@ export class WorkspaceInputDialog extends TheiaWorkspaceInputDialog { protected override readonly labelProvider: LabelProvider ) { super(props, labelProvider); + this.node.classList.add('workspace-input-dialog'); this.appendCloseButton( nls.localize('vscode/issueMainService/cancel', 'Cancel') ); diff --git a/i18n/en.json b/i18n/en.json index cd6a7a2b7..dff1729e5 100644 --- a/i18n/en.json +++ b/i18n/en.json @@ -15,6 +15,7 @@ "getBoardInfo": "Get Board Info", "inSketchbook": " (in Sketchbook)", "installNow": "The \"{0} {1}\" core has to be installed for the currently selected \"{2}\" board. Do you want to install it now?", + "noBoardsFound": "No boards found for \"{0}\"", "noFQBN": "The FQBN is not available for the selected board \"{0}\". Do you have the corresponding core installed?", "noPortsDiscovered": "No ports discovered", "noPortsSelected": "No ports selected for board: '{0}'.",