Skip to content

Commit

Permalink
Added "itemIsDisabled" feature to ObjectDropdown
Browse files Browse the repository at this point in the history
  • Loading branch information
EricWittmann committed Nov 30, 2023
1 parent eab4f54 commit 9f6004c
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 23 deletions.
39 changes: 18 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,24 @@
# React + TypeScript + Vite
# Apicurio Common UI Components
This library contains some React + Patternfly UI components that are used across multiple Apicurio
UI projects.

This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules.
## Building
Use standard Node/NPM tooling to build the code in this library.

Currently, two official plugins are available:

- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh
- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh

## Expanding the ESLint configuration

If you are developing a production application, we recommend updating the configuration to enable type aware lint rules:
```
npm install
npm run lint
npm run build
```

- Configure the top-level `parserOptions` property like this:
## Developing
This library includes a demo application that showcases the components it provides, and allows easy
iterative development.

```js
parserOptions: {
ecmaVersion: 'latest',
sourceType: 'module',
project: ['./tsconfig.json', './tsconfig.node.json'],
tsconfigRootDir: __dirname,
},
```
npm install
npm run dev
```

- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked`
- Optionally add `plugin:@typescript-eslint/stylistic-type-checked`
- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list
Once running, open your browser to the URL indicated by the output of `npm run dev`. You will
see the showcase application.
2 changes: 2 additions & 0 deletions lib/common/ObjectDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export type ObjectDropdownProps = {
itemToString: (value: any) => string;
itemIsDivider?: (value: any) => boolean;
itemIsVisible?: (value: any) => boolean;
itemIsDisabled?: (value: any) => boolean;
itemToTestId?: (value: any) => string;
noSelectionLabel?: string;
menuAppendTo?: HTMLElement | (() => HTMLElement) | "inline";
Expand Down Expand Up @@ -100,6 +101,7 @@ export const ObjectDropdown: FunctionComponent<ObjectDropdownProps> = (props: Ob
<DropdownItem
value={index}
key={`action-${index}`}
isDisabled={props.itemIsDisabled === undefined ? false : props.itemIsDisabled(item) }
component={props => <button {...props} data-testid={itemToTestId(item)} />}
>
{ props.itemToString(item) }
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 9f6004c

Please sign in to comment.