{"id":19954496,"url":"https://github.com/isaccanedo/componentcore","last_synced_at":"2026-05-13T06:04:37.455Z","repository":{"id":156845000,"uuid":"633182292","full_name":"isaccanedo/componentcore","owner":"isaccanedo","description":":zap: Prototype low-level component foundation based on composing behaviors into interaction patterns","archived":false,"fork":false,"pushed_at":"2024-01-12T01:58:29.000Z","size":271,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-12T06:43:15.882Z","etag":null,"topics":["angular","composing","design-patterns","patterns","prototype-low-level-component"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isaccanedo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-04-27T00:45:46.000Z","updated_at":"2023-05-29T22:57:53.000Z","dependencies_parsed_at":"2024-01-12T06:04:23.044Z","dependency_job_id":null,"html_url":"https://github.com/isaccanedo/componentcore","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaccanedo%2Fcomponentcore","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaccanedo%2Fcomponentcore/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaccanedo%2Fcomponentcore/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaccanedo%2Fcomponentcore/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isaccanedo","download_url":"https://codeload.github.com/isaccanedo/componentcore/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241383188,"owners_count":19954100,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["angular","composing","design-patterns","patterns","prototype-low-level-component"],"created_at":"2024-11-13T01:20:43.276Z","updated_at":"2026-05-13T06:04:37.004Z","avatar_url":"https://github.com/isaccanedo.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# componentcore\nProtótipo de base de componentes de baixo nível com base na composição de comportamentos em padrões de interação\n\n## Comportamentos\nUm comportamento é uma parte atômica de funcionalidade que pode ser aplicada a um componente, como\n\"pode ser desativado\" ou \"tem itens\". Cada comportamento é definido como uma interface. Os comportamentos podem ser\ncumulativo. Por exemplo, um componente que \"tem um item ativo\" deve inerentemente \"ter itens\".\n\nOs comportamentos podem ser adicionados a uma classe existente via mixin, que aqui é uma função que leva\nem uma `classe` e a aumenta com algumas funcionalidades adicionais.\n\nComportamentos se compõem em padrões.\n\n## Padrões\nUm padrão é uma união de comportamentos que corresponde a um dos \"padrões de interação\" canônicos\ncomum na web. Na maioria das vezes, eles se alinham com as funções ARIA padrão.\n\nCada padrão define uma interface como uma união de comportamentos e um mixin que aplica tudo isso\ncomportamentos em uma classe existente.\n\n### Estrutura agnóstica\nO código aqui visa fornecer \"primitivas comportamentais\" que podem ser usadas em qualquer framework ou com\nnenhum quadro em tudo.\n\n### Comportamentos e padrões não conhecem o DOM\nDiferentes frameworks têm seus próprios sistemas para executar a manipulação de DOM, portanto, adiamos\ntoda a renderização no nível do framework.\n\n### Os elementos do contêiner sabem sobre seus filhos e não o contrário\n* Todos os comportamentos residem no nível _container_, enquanto os itens filhos são contêineres de estado simples.\n  * O contêiner *deve* saber sobre os filhos por causa de padrões como `aria-activedescendant`\n  * Ter os itens filho _também_ sabendo sobre o pai introduziria um fluxo de dados circular que\n     tornaria os padrões mais difíceis de raciocinar.\n  * Isso implica que os ouvintes de eventos devem residir no nível do contêiner ou que o contêiner\n     deve ter alguma maneira de saber quando o estado filho muda por meio de alguma implementação do\n     Padrão de observador.\n  * Isso também implica que o contêiner, que se preocupa com a ordem, deve ter alguma maneira de\n     consulta para seus itens filhos ou que os itens filhos devem ser transmitidos quando são adicionados/removidos/movidos\n     e que eles devem estar cientes de seu próprio índice.\n  *Exemplo: Um `listbox` conhece suas opções, mas cada opção não conhece nada de seu listbox.\n* Do ponto de vista da API, os desenvolvedores finais *querem* interagir com o contêiner para coisas que\n   lidar com os itens filhos. Por exemplo, lendo o valor selecionado de um `listbox`, mesmo que\n   o estado de seleção reside na `opção`.\n\n### O estado da classe padrão é a fonte da verdade\n* O DOM atua como a _saída_ do estado, e não como a fonte da verdade, que se alinha com\nmaioria dos quadros.\n* Para elementos personalizados, a classe padrão _é_ o `Elemento` personalizado...\n\n\n## Padrões de interação direcionados\n* listbox\n* option\n* combobox\n* dialog\n* grid (row, gridcell, rowgroup, rowheader)\n* tree\n* slider\n* menu\n* menuitem, menuitemcheckbox, menuitemradio\n* menubar\n* tablist\n* tab\n* tabpanel\n* radio-group\n\n## Padrões que não são mapeados exatamente para uma função ARIA\n* Expansion panel\n* Accordion\n* Datepicker\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaccanedo%2Fcomponentcore","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisaccanedo%2Fcomponentcore","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaccanedo%2Fcomponentcore/lists"}