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]

Reply via email to