Skip to content
wdj

FieldSelector

Implemented Data

Searchable column selector with ordering, required fields, optional persistence and table integration.

A wdj composition built from the existing component library.

Presentation commands show demo feedback. Read the interaction guide to connect real actions.

Configurable table

Search, add, remove and reorder fields, then apply them to a table with expandable details.

Choose columns or expand a resource to see its details.

Select fields

Choose which columns to show and their order.

No fields found.

Configurable resources
Details Resource Status Region Requests
Edge API Active eu-west-1 24,810
Documentation Paused us-east-1 8,402
Show template
{% load wdj %}
<div class="flex w-full min-w-0 flex-col gap-4">
  <div class="flex flex-wrap items-center justify-between gap-3">
    <p class="text-base text-kumo-subtle">Choose columns or expand a resource to see its details.</p>
    {% include "wdj/components/field_selector.html" with id="example-fields" fields=display_fields table_id="example-fields-table" only %}
  </div>
  {% include "wdj/components/table.html" with id="example-fields-table" columns=display_columns rows=display_rows expandable=True caption="Configurable resources" only %}
</div>

Form integration

Ordered JSON values, required columns, draft cancellation and native form reset.

The selected keys are submitted in display order. Cancel leaves the submitted value unchanged.

Select fields

Choose which columns to show and their order.

No fields found.

Show template
{% load wdj %}
<form class="flex w-full flex-col gap-4" x-data="{ submitted: '' }" @submit.prevent="submitted = new FormData($el).get('columns')" @reset="submitted = ''">
  <p class="text-base text-kumo-subtle">The selected keys are submitted in display order. Cancel leaves the submitted value unchanged.</p>
  <div class="flex flex-wrap items-center gap-3">
    {% include "wdj/components/field_selector.html" with id="form-fields" fields=display_fields value=display_initial only %}
    {% include "wdj/components/button.html" with label="Submit selection" type="submit" variant="primary" only %}
    {% include "wdj/components/button.html" with label="Reset form" type="reset" only %}
  </div>
  <output x-text="submitted || 'No selection submitted yet.'" class="break-words text-base text-kumo-subtle" aria-live="polite"></output>
</form>

API Reference

Prop Type Default Description
list[dict] unset List of {key, label, description?, required?, selected?}. Required fields cannot be removed; at least one field remains selected.
list[string] Fields with selected != False Initially selected field keys, in order. Unknown keys and duplicates are removed; required fields are restored.
string columns Hidden input containing an ordered JSON array, updated on Apply. Native reset restores the initial configuration.
string unset Optional ID of a wdj Table wrapper. Apply changes its visible columns and order, including after HTMX swaps.
string unset Optional localStorage key for display preferences. Scope it to the current account and table; omit for no persistence.
string unset Stable unique DOM ID; important for HTMX targets and focus restoration.
string Fields Visible accessible label. Supply an explicit aria-label via attrs when the control is bare.
bool False Disable the trigger and omit the value from native form submission.
string "" Class; pass the documented value shown in the examples.

Accessibility notes

Every interactive component keeps real semantics and keyboard support: native controls where possible, ARIA only where necessary, and a visible focus ring. See the Accessibility page for the shared contract.

Read the accessibility contract

Components

Components overview
AccountMenuReusable account navigation with nested preference menus, persisted appearance and application-owned actions.
AutocompleteFree-form input with local or HTMX-filtered suggestions.
BadgeSolid, tinted, outline and dot status labels.
BannerInline message bar with variants and optional action.
BreadcrumbsTrail navigation in two sizes.
ButtonVariants, sizes, shapes, icons and loading state.
ButtonGroupJoins a small set of tightly-coupled buttons into a single control (split buttons).
CheckboxSingle checkbox and indeterminate state.
ClipboardTextRead-only text field with a one-click copy-to-clipboard button.
Code / CodeHighlightedEscaped Pygments grammar highlighting, multiline tokens, line numbers, highlighted lines and localized copying.
CollapsibleComposable disclosure component for showing and hiding content.
Combobox / AutocompleteKumo-styled input/button triggers, search inside the popup, grouped local choices and debounced HTMX search.
CommandPaletteAccessible spotlight search overlay with Cmd+K keyboard shortcut.
DatePickerKumo-styled date and datetime popups; inline single, multiple and range calendars with bounds/presets.
DateRangePickerStyled popup or inline range calendar with bounds, presets and separately named form values.
DialogNative <dialog> modal with focus management.
DrawerEdge-anchored modal panel. LayerDialog has its own layered component.
DropdownMenuNative details menu with delegated keyboard navigation and dismissal.
EmptyEmpty-state placeholder with icon and action.
FieldLabel + description + error wrapper. Built into each control.
FieldSelectorSearchable column selector with ordering, required fields, optional persistence and table integration.
FilterBuilderReusable filter editor with AND conditions, typed values, draft/apply semantics and a JSON form contract.
FlowDirected diagrams with branches, SVG connectors, custom anchors and responsive local scrolling.
GridResponsive CSS grid layout container with preset column configurations.
InlineCopyTextCompact borderless copy control for IDs and short values.
InputText field with label, description, leading/trailing icons.
InputAreaMulti-line textarea with auto-resize option.
InputGroupInput field with seamless prefix, suffix, and addon attachments.
LabelForm field label, optional marker and tooltip.
LayerCardCompound surface card with distinct primary and secondary layers.
LayerDialogLayered native modal with actions, forms, nested dialogs and pending states.
LinkInline, current and plain text links.
LoaderAnimated spinner in three sizes.
MenuBarCompact view selector using native radio semantics.
MeterProgress bar showing a measured value within a known range.
PaginationA page navigation component for navigating through paginated content.
PopoverAnchored popup with interactive content.
RadioRadio group, vertical and horizontal.
SelectKumo-styled Alpine dropdown with groups, rich options and multiple selection; native form values and fallback.
SensitiveInputPassword/secret input with reveal toggle and copy button.
SEOServer-rendered page metadata: title, description, canonical, Open Graph, language alternatives and safe JSON-LD.
SeparatorHorizontal / vertical rules with optional label.
SidebarRecursive navigation groups, pinned links, account/zone views, search, loading, resize and full-screen mobile breadcrumbs.
SkeletonShimmer placeholder.
SliderInset single/range selection with vertical grips, value badges, endpoint labels and native keyboard/form behavior.
SurfaceBordered surface panel with header slot.
SwitchOn/off toggle in three sizes.
TableServer-driven tables with selection, sticky columns, field configuration and expandable details.
Table of contentsPage section navigation tree with active link indicator.
TabsSegmented and underline tabs with a sliding indicator, responsive overflow and local Alpine or URL/HTMX state.
TagInputMulti-value badge input for tags and recipients.
TextHeading, body, secondary, success, error and mono text.
TimeRangePickerReusable time filter with relative presets, calendar selection, exact times and UTC form values.
ToastyExpandable notification stack with variants, paused expiry and a live region.
ToolbarCompact grouped controls with shared borders, composed filters and keyboard arrow navigation.
TooltipHover and focus tooltip with grouped delays, Escape dismissal and viewport bounds.
↑ ↓ Navigate ↵ Select