Git Product home page Git Product logo

po-angular's Introduction

Biblioteca de componentes de UI para Angular.

Travis branch npm package NPM downloads GitHub license Twitter


Pré-requisitos

Para começar a utilizar o PO UI é pré-requisito ter o Node.js instalado (versão 18.13.x ou acima) e o seu gerenciador de pacote favorito na versão mais atual. Caso você ainda não tenha instalado o pacote @angular/cli, instale-o via npm ou yarn.

Instalando com npm:

npm i -g @angular/cli@17

Caso prefira instalar com o yarn:

yarn global add @angular/cli@17

Passo 1 - Crie o seu primeiro projeto

Caso você já tenha um projeto criado e deseje apenas incluir o Po, pule esta etapa e vá para o Passo 1.1.

O Angular CLI se encarrega de construir toda estrutura inicial do projeto. Para isso, execute o seguinte comando:

ng new my-po-project --skipInstall

O parâmetro --skip-install permite criar o projeto, contudo, não instalará as dependências automaticamente.

Passo 1.1 - Instalando as dependências

Antes de executar a instalação ou inserir o Po no seu projeto existente, é necessário verificar as dependências do seu projeto, algumas delas precisam estar de acordo com a versão do Po e Angular (elas podem ser encontradas no arquivo package.json localizado na raiz da aplicação).

Veja abaixo a lista de dependências e as versões compatíveis, elas devem ser conferidas e se necessário, ajustadas no seu projeto.

 "dependencies": {
    "@angular/animations": "~17.2.4",
    "@angular/common": "~17.2.4",
    "@angular/compiler": "~17.2.4",
    "@angular/core": "~17.2.4",
    "@angular/forms": "~17.2.4",
    "@angular/platform-browser": "~17.2.4",
    "@angular/platform-browser-dynamic": "~17.2.4",
    "@angular/router": "~17.2.4",
    "rxjs": "~7.8.1",
    "tslib": "^2.6.2",
    "zone.js": "~0.14.4"
    ...
  },
  "devDependencies": {
    "@angular-devkit/build-angular": "~17.2.3",
    "@angular/cli": "~17.2.3",
    "@angular/compiler-cli": "~17.2.4",
    ...
    "typescript": "~5.2.2"
  }

Após verificar se estas dependências do seu projeto estão com as versões compatíveis declaradas acima, acesse a pasta raiz do seu projeto e execute o comando abaixo:

Instalando com npm:

npm install

Caso utilizar a versão 7 do npm pode ocorrer erro de versão das dependências, neste caso utilize npm install --legacy-peer-deps.

Caso prefira instalar com o yarn:

yarn install

Passo 2 - Adiconando o pacote @po-ui/ng-components

Utilizando o comando ng add do Angular CLI, vamos adicionar o Po em seu projeto e o mesmo se encarregará de configurar o tema, instalar o guia de primeiros passos Po. Além de importar também o modulo HttpClientModule.

Execute o comando abaixo na pasta raiz do seu projeto:

ng add @po-ui/ng-components

Ao executar o comando acima, será perguntado se deseja incluir uma estrutura inicial em seu projeto com menu lateral, página e toolbar, utilizando componentes do Po, caso desejar, apenas informe: Y.

Passo 3 - Rode o seu projeto

Agora basta executar mais um comando para subir a aplicação e ver o seu projeto rodando no browser ;).

ng serve

Abra o browser e acesse a url http://localhost:4200. Pronto!


E agora?

Agora é só abrir seu editor / IDE favorito e começar a trabalhar no seu projeto.

Caso você queira utilizar nossos componentes de templates, como o po-page-login, po-modal-password-recovery, po-page-blocked-user, po-page-dynamic-table entre outros, basta adicionar o pacote @po-ui/ng-templates executando o comando abaixo:

ng add @po-ui/ng-templates

Ao executar este comando, será instalado o pacote @po-ui/ng-templates e configurado o PoTemplatesModules no app.module.

A partir dai o seu projeto está preparado para receber outros componentes do PO UI! \o/

po-angular's People

Contributors

alinelariguet avatar alvarocamillont avatar anderson-gregorio-totvs avatar anliben avatar bruno-severino avatar brunoromeiro avatar caio-bernardo avatar carlosalmeida01 avatar carolvasc avatar csimoesjr avatar danilo-bispo-tolentinos avatar eternauta123 avatar felipepetuco avatar gabrielibarbosa avatar guilnorth avatar gustavo-gomes-tolentinos avatar jcorrea97 avatar jhonyeduardo avatar jhosefmarks avatar jnrpalma avatar josuedepaula avatar maiconfunke avatar mateusjmaf avatar nicoleoliveira avatar pedrodominguesp avatar rafaellygruber avatar ricmello avatar rogerio-fialho avatar samir-ayoub avatar wsteixeira avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

po-angular's Issues

Possibilitar atribuir valores a input de datapicker, select, etc

Boa tarde,

Para facilitar o preenchimento de formulários gostaria de solicitar a possibilidade de preencher campos como "po-select" e "po-datapicker" passando valores.
É possível "settar" valores no select comum do html. Se o "po-select" tivesse uma diretiva que permitisse fazer isso iria facilitar bastante.
Hoje para atualizar um formulários eu tenho 2 hipóteses:

  • Uma delas é fazer na mão um select comum e copiar todo o css do portinari
  • Solicitar toda hora que o usuário preencha novamente esses campos estilizados.

Agradeço desde já.
Caio Passarelli
Mustti

Sugestão de melhoria para DynamicForm

Ao configurar os campos a serem exibidos no DynamicForm, é possível informar a um determinado campo o seu searchService para que seja criado um campo do tipo lookup, porém, observando o componente lookup é possível ver que nele é possível enviar parametros junto a requisição (p-filter-params), mas no dynamicform não temos a opção de informar este parametro do lookup. Parametros na requisição feita pelo lookup são extremamente importantes pois em muitos casos é possível que os dados solicitados precisam ser filtrados por algum valor do formulário, exemplo: escolher um estado e no lookup para escolher os municípios trazer somente os municípios do estado selecionado.
Sem esta opção eu não vejo outra forma de filtrar a consulta feita.

Envio de informações customizadas

Pessoal, no template Page Dynamic Table, ao definir o endpoint ou ao colocar o component no template, teria como adicionar a possibilidade de enviar um campo ou uma informação customizada ao fazer requisições ao endpoint. Peço isso pois da forma que está documentada não há como enviar informações de autenticação para o endpoint e com isso não é possível distinguir quais informações serão retornadas.

Lookup busca de processos não listam dados po-page-scheduler

Meu endpoint http://localhost:8080/schedulers/processes?page=1&pageSize=10&search=
retorna os dados no seguinte formado, seguindo a especificação que diz na documentação do component:
[{"processID":"IMPORTACAO_FUNCIONARIO","description":"Importar Funcionários"}]

No entanto o Lookup de seleção de processos não lista os dados nem as colunas desse resultado da API. A renderização dessa tela pode ser vista abaixo.

Não possui as definições de colunas e nem os dados. Não sei se isso precisa ser definido em algum lugar do componente, mas também não está indicado na documentação como isso é definido. Por favor, se precisa definir algo pra funcionar, como e onde eu defino a tabela do lookup para que seja possível eu selecionar os dados ?

Versão: 1.12.0
scheduler PO

Sugestão de melhoria PoPageDynamicTable

Neste componente há um campo para pesquisa que ao ser digitado e submetido para o endpoint, é gerado uma querystring contendo search= para que este texto seja procurando em todos os campos, porém, não é enviado na requisição a lista de campo contidos atualmente no componente, forçando o programador a pesquisar em todos os campos possíveis ou pesquisar em campos "hard coded", o que não é o ideal. Então seria interessante de alguma forma, passar para o endpoint quais os campos estão sendo visualizados atualmente, até mesmo porque o campo que deve ser ordenado já é enviado.
Existe o plugin para jQuery chamado DataTables que ao habilitar o processamendo server-side já faz essa passagem de parametros como eu sugeri. https://datatables.net/manual/server-side

Integração

Boa tarde,
Sabem me informar como fazer a chamada de telas em Portinari pelos Menus do Protheus? Por exemplo, ao chamar um relatório MATR..., ele abrir esse relatório na tela do Portinari.

PoInput com máscara não atualiza valor colando texto somente com mouse

Reprodução

https://stackblitz.com/edit/portinariui-bugreport01
PrDwGwjR6a

Passos para reproduzir:

  1. Criar um po-input com o atributo p-mask preenchido
  2. Na tela, clicar com o botão direito do mouse e colar um conteúdo no campo
  3. Sair do campo

Qual o comportamento atual?

Nos componentes de input que utilizam máscara, quando não usamos o teclado para preenchimento, o valor do ngModel não é atualizado. Ex: colar um texto usando somente o mouse.

Que comportamento você esperava ver?

Após colar o texto, que o ngModel seja atualizado

Ambiente

  • Portinari: 1.13.1
  • Angular: 8.0.3
  • Browser(s): Chrome
  • Operating System (e.g. Windows, macOS, Ubuntu): Windows

Possibilitar customização do componente po-chart

Boa tarde,

Estou usando o po-chart (https://portinari.io/documentation/po-chart) e me deparei com alguns detalhes que eu gostaria de customizar no gráfico para um projeto. Segue a lista de funcionalidades que atualmente estou precisando.

Setar cores particulares para cada dado no gráfico.
Escolher mostrar ou não a parte de legendas.
Definir a label de cada elemento do gráfico dentro ou fora.
Definir largura do gráfico tipo "Donut".

Segue em anexo um exemplo de gráfico.

Obrigado desde já!

Screenshot from 2019-10-04 14 49 50

Erro ao gerar Build --prod

Boa tarde, Galera!

Eu utilizava o THF e realizei a migração para Portinari.

Eu estou com problema ao tentar gerar o build da aplicação Portinari, utilizando o seguinte código:
ng build --prod --aot --sourceMap=false

Entretanto ele gera o erro:

Schema validation failed with the following errors:
Data path ".budgets[1].type" should be equal to one of the allowed values.

Por gentileza, poderiam me auxiliar?

Valid nos campos do Dynamic Form

Boa tarde.

Gostaria de saber se existe alguma maneira de fazer validações específicas nos campos que adicionamos no p-fields .

Se não existir, teria como incluir essa funcionalidade?

Att,

table column - color

Boa tarde!

é possível adicionar mais opções de cores no component po-table, na propriedade color?

hoje o mesmo conta com 12 cores, mas eu necessitava de opções semelhantes ao que utilizo no Protheus como preto, branco e cinza.

obrigado!

PoUpload e Firebase

É possível usar o PoUpload com o firebase?

Ou se não for possível no momento, quais são os planos para o futuro ?

AutoWidth no conteudo da coluna do po-table

É possível fazer com que a largura da coluna se ajuste ao seu conteúdo?
Minha tabela está declarada da seguinte forma:

<po-table p-checkbox p-single-select p-height="200" p-hide-select-all="true" p-sort="true"
    p-striped="true" [p-columns]="columns" [p-items]="items">
  </po-table>

// Colunas
columns: PoTableColumn[] = [
    {
      property: 'acoes', type: 'icon', width: '80px', icons: [
        {
          icon: 'po-icon-eye', value: 'ver', action: this.detalheCliente.bind(this), tooltip: 'Detalhes'
        }
      ]
    },
    { property: 'id', label: 'Código', },
    { property: 'nome', label: 'Nome' },
    { property: 'rg', label: 'RG' },
    { property: 'cpf', label: 'CPF' },
    {
      property: 'estado_civil', label: 'Est. Civil', type: 'label', labels: [
        { value: 'S', label: 'Solteiro(a)', color: 'color-02' },
        { value: 'C', label: 'Casado(a)', color: 'color-08' },
        { value: 'D', label: 'Divorciado(a)', color: 'color-07' },
        { value: 'V', label: 'Viuvo(a)', color: 'color-11' }
      ]
    },
    {
      property: 'sexo', label: 'Sexo', type: 'subtitle', subtitles: [
        { value: 'M', label: 'Masculino', content: 'M', color: 'color-11' },
        { value: 'F', label: 'Feminino', content: 'F', color: 'color-08' },
        { value: 'N', label: 'N/D', content: 'N', color: 'color-07' },
      ]
    },
    { property: 'banco', label: 'Banco' },
    { property: 'telefone', label: 'Telefone' },
    { property: 'celular', label: 'Celular' },
    { property: 'endereco', label: 'Endereço', },
    { property: 'bairro', label: 'Bairro' },
    { property: 'numero', label: 'Número' },
    { property: 'cep', label: 'CEP' },
    { property: 'cidade', label: 'Cidade' },
    { property: 'estado', label: 'UF' },
  ];

E abaixo, é como minha tabela está renderizada:
po-table

O a largura da coluna não se adapta do seu conteúdo, sei que tem a propriedade width na coluna. Que eu posso fixar uma largura. Mas existe algum jeito de fazer automático ?

Documentação do componente Input

Na documentação do componente Input existe a chave t-mask="string", mas não deveria ser p-maks?
Estava tentando utilizar t-mask e não estava colocando a mascara mudei para p-mask e consegui, é isso mesmo?
Não sei se é por aqui esse tipo de solicitação.

PoTableColumn - property - Ler um objeto JavaScript

Qual o comportamento atual?

Ao criar uma tabela(po-table) e ler um objeto JSON, gostaria de poder setar na coluna(objeto PoTableColumn) o valor que esta dentro de um objeto JavaScript, por exemplo:

Objeto:
{ client: { fantasyName: 'Nome fantasia' } }

Definição das colunas no componente.
columns: Array<PoTableColumn> = [ { property: 'client.fantasyName', label: 'Cliente' } ];

Que comportamento você esperava ver?

Exibir o valor do campo dentro do objeto. Atualmente eu precisei fazer um "forEach" e setar manualmente numa nova propriedade do objeto.

Ambiente

  • Portinari: 1.13
  • Angular: 8
  • Browser(s): Google Chrome
  • Operating System (e.g. Windows, macOS, Ubuntu): Linux

Sugestão Rich Text

Melhoria

Adicionar na barra de ferramentas uma opção de formato de texto.
Nesta opção, o usuário posiciona o cursor em uma linha, e informa se ela é um Titulo, subtitulo 1 2 3, paragrafo, citação e outros.

Caso de uso

Com essa melhoria teremos uma formatação de texto mais rica :)
Quando enviamos via javascript uma string já com essa formatação, o Rich Text aceita e formata muito bem isto. A melhoria iria divulgar isto.

PO-MULTISELECT

Boa tarde!

Portinari UI 1.5.0

O component po-multiselect está quebrando ao iniciar, pois o mesmo no primeiro clique não habilita a lupa para efetuar a pesquisa, assim ao selecionar alguns itens da lista o mesmo apresenta o seguinte erro no console do navegador:
_ERROR TypeError: Cannot read property 'setFocus' of undefined
at PoMultiselectDropdownComponent.clickItem (portinari-portinari-ui.js:16968)
at Object.eval [as handleEvent] (PoMultiselectDropdownComponent.html:18)
at handleEvent (core.js:43992)
at callWithDebugContext (core.js:45631)
at Object.debugHandleEvent [as handleEvent] (core.js:45246)
at dispatchEvent (core.js:29803)
at core.js:31836
at SafeSubscriber.schedulerFn [as _next] (core.js:35378)
at SafeSubscriber._tryOrUnsub (Subscriber.js:185)
at SafeSubscriber.next (Subscriber.js:124)

Após o segundo clique a lupa habilita e permite a busca dos itens, assim o mesmo deixa de apresentar o erro.

Por gentileza, poderiam verificar?

Alinhamento de botões

Preciso alinhar dois botões a direita da tela, porém não encontrei nada na documentação, alguém pode me ajudar?

Troca de cores

Saudações. prezados

Há a possibilidade de troca das cores do Framework?

PoDatepickerComponent erro com Reactive Forms

Quando tento utilizar o component PoDatepicker com reactive forms e passar um valor para ele (mesmo que sejam os informados na documentação do component), é exibida a seguinte mensagem no console do browser:

ERROR Error: There is no FormControl instance attached to form control element with name: 'dataInicio'
at _throwError (forms.js:2749)
at _noControlError (forms.js:2730)
at PoDatepickerComponent.onChangeModel (forms.js:2622)
at PoDatepickerComponent.callOnChange (portinari-portinari-ui.js:12562)
at PoDatepickerComponent.controlModel (portinari-portinari-ui.js:12545)
at PoDatepickerComponent.writeValue (portinari-portinari-ui.js:12959)
at setUpControl (forms.js:2578)
at forms.js:6451
at Array.forEach ()
at FormGroupDirective._updateDomValue (forms.js:6441)

A versão utilizada do portinari é 1.1.0

po-decimal com configurações diferente de valores

Estou criando uma tela onde tenho dois componentes do tipo "po-decimal", um é em reais e o outro em dólar. Meu projeto está todo configurado para utilizar com o LOCALE "pt-BR".

Como eu faço para definir que o campo com valores em outras moedas são de outro LOCALE ?

Ícones não são exibidos na linha da table

Reprodução

Utilize StackBlitz para reproduzir a sua issue: https://stackblitz.com/fork/portinariui

https://stackblitz.com/edit/portinariui-wahf1t

Passos para reproduzir:

  1. Inserir o componente po-table no template.
  2. Configurar alguma coluna da table para exibir ícones

Qual o comportamento atual?

O ícone não é exibido a menos que seja retirado a propriedade 'value' da configuração dos ícones, porém a propriedade é obrigatória e gera erro de compilação.

Que comportamento você esperava ver?

Exibir os ícones mesmo que fosse removido a propriedade 'icon' para utilizar o valor da propriedade 'value', porém nem mesmo assim o ícone é exibido.

Ambiente

  • Portinari: 1.18.0
  • Angular: 8.3.20
  • Browser(s): Chrome 78
  • Operating System (e.g. Windows, macOS, Ubuntu): Windows 10 v1903

Exposição de componentes de field

Os componentes field-container e field-container-bottom são privados, porém usados nos componentes de field. Isso acaba nos bloqueando de estender esses componentes porque não podemos usar essas tags em componentes customizados.

Minha sugestão seria expor os componentes citados para que possamos criar nossos próprios componentes a partir deles.

Uma sugestão um pouco mais ambiciosa (aproveitando o gancho) seria um CDK do Portinari, assim como temos o do Angular Material. Porém, isso é assunto pra uma segunda issue, rs.

Validação do TsLint

Galera estou rodando o tslint do portinari e esta acusando o seguinte erro:
Review this potentially hardcoded credential.
Verificando a linha o que tenho nela é isso:
passwordPlaceholder: 'Digite sua senha',
É do componente PoPageLoginLiterals.
Por que ocorre esse erro?

Seletor de idioma

Gostaria de sugerir uma opção para no template Page Login, podermos definir se o combo de seleção do idioma irá aparecer ou não, pois em alguns casos a aplicação poderá ser feita exclusivamente em um idioma apenas.

Table Row Template - Sugestão

Table Row Template - Sugestão de melhoria

Qual o comportamento atual?

Ao adicionar um Table Row Template é possível apresentar informações adicionais, clicando e abrindo o tanto que for necessário, e para fechar clicando nas que estão abertas.

Que comportamento você esperava ver?

Um sugestão de melhoria seria abrir apenas uma por vez, e ao clicar em outra linha, a que estivesse abertura seria fechada automaticamente.

Ambiente

  • Portinari: 1.15.0
  • Angular: Angular 8
  • Browser(s): Chrome
  • Operating System (Ubuntu):

Sugestão de Melhoria em POPageLogin

Adicionar EventEmmiter na Seleção de idioma do componente po-page-login, para externalizar o valor do idioma selecionado (pt-BR, en-US) ...

Redirecionar para pagina utilizando o componente po-page-login

Boa tarde! Estou utilizando o componente po-page-login mas não consigo direcionar para outra pagina após a validação de usuário e senha.
Meu componente esta assim
<po-page-login
[p-literals]="customLiterals"
[p-loading]="loading"
[p-password-errors]="passwordErrors"
[p-login-errors]="loginErrors"
(p-login-submit)="checkLogin($event)"

Como faço para direcionar?
Desculpa sei que é uma pergunta de iniciante, mas já tentei de tudo.

Att
Sergio Martinez

Filtro do Lookup

Pessoal,
estou analisando ainda o uso do filtro no componente lookup e a forma que está desenvolvido o componente, se levar em consideração que em um projeto cria-se um componente para gerar o formulário de forma dinâmica e através de metadados como o dynamic-form, ao tentar informar o filtro para o lookup utilizando um valor do model, não é possível fazer utilizando um valor vindo de um metadados.
Ex: se eu passar para o [p-filter-params] o valor "{estado:dados.CAMPO_DO_ESTADO}" de forma chumbada no template, o lookup vai buscar o valor do meu model toda vez que fazer a requisição, porém não é dessa forma que deveria funcionar, pois eu quero no meu metadados retornar as expressões de filtro que eu gostaria pois a geração do form é dinamica e para cada form eu posso ter diferentes lookups com parametros de filtros diferentes.
Dito isso acima eu gostaria de saber como é possível fazer isso, receber a expressão de uma string ou um object e passar para o lookup, pois estou tentando de todas as formas e só funciona quando é hardcoded. Será que a forma de passagem de filtros não deveria ser alterada para facilitar, podendo por exemplo chamar uma função para nela possa ser retornado um objeto contendo os parametros para filtro?

Erro ao gerar Build --prod

Bom dia

Quando gero a build com --prod está ocorrendo o erro abaixo.

O mesmo erro não acontece quando gero a build do dev.

ERROR in node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoCalendarComponent.html(45,11): Property 'displayMonthNumber' is protected and only accessible within class 'PoCalendarBaseComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoCalendarComponent.html(47,17): Property 'displayMonthNumber' is protected and only accessible within class 'PoCalendarBaseComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoCalendarComponent.html(70,11): Property 'currentYear' is protected and only accessible within class 'PoCalendarBaseComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoCalendarComponent.html(72,17): Property 'currentYear' is protected and only accessible within class 'PoCalendarBaseComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoCalendarComponent.html(71,11): Property 'displayMonthNumber' is protected and only accessible within class 'PoCalendarBaseComponent' and its subclasses.
(1,1): Directive PoChartComponent, Expected 0 arguments, but got 1.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.ɵcq.html(45,9): Property 'displayMonthNumber' is private and only accessible within class 'PoCalendarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.ɵcq.html(46,17): Property 'displayMonthNumber' is private and only accessible within class 'PoCalendarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.ɵcq.html(70,9): Property 'currentYear' is private and only accessible within class 'PoCalendarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.ɵcq.html(71,17): Property 'currentYear' is private and only accessible within class 'PoCalendarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.ɵcq.html(69,9): Property 'displayMonthNumber' is private and only accessible within class 'PoCalendarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoDatepickerRangeComponent.html(44,39): Expected 0 arguments, but got 1.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoRadioGroupComponent.html(17,9): Property 'readonly' does not exist on type 'PoRadioGroupComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(53,13): Property 'stopUpload' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(60,13): Property 'uploadFiles' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(39,17): Property 'getPoIcon' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(39,62): Property 'getFileSize' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(44,13): Property 'isStatusFile' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(44,13): Property 'isStatusFile' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(51,13): Property 'isStatusFile' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(58,13): Property 'isStatusFile' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(72,7): Property 'hasAnyFileUploading' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoUploadComponent.html(74,7): Property 'uploadFiles' is protected and only accessible within class 'PoUploadComponent' and its subclasses.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoPageEditComponent.html(15,9): Property 'parentContext' is private and only accessible within class 'PoPageEditComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoPageEditComponent.html(24,9): Property 'parentContext' is private and only accessible within class 'PoPageEditComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoPageEditComponent.html(33,9): Property 'parentContext' is private and only accessible within class 'PoPageEditComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoPageEditComponent.html(11,9): Property 'parentContext' is private and only accessible within class 'PoPageEditComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoPageEditComponent.html(19,9): Property 'parentContext' is private and only accessible within class 'PoPageEditComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoPageEditComponent.html(28,9): Property 'parentContext' is private and only accessible within class 'PoPageEditComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoPageListComponent.html(53,13): Property 'parentRef' is private and only accessible within class 'PoPageListComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.ɵfa.html(46,7): Property 'index' does not exist on type 'PoSlideItemComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoTableComponent.html(178,13): Property 'validateTableAction' is private and only accessible within class 'PoTableComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoToolbarComponent.html(16,7): Property 'userSrc' does not exist on type 'PoToolbarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoToolbarComponent.html(16,7): Property 'userName' does not exist on type 'PoToolbarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.PoToolbarComponent.html(17,7): Property 'userActions' does not exist on type 'PoToolbarComponent'.
node_modules/@portinari/portinari-ui/portinari-portinari-ui.d.ts.ɵef.html(8,5): Expected 2 arguments, but got 0.

Multiplos retornos no Lookup

Estou utilizando no meu projeto o componente Lookup através do componente Dynamic Form e percebi que no Lookup é possível retornar os valores apenas para um campo. Eu gostaria de sugerir uma alteração neste componente para que possa ser passado um array ou uma marcação nas columns para informar quais campos serão retornados porém não de forma concatenada como é atualmente e sim retornando cada valor para um campo.
Ex: Consulta padrão de cliente retornando o código no campo que chamou a consulta padrão e a loja no campo que estivesse na sequencia.
Isso deixaria o componente mais parecido com a funcionalidade da consulta padrão já existente no Protheus.

THF Kendo Chart

Boa tarde.

Gostaria de saber se no Portinari existe algum componente que faça o que o Kendo Chart faz no THF, o Chart é muito limitado e só tem a opção do tipo pizza.

Sugestão de nova fucionalidade ao PoTab

Seria muito legal e interessante, conectar o component PoTab a uma rota (router)
Por exemplo, o component PoTab teria uma propriedade url ou link de uma rota configurada.
Quando eu abrisse essa PoTab, o conteúdo da rota renderizaria dentro do PoTab

Por exemplo:

<po-tabs>
       <po-tab *ngFor="let tab of tabs" [p-title]="tab.title" [url]="tab.url">       
</po-tabs>

Adicionalmente, o tab poderia ter um botão de fechar a aba
Obs: Ao invés do *ngFor para adicionar tab ao PoTabs, também poderia ter uma propriedade tabs no PoTabs:
<po-tabs tabs="PoTabsInterface"></po-tabs>

Sugestão PoUpload

Atualmente o PoUpload ao enviar os arquivos, faz um post com content type multipart/form-data que é a forma padrão para envio de arquivos via http. Porém ao utilizar um backend rest e principalmente se for no protheus, não temos como manipular esta requisição. Gostaria de sugerir então que houvesse a opção do PoUpload para enviar os arquivos dentro de um json codificados com base64. Sei eu isso impacta no tamanho dos dados que serão transmitidos, porém facilitaria a vida de quem está utilizando uma api restful.

Binding da propriedade name - Dynamic Forms - Lookup

No componente Dynamic Form, quando adicionado um componente Lookup a propriedade name informada não é respeitada.

Verifiquei o arquivo po-dynamic-form-fields.component.html na linha 107, não está sendo feito o binding com a variável e sim atribuindo valor a propriedade name.
PS: há alguma documentação sobre como abrir uma PR?

Sugestão de melhoria: p-clean no PoCombo

Sugestão de melhoria

Adicionar a propriedade p-clean, que coloca o 'X' para limpar o campo, ao componente po-combo

Esta propriedade é encontrada em demais inputs, e seria bem útil no combo.

PO-TABLE colspan e rowspan

Bom dia!

Qual o comportamento atual?

PO-TABLE com colunas e linhas criando apenas uma célula na junção, não suportando colspan e rowspan.

Que comportamento você esperava ver?

mesclar linhas e colunas através do rowspan e colspan, para unir células conforme a necessidade.

Ambiente

  • Portinari: 1.12
  • Angular: 8.2.0
  • Browser(s): Google Chrome
  • Operating System (Ubuntu 18.04.3 LTS):

Agradeço desde já, obrigado!

Componente Po Grid

Reprodução

https://portinariui-jcqdn4.stackblitz.io/

Passos para reproduzir:

  1. Realizar o Double Click ou apertar a tecla enter na célula desejada.

Qual o comportamento atual?

Tentei reproduzir o componente e após a seleção do campo escolhido é apresentado o Erro 'nativeElement' no console, após isso decide verificar a documentação e está apresentando o mesmo erro conforme print abaixo:
image

Que comportamento você esperava ver?

Permitir a edição e confirmação da linha conforme documentação.

Ambiente

Portinari: 1.12
Angular: 8.2.0
Browser(s): Google Chrome
Operating System : Windows

Poderiam me instruir se a utilização do componente esta correta?

Incluir possibilidade de definir a duração de notificações

Permitir que as notificações do serviço PoNotificationService, possam ser definidas informando um tempo de duração definido pelo usuário, não utilizando o padrão de 10 segundos.
Permitir também ter uma forma de definição da duração padrão para todas as notificações.

#90

PoTable + ngTemplate com comportamento inesperado

Bom dia!

Talvez eu esteja montando algo errado, peço que confiram o código primeiramente. Mas o comportamento não é o esperado.

Reprodução no StackBlitz: https://portinariui-bryzgz.stackblitz.io
Código fonte no StackBlitz: https://stackblitz.com/edit/portinariui-bryzgz

Passos para reproduzir:

  1. Abra a última linha da tabela. Apenas o campo "Controla Compra" estará ativo.
  2. Abra a linha intermediária da tabela. Observe que, ao abri-lá, o valor "Controla Venda" da última linha recebe o valor da linha intermediária.
  3. Abra a primeira linha da tabela. Todos os demais valores assumem o que está definido na primeira linha.

Qual o comportamento atual?

o ngModel está recebendo o valor da última linha expandida, não respeitando o rowItem específico.

Que comportamento você esperava ver?

Ao expandir, os valores devem ser os específicos daquela linha da tabela.

Ambiente

  • Portinari: v1.14.0
  • Angular: 8.0.6
  • Browser(s): Chrome 77
  • Operating System (e.g. Windows, macOS, Ubuntu): Windows 10 Pro

Sugestão Rich Text Tabelas

Melhoria
Adicionar na barra de ferramentas uma opção de edição de tabelas.
Nesta opção, o usuário consegue incluir tabela, linhas ou colunas em tabelas existentes.

Caso de uso
Quando enviamos via javascript uma string já com uma tabela, o Rich Text aceita e formata muito bem isto. A melhoria iria divulgar isto.

Guia de estilo/css

Percebi que no portal do Portinari não existe uma parte de guia em relação aos estilos/css do Portinari, sendo que já encontrei diversas classes css presentes no projeto de style do Portinari, contendo por exemplo as cores utilizadas nos componentes, acho que seria legal ter esse guia ou uma lista de classes css para que possamos seguir o mesmo estilo já presente nos componentes.

PoPageAction propriedades não funcionam como esperado

O componente PoPageAction não respeita algumas propriedades, por exemplo:

label: 'Remover',
icon: 'po-icon-delete',
type: 'danger'

O botão em questão não fica em vermelho, tampouco aparece o ícone esperado.

Estas ações estão sendo utilizadas em uma < po-page-default >

StackBlitz: https://portinariui-skj7yn.stackblitz.io

  • Portinari: 1.12.0
  • Angular: 8.0.6
  • Browser(s): Chrome 77
  • Operating System (e.g. Windows, macOS, Ubuntu): Windows 10

propriedade visible das actions do component po-page-default

actions: PoTableAction[] = [
    { label: 'Avançar', action: () => { }, visible: false },

  ];

A propriedade visibledo PoTableAction para o component PoPageDefault não tem efeito no componente.
Olhando no repo do component, parece que não a definição do comportamento dessa propriedade.

Se o problema for alguma definição a mais da minha parte, por favor me avise.

Desde já obrigado.
Att.

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.