/terra-framework

Terra framework houses composed and higher order react components to help developers quickly build out new applications.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Terra Framework

Cerner OSS License Build Status devDependencies status lerna

Packages

Versioning

When a component reaches v1.0.0., it is considered to be stable and will follow SemVer for versioning.

  1. MAJOR versions represent breaking changes
  2. MINOR versions represent added functionality in a backwards-compatible manner
  3. PATCH versions represent backwards-compatible bug fixes

Consult the component CHANGELOGs, related issues, and PRs for more information.

We view the React.js props API of our components as our main public API. We use this to guide us when versioning components.

Prior to components reaching v1.0.0, a component is considered to be in a beta stage. Components in beta stage may include breaking changes, new features, and bug fixes all within v0.x.x releases.

Status

Stable Beta Deprecated

Terra Package Version Status Dependencies
terra-abstract-modal NPM version Stable terra-abstract-modal
terra-aggregator NPM version Stable terra-aggregator
terra-application-header-layout NPM version Stable terra-application-header-layout
terra-application-layout NPM version Stable terra-application-layout
terra-application-links NPM version Stable terra-application-links
terra-application-menu-layout NPM version Stable terra-application-menu-layout
terra-application-name NPM version Stable terra-application-name
terra-application-navigation NPM version Stable terra-application-navigation
terra-application-utility NPM version Stable terra-application-utility
terra-brand-footer NPM version Stable terra-brand-footer
terra-collapsible-menu-view NPM version Stable terra-collapsible-menu-view
terra-date-picker NPM version Stable terra-date-picker
terra-date-time-picker NPM version Stable terra-date-time-picker
terra-dialog-modal NPM version Deprecated terra-dialog-modal
terra-disclosure-manager NPM version Stable terra-disclosure-manager
terra-embedded-content-consumer NPM version Stable terra-embedded-content-consumer
terra-form-validation NPM version Stable terra-form-validation
terra-hookshot NPM version Stable terra-hookshot
terra-infinite-list NPM version Deprecated terra-infinite-list
terra-layout NPM version Stable terra-layout
terra-menu NPM version Stable terra-menu
terra-modal-manager NPM version Stable terra-modal-manager
terra-navigation-layout NPM version Stable terra-navigation-layout
terra-navigation-prompt NPM version Stable terra-navigation-prompt
terra-navigation-side-menu NPM version Stable terra-navigation-side-menu
terra-notification-dialog NPM version Stable terra-notification-dialog
terra-popup NPM version Stable terra-popup
terra-slide-group NPM version Stable terra-slide-group
terra-slide-panel NPM version Stable terra-slide-panel
terra-slide-panel-manager NPM version Stable terra-slide-panel-manager
terra-tabs NPM version Stable terra-tabs
terra-theme-provider NPM version Stable terra-theme-provider
terra-time-input NPM version Stable terra-time-input

Deprecated

Terra Package Version Status
terra-app-delegate NPM version Deprecated

Supported Browsers

Browser Version
Chrome & Chrome for Android Current
Edge Current
Firefox Current
Internet Explorer 10 & 11
Safari & Mobile Safari Current

Internationalization (I18n)

Please review Terra's Internationalization documentation for more information. Included are directions on consumption and how internationalization is setup.

Packages Requiring I18n

Contributing

Please read through our contributing guidelines. Included are directions for issue reporting and pull requests.

Local Development

  1. Install docker https://www.docker.com/ to run browser tests.
  2. Install dependencies and run tests.
npm install
npm run test

Local Development using Docker (Dev Containers)

  1. Install Rancher or Docker.
    • Rancher is free and open-source and is highly recommended whereas Docker may require a license for use.
  2. Install Microsoft VS Code.
  3. Install the Dev Container extension.
    • Navigate to View -> Extension -> Search for and install Dev Containers (or "ms-vscode-remote.remote-containers")
    • More information on Dev Containers
  4. Build the dev container:
    • (Option 1) - Opening local workspace in dev container
      • Clone the repository (or fork) locally and open the project in Visual Studio Code
      • Navigate to View -> Command Palette and run Dev Containers: Open Workspace in Container
    • (Option 2) - Recommended for Windows for hot-reloading to work during development and improved performance: Creating the dev container using dev volumes (for more information and guidance, see the Official Guide)
      • If you have git setup and have global config file ~/.gitconfig locally, these settings should automatically be transferred to the dev container
      • Navigate to View -> Command Palette and run Dev Containers: Clone Repository in Container Volume
      • Paste the GitHub URL of this repository (or fork)
      • VS Code will now reload the workspace and create/start the dev container and volume
      • Please note: changes made using this option will only update files in the Docker volume. It is recommended to commit changes often in case the volume is deleted or dev container gets removed.
  5. You're now running in a dev container. Use the terminal of the dev container in Visual Studio Code to issue any npm or bash commands.
  6. Before running any WDIO tests, make sure to perform the following steps:
    • Open a new terminal (outside the dev container) and navigate to ".devcontainer/" path in your repository.
    • Execute the command "docker compose -f docker-compose-wdio.yml up". Selenium hub should spin up. Leave this running in the background. If you see errors saying "container name already exists", run "docker container prune" command followed by pressing "y" to clear up any unused containers and try running the previous command again.
    • You can now run npm run test:docker or npm run wdio:docker commands to run WDIO tests from inside the Dev Container.
    • NOTE: Optionally, if you want to run other WDIO commands in the dev container, you can also edit the root package.json file WDIO scripts to include --disable-selenium-service=true flag. This will disable the selenium service from spinning up again. For example:
      "scripts": {
       "wdio:fusion": "terra wdio --disable-selenium-service=true --themes orion-fusion-theme",
       }
    • If any of the compose files were to be changed, you must refresh the docker container by deleting the corresponding existing docker images, then running the following command:
        docker compose -f <changed compose file name>.yml up
  7. To terminate a dev container:
    • Use command line or Rancher/Docker Desktop OR
    • Using Visual Studio Code
      • Select the Remote Explorer icon in the Activity Bar or View -> Command Palette and run Remote Explorer: Focus on Containers View
      • Locate the terra-framework_devcontainer or currently running dev container under "Dev Containers"
      • Right click and select Stop Container and close the workspace
        • You can also select Rebuild Container to restart the dev container
  8. To reopen a dev container:
    • Existing local workspace (for Option 1)
      • Open the project in Visual Studio Code
      • Ensure the workspace contains the .devcontainer folder
      • Navigate to View -> Command Palette and run Dev Containers: Open Workspace in Container
    • Isolated dev container volume (for Option 2)
      • Open Visual Studio Code
      • Use the Remote Explorer icon in the Activity Bar or View -> Command Palette and run Remote Explorer: Focus on Containers View to view containers
      • Locate the terra-framework_devcontainer under "Dev Containers"
      • Hover over the dev container and click the Folder icon labelled Open Folder in Container or by right clicking and selecting Open Folder in Container

LICENSE

Copyright 2017 - 2024 Cerner Innovation, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.