Skip to content

Add match method #3

@sergeysova

Description

@sergeysova
const FormDescription = match({
  source: $pending,
  cases: {
    true: Alert,
    false: Info,
  },
})

const Panel = match({
  source: $error,
  bind: {
    text: $text,
  },
  cases: {
    username_is_invalid: Alert,
    username_is_abandoned: Info,
    ok: Success,
  },
})

const Alert = reflect({
  bind: {
    type: $store.map(fn),
  },
  view: Notification,
})

const Field = match({
  source: $field.map(field => field.type),
  bind: {
    text: $text,
  },
  cases: {
    text: Input,
    number: Range,
    boolean: Checkbox,
    select: Select,
    field: Textarea,
  },
  default: () => null,
})

function match({ source, cases, bind, default: Default }) {
	return (props) => <Default />
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions