@rocketsoftware/carbon-components-angular v0.7.0
Getting started
Assuming we're starting with a new @angular/cli project:
$ npx @angular/cli new my-project --style=scss
$ cd my-project
$ npm i --save @rocketsoftware/carbon-components-angular @rocketsoftware/carbon-componentsThen we need to include carbon-components in src/styles.scss:
@import "~@rocketsoftware/carbon-components/scss/globals/scss/styles.scss";Note: For offline usage we'll need to set
$font-path: '~@rocketsoftware/carbon-components/src/globals/fonts';at the very top of oursrc/styles.scss. This will copy the fonts to ourdistfolder upon successful build. If you like the fonts to be a part of yourassetsfolder and not pollute thedistfolder then copy the fonts fromnode_modules/@rocketsoftware/carbon-components/src/globals/fontsinto our app'ssrc/assets/fontsfolder and add$font-path: '/assets/fonts/';at the very top of oursrc/styles.scss.
That's it! Now we can run npm start and start building out our application!
Note: This isn't the only way to bootstrap a
@rocketsoftware/carbon-components-angularapplication, but the combination of@angular/cliand the@rocketsoftware/carbon-componentsscss is our recommended setup.
Contributing
Quickstart
- fork IBM/carbon-components-angular and clone it locally
- run
npm installto grab all the dependencies, thennpm run storybookto start storybook - if you are adding a component:
- add a folder with your component code, styles, tests and story under
src - export your module from
index.ts
- add a folder with your component code, styles, tests and story under
- if you are contributing a fix:
- add your fix, update the documentation as needed
- consider adding or modifying a test case to cover the fix
- follow the Angular style guide
- be sure to run
npm testandnpm run lintto make sure the tests and linter pass - submit a PR
Pull request guidelines
- Keep changes small and focused.
- If you create a pull request and then realize it is not ready to be merged, prepend "WIP: " (For example, WIP: Fixed text overflow in accordion headers.) and assign a WIP label.
- Include a description of changes
- attach a screenshot (or a gif!) for design reference if needed
- reference the related issue - "closes #123" or "fixes #123" will close issue #123 once the PR is merged - "issue #123" just references the issue. Only use this if you definitely need the issue to remain open.
- @mention any specific other developers that need to be aware of the changes
- add the "needs review" label along with any other relevant labels
- link to code review checklist goes here
Issues submission guidelines
- One issue per defect - do not open an issue that spans multiple defects
- provide a descriptive title that mentions the component and version the issue covers
- provide
- version(s) affected
- a description of the issue
- steps taken to produce the issue
- expected behaviour
- current behaviour
- screenshots if needed
- relevant code snippets
- links to application source code or running demo (Codesandbox is awesome for this!) (including connection/authentication information)
- add relevant labels (bug, accessibility, design, discussion, feature, etc)
- if you have a fix to contribute, assign yourself, otherwise leave unassigned
npm commands
To keep our build dependencies local we use npm scripts to run our webpack, gulp, and general build tasks. You should never install webpack or gulp globally as that will likely conflict with our version. You should never need to modify the build process to add a component or story.
npm run storybookto run storybook (port 6006)npm run buildto generate the distdocs:buildto build documentationdocs:serverto build and run the documentation servernpm run lintto run tslintnpm testto run tests
Resources
- Style guide (WIP)
- General component API guidelines (WIP)
- Angular style guide
- I18N tooling - I18N guide - ngx-translate
- (Angular 2+ doesn't have anything like ngAria, instead here's The A11Y Project, WAI-ARIA specs, and WAI-ARIA Authoring Practices)
- TypeScript docs
Philosophy
- Components should be the smallest unit of computation
- Think in terms of pages and applications composed from a multitude of components rather than pages or applications as a single unit of computation
- Components should delegate to the consumer whenever possible
- The individual applications should be the single source of truth, and be able to create any UI from our building blocks
- Components should do one thing, and do it well
- This does not mean they should be over specialized, but rather focus on providing a single, core experience
- Components should NOT maintain more state than absolutely necessary
- Likewise, stateless components should be favored whenever possible
- Components should NOT necessarily implement the style guide point-for-point, the guide simply provides guidance on overarching functionality, components should enable that and product specific designs without baking in extra functionality
Code of Conduct
Read our code of conduct here