Skip to content

Releases: HelixDesignSystem/helix-ui

v0.4.2

27 Mar 15:05

Choose a tag to compare

Summary

This release was made possible by the following contributors:

You can view the updated documentation at https://rackerlabs.github.io/helix-ui/.

Fixed

In addition to the below corrections, the NPM assets were also corrected to include missing CSS. We're not sure what happened with those assets in the previous release, but we'll be keeping a close eye on them from now on.

  • Corrected greedy CSS selector for headers in the Stepper - BETA (#172)
  • Corrected vertical padding for Textareas (#171)
  • Corrected alignment of "X" icon in the Search component (#170)

Merged

  • #172 - fix(Stepper): correct CSS specificity for header
  • #171 - fix(TextInputs): correct textarea padding
  • #170 - fix(Search): correct "clear" icon alignment
  • #161 - test(Typography): add typography tests

v0.4.1

20 Mar 19:59

Choose a tag to compare

Summary

This release was made possible by the following contributors:

You can view the updated documentation at https://rackerlabs.github.io/helix-ui/.

Fixed

  • Updated Layouts to support single-page applications (SPAs) (BREAKING CHANGE - #162)
  • Corrected extra space appearing below headings that are the only child (#162)
  • Corrected CSS styling of "arrows" for Tooltips and Popovers (#162)
  • Corrected Button fonts (#162)
  • Correct double "X" on Windows (#162)
  • Correct null value reference with Tabs component (#158)

Added

Skip Links

Added support for "skip links" behavior for accessibility. (#162)

  • Add <a href="#content">Skip to main content</a> as the first child of <body>
...
<body>
  <a href="#content">Skip to main content</a>
  ...
</body>

HTML5 Resets

CSS resets have been added to support HTML5 elements in legacy browsers. (#162)

Breaking Changes

This release introduces breaking changes as a result of various changes to correct issues.

Changed Layouts

!!! BREAKING CHANGE !!!

The markup required to implement supported layouts has been changed slightly to support SPAs and provide better support for accessible user agents. (#162)

  • Wrap <div id="stage"> in a <div id="app">
    • mount your SPA on <div id="app">
    • use <div id="stage"> as the root element for your application template
  • Add role="main" to <main id="content"> to ensure maximum compatibility with accessible user agents.

before

...
<body>
  <header id="head">...</header>

  <div id="stage">
    <nav id="nav">...</nav>
    <main id="content">...</main>
    <aside class="hxSiderail">...</aside>
  </div>

  <footer id="foot">...</footer>

  ...
</body>

after

...
<body>
  <header id="head">...</header>

  <div id="app"><!-- Mount SPA here -->
    <div id="stage">
      <nav id="nav">...</nav>
      <main role="main" id="content">
        <!-- ^ Don't forget the "role" attribute! -->
      </main>
      <aside class="hxSiderail">...</aside>
    </div>
  </div>

  <footer id="foot">...</footer>

  ...
</body>

Changed Popovers

!!! BREAKING CHANGE !!!

Popovers have been updated to ensure that its contents will scroll if they get too long. This update requires a change in the markup to apply the fix. (#162)

before

<hx-popover>
  <header slot="header">
    <h3 class="hxHeading-4">Popover Heading</h3>
  </header>

  <p>I'm in the body.</p>

  <footer slot="footer">...</footer>
</hx-popover>

after

<hx-popover>
  <hx-popover-head>Popover Heading</hx-popover-head>

  <hx-popover-body>
    <p>I'm in the body.</p>
  </hx-popover-body>

  <hx-popover-foot>...</hx-popover-foot>
</hx-popover>

Merged

  • #162 - fix(*): Fix lots of bugs
  • #159 - fix(Search): remove built-in X in IE and Edge
  • #158 - fix(tabset): move querySelector from constructor to connectedCallback

v0.4.0

14 Mar 19:17

Choose a tag to compare

Summary

This release was made possible by the following contributors:

You can view the updated documentation at https://rackerlabs.github.io/helix-ui/.

Client-Side Framework Compatibility

In the near future, we'll be making updates to existing components to ensure maximum compatibility with client-side libraries. Configuration of custom elements can already be accomplished either via HTML attributes or JavaScript properties (outside-in). In order for custom elements to communicate their own internal state change, they will make use of DOM Events (inside-out).

Simply put...

  • Attributes/Properties IN
  • Events OUT

communicating with custom elements

Note: Each library will have its own technique to listen for events. Below are some examples of how you might communicate with the updated <hx-checkbox> custom element in some of the popular client-side libraries.

If you are aware of better methods, please let us know so we can help others integrate HelixUI with their own applications.

Angular 1.x

<hx-checkbox my-ng-checkbox ng-model="isChecked"></hx-checkbox>
  • Create a custom directive (e.g., my-ng-checkbox) that works in tandem with the ng-model directive in order to listen for the change event and update the model value.

React 15+

<hx-checkbox ref={ el => this._element = el }></hx-checkbox>
  • Add a change event listener to this._element in order to keep state in sync with your React application.

VueJS 2.x

<hx-checkbox :checked="isChecked" @change="onChange"></hx-checkbox>
  • Create a change event listener (e.g., onChange) to keep state in sync with your Vue application.

Updated Checkboxes

Components > Checkboxes

Checkboxes were updated to provide better compatibility with client-side libraries.

  • Listen for the change event to keep state in sync with your application.

Added Accordions

Components > Accordions

screen shot 2018-03-13 at 6 18 38 pm

Added Busy Component

Components > Busy

busy-demo

NOTE: IE11 is known to have rendering bugs that are outside of our ability to correct. Under certain conditions, the component may be rendered with a squigglevision-like appearance.

busy-ie11-squigglevision
Busy in a button on IE11 - transform calculations result in squigglevision-like rendering.

Added Choice Tiles

Components > Choice Tiles

Choice Tiles are a stylized variation of a Radio group. In combination with the Grid system, you can build a grid of choices for user selection.

choicetile-grid-demo
Example Choice Tile Grid - Note that keyboard functionality still works.

Added Search Component

Components > Search

The Search component provides consistent interaction and appearance for a search input.

  • Listen for the input and change events to keep state in sync with your application.

searchcomponent-clipped

Merged

  • #152 - feat(busy): add Busy component
  • #151 - feat(choiceTiles): add Choice Tiles component
  • #147 - feat(accordion): add Accordion component
  • #146 - feat(search): add Search Box component
  • #141 - refactor(checkbox): compatibility update

v0.3.0

28 Feb 22:54

Choose a tag to compare

Summary

This release was made possible by the following contributors:

You can view the updated documentation at https://rackerlabs.github.io/helix-ui/.

Fixed

  • Corrected inverted aria-expanded value on <hx-menu> (#135)
  • Corrected [disabled] behavior for <hx-disclosure> (#131)
  • Corrected CSS bug in the layout that was allowing long, unbreakable content to force the stage to be wider than the viewport. (#131)
  • Corrected external element lookup for several custom elements to support composition within more complex components (#142)
    • document.lookupFn() --> this.getRootNode().lookupFn()

Deprecated

Several CSS styles have been marked as deprecated for removal in the v1.0.0 release of HelixUI.

  • BEM-style CSS classes (#131)
  • non-"hx"-prefixed classes (#131)
  • CSS classes used to apply default styling (#136, #131)

Please use the reference table below to update your markup.

Old Selector New Selector Notes
.hxBtn--lg .hxBtn.hxLg n/a
.hxBtn--link .hxBtn.hxLink n/a
.hxBtn--primary .hxBtn.hxPrimary n/a
.hxBtn--sm .hxBtn.hxSm n/a
.hxBtnGroup > .hxPrimary .hxBtnGroup.hxPrimary n/a
.hxPageTitle h1 or .hxHeading-1 <h1> should work for most cases
.hxSectionTitle h2 or .hxHeading-2 <h2> should work for most cases
.hxSubSectionTitle h3 or .hxHeading-3 <h3> should work for most cases
.hxContainerTitle h4 or .hxHeading-4 <h4> should work for most cases
.hxLabel h5 or .hxHeading-5 <h5> should work for most cases
.hxTable tbody tr.selected .hxTable tbody tr.hxSelected n/a
.hxTable--bordered .hxTable.hxBound n/a
.hxTable__control-col th.hxControl, td.hxControl n/a
.hxTable--hover .hxTable.hxHoverable n/a
.text-center .hxCenter n/a
.text-justify no replacement n/a
.text-left .hxLeft n/a
.text-nowrap .hxNoWrap n/a
.text-right .hxRight n/a
hx-disclosure > .menu-icon hx-disclosure > hx-icon.hxPrimary indicates which icons get flipped on toggle
hx-menu.hxBox-sm hx-menu no need for extra CSS classes to apply default styles
hx-menuitem.hxBtn.hxBtn--link hx-menuitem no need for extra CSS classes to apply default styles

Updated

In addition to components listed below, the documentation itself was updated to provide better cross-linking, more consistent styling, and more robust demos. (#131)

Buttons

Components > Buttons

Four new modifier CSS classes are available to change the appearance of your buttons. These classes are meant to replace the old BEM-style classes in order to provide standardization around modification of button styles. (#131)

  • Variants: .hxPrimary, .hxLink
  • Sizing: .hxLg, .hxSm

Button Groups

Components > Buttons

Button groups were previously undocumented (it was technically documented with split Menu), so we've added official documentation for button group implementation. (#131)

Button group styling has been made more robust and simpler to implement. Because button groups are usually the same button style, it makes sense to apply that style once across all buttons. The same modifiers added for Buttons can also be used on Button Groups. (#131)

Before

<div class="hxBtnGroup">
  <button class="hxBtn hxBtn--primary">Button 1</button>
  <button class="hxBtn hxBtn--primary">Button 2</button>
  <button class="hxBtn hxBtn--primary">Button 3</button>
</div>

After

<div class="hxBtnGroup hxPrimary">
  <button class="hxBtn">Button 1</button>
  <button class="hxBtn">Button 2</button>
  <button class="hxBtn">Button 3</button>
</div>

Menus

Components > Menus

The Menu component has been updated to provide better accessibility for users with screen readers.

  • role="menu" automatically applied to <hx-menu> (#135)
  • role="menuitem" automatically applied to <hx-menuitem> (#135)

Cog Menu

Components > Menus > Cog Menu

Cog menu styles have been added. You can apply the styles by adding the .hxCog class in addition to .hxBtn. (#138)

Popovers

Components > Popovers

  • Corrected CSS inheritance issue pertaining to ShadowDOM markup. (#139)

Typography

Components > Typography

Heading styles have been simplified. The old CSS classes are no longer needed to apply default heading styles. Semantic HTML heading tags (h1-h6) should handle most use cases, but the CSS classes listed below have been added if you need to override default heading styles. (#136)

  • .hxHeading-1
  • .hxHeading-2
  • .hxHeading-3
  • .hxHeading-4
  • .hxHeading-5

Merged

  • #142 - fix(getRootNode): correct root node element lookup
  • #139 - fix(popover): correct ShadowDOM CSS
  • #138 - feat(button): Cog Menu
  • #136 - feat(typography): Modify Heading styles
  • #135 - fix(menus): correct ARIA attributes
  • #132 - Tabs tests
  • #131 - fix(papercuts): update lots of small annoyances and bugs

v0.2.1

14 Feb 19:26

Choose a tag to compare

Summary

This release was made possible by the following contributors:

You can view the updated documentation at https://rackerlabs.github.io/helix-ui/.

New Modal Component

Components > Modals

screen shot 2018-02-14 at 12 48 08 pm

Updated Icons

Components > Icons

Before After
n/a screen shot 2018-02-01 at 2 24 46 pm
n/a screen shot 2018-02-14 at 12 39 38 pm
n/a screen shot 2018-02-14 at 12 39 33 pm
n/a screen shot 2018-02-14 at 12 39 29 pm
n/a screen shot 2018-02-14 at 12 39 24 pm
screen shot 2018-02-01 at 2 23 50 pm screen shot 2018-02-01 at 2 24 56 pm
screen shot 2018-02-01 at 2 23 42 pm screen shot 2018-02-01 at 2 25 02 pm
screen shot 2018-02-01 at 2 24 20 pm screen shot 2018-02-01 at 2 24 37 pm
screen shot 2018-02-01 at 2 24 04 pm screen shot 2018-02-01 at 2 25 07 pm

Merged

  • #133 - feat(icons): 4 new angle-* icons
  • #128 - feat(icons): latest icons
  • #110 - feat(modal): add modal component

v0.2.0

31 Jan 22:32

Choose a tag to compare

(re)Launching on NPM

HelixUI v0.2.0 is our first NPM release! (it can also be considered a "relaunch")

This release was made possible by the following contributors:

You can view the updated documentation at https://rackerlabs.github.io/helix-ui/.

What happened to v0.1.x?: Due to some technical difficulties, we had to jump to v0.2.0. So, consider the legacy CDN assets to be v0.1.x.

Breaking Changes

Installing

Developers have been asking for stability with regards to the distributed assets. To make this happen, we've opted to publish HelixUI via NPM (helix-ui) using semantic versioning.

You can install helix-ui in your application via the following command:

$ npm install --save-dev helix-ui

Polyfills

To ensure consumers have the latest updates to the webcomponents polyfills (ensuring maximum browser compatibility), HelixUI has included @webcomponents/webcomponentsjs as a production dependency.

This means, that you'll no longer point to CDN assets for webcomponents-loader.js or custom-elements-es5-adapter.js. Instead, you'll point to assets within the node_modules directory and bundle them with your application.

Grid

Components > Grid

  • Separated container classes from modifiers
    • container: .hxCol
    • modifier: .hxSpan-*, .hxOffset-*, .hxOrder-*
  • Modifier classes were renamed to include responsive suffix to the end of the class name rather than the middle.
    • .hxCol[-{size}]-{N} is now .hxSpan-{N}[-{size]}
    • .hxOffset[-{size}]-{N} is now .hxOffset-{N}[-{size}]
    • .hxOrder[-{size}]-{N} is now .hxOrder-{N}[-{size}]
  • .hxCol no longer applies a columnar flexbox layout
    • This was causing inconsistent side effects in browsers with regards to margin collapsing.
    • It wasn't needed anyway.

Reveal

Components > Reveals

<hx-reveal> no longer applies click-to-expand functionality by itself. To conform to WAI-ARIA best practices, the <hx-disclosure> custom element was added to provide external toggling of an <hx-reveal>.

Old Reveal Implementation

<hx-reveal>
  <header slot="summary">
    Click me to toggle reveal!
  </header>
  <p>You can't see me</p>
</hx-reveal>

New Reveal Implementation

<hx-disclosure aria-controls="my-reveal">
  Click me to toggle reveal!
</hx-disclosure>
<hx-reveal id="my-reveal">
  <p>You can't see me</p>
</hx-reveal>

Status Pill

Components > Status Pills

Leading hyphens were removed from CSS modifier classes. This is a step to normalize helper class names across the toolkit.

OLD NEW
.-hxEmphasisGray .hxEmphasisGray
.-hxEmphasisPurple . hxEmphasisPurple
.-hxFill .hxFill

Deprecated

CDN Assets

  • HelixUI CDN assets are considered deprecated and will not receive further updates.
  • CDN assets will be removed upon the release of HelixUI v1.0.0.
    • There is currently no ETA for the release of v1.0.0.

Fixed

  • Corrected several small CSS rendering issues.

Added

Helper Classes

  • .hxForceWordBreak: forces content to break when it would otherwise overflow
  • .hxGutterless: (only applies to .hxRow) removes columns from a grid row
  • .hxBox-{size}: applies predefined padding to a container

Boilerplate Layouts

Components > Layouts

This highly anticipated feature provides official application boilerplate layouts that developers can copy and configure to their individual needs.

Two layouts are currently, supported:

Vertical Application Layout

A vertical layout allows application content to grow vertically along the Y-axis, pushing the footer downward.

vertical-layout

Horizontal Application Layout

A horizontal layout provides application content to grow horizontally, along the X-axis, keeping the footer visible at all times.

horizontal-layout

Menu Component

Components > Menus

Menus provide markup to display a list of actions for a user to select.

Basic Advanced Split
screen shot 2018-01-22 at 3 28 06 pm screen shot 2018-01-22 at 3 28 12 pm screen shot 2018-01-22 at 3 28 20 pm

Popover Component

Components > Popovers

screen shot 2018-01-22 at 3 29 32 pm

Tooltip Component

Components > Tooltips

screen shot 2018-01-22 at 3 30 07 pm
screen shot 2018-01-22 at 3 30 01 pm

List Component

Components > Lists

Description lists (a.k.a. "Metadata" or "Key/Value" lists) provide a way to display terms and descriptions in a consistent manner.

Horizontal Vertical
screen shot 2018-01-22 at 3 31 19 pm screen shot 2018-01-22 at 3 31 41 pm

Panel Component

Components > Panels

Panels provide utility for sectioning content vertically into a head, body, and foot.

demo-panels

Updated

Documentation

You might have noticed that the documentation has received a bit of an update. In addition to providing needed information, this update should help differentiate Custom Elements from Components and enable better consistency across the documentation.

Tabs Component

Components > Tabs

  • Now conform to WAI-ARIA best practices in order to provide better support for accessibility (a11y)
  • Automatically scrolls panel content in situations where a tabset's parent container has a height constraint

demo-tabs-scrolling

Merged

  • #126 - docs(IA): eliminate Styleguide category
  • #125 - fix(package): tweak scripts
  • #124 - refactor(dev): refactor pipeline, fix linting, etc.
  • #123 - docs(components): add missing demos
  • #121 - feat(icons): add/update icons
  • #120 - docs(homepage): add content to homepage
  • #119 - refactor(docs): reorganize docs
  • #118 - refactor(docs): update content
  • #117 - fix(visreg): Ask for github username, not sso
  • #116 - feat(layouts): add boilerplate layouts
  • #115 - update(tabs): surf-712-accessibility tabs
  • #114 - docs(fix): add Menus back to navigation
  • #113 - Put travis-ci back
  • #111 - fix(polyfill): fix race condition
  • #109 - update(reveal): modify Reveal implementation
  • #108 - docs(compat): component compatibility table (WIP)
  • #107 - docs(IA): modify information architecture
  • #106 - refactor(source): Large refactor of source code
  • #105 - feat(menu): add Menu component
  • #104 - refactor(position): additional positioning
  • #103 - feat(definition list): Build Key Value Lists
  • #102 - feat(position): add position lib
  • #100 - fix(eslint): modify eslint config to catch missing stuff
  • #98 - feat(components): add Panel and Box
  • #97 - feat(disclosure): add Disclosure component
  • #96 - feat(popover): add popover component
  • #95 - feat(tooltip): add tooltip component
  • #94 - update(package): update metadata and add license
  • #93 - fix(server): Avoid mass file change events
  • #92 - update(grid): modify Grid
  • #91 - fix(checkbox): reserve geometry as it upgrades

v0.1.14

14 Mar 17:00
4359b41

Choose a tag to compare

Released: 2017-11-21

Added

  • Status label component

Merged

  • #87 - feat(status): add Status Label

v0.1.13

14 Mar 16:59
1e94992

Choose a tag to compare

Released: 2017-11-17

Fixed

  • Fixed an issue with inherited CSS properties in the composed element tree.
    • CSS inheritance is based on the composed tree, not the written tree (meaning that styles in ShadowDOM can be inherited in the LightDOM).

Merged

  • #88 - fix(CSS): correct style inheritance with <slot>

v0.1.12

14 Mar 16:59
4c5d819

Choose a tag to compare

Released: 2017-11-15

Removed

Helix Bootstrap Theme

The bootstrap theme is no longer being maintained. We've done one final compilation of the CSS file and migrated it to the CDN. As such, the core HelixUI styles no longer depend on base Bootstrap CSS.

Normalize.css

HelixUI's dependency on normalize.css was found to be largely unnecessary and removed as a result.

Added

  • Text Input styles

Fixed

  • corrected pre-upgrade styling of <hx-icon>

Merged

  • #86 - test(misc): misc test fixes
  • #85 - update(inputs): update Text Input styles to CSS classes
  • #84 - chore(linting): add automatic JS linting
  • #82 - test(regression): Add auto-generated "data-visreg" tests
  • #81 - remove(bs): remove Bootstrap dependency
  • #80 - fix(icon): correct CSS geometry before element upgrade
  • #78 - remove(bs.helix): move bootstrap theme to CDN
  • #77 - remove(normalize.css): removing unneeded source file
  • #76 - feat(input): add Text Input styles

v0.1.11

14 Mar 16:59
d46863a

Choose a tag to compare

Released: 2017-11-08

Added

  • Tabs component

Removed

  • fanatiguy icon removed
  • Badge component docs
  • Blockquote component docs
  • Dropdown component docs
  • Form component docs
  • List component docs
  • Modal component docs
  • Pagination component docs
  • Progress Bar component docs

Merged

  • #75 - test(*): More functional and visreg tests
  • #71 - feat(tabs): add Tabs
  • #74 - remove(*): remove unnecessary items