Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Form: Add default properties for a new object?

Aberta
#460 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
5/5
Tempo estimado
Mais de uma semana
Facilidade para iniciantes
35/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
typescript
Domínio
frontend

Direção de pesquisa

Comece em src/widgets/forms.js por volta da linha 273 e compare como ui:Multiple lida com ui:part em relação aos padrões ui:category, ui:targetClass e ui:from descritos na issue. Determine qual abordagem deve definir as default properties de um objeto recém-criado, usando o exemplo sosa:Observation como caso de aceitação. Considera-se concluído quando o novo objeto recebe seu rdf:type padrão e solid-panes consegue renderizar seu formulário.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

When using ui:Multiple, currently a new object is created and linked to the subject with the specified ui:property.
https://github.com/solid/solid-ui/blob/c4ad302f361cc4a1de24941a475cb66333c43805/src/widgets/forms.js#L273

The form to use for the new object is then specified by ui:part

It appears there is currently no way to specify default properties for the new object, e.g. its rdf:type.
For rdf:type in particular, this means that forms for the new object will not be rendered by solid-panes, which discovers the relevant form based on its class.

Possible solutions

I don't whether there is a need for a more general templating mechanism, but at least for rdf:type, a solution could be to allow ui:Multiple to also use ui:category (as for ui:Classifier) or ui:targetClass (as for ui:Autocomplete)

Another option would be to specify ui:from (as for ui:Choice) instead of ui:part, and choose the ui:creationForm based on the specified rdfs:Class.

Example use case

Generating a new observation

sosa:Observation ui:annotationForm :ObsForm.
:ObservationList ui:annotationForm :ObsListForm.

:ObsListForm
    a ui:Multiple;
    ui:part :ObsForm;
    ui:property rdfs:member;
    ui:category sosa:Observation.

:ThisObsList a :ObservationList.

Creating a new object in :ThisObsList would generate:

:ThisObsList rdfs:member :id1639432788935.
:id1639432788935 a sosa:Observation.

Edit: I've got an patch using ui:category here: https://github.com/josephguillaume/my-solidos-patches/blob/2860861f3ce4ddde9a8b0831ca520e4492878991/solid-ui.diff#L32

Edit: incidentally it's possible to get the desired behaviour by using ui:reverse with rdf:type as the ui:property

sosa:Observation ui:annotationForm :ObsForm.

:dummyClass ui:annotationForm :ObsListForm.
sosa:Observation a :dummyClass.

:ObsListForm
    a ui:Multiple;
    ui:part :ObsForm;
    ui:reverse 1;
    ui:property rdf:type.

Visiting sosa:Observation builds a form for :dummyClass which generates triples:
:newsubject a sosa:Observation

This might be more of a curiosity than a real solution.

Linguagem predominante
TypeScript
Estrelas
153
Forks
46
Merge médio
1d 5h
PRs com merge (30d)
10

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de SolidOS/solid-ui

Todas as issues de SolidOS/solid-ui

Issues semelhantes

Mais issues de TypeScript

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.