Giter Site home page Giter Site logo

isaccanedo / componentcore Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 271 KB

:zap: Prototype low-level component foundation based on composing behaviors into interaction patterns

License: MIT License

TypeScript 96.82% HTML 2.54% CSS 0.50% SCSS 0.14%
prototype-low-level-component composing design-patterns patterns angular

componentcore's Introduction

componentcore

Protótipo de base de componentes de baixo nível com base na composição de comportamentos em padrões de interação

Comportamentos

Um comportamento é uma parte atômica de funcionalidade que pode ser aplicada a um componente, como "pode ser desativado" ou "tem itens". Cada comportamento é definido como uma interface. Os comportamentos podem ser cumulativo. Por exemplo, um componente que "tem um item ativo" deve inerentemente "ter itens".

Os comportamentos podem ser adicionados a uma classe existente via mixin, que aqui é uma função que leva em uma classe e a aumenta com algumas funcionalidades adicionais.

Comportamentos se compõem em padrões.

Padrões

Um padrão é uma união de comportamentos que corresponde a um dos "padrões de interação" canônicos comum na web. Na maioria das vezes, eles se alinham com as funções ARIA padrão.

Cada padrão define uma interface como uma união de comportamentos e um mixin que aplica tudo isso comportamentos em uma classe existente.

Estrutura agnóstica

O código aqui visa fornecer "primitivas comportamentais" que podem ser usadas em qualquer framework ou com nenhum quadro em tudo.

Comportamentos e padrões não conhecem o DOM

Diferentes frameworks têm seus próprios sistemas para executar a manipulação de DOM, portanto, adiamos toda a renderização no nível do framework.

Os elementos do contêiner sabem sobre seus filhos e não o contrário

  • Todos os comportamentos residem no nível container, enquanto os itens filhos são contêineres de estado simples.
    • O contêiner deve saber sobre os filhos por causa de padrões como aria-activedescendant
    • Ter os itens filho também sabendo sobre o pai introduziria um fluxo de dados circular que tornaria os padrões mais difíceis de raciocinar.
    • Isso implica que os ouvintes de eventos devem residir no nível do contêiner ou que o contêiner deve ter alguma maneira de saber quando o estado filho muda por meio de alguma implementação do Padrão de observador.
    • Isso também implica que o contêiner, que se preocupa com a ordem, deve ter alguma maneira de consulta para seus itens filhos ou que os itens filhos devem ser transmitidos quando são adicionados/removidos/movidos e que eles devem estar cientes de seu próprio índice. *Exemplo: Um listbox conhece suas opções, mas cada opção não conhece nada de seu listbox.
  • Do ponto de vista da API, os desenvolvedores finais querem interagir com o contêiner para coisas que lidar com os itens filhos. Por exemplo, lendo o valor selecionado de um listbox, mesmo que o estado de seleção reside na opção.

O estado da classe padrão é a fonte da verdade

  • O DOM atua como a saída do estado, e não como a fonte da verdade, que se alinha com maioria dos quadros.
  • Para elementos personalizados, a classe padrão é o Elemento personalizado...

Padrões de interação direcionados

  • listbox
  • option
  • combobox
  • dialog
  • grid (row, gridcell, rowgroup, rowheader)
  • tree
  • slider
  • menu
  • menuitem, menuitemcheckbox, menuitemradio
  • menubar
  • tablist
  • tab
  • tabpanel
  • radio-group

Padrões que não são mapeados exatamente para uma função ARIA

  • Expansion panel
  • Accordion
  • Datepicker

componentcore's People

Contributors

isaccanedo avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.