Giter Site home page Giter Site logo

sap / fundamental-ngx Goto Github PK

View Code? Open in Web Editor NEW
256.0 24.0 125.0 638.73 MB

Fundamental Library for Angular is SAP Design System Angular component library

Home Page: https://sap.github.io/fundamental-ngx

License: Apache License 2.0

HTML 20.40% TypeScript 77.41% JavaScript 0.22% Shell 0.01% SCSS 1.89% Handlebars 0.07% CSS 0.02%
angular angular-components open-source typescript sap-fundamentals fundamentals

fundamental-ngx's Introduction

Fundamental Library for Angular

REUSE status

Deploys by Netlify

Content

1. Description

The Fundamental Library for Angular is an SAP Design System Angular component library used to build modern product user experiences with the SAP look and feel.

This repository contains 2 libraries(npm packages),

  • @fundamental-ngx/core: The Fundamental-NGX core provides base angular implementation of Fundamental Library Styles to offer developers a rich set of components they can use when building angular applications. Fundamental-ngx core angular components provides the end developer with some degree of flexibility as most of the components allow finer customization directly on the HTML template level.

  • @fundamental-ngx/platform: The Fundamental-NGX platform is built on top of the core to both enhance existing functionality with additional features which are driven by application requirements and to provide higher abstraction for the components by hiding most of the internal implementation details which boosts productivity.

2. Requirements

To download and use Fundamental Library for Angular, you will first need to install the node package manager.

Fundamental Library for Angular is intended for use with Angular 15 or newer.

Prior knowledge of Angular is recommended, to use the fundamental-ngx library.

3. Known Issues

4. Support

If you encounter an issue, you can create a ticket.

Angular Versions Support: Our versions offer Angular support. More information can be found here.

  • Features and enhancements are developed to the latest version of fundamental-ngx.

  • Bugfixes can be downported to the latest ngx version, which is compiled with the second last Angular version.

5. Contributing

If you want to contribute, please check the CONTRIBUTING.md documentation for contribution guidelines. Please follow the Angular commit message guidelines.

Check out the NEW_COMPONENT.md guide on building a new component for the library and creating the necessary documentation for your new component.

Similar Projects

7. Similar Projects

Fundamental-react - React implementation of Fundamental Library Styles

Fundamental-vue - Vue implementation of Fundamental Library Styles

fundamental-ngx's People

Contributors

artolshansky avatar betrozov avatar deepaksap14 avatar dependabot-preview[bot] avatar dependabot[bot] avatar dimamarksman avatar dmitry-stepanenko avatar droshev avatar fkolar avatar fundamental-bot avatar g-cheishvili avatar genereg1 avatar innaatanasova avatar jkmarkowski avatar kavya-b avatar kevinokamoto avatar lokanathan-k avatar manu-kr avatar mattl75 avatar mikerodonnell89 avatar n1xus avatar nikvalor avatar platon-rov avatar rengare avatar salarenko avatar seamoo13 avatar shrvr avatar skudum avatar stefanoscalzo avatar valorkin 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

fundamental-ngx's Issues

Build and deploy for both the docs site and the fd-ngx library should be npm scripts

Is this a bug, enhancement, or feature request?

Enhancement

Briefly describe your proposal

Currently there is no clear documentation or single build step for building/deploying the documentation website or the build script. These should be npm scripts, and if named properly should be self-documenting for anyone with a decent understanding of npm/ng cli etc.

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.1-beta

Expose functions for setting selected tab by ID

Is this a bug, enhancement, or feature request?

Feature request

Briefly describe your proposal

Users should be able to set an ID on tabs in a tab list, and call a function setSelectedTab(tabId) to select it programmatically. We should also expose a (tabChange) event handler.

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.1-beta

Breadcrumb item text should not be @Input() but ng-content

Is this a bug, enhancement, or feature request?

Enhancement

Briefly describe your proposal

Breadcrumb text should be provided between tags, not as an @input() property.

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.1-beta

Restructure workspace to facilitate Angular Package Format and generate npm package

In order to consume this library we need to put in a build process that is capable to transpile the components into a distribution-ready npm package. This has been a challenge in the past, but since angular CLI 6 this is standardized. It is recommended to update the project to angular 6 first, and then restructure the project slightly and take advantage of the build processes of ng-packagr.

Documentation should also import the component library directly from the library source rather than depending on builds

Docs: add margins between components

Is this a bug, enhancement, or feature request?

enhancement

Briefly describe your proposal

Some of the components in the documentations are squished right next to each other. Add margins like they have on the Fundamental UI docs: https://sap.github.io/fundamental/components/button.html

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.1-beta

Breadcrumb links should be styled on component, not docs

Is this a bug, enhancement, or feature request?

Bug

Briefly describe your proposal

The breadcrumb links are styled on the docs rather than the components themselves, so someone using the library doesn't get properly styled breadcrumb links

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.2-beta

Schema enhancements

While we move to angular 6 (#12) we updated typescript along the way. This gives a lot of the following errors, since the Schema is not used correctly.

Types of property 'properties' are incompatible.

We haven't fixed this with the upgrade since, that needs to be done in this ticket. Instead we removed the Schema model and used any type.

Modal service should return modal ref

Is this a bug, enhancement, or feature request?

Enhancement

Briefly describe your proposal

Currently the fundamental-ngx modal service isn't returning ngb's modal ref. This is needed to handle the result of the modal

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.1-beta

Dropdown (blur) causes strange functionality

Briefly describe your proposal

Using (blur) to close the dropdown causes some undesirable effects. If the user clicks and holds one of the selectable options (rather than a quick click), the dropdown perceives this as a blur event and closes the dropdown, and the option the user clicks on does not register as a click.

Also, clicking the main button on an expanded dropdown should close it.

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.1-beta

Pagination component has a couple of flaws

Refactor:

  • align with standard angular component (naming conventions)
  • separate out the html and (s)css
  • move logic from component to service

Fix (happens in playground):

  • fix empty currentPage (throws error, could default to 1)
  • fix empty itemsPerPage (results in Infinity length).
  • fix empty totalItems (throws error)

Documentation:

  • reuse hard coded model in the
     tag
  • bind to the data.properties instead

Pagination calculation wrong

As provided by deno:

if i set totalItems to 10, itemsPerPage to 6, and currentPage to 1 - you can still see 3 available pages

Create guidelines for issues

Project maintainers can add an ISSUE_TEMPLATE.md file for issues to projects, helping contributors share the right details at the start of a thread. I think we should initially not make the template to strict, but as we move forward we might want to put additional rules in.

Examples can be seen at existing (larger) projects, i.e. https://github.com/angular/angular/issues/new or https://github.com/angular/material2/issues/new. Having a small template at least gives a good impression imho.

See https://help.github.com/articles/about-issue-and-pull-request-templates/ for more info.

Create contributor guidelines

To help project contributors do good work, we can add a file with contribution guidelines to your project repository's root, docs, or .github folder. Then, whenever someone opens a pull request or creates an issue, they will see a link to that file.

Since we need to maintain multiple github administration files I'd recommend to create a CONTRIBUTING.md file inside a .github folder.

See https://help.github.com/articles/setting-guidelines-for-repository-contributors/ for more info.

Provide release or changelog automatically

We need to maintain a changelog or detailed release notes in order to inform the community about changes in the project. Several open source projects do this automatically based on a third-party package (such as conventional-changelog) and commit conventions.

It is recommended to figure this out early in the project so that we can start putting requried commit conventions in place.

Breadcrumb links should be <a>, not <span>

Is this a bug, enhancement, or feature request?

Bug

Briefly describe your proposal

Breadcrumb links are not properly styled because they are spans when they should be links.

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.2-beta

Refactor components

I'd prefer to use external html and scss so that we have a cleaner code base.

I'd also perfer to stick to naming conventions so it's easier to find files in the workspace, i.e.:

  • alert.component.ts
  • alert.component.html
  • alert.component.scss

Using the Component postfix for components will also help to better separate out components and other entities, such as interfaces. If you like to create an interface for a component, you'd like to reserve the entity name (i.e. Pagination) for the interface, where as the component should have a more specific name (i.e. PaginationComponent).

Add e2e tests (to be ran manually while we wait for CI)

Is this a bug, enhancement, or feature request?

Enhancement

Briefly describe your proposal

The components are almost entirely untested now... we should have some e2e tests that we can run manually before merging pull requests. In the future we'll have CI that can handle the tests but for now, manual tests won't hurt

What versions of Angular and Fundamental NGX? (If this is a feature request, use current version)

Angular 6.0.0, fundamental-ngx 0.0.1-beta

Drag-and-Drop for tree/table

Rows and columns should be rearrangeable via drag and drop. When a row is moved, it should fire an event with the object and row index attached.

Wrong pagination calculation

Whenever the number of pages is just 1 more then the min number of pages to show (3), then we get:
1 2 3 ... 4

This is not right. It should be:

1 2 3 4

or 1 2 ... 4

When, with the same data, page 4 is selected, we end up with:
1 ... 2 3 4

When we 60 pages, and 10 items per page, we also frequently end up with 2 dots sections while, i.e.
1 ... 3 4 5 ... 6

Specify correct license in package.json

The license is not represented in the package.json. The license should be specified in package.json so that people know how they are permitted to use the software, and any restrictions we place on it.

The package.json provides a license key that can be used. That can either hold a license type (i.e. MIT) or a short description with a reference to a file at the root. See https://docs.npmjs.com/files/package.json for more info.

inline help - text goes beyond the visible area

On the Fundamental UI website, inline help hovers above their menus but in our app, it goes behind the menus. Check z-index etc. On the Fundamental website the text/inline help does not wrap if the help goes off screen/out of the browser window so I'm not sure there's anything we can do there

screen shot 2018-05-31 at 2 43 04 pm

alert

  • interactive labels
  • playground - dropdown text is cut

dropdown enhancements

  • add blur event (close)
  • use focus rather then click (so we can tab into it)
  • use aria-disabled instead of disabled
  • use escape to close dropdown

Button group component issues

  • the UI is broken if we mix the size of the buttons within one group so i guess the size could be part of the group. It will avoid repetition as well
  • can't we have only 1 directive for the buttons type and it can be set on the group level instead of the current repetition on each button?

table features - potential enhancements

Table/list potential features:
CORE
Prio 1

  • craft a stable API
  • support images in addition to text/links
  • sorting/filtering functionality
  • pagination (expose items per page field)
  • selection modes (no selection, single row selection, multiple rows selection)
  • show/hide columns
  • table toolbar buttons
  • one-click actions (including more menu)
  • load on scroll end
  • responsiveness

Prio 2

  • grouping rows
  • drag and drop
  • adjustable column width
  • infinite scrolling
  • export

Prio 3

  • edit mode
  • fix columns(left/right); fix rows(bottom/top); sticky headers
  • options for resizing table height
  • header columns options (wrapping description)

Platform:

  • personalization
  • meta-data driven columns (CRUD)

Code isn't highlighting properly in every example

Is this a bug, enhancement, or feature request?

Bug

Briefly describe your proposal

Some of the code snippets aren't highlighting properly, need to investigate why

If this is a bug, please provide steps for reproducing it

Identifier, inline help, input group, list, and usage pages are not displaying the snippets with proper highlighting

mega menu component issue

the menu should appear upon a click/hover and not open by default - similar like the 1 level menu and dropdown

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.