All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
💡 All changes in Deprecated will be removed on next major version
for new features.
for changes in existing functionality.
for soon-to-be removed features.
for now removed features.
for any bug fixes.
in case of vulnerabilities.
⚠ This version contains breaking changes in following packages :
- wcs-core
- wcs-angular
- wcs-react
To migrate, please refer to the storybook documentation (v5 to v6).
- accessibility: 💡 All components now inherit aria-attributes into their shadow DOM and exposes a
setAriaAttribute
method. See new documentation "Accessibility" on Storybook for more info. - select: add server-mode for select autocomplete (read documentation)
- select-option: add a documentation about handling large text in options
- grid:
- add support for row styling with css parts
- introduce new css variables for customization
- radio-group: add onTouched support for Angular
- radio:
- add style for checked AND disabled radios
- emit wcsFocus and wcsBlur events
- nav-item: add a visual indicator for the current active item
- breadcrumb: add new breadcrumb and breadcrumb-item components
- doc: add version switch for WCS archives in Storybook toolbar
- radio: properties
name
andmode
and no longer needed and should only be placed onwcs-radio-group
from now on - editable-field: rename
errorhandler
toerrorHandler
- select: rename
SelectFilerChangeEventDetail
toSelectFilterChangeEventDetail
- nav-item: anchor elements are now slotted. See v5 → v6 migration for more info.
- radio: remove
checked
property. See v5 → v6 migration for more info. - nav-item: remove
href
andtext
properties. See v5 → v6 migration for more info. - input:
- remove previously deprecated
setFocus
method - remove
clearOnEdit
andclearInput
properties. See v5 → v6 migration for more info.
- remove previously deprecated
- textarea:
- remove previously deprecated
setFocus
method - remove
clearOnEdit
property. See v5 → v6 migration for more info.
- remove previously deprecated
- input: fix placeholder style for Firefox
- textarea: fix placeholder style for Firefox
- grid: an error was thrown in console when change current page (grid pagination)
- grid-column: (accessibility) use button instead of div inside sortable columns for accessibility reasons
- form-field:
- fix prefix suffix group style for native select
- fix width of the native select when it is in a form-field (fill now 100% of the available place)
- select: on autocomplete mode, disable default autocomplete suggestion of user-agents
- dropdown: improve accessibility
- stepper: (accessibility) use aria-current="true" instead of tab pattern (does not work with Voice Over)
- modal: focusable elements were not updated during the opening lifecycle
- select:
- fix autocomplete server-mode problem that was clearing the filter unintentionally
- improve autocomplete server-mode documentation
- com-nav: close mobile menu when click on a link (
wcs-com-nav-item
) - native-select: no label/description/error + required propagation from form-field
- select:
- add a red outline when the
wcs-form-field
is in error - emit wcsFocus and wcsBlur events
- add onTouched support for Angular
- add a red outline when the
- native-select: add a red outline when the
wcs-form-field
is in error - checkbox:
- add wcsFocus and wcsBlur events
- add onTouched support for Angular
- switch:
- add wcsFocus and wcsBlur events
- add onTouched support for Angular
- grid:
- add wcsFocus and wcsBlur events
- add onTouched support for Angular
- galactic-menu: (accessibility) add keyboard navigation and missing aria attributes
- editable-field: fix the display of textarea when there is a multiline
- switch: change focus style to surround the input + the label
- list-item: update style to fix unnecessary padding-left on a single
wcs-list-item-property
- accordion: fix the font-family not rendering properly
- doc: improve
wcs-form-field
,wcs-hint
,wcs-label
,wcs-error
,wcs-editable-field
,wcs-textarea
andwcs-input
documentation - textarea: fix debounce behavior by using
wcsInput
event instead ofwcsChange
- input: fix debounce behavior by using
wcsInput
event instead ofwcsChange
- counter: improve keyboard focus style
- header: (accessibility) add missing aria attributes
- progress-bar: improve accessibility
- progress-radial: improve accessibility
- tooltip: accessibility problems
- Hide tooltip when press escape key.
- horizontal-stepper: (accessibility) add missing aria attributes and keyboard navigation
- nav, nav-item : improve business nav accessibility (missing aria and semantics)
⚠ This version contains breaking changes in following packages :
- wcs-core
- wcs-angular
- wcs-react
To migrate, please refer to the storybook documentation (v4 to v5).
- select: (IMPORTANT FEATURE 💡) add
autocomplete
mode to filter your results - textarea: add two css variables to set padding right and padding left
- modal: add the css variable
--wcs-modal-overflow-y
to control the overflow-y of the modal content - progress-bar: add the size attribute with available values
m (default)
,s
- dropdown: add the size attribute with available values
l
,m (default)
,s
- badge: add the size attribute with available values
l
,m (default)
,s
- counter: add the
disabled
property - grid: add support of specific angular control value accessor to simplify the use of handling selected rows
- select rename these slots for brevity :
wcs-select-option
=>options
wcs-select-filter-noresult
=>filter-no-result
- css variables: change global color
--wcs-blue
used by--wcs-primary
for accessibility reasons (contrasts) from#0088ce
to#0074af
. - grid:
- the model detail data of
wcsGridSelectionChange
event has changed. See migration guide for more information. - the
wcsGridSelectionChange
event is now emitted when the "all checkbox" is clicked.
- the model detail data of
- modal: warn in console if
modal-trigger-controls-id
passed to modal is invalid
- progress-bar : boolean attribute
small
removed. Usesize='s'
instead.
- select:
- internal value was not changed when the select is closed and when we used keyboard nav on it (key up, key down... to change the current selected option).
- the wcsChange event is no longer triggered when the value is updated programmatically.
- change focus style to match the design system appearance
- native-select: change focus style to match the design system appearance
- radio: change focus style to match the design system appearance
- doc:
- improve
wcs-select
,wcs-select-options
,wcs-input
andwcs-dropdown
documentation - fix accessibility problem for form-field radio group story => add name to each wcs-radio
- improve
- modal: (accessibility)
- focus modal controls which served to open the modal on closure
- modal title is now a h1 instead of a h5 for better semantic structure
- dropdown: display empty container when no items with fixed width
- progress-radial: fix component computed size, documentation and aria attributes
- input:
- rework input events to be more consistent with native events (wcsInput, wcsChange)
- inherit aria-attributes from host to the wrapped native input
- textarea:
- rework textarea events to be more consistent with native events (wcsInput, wcsChange)
- inherit aria-attributes from host to the wrapped native textarea
- radio-group:
- we not remove tabIndex=0 on option which are not selected in the group when a click is received inside the group => when re-tab to the group, it caused the focus on not last selected option
- add role radiogroup to the host => we can now add aria-label directly on the host
- rework wcsChange event to be thrown only when the user click on an option (not programmatically)
- form-field: fix accessibility issue with label, description, error message and form control association
- mat-icon: fix accessibility with aria-hidden on
<i>
element. - grid:
- (accessibility) add keyboard navigation and missing aria attributes
- fix a bug where the row selection single was not kept when sorting the column
- stackblitz : create 3 StackBlitz templates for testing. See README.md or CONTRIBUTING.md for more information
- doc: add StackBlitz links to the Framework integrations documentation
- doc: component methods are now displayed in their story control table
- doc: props & methods deprecation are now displayed in their story control table
- radio : update style to match the design system appearance
- grid: (selection single) use the new updated radio style
- input : method setFocus() deprecated : use native js
focus()
method instead. - textarea : method setFocus() deprecated : use native js
focus()
method instead.
- Update project README.md and CONTRIBUTING.md
- dropdown, checkbox, counter, textarea: focus called on host element now delegate focus to the first focusable element in shadow-dom
- modal:
- don't emit
wcsDialogClosed
if the modal is closed and the Escape key is pressed - handle accessibility (aria and trap focus inside when the modal is opened)
- don't emit
- tabs:
- apply ARIA tabs design pattern to make tabs accessible to screen reader
- instead of directly updating styles, which can potentially violate CSP rules, we now apply styles in response to certain attribute changes
- grid: fix single selection keyboard behavior, only one radio can be selected
- radio: update style to remove margin when there is no label on radio (useful for grids)
- radio-group: add keyboard navigation support
- native-select: add a way to update the styles of the native select when it's reset and automatically update styles when there is a class change on the component (mainly for Angular)
- react: create react bindings for WCS components
- doc: deploy documentation on Azure static web app (https://wcs.dev.sncf)
- doc: add Formly integration documentation
- skeleton: add new components
skeleton-text
,skeleton-rectangle
,skeleton-circle
- doc: update react integration documentation
- doc: update grid and grid subcomponents documentation
- doc: migrate documentation to Azure static web app (https://wcs.dev.sncf). The gitlab pages environment now redirects to the new documentation domain (both for develop and master branches).
- native-select: add a gap between the value/placeholder and select arrow to avoid the value to be hidden by the arrow
- com-nav: open/close mobile menu on space or enter key press on the "hamburger" button
- bundle size: migrate to lodash-es to reduce bundle size (used in select and grid components)
- counter: fix weird behavior when the value is programmatically set in javascript
- native-select: the base color of the select is now primary and not blue
- native-select: the formly component now displays the label correctly in options
⚠ This version contains breaking changes in following packages :
- wcs-core
To migrate, please refer to the storybook documentation (v3 to v4).
- button: add
target
("_blank" | "_self"
, null by default) to choose where to open links when usinghref
- button: add the following sizes :
l
,m (default)
,s
- input: add the following sizes :
l
,m (default)
,s (for grids)
- select: add the following sizes :
l
,m (default)
- editable-field: add the following sizes :
l
,m (default)
- doc: add documentation on how to initialize an application with the business or communication design systems
- ci: add the ability to deploy any branch on a dedicated environment
- textarea: add the property
resize
with the folowing options :none
,both
,horizontal
,vertical
- textarea: the
max-height
style property is now defined by the--wcs-textarea-max-height
css-variable - counter: add new Counter component (for small countable number values)
- native-select: add new Native Select component (for unique selection)
- select:
- Migrate overlay positioning to PopperJS
- Implements the new overlay design
- docs: Create a story per subcomponent (eg. grid-column) while waiting for storybook to provide a solution to replace the subcomponent functionality.
- annotates some private attributes explicitly so that they are not present in the documentation. Removed some unnecessary attributes in components.
- docs: Angular Framework integration : update doc about icons and fonts usage
- styles: Set WCS global variable "base size" to 8px. Has no impact to previous styles.
- types: Create and set index as root file for types export (generated & custom types)
- types: Create a new shared-types file for custom types, containing WcsSize
- button: add the size attribute with available values
l
,m (default)
,s
- input: add the size attribute with available values
l
,m (default)
,s
- textarea: the
min-height
style property is now define by thevar(--wcs-size-m)
css-variable
- button: remove the shape="small" attribute. (Replace it with size="s").
- select:
- only one select will remain expanded at a time, even when multiple selects are present on the page. Previously, when multiple instances of the select were present on a page, they could both be expanded simultaneously, which was not intended behavior.
- add keyboard navigation and aria to respect listbox pattern
- doc: add the SNCF font icon in the stylesheet on the integration doc for angular.
- doc: the events are shown back in the Actions tab.
- doc: storybook controls improvements for stories + attributes now displayed in table
- radio: wcs-radio is now exposed to screen readers
⚠ This version contains breaking changes in following packages :
- wcs-core
- wcs-angular
- wcs-formly
To migrate, please refer to the storybook documentation (v2 to v3).
- input: add
focus-visible
to show which if an input is focused via keyboard - button: add
loading
(false by default) to display spinner if the property is equals to true - radio: add
focus-visible
to show which if a radio is focused via keyboard - select: add
focus-visible
to show which if a select is focused via keyboard - switch: add
focus-visible
to show which if a switch is focused via keyboard - tabs: add
focus-visible
to show which if a tab is focused via keyboard - textarea: add
focus-visible
to show which if a textarea is focused via keyboard - textarea: add missing properties for Formly templateOptions:
autofocus
,maxLength
,spellcheck
... - input: add focus delegation on the wrapped native input
- nav-item: add
focus-visible
to show which if a nav-item is focused via keyboard
- stencil: upgrade to v2.19
- wcs-angular: migrate to angular v13
- wcs-formly: migrate to Formly v6 (see: https://github.com/ngx-formly/ngx-formly/blob/main/UPGRADE-6.0.md)
- accessibility : change cursor to
not-allowed
while hovering the following disabled elements :- button
- checkbox
- input
- radio
- switch
- select
- select-option
- textarea
- footer: change the behaviour in responsive mode. Now
end-left
andend-right
parts of the footer are organized on column if they have not enough space - input, textarea, editable-field: change hover border style and width (dashed, 2px). Components keep their previous height
- mat-icon: add the ability to change the URI from which the material icons fonts are loaded by not including them automatically. Your project now need to add the font-face declarations in the global stylesheet of your project. Please refer to the migration guide (v2 to v3)
- input: the setFocus() method in now deprecated in favor of the native focus method
- stenciljs: upgrade to stencil v3
- storybook: upgrade to storybook v7
- grid: (front side pagination) when we reload less data than current data, we have to reset current page if it is greater than total of pages
- grid: check if columns are defined before use it
- tooltip: check if tippy instance is defined to avoid exception if not
- tabs: tab index now start at 1 instead of 0 in tab groups. It allow to navigate on the first tab at first instead of the second one
- spinner: stroke size of rotating circle is now equal to dashed fixed circle stroke
- com-nav: accessibility: make com-nav-submenu and com-nav-category focusable and add keyboard navigation to it.
- com-nav, form-field, select, tooltip: fix console error in the disconnectedCallback method (method call on undefined object)
- accessibility: enable to select item with 'Enter' from numeric pad (#84)
- wcs-radio
- wcs-com-nav
- wcs-dropdown
- form-field: suffixed select has always border radius top left and bottom left while it should not have a border-radius on them #56
- nav-item: Added support for keyboard navigation when using
routerLink
in Angular. Pressing the "enter" key now performs the same action as clicking the item with a mouse.
- formly-field-tooltip: add
interactive
in templateOptions - formly-field-tooltip: add
dynamicContent
in templateOptions. This will allow to update the tooltip content dynamically (usingexpressionProperties
for instance). Use the defaultcontent
templateOptions if the tooltip content is static.
- accordion-header: aligns the header text to the left
- dropdown: if the user presses an arrow (up or down) on the keyboard, the browser is prevented from scrolling
- docs: made some corrections on the Framework integration documentation
- checkbox: label does not overlap anymore on very narrow containers
- tooltip: fix tooltip appearance when it is contained into a fullscreen element
- label: changed selector and disposition to inline-block for several lines field label
- input: add css part for prefix and suffix elements
- dropdown: add keyboard navigation support
- button: passes the call of the
focus()
method on the web component to the inner native button. - grid: fix pagination to never have a negative current page
- tabs: an error was raised when the component tried to access the tabs if the list of slotted tab was empty (for example when the component is not yet rendered).
- doc: Add select stories
- formly-field-tooltip: Add possibility to customize the tooltip : content, icon, color, size.
- grid: add refresh sort when data changes
- doc: migrate angular integration tutorial to storybook
- formly-field-tooltip: please use the new formly templateOptions for tooltip :
tooltip: { content: 'string' }
instead oftooltip: 'string'
- com-nav: close mobile menu overlay if user click on a top level link item
- accordion: Accessibility fixes for keyboard usage, screenreaders (#40)
- select: keeps the select options overlay open if user click on the scrollbar when the overlay is folded up
- accordion-panel:
- add
hideActionText
(false by default, to hide or show the open/close text) - add
highlight
(false by default, to highlight with the primary color when panel is open) - add
groupContentWithHeader
(false by default, to group the content of panel with the header)
- add
- accordion:
- add
hideActionText
(false by default, to hide or show all the open/close text in accordion-panel) - add
highlight
(false by default, to highlight with the primary color the current open panel for all accordion-panel) - add
groupContentWithHeader
(false by default, to group the content of panel with the header for all accordion-panel)
- add
- documentation:
Framework integrations
documentation for React (without bindings for now) and Angular
- spinner: Change border-mode spinner design to match recent progress bar design updates
- spinner tweaked the animation timing for "growing" spinners
- input password add
icon
: it is now possible to toggle text visibility from password to text by cliking on eye icon
- doc: change the size of the SNCF logo in the navbar demo story
- input: the input prefix icon was not centered vertically
- com-nav: add inner spacing to prevent app name from hugging the left side of the screen on smaller displays
- com-nav: automatically close the mobile menu overlay when user click on a navigation item
- tooltip: add line break if a word exceeds the width of the tooltip
- editable-field: enlarge the spinner to match its previous size
- wcs-formly: add support for min, max, minlength, maxlength, spellcheck, autofocus, autocorrect, autocomplete, autocapitalize, pattern and inputmode attribute in formly input template options
- doc: reorganize storybook documentation: split of examples and textual documentation
- button: the inner
button
ora
element now takes the size of thewcs-button
(don't forget to check your wcs-button width after update) - badge: shape attribute wasn't handled by the component. The default shape is no longer rounded, if you want a rounded shape on your badges you must now assign the 'rounded' value on the attribute
- tabs: the color of the underline for active tab did not use the
--primary
css variable - doc: the custom-elements.json file was no longer used to generate the storybook documentation. Many properties, events and methods were not documented anymore.
- com-nav: the menu overlay on mobile was open by default
- wcs-formly: the formly input was always disabled
- label: the tooltip icon was not well positioned
- wcs-angular: Add missing proxies for WcsAccordion, WcsAccordionContent, WcsAccordionHeader, WcsAccordionPanel, WcsDropdownDivider, WcsDropdownHeader and WcsGridCustomCell web components
- ci: Parallelization of publish jobs for npm to be able to restart them in case of error
- ci: Build and publish angular libraries with production configuration
- input: Add support for file type
- com-nav: Add mobile styles for communication nav bar.
- core: Remove tslint and migrate to eslint
- accordion: Add components related to accordions (
wcs-accordion
,wcs-accordion-panel
,wcs-accordion-header
,wcs-accordion-content
) - tooltip: Add the "content" property to make integration easier with non-immutable APIs
- modal: Add
hideActions
property which is false by default (useful when you want to hide the action slot and the associated margin) - button: Add css variables
--wcs-button-min-width
and--wcs-button-min-height
that can be used to specify any width or height for buttons - modal: Add css variable
--wcs-modal-max-height
that can be used to specify a max-height for the modal (default is 80%)
- versioning: migrate Angular dependencies to superior or equals selector and fix peerDependencies of angular-formly package
- modal: Use
wcs-mat-icon
component instead of material class for button close - horizontal-stepper: Add a check to ignore a function if the component is not initialized
- docs: add current-step property binding to horizontal-stepper story
- dropdown: fix error in console when noArrow flag is true
- mat-icon: fix icon to be verticaly centered in mat-icon (especially when a wcs-mat-icon is in a wcs-button)
- modal: update css and template to set a max-height and a scroll bar when the modal content takes too much space
- formly: add styling support for
form-field
child elements
- form-field: fix random infinite loop when wcs-label is considered as form field input
- modal: add size param
- radio-group: change radio group height to 40px to fit button size when attribute
mode="option"
- formly: change
formlySelectOptions
pipe towcsFormlyOptions
pipe inselect
andradio
formly component in order to add any options in templateOptions. In this case we add theclass
option to add css class for select option and radio.
- grid-column: event
wcsSortChange
was trigger twice - stenciljs: upgrade compiler version to 2.13.0
- radio-group: add
horizontal
mode - wcs-formly: add the
tooltip
property in templateOptions, it adds a tooltip to the corresponding field's label - form-field: add a tooltip example in documentation using
wcs-mat-icon
andwcs-tooltip
- tooltip: redesign of the tooltip and migrate to tippy.js library. the API of the previous versions remain compatible with the new API which has only added new attributes / methods.
- ⚠ modal: change
backdrop
property inwithoutBackdrop
which is false by default (inversion of the condition)
- dropdown: add overlay placement attribute
- dropdown: add no-arrow attribute to hide the arrow in dropdown button
- angular/formly: add disabled attribute support for field template options
- switch: add disabled attribute
- input: add
prefixLabel
andsuffixLabel
attributes
- dropdown: use PopperJS for dropdown overlay positioning
- form-field: change
display: inline-flex
todisplay: flex
- dropdown: Fix disabled attribute that did not work
- dropdown: Dropdown overlay closes when click on another dropdown instance
- grid: initial sort order attribute
- input: add disabled styles
- switch: display label if present
- radio checkbox: fix disabled attribute
- grid: add support for custom cell rendering with slot (
wcs-grid-custom-cell
) - grid: add support to hide columns
- doc: migrate existing documentation to storybook
- stencil: migrate to v2.10.x
- Communication Navbar: close navbar when user click on a link (
a
) slotted element in submenu and category
- angular schematics: remove Angular schematics support (
ng add wcs
is no longer supported)
wcs-angular
: update component proxies to support angular v12 strict template (ionic-team/stencil-ds-output-targets#155)
action-bar
: add support for tabswcs-angular
: add automatic generation of proxy components
tabs
: match SNCF Design System specifications and add support for headers only mode, add support for gutter
textarea
: rename component class to match component selector
horizontal-stepper
: Add horizontal stepper componentprogress-bar
: Add a CSS variable to change the duration of animations and the border radiusgalactic
: Add galactic navigation bargalactic-menu
: Add menu component for the galactic navigation barcom-nav
: Add communication navbar and subcomponents (submenu
,category
)footer
: Add footer component
-mat-icon
: change display block to flex for host element
select
: Added method to compare options with selected options (by default : deep comparison between object)
editable-field
: fix the display of null values, array values (for multiple select) and error states on input and textarea
wcs-select
: Added support for the chips attribute to display multi selected values in chips modetextarea
: Added a method to force the textarea to adopt the content size
editable-field
: Fix bad display in fields with several lines of text.editable-field
: Fix textarea autogrow behaviourwcs-tooltip
: Id starting by a number is not a valid CCS selector (it has to be escaped). It's a problem if an application use a tooltip on an element with an id starting by a number. We fix this without using CSS selector to find the element.
wcs-editable-field
: Added support for the readonly attribute
wcs-form-field
: Following the update of the form field, an error was thrown if the slotted component was not in a fixed list of supported components. This was a problem for some applications that wrapped the components or created components on their side. This error has been removed, and a warning has been added.
- if you use form-field, the native components "input" and "textarea" are no longer supported. You have to migrate to
the new components
wcs-input
andwcs-textarea
(they share the same API as the native ones). wcs-field-header
component has been renamed towcs-field-label
.
- wcs-editable-field : new component for inline data editing. for the moment the component supports the following
components
- wcs-input
- wcs-text-area
- wcs-select
- wcs-input
- wcs-textarea
- Compatibility for firefox < 63
- Tab
- Select
- Upgraded to stencil 1.0
- Components
- App shell
- Header
- Sidebar
- Badge
- Button
- Card
- Card body
- Checkbox
- Icon
- Progress bar
- Progress radial
- Select
- Tabs
- Tooltip
- App shell
- Styling
- A few CSS variables
- Examples
- Angular
- React (Not yet working)
- Vue
for new features.
for changes in existing functionality.
for soon-to-be removed features.
for now removed features.
for any bug fixes.
in case of vulnerabilities.