Skip to content

Path validation fix, webpack process polyfill, and v9 DataGrid column resize UX - #732

Merged
Vincenzo Caruso (vincenzocaruso) merged 5 commits into
Azure:mainfrom
rafarhat:main
Jun 19, 2026
Merged

Path validation fix, webpack process polyfill, and v9 DataGrid column resize UX#732
Vincenzo Caruso (vincenzocaruso) merged 5 commits into
Azure:mainfrom
rafarhat:main

Conversation

@rafarhat

@rafarhat rafarhat commented Jun 12, 2026

Copy link
Copy Markdown
Member

This PR bundles several independent fixes and enhancements.

1. Path validation: allow valid IoT Hub device ID characters

The validatePath regex was too restrictive, blocking dots and other special characters that are valid in IoT Hub device IDs per Azure documentation (- . % _ * ? ! ( ) , : = @ $ '). This caused "Invalid path: contains disallowed characters" errors for device IDs like test.test2. Path traversal (..) and double slashes (//) are still blocked.

2. Webpack: provide process polyfill in the common config

Moved the process ProvidePlugin from the dev-only webpack config into the shared webpack.common.ts so the production (electron file://) bundle also has the polyfill. Fixes a "process is not defined" runtime error that only reproduced in the production build.

3. Restore v8-style column resize UX in the v9 DataGrid wrapper

The app was migrated from Fluent UI v8 (DetailsList) to v9 (DataGrid); the shared ResizableDetailsList lost the v8 resize experience. This restores it:

  • Working resize via className-based cell styling, fixing a v9 gotcha where consumer inline style clobbered the column-sizing width that DataGridHeaderCell/DataGridCell inject.
  • Header dropdown menu per column with a "Resize Column" dialog for exact-pixel width entry, plus a keyboard-resize option.
  • Chevron indicator on each header to signal the menu.
  • Horizontal scroll wrapper (.rdl-scroll-container) so the grid shows a horizontal scrollbar when the window is narrower than the columns'' combined minimum widths — matching v8 DetailsList behavior.
  • Accessibility: header cells use the visible column name as their accessible name (no static aria-label override); the menu trigger still announces aria-haspopup.

4. Cleanup

Removed an accidentally committed generated file (host/handlers/urlValidation).


This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.

Thank you for contributing to the Azure IoT Explorer!

This checklist is used to make sure that common guidelines for a pull request are followed.

General Guidelines

  • If introducing new functionality or modified behavior, are they backed by unit tests?
  • Have all unit tests passed locally? (by running npm run test command)
  • Have you updated the README.md with new screenshots if significant changes have been made?
  • Have you update the package version if the current version in package.json is not higher than the version released?

rafarhat and others added 3 commits June 12, 2026 09:22
…tion

The validatePath regex was too restrictive, blocking dots and other
special characters that are valid in IoT Hub device IDs per Azure
documentation (- . % _ * ? ! ( ) , : = @ $ '). This caused 'Invalid
path: contains disallowed characters' errors for device IDs like
'test.test2'. Path traversal (..) and double slashes (//) are still
blocked.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…lidator.js

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
rafarhat and others added 2 commits June 19, 2026 09:21
node-polyfill-webpack-plugin v4 no longer injects the process global by
default, causing 'process is not defined' in the packaged Electron
renderer. Move the ProvidePlugin from the dev-only config into the shared
common config so it applies to production/Electron builds as well.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add resize handle styling, header dropdown menu (Resize Column dialog + keyboard resize), chevron indicator, and a horizontal scroll wrapper so the grid scrolls when the window is narrower than the columns' combined min widths.

- ResizableDetailsList: className-based cell styling (avoids the v9 gotcha where consumer inline style clobbers the injected resize width), header Menu with Resize/keyboard-resize items, ChevronDownRegular indicator, and .rdl-scroll-container wrapper for horizontal overflow.
- New resizeColumnDialog: v9 Dialog for exact-pixel width entry via columnSizing setColumnWidth.
- New _resizableDetailsList.scss: header/cell classNames + scroll container.
- Localization keys for keyboard resize.
- Header cells use the visible column name as their accessible name (no static aria-label override).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@rafarhat rafarhat changed the title fix: allow dots and valid IoT Hub device ID characters in path validation Path validation fix, webpack process polyfill, and v9 DataGrid column resize UX Jun 19, 2026
@vincenzocaruso
Vincenzo Caruso (vincenzocaruso) merged commit 2bb7eee into Azure:main Jun 19, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants