@ionic-enterprise/cs-demo-weather-widgets-react
TypeScript icon, indicating that this package has built-in type declarations

3.1.3 • Public • Published

Demo Weather Widgets - React

This is a sample custom element library that contains some simple weather related elements. This library contains the following custom elements:

  • Simple
    • csdemo-temperature - takes a temperature in Kelvin and displays the value in either Celsius or Fahrenheit
    • csdemo-uv-index - takes a UV Index value and displays the value with a description and color coding
    • csdemo-condition - given a mapping of condition types to image URLs and a condition code, determines which code to use and displays the image with a label
  • Compound
    • csdemo-daily-forecast - condition, date, low, high

Usage

npm i @ionic-enterprise/cs-demo-weather-widgets-react

Handling Icons

This library includes a set of images under node_modules/@ionic-enterprise/cs-demo-weather-widgets/dist/images. If you copy all of these images to public/assets/images they will be automatically loaded by the components that need them.

You are also free to use your own images, copy them to a different location, and/or name some of the images differently.

If you use a different location or name, you need to let the components know the proper paths or names through a mapping. For example:

  const icons = {
    sunny: 'alt-location/images/sunny.png',
    cloudy: 'alt-location/images/cloudy.png',
    lightRain: 'alt-location/images/light-rain.png',
    shower: 'alt-location/images/shower.png',
    sunnyThunderstorm: 'alt-location/images/sunny-tstorm.png',
    thunderstorm: 'alt-location/images/tstorm.png',
    fog: 'alt-location/images/fog.png',
    snow: 'alt-location/images/snow.png',
    unknown: 'alt-location/images/unknown.png',
  };

You can also use a partial mapping if only a couple of names have changed:

  const icons = {
    sunnyThunderstorm: 'assets/images/partial-tstorm.png',
    unknown: 'assets/images/dunno.png',
  };

The overrides can be specified on any component that has a iconPaths property:

    <CsdemoCondition condition="200" iconPaths={icons} />
    <CsdemoDailyForecast scale={scale} forecasts={dailyForecast} iconPaths={icons} />

CsdemoTemperature

Displays the temperature, supplied in Kelvin, in the specified scale (C or F).

import { useState } from 'react';
import { CsdemoTemperature } from '@ionic-enterprise/cs-demo-weather-widgets-react';

const SomePage: React.FC = () => {
  const [scale, setScale] = useState('F');

  return (
    <CsdemoTemperature
      scale={scale}
      temperature="297"
      onClick={() => setScale(scale === 'F' ? 'C' : 'F')}
    />
  );
};

CsdemoCondition

Displays the current condition in both text and icon form. The condition is one of the condition codes used by OpenWeatherMap.org.

import { CsdemoCondition } from '@ionic-enterprise/cs-demo-weather-widgets-react';

const SomePage: React.FC = () => {
  return (
    <CsdemoCondition condition="200" />
  );
};

CsdemoUvIndex

Displays the UV index along with a risk level, in a color appropriate for the level of risk.

import { CsdemoUvIndex } from '@ionic-enterprise/cs-demo-weather-widgets-react';

const SomePage: React.FC = () => {
  return (
    <CsdemoUvIndex uvIndex="2.5" />
  );
};

CsdemoDailyForecast

Displays the forecast for a given day.

import { useState } from 'react';
import { CsdemoDailyForecast } from '@ionic-enterprise/cs-demo-weather-widgets-react';

const SomePage: React.FC = () => {
  const [scale, setScale] = useState('F');
  const dailyForecast: Forecast = data;

  return (
    <CsdemoDailyForecast scale={scale} forecast={dailyForecast} />
  );
};

The forecast property is a forecast data object in the following format:

export interface Forecast {
  date: Date;
  condition: number;
  low: number;
  high: number;
}

The low and high temperatures are specified in Kelvin.

The condition is one of the condition codes used by OpenWeatherMap.org.

Conclusion

That is it. We also have a demo application you can check out if you would like to.

Happy Coding!!

/@ionic-enterprise/cs-demo-weather-widgets-react/

    Package Sidebar

    Install

    npm i @ionic-enterprise/cs-demo-weather-widgets-react

    Weekly Downloads

    0

    Version

    3.1.3

    License

    MIT

    Unpacked Size

    127 kB

    Total Files

    39

    Last publish

    Collaborators

    • alexgerardojacinto
    • trevorlambert
    • mattrein
    • mark-ionic
    • gregbilletdeaux
    • rjtwohey
    • steven0351-ionic
    • connersimmons
    • ion-conner
    • brykan
    • it_mike_s
    • eric-ionic
    • marlon-ionic
    • jameson.w.taylor
    • ionicjs
    • kensodemann
    • nhyatt
    • giodimiliaionic
    • larsmikkelsen
    • jcesarmobile
    • jthoms1
    • mhartington
    • cmapoole
    • dallasjames
    • devinshoemaker
    • jpender
    • dtarnawsky
    • itschaced