PolicyConfigListEditor

components/policy-config/ListEditor.vue

Config shape: allow/deny-list management — searchable-feeling entry table (value, scope, added-by, last-matched) with a pattern-friendly add row. Fully controlled: renders `entries` as given, emits intents; the parent owns the array (mock: mutate on the events; qdash: persist via API, e.g. /api/egress-decisions).

Approved destinations

3 entries · patterns supported (* and ?)

DestinationScopeAdded byLast matched
api.anthropic.comglobalmark2m ago
*.openai.comglobalmark11m ago
registry.npmjs.orgbuild runnershostseed38m ago
you
Empty (everything violates)

Approved MCP servers

0 entries · patterns supported (* and ?)

ServerAdded byLast matched
Empty list — everything violates until entries are approved.
you
components/policy-config/ListEditor.vue

Usage

<PolicyConfigListEditor title = "(required)" valueLabel = "Entry" placeholder = "value or pattern" :scopes = "[]" :entries = "[]" />

Props

PropTypeDefaultDescription
titleString(required)Section heading
valueLabelString'Entry'First column header
placeholderString'value or pattern'Add-row input placeholder
scopesArray[]Scope options; scope column hidden when empty
entriesArray[]{ value, scope, addedBy, lastMatched, note? }

Events

EventDescription
addAdd clicked → { value, scope, addedBy, lastMatched }
remove✕ clicked → index

Related

Qpoint Brand Style Guide