rfellows opened a new pull request, #11159: URL: https://github.com/apache/nifi/pull/11159
# Summary [NIFI-15853](https://issues.apache.org/jira/browse/NIFI-15853) This pull request fixes connector wizard properties whose allowable values must be loaded from the backend (`allowableValuesFetchable === true` with no static `allowableValues`). Previously those properties were rendered as a plain text control and never triggered the allowable-values request, so users could not pick from server-provided options. The fix introduces a reusable **SearchableSelect** component (Material-based, `ControlValueAccessor`) and routes both **static** and **dynamic** allowable values through it. **ConnectorPropertyInput** now emits `requestAllowableValues` exactly once per fetchable control when the step loads (guarded by `hasFetchedDynamicValues`), and resets that guard when the bound descriptor's `property.name` changes so a rebound descriptor can refetch. Loading, error, and empty responses are handled with fallbacks so the field stays usable (text input or textarea as appropriate). **STRING_LIST** properties now render as a **multi-select** when allowable values exist (static or dynamic), and as a **comma-separated textarea** when they do not — replacing the previous plain text input for that type. ### Scope - **14 files**, all under `nifi-frontend/src/main/frontend` (~4800 insertions, ~77 deletions on squashed commit `75068da3e3`). ### New / updated shared UI - **`SearchableSelect`** (`libs/shared/src/components/searchable-select/`): filterable overlay select with optional multi-select, sticky search with clear, optional async search and virtual scrolling, optional grouped options, loading/error/empty states, full keyboard navigation, and accessibility (`role="combobox"`, `aria-*`). Spec file adds broad coverage (107 tests covering single/multi select, filter, keyboard navigation, focus management, virtual scrolling, async search, grouping, value-change deduplication, and disabled states). - **`MultiSelectOption`**: extends `MatOption` for options inside the overlay; theming (min-height, padding, hover, selected, keyboard focus) is scoped under `.multi-select-option` so other `mat-select` usages are unaffected. - **`ConnectorPropertyInput`**: template moved to `connector-property-input.component.html`; helpers for input kind and dynamic state (`shouldUseSelect`, `shouldUseTextInput`, `shouldUseTextarea`, `isMultiSelect`, `isDynamicValuesFetchEmpty`, `isDynamicValuesFetchFailed`); textarea branch aligned with text input for validation errors (`required`, `pattern`, `verificationError`, `assetContentMissing` where applicable). - **Exports**: `libs/shared/src/components/index.ts` and `libs/shared/src/types/index.ts` updated for new components/types. ### Visible UX (intentional) - Static `allowableValues` dropdowns now use **searchable-select** instead of **mat-select** (search filter + clear control) so static and dynamic flows share one widget. - **STRING_LIST** is multi-select or textarea as described above. - Option row styling is isolated to searchable-select's option component; other selects in NiFi are not restyled globally. ### Out of scope / follow-ups - **ASSET** / **ASSET_LIST** handling (called out in component doc comment as deferred). - **SECRET** dropdown and **BOOLEAN** slide-toggle alignment with the new patterns. - **Dependency-aware refetch** when a parent property changes (dynamic allowable values are still fetched once per control lifecycle / descriptor identity as implemented here). ### Screenshots _Fetched allowable values from the KafkaToS3 connector for topic names_ <img width="1430" height="1188" alt="Screenshot 2026-04-17 at 09 49 00" src="https://github.com/user-attachments/assets/370e52d1-9e32-48a9-84ff-0f4a89890eb7" /> # Tracking Please complete the following tracking steps prior to pull request creation. ### Issue Tracking - [x] [Apache NiFi Jira](https://issues.apache.org/jira/browse/NIFI) issue created ### Pull Request Tracking - [x] Pull Request title starts with Apache NiFi Jira issue number, such as `NIFI-15853` - [x] Pull Request commit message starts with Apache NiFi Jira issue number, as such `NIFI-15853` - [ ] Pull request contains [commits signed](https://docs.github.com/en/authentication/managing-commit-signature-verification/signing-commits) with a registered key indicating `Verified` status ### Pull Request Formatting - [ ] Pull Request based on current revision of the `main` branch - [x] Pull request refers to a feature branch with one commit containing changes --- # Verification Please indicate the verification steps performed prior to pull request creation. ### Build - [ ] Build completed using `./mvnw clean install -P contrib-check` - [ ] JDK 21 - [ ] JDK 25 *(Frontend-only change under `nifi-frontend`; full root `contrib-check` should still be run per project norms before merge.)* ### Licensing - [x] New dependencies are compatible with the [Apache License 2.0](https://apache.org/licenses/LICENSE-2.0) according to the [License Policy](https://www.apache.org/legal/resolved.html) - [x] New dependencies are documented in applicable `LICENSE` and `NOTICE` files ### Documentation - [x] Documentation formatting appears as expected in rendered files -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
