Skip to content

A collection of reusable React UI widgets for building UiPath-powered applications, built with uipath-typescript and apollo-wind.

License

Notifications You must be signed in to change notification settings

UiPath/uipath-ui-widgets

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

42 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

UiPath UI Widgets

Test Build & Deploy Coverage License: MIT TypeScript React Storybook

A collection of reusable React UI components for UiPath applications.

πŸ“¦ Packages

A powerful and flexible datatable component with full CRUD support, master-detail views, inline editing, and more.

Features:

  • βœ… Full CRUD operations (Create, Read, Update, Delete)
  • πŸ“Š Master-detail view with grouping
  • ✏️ Inline editing with multiple field types
  • πŸ” Filtering, sorting, and pagination
  • 🎨 Customizable columns and styling
  • πŸ”— Foreign key relationship support
  • πŸ“ Diff viewer for change review
  • βœ… Comprehensive test coverage

A multi-file upload component that allows users to select and upload multiple files to a UiPath bucket.

Features:

  • πŸ“ Multiple file selection
  • ☁️ Upload to UiPath buckets
  • βœ… Success/error callbacks
  • πŸ” File type filtering
  • πŸ“ File size limits
  • πŸ“‚ Custom path support

πŸš€ Getting Started

Installation

npm install

Development

# Start development server
npm run dev

# Build all packages
npm run build

# Run linter
npm run lint

# Start Storybook
npm run storybook

# Build Storybook
npm run build-storybook

Testing

# Run all tests
npm test

# Run tests in watch mode
npm test -- --watch

# Run tests with UI
npm run test:ui

# Generate coverage report
npm run test:coverage

See TEST_GUIDE.md for comprehensive testing documentation.

πŸ“š Storybook

This project uses Storybook for component documentation and development. Storybook provides an interactive UI for viewing and testing components in isolation.

Running Storybook Locally

npm run storybook

This will start Storybook on http://localhost:6006.

Building Storybook

npm run build-storybook

This creates a static build of Storybook in the storybook-static directory.

Deployment

Storybook is automatically deployed to GitHub Pages when changes are pushed to the main or develop branches. The deployment workflow builds both the packages and Storybook, then publishes the static Storybook site.

To enable GitHub Pages deployment:

  1. Go to your repository settings
  2. Navigate to Pages
  3. Set Source to "GitHub Actions"

πŸ“ Project Structure

uipath-ui-widgets/
β”œβ”€β”€ packages/
β”‚   └── datatable/          # DataTable component package
β”‚       β”œβ”€β”€ src/
β”‚       β”‚   β”œβ”€β”€ components/ # React components
β”‚       β”‚   β”œβ”€β”€ hooks/      # Custom React hooks
β”‚       β”‚   β”œβ”€β”€ utils/      # Utility functions
β”‚       β”‚   └── types.ts    # TypeScript types
β”‚       └── package.json
β”œβ”€β”€ samples/                # Sample applications
β”œβ”€β”€ test/                   # Test setup and utilities
β”‚   β”œβ”€β”€ setup.ts           # Test configuration
β”‚   └── utils/             # Test helpers
β”œβ”€β”€ vitest.config.ts       # Vitest configuration
└── package.json

πŸ§ͺ Testing

This project follows testing best practices with comprehensive unit test coverage:

  • Test Framework: Vitest
  • Testing Library: React Testing Library
  • Coverage Target: 80%+ for statements, branches, functions, and lines

Key testing principles:

  • βœ… Test behavior, not implementation
  • βœ… Use accessible queries
  • βœ… Follow AAA pattern (Arrange-Act-Assert)
  • βœ… Mock external dependencies
  • βœ… Test edge cases and error states

πŸ› οΈ Tech Stack

  • React 19 - UI library
  • TypeScript - Type safety
  • Vite - Build tool
  • ag-Grid - Data grid component
  • Material-UI - UI components
  • Vitest - Test runner
  • React Testing Library - Component testing

React Compiler

The React Compiler is enabled on this project. See React Compiler documentation for more information.

Note: This will impact Vite dev & build performances.

Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type-aware lint rules:

export default defineConfig([
  globalIgnores(["dist"]),
  {
    files: ["**/*.{ts,tsx}"],
    extends: [
      // Other configs...

      // Remove tseslint.configs.recommended and replace with this
      tseslint.configs.recommendedTypeChecked,
      // Alternatively, use this for stricter rules
      tseslint.configs.strictTypeChecked,
      // Optionally, add this for stylistic rules
      tseslint.configs.stylisticTypeChecked,

      // Other configs...
    ],
    languageOptions: {
      parserOptions: {
        project: ["./tsconfig.node.json", "./tsconfig.app.json"],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
]);

You can also install eslint-plugin-react-x and eslint-plugin-react-dom for React-specific lint rules:

// eslint.config.js
import reactX from "eslint-plugin-react-x";
import reactDom from "eslint-plugin-react-dom";

export default defineConfig([
  globalIgnores(["dist"]),
  {
    files: ["**/*.{ts,tsx}"],
    extends: [
      // Other configs...
      // Enable lint rules for React
      reactX.configs["recommended-typescript"],
      // Enable lint rules for React DOM
      reactDom.configs.recommended,
    ],
    languageOptions: {
      parserOptions: {
        project: ["./tsconfig.node.json", "./tsconfig.app.json"],
        tsconfigRootDir: import.meta.dirname,
      },
      // other options...
    },
  },
]);

About

A collection of reusable React UI widgets for building UiPath-powered applications, built with uipath-typescript and apollo-wind.

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages