From 6780bfcbd2074fc59686bc4cded5fb5bd2b91f3f Mon Sep 17 00:00:00 2001 From: ST063655 Date: Thu, 21 Sep 2023 10:00:47 +0530 Subject: [PATCH 01/19] Code for Vertical Tabs. --- .../doc/tabs/example/IconOnlyTabs.jsx | 31 +++++++++++++++++-- .../terra-tabs/src/StructuralTabs.module.scss | 1 + packages/terra-tabs/src/Tabs.jsx | 6 ++++ .../terra-tabs/src/common-tabs/CommonTabs.jsx | 7 ++++- .../src/common-tabs/CommonTabs.module.scss | 1 + packages/terra-tabs/src/common-tabs/_Tabs.jsx | 27 +++++++++++++--- .../src/common-tabs/_Tabs.module.scss | 31 +++++++++++++++++++ 7 files changed, 95 insertions(+), 9 deletions(-) diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx index 0d561dcecd3..237289793e9 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx @@ -13,7 +13,9 @@ const cx = classNames.bind(styles); const IconOnlyTabs = () => { const searchTab = ( } isIconOnly key="Search"> - + + Users need to know what is going on, and get appropriate feedback during interaction. For example, users need confirmation messages when actions are completed, such as when forms are submitted. Also, error messages must provide clear directions rather than confuse users. People with some cognitive and learning disabilities, who may be easily confused by unexpected behavior and unclear error messages. People with partial sight and blindness, who rely on notifications, instructions, and errors messages to understand the context and interactions. Content is more usable for people who are new to the particular website or application. + ); @@ -35,13 +37,36 @@ const IconOnlyTabs = () => { ); + + + const briefcaseTab1 = ( + } isIconOnly key="Briefcase1"> + + + ); + + const bookmarkTab1 = ( + } isIconOnly key="Bookmar1k"> + + + ); + + const calendarTab1 = ( + } isIconOnly key="Calendar1"> + + + ); + return ( -
- +
+ {searchTab} {briefcaseTab} {bookmarkTab} {calendarTab} + {briefcaseTab1} + {bookmarkTab1} + {calendarTab1}
); diff --git a/packages/terra-tabs/src/StructuralTabs.module.scss b/packages/terra-tabs/src/StructuralTabs.module.scss index 7a9b846fbbf..c0114bfada9 100644 --- a/packages/terra-tabs/src/StructuralTabs.module.scss +++ b/packages/terra-tabs/src/StructuralTabs.module.scss @@ -8,6 +8,7 @@ :local { .structural { background-color: var(--terra-tabs-structural-container-background-color, #fff); + flex-direction: row; // Content div of content container component > :nth-child(2) { diff --git a/packages/terra-tabs/src/Tabs.jsx b/packages/terra-tabs/src/Tabs.jsx index f4e84c69edb..83bceb32dc0 100644 --- a/packages/terra-tabs/src/Tabs.jsx +++ b/packages/terra-tabs/src/Tabs.jsx @@ -79,6 +79,10 @@ const propTypes = { * The label to set on the add icon element. */ ariaLabelAddTab: PropTypes.string, + /** + * Whether tab is vertical or horizontal orientation. + */ + verticalOrientation: PropTypes.bool, }; const defaultProps = { @@ -127,6 +131,7 @@ class Tabs extends React.Component { isDraggable, onTabOrderChange, isClosable, + verticalOrientation, ...customProps } = this.props; @@ -186,6 +191,7 @@ class Tabs extends React.Component { variant="framework" isDraggable={isDraggable} onTabOrderChange={onTabOrderChange} + verticalOrientation={verticalOrientation} {...customProps} > {commonTabItems} diff --git a/packages/terra-tabs/src/common-tabs/CommonTabs.jsx b/packages/terra-tabs/src/common-tabs/CommonTabs.jsx index 418b52b3844..e08a6483314 100644 --- a/packages/terra-tabs/src/common-tabs/CommonTabs.jsx +++ b/packages/terra-tabs/src/common-tabs/CommonTabs.jsx @@ -72,6 +72,10 @@ const propTypes = { * Callback function triggered when tab is drag and dropped . */ onTabOrderChange: PropTypes.func, + /** + * Whether tab is vertical or horizontal orientation. + */ + verticalOrientation: PropTypes.bool, }; const getTabId = (id, itemKey) => `${id || 'terra-common-tabs'}-${itemKey}`; @@ -91,6 +95,7 @@ const CommonTabs = ({ onClosingTab, isDraggable, onTabOrderChange, + verticalOrientation, ...customProps }) => { const theme = React.useContext(ThemeContext); @@ -134,7 +139,7 @@ const CommonTabs = ({
- +
{React.Children.map(children, child => { diff --git a/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss b/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss index 1add20f831f..d77560843ae 100644 --- a/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss @@ -58,6 +58,7 @@ padding-left: 10px; padding-right: 10px; z-index: 10; + flex-direction: column; } .is-overlay .body { diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.jsx b/packages/terra-tabs/src/common-tabs/_Tabs.jsx index 2bfd6a8589a..6b5cd561357 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tabs.jsx @@ -101,6 +101,10 @@ const propTypes = { * intl object programmatically imported through injectIntl from react-intl. */ intl: PropTypes.shape({ formatMessage: PropTypes.func }).isRequired, + /** + * Whether tab is vertical or horizontal orientation. + */ + verticalOrientation: PropTypes.bool, }; class Tabs extends React.Component { @@ -263,6 +267,19 @@ class Tabs extends React.Component { this.hiddenStartIndex = newHideIndex; this.forceUpdate(); } + + if (this.props.verticalOrientation) { + // const tablist = document.querySelectorAll('[data-terra-drag-focus="false"]'); + const tabButtons = document.querySelectorAll('[role="tab"]'); + const tabContent = document.querySelector('[role="tabpanel"]'); + console.log(tabButtons); + console.log(tabContent); + // let totalheight = 0; + // tabButtons.forEach((button, index) => { + // totalheight += button[index].getBoundingClientRect().height; + // }); + // tabContent.style.height = `${totalheight}px`; + } } handleHiddenFocus() { @@ -470,7 +487,7 @@ class Tabs extends React.Component { render() { const { - ariaLabel, variant, onChange, onSelectAddButton, ariaLabelAddTab, isDraggable, + ariaLabel, variant, onChange, onSelectAddButton, ariaLabelAddTab, isDraggable, verticalOrientation, } = this.props; const theme = this.context; const enabledTabs = this.state.visibleTabData.filter(tab => !tab.isDisabled); @@ -563,8 +580,8 @@ class Tabs extends React.Component { 'data-tab-is-calculating': 'true', }; } - const commonTabsClassNames = cx('tab-container', theme.className); - const commonTabsContainerClassNames = cx('container', theme.className); + const commonTabsClassNames = verticalOrientation ? cx('tab-container-vertical', theme.className) : cx('tab-container', theme.className); + const commonTabsContainerClassNames = verticalOrientation ? cx('container-vertical', theme.className) : cx('container', theme.className); const commonDivClassNames = cx('divcontainer', theme.className); window['__react-beautiful-dnd-disable-dev-warnings'] = true; @@ -585,7 +602,7 @@ class Tabs extends React.Component { className={commonTabsClassNames} role="tablist" aria-label={ariaLabel} - aria-orientation="horizontal" + aria-orientation={verticalOrientation ? 'vertical' : 'horizontal'} aria-owns={hiddenIds.join(' ')} data-terra-drag-focus > @@ -644,7 +661,7 @@ class Tabs extends React.Component { className={commonTabsClassNames} role="tablist" aria-label={ariaLabel} - aria-orientation="horizontal" + aria-orientation={verticalOrientation ? 'vertical' : 'horizontal'} aria-owns={hiddenIds.join(' ')} > {visibleTabs} diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss index e612ae2facf..732ae5ccfb3 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss @@ -23,11 +23,42 @@ } } + .tab-container-vertical { + display: flex; + flex: 1 1 auto; + flex-wrap: nowrap; + height: var(--terra-tabs-workspace-tab-container-height, 33px); + justify-content: flex-start; + margin-bottom: var(--terra-tabs-workspace-tab-container-margin-bottom, 0); + max-width: 25%; + padding: 0; + position: relative; + width: fit-content; + float:left; + flex-direction : column; + + &:focus { + outline: none; + } + + &[data-tab-is-calculating='true'] { + visibility: hidden; + } + } + .container { // while using the Flex the style of addIcon getting align to all right to the tabs display: -webkit-box; // stylelint-disable value-no-vendor-prefix } + .container-vertical { + // while using the Flex the style of addIcon getting align to all right to the tabs + -webkit-box-flex: 1 1 auto; + flex: 1 1 auto; // stylelint-disable value-no-vendor-prefix + flex-direction:row; + flex-flow: row nowrap; + } + .divcontainer { max-width: 40px; } From 9a0d33102d051d43ad334f8bccf5541dc0c9ae91 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Thu, 28 Sep 2023 16:49:17 +0530 Subject: [PATCH 02/19] Icon Only Example. --- .../doc/tabs/example/IconOnlyTabs.jsx | 10 ++--- .../example/common/TabExample.module.scss | 4 ++ .../terra-tabs/src/common-tabs/CommonTabs.jsx | 7 ++- .../src/common-tabs/CommonTabs.module.scss | 6 +++ .../src/common-tabs/Tab.module.scss | 20 +++++++++ .../TerraStructuralTabs.module.scss | 43 +++++++++++++++++++ .../src/common-tabs/TerraTabs.module.scss | 1 - packages/terra-tabs/src/common-tabs/_Tab.jsx | 13 +++++- packages/terra-tabs/src/common-tabs/_Tabs.jsx | 14 +----- 9 files changed, 95 insertions(+), 23 deletions(-) diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx index 29e1b2266c4..d213965eae4 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx @@ -12,10 +12,8 @@ const cx = classNames.bind(styles); const IconOnlyTabs = () => { const searchTab = ( - } isIconOnly key="Search"> - - Users need to know what is going on, and get appropriate feedback during interaction. For example, users need confirmation messages when actions are completed, such as when forms are submitted. Also, error messages must provide clear directions rather than confuse users. People with some cognitive and learning disabilities, who may be easily confused by unexpected behavior and unclear error messages. People with partial sight and blindness, who rely on notifications, instructions, and errors messages to understand the context and interactions. Content is more usable for people who are new to the particular website or application. - + + ); @@ -56,8 +54,8 @@ const IconOnlyTabs = () => { ); return ( -
- +
+ {searchTab} {briefcaseTab} {bookmarkTab} diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss index 0d43cc3d800..69484e7da12 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss @@ -18,4 +18,8 @@ height: 400px; padding: 25px; } + + .content-container-vertical { + height: 300px; + } } diff --git a/packages/terra-tabs/src/common-tabs/CommonTabs.jsx b/packages/terra-tabs/src/common-tabs/CommonTabs.jsx index e08a6483314..8202e23f5f3 100644 --- a/packages/terra-tabs/src/common-tabs/CommonTabs.jsx +++ b/packages/terra-tabs/src/common-tabs/CommonTabs.jsx @@ -125,6 +125,11 @@ const CommonTabs = ({ theme.className, ), customProps.className); + const contentTabClassNames = classNames(cx( + 'body', + { 'is-vertical': verticalOrientation }, + theme.className, + )); const handleCommonTabsStateChange = (value, itemKey, event) => { onClosingTab(value, itemKey, event); @@ -141,7 +146,7 @@ const CommonTabs = ({
-
+
{React.Children.map(children, child => { let portalElement = commonTabsPortalsRef.current[child.props.itemKey]?.element; if (!portalElement) { diff --git a/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss b/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss index d77560843ae..2a0e22f0f4b 100644 --- a/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss @@ -52,6 +52,7 @@ border-bottom-left-radius: var(--terra-tabs-workspace-body-border-bottom-left-radius, 3px); border-bottom-right-radius: var(--terra-tabs-workspace-body-border-bottom-right-radius, 3px); border-top: 1px solid #868a8c; + border-left:none; flex: 1 1 auto; height: 100%; overflow: hidden; @@ -61,6 +62,11 @@ flex-direction: column; } + .is-vertical{ + border-left: 1px solid #868a8c; + border-top:none; + } + .is-overlay .body { border-bottom-left-radius: var(--terra-tabs-workspace-body-is-overlay-border-bottom-left-radius, 0); border-bottom-right-radius: var(--terra-tabs-workspace-body-is-overlay-border-bottom-right-radius, 0); diff --git a/packages/terra-tabs/src/common-tabs/Tab.module.scss b/packages/terra-tabs/src/common-tabs/Tab.module.scss index 10f076c6f01..ddf2f16f2b0 100644 --- a/packages/terra-tabs/src/common-tabs/Tab.module.scss +++ b/packages/terra-tabs/src/common-tabs/Tab.module.scss @@ -103,6 +103,26 @@ } } + + &.is-active-vertical { + background-color: var(--terra-tabs-workspace-tab-is-active-background-color, #fff); + background-image: var(--terra-tabs-workspace-tab-is-active-background-image, none); + height: var(--terra-tabs-workspace-tab-is-active-height, 34px); + + .icon, + .label { + margin-top: var(--terra-tabs-workspace-tab-is-active-icon-label-margin-top, -1px); + } + + .icon { + color: var(--terra-tabs-workspace-tab-is-active-icon-color, #64696c); + } + + .label { + color: var(--terra-tabs-workspace-tab-is-active-label-color, #434a4d); + } + } + &.is-disabled { background-color: var(--terra-tabs-structural-disabled-background-color, #fff); background-size: 0 0; diff --git a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss index df73757ad63..222b4e96da8 100644 --- a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss @@ -110,6 +110,49 @@ transition-duration: var(--terra-tabs-structural-transition-duration, 0); transition-property: background-size; transition-timing-function: var(--terra-tabs-structural-transition-timing-function, ease); + border-left:none; + + &.is-vertical{ + background-size: var(--terra-tabs-structural-background-size, 0 1px); + border-width: var(--terra-tabs-structural-border-width, 0 0 1px 0); + background-image: var(--terra-tabs-structural-background-image, linear-gradient(to bottom, #c8cacb, #c8cacb)); + } + + + &.is-active-vertical { + background-color: var(--terra-tabs-structural-active-background-color, #fff); + border-left: 2px solid; + border-bottom :1px solid; + border-image: linear-gradient(#006fc3, #006fc3) 0 100%; + background-size: var(--terra-tabs-structural-active-background-size, 100% 1px); + box-shadow: var(--terra-tabs-structural-active-box-shadow, none); + color: var(--terra-tabs-structural-active-color, #000); + font-weight: var(--terra-tabs-structural-active-font-weight, normal); + outline: none; + overflow: hidden; //forces :before background-image to honor border-radius clipping. + position: relative; + z-index: var(--terra-tabs-structural-active-z-index); + border-width: var(--terra-tabs-structural-border-width, 0 0 1px 2px); + + &::before { + background-clip: content-box; // Make sure background fully extends + transition-duration: var(--terra-tabs-structural-active-before-transition-duration, 0); + transition-property: width; + transition-timing-function: var(--terra-tabs-structural-active-before-transition-timing-function, ease); + width: 100%; + } + + // Same as the selectors below, but due to the specificity, you can override the variables + // scoped specifically to the active tab + @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none), (hover: hover) and (pointer: fine) { + &:hover { + background-color: var(--terra-tabs-structural-active-hover-background-color, #fff); + background-image: var(--terra-tabs-structural-active-hover-background-image, linear-gradient(to bottom, #c8cacb, #c8cacb)); + background-size: var(--terra-tabs-structural-active-hover-background-size, 100% 2px); + color: var(--terra-tabs-structural-active-hover-color, #000); + } + } + } &.is-active { background-color: var(--terra-tabs-structural-active-background-color, #fff); diff --git a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss index 62a507e11eb..1c6927af024 100644 --- a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss @@ -41,7 +41,6 @@ font-size: var(--terra-tabs-font-size, 1rem); font-weight: var(--terra-tabs-font-weight, normal); line-height: var(--terra-tabs-line-height, 1.4); - padding: var(--terra-tabs-padding, 0.643rem 1.071rem); } .tab, diff --git a/packages/terra-tabs/src/common-tabs/_Tab.jsx b/packages/terra-tabs/src/common-tabs/_Tab.jsx index e646653c03e..5eda9804872 100644 --- a/packages/terra-tabs/src/common-tabs/_Tab.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tab.jsx @@ -118,6 +118,10 @@ const propTypes = { * Parameters: 1. label of the closing tab 2. Selected pane's key 3. Event */ onClosingTab: PropTypes.func, + /** + * Whether tab is vertical or horizontal orientation. + */ + verticalOrientation: PropTypes.bool, }; const defaultProps = { @@ -126,6 +130,7 @@ const defaultProps = { isDisabled: false, showIcon: false, isDraggable: false, + verticalOrientation: false, }; const Tab = ({ @@ -149,16 +154,18 @@ const Tab = ({ onClosingTab, intl, isDraggable, + verticalOrientation, }) => { const tabDeleteLabel = intl.formatMessage({ id: 'Terra.tabs.hint.removable' }); const attributes = {}; const theme = React.useContext(ThemeContext); const tabClassNames = cx( 'tab', - { 'is-active': isSelected }, + { 'is-active': !verticalOrientation && isSelected }, { 'is-icon-only': isIconOnly }, { 'is-text-only': !icon }, { 'is-disabled': isDisabled }, + { 'is-active-vertical': verticalOrientation && isSelected }, theme.className, ); const paneClassNames = classNames(cy( @@ -166,7 +173,9 @@ const Tab = ({ { 'is-disabled': isDisabled }, { 'is-icon-only': isIconOnly }, { 'is-text-only': !icon }, - { 'is-active': isSelected }, + { 'is-active': !verticalOrientation && isSelected }, + { 'is-active-vertical': verticalOrientation && isSelected }, + { '.is-vertical': verticalOrientation }, theme.className, )); diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.jsx b/packages/terra-tabs/src/common-tabs/_Tabs.jsx index 6b5cd561357..26c858996b9 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tabs.jsx @@ -267,19 +267,6 @@ class Tabs extends React.Component { this.hiddenStartIndex = newHideIndex; this.forceUpdate(); } - - if (this.props.verticalOrientation) { - // const tablist = document.querySelectorAll('[data-terra-drag-focus="false"]'); - const tabButtons = document.querySelectorAll('[role="tab"]'); - const tabContent = document.querySelector('[role="tabpanel"]'); - console.log(tabButtons); - console.log(tabContent); - // let totalheight = 0; - // tabButtons.forEach((button, index) => { - // totalheight += button[index].getBoundingClientRect().height; - // }); - // tabContent.style.height = `${totalheight}px`; - } } handleHiddenFocus() { @@ -523,6 +510,7 @@ class Tabs extends React.Component { showIcon={tab.showIcon} onClosingTab={this.wrapOnClose()} isDraggable={isDraggable} + verticalOrientation={verticalOrientation} />, ); } else { From 975976a3f08fcdf1e4522093d6e6d7a3e68824f6 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Fri, 29 Sep 2023 16:55:44 +0530 Subject: [PATCH 03/19] Example Update. --- .../doc/tabs/example/IconOnlyTabs.jsx | 69 ++++++++++--------- .../src/common-tabs/TerraTabs.module.scss | 14 ++++ packages/terra-tabs/src/common-tabs/_Tab.jsx | 2 +- packages/terra-tabs/src/common-tabs/_Tabs.jsx | 2 +- 4 files changed, 54 insertions(+), 33 deletions(-) diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx index d213965eae4..4eda83386d0 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx @@ -2,8 +2,6 @@ import React from 'react'; import classNames from 'classnames/bind'; import IconBriefcase from 'terra-icon/lib/icon/IconBriefcase'; import IconSearch from 'terra-icon/lib/icon/IconSearch'; -import IconBookmark from 'terra-icon/lib/icon/IconBookmark'; -import IconCalendar from 'terra-icon/lib/icon/IconCalendar'; import Tabs from 'terra-tabs'; import TabContent from './TabContentTemplate'; import styles from './common/TabExample.module.scss'; @@ -11,58 +9,67 @@ import styles from './common/TabExample.module.scss'; const cx = classNames.bind(styles); const IconOnlyTabs = () => { - const searchTab = ( - + const labelTab = ( + ); - const briefcaseTab = ( - } isIconOnly key="Briefcase"> - + const onlyiconTab = ( + } key="tonlyIconTab"> + ); - const bookmarkTab = ( - } isIconOnly key="Bookmark"> - + const iconTab = ( + } key="tIconTab"> + ); - const calendarTab = ( - } isIconOnly key="Calendar"> - + const customTab = ( + + Custom display +
+ )} + label="Custom display" + key="tCustomTab" + > + ); - const briefcaseTab1 = ( - } isIconOnly key="Briefcase1"> - + const longLabel = ( + + ); - const bookmarkTab1 = ( - } isIconOnly key="Bookmar1k"> - + const lastTab = ( + + ); - const calendarTab1 = ( - } isIconOnly key="Calendar1"> - - + const disabledTab = ( + } isDisabled key="tDisabledTab" /> ); return (
- - {searchTab} - {briefcaseTab} - {bookmarkTab} - {calendarTab} - {briefcaseTab1} - {bookmarkTab1} - {calendarTab1} + + {onlyiconTab} + {labelTab} + {iconTab} + {customTab} + {longLabel} + {lastTab} + {disabledTab}
); diff --git a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss index 1c6927af024..52b161206ec 100644 --- a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss @@ -41,6 +41,7 @@ font-size: var(--terra-tabs-font-size, 1rem); font-weight: var(--terra-tabs-font-weight, normal); line-height: var(--terra-tabs-line-height, 1.4); + padding: var(--terra-tabs-padding, 0.643rem 1.071rem); } .tab, @@ -58,6 +59,9 @@ flex: 0 1 auto; min-width: 8.357rem; text-align: center; + &.is-vertical{ + padding: var(--terra-tabs-padding, 1.3em 1.071rem); + } @media (max-width: 768px) { min-width: 5rem; /* Reduce the minimum width of the tabs */ padding: 0.643rem 0.5rem; /* Adjust padding for smaller screens */ @@ -73,16 +77,26 @@ flex: 0 0 auto; min-width: 2.571rem; padding: 0.643rem 1.071rem; + .is-vertical{ + padding: 0; + } } &.is-text-only { min-width: 7.143rem; padding: var(--terra-tabs-text-only-padding, 0.643rem 1.071rem); + &.is-vertical{ + padding: var(--terra-tabs-text-only-padding, 1.3em 1.071rem); + } } &[data-terra-tab-draggable='true'] { padding: var(--terra-tabs-text-only-draggable-padding, 0.643rem 0.25rem); text-align: start; + &.is-vertical{ + padding: var(--terra-tabs-text-only-padding, 1.3em 1.071rem); + } + } .label:nth-child(2) { diff --git a/packages/terra-tabs/src/common-tabs/_Tab.jsx b/packages/terra-tabs/src/common-tabs/_Tab.jsx index 5eda9804872..fb9e3a394b6 100644 --- a/packages/terra-tabs/src/common-tabs/_Tab.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tab.jsx @@ -175,7 +175,7 @@ const Tab = ({ { 'is-text-only': !icon }, { 'is-active': !verticalOrientation && isSelected }, { 'is-active-vertical': verticalOrientation && isSelected }, - { '.is-vertical': verticalOrientation }, + { 'is-vertical': verticalOrientation }, theme.className, )); diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.jsx b/packages/terra-tabs/src/common-tabs/_Tabs.jsx index 26c858996b9..0a33d984949 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tabs.jsx @@ -577,7 +577,7 @@ class Tabs extends React.Component { if (isDraggable) { return ( - + {(provided) => (
Date: Tue, 3 Oct 2023 19:23:21 +0530 Subject: [PATCH 04/19] Updated Lint error. --- .../src/common-tabs/CommonTabs.module.scss | 8 +++--- .../TerraStructuralTabs.module.scss | 27 +++++++++---------- .../src/common-tabs/TerraTabs.module.scss | 15 +++++------ .../src/common-tabs/_Tabs.module.scss | 10 +++---- 4 files changed, 28 insertions(+), 32 deletions(-) diff --git a/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss b/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss index 50699de68f2..881c5688186 100644 --- a/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/CommonTabs.module.scss @@ -51,8 +51,8 @@ .body { border-bottom-left-radius: var(--terra-tabs-workspace-body-border-bottom-left-radius, 3px); border-bottom-right-radius: var(--terra-tabs-workspace-body-border-bottom-right-radius, 3px); + border-left: 0; border-top: 1px solid #868a8c; - border-left:none; flex: 1 1 auto; height: 100%; overflow: hidden; @@ -60,15 +60,15 @@ } .body-padding { + flex-direction: column; padding-left: 10px; padding-right: 10px; z-index: 10; - flex-direction: column; } - .is-vertical{ + .is-vertical { border-left: 1px solid #868a8c; - border-top:none; + border-top: 0; } .is-overlay .body { diff --git a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss index 222b4e96da8..8887f826bd2 100644 --- a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss @@ -110,29 +110,28 @@ transition-duration: var(--terra-tabs-structural-transition-duration, 0); transition-property: background-size; transition-timing-function: var(--terra-tabs-structural-transition-timing-function, ease); - border-left:none; - &.is-vertical{ - background-size: var(--terra-tabs-structural-background-size, 0 1px); - border-width: var(--terra-tabs-structural-border-width, 0 0 1px 0); - background-image: var(--terra-tabs-structural-background-image, linear-gradient(to bottom, #c8cacb, #c8cacb)); + &.is-vertical { + background-image: var(--terra-tabs-structuraltab-background-image, linear-gradient(to bottom, #c8cacb, #c8cacb)); + background-size: var(--terra-tabs-structuraltab-background-size, 0 1px); + border-width: var(--terra-tabs-structuraltab-border-width, 0 0 1px 0); } &.is-active-vertical { - background-color: var(--terra-tabs-structural-active-background-color, #fff); - border-left: 2px solid; - border-bottom :1px solid; + background-color: var(--terra-tabs-structuraltab-active-background-color, #fff); + background-size: var(--terra-tabs-structuraltab-active-background-size, 100% 1px); + border-bottom: 1px solid; border-image: linear-gradient(#006fc3, #006fc3) 0 100%; - background-size: var(--terra-tabs-structural-active-background-size, 100% 1px); - box-shadow: var(--terra-tabs-structural-active-box-shadow, none); - color: var(--terra-tabs-structural-active-color, #000); - font-weight: var(--terra-tabs-structural-active-font-weight, normal); + border-left: 2px solid; + border-width: 0 0 1px 2px; + box-shadow: var(--terra-tabs-structuraltab-active-box-shadow, none); + color: var(--terra-tabs-structuraltab-active-color, #000); + font-weight: var(--terra-tabs-structuraltab-active-font-weight, normal); outline: none; overflow: hidden; //forces :before background-image to honor border-radius clipping. position: relative; - z-index: var(--terra-tabs-structural-active-z-index); - border-width: var(--terra-tabs-structural-border-width, 0 0 1px 2px); + z-index: var(--terra-tabs-structuraltab-active-z-index); &::before { background-clip: content-box; // Make sure background fully extends diff --git a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss index e79938f36e0..729d4ef8e9b 100644 --- a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss @@ -59,9 +59,11 @@ flex: 0 1 auto; min-width: 8.357rem; text-align: center; - &.is-vertical{ + + &.is-vertical { padding: var(--terra-tabs-padding, 1.3em 1.071rem); } + @media (max-width: 768px) { min-width: 5rem; /* Reduce the minimum width of the tabs */ padding: 0.643rem 0.5rem; /* Adjust padding for smaller screens */ @@ -77,7 +79,8 @@ flex: 0 0 auto; min-width: 2.571rem; padding: 0.643rem 1.071rem; - .is-vertical{ + + .is-vertical { padding: 0; } } @@ -85,18 +88,14 @@ &.is-text-only { min-width: 7.143rem; padding: var(--terra-tabs-text-only-padding, 0.643rem 1.071rem); - &.is-vertical{ + + &.is-vertical { padding: var(--terra-tabs-text-only-padding, 1.3em 1.071rem); } } &[data-terra-tab-draggable='true'] { - padding: var(--terra-tabs-text-only-draggable-padding, 0.643rem 0.25rem); text-align: start; - &.is-vertical{ - padding: var(--terra-tabs-text-only-padding, 1.3em 1.071rem); - } - } .label:nth-child(2) { diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss index 732ae5ccfb3..345963e0f3e 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss @@ -26,7 +26,9 @@ .tab-container-vertical { display: flex; flex: 1 1 auto; + flex-direction: column; flex-wrap: nowrap; + float: left; height: var(--terra-tabs-workspace-tab-container-height, 33px); justify-content: flex-start; margin-bottom: var(--terra-tabs-workspace-tab-container-margin-bottom, 0); @@ -34,8 +36,6 @@ padding: 0; position: relative; width: fit-content; - float:left; - flex-direction : column; &:focus { outline: none; @@ -52,11 +52,9 @@ } .container-vertical { - // while using the Flex the style of addIcon getting align to all right to the tabs - -webkit-box-flex: 1 1 auto; - flex: 1 1 auto; // stylelint-disable value-no-vendor-prefix - flex-direction:row; + flex: 1 1 auto; flex-flow: row nowrap; + flex-direction: row; } .divcontainer { From e43bf913d5d924dfa882c7a9e6fa27074f594428 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Tue, 3 Oct 2023 19:42:31 +0530 Subject: [PATCH 05/19] Updated Jest. --- .../terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap index 3028308f907..ba204d8f6cd 100644 --- a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap +++ b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap @@ -225,6 +225,7 @@ exports[`Tabs correctly applies the theme context className 1`] = ` ] } variant="modular-left-aligned" + verticalOrientation={false} zIndex={1} >
Date: Fri, 6 Oct 2023 11:03:35 +0530 Subject: [PATCH 06/19] Created Vertical Tab Example. --- .../terra-dev-site/doc/tabs/Tabs.1.doc.mdx | 2 + .../doc/tabs/example/IconOnlyTabs.jsx | 68 ++++++------------ .../doc/tabs/example/VerticalTabs.jsx | 72 +++++++++++++++++++ .../example/common/TabExample.module.scss | 2 +- .../TerraStructuralTabs.module.scss | 3 +- .../src/common-tabs/TerraTabs.module.scss | 9 +-- packages/terra-tabs/src/common-tabs/_Tabs.jsx | 2 +- .../src/common-tabs/_Tabs.module.scss | 1 + 8 files changed, 100 insertions(+), 59 deletions(-) create mode 100644 packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/Tabs.1.doc.mdx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/Tabs.1.doc.mdx index a045e06b4c6..9975f7b6ab1 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/Tabs.1.doc.mdx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/Tabs.1.doc.mdx @@ -14,6 +14,7 @@ import AddTab from './example/AddTab?dev-site-example' import ClosableTab from './example/ClosableTab?dev-site-example' import AddCloseTab from './example/AddCloseTab?dev-site-example' import AddCloseTabInteractive from './example/AddCloseTabInteractive?dev-site-example' +import VerticalTabs from './example/VerticalTabs?dev-site-example' @@ -93,6 +94,7 @@ import Tabs from 'terra-tabs'; + ## Tabs Props Table diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx index 4eda83386d0..507cbf07b31 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx @@ -2,6 +2,8 @@ import React from 'react'; import classNames from 'classnames/bind'; import IconBriefcase from 'terra-icon/lib/icon/IconBriefcase'; import IconSearch from 'terra-icon/lib/icon/IconSearch'; +import IconBookmark from 'terra-icon/lib/icon/IconBookmark'; +import IconCalendar from 'terra-icon/lib/icon/IconCalendar'; import Tabs from 'terra-tabs'; import TabContent from './TabContentTemplate'; import styles from './common/TabExample.module.scss'; @@ -9,67 +11,37 @@ import styles from './common/TabExample.module.scss'; const cx = classNames.bind(styles); const IconOnlyTabs = () => { - const labelTab = ( - - + const searchTab = ( + } isIconOnly key="Search"> + ); - const onlyiconTab = ( - } key="tonlyIconTab"> - + const briefcaseTab = ( + } isIconOnly key="Briefcase"> + ); - const iconTab = ( - } key="tIconTab"> - + const bookmarkTab = ( + } isIconOnly key="Bookmark"> + ); - const customTab = ( - - Custom display -
- )} - label="Custom display" - key="tCustomTab" - > - + const calendarTab = ( + } isIconOnly key="Calendar"> + ); - const longLabel = ( - - - - ); - - const lastTab = ( - - - - ); - - const disabledTab = ( - } isDisabled key="tDisabledTab" /> - ); - return ( -
- - {onlyiconTab} - {labelTab} - {iconTab} - {customTab} - {longLabel} - {lastTab} - {disabledTab} +
+ + {searchTab} + {briefcaseTab} + {bookmarkTab} + {calendarTab}
); diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx new file mode 100644 index 00000000000..2e8a08a0003 --- /dev/null +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx @@ -0,0 +1,72 @@ +import React from 'react'; +import classNames from 'classnames/bind'; +import IconBriefcase from 'terra-icon/lib/icon/IconBriefcase'; +import Tabs from 'terra-tabs'; +import TabContent from './TabContentTemplate'; +import styles from './common/TabExample.module.scss'; + +const cx = classNames.bind(styles); + +const VerticalTabs = () => { + const labelTab = ( + + + + ); + + const onlyiconTab = ( + } key="tonlyIconTab"> + + + ); + + const iconTab = ( + } key="tIconTab"> + + + ); + + const customTab = ( + + Custom display +
+ )} + label="Custom display" + key="tCustomTab" + > + +
+ ); + + const longLabel = ( + + + + ); + + const lastTab = ( + + + + ); + + return ( +
+ + {onlyiconTab} + {labelTab} + {iconTab} + {customTab} + {longLabel} + {lastTab} + +
+ ); +}; + +export default VerticalTabs; diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss index 69484e7da12..8bccf7ca11a 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/common/TabExample.module.scss @@ -20,6 +20,6 @@ } .content-container-vertical { - height: 300px; + height: 240px; } } diff --git a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss index 8887f826bd2..ffdd566de8c 100644 --- a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss @@ -100,7 +100,7 @@ background-position: var(--terra-tabs-structural-background-position, 0 100%); background-repeat: no-repeat; background-size: var(--terra-tabs-structural-background-size, 0 2px); - border-color: var(--terra-tabs-structural-border-color, #dedfe0); + border-color: var(--terra-tabs-structural-border-color, #c8cacb); border-radius: var(--terra-tabs-structural-border-radius, 0); border-style: solid; border-width: var(--terra-tabs-structural-border-width, 0 1px 0 0); @@ -115,6 +115,7 @@ background-image: var(--terra-tabs-structuraltab-background-image, linear-gradient(to bottom, #c8cacb, #c8cacb)); background-size: var(--terra-tabs-structuraltab-background-size, 0 1px); border-width: var(--terra-tabs-structuraltab-border-width, 0 0 1px 0); + min-width: 2.571rem; } diff --git a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss index 729d4ef8e9b..03714ff86e1 100644 --- a/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraTabs.module.scss @@ -60,10 +60,6 @@ min-width: 8.357rem; text-align: center; - &.is-vertical { - padding: var(--terra-tabs-padding, 1.3em 1.071rem); - } - @media (max-width: 768px) { min-width: 5rem; /* Reduce the minimum width of the tabs */ padding: 0.643rem 0.5rem; /* Adjust padding for smaller screens */ @@ -88,13 +84,10 @@ &.is-text-only { min-width: 7.143rem; padding: var(--terra-tabs-text-only-padding, 0.643rem 1.071rem); - - &.is-vertical { - padding: var(--terra-tabs-text-only-padding, 1.3em 1.071rem); - } } &[data-terra-tab-draggable='true'] { + padding: var(--terra-tabs-text-only-draggable-padding, 0.643rem 0.25rem); text-align: start; } diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.jsx b/packages/terra-tabs/src/common-tabs/_Tabs.jsx index 0a33d984949..0ab0390d1c5 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tabs.jsx @@ -255,7 +255,7 @@ class Tabs extends React.Component { const tabMinWidth = parseFloat(tabStyle.getPropertyValue('min-width')); calcMinWidth += (tabMinWidth + tabMarginLeft + tabMarginRight); - if (calcMinWidth > availableWidth && !(i === tabCount - 1 && calcMinWidth <= width)) { + if (calcMinWidth > availableWidth && !(i === tabCount - 1 && calcMinWidth <= width) && !this.props.verticalOrientation) { newHideIndex = i; showMoreButton = true; break; diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss index 345963e0f3e..2d47d838eea 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss @@ -36,6 +36,7 @@ padding: 0; position: relative; width: fit-content; + height: fit-content; &:focus { outline: none; From e0b0454ae61177b351dcf0bef3d73c370ad8f0f9 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Fri, 6 Oct 2023 11:03:58 +0530 Subject: [PATCH 07/19] Merge branch 'main' of https://github.com/cerner/terra-framework into UXAPPLPLAT-1122 --- .../terra-application-layout/CHANGELOG.md | 5 +++ .../terra-application-layout/package.json | 10 ++--- packages/terra-application-links/CHANGELOG.md | 5 +++ packages/terra-application-links/package.json | 4 +- .../terra-application-navigation/CHANGELOG.md | 5 +++ .../terra-application-navigation/package.json | 4 +- .../__snapshots__/UtilityMenu.test.jsx.snap | 4 +- .../terra-application-utility/CHANGELOG.md | 2 + .../terra-application-utility/package.json | 2 +- .../terra-collapsible-menu-view/CHANGELOG.md | 2 + .../terra-collapsible-menu-view/package.json | 6 +-- packages/terra-data-grid/CHANGELOG.md | 2 + packages/terra-data-grid/package.json | 2 +- packages/terra-date-input/CHANGELOG.md | 5 +++ packages/terra-date-input/package.json | 4 +- packages/terra-date-picker/CHANGELOG.md | 2 + packages/terra-date-picker/package.json | 4 +- .../__snapshots__/DateInput.test.jsx.snap | 20 +++++----- .../__snapshots__/DatePicker.test.jsx.snap | 2 +- .../DatePickerField.test.jsx.snap | 6 +-- packages/terra-date-time-picker/CHANGELOG.md | 5 +++ packages/terra-date-time-picker/package.json | 8 ++-- packages/terra-dialog-modal/CHANGELOG.md | 5 +++ packages/terra-dialog-modal/package.json | 6 +-- .../__snapshots__/DialogModal.test.jsx.snap | 16 ++++---- .../CHANGELOG.md | 2 + .../package.json | 2 +- packages/terra-file-path/CHANGELOG.md | 5 +++ packages/terra-file-path/package.json | 2 +- packages/terra-form-validation/CHANGELOG.md | 5 +++ packages/terra-form-validation/package.json | 6 +-- packages/terra-framework-docs/CHANGELOG.md | 2 + packages/terra-framework-docs/package.json | 36 +++++++++--------- packages/terra-menu/CHANGELOG.md | 8 ++++ packages/terra-menu/package.json | 6 +-- packages/terra-menu/src/Menu.module.scss | 5 +++ .../clinical-lowlight-theme/Menu.module.scss | 1 + .../src/orion-fusion-theme/Menu.module.scss | 1 + .../menu-spec/navigating_to_back_button.png | Bin 29303 -> 28936 bytes .../menu-spec/navigating_to_back_button.png | Bin 26410 -> 26055 bytes .../menu-spec/navigating_to_back_button.png | Bin 30200 -> 30017 bytes packages/terra-modal-manager/CHANGELOG.md | 5 +++ packages/terra-modal-manager/package.json | 4 +- packages/terra-navigation-prompt/CHANGELOG.md | 5 +++ packages/terra-navigation-prompt/package.json | 4 +- .../NavigationSideMenu.test.jsx.snap | 2 +- .../terra-notification-dialog/CHANGELOG.md | 5 +++ .../terra-notification-dialog/package.json | 6 +-- .../NotificationDialog.test.jsx.snap | 8 ++-- packages/terra-pills/CHANGELOG.md | 5 +++ packages/terra-pills/package.json | 4 +- packages/terra-popup/CHANGELOG.md | 2 + packages/terra-popup/package.json | 4 +- .../__snapshots__/PopupContent.test.jsx.snap | 8 ++-- packages/terra-slide-group/CHANGELOG.md | 2 + packages/terra-slide-group/package.json | 2 +- .../terra-slide-panel-manager/CHANGELOG.md | 5 +++ .../terra-slide-panel-manager/package.json | 6 +-- packages/terra-tabs/CHANGELOG.md | 2 + packages/terra-tabs/package.json | 4 +- .../jest/__snapshots__/Tabs.test.jsx.snap | 4 +- .../__snapshots__/_AddButton.test.jsx.snap | 2 +- packages/terra-time-input/CHANGELOG.md | 5 +++ packages/terra-time-input/package.json | 2 +- .../__snapshots__/TimeInput.test.jsx.snap | 20 +++++----- 65 files changed, 218 insertions(+), 115 deletions(-) diff --git a/packages/terra-application-layout/CHANGELOG.md b/packages/terra-application-layout/CHANGELOG.md index 4a5f7ddc8f2..27c3140398c 100644 --- a/packages/terra-application-layout/CHANGELOG.md +++ b/packages/terra-application-layout/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +## 5.74.0 - (October 3, 2023) + +* Changed + * Minor dependency version bump + ## 5.73.2 - (August 10, 2023) * Changed diff --git a/packages/terra-application-layout/package.json b/packages/terra-application-layout/package.json index 731cf93411e..165ef4e3d40 100644 --- a/packages/terra-application-layout/package.json +++ b/packages/terra-application-layout/package.json @@ -1,7 +1,7 @@ { "name": "terra-application-layout", "main": "lib/ApplicationLayout.js", - "version": "5.73.2", + "version": "5.74.0", "description": "The Terra Application Layout is a responsive, themeable layout for building applications.", "repository": { "type": "git", @@ -33,16 +33,16 @@ "prop-types": "^15.5.8", "react-router-dom": "^5.0.0", "terra-application-header-layout": "^3.39.0", - "terra-application-links": "^6.69.1", + "terra-application-links": "^6.70.0", "terra-application-menu-layout": "^3.32.0", "terra-application-name": "^3.43.0", - "terra-application-utility": "^2.53.0", + "terra-application-utility": "^2.54.0", "terra-breakpoints": "^2.19.0", "terra-icon": "^3.19.0", - "terra-modal-manager": "^6.66.1", + "terra-modal-manager": "^6.67.0", "terra-navigation-layout": "^5.39.0", "terra-navigation-side-menu": "^2.47.0", - "terra-popup": "^6.70.1", + "terra-popup": "^6.71.0", "terra-theme-context": "^1.8.0" }, "devDependencies": { diff --git a/packages/terra-application-links/CHANGELOG.md b/packages/terra-application-links/CHANGELOG.md index d1bd62c0a47..9097fc4c351 100644 --- a/packages/terra-application-links/CHANGELOG.md +++ b/packages/terra-application-links/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +## 6.70.0 - (October 3, 2023) + +* Changed + * Minor dependency version bump + ## 6.69.1 - (August 4, 2023) * Changed diff --git a/packages/terra-application-links/package.json b/packages/terra-application-links/package.json index 414f6e9e6d9..c44940d5551 100644 --- a/packages/terra-application-links/package.json +++ b/packages/terra-application-links/package.json @@ -1,7 +1,7 @@ { "name": "terra-application-links", "main": "lib/ApplicationLinks.js", - "version": "6.69.1", + "version": "6.70.0", "description": "This packages contains a list and tab form of ApplicationLinks, to be used in horizontal and vertical display styles. Selection is managed by react-router.", "repository": { "type": "git", @@ -34,7 +34,7 @@ "prop-types": "^15.5.8", "resize-observer-polyfill": "^1.4.1", "terra-icon": "^3.19.0", - "terra-popup": "^6.70.1", + "terra-popup": "^6.71.0", "terra-theme-context": "^1.8.0" }, "devDependencies": { diff --git a/packages/terra-application-navigation/CHANGELOG.md b/packages/terra-application-navigation/CHANGELOG.md index 172dbc3dcf1..d073a279fe1 100644 --- a/packages/terra-application-navigation/CHANGELOG.md +++ b/packages/terra-application-navigation/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +## 1.72.0 - (October 3, 2023) + +* Changed + * Minor dependency version bump + ## 1.71.0 - (August 31, 2023) * Changed diff --git a/packages/terra-application-navigation/package.json b/packages/terra-application-navigation/package.json index 5e4febdecb8..8b6af0fa120 100644 --- a/packages/terra-application-navigation/package.json +++ b/packages/terra-application-navigation/package.json @@ -1,7 +1,7 @@ { "name": "terra-application-navigation", "main": "lib/ApplicationNavigation.js", - "version": "1.71.0", + "version": "1.72.0", "description": "The Terra Application Navigation is a responsive, themeable layout for building applications. ApplicationNavigation is comprised of selectable navigation and utility elements with selection callbacks.", "repository": { "type": "git", @@ -49,7 +49,7 @@ "terra-icon": "^3.19.0", "terra-image": "^3.0.0", "terra-overlay": "^3.0.0", - "terra-popup": "^6.70.1", + "terra-popup": "^6.71.0", "terra-theme-context": "^1.8.0", "terra-visually-hidden-text": "^2.0.0" }, diff --git a/packages/terra-application-navigation/tests/jest/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap b/packages/terra-application-navigation/tests/jest/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap index e76a2e61838..d62a7e1cf26 100644 --- a/packages/terra-application-navigation/tests/jest/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap +++ b/packages/terra-application-navigation/tests/jest/utility-menu/__snapshots__/UtilityMenu.test.jsx.snap @@ -982,7 +982,7 @@ exports[`UtilityMenu should render with function callbacks 1`] = ` type="button" > =5.0.2 <7.0.0", "terra-button": "^3.3.0", - "terra-date-input": "^1.44.0", - "terra-date-picker": "^4.90.0", + "terra-date-input": "^1.45.0", + "terra-date-picker": "^4.91.0", "terra-form-checkbox": "^4.8.0", "terra-form-field": "^4.5.0", "terra-form-input": "^4.4.0", diff --git a/packages/terra-framework-docs/CHANGELOG.md b/packages/terra-framework-docs/CHANGELOG.md index 1f517ed1bf8..3d29ad499ba 100644 --- a/packages/terra-framework-docs/CHANGELOG.md +++ b/packages/terra-framework-docs/CHANGELOG.md @@ -2,6 +2,8 @@ ## Unreleased +## 1.39.0 - (October 3, 2023) + * Added * Added documentation for hyperlinks in `terra-collapsible-menu-view`. * Added doc and test example for `collapsible-menu-view` multi-select group items. diff --git a/packages/terra-framework-docs/package.json b/packages/terra-framework-docs/package.json index 57a38e897c7..dede451a6b6 100644 --- a/packages/terra-framework-docs/package.json +++ b/packages/terra-framework-docs/package.json @@ -1,6 +1,6 @@ { "name": "@cerner/terra-framework-docs", - "version": "1.38.0", + "version": "1.39.0", "description": "Contains documentation for packages in the terra-framework monorepo", "main": "index.js", "publishConfig": { @@ -32,7 +32,7 @@ }, "dependencies": { "@cerner/terra-docs": "^1.7.0", - "@cerner/terra-pills": "^1.12.0", + "@cerner/terra-pills": "^1.13.0", "classnames": "^2.2.5", "prop-types": "^15.5.8", "terra-action-header": "^2.0.0", @@ -40,15 +40,15 @@ "terra-arrange": "^3.53.0", "terra-brand-footer": "^3.11.0", "terra-button": "^3.3.0", - "terra-collapsible-menu-view": "^6.79.0", + "terra-collapsible-menu-view": "^6.80.0", "terra-content-container": "^3.0.0", - "terra-data-grid": "^0.6.0", - "terra-date-input": "^1.44.0", - "terra-date-picker": "^4.90.0", - "terra-date-time-picker": "^4.96.0", + "terra-data-grid": "^0.7.0", + "terra-date-input": "^1.45.0", + "terra-date-picker": "^4.91.0", + "terra-date-time-picker": "^4.97.0", "terra-disclosure-manager": "^4.43.0", - "terra-embedded-content-consumer": "^3.38.0", - "terra-file-path": "^0.1.0", + "terra-embedded-content-consumer": "^3.39.0", + "terra-file-path": "^0.2.0", "terra-form-field": "^4.27.0", "terra-form-fieldset": "^2.74.0", "terra-form-input": "^4.4.0", @@ -58,24 +58,24 @@ "terra-hookshot": "^5.41.0", "terra-infinite-list": "^3.42.0", "terra-layout": "^4.38.0", - "terra-menu": "^6.77.0", - "terra-modal-manager": "^6.66.1", + "terra-menu": "^6.78.0", + "terra-modal-manager": "^6.67.0", "terra-navigation-layout": "^5.39.0", - "terra-navigation-prompt": "^1.75.1", + "terra-navigation-prompt": "^1.76.0", "terra-navigation-side-menu": "^2.47.0", - "terra-notification-dialog": "^4.33.1", - "terra-popup": "^6.70.1", + "terra-notification-dialog": "^4.34.0", + "terra-popup": "^6.71.0", "terra-section-header": "^2.0.0", - "terra-slide-group": "^4.32.0", + "terra-slide-group": "^4.33.0", "terra-slide-panel": "^3.46.0", - "terra-slide-panel-manager": "^5.79.0", + "terra-slide-panel-manager": "^5.80.0", "terra-spacer": "^3.59.0", "terra-table": "^4.36.0", - "terra-tabs": "^7.8.0", + "terra-tabs": "^7.9.0", "terra-text": "^4.49.0", "terra-theme-context": "^1.8.0", "terra-theme-provider": "^4.13.0", - "terra-time-input": "^4.56.0", + "terra-time-input": "^4.57.0", "terra-toolbar": "^1.27.0" } } diff --git a/packages/terra-menu/CHANGELOG.md b/packages/terra-menu/CHANGELOG.md index 4a164e03607..a8cf98792b6 100644 --- a/packages/terra-menu/CHANGELOG.md +++ b/packages/terra-menu/CHANGELOG.md @@ -2,6 +2,14 @@ ## Unreleased +* Fixed + * Fixed issue of focus highlight not visible on menu header back icon in Safari. + +## 6.78.0 - (October 3, 2023) + +* Changed + * Minor dependency version bump + ## 6.77.0 - (September 21, 2023) * Added diff --git a/packages/terra-menu/package.json b/packages/terra-menu/package.json index a800dd78783..a95faa069e5 100644 --- a/packages/terra-menu/package.json +++ b/packages/terra-menu/package.json @@ -1,7 +1,7 @@ { "name": "terra-menu", "main": "lib/Menu.js", - "version": "6.77.0", + "version": "6.78.0", "description": "The menu is a popup component that displays a list of items, item groups, and dividers. Menu Items can be actionable, have toggle-style selection, or have nested submenu items. Menu Item groups are a single-select grouping of menu items. The Menu will determine the height of the popup based on the number of items in the main menu.", "repository": { "type": "git", @@ -33,14 +33,14 @@ "terra-content-container": "^3.0.0", "terra-icon": "^3.19.0", "terra-list": "^4.0.0", - "terra-popup": "^6.70.1", + "terra-popup": "^6.71.0", "terra-theme-context": "^1.8.0", "terra-visually-hidden-text": "^2.36.0", "uuid": "3.4.0" }, "devDependencies": { "terra-button": "^3.3.0", - "terra-slide-group": "^4.32.0" + "terra-slide-group": "^4.33.0" }, "scripts": { "compile": "babel --root-mode upward src --out-dir lib --copy-files", diff --git a/packages/terra-menu/src/Menu.module.scss b/packages/terra-menu/src/Menu.module.scss index 918bf7ae23c..bc8aa9b290f 100755 --- a/packages/terra-menu/src/Menu.module.scss +++ b/packages/terra-menu/src/Menu.module.scss @@ -72,6 +72,11 @@ &:hover { color: var(--terra-menu-submenu-header-buttons-hover-color, #111); } + + &:focus { + outline: var(--terra-menu-back-button-focus-outline, -webkit-focus-ring-color solid 2px); // Browser default fallback. if no fallback is provided, outline does not render. + outline-offset: var(--terra-menu-item-focus-outline-offset, -2px); + } } } diff --git a/packages/terra-menu/src/clinical-lowlight-theme/Menu.module.scss b/packages/terra-menu/src/clinical-lowlight-theme/Menu.module.scss index 7c62e538386..a4cb615216e 100755 --- a/packages/terra-menu/src/clinical-lowlight-theme/Menu.module.scss +++ b/packages/terra-menu/src/clinical-lowlight-theme/Menu.module.scss @@ -10,6 +10,7 @@ --terra-menu-submenu-header-background-color: #222a2e; --terra-menu-submenu-header-border-bottom: 1px solid #181b1d; --terra-menu-submenu-header-button-outline-offset: -3px; + --terra-menu-back-button-focus-outline: #b2b5b6 solid 2px; --terra-menu-submenu-header-buttons-icon-color: #c5c5c6; --terra-menu-submenu-header-buttons-hover-color: #b2b5b6; --terra-menu-submenu-header-title-color: #b2b5b6; diff --git a/packages/terra-menu/src/orion-fusion-theme/Menu.module.scss b/packages/terra-menu/src/orion-fusion-theme/Menu.module.scss index cda16c2df6a..1159b5f92e6 100755 --- a/packages/terra-menu/src/orion-fusion-theme/Menu.module.scss +++ b/packages/terra-menu/src/orion-fusion-theme/Menu.module.scss @@ -11,6 +11,7 @@ --terra-menu-submenu-header-background-color: #f4f4f4; --terra-menu-submenu-header-border-bottom: 2px solid #9b9fa1; --terra-menu-submenu-header-button-outline-offset: -4px; + --terra-menu-back-button-focus-outline: -webkit-focus-ring-color solid 2px; --terra-menu-submenu-header-height: auto; --terra-menu-submenu-header-title-color: #1c1f21; --terra-menu-submenu-header-title-font-size: 1.16667rem; diff --git a/packages/terra-menu/tests/wdio/__snapshots__/reference/clinical-lowlight-theme/en/chrome_medium/menu-spec/navigating_to_back_button.png b/packages/terra-menu/tests/wdio/__snapshots__/reference/clinical-lowlight-theme/en/chrome_medium/menu-spec/navigating_to_back_button.png index c5167e5587046d885b204405f4b44d2e933173db..a7d0095c98de618b1a701dd77b202b1fd8ac14f9 100644 GIT binary patch delta 12847 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 VDnI)h`+#T9$;+rn=RJDi_iuWPm0th= delta 13042 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 diff --git a/packages/terra-menu/tests/wdio/__snapshots__/reference/orion-fusion-theme/en/chrome_medium/menu-spec/navigating_to_back_button.png b/packages/terra-menu/tests/wdio/__snapshots__/reference/orion-fusion-theme/en/chrome_medium/menu-spec/navigating_to_back_button.png index 953dd43231363371f33ccef7c552a3251153c550..318af2378668c40b54263209aff28d24971b46ae 100644 GIT binary patch delta 8348 zcmZX330RZowl#Lp_GtB<)2oy+)uK?Uf)WifC2gs45Ccc4Xk>^MLPQ7%VG1OCTB}q= zK_VaolC~hJ1w;u3nG&bU5J(D9APEqW3`XVz2qDvbKkU7Ip8tOy6%xO9`1aoK+H0-% zcfqO-{;C3}cktKlZIyaL8#3GZj}wPwDpW|yzdFD9=9{x$-U&PO+Xo(nzis^X;<|tS z=fA)0F1TH^<+FY7y)S+u4y!x9?Ss{i|MkIxV@GT}{_**DHD7Jr_``dhTbxzK9EefE z&`DmN3-wailozh{C=0Co$R+}I}iW8+o_M6{p^x#p7rUzfm1GB5h$0mP;W&%XeftnqGG_o38mZfC0)N$nr;?4Z=Gl?Zu11 z7}LU_FdkJ-1%)OTqVe9}0^6E7ul1b0t9@ksBv*%n<>r#YA|iR*}$hHbZ90!MUlZP*&I%6#seb%8qwa5n2+n-0A(Hl`*5J6(ed^7!_3FlZra|tqiM9PD=8=bVy#EY zw+`g_zJujEH~Tx3>i!+2DSY7(^DPAJzh-xxtX1OiRL#v0`FW^4i6c#?ufyIw@pWSJ z!oa~CZ8!poDZ1{Y>8#9G{`@ZLMj{Tk9{sAbCtH4fk~f3$nmxNgaeLGDV+G-f?R#i4 z=5-}`@}AztCq3a}o~@@_K5F@t*#~NVv>N;1)S(>HM7E|P$ekbTGkueF z9IR%Zi^mDQWQ{MA~* zE$NhUHs8LKfJmPl+8*&>r@uqa(wJ|>HlAUmhe6#ZVCtvf>amWBtGaY= z@;BANrR9)OQ=&;-k9z&kj`HU@{fqjX3f0^(yZn<&1gm+`(ReK-j zwbpJu1-Xtndxfzqdyeo{2^3lEXq^4sZdY_xj#=C45%cQlC4J{FxiK=T*?U{fe9>+U zee+uD9sjVh^2Hrs+>PlPZ+_LiO+*qa*xENo+rJ!tc9sA1!+7~<_6$bYFSDSI;z*c_ zskvzg=+O`JsjW{MPK-TnB+@-YDhla|Ev~we3|tm>p^nrrx8D~39Qy4L7E5x>`l3GT z#WvAYx|R=FbjBr@LBiatKgiCuN%PN!&pi2vd}exh-MV#hBi353?xDWUz-CX~N5uBL z?!n#t%sP@1xXB$`zA>%!iO0^J1zUrP<+oc#PTG9(NoV2KAkBB7tb@IvUW>D*n?3!S zWXS>7O!8!GADtE41z|i#ZWyLp-Th?C1770H%Bvoypa14-ji|OS##%?+Bx@Z4h0k3> zN&LDd1tWVJBb>?@z8;MxM`WRlo{qhH2BS(CX#-fF%8tBXmME~vXZzYsZU?2DQg8fe zQ01IqlCWJ3<44M*OMZ~h)^m7giIDp_zrJnx>?gI>n(VH?WR~IS+&N> z%KV=Z#k+j1sy-(zv3&|hlGqTcRgIy+!NP%=%m4vB?d#F|{5#la<5C;`&GYRMjbHeM zL%eZ&uh#|sq^EgmvdX84Kis@QfuR!_^rW`UEJn(K^?P3zY!BydkH;L}#$u))U|ccj zq%OG_`gJVZt!K4uEi?KW>PyiE^yf(+QO1lYgJe*7K6|PN#K|@KSzebRL*|EW)e34) zP0BWeVdMLcm!hUBA+hD``IN_(TvX!$_NAM_0D-*MQy5EQ$?3AC{TJcm zLi3dQ(lLy}q?~bEn}%nfj+2&eyQqHlU*Fq*D+rM_|Jp9Qrw`j#6-Y~YGV)1Ewo>0wVl%HSkwL7Q;a_fEFS4o=O6~H3! zsEb{P0-(`j;EiwZMljCT_5nwPPp-aUwnX@9aPmabCTCUyQj`tQLiYAeqZ-L6+A zpcZ(5Xy~uFFXd9XATu)JK^GJUDbn?NIMQmSKlFWm*^oM)H$ac7Q8A&s zK?~_dlr zW%XSxZ5MVU)IxrI-=e8BE-l+?XWPhQ7vha?Y6xJsvM!17sg>1By{LT=ms8G^nXXK7 zw87wwE{$E7c(g{PG#tgzkX^WT@@Xrpv#J37+=6FJ&5qHsJ%i<+L=6o@kiO?+NpT9W zjZaqQp=OS@!AMV(UbN<3`q)K2M%F^_0B``C_(sZEWo7l-kq@n`zEb@C(KF-}XkGuQ zPh|XwB!)eE`0%TNJ-`&tz zi)Cwyo7(n(2>Fc|9f@JVbOww)G-pira5D)JKTtc_z;`S4BE^o*S9>Z-Bgl%4`lSvu zqkU1bEs(Cd(@T>KQ+1JE7NfRd;!dkvy>9(_B@5l|N>6AAycj{5+gG~tQXe60|1_>DypX(DXYea8sSz^8(fn!ubW&*rjvQ#=+>`ob5+iWq*{nd# zLcPMtQBOZu;k_roeqqiI^v~v3m$#(=s-=>|*Yopp=EsL~3{%aM4MA*={Z~IN3dw;q zq2d@CCdI60Yf?EQ>8)_DEq2E-7<_l$_Lkye4_-o7YN(ir&n zOTT@)I1vlK4CUGAXAUxVIf<%6g8quh{~MB(h`eWIm6?+!62&SS$%pAxy_Pgf(sT#} zLC^9WXzv4px(#Pe;ifH$)i!o^J>Uc|8UrQ1w=pm+waXZ0r3^-9+^Vmqdy%GvD8nS} zuUVjaOusUaScnWct(}*|s46l9`#|gVG%9R8RAvLaZ@(>})7YUTh#T;wZF;3mLrhnp zugA>wT65tGSO+*0&H4SVV9kS)Enu2Jy374Q@S8bY#KMF~zmnXDk#GX(Ac(#d)kMv;x+cNB4hQ;L zx0^-w=|h|0tn@b$oe!259ID)}fR=3&J1^(VUBSV-nFnfo)Yz|80J7m-gDt@5i?b{~01kVj)V`0`R^m>HZP(l(nUp$Qf}aief-d>WyPDuY(aFbx4df)?(5LPv%m0 zgMy42kexVBd37_|gDN>mesa+^b~(?+OVjDZUX;WWx}Uq+pmQjz>5wxx*{nEe+sP*% z0m?C)(AZ}S3r6K_2@-5HP6~%YlVn*;(rbB3SHLc+Fj7vO1c@`gk|{c!(8Zz<^bRU@ zWU^J3gT=o%B5EXNm2og3A`ZYLWOx!A6U*>K_)I?VANYi~e^fKj6bnaQg4{Mh}O4x#L4-V>IsQW)wY1Q(cQpj3}!Plyb%{sQNk_ z_zRxHH?GQ-F2Wu4d7VgIb)zttMLT=|$Rof9R$0AlR-?G7aZ#r3qcBg=tZ<{LJ@tAm zh+Mo`5pb@Ho>&OrpUdT@wvNm%Knu56D+?D5_I|u588_)6qM+PsmHEuk$n3~XJC5Hl zo6Yk&9Sb~FRbTH8nt|ttvBZm{lv^$U72xtv8{PNoJ{UeQ zv7v?dZiap%Hpw=Jj%tpU@=kosctgk-E&T{N{Dm+#se+VPyd%6AeIXj177?XwSs;z1 zSqe9rrpI#GqsvgKZl?JtyfU{?^)j>rS`og;kyIK*?`TE=&LMP+2ECDKFj{L^vrFUo zkg6&)xEGixT2_PPbd91g$i4S+ERai;0at+noqhFZ?}6p#b4&qz4zG?bJzJT`Y1yFd zSpL&&P?DIIZ_>#+0eK{ALZKc;6M|9H$APf=f+JcdyLSX-ZVHH%cV36xo#4G{Ic3Ix z?gSzWHi|xXgnTIbM`tg3#%NuWR@fJJf#{|A=?P4{i(B>z!lgQ8@v_geb7O4NlAQ`i_1Y!tyYvFG%67bCL73ULCv7YH|# zoBuQu;lf0XRSoBK*uxEPU97cxsB4M}_EA*j zeY)q%j+{3Swqx72uqv`rE+!xqy6tUg;kr}cIeZF5Y!2|dzZHes*8j~Yr-045v zuHzaP&#lo^dlJhxgA#rS^c=H}oqossNT(SQm*A&|o4uw*E>$dGxBQZuQ-YI`LIg~5 z;+=9T7SJ0;MC#mDfZ^u(7V;*zwzR!$L9pGXOQ!CI z3Yb6{8yF*+@1UmPta$UdC$H;$m9Xche>!=9OxR`3J`!usXRAUx9B3ETTF1ht*AHa# zBimx#Bqts&IQ7H?|1y`P#sd#Aie}G|q5SG|UesvJBQiQHd3|{CEKq7P;WeKG=25O@ zquOgS300^SFpCI)o2E;Wa{)8pLk-&2^aDbC363!Zx(fAH%!H0N{dT<$=ZbGKQ@VD zCo<$}!0=7L&5&x!2J4utG9Xp6lmhA(@x=D96${Rt+!drr;E0#)LD7bKfZ2fL{V@V* zxLlqran*~3(>(=%4$;n?JJ)uy(i6WA_I&)D_UCmD?TYrOg1&`{-6B7QfW{1|rxWI` zZ*VNzcg0#oCsb67q>pUvplXIvy(@f~9C6k}IeOxUaxf)cr{lW#@6Y?>`n~99@@ErJ zxka##EfDrL4Hw4Ox4W?_l4AuZRXJsXZYke*^^;wnhqqJtlra*sSEM&J;6aZd|1Ptb zb!22^K)yg~egoAtPin+u(SBQCern(|4(1^UH(nZWBE7g4b9TP5ZhsKlafN z7hq(N-?hml;A>l_`6((P!~lL^l`0-**}rVa1vVK>V(jb;mnvbt9dTxC9}M59Y^9BQ z0-E4!6%RK|G2y(ec%=y8-W?sxGv9NDPEUZwPY_{{T{f(WGDc`MJ z`5FzlXC3K8s_;;@jdo?6sASrY+KhCTf@?FKd)%m|pQpckcWzP_6lcdVzv1 zZC}iUls%=iqCO7s8cI0?M?oCdVIP^&9q6KLK1QfW>jzd$xfS%F=1#ktX@m>k3cyzH z(7k9_F~x%02e7T6xAcWYSN#SY@TCx{#}#XLLAo>%nCgIUB$};m-JmS?Ab>$M%ln%4 zHTE+fK$l>m1Q_C;H%h3pS%v$rmm55jAAbtyn!d01<6uLN3Oo+;%e%7C?DsR1n^PAz z!vA@Qwi&w_55}yX}&LjKm)m9>y@6o(kJVEwi~9JaKT=R z8@@*^%k`GB$c&LayyX}5ut8jkAjE>&>byM7HB8%`dAO?Cv?zs{xT;YU%=eM$1-=y| zftSk~yE9*z)l9Q%>vT&z{6>sKDC%s^LJbaIkv7nEego^UU1xkednH1ETF;6bvQDk^Zk&ZaTfTm@7jjbcehRA-TB}cR{-#x&jT>H0kw4E z;{W{uUsU)^HHPLG#~oEuNl-T9H1OFR&9k|r*T3Xei_|fIb_Ba_<(a0E*wC*#I76RX zN2VUypYLD~D(XTF-TEBQJi!xu=u%#Q2jH?eDfTi|B-pM4o=z`FO%aF4o_l6X7^uaHL433cVD<`x&=-L-y*Wx!6dhFp zLq8E%IMCU3&FX5pM{LhcaK2lxeYSwFfnsu}Y;}JJE>I8)n5P2|%N;fm!9`XHVE2NRTs8vj`Px-Y=7cOD4p4*QHMz)3(+@qfv6C{yw6 z!Ce8opuUHIqSZBxdIM^9<*29oJK%tYafZIX0*isV`vcuzh6-S9Rg#@M>_`WJGEM|W z9DvVBwh(30KR8%Y9oNrJRrha)fYcHG;ins>t;`FIIn}{ZkFD^$;azKoz?A~*!>znS z@ZPZ>=O-VGUxTy3KGpZ@JTRhhU4sBHYhRyR(fy2fKq&X`} zK<~+Nd+_oH(B*1R0k#91hZ0Wj<;9Tz;#bf(`QPBVng2EOU z{m9YG@p7`VRGdB2&KAeg6+jIL!6t8(v`^y2-(T6`0U`}J8^n^Nf@@tVXn^r`_rn}A zU!Ggn3^E5i`a${fM7?kgYWCbZFWoSS4N8C@X^ev{Q0L(Cn^%#NFVGgfkWJBR;6t`j zf&*9rzG)?K4cN50VHVq@y0J;0EN9Eu*=;T8i)99+g*@`8;4=UgO4m|4k1la47e*k z;0i0;2^0i3SXdki;TvZFZyex25YJi{uWX72G7Q>20klx{%nUpf+)}N;wh+?C*71FONnzZ5ZmSRN1kR>=PEev1aF-(($dU6HEr2nbku!J3)T4@yU^)^hIK_$bx`l-}~&@V_vKNdDc?zxA!wppI=%1 qx5;s&;5&A5OyxVYukf846KCuP&oR=xW&n0r1?~&}_Rcpae)u0lwl@+0 delta 8735 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 Date: Fri, 6 Oct 2023 11:15:00 +0530 Subject: [PATCH 08/19] Changes border color. --- .../src/common-tabs/TerraStructuralTabs.module.scss | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss index ffdd566de8c..69445ee5038 100644 --- a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss @@ -100,7 +100,7 @@ background-position: var(--terra-tabs-structural-background-position, 0 100%); background-repeat: no-repeat; background-size: var(--terra-tabs-structural-background-size, 0 2px); - border-color: var(--terra-tabs-structural-border-color, #c8cacb); + border-color: var(--terra-tabs-structural-border-color, #dedfe0); border-radius: var(--terra-tabs-structural-border-radius, 0); border-style: solid; border-width: var(--terra-tabs-structural-border-width, 0 1px 0 0); @@ -112,7 +112,7 @@ transition-timing-function: var(--terra-tabs-structural-transition-timing-function, ease); &.is-vertical { - background-image: var(--terra-tabs-structuraltab-background-image, linear-gradient(to bottom, #c8cacb, #c8cacb)); + background-image: var(--terra-tabs-structuraltab-background-image, linear-gradient(to bottom, #dedfe0, #dedfe0)); background-size: var(--terra-tabs-structuraltab-background-size, 0 1px); border-width: var(--terra-tabs-structuraltab-border-width, 0 0 1px 0); min-width: 2.571rem; @@ -147,7 +147,7 @@ @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none), (hover: hover) and (pointer: fine) { &:hover { background-color: var(--terra-tabs-structural-active-hover-background-color, #fff); - background-image: var(--terra-tabs-structural-active-hover-background-image, linear-gradient(to bottom, #c8cacb, #c8cacb)); + background-image: var(--terra-tabs-structural-active-hover-background-image, linear-gradient(to bottom, #dedfe0, #dedfe0)); background-size: var(--terra-tabs-structural-active-hover-background-size, 100% 2px); color: var(--terra-tabs-structural-active-hover-color, #000); } From 8ccee94b51193df89a0b331c169ca2fda545b2d1 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Mon, 9 Oct 2023 20:19:23 +0530 Subject: [PATCH 09/19] Fix Jest Failure. --- packages/terra-tabs/src/common-tabs/_Tabs.module.scss | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss index 2d47d838eea..cc2db32633c 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/_Tabs.module.scss @@ -29,14 +29,13 @@ flex-direction: column; flex-wrap: nowrap; float: left; - height: var(--terra-tabs-workspace-tab-container-height, 33px); + height: fit-content; justify-content: flex-start; margin-bottom: var(--terra-tabs-workspace-tab-container-margin-bottom, 0); max-width: 25%; padding: 0; position: relative; width: fit-content; - height: fit-content; &:focus { outline: none; From ac1e884865817ff6db3f532553ae431502698a12 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Tue, 10 Oct 2023 14:43:57 +0530 Subject: [PATCH 10/19] Example for Vertical tabs. --- packages/terra-framework-docs/CHANGELOG.md | 3 + .../test/tabs/Tabs/TabsTemplate.module.scss | 4 + .../test/tabs/Tabs/VerticalTab.test.jsx | 72 ++++++++++ packages/terra-tabs/CHANGELOG.md | 3 + .../clinical-lowlight-theme/Tabs.module.scss | 11 ++ .../TerraStructuralTabs.module.scss | 18 +-- .../src/orion-fusion-theme/Tabs.module.scss | 9 ++ packages/terra-tabs/tests/jest/Tabs.test.jsx | 12 ++ .../jest/__snapshots__/Tabs.test.jsx.snap | 125 ++++++++++++++++++ packages/terra-tabs/tests/wdio/tabs-spec.js | 9 ++ 10 files changed, 257 insertions(+), 9 deletions(-) create mode 100644 packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx diff --git a/packages/terra-framework-docs/CHANGELOG.md b/packages/terra-framework-docs/CHANGELOG.md index 3d29ad499ba..dd3df452aa2 100644 --- a/packages/terra-framework-docs/CHANGELOG.md +++ b/packages/terra-framework-docs/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +* Added + * Added example for vertical orientation functionality for `terra-tabs`. + ## 1.39.0 - (October 3, 2023) * Added diff --git a/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/TabsTemplate.module.scss b/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/TabsTemplate.module.scss index 0c5aa97c9a5..290ecc9657e 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/TabsTemplate.module.scss +++ b/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/TabsTemplate.module.scss @@ -16,4 +16,8 @@ height: 100%; padding: 20px; } + + .content-container-vertical { + height: 240px; + } } diff --git a/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx b/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx new file mode 100644 index 00000000000..0e5a5b4c6b6 --- /dev/null +++ b/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx @@ -0,0 +1,72 @@ +import React from 'react'; +import classNames from 'classnames/bind'; +import IconBriefcase from 'terra-icon/lib/icon/IconBriefcase'; +import Tabs from 'terra-tabs'; +import TabContent from './TabContentTemplate'; +import styles from './TabsTemplate.module.scss'; + +const cx = classNames.bind(styles); + +const VerticalTab = () => { + const labelTab = ( + + + + ); + + const onlyiconTab = ( + } key="tonlyIconTab"> + + + ); + + const iconTab = ( + } key="tIconTab"> + + + ); + + const customTab = ( + + Custom display +
+ )} + label="Custom display" + key="tCustomTab" + > + + + ); + + const longLabel = ( + + + + ); + + const lastTab = ( + + + + ); + + return ( +
+ + {onlyiconTab} + {labelTab} + {iconTab} + {customTab} + {longLabel} + {lastTab} + +
+ ); +}; + +export default VerticalTab; diff --git a/packages/terra-tabs/CHANGELOG.md b/packages/terra-tabs/CHANGELOG.md index 195038def1e..a5803699a30 100644 --- a/packages/terra-tabs/CHANGELOG.md +++ b/packages/terra-tabs/CHANGELOG.md @@ -2,6 +2,9 @@ ## Unreleased +* Added + * Added Vertical orientation functionality for `terra-tabs`. + ## 7.9.0 - (October 3, 2023) * Changed diff --git a/packages/terra-tabs/src/clinical-lowlight-theme/Tabs.module.scss b/packages/terra-tabs/src/clinical-lowlight-theme/Tabs.module.scss index 24216646dae..f7ec56198ae 100644 --- a/packages/terra-tabs/src/clinical-lowlight-theme/Tabs.module.scss +++ b/packages/terra-tabs/src/clinical-lowlight-theme/Tabs.module.scss @@ -97,9 +97,20 @@ --terra-tabs-structural-transition-duration: 0; --terra-tabs-structural-transition-timing-function: ease; + --terra-tabs-structural-vertical-background-image: linear-gradient(to bottom, #141719, #141719); + --terra-tabs-structural-vertical-active-background-color: #222a2e; + --terra-tabs-structural-vertical-active-background-size: 100% 1px; + --terra-tabs-structural-vertical-active-box-shadow: none; + --terra-tabs-structural-vertical-active-color: #b2b5b6; + --terra-tabs-structural-vertical-active-font-weight: normal; + --terra-tabs-structural-vertical-background-size: 0 1px; + --terra-tabs-structural-vertical-border-width: 0 0 1px 0; + --terra-tabs-menu-icon-margin-right: 0.5rem; --terra-tabs-menu-icon-font-size: 1rem; + + /* NOTE: This is being commented out until discussions have been resolved around if modular tabs should be removed. --terra-tabs-modular-active-color: #000; diff --git a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss index 69445ee5038..93fef6d6f5c 100644 --- a/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss +++ b/packages/terra-tabs/src/common-tabs/TerraStructuralTabs.module.scss @@ -112,27 +112,27 @@ transition-timing-function: var(--terra-tabs-structural-transition-timing-function, ease); &.is-vertical { - background-image: var(--terra-tabs-structuraltab-background-image, linear-gradient(to bottom, #dedfe0, #dedfe0)); - background-size: var(--terra-tabs-structuraltab-background-size, 0 1px); - border-width: var(--terra-tabs-structuraltab-border-width, 0 0 1px 0); + background-image: var(--terra-tabs-structural-vertical-background-image, linear-gradient(to bottom, #dedfe0, #dedfe0)); + background-size: var(--terra-tabs-structural-vertical-background-size, 0 1px); + border-width: var(--terra-tabs-structural-vertical-border-width, 0 0 1px 0); min-width: 2.571rem; } &.is-active-vertical { - background-color: var(--terra-tabs-structuraltab-active-background-color, #fff); - background-size: var(--terra-tabs-structuraltab-active-background-size, 100% 1px); + background-color: var(--terra-tabs-structural-vertical-active-background-color, #fff); + background-size: var(--terra-tabs-structural-vertical-active-background-size, 100% 1px); border-bottom: 1px solid; border-image: linear-gradient(#006fc3, #006fc3) 0 100%; border-left: 2px solid; border-width: 0 0 1px 2px; - box-shadow: var(--terra-tabs-structuraltab-active-box-shadow, none); - color: var(--terra-tabs-structuraltab-active-color, #000); - font-weight: var(--terra-tabs-structuraltab-active-font-weight, normal); + box-shadow: var(--terra-tabs-structural-vertical-active-box-shadow, none); + color: var(--terra-tabs-structural-vertical-active-color, #000); + font-weight: var(--terra-tabs-structural-vertical-active-font-weight, normal); outline: none; overflow: hidden; //forces :before background-image to honor border-radius clipping. position: relative; - z-index: var(--terra-tabs-structuraltab-active-z-index); + z-index: var(--terra-tabs-structural-vertical-active-z-index); &::before { background-clip: content-box; // Make sure background fully extends diff --git a/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss b/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss index a7a3d66658f..c4ad604d387 100644 --- a/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss +++ b/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss @@ -96,6 +96,15 @@ --terra-tabs-structural-collapsed-menu-bar-focus-border-bottom-color: none; --terra-tabs-structural-collapsed-menu-bar-focus-border-bottom-width: 0; + --terra-tabs-structural-vertical-background-image: linear-gradient(to bottom, #dedfe0, #dedfe0); + --terra-tabs-structural-vertical-active-background-color: #fff; + --terra-tabs-structural-vertical-active-background-size: 100% 1px; + --terra-tabs-structural-vertical-active-box-shadow: none; + --terra-tabs-structural-vertical-active-color: #000; + --terra-tabs-structural-vertical-active-font-weight: normal; + --terra-tabs-structural-vertical-background-size: 0 1px; + --terra-tabs-structural-vertical-border-width: 0 0 1px 0; + --terra-tabs-menu-icon-margin-right: 0.25rem; --terra-tabs-menu-icon-font-size: 1rem; diff --git a/packages/terra-tabs/tests/jest/Tabs.test.jsx b/packages/terra-tabs/tests/jest/Tabs.test.jsx index 4a1d9361e68..7665fc49355 100644 --- a/packages/terra-tabs/tests/jest/Tabs.test.jsx +++ b/packages/terra-tabs/tests/jest/Tabs.test.jsx @@ -117,4 +117,16 @@ describe('Tabs', () => { ); expect(defaultRender).toMatchSnapshot(); }); + + it('should render vertical tab', () => { + const defaultRender = ; + const wrapper = shallowWithIntl(defaultRender).dive(); + expect(wrapper).toMatchSnapshot(); + }); + + it('should render horizontal tab if verticalorientation is passed as null', () => { + const defaultRender = ; + const wrapper = shallowWithIntl(defaultRender).dive(); + expect(wrapper).toMatchSnapshot(); + }); }); diff --git a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap index b027cff812b..bd85e6b6114 100644 --- a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap +++ b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap @@ -1265,6 +1265,131 @@ exports[`Tabs should render an uncontrolled component when defaultActiveKey is s
`; +exports[`Tabs should render horizontal tab if verticalorientation is passed as null 1`] = ` +
+
+
+
+
+ +
+
+ +
+
+`; + +exports[`Tabs should render vertical tab 1`] = ` +
+
+
+
+
+ +
+
+ +
+
+`; + exports[`Tabs should render with add icon 1`] = ` { + it('displays vertical tab', () => { + browser.url('/raw/tests/cerner-terra-framework-docs/tabs/tabs/vertical-tab'); + browser.keys('Tab'); + browser.keys('Tab'); + Terra.validates.element('Keyboard Focus on First Tab', { selector: '#root' }); + }); +}); From 9436e6bd1e4d0b5adb6d45dd18fd11baaf1a657f Mon Sep 17 00:00:00 2001 From: saket2403 Date: Tue, 10 Oct 2023 15:33:14 +0530 Subject: [PATCH 11/19] Updated Wdio Snapshots --- .../tabs-spec/Keyboard_Focus_on_First_Tab.png | Bin 0 -> 18516 bytes .../tabs-spec/Keyboard_Focus_on_First_Tab.png | Bin 0 -> 16149 bytes .../tabs-spec/Keyboard_Focus_on_First_Tab.png | Bin 0 -> 19133 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/terra-tabs/tests/wdio/__snapshots__/reference/clinical-lowlight-theme/en/chrome_medium/tabs-spec/Keyboard_Focus_on_First_Tab.png create mode 100644 packages/terra-tabs/tests/wdio/__snapshots__/reference/orion-fusion-theme/en/chrome_medium/tabs-spec/Keyboard_Focus_on_First_Tab.png create mode 100644 packages/terra-tabs/tests/wdio/__snapshots__/reference/terra-default-theme/en/chrome_medium/tabs-spec/Keyboard_Focus_on_First_Tab.png diff --git a/packages/terra-tabs/tests/wdio/__snapshots__/reference/clinical-lowlight-theme/en/chrome_medium/tabs-spec/Keyboard_Focus_on_First_Tab.png b/packages/terra-tabs/tests/wdio/__snapshots__/reference/clinical-lowlight-theme/en/chrome_medium/tabs-spec/Keyboard_Focus_on_First_Tab.png new file mode 100644 index 0000000000000000000000000000000000000000..368b063f64b3869321b822e80b09d886a66375f4 GIT binary patch literal 18516 zcmeHucUaR~w5wBJ1f+OCL5k9wv{0l&4j>&t2)(KxsPrO55Tr{N zklqYcx+Js!39|#|xifRW^Ud6QXXbh4k1r1;gx}u3z1LoAz3+Ng5_w-+jr=OpRRRJ6 za&@SRE&;(MRq#!4g$TStz~yC6KmcV{SGn`R`@%*uiCHFL(81|8x>wv*tZtiID( zs(Rg|ZoiwsAeYEDisw3;(`6Q}6<+YU@58`kj~;AK`{2*>!|c@W%wS-#vx z5I#|nR2@q(H2bb_p?YfjRb_pKSBr#}a|6csvhq#U?*9H|_nbzSzXnCMU*@DHnUs}f zC@#(o32~hk?R=S&b5BD%Hb+leG5(Q22UMsaI&+$(Uv@!4H>}k>+w}B&q3qjq(InD= zT^9X{3lf1Rm8Rb&M^!Z*KIAfhFJHYLFwZOL92go|duYjKowvl3(`GEQzB>%{3&cjB zo43JOllw+IRK!Ru{>#FSg&_sS2zuRg5wrJ~Ay5Zqq8FH@np!&gN=0<J&k%(*U|ypm!b7fQekPfzpR9SA|hkwX>7ct+$e(qJc>zdp@5@}Lgk(d?H z;{33xNyEy+?!D9SN^QuC$SBp^n58`M-=WAJhI<0n)l_EZ@^uQ4>!!ziQUQBC4Q&2v zG;9l&Y;}LOZf5YGCSlOaV#%fO%|ZdA+CL+22?@>jZ_h;ytSE!K&9Vt_|ESv&9vU2J z&;GoZ_p$n8h0`&`>~v*#Dt$=BN3`hRLj_;Mr7dN~E zq#Q;|tnKVlTakxc(G#^k;*lx|$`6f)4sk}(S#(3w@Yj_UnzO)e_Xwd5c~Kk{hneV)!cD&RvWdeu2S=FF6~IzeG^?x zKV#x>V{9Wf&wJW=`FsC7B_%`&zpqG@VBjy@?DF!xjbYfcWrv4GG!zIm{E%m2V#dVz zZM9cB=}yYYj#t_Wrv#!bH128GIopFh$HisCuj}P&a$k?DYAmGWVB5Q(#!#I0O*^XFeW@h|XmNUu(i02wsRj)t6-eQ(?T5hxMbU#UGUtC!l zni}iOxo)V1_x%%eO3A{=*b~di@9(eC(<41)d=>{gC#nN@Y_kHHdUO;?roupuLG>9o zc0$JsyjeD%B%-1Qz(;f`B~G%lMNLa0uHyc+9R}7C^e(0;jB%;f4avn zzrUy_U+=8IyOL8MTqMBO*H_H)@h3EJ@0$w-1qmP-mZ)0|6L#OmQr_1!(X=(7?@1Q2 z#_;mYS7qXd=|GNIEHN9jDMK?etsHTR+Mb@0^!|s+-}|%gvR_~M=rn~H<|r(8V$K=p ztXs*vySZT~%}RI7#Dr;Wr5v7v{NC-=^h`WX{)jFU<%T@Y0i zv5^rCwkR|z)#PE<8I+rqeAs>ZN@irsTh#JXMSBukYGf`4t&0 z#K{$}nNZ=qQ+~3za)8R3YSgh+qqoiRk=;=Vt`FR$(bW%JpK=_pO5>mx__3>}gA5{u zw;DK~$QH7}69xj7uSQ)Zg{pJXWO|?I;u_ZeaIVKvWCz-?(g!SF)WxT|`dRM~`X|1T zF0&{F)%s%|h&6oSLbg$5vdi3lfSbEp?ed3#3RiUDv^QF+ZX0LnKK)0u^v?4I^~g?| z@BNwTGugh*^$S9?{drMWjf|$$#mPbn72RbvvskB3HjNKwv%Fl}cA4nd`~-NHXqNz* z@bUB4uFt`HDYrglOo-dSrbX4njYOoMPc5-KP3%OkZftcd?7W=!kd@hgm;0y&$Hm9j zZSUYxP+1slo9&nVNx=`({es`8(wUNW$@&l*C=ecE?9zl7iGwsx*k;FeZrTXYS}#>q zf3##E$~o?(P0eq1sySu$I$bOfNQI!qDmcSn~677qbrQBL%u9?~zub6$Opi6$#WG6^pf&6JI8&G`LYcdjZ=>+rYij$H@^}Bnz?VOxA-oAMg zlUyx1)ZNqbZmKfHc2r^D+qd8R_P1Ikv`mEPbL(b=u3kmiJ2_ZtZwi2CKEG<8IUI2bRI{^-fJ$@&__jH!Vq&2{fR#{3UWOl{Tgk#($E&sA zaLDx) zNo#6oXxQ01aR^HBguD04hO7=h{pBs68Wz;Kfc#iI1%3bSmhEwD7Vy)dh9{I+k405U z!-Df_XM~>G_T@VdTt7Oxl$e|x@79vQCBOfjiLCWiQPuO&eNSD!?rt9dl0)71dc2R) zR-pWRd^cDke`8>=s*0)*OX%WcWzEWjolvjsZ*T$M(66x-<^_p0Qfjt{1N@x~?QoT5 zkrw0uzRP0w)aJ%-H;QY^UXE37{*KQb*#IMKKh^tz^}Pdz{$fWF9-_kD>@CpK46k(J zW~Y0BE(kX$$GuJQ;jec3y!sf!@6v>ga1tn#)D4-V%Ssxh4aVEV%Rd#LAOdlBO_Wm$?3FB0{dzV+RxHyk7?2e&5N%5u=9ub?xsp1cMf4}hs zFxY-sCmFEUczI_jQyj$9Vm8wVc=nF1En*2Budl1C$sYfzrYSCDWM)|F?p;QXrIjUf z2BL6dFBi%sYwMT?y1FV}I+VnPZn`qfW-o(&|1&Z8L|)_GJ@2QRM!~Ot<3+FZ-;9TT zn;i@Syh2zw#hd-kB*)h=(?$Qd}0(z zjOgM8C1vFYi7D|=POwpKV8_hn<{Kd)ckq#82f{;OX$hZ-5Y%y7jh3 zZ6ENqL_pn8lw(g?VbZ-@QtQ&+zN;7;%dM11lNJoCYim>3W>;rA$$3&os`$taK8i_9 zc*72kO4w<|omW#uf+_da4Ys(ko++PaJ^E46S7o+R zEk(2tAJl0D6!#xJ@mUgPDT<161KAx)N**5BzL1!b6fYKFL>?Wd5Ek_12FO$DOSI29 zsA3h?ZZ%w|oS2yK-#u}k_!J-)fW^jeU1ORDv;*DJ!wij7Wxuw#A_~T4;3`5B@v|CF zLA(0;xai`Ld%hq99y~}KoE+_jB0$!+cfuRcy6WRcM1|L!B3*xu+8^c@+C%S}pdzDh z@!h(yv^P_4SOvQP{5CbeE3#AgZNAM_o#FtB@YXx7>Y~M)n|Ti(B#KHia59kLsW$O| zlFFm+vO{Tla#5$)uxD~*bm!-Sj@zJGe`n5SK}}5@q|`_Yus+Q;)9Qwf zw<-R?8P13F`hn;vPHMnwZ~XQH!ghGuHpf+#KJ(z_#UKKm(tzX?N#}VpExytpzw3$H z1JA%6{^Br!ZG}sFwaYlp)rCM5E211qP6SfmYZgpQ8Q{R%`XAS0#)M7d%)fwVhiHyC zls<4~LPAVKwUZn#5}G(aZ-K|79dQ1rAu*$=DRq0tr`$|0P^G7+0sn)2w);=?HSRgc z*(Y27Ve&u))K8Z0Z}Bgs+2(L8)vcJmx&euUH*6V|IaNE(^aC!W(H*8$`Z5F2Lk~HX zG0~DhS39;m>Ah_=tRfAUjIR;E5~a!L%0y ze*~!Jf2^0=Pldk?hn^LFQ0|JS*^SAkx{qT1`djS0;`*B+`u|ELo)%+S>wTRy+U3TU zAgAD#V4md;IT`%`eite#iy>dESX#N%s6Uu!d^f#oBvFule@Qp&9v$jnwBbaXD8Kjz zOhdYI+zZL~MrI@?St4tr9!48~vZ|@_?nIiYA4^L^#RrKEbBDLfjhqj_r*nL8w@ahE z6ri5N=-P`f@-VX1_v@BrGeZPfK0s$57-`o>*UWEDt748ayoJ+tM3&ZZwEW-iXh;-9 z)fQYaU2!gv|WQuOV!B`k(?S+HEXZ96QrLft)9+NMyJlL*66RS6rbH^&lxwSUz5 zS|q_WvsrQo+=7wh2U&Hzh2@a=fm<*_hkX^bz~cBCcKq49z8aD2fw4Ey*%vG zt!Yon##q6aQSbiG*FNv-RZL384^?lhw*|C6D8{h!#!tVm%03GCaJ?zv(#ovPQu_K8 zZ6l4--nd{Vn)Ir~?t;eOHF^zH4_XQ%7sr0EIKK55K7bLXd&`9&bY8=kL)$7fU@Avl z#m0A?u}^UwHf2W-d{<1OoP2(Lbb4dgqa#8?rAw3#PyM~m5Zv<7YwfEwSQgV2{qsG4 zOO0uTax?UmEpQeKIEJ^^JC!Yy1?wg2HR8BG7(7<;9QKt>_9vXGf|6>=WlSp+z7O1W zt4M$H%Cd``(_|uMd2>>`_FeKdW`vzHd3CE+%PJ3-$%E+n74jIXn5y6zN~8lkboyvS zGjN`7=;H9e>%)=ycTWNc^=sp1Wpd^>Rj`Pkvde6|a=grrxGYX}vofgF*sEg!-aEA1{6&PYopTmV~8z)?>opVruLb9`{kdfeC zz@Jp&NXq>6ah>#fI0TV%NLIHOhj#99_73a5ZQ4fb*sR&{OR9)#6-Cp-$JIAgO=#Ll z*L(Pzj|+~93;`RIS4Dd|^O#6yBtmf#Mfc^lW@TI2KjuA;e!Ao7Xvyxjmh?c`wt>xvmOg6(r~QFR|fm-OsbmUM`q3OYaDM$Y8gMlG9~2f>&bDK6|ISrVI; zhS^%$;X!HhjA`7R1Ter`){DAGk?^m@(=C*dN2kK6f%9^3J+2#%zY)f|^4R*(Za2{ubkwY+n&Mn-~e;b)c~?|14v5{OKH%NFkcmZ-U5etAD@# z&LPq^Nw<89s0evIL7$F%1=0ppW$(6A73;Peg-PkZ%dl&vdLF&-y+@Da##CC)-*W1@g^=x34F1ZBD1xvr7=-Ryx|GUw!? zYvK8;8##aM9VRvC$@pCd>EYf&)Nxsh!Zqh(Le~L(U%Dru9P)qOo{r?04zG8i)Uw49 zS1;Wxe0HhsSs`@i*-2%nlq;%!cO%vt)vvA7&)|CPQNZhu5O%_@QHNTO+aXEl0` zy%0;Q8`d40A26YT@;uEB9%K7`F=VZqUuYrwcuNgGOz}{lBi{Hxq`%pw;qjEZJNX6= zaG{1Q<8xre+$duRcYhZ$ebmX&#kBR>W1;xWXc7MRQ_r9LpGn>S9Hon12PvNIOGPYg zsi*I3u_~O1e?H(pA+Z1BB%-m%d7sPq#jjvf19-;;p0sKRqm|i<1K!-+%)}>?038(Q znBSTVEp=eVQx#C|b0J*GQdrdAx$*u1r?nrlm!oqKCJ$T^azW#u&-0-E0(T=>F<0|Plt?j8bUL}ZdfPY}zAL8M-%Ud~hII7NL{~i(|GblMA5*?7P#bmfn35{h zlfu>I<`&LZLlR3ME_zO5Pm;Q%W2}M)$>g+$x?4OSv3!{R^l)*scpk=FBop!@aVfF1 zDRS*$%FCIm>{u?-W=TQ79{Rbx2A+Ok`Bb?O zFa+#KorHd5e#_?)2O~$Z*?}@Zh?_Nmw-GtDQB_}d-ERf%34Jgy4Wix3_3AJ1mJ>DQ zWxeNoqh?Fz0mPRO7gk^o!KqT0u*_#GP3qJ#p5i`g8e(}hq^4B?u_B6ydR1e|OcSqndby<8hNb*YMY<{ba_Ri$WuBZr9bQqL2CaxL+yu8Q z`1vu%B7?hm4dF_Z-ZgQ0O;s$`&kTa=_y~@itIxCcYwOnRTolc8@;ZqgM2ge+tRoN9)Mlr>W|yas)U7L*G=l+8Q^PWdTPrFRtk;8Xt+{HiYJJFYcbn<4_Jyw z?4t+?4yty~+TZZ`IKHWzL2Y~b9%HJ{1?zQ#`Sody?)$6k;B3->bHxMlL6KZv5UW1$ zcmN7$9%9ICjWXgIOY`eB*)^ki!?zEL>MuCdhUX>SZN*TECd5aGrN_sJrQe=@LA%Cn z1iOr!mpMF82&G-k^+S!cRdkoJI!_1qL1jNTuwKdtvAGo1)m)~JfAYQk2iN}m#mj&ZPQ2<41qGk^{Mq!k^0Pkby z&;|*hAmW_%d89lO(?0bv3)v#`JlaO@q?mo|N19B3F^+aOZX{Xt&9jrDu@$3m8KcmUnvDWHCmkHDp1!Gub}Q3tY0-Ti zWQ*Z=s*0P#6-_y2YFFy5i$h9Fozz09K~6?wy|n}!RIS4wL&`zYqyg;H;T^G>z;kmR z*xt6K+0oSo)+vT)syOO{qy(6a`Ba1D1o0>p+CW4EtITO4bNOli8<%|^kp*RZ66`g- zW7fSo9u@+fmAI&<-8uK`OjlqRbLC!$z-Zuee%_LK9-tT1=C1GNClC>~4`H>m8?|xJ zW)D2Ym?4FzA@`4ev3bYFwwvBGk!GGUkFU3-4fvSy?H4lqihh>LYS^{~cP`#yA%Gia zXV2vM_|D!)7H4!>k?fdv@sC9&U?j4z;;=^zdcfFA!u}z@_sOt4aup7GZ>zhH@&ffy zdCTWS$J!TPs@(0Qx9`Zt)n}i~G<7y@tDl9f)qG6)Bu3KZwI6cia(?Nn-FBDw5!_W? zWoxzJMn^86dbm#WI;9BJ@xZA<_0sYyPRs8ntGN*;pG|z)t*71R@O>-L{L5*Vc3Z#R zAu}FR1C)f4AgtBxrkEOcewy2>6L5B9_mY`3d%zhoL^RL~bRb#QZq(pJRV%{$Zq0b} z6SvaZT}(f7dMY2t|LZFMd>K~K4tB37&v;L~rVYjoeNKV8tp1@v|Bw9P%nRB7Q(gZ5 znzq1BGwj_D$5(!dTZ9Hf<%dKR56}6;#k1wgc+f3;o!h%Hp*65@RU%<|eOw7t(J+c? zSnYV~<@}shvpqKpoJNca+1Qsrw*z@4{V5xYheJqiX^fTIKBRrl*cod%9(Mlr1)o#E z{>(dF37HuCXzdnZYw}w;jC^uoCo`1uo8wVVpBO(##{xupYu6LkW$&G?OeK_h7Zfdv z8}O(mDcdsgvnBb!%NaU<@0-}|t9y>x<9DUp;Ni-IU*7D|*DYJP;Knoxd#7aG`P&EC zAk;I{_9?8aeRiXi>vO*d48QuSkq3G8(pxKZQ~W4ws}um1GtdmE4rqrz{v=hoYGc7n zl)WXzJB!*@spJ_9Y|#*5*???&Y5MNxlqqHH_SXmBZ+9I}rU#q7>Ny==;6kY$o)ShH zc&{seit(LHxVNWF2@VU$w~PX5348M6SVq!6KJDmdDrd#mFw-fJma;$kNX9|M1s`)E z$fyDqPxwWLzhJ)6;uBp!5VTp-vGvO^mb={;2P(~stxyAmhqZZI3n=UoV8>m4=z+x% zY~-M$rtiuV4H!zD^Kl^1ajrQx(YuU!`Yu1g>jmoTjY^ZSL6%9KLn6IX|MQG?k$XWT zfkah&Lt34mbjsXSn(U!a^UOz5mxJ|~WaCqYP&phT@@LwqJqr?`>OSKKwqpVP+Kg;M zfC`hUAc?^CHZ9jU*jjIoYi^(D&`=Ce1^jE-1lZJ8!M4(6x<-MDtX{l0;K3`hI))1Nj5%57`Z2&_Hqk(dE0nrxLL+ z2!idHY$Ps#j(=KfAebK`>>2zm@2%BGr~IdV^zR-WJOt#|rq)g}q$qzM*?1rfQol4Kc2yQJJ3wR|^smwY5A`L|_NVsyZ zL6k#TymFF<4U&w~jJqZ88g{9Zfs?VX+8owxpXm6B)!|)q;>j4i@5^o_p7^W=W?h3X zh=Upuq;&poF$F7HEb)ONUuMwUgD3VeTo1~hZ*)AXB{GHr&4nODZ@@}G-IlKZ7l94C zrpBOYV9cEa3I6f0QtU%rlaM}86pKA5X8`qw|TvH|781x#IyHo9QvwoGZVMb2fooI@&>*@j3!7}<( zM8J0?FabGqmy^|*4A<>h3+;0D5BoyJ#tlDkxkBIjrMdx-M0`tHMFrPw#q!x*_$?-; zo{`TGIti#o`ao?4Zi3!bS~{c{AgVWiHS&ibBawaf)?>V?1?04gn$i2#QiDJWqzH48 z#khp^LBpKHsj88er)=`_mMjGR?$RNkwm~Ji&BTp>c0=7){MurMT+?S)4DWLB6&a&6 z2edR@Ioj_mNDKvq%{Uj%682Zqw3ya09G_vI@B)(~dmq(SYYf>BhBYMY>(jtAyJio7 z@}fqsmK}|B8p)@K0L)81&f{WzlF;usG`}Se#LuG97uQagoHZop)XgRhW0tQRn76gI zxp4#0(mV3_DvW4K`hk9J$|HRedsm(7)#B0RZ8JU$J6C|Fz>DjdNpx&P03`z&ZJQ*j zD_?jSP^-cJS#9BvvAF49T>9IGM;h;*GU6@`oV{<19d7wg=n4ffkZ9te+G68io& z#rt+}G;2*0a9Gy^%2jDI>DfO2^ESb3<~9)nyOoFm?=d7E|U!0R3dAS2BbK= z&Up2ig`5CcLZb7D5J=WfYuTC(f=9~-T`3U9s;|{in<0yND)p~}mTlm^K6GB5468}$TPA|1&9-Quy z$UY_*mn4+i?i~IcJqWNwZA{ek4YFbG$J(4)S0SX0iWM{m3~s@9)`60?us$9fAA^{w zrD#2u^i@TkK3$n=2n7H^liCH4P-UjdGb9KCiOAp zoAjg%4=D{Gy$#1*IeQ&7`hTRaoX`C?{HQXF=;)m0by+0~Oa1k3I8B>>I^dtbZSp_B z%DSY(qE`k1X_}u^8Uo+4baP)|JMw4QPDSyGW{0SW8|Ulpw<_3&d3W7EkUSK!uC=;} z!X?6N%JK4y`-iS;|D!z9Km#Opz_yYcN?OP2k|cn34vtF=R}wDG5}d?ScG@tv(=>8_ z^$);K0EBxGOfqFO| z)y*^LEJ^5l*+up=tsGHYhh&rL%^&17| zi!S~o z?E%D7hT~)Qp%Z)iM-MtpASH5XJgE!$+kqY|ehSsCcPGM(p#ZBv7l>KY$WKAAV1|Ms zx`XyWuNF&>=aE%la8*tjH5u{oz%eT#8_Uyc_cA-wK-@%(e#&EhbwX<}Ip+t^f&~+# zUi4d@rakgx+-mfVGOeRoxlf!M+8y`Sw)x@Wwr>QecOv{qT@S|eDprY8BhCMwlXX(|4C&NV zVc<=EtUa7|dS`D-C@OsTD_hXE4Sh zfN*8#x}3}CnVFXqx>@EeyxV^&0Tg*nUmOuP#FKCfhxHKn9G|y(QBGUq)v{*yliIW{ zoyRZuziDny>m*QjWvCv+=M;GN#DRX)Fhk^(*WC+2oV;gZPLrxOHWxI9EV@k}shb^z zGZZN%ohHPHnp9tLS@Gl>3yd7(8=Z?_B-gD#O5%?ywKOsIttm$V?vH$Vf6*o3B2G~0 zlIiDYXbg_#PyrSRNPr{RC;GrxP%}2uI_6o-q^Q3S+z`VT575REC%|nf4dxW{6;Yyq zGXdQz;dzhF2*UK$QTc#H2gfdp&utFE{4A}m{B2Rp4!-IPDz{n*RB8Y%?rlWGz zHUW0T7!CSl#s_M;y(*V=Tv!J)HFPVOvtPUQ(Yq2Fiy%Z#$Q{%_owQYGsG~oA4(1q& z3wlw1pjGsmLSCU>eP_4fjzD2>BIu%(7hSzteM&7()l5bH5~xkVBRm!vbh$pVUcU*Y zYiZQlQ2=J7?(L>7T?t~kzhkP77S93VmCZ#drph8PJjkmOV!A^~(X1pEBsz-K zOF$yfOiyFzU|QqKes~d&{8!FM?l=VxFNw=d{jv~=OUwrFOZMeOVj!*Hd*~d7%7F4J zJ83=;D2#!+3LXoYv_nVl^Vm;ltuq!WhGt`OY=$bwEXPS^BWr8^oUKct;g!BfMlPXzRSoyW&Q<4T|7!|Wl;@TiY|S1tMOP9k4@BR{BmuKq5>7#loB_LG;FDuIvw~N* z1)fe@n=KP27Mn(vy7TiYzm2woAZ;~gIs-B9S}XP zjKJT)8yk>sj54$R8y?GvZd^XYtMC>pmd1U9uBU;FV`en=u`o6pD}v7Zl-rVOwUiv! zxs%1ys`6UzO&k0vKHf1U+KO$f?1ol4fnEnS7iwY%*e5UtD)O zOKr#_VHC2Sn_7N@i`k`MNI*$2dGU9Rb@`z^;g605lLs>Ct+B|bi zq=1Ip16`H`>Yi+sA*4Cz0dpX`c#yl6s!9xzw}5&I>Pt``wT8L_z)nbx!|VHJjK6`b zSDMWQH1)kxL##uAB;DWA!I@yJY&JRZG6Dgkhm}oZ_iFvtem*&rq1J||^G9!Sl;&IR zH2u<-e>}yQ8Yq;FuRIS%X?n6WK{Y?yzZt`2kNF9d84!^}K~g_gHxd zb*5jW^;xk10J=1+|FTLx=33wT4oLwD`YF^mkA4M-EO$z+m1*T+nS*bhEmCK-cS(?{ zQS#}Zm-x3p5>UdROCIUgT)^jymKa-@7VmLcUiXRu5h; zaRpa#*-z$wt9om=F|K`*P`OYUu!7FomYT`WD7sbtV3K`f8!bPFHWh;}Fr$_9!Xb#} zHMi`*1(&7iQD(O#TQ~>LexuCs=^nA$^5odk2OXR)_cG=3YW-Zs;CNWk#L38MlI`}9 z&ctbHpj@FPb0xambO6$^FWdmRH|5gX$aXR#?{%zW)48xckY8}huC{ejmpQZ3?O$x8 zh&2`eV4fY=>T*6EOxXsvZ-CO}j#JED>Kn6JDCeoL5i#mNJPC^F;1&~Yf(Y9@laAN( z+v>-3Z5q}{`x(>Oy7YWPGuJGB&#teO&AdWD@R@vn+JF6)FtToHyXWMEOYes1sZu^A zB;hux!Dq>EQ#ia@aR=#mdQ7>TQ$JEp{vLhL@Syi`Q)-uG&Oo(rfHX|>pb^`NZajeB zARsWo@zIwr@w0Ws4m3(3I}B<_!`)_# zRi+-jtjQWE06rnM9#$8z6Us4xTD(;E4dyCTnd9pvL`Z`^c3;YEO0JuljYlI4Y`mB4 zJOh`KjrQ`{LBz<4*VaL((Znre7CCo+!y=3z=!2( z<;mQsrWz0B>gKG zHYPn4@^W3#({xk;&DxaMcYM8L|XnZCs$QtU@od%miBIQ{uF2u46`un2SoRPIfB|r5K9yl9$B; zk0y#3--^{7ILQQHy=&8#Y61nHq_*?OXvTE97)nKPcauDI_~c^s4jEf%oedU#;nSEn_$a#+0m zb%W>B-T5$=t*5sD&c);G-CCa6*>w!YKOg1wu8%~UJaw#*ECn}zb`*ZFm$u(By`y=28gcMp$+Li+-ZP1Ox z?yt!QAW7?|yR3}a0g9*Bz@_VkdiP-7XK4fX z(^%~5)5hxt8^;!g`)M)({NBfU%8B8%Gv+(*Sh@KiGm#@XOAk@T}0>mB{sP{FL;@fMTD34LxaE9UBk%=9<*?ioJ>;!nz`C`rh7LjtqFN7&O`QU5SCGJN@+ud#NFEN4uoT=-p*IVhgdO70%86O4WV{qGLmrp!s zsTl+&W2@^#>j1d*!-=EC94l{6Apm%{2b$*95}0~=bGN(ZAC~q-8sO|a6;aulIn&t- zHFFsYesc+-Am{g-2Hwaxz#5Jg#cC~MGETLUt3S(UP@Ft`(%l6n?x+*CUWkN$P2a&> zN^9C7muWn3GMxOxBL_L2jp^WVpI?@;M%6X-)Cu~D1s=ilc}l*P%i)yiJh9P^$3xpo zQ6X>|A-2*+Y_a zdjCO8!Pb(Rj3oxIpj& zCGqtJs=t8JsXo`S3< zC3K>6kluT{6Y$&jK4g`~)@7X~}&9m5CP3w&(G1gVzJbJY1D>SVy$x-Jt3^ts-beH^L=7$t^B3VHlnawuk zXq}FsnZ0(ewMl|AdR%Kh42UF-qMaLi$;m;@M^3|Uv#<_x96{jGT-zyo{9tK`!~H)f zh(&~w9QO!kvAA~ph?r15xg;XtbF1|eSkCPPL}8aUH7^tmxOYM!J$fPE+GTx_X=NmYeT4GpLg-6c>kkADjPovqj!I(=; zUHxT)v9q9AD^0(GS6GBeE04tG1o;Fqt%HPX94)C=~#m5jVo8K9DhKN=aBLySOKq5-5K-tcXD;i zVd8a@F;G<#6K1ISbVs7I%WBIFC-9BY6sDIy4${OI!$KO#q_9q@qlEo^PYPJ|j(KAU zor1hP0ip5s@@PGW9`a=U;Y;|z2XB*-9thK$`&@xfgqxb0K78`zKDOmXk}~)NHtoEV zuupt3Eu!(g^IXzvcNq;mjPU!iR2^Sb#CzHoZ_i|`{-yFe{+C9m03MruZdR3d_4O}L z_K$ogPiNkLc*z0;nD{cUpC4O(WrX*^?&#Lu0Hf5=PUp*beoG1m5G?7FneTlaQ&NuQ z_U&kGZN16HHl9;pOLx3e;Y$}HtIqjL)4TslR!$U+@@r!7cpVWzA)R~?+Bj>d+ zWUM%x_vE+?(@=YaM?}=Uyz#!7T!H?s^l-J8$VRuiqN3s`+H-%Usk^7AkV}t~=J(}i zgR8iS5#Y>V1~MO|LIkX+_QsY`WD370)o~Jp|L1sKAm7m%C~a4N@W5n~@u-;wYI9wT zE%{s5m6mTkQ~J|9PaZm6_;NodRI5I!#aFiKN%e`m7Bz9W{$ zd84-yj`bemLT)$FID9B7E*_{%euuP3imx4O2#(wAX58kr*2*8%K5`I(23}v{U=b1u zY*32k_Nf)atz6J{P*(MsppK4?XWYqe3Bgv1Yzqr7t}51A$L1P6yqb*W(op)rU1yo^4pL>%qy^se)T%5l3)u0J=F-pBJqhDjd!CEp;fU3iAE`$`@g zP#e{!hxSwAs-1D}N|dTzK3#QR=`!zx+nANLb@}2h9o%phq3kiG)78}_{K>~>c5V(n zJ7Xzp!UOv-)u6?9dA-pe@F!9H}U0IQ}Hi-fQ{EWaCSH6+vyYvp*c%&i|7jNfe z3oq3L7Zk!*8bnN|O`RGv`yPJr5E6T~SYMPd-(MbCZdcjjqx`;Y&aSdH&LY7VJ(*HG zZQe1_Kyy_8>wCr{{R5G{{Rz>g$5z$})2pkJ+ro@0o+#nAoe8m8}*)YkSIuF-Sm!m+y(L?Re_Bw=@VR zsv5vI1g5GalKP-KVoQ}0VfILbg3p$)18E@Q-8}+I zHeIC%s-jfYihPIYnlg3Om*-hz*v?69eK}$JMkA5TPoKuN$3w?=bojO#YJSw&F?vI4 zhC6-sSBFL1mmgIw@3V`38Qo2Cta~$FK3=L@J~@@N)|!*gv$U{NdDuD(pI(6bp{|JU zerbAH%pSbEOCV`*NLFdUA!bh-NNoHxsnGrJT7r3 z$+fk84Uv4ErbO*9b=hJWM59Yn%bdE_@C|aHIBB}z@W2uVy9%57G@vKxa7|Nl4#aLc zHZ{!r>vI%x>8Hnb81!eutblcYfe}8a0dz;(BVM$$v~auc*DA625Z2eSFP#~n_{F1<9k=XL0Yh<>@YcaY#b_Hc}J#^oFUEMuQG z=rZYaq8N2jXP^;8&w13pvg|22QL4hxMGXG{!5 zZH(luV3FJhah8>9i_-g&QYM`ufk=b2G%9MU0@#5lNT8cD1Cha;mCuFq`@j$gJNuy$?7O&e zShPVxVrphFy5_FPeTB8~>Dz-xP^f~I7B$i3%QM|Qz2R@7;#z*%{H%<7%r2jAkXG+6 zeU-s&xr|+RlgzjfQu{Eds7QuKB~rk;m)o^$U|Qi2%Qixjsyp9piCs zqly@5Uj=!J?K1Wz-QjMI*czVpyDD?AFbE2uqQXl+`A zYiz|WmdA;j(QBW_AxArZ6kBMb__)yctkibxor>1hwrf=9c}%9*84^VOqu8X(=6Y=_ zS6g$$Hzp`;epHa4xNowvPgKbTXWitwkyl;){-HG+E*1;elHkx#Qg><^%s_AM5J396 zI_Ve57t71bSv0hLR2@2v>qfb~Ym)qOb<4hYcgxni@^14!3|r61WJ)f|e)a0r`IA84 zirkE)<^IH=HFDHKXk~MM=gjF-f;RolJ$-sgUS9YH`7!DbF1ILg)hOSjx<(tqySFoa zS;Sb_!$e0FY)taQpcgMr-*=B*?yEUSL{?OY=GClNfFU*;ixT+DJ{t}RdN|GAVusI5 z#t`{S%cedumpT$>Rv@;3=IZMz)_7lHu^A}xzl%=@0@Yt=LRkFX=e>-_R(ft#A_vrF z6p^O%QWvV_snTMJ5cgC$WKZ(~d#1c{m_SLoHeIv>rcFV9bFhDle^b6&aLy_jeA z?Sn7-lgd~SRS>x?tScksjn_>J&mQUMfU!l0qM|gxD9nIe4Kq?-Tg|Ol*-aW#Q3O=M zg-f>#c3ns)rf~Z8=(N zkt!DHFkR$4z)QgBA)b|$g-{++j==$ zd&quSMUK)v*UQcu-)^*j%D%9+-fUBS`-oCEv+{G0aSdX|8ee&S`UdB87T05U?^9+o z)E<#56VzJzda{MXweQ8(75Q>z>%=8^&CbPz4i@*ZD(>y^ubxPvf~faGQk3vN{!!9+EaJqZ{qH$`U-03))ne8>p5E zvk+&kXqXWm^h`>9Zl-01gcXM2EZyUZ;zT1k28#Ez;UVZ#Ih>pyK`5|;yWB|!$T$Ae z)ZB0#=H#IE_w%q2hl4uNpR|!pjW6ZiriqnLqvRPlzao;ay(wV3Cae&K_q(X z@*Fgq8-*}W^3L}WsDb?6i=ih{cbF#hu9$ovDo(63_sH4u9 z&fjwlZBir@!#LH%|3Ms6XB{_xUTz=~OBETAqx37voLnfS9~F>(j!5Q$_MZ;%XjgO_^9WvNcLq=l8*2qZ@{Xj)iadQgnl4>z3%bCYx#^!R4 zbYDkk1p6@2}@8Mw@#2C*@<%Jy)kR2zB`Lo;%0X zzHVjW>m|6CX%`%hd;5@y+ApU!v-|`6g|T^(13!F^PoAf%a>b}CtukF4N&sI?5xH8R zk)9NR7`9w?86tnB_RcDNkryn6Cx`bA6Fu{2)q<^!Rp`a7jE%dhx7WXET4o~}Hz7+l z)+YC=<5!h$%+WG`%A7HLnjGJeK#I6W{K6<6zmS7yOr~yb7rhhiwoT*M0imW58;4dG*-nz z6*H3VYYD2w$%2Ljf?;PwZPIgzaC_)%dEUWEsAP3)mnn>_vvG;PpN6sb^IG>TwR@V5 zb7_`H9g#mQ;1aw)p7GF@X07HaGp7{-HB!@~uP37GL+8HSW3!4_Sc<&q*{gTf{Gd+{Jm8f$0UCZ0#xcU5- z2m8vRf`|@Q4r^0rCHxr!QA4NAWE#dvgmbvP%nVg;>?qDEXulUhz`D6sEG4MS&e~-1 zds%kW9^A#e%{*{eD<8)gsC$o*xgqG?y&c}On9?FXs_RCpQty6Qfu|s+ci&bpYMXtS z9DHm|%1e9V`xyE*`Y5FbH3(#MC?xer3)MPE>YkyCJJb!{ghV|m ztd$w)ZcsmpUYvMOMyKfJ<;14`pv`peQp0+SJukqf#Hch~$X6QQn+|MNgO*`~pA~8e zq8Du}9)}0|WyqV3JATa$zA!W6datUCJyj_wr_kI7Sc#8wO5 zsrz=C?4UTIUSDr%ZQknGv#@r9XMlgn={gmnxsssTeE{~@}Gu(YR$tyMoA z_d6{V_)(|6N?4R8(1<(d_SY6UhF$Z=_4*F6Npv*57_1SctF&*tc)p@u67dbj1=xvc zS?x`|cXN1-iN1IMsxT$oVjurDT{K9nyjcZsiKr4I(zhhy%a8c-ZHSE^-@Z|&vh-X_ z4(wyOin8tc#*hl2g+a1^AQXM7Y5L2pPUj+14>3zlM7V^6XB>Zw;tP~tW;=tx=Z0qI zcotAdkw0=DIf|1~h?C;yV?Lw{+)o%bix}a)YW2Hx<3+;G)Cqc-+lx+uWKm5x%uMM#3`vsWz@ zjprPEAfxGg87L+SgkgWKr=-i`d*otOOX@cD)~2yqOGcqP-6FeTUET47Hrd4( z9Z~B0T@wuK{Mq56@X-UiQ zJQCLbRda1F_Dgw`-&x%u$dML@;K_J|G$0F((XGJELyYJ*v;nTKZG=zeja6=Fvqk!p z#o^>m@zyL+fGuhF5cG4Qz{Sa-WgxfoL~25X0aEqT201b@?0$@6o9_F~xFv#NA1jEB zh2C}z0IX65kfrT16hScciEJg1d;kb1b0wxaj^NqLYfnhl8Ydi>81x6)t{^bCHpR9D zZDSuRhc+E+Fxf-b;y=++zS*`RE6X?9*=e=E^1wOANYRc!lt};r#zc?EViYO_aJ&>~ zLAf<|Nd@r2Wq=a6^70_hs+M3?4F_Q;03voUOEUn;K-*mghxLaN9Xv}k$OuBbI6CHv zDpGX1Y${&v-_m5h+Bl_ko30M0Ys%xFWZ9fEfpBkq68BU^bPT2l#?+#e?Z@GS^EH=958xL^5IGeL=(yov9Q$GqY!H_FF43f8kDKGqR-mL9- z=DiD(XuraPB}Fu;b{K=oT+1~-vROOxnr)3@tF=*U(O|H-iRRMDd4w{8y+a97PWABS z+`d!C%obnn>3t<+frqqvPi*McvWPHir<{d%Mr}!8#u)!V>R>Nqi_>l_^}>ZL255Z` zz8c&_iLLBPlsr&v15#~9^T`H>pCy}tWMHo;cq0%))kR)X?h0pih_?JjT@vT3`?MV(Dw;tT87=;(7jl&|0$Z47ODDIs}>)jaii58uub$>G51 zbP^)$nd=C@k)~HH#v`r3(1u})KB+cp&3b0`-B}kb@6C|e6*(-AaAH!Wx&k%~?IjMq z#4?&sC$0CbFZcxNs(=tUfjXdRBkk8dI8!IaKfqy~KuJ^cmZn-sI%XG1~c5#fkXXx0F$^Wt%EfwtG zSR3O9Si_rM7L&JHMcUgP2=`KFyTTJs7+~%Q;0#F|)AFl}YD{$@u5P#S+!tLF=hFQb z(wwt%%rM!)K$3RyG0yq9@sRdhewY4w8#gnPpf$AT@%#b(FlLO2Txsh?l$W0n;DjB| zVc>2lBn}qo#~#+Q*n2aPgu{7lD6%Ma^%13%x0BE`!|eF?$l@R+S2~u*tN;cBHX(@z zUM4|-QkLn==9D3K+oquBy+}jbUDq64-pF7Q*YB4A58xzgp_8Md~PV&=5bFCBv)8)vSD))-kHPKA#;E0EP)Xbf8 zBX`UyRNf8RQatldah|T^)Tmd(a7xpKCe$GFh~~|5rz2+=^R$$ z&+f>jQ=&$o3F$a^Me>oY@S51ZG3;lxLPh305l+=UPdK}MTF5CI;b&3+c;c|2->=#5 zC=TT(z<)4>D+ARB0qY=-kI9y)Z`WZ=0Y(A*kic~GI@71l?HCZoXl(C< zneYaQWt7EO^qmp*?oeG-QQa>SPFwB-{0i2|lQp=s z%%LmEb#?UYS~Qb=qwvU!~ZShB~vGqG21Oa|U2!rG|+4@Lqtp19r?Uk!LQZsCi9Zn+ zhBK3sB^qz}3^WW)PlV(4;%Fm`HG!4CWC&yffe`zrX@Cc^#)7C|3E(jkq9>q|ISYp0 z6x!#{$!{B3o_`S1Tst{(WYLx*u>T=2eo|n;hD>%Q&T0kN%fiHN?k>*(jU^AgYxxcl zm+A=QB#w7^R(?T*-UNp2t#uKk`<>gE-p>U;BHNwu|~d?4GSHkH_%d69O*)dFufC;o^6Bo_zpO#E|*j8%zwn?k>;xs>r zm2T>MWy%du(517{Bej&p!pUFT!9EmnTr{hzd}1EbI=Mz9_j)m^uIIvRkcX$6AmFrZ zz_N~v7I3um54(DnlR=y(nDRWf(o2;gG34f^{Ua!&5Xt@V>Z_OcU1Wm%hXx-zDUxfB z2R}Bz)GGDdrI_;i-uPvDsu+0wY*wPN>Q_Fpq50iht?9Uuej>=Y*gsV8wC!^Z_5-7E z*Waa5fHf?HGWe#Ft7B(iNWD&at*-8%o3R@;8z=h+$QOeF$k>w9Y%O2L#4?mokbJ9; zd~DpabB>%*+LBUN}NSp;2K>FKImoK z!1A~qK*gQX}#kc>=6KAa~&59yA*avcyz<$ywtFk05#IG>W z{pDP^@mPtn)sxi9vfL10^iplpBd^$RJlCKA#IgSRB}rZ^D=B`Scv~kriBJ)uJJrD7 zpVKE;;t1G*!i4b4F94ZB+jh+Rt04wQ76#JZ!X99^H z(E-g5`~iwrp43EunltPpMLY8VZQQLm_R(Uq-&04{#=;*x5SpCr=VXD zX3pm=$d zdrUTzTY;LV-s@0~poLWs>7;aY!X*~x8Ru;*^iBMbWUemus5&b=A!$C*lxRPJ4I^qB+v^uY!?`WI-T)S9T|c!%CzGHt zVFX<`CwEJw1SAZ9X%kKaUkojj>X=t~_!`eSpz`bgq03}#A*Vt}Z-aEd%b^}%9$|cW-^P%(Q@kdz#`fuCzbDNQKKc0!TeGH14bIQp zEzeI^8=wG%79zWEvS0ZmJ)ekMxU(H`!<@&#fTL;h3sKX^=PoMweKXwq0G;LrBGAj_ zE+b>{ZG4S3tbC_NF!V}Htw?^a{oEMAeGL0%gHGVbg6up5z7@YaX zKJZgs^_3z{WE!#r^zr^;|6#_R(l4{ZrwbpS7vJnV>*WdH>>-a6orF4vw~HRZG@w?w z!E~{p#ca|0`Qdz-aCTrY5|;;Eg_qx^yT5E4$v*3n(1ih=uVbOs7586RUL$+g%n_E$ zTuU(PabU%Hy4^i>4cgp{XZWNw%j z47AvB29XaiQXir9`M!1v;O`$x;2`>&e>1uM;Ku&~2i7^h`3Z+yEO9!4>$l~OL5wBt zU%BJp*h>R9Xa9|0f20$%@7Wifg2ApE)%FTD)@TMFA7^m)cS8!DFKN7`^=X`ossBzI z3nWD)QnGm*RlEWOrYs9V$FS{GF!~kFu*&{wiKLh?{<|9sB;n3xe6GZ*8KB)*Tsn9EWe)5Wx8bJXU>@7aT1_9Y zZyK7Ly)jwEzO{H#Z~OFBfxRwW%*NK5O3(nVj{NM$-e)oAtL#T%n4Jog-9}Q)-|O|f zAel%L20SfLr042SY*%Y`1vkhS-pz+xP*!skxP1U_;=~pn+rDf}_8_dSmUkzn(@G4o z{)kWP1-bX*cXjH_j`kuavqmKRDZ{IQoht;hvF5y$V&zGWwib2E61`_@{TeXwmGA!k zI59VSDyyiT7>5`MCsEkpS5p0I~A zNtmytM$a^#uYsQIx6USCT93>aU_XsKTYf+wa~^B+H1v%NMbDMub??!?lbE#}?BWt>Ky;`7opyXQ0w^{Pzvz#rKG_%>+7_uLX;RldYnE&idD!6aKIIaNb z=@+@VXXt=cz zIyH6I@^z9ndR^cYu#@1+_3W%2Ig_CGH3~`4dRG@zGjHs{RF@e+)wsTSQcDP>P=_}v z&dJ%3CRHWQh2EQtzH3=8v1xf>EB|TAYS*>OXy4}A#ec>?IIb(Qq^$qJH27V^Z2pCk z_2;GOf5a2`|0t?|KEr>@GXKqkG#^=#h1$}d!()1$sCtts?nO7b*z@{B2^~LvF6wO} z$I?@HhI;sTc-(oX@bDmg;O~fDTZ5-Y0q`_Vi--5zfdmilD-!&L(ZA_3``H6WB0M}g z+L7*s&G4FOK0Lh2Y69VnwS%bPCgvuGGkDMYHmOItH{9E&4;b+9450s;v-|h1^{>(X zM~~89;r%PTe-(%Si6Z@1X8n~}e`VHRnf1TG2mggqD?h#YI)K#g zvB0GVmu_DoZw=Iz%O&}GeLdrW^o1J-{SSJzbq6gk$jHdNc-4I6`D59OCee=werv?Udwqzn^%@_J8RRs)&|qmvzl*=ld#RsJ|Q>9H7^4+~Bnu;>cD>>;3v7 zQ|LvS*Df)=pzVUDY#2>bJg@PUtGEZ|uBH$=^W z8h*>`Y?fOSRn}9r3C6Sn)-=ZLVUM5S9t&}XvqBu2#c%Tpt3Q;LJ*;gHr$_Xrh{`{E zHkV`Z=1qEje%Sl>m&P8jvm4K~hWxo*tSScsQQqJ)ZEd>EFJHbm+}8J4y?dF21SRCW zaz!DQqsg{nKwVFdk%)rHWUAI3`WFEKujirl?+ZTh;R1IF=@V<2sB+S(aphcHU4>dt zR(~RsM=MBEJ)GS>SVe>@d@KAtN(WSSutXq;k^s&l1jVkVg0q zteOlL>Xm8e>qiW%{&{}koR0+Yx;I%^?06;9Yqygvj8T*d29rFCN6jN3ZdFqZPPbBjb4) zifqQqU#P3MhrEx7kbQDiXERY5q6I&H-)3ZH+^&Jmn-o}g#bUkOEl^U*UoQ9u?KJwi zE7C}&9uiWB`wOEd+GMEp8)2QDou&VRP5lF>X5nh=j!UjuV0_`GK$7(RrIvZ+S@;<-CeWNb#Ge) z`>#Aye|mDCi)%I?BIn4#eYRLcO3xP%NJ4G@0Bel7YMqZv+zRuH0teK@5gBZ8FcI}!Uh%VN% z_~z|~ubbm;_Lxr^4#%sfM|&|aN?KZZWo2@eGt8TM>>9fSc19eF#R}1qk&z({c5c4p zN(k#Qn>Q)YK9EpSQc8ANdK&Qs+{-)s6Ur-B8gqGEH)!gQ=OAL`wkJX3=TNq^e9RRC zW@a%d>6W8g$~j;&7@|GVORwlfoG&r)^YeQhV$8*g4Vjp<613ub%sdV^noyU>FB^5t zG=VjCG*FP--VHq-s6#_O`}*qpZkm#|G_vHn*~upJ`Xw|pgl{A>9A|%V*qM2}RpTo$ zUXLMUP6~hQPq+(qEFduOg^rGbrM5_)B%0J0(`|5{ot@<-&s(;$dERStlux$>-^RvL z9aAtgpQ2Ag^0M_i6@2yDt%}aWrHLr64)aI2J8dr`qgZz0?av5wo%;zuA%{;)h^^7n zRiahgoX!G>#mIlPy&NLvgKf|*O+v}ly^FaBg7IqVU%o-Xkhoc0P0J1{7A-y7!8 z#`2uN;USkO%(3qCm3zICMgmD%JB?D`zJ2@p?c3b=cKP0BdC{A`s|;Z*LNqXyVINs3 zsf(TR^3cu63f!Ld9x{sZ&=bzLr*vloQW(NVJ32d?R-L1h;t(lrlP$Bmj_t{iLU3{rK@C&qf%eYA<5EYH=xPM-yE30Xr-*HnvN2JAbZ|jcK`- zn9@NcB}{0~S|56*<>=(JI+{sTRC`RUeIQ4RZ_AOnJ|Fb+cQ1$3!Ly82q$Hh2-B-^ zg;@R?tv%i~c(YyFon7qXO{k$%=eL}y_Y4#tC3j^!EyQ*)S5mTRXSM}u-*1F8^S^+9 z40jkXQ};c(`Z8N_sfl2(czn}&;b3_BX6x1F))2}a`zl>sXuk;|8C?f^xBlEu1@75? zL|WtUaInwnYJOkG41i7+KE7y4Ner_tAI6Bu2TB}qg=jS=MONqgcNY#%%nh?i0m_)p z)}Q97nWd%Cwv*Kk?K`g@K76K) zyHKv`$TkY`u$I}I!ond|K2G9h@B|HgpO7S5ETfg=Nf?F1QKSM_Rs7FVzF3Jp4%V2E zFDjC4oPyIGAPqArD+Azt5+ne=g?R}<*$dl$z5>h2x+7BReL{Y?HIBfg+}pQ!%`Ghn z!cHP--eb8{ySyR%cyY<+hE?}48@Nj+hVPUJ1YWQ!@E zw&z^7MoOGF>4FioEx``^D=)gb*@a%PPrJvZihJ4*{$ei~wa&`Uw#S&p?e@!A?d(>J zSDjT`5mQhsBQ~aD zkYt+oF_F^nysh&@_v>3&T(Yf50xgOzDN(azmoZz{gZMi?KeTpl>w)S?R`gH~MM8oW zh~;cl!Y3KaXP5O8JmECLbELL)i)Ns+&`4O*fD;^p9+#Jwmswo={^Np)gx(2lpp1;z z;R;J@Yis049`!lu$ar5tGMqx)_o=I^fC?6o84wh74Zt#)pe~|aDapdtmX+O#JLq-s zP7?tjEk-niB_(=a^YWxYM^;WIxQc0uS7a5_*3n*h+Vl?pNkA|qXcZbosp9rElh>I= zo+!p~L7&LU%`VOxXO@(N7~j7q)Yu-L1YKMGQg(xiDoEp%^L2d*2?^*!0RhJha)x_Z zZbr9l4mL*p7rQlPZZJ=W&-YJED1ya#tG+}%xPSk3XC@5(X3xyh%JPj%)z{qI*FUpD zpeClKysxp)e06qx&>@bFkAH#?-edai;sUzGau|aHp`MY^NQ0du6Aqu;unq!TaiOOt z=$Po}FgY`Is^v6ECW?yjo~gQ%cwu7^eF6f4kxkdzEVnJVA?zgZQN<$tI_ToyFfPQP zx$THJEnE^y_1=={6p>18L zkqTc)PEO8!d8M|NMMsB4wc*HLq9JIFI%!Q!8UUNOPWRtsWoOMqB_sfnVenK3Lx54N za^~9{wHDZL6+Liq;m|pJ028Zy53twL%4)RKg&o(3As!Efg{vM4@JB@_D*`$d7$}o< zhi(4F^XHGGrSVr+b7sG@L1IAOD6&#+nwpvQ!{sQvysS5-(|QtED0|Udvoc^*g zU0%3CMI~!!cvCCEQ+|Dbh&!&kZOZ%P$aoh=a2Hx>-*<4ciijkhovJK%vZb}JI{#Ex zQX*SU6?_L9_L7qF5)1C`&dtwnWfx_mZsA#>qeg^0d#`d6B%TeU81xD_T`m>K1YBjP zD=Tw>FeZPUtU+J7c1_CJ`5_a?>4k*_zV&ii(7tC;s6-V|!*^H@=PcB2-2L)pBwxMO zb#tm`wq-F{*yu0BH9ETH<@NeTgjuG6hscGq3%`bjP-9lU^A&=+uuhZP5cbfH_m`xk zr8~!Js6*SN`clPFU{`N*aD;*9YxyAXl>xR-#+_Yb3eTSLG1b@Cmz9;zeFD6cg!_yD z_WAS8HLLYERy~O-G@?rkVuvPX(I0=&7h$m%>FDX@mE>__hBBCnuo+BVh7zN~!ix0^ zd_x5%esw2@s98B?ht7}PIC$KE_uUpheHa}R16`TD3lR9Zs&*Hp3N~SnEetU|oyI)B zz8)&4Y|C|UaG>kd^J>c5?Z*0$_hSVG5(B%@=1SBu+_YOgBDkoC8*J4pHH~@Kn$?ar zYJ(^GK1_D?2UH-byc(R?aM;I{;z-P9*_Wz#oRvMdXfIT(U0|{~8H@m>dUT>=2Pj@h zj~R=T3ae{PiZ9mq?%*IlgM@DHL={Oq^z1JqV`JgiACb?`j)&tgJ$8ldEn9XuD>IJ; zY{rmZUUD_DfStU5zY}_$I&NluURq7<2B3BM$U2aO}FQongNJ--b}57DbI!F<$<3+n+@XXkV6IIxKjO_AcA*xA-nE? zJ$nD%{&&`CU5PSyrJW{GTVZ+k9L21%8$7=Kxx741S-|GEM~DZ*WmEjS z7mX&WjH}M;B~jAN%~Hb8H9NB8DN&bpC~ithrX@hKf9Ha_I@SHoPUyaZ3S!!Jd86O> z2n$yMSseH4T|iG^X79_aQO=bBBD!Uq95~HPvF3 zkxN275E(;$G)>4KHwgSaE_M{XdrTzJDboCb@rFt4(ERtBtcV+;4>W7G@10woGGQWe zhN+z%Fxpr&J!JRSYda_#UU7b%_^GKJ|2qTB%}xD^ggFE;KbdkPpl=kZGPoVJ4fXKm z{Vjbs&T%*!HU&Tn>1gD&!x)PkI&W>%=1Iy&`6TCW60Hk)ce-ICov!(7iPmv9WZ^MG z*3I_6c*b)xc|Kda50+WgN&Y(^3&WjKMEPcvZ+KnD6hcd!9%RXmkNR#us_pez^UNj- zUs`({1sy3MYQFXT9vjVvY%OL2{p=Ie+@Y^;i#0wgvNsUZ*0Ue>#MGjcXm1>F?nms*qe4A- zM0jb6x;)q@Q>S~VN7Y(`k9JxYn8Fmu)9VVIDt3N-Ox67*NDA9a9haGnGIO0CV1_Xg zt<&rtx$Z8JXLO(HjJRv~o|V)k2Mnjf>Uw|&CKjbr(A)mf67)>*a7$3eH zLua#$s4f2<)@DW0S!8{iud!?6MG5u{$puYN-06ztJ1Y}Ot6oxPJs_U1>h^eDK?@bb zEZ$0;e2#p_qI4(VcxPcDHB8CzPr9)oKI03(Lk>X*)yN7Sey_w-otiokbKBitgs*z% z>OTCKi+{V)S&Ox&z_vEE=iX8|y!!cW;}tGZalcM(Q&p{LDbLJnjMg0m?U{oF;}k57nF7)V8?DZcY!x>sySDq*q|PQDLpghdT1#_77_@l;;&0NU3%OVF#J6T%{-WD`Px`RoQ^+~vWfDQ_LFJ)c7G(G7cl4N!;AG(n#R=kAAU| z6Dq;E5I%k9#omrRQ|hl2dF~C?oZ8>zaaCBDkTG6>Be8`f7`LMu4Vu2>NP6Uc6fbt7 zknwuwmgn(+=uZlRye2Z~%&+-&w<>C{7VW7@(Zn%GMHVI0AX@v^9QWGJ9*ogXipG<< z4??|kUMckP7!bOV++nG>3_B233zK)W7qeyT5Bzvf^z|7P*Cusu>Q4_JMWX;_B5G1I zRqcBquy79oa3Pr8Wvd-aYX>;g=;GB2>d~3lN}s0>^U$y6P;=SWd;~cX&m1nqlf{3e z>iYVGsK|yB#~?u?j0hwb(wW@gw7SXJuB@}@qTGz-)a+sPQC5yi^3dHfqSlv>a;?SY6TWyS@Znpc#dh)(xvd9#l59>WH$0DK6cW$XB*5pGS5<6BLt8b7 zWV+FfTDiIu8aHY7W5pR|j3lhBF95ZSypy#ATtmY>xxSPKzWoLw@Z*JU22`*zdPL@TQvAt+#rvbLNc!@CdPB; z1XA-SwR2)06R~CmIm&y`+<)O(YvgAgaH8|xY2>KN2AQ{1-4xX-Yz_6&doJyHLM}Kn zxZ?amdq6R{CD@pDa=ZyF#JVGIDQxTUe(0XLotAi-3F9olk9aa40s6gfv`Gtw7E(8v z->zL3GmFv`?3Q$ zz5Z&+8H2vi$2Tn*n5w%0$EEihg4C(KG+rU#^dCy-SjpA+=MSa|FPC5c^ab$LR6A@kM(6(z?$r9Fr8q_M%}-r zuC=R!lQ|9Oj5?E{W}mxI>eo|IqJ1?VdBa0%KgjBjs&*|5G@~jP!)T_CmUx&=nbO-9 z&AgTQS7Bb=$H@O3^VEC}3RNAajJHC+|eEM|3hNZLR&NsZIw^x;)6 zwCr&kVX?L4?Q~a?xVq%dM4g}Z<<$u;>Ktfq&Bo&iORy+S2k8es>i)*GDJzC+d7f36 zFq+!lm8-28DkQ==ZafIbp3nEP>l0=Ah{~hf&TsmBOE7o6#ZvKs3+=09T}%Np_>~e( z$JSsFC2jIH9OPz(zcpzDMHaf*<`;j3qr~itL%y_hKTvw|^Iy8Suud|gJ&0}t@L6yo3>nIwWy9;wb zGs1D05@jGs!dU73ilg&|t1O$y&NCRUmOvj&W@k-$33o4&u5QsHM z!>NKmb1Mq`pAz~11*;&o7JKpcK0OhED4+wN|Mma>i@CyoWgPGy?_5suG!q@(vvF<7 zC$|L2_4k{Z)y1^zU)7`eM1u@DzO#N06p3)`RdGL>n1w&@TZl9H@lK^QqS#1|AmPga zbdxLBxGm!H(3WVI3NJeI;!=@tBbJ{izF`S(ZfJ zDn&To2*^FpaAoRjEm~{Q=iMl%n>oR(lfa)sYak_I)a1F9nnx%bO=XO*(sjHfy1jGzk4f2wPR$AoZiEkUg%H4&={_4C2WF*L}rRd38)f}?mX!Ax$jm#C4K zsw&{#dX-%5Gi3KK84Yf${-Iw6L4o7|h<_Swl*LgQFF&a*tNPf?q6B65W@*;BEHhGI zHulZRc5$ZPY{}ah4|dZ40+(xZ^Hk4wGwM6L*hMyikn> zkG`FkQ#?TOWmZw47qe&T%{4mz+vUV!ULYr6mo+`D41OA)qDDME#}fB#8=+eN$|eh4 zf-0Vz_>5`qVjlZ+fGF-Hia&@oE=f?@zl?6{Hj2MQQT!877??Ws#DTtqo!3iQ8E=w0 z7AzDy#}uYa+MZWB)fuqtwkP9y19eM6jJJwtK3dwMXnlfHjQ=EkFr4ul-H`{;=DtbCeE`|opp=MKACiWgPolpoyUt2^NQy;-ZEsQRj;ZIGgb=t5y#S2QL<_t5>Jy(OA&R;wlw~M~C&--WN&wKtmDkH1~ z?_F!ohgaKw`+tGcET}!?1H9TTV(S^o@74s*okSA-32FC~7=N{%Fi%(N21Yt1Oh!6K zgG8W4dF<{&91*HGQ3)gvD?BTe6Mj;%t%BdlQD8ng{N)dhNNTM#mc8y*q^DBSIW;;J z=CR}Hf2^*o4)}(xV9vyM|Jzk}#KY`;*_i}M!{-Xod!3wicZ9nrV1IaxA7avY4hpro zWw23XIV%4eoBF!GRoJVeqhPMN{&jv|u90H2|GdNcd#c7Upx|hJZO%~K4p079%nR4;m`mRZj zGY8sWow*iS;7=Pp$h~W@iCtOM%+0b-45rJUI8C9W1%%|1B>MI0{)9O=l@u7GY$S~F zdygexg`yp766ztL$sOu$3Ry*LRsG1{bK>uWpdc`d;OgLiuD&bp7oLsevtbZD>oaRbnz^~`K59sAXO6PA-ny^ev zOC`6otCSo(;sp2y-!c1YEMB7r>@lD?J4e-@gANZFZ5#9YS2N186NG{( z5Pa1Y{zZ=8Mj|zO*fkDVe+(n1N&wCZhn+u+G$QRWk?dVUIQIBDxX)SuM8dW9_XdJw_O>6~`W2^y;V-M6smTxl z(?-}JkHgn*v_)uFwc;8b^gM!R)jLB(fZ7NFGG4j%+nt9zMjua8i2B9#^WYGY><(< zlEPiSAJ5_p>CY=A0?qlzuR5Yxv+JwlJP|I7*|WTV3LFKgI;WI0Y~N*wHM_odwyl~l z!gd`tSi_!hG{>|Qw%OIZH!sX|C@S!C#@XSvwHc)nEahECL)X8=QtWHXC#PVg+H7pM zMSlD@|5=KtIvB%eY(i?&CTxv^BFZQ_8@3yNx{j~Pzra2I*BtWyFoS`tG*+LgDQd;a zgYI7YAwmEGkQxXfw|-M~K;`}ert*Oyt+Gnz=%gYT75|+t?tV9)u-4x?$lol#Pl||2 z@jXDusI0aT6kQxcb8pRY%=J}7?$0$pu<<1u>#C()bUWW^l84&T#^u`h?sI;OQJdbF zJFqdujXu8LY0X{JbKCwXFxZpg9~bgQpJ<1r90IbD{OqMckI_Nuvn3eJ+&UWIR;XJ; z(ac=j;SP2&1nX*Xoz2)-pP$>BW43*^ADee@8U1HQJF5dY0-A%z2fk$_z*L! zfXFgo2g^mJqG&i)Y@s|vRKxD>=_zc`yV0E>?vJ9o#{4wDB{=`5hnTI8Xwq1=x_$#I zanX)&5~ll82+%UZ@Z}OKF`L!`OKS73EjwF}YwcyY4`T)F&q!+CI8+f=Iso<~4?;(OdF|9uj+DzgE?LDmVRFt=xK$jo& zt-KJN7Pu&w6?tV%+7lFHMFDcLV4Hm2iZ|XgU z@Nu%18X{Eljk=Y!o!6j_A_U52>>zt;$~VC5yhX!^NLg;}*Uuwa@`~)EpZ@sb#kAD+ zB}t}+N}^0k|El#mFEAgE@USx$0h|;&Y#4 zlp`>ArkF#fHkAp20#e}G=tUjPe-pcnpU8PQHjA8oR< z02p^dd=mpfi*e8q0YX8xLB3>+{)CeMK;R(HYza860dhkDNI%xdJhNQ`i2LHVsf`A= zo9Sm%so33{h}{W*C!6_(EjFtgHEuVjsRmVFOgEQc9n_ejE~t}p(MZi=n_5Mzv9l?< zVjMvsi{sr@H#t8dh4GKp&^f%@^Y~s-dNQ8Aqq@!AI?piH9tIDn$xPSYUgFY=m3PWZ zS`T`Hn?}L3UaP+Kbp|Vu{s*0W0qqClY64JI%8%QQoeZZ8GyL+W>8quka)5)>I(X^W0(7OSk@5RTM|%?_$z%N1945dRPGAXFj+*aQM~<;*3*!3 z2*<6+jz{cF()0KjKt_zUFx~_j6k)%~iwq?t)ZryD!m%tpumevLYeUG?XAt{-bmlw` z=wTRdDb!OCQM10AASO8eSmv_%`6-t?1?ZC>5J23iTtD@4?8bFZNU;uHksbT|nZx9c zCdOMBk=c{=!Uli51a~EnC zt`x2?H)+-Ry(!AdP5=e?>z=6oI|(x|kS}Nm@ZoMv&(C{j_dCrKLQPbu7AasV5nom; zDB})D5bVEfZ{2R}Dw&Whq>nM^G69v`t3W>c;p}SiAUjPF(`ouf6$jH4MuwOwilgl zCu&as4G~KLeB}B5UvteSbG{Z9t_~dk?&0%`)-D6;dE?=ot>=zFUI2rXT)WNcM^1+3 zdP%aZ0`?QR=g&twfEJuT@}kK!C)gO0^jpo2Iyd|AjyN}6H=0TI*+<4AAOg;wQ2{!k z9C&|q*6Zb~?ix{ci|x@cqaeu={0e%&qQU_q0u)JDb=ptkO*kb`dfIXVQ9nP0)H$AC+T?Z5+Fh~{7dHg<3b5Ie;w94vnhRnO{Njnd6T~#N4b(P>G8aSP>}g#1mR%B41_Sic087|99S*-0V?@mc=vjC?DN zUt0~qj1Rb2kOrW=!PMlYI1~+Ziec2{zvFVID(Uaf8x|f0zTEb*xTtYFF20NB0+Ne60E6QKK07Lw+Y+YoG}SkA)ftSV7l?3FsHOWP?&jP-VS0>G)REY zbQ*Ctjrzs(Mn?T;+mfH9N5ILPn)ducVEA1iE9L|0*IsMMwMH-N2?P@BuA=lo0-!Ua zHiC@ugF?V{pn9T0(dL5J=N)9xH~;X_G!EyRMHx|po)PwwGfyviA)%WO3fb=eq{tg> z&D~iWlqX%I>QG2h(A>r4QGUro5PTJR=$6hZ^DB9g-?xpmAFvS6^&k!uCm9ts}} zAAS2tFw1_tOLxiF3lE$o^61gjk6J z0=#!5B0<9m7#=Yps`;?~zSa%Gswnm_R}^G;|I~jbV+mz?URnMUFk{SH>0x+>mGU=H z_!;ys$VgZ*vjXIouiruzhjZ*7Fci8(^Z2sYY;CEac?=d1ocg;oZqvNei6ZhHU2X&SU5eHBy`x0-T!B<=<*A^QHdKjQyy5~s9wcS-&>uaF#*lykq= zdvz80|1~3PcYD=BngmQzxblJjTP11tCCzV(3MX%r$dlK$-wiI_D?CGr7SZQ4PdA7w zHm1;H8rE9G<$wg-n7gAW%L`1Bh%cblz*rq=OyAG)UadjlHvwD7;aPb*Xnh;V_@2P3 z0&dGi;9i(a&k`!D10hz6-RX_3g98T;&D>ub6FXW1@uzo%DFD}bJ5*k$O+OnI*A&&L;Tiw~vAajo=zw!QG{;rDCK z!>sC4k_>a| z%me8M@KtERr02&ygApYl(}CEIdU#4oZK|7b^vwd-2Ut_IQ{s`!Tncw?{UR!|3$;u* zwxkkX3@2ToYXtLbHZTV_>l*T+$JLj3?7YNOiX>apznL8)2zDx_?_6Cm&K@LilIU0t zx9j@))h^vFfEi{m;ol$91SN&;i{g4Z^+{d_M**VGa;e8E2B)dhJLZA$d=b;_$;&1D z7YwN7W`!NEoqWhRxddMx2ktF*ikFO&j&*U_Wug7Y?-@M&_`D_%45N`Xf~cgX7r4nB z#?~O#+O^${X&Ei~Tle~1j*c0mB8HG8i#|(%7lS{Zy$nqqK~5;A!hd^vL&Y<#Z$+WFD8W}Z zt=US0ElQ)mLxy|v^->2H@Zf~frV`uJz~b3;x^|BC?urAA#R%Yvu5EnP?cl0qmrRwg zlyLY@)IE2@OM>LE>;hhSa-0h{V2uCO+e8RBE&%q@OQ+NM-B%Z+G z>VD_$-&t>WlL#gN@pc#31VhmmpvEZuHuW?WhOaOWEx(%mE>ZCTXiL8#OPKaQb`K|P zkJg93Ob8azPfB_1!0B+bHtLuP3=XJj2k1lBq<09w4EPk*QJUZ3evc!iPHY$tESI~Wp0&)le=Y>$^RNQi1Ij9c6Ivq!|zBgve+QvH#EvmG_nkAuThC zH+<@K6R?Bie(_7N*-8HqFqy%~ss=YCCmLI*oe{PWuqr+~FF~An1mJIs9vA=s6vXP0 zxpQ*^&BD6t3jkl4fa4gpy7{~3ESPAnyoC?;OqCMi^m8@+mKIlxWx@4#c%2Uf3a4hbyz10ldPoJ2F#l&R!QvG=8*zm5@zRDZ#M2^-H_N|JE* z0GQ>hyv;ChB7ZRO7`om44GEH;0?GdeHfkOKK@^{ZwXGl^K4W}}tT?-u8ck-rX!r8y z7O>*x7tQ%AEA435eUq9g9LlS~CnbObfAhqi1&HNBF92>Wi`OI(=ib^l9e8xn8<{_* z)%4wWTuujQpof5GBaHY^{{OyL8xT^i$QsevXUW>yC$%`2&H%$Hv0(fM^Nqmb@J_p( zAFyTmfXDaDG8s3`gued$9g77M&_$&z@5N;WM_n^Tu(Ni^RyG6*1&62UIDaOq88iga zoIcP381gN%H7dC!S%FSwE5o91E4U%{Dp&(JsjgJR{pxSRfgK&1mZ1^AEE>9Qkyq9( zpE(dXENw+XT%rTr8#4jWoDSG8rJ8eD0=`^QXX0{)3@~~- z0qzP04zYT!ud_L8H@3Q?f~YRT1ZLHSH|FdMVvIw`%CAye8w2UxnFMvKV;H%!^$rZK zaEY7`PS+TJ&%?l%XaqX8+p zWG-+bn)3-RCQR*n+!li(dTPgIRNv-YRA1;$#{-+0sJ;)- zrJwq^4_*`pJThyD2@M9H#W1$h!guN68ry@@e*E?D<%?mzmOj6twkNW-H-N~(?)GX& zO_|@Nr{I-f`P}!1^H+kuC4$u~mbl1(56s+bL?A<+T{e*!ug87jPI0rRQJr0O47vHj!4DF<$aX6-ww?W{z$zx7n}?pe}@R6 zIyutSV`m=oa_aps0Ce{^PWScQZ-h@^T?Gci3vh9Mx(tRz(0Nn!4HRu&vfF@Z12MX` z^eWe_dZpfweUjSx%ZXosvqAAEKq~?f86m{`n?~k8jK^0+>_{-5!t;|xsgp)qVZy*( z!%fW~+ZBeZbnNj#)D7bm&x^#5E>QV@-o`)kZm1R8MMO3%P!I?C65n}Z%&7WEh={JB z%SQ0AUe3_!mvI*}^WaTnWMNqfRAZ?ySsLNol4@hF@r}U!Tf9T*1G6>w@A@ z-1(h5+?}3#2V0wt3=3w1`Z3eXd!6xB1FTDXd2!2-X>Sq8@YJW!!Undy-o%7F^_1vy zgY&s&f~qx=q}^^`sPB?;QhZ;Lerlf=dKIbbslio!mYOeOWmc%|@=R7PW-!f%r@^(~ zFB#(dtX=m!8?u|QEs;_*(Ew3UPE1xa@97BiwO5hYJ>YaN9Oh0+pd@6^(cRmes4=yZ zI9`J6=@?8T$4Kn-cpZAGEcdB%cbB@qbZiIaTwMzb?OtlAa<7%7s{s{usA3oSE($wb z!PPn4?s9%qhFxUoGdUg;-7B(lzt?aMQ|=Mf=M}WWEChMY&rV|GPgh0zdUw*JIL=b+ zmcyoNL{G>g7F2u|H)hXXUis4Yp**F@^o5_ro}W`sSq>t1Q(vz51lQ2x_~!xq#^tP ztyjv!T!jtOtu~QuFVH>8(5-iL)rULFp4Hdbt=B7ho~K~;PRh;Co1!K>rVqVN)Aig> zcM~q);n4`jXA0RIX608wA4il~v_H4?87^fYQRj${hBdgzPod4}_eOg0wZyDcB~U7H zON*iU*YWV)I`|9s)}3J8-O-r6i+FfDQV+nl6MNLauf#m?>!AiXwM8L#<%cc-9^U6F z@O{QdPB*|Cm;Sp01&?;Jd%(df);nb{sfoa`@c;1G|Ky}{sP9B>iyx8%7D`fDXwf6R zv$_rgL0+3pdf?nbOs^v5*wNb^oM`LrAhtu(iDLwMDb}-mF;8+Nq0r|PPVdyFL=RTW zz)a|Lz2PLN&3(Me32xN%G0byv6ymgfVvq`7Qts_*&N)BM%|F}scV9wtBm2gv8yZ;5 zdlNo>abjD3I(^zdg>813?j&(Ph+f64dFo#Sw-emN(AG+fuT^6BEY+&b@4hgVuIG5B z)=8p_mWZ2UM48vwM=|I@6)l=Va_ZhT#MB7HZN->J4%H75q~d&e$?L$N z?hZS(a!-5>vpcI@C92+QrSv8I*bjqo_cZEj%CEwtW4D>NkneySzf<-G!)>P({n9)o zl2;I$R)E@?uE0_GaAKvgclSup9W)r%lHV?xYx%y3_nH`b3^c z$g*NrWfNUTGPM#i!HLxrIUBWb>RW%`cUMEjY`k7t%j4$)Hpkb|gG-N3T<%yfZ9M+` ztcQ)y=4U{D)zLz}cTWb$0z_)p3sNPT4kx8#o=Ckure3fzOwG=En)khNG$ZmyF;tsN4F4Vcr%K)hHVO=vlGReXhM1t(f-kR+{^8 zsn^=3`63%C#7-hr#pfgh+vcesy*Zqk=6gt?+?8ZE7CGCJN$WO#D(bYmpDuPRy1dw4 zk(`h>Y||CDJ$)4qZ)OA%pQ-8Hgw3xv^oiIn4Sc!R!M|*J7DBn_HroymBA${>sUzON z2P3cL)GbX5UmumGrJ?EA$n{Tn-pS3C8f!DGA4&WvtxME^S1_(9IYsy-n;EjEFD(u| zU45TEZ7L1EtkfGn`jTjmK8~ZS@zHL(liA{@oV0kC^@?Q|^FC5MJbPEdu|yn_ zuu~~^Mx{=9^1yS*&E^8$VQWt10j z43^Z)mHX)9`nrm0jcm=7X^|@PGaVL%`W34%pq4A67Bd&ktv%d0;+ zEPPgt*Y|=JA$yHPy**`=tP6W++ip?t#V1-wdbFemLJJ2=odsx{zML%|zTv4ui+Y#E zZpXEJ%H4_s?(_ZN(MlWNE$DU^MTqcD1x@kl_d{exu8^fv&V8K{r@!nLimpYe$ zuxR&^QfDOr8@XxkuO{5_X%z@p^5v)$qTMMCP9(Ux39>?9yR*_iSPpKpoz9UYc=!Bp zFm!hlUB^M9%+R%5k9PK0vrm_Lix~GZ-z98QA==2-c)>=8o)5qS7}f@2tmsZtA#_nNO94 zBs>&~6cyO&YHG>EY>1EV9t69ZZ|}@*O!*3(ZzjQ(GuF2|@l_;}qWVo*C{K2eQfHGT zJXPBjQ#IXpa?RnM=d;*5xQ%eL8H;IQ>2zZnPl9J zz1Oj*%JT7e#lpY+=>`DkY2e~Wr7U?16jid7o#(?~Ik~;g3eFxJjxpD6_G4$qdwXLi zi5wS~1(w!alJ)`*#z7BN>0KjPGDoK3vtTBO#jtgzZpe zVZ!E3zr6M%3balFgZEMphf6{1y&b9e!A?DK0?W8m71udj3KNcj8&9X#&cm2Gst-hW zw|!UJ+`GAv#0Z$^RxLYq-L4-`8l z0Nw4yXpk?G1w2)8;3uaI5<{@TN(;m_g8JWUP5()|0q^-Y&F)|BVSVcX>FJ;+N)tf! zbJBdY51ECofUEo7m~k(t-j5bLnxTO3@qw-pVSrEDVfc2L-(~Grt#jK4TuA=U_0@lQ z@&6q7pYoG`!t+mf{tu+}pQQLFDgH@{e;U&Nc)a}wDgHr<|34zdslhjCpJ=oSpD&=o Oc=9sJPYR_B{r(GU5|B#( literal 0 HcmV?d00001 From 511a49abffe71fad977a2b3b1c37113d4d4a3f30 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Wed, 11 Oct 2023 18:16:56 +0530 Subject: [PATCH 12/19] Example Update. --- .../doc/tabs/example/IconsInMenuTabs.jsx | 12 +++---- .../doc/tabs/example/TabsTemplate.jsx | 15 ++++----- .../doc/tabs/example/TabsTemplateExpanded.jsx | 14 ++++----- .../doc/tabs/example/VerticalTabs.jsx | 31 ++++++++++--------- packages/terra-tabs/src/Tabs.jsx | 3 +- .../terra-tabs/src/common-tabs/_AddButton.jsx | 2 +- packages/terra-tabs/src/common-tabs/_Tab.jsx | 2 +- packages/terra-tabs/src/common-tabs/_Tabs.jsx | 4 +-- 8 files changed, 43 insertions(+), 40 deletions(-) diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx index 2a56c65d7e2..6820876b66a 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx @@ -14,38 +14,38 @@ const cx = classNames.bind(styles); const IconsOnlyAndInMenuTabs = () => { const searchTab = ( - } showIcon key="Search"> + } showIcon key="MenuTabSearch"> ); const briefcaseTab = ( // eslint-disable-next-line react/forbid-component-props - } showIcon key="Briefcase"> + } showIcon key="MenuTabBriefcase"> ); const bookmarkTab = ( - } showIcon key="Bookmark"> + } showIcon key="MenuTabBookmark"> ); const calendarTab = ( - } showIcon key="Calendar"> + } showIcon key="MenuTabCalendar"> ); const envelopeTab = ( - } showIcon key="Envelope"> + } showIcon key="MenuTabEnvelope"> ); const printerTab = ( - } showIcon key="Printer"> + } showIcon key="MenuTabPrinter"> ); diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx index 2681a3441bb..93880dcc404 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx @@ -14,14 +14,15 @@ const propTypes = { }; const TabsTemplate = (props) => { + const labelKey = props.id ? props.id : 'compact'; const labelTab = ( - + ); const iconTab = ( - } key="IconTab"> + } key={`${labelKey}IconTab`}> ); @@ -34,7 +35,7 @@ const TabsTemplate = (props) => {
)} label="Custom display" - key="CustomTab" + key={`${labelKey}CustomTab`} > @@ -43,24 +44,24 @@ const TabsTemplate = (props) => { const longLabel = ( ); const lastTab = ( - + ); const disabledTab = ( - } isDisabled key="DisabledTab" /> + } isDisabled key={`${labelKey}DisabledTab`} /> ); return (
- + {labelTab} {iconTab} {customTab} diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx index 3f290b3474a..1eb06d6a211 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx @@ -15,13 +15,13 @@ const propTypes = { const TabsTemplate = (props) => { const labelTab = ( - + ); const iconTab = ( - } key="IconTab"> + } key="ExpandedIconTab"> ); @@ -34,7 +34,7 @@ const TabsTemplate = (props) => {
)} label="Custom display" - key="CustomTab" + key="ExpandedCustomTab" >
@@ -43,25 +43,25 @@ const TabsTemplate = (props) => { const longLabel = ( ); const lastTab = ( - + ); const disabledTab = ( - } isDisabled key="DisabledTab" /> + } isDisabled key="ExpandedDisabledTab" /> ); return (
- + {labelTab} {iconTab} {customTab} diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx index 2e8a08a0003..c98b64bb859 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx @@ -1,6 +1,7 @@ import React from 'react'; import classNames from 'classnames/bind'; -import IconBriefcase from 'terra-icon/lib/icon/IconBriefcase'; +import IconAdd from 'terra-icon/lib/icon/IconAdd'; +import IconPerson from 'terra-icon/lib/icon/IconPerson'; import Tabs from 'terra-tabs'; import TabContent from './TabContentTemplate'; import styles from './common/TabExample.module.scss'; @@ -9,20 +10,20 @@ const cx = classNames.bind(styles); const VerticalTabs = () => { const labelTab = ( - - + + ); const onlyiconTab = ( - } key="tonlyIconTab"> - + } key="tonlyIconTab"> + ); const iconTab = ( - } key="tIconTab"> - + } key="tIconTab"> + ); @@ -30,34 +31,34 @@ const VerticalTabs = () => { - Custom display + Surgical Department
)} - label="Custom display" + label="Surgical Department" key="tCustomTab" > - +
); const longLabel = ( - + ); const lastTab = ( - - + + ); return (
- + {onlyiconTab} {labelTab} {iconTab} diff --git a/packages/terra-tabs/src/Tabs.jsx b/packages/terra-tabs/src/Tabs.jsx index 197c72ede39..cd8edfdf6c5 100644 --- a/packages/terra-tabs/src/Tabs.jsx +++ b/packages/terra-tabs/src/Tabs.jsx @@ -80,7 +80,7 @@ const propTypes = { */ ariaLabelAddTab: PropTypes.string, /** - * Whether tab is vertical or horizontal orientation. + * By Default Orientation will be Horizontal and Orientation will be Vertical When verticalOrientation set to `true`. */ verticalOrientation: PropTypes.bool, /** @@ -95,6 +95,7 @@ const defaultProps = { isDraggable: false, isClosable: false, setFocusOnContent: false, + verticalOrientation: false, }; class Tabs extends React.Component { diff --git a/packages/terra-tabs/src/common-tabs/_AddButton.jsx b/packages/terra-tabs/src/common-tabs/_AddButton.jsx index 3f41a807622..7339ff30b36 100644 --- a/packages/terra-tabs/src/common-tabs/_AddButton.jsx +++ b/packages/terra-tabs/src/common-tabs/_AddButton.jsx @@ -77,7 +77,7 @@ const AddButton = ({ icon={AddTabIcon} isIconOnly id={id} - tabindex="-1" + tabIndex="-1" index={index} text={addAriaLabel} variant="de-emphasis" diff --git a/packages/terra-tabs/src/common-tabs/_Tab.jsx b/packages/terra-tabs/src/common-tabs/_Tab.jsx index 255e3a9a292..c6dc01ead7e 100644 --- a/packages/terra-tabs/src/common-tabs/_Tab.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tab.jsx @@ -119,7 +119,7 @@ const propTypes = { */ onClosingTab: PropTypes.func, /** - * Whether tab is vertical or horizontal orientation. + * By Default Orientation will be Horizontal and Orientation will be Vertical When verticalOrientation prop is passed. */ verticalOrientation: PropTypes.bool, }; diff --git a/packages/terra-tabs/src/common-tabs/_Tabs.jsx b/packages/terra-tabs/src/common-tabs/_Tabs.jsx index 0ab0390d1c5..e615eef883c 100644 --- a/packages/terra-tabs/src/common-tabs/_Tabs.jsx +++ b/packages/terra-tabs/src/common-tabs/_Tabs.jsx @@ -22,7 +22,7 @@ const propTypes = { /** * The label to set on the tablist element. */ - ariaLabel: PropTypes.string.isRequired, + ariaLabel: PropTypes.string, /** * The label to set on the add icon element. */ @@ -102,7 +102,7 @@ const propTypes = { */ intl: PropTypes.shape({ formatMessage: PropTypes.func }).isRequired, /** - * Whether tab is vertical or horizontal orientation. + * By Default Orientation will be Horizontal and Orientation will be Vertical When verticalOrientation prop is passed. */ verticalOrientation: PropTypes.bool, }; From e09a8991ecfec1c8b05259846b6cdaf1d87a4929 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Thu, 12 Oct 2023 16:12:46 +0530 Subject: [PATCH 13/19] Updated Jest. --- .../jest/__snapshots__/Tabs.test.jsx.snap | 43 +++++++++++++++++-- .../__snapshots__/_AddButton.test.jsx.snap | 4 +- 2 files changed, 41 insertions(+), 6 deletions(-) diff --git a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap index bd85e6b6114..b7bf271ffbf 100644 --- a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap +++ b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap @@ -42,6 +42,7 @@ exports[`Tabs correctly applies the theme context className 1`] = ` setFocusOnContent={false} tabFill={false} variant="modular-left-aligned" + verticalOrientation={false} >
@@ -2031,6 +2052,7 @@ exports[`Tabs should render with add icon 2`] = ` onSelectAddButton={[Function]} setFocusOnContent={false} tabFill={false} + verticalOrientation={false} >
@@ -2635,6 +2661,7 @@ exports[`Tabs should render with close icon 1`] = ` onTabClose={[MockFunction]} setFocusOnContent={false} tabFill={false} + verticalOrientation={false} >
From cac57b37eabd422733b60d15ee4bd33a6e41f867 Mon Sep 17 00:00:00 2001 From: ST063655 Date: Thu, 12 Oct 2023 23:44:10 +0530 Subject: [PATCH 14/19] Added id for all the tab examples. --- .../doc/tabs/example/AddCloseTab.jsx | 2 +- .../tabs/example/AddCloseTabInteractive.jsx | 2 +- .../doc/tabs/example/AddTab.jsx | 2 +- .../doc/tabs/example/ClosableTab.jsx | 2 +- .../doc/tabs/example/IconOnlyTabs.jsx | 2 +- .../doc/tabs/example/IconsInMenuTabs.jsx | 14 ++--- .../doc/tabs/example/TabContentTemplate.jsx | 7 ++- .../doc/tabs/example/TabsTemplate.jsx | 52 +++---------------- .../doc/tabs/example/TabsTemplateExpanded.jsx | 12 ++--- .../tabs/example/TabsWithFilledContent.jsx | 2 +- .../doc/tabs/example/VerticalTabs.jsx | 2 +- .../test/tabs/Tabs/VerticalTab.test.jsx | 12 +++-- packages/terra-tabs/src/Tabs.jsx | 1 + 13 files changed, 40 insertions(+), 72 deletions(-) diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTab.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTab.jsx index 5b4def342e7..84f3fd1243a 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTab.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTab.jsx @@ -100,7 +100,7 @@ const AddCloseTab = () => { return (
- + { tabs.map((tab) => ( diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTabInteractive.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTabInteractive.jsx index 9e5bcb785f7..c233e99adad 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTabInteractive.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddCloseTabInteractive.jsx @@ -136,7 +136,7 @@ const AddCloseTabInteractive = () => { return (
- + { tabs.map((tab) => ( diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddTab.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddTab.jsx index 95e51b5daa9..1637fb1af8e 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddTab.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/AddTab.jsx @@ -90,7 +90,7 @@ const AddTab = () => { return (
- + { tabs.map((tab) => ( diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/ClosableTab.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/ClosableTab.jsx index 84d8b1c3e36..bb780ff12fe 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/ClosableTab.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/ClosableTab.jsx @@ -75,7 +75,7 @@ const ClosableTab = () => { return (
- + { tabs.map((tab) => ( diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx index 507cbf07b31..f4789366c7d 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconOnlyTabs.jsx @@ -37,7 +37,7 @@ const IconOnlyTabs = () => { return (
- + {searchTab} {briefcaseTab} {bookmarkTab} diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx index 6820876b66a..792b90accfa 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx @@ -15,44 +15,44 @@ const cx = classNames.bind(styles); const IconsOnlyAndInMenuTabs = () => { const searchTab = ( } showIcon key="MenuTabSearch"> - + ); const briefcaseTab = ( // eslint-disable-next-line react/forbid-component-props } showIcon key="MenuTabBriefcase"> - + ); const bookmarkTab = ( } showIcon key="MenuTabBookmark"> - + ); const calendarTab = ( } showIcon key="MenuTabCalendar"> - + ); const envelopeTab = ( } showIcon key="MenuTabEnvelope"> - + ); const printerTab = ( } showIcon key="MenuTabPrinter"> - + ); return (
- + {searchTab} {briefcaseTab} {bookmarkTab} diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabContentTemplate.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabContentTemplate.jsx index 40438c0d891..8f25e265be5 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabContentTemplate.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabContentTemplate.jsx @@ -9,10 +9,13 @@ const propTypes = { isLabelHidden: PropTypes.bool, label: PropTypes.string, children: PropTypes.node, + id: PropTypes.string, }; -const TabContentTemplate = ({ isLabelHidden, label, children }) => ( -
+const TabContentTemplate = ({ + isLabelHidden, label, id, children, +}) => ( +
{isLabelHidden ?

{label}

: null} {children || (
diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx index 93880dcc404..175049681c9 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplate.jsx @@ -2,7 +2,6 @@ import React from 'react'; import classNames from 'classnames/bind'; import PropTypes from 'prop-types'; import IconBriefcase from 'terra-icon/lib/icon/IconBriefcase'; -import IconSearch from 'terra-icon/lib/icon/IconSearch'; import Tabs from 'terra-tabs'; import TabContentTemplate from './TabContentTemplate'; import styles from './common/TabExample.module.scss'; @@ -14,60 +13,23 @@ const propTypes = { }; const TabsTemplate = (props) => { - const labelKey = props.id ? props.id : 'compact'; + const tabKey = props.id ? props.id : 'compact'; const labelTab = ( - - + + ); const iconTab = ( - } key={`${labelKey}IconTab`}> - + } key={`${tabKey}IconTab`} id={`${tabKey}IconTab`}> + ); - - const customTab = ( - - Custom display -
- )} - label="Custom display" - key={`${labelKey}CustomTab`} - > - - - ); - - const longLabel = ( - - - - ); - - const lastTab = ( - - - - ); - - const disabledTab = ( - } isDisabled key={`${labelKey}DisabledTab`} /> - ); return ( -
- +
+ {labelTab} {iconTab} - {customTab} - {disabledTab} - {longLabel} - {lastTab}
); diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx index 1eb06d6a211..92aee8c6d6e 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsTemplateExpanded.jsx @@ -16,13 +16,13 @@ const propTypes = { const TabsTemplate = (props) => { const labelTab = ( - + ); const iconTab = ( } key="ExpandedIconTab"> - + ); @@ -36,7 +36,7 @@ const TabsTemplate = (props) => { label="Custom display" key="ExpandedCustomTab" > - + ); @@ -45,13 +45,13 @@ const TabsTemplate = (props) => { label="Longer text tab name with label for application" key="ExpandedlongLabel" > - + ); const lastTab = ( - + ); @@ -76,6 +76,6 @@ const TabsTemplate = (props) => { TabsTemplate.propTypes = propTypes; const TabExpanded = () => ( - + ); export default TabExpanded; diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsWithFilledContent.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsWithFilledContent.jsx index bd6810afcb8..4660a92e639 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsWithFilledContent.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/TabsWithFilledContent.jsx @@ -67,7 +67,7 @@ const TabsWithFilledContent = () => { return (
- + {tab1} {tab2} diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx index c98b64bb859..adb6f4d5751 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/VerticalTabs.jsx @@ -58,7 +58,7 @@ const VerticalTabs = () => { return (
- + {onlyiconTab} {labelTab} {iconTab} diff --git a/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx b/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx index 0e5a5b4c6b6..197de855a78 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/test/tabs/Tabs/VerticalTab.test.jsx @@ -9,19 +9,19 @@ const cx = classNames.bind(styles); const VerticalTab = () => { const labelTab = ( - + ); const onlyiconTab = ( - } key="tonlyIconTab"> + } key="tonlyIconTab" id="tonlyIconTab"> ); const iconTab = ( - } key="tIconTab"> + } key="tIconTab" id="tIconTab"> ); @@ -35,6 +35,7 @@ const VerticalTab = () => { )} label="Custom display" key="tCustomTab" + id="tCustomTab" > @@ -44,20 +45,21 @@ const VerticalTab = () => { ); const lastTab = ( - + ); return (
- + {onlyiconTab} {labelTab} {iconTab} diff --git a/packages/terra-tabs/src/Tabs.jsx b/packages/terra-tabs/src/Tabs.jsx index cd8edfdf6c5..d671a470b95 100644 --- a/packages/terra-tabs/src/Tabs.jsx +++ b/packages/terra-tabs/src/Tabs.jsx @@ -164,6 +164,7 @@ class Tabs extends React.Component { } commonTabItems.push( Date: Fri, 13 Oct 2023 10:21:15 +0530 Subject: [PATCH 15/19] Fix for lint error. --- .../src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx index 792b90accfa..b1d559fab0f 100644 --- a/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx +++ b/packages/terra-framework-docs/src/terra-dev-site/doc/tabs/example/IconsInMenuTabs.jsx @@ -15,7 +15,7 @@ const cx = classNames.bind(styles); const IconsOnlyAndInMenuTabs = () => { const searchTab = ( } showIcon key="MenuTabSearch"> - + ); From 6ce23a42ced7f1781ac48996d9e28432474f9b7d Mon Sep 17 00:00:00 2001 From: ST063655 Date: Fri, 13 Oct 2023 10:39:57 +0530 Subject: [PATCH 16/19] Fix for jest failure. --- .../jest/__snapshots__/Tabs.test.jsx.snap | 29 ++++++++++--------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap index b7bf271ffbf..3bea1aff294 100644 --- a/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap +++ b/packages/terra-tabs/tests/jest/__snapshots__/Tabs.test.jsx.snap @@ -375,7 +375,7 @@ exports[`Tabs correctly applies the theme context className 1`] = ` isDisabled={false} isIconOnly={false} itemKey="default" - key="default/.0" + key=".$default" label="Default" portalElement={
Date: Fri, 13 Oct 2023 10:40:56 +0530 Subject: [PATCH 17/19] Merge branch 'main' of https://github.com/cerner/terra-framework into UXAPPLPLAT-1122 --- packages/terra-data-grid/CHANGELOG.md | 2 + packages/terra-data-grid/src/DataGrid.jsx | 40 +- .../terra-data-grid/src/WorklistDataGrid.jsx | 22 +- .../tests/jest/DataGrid.test.jsx | 4 +- .../jest/__snapshots__/DataGrid.test.jsx.snap | 10409 ++- .../WorklistDataGrid.test.jsx.snap | 76219 ++++++++-------- ...w-selection-mode-off-cell-4-0-focused.png} | Bin ...w-selection-mode-off-cell-4-0-focused.png} | Bin ...w-selection-mode-off-cell-4-0-focused.png} | Bin ...w-selection-mode-off-cell-4-0-focused.png} | Bin ...w-selection-mode-off-cell-4-0-focused.png} | Bin ...w-selection-mode-off-cell-4-0-focused.png} | Bin .../tests/wdio/worklist-data-grid-spec.js | 10 +- 13 files changed, 44681 insertions(+), 42025 deletions(-) rename packages/terra-data-grid/tests/wdio/__snapshots__/reference/clinical-lowlight-theme/en/chrome_large/worklist-data-grid-spec/{row-selection-mode-off-cell-4-1-focused.png => row-selection-mode-off-cell-4-0-focused.png} (100%) rename packages/terra-data-grid/tests/wdio/__snapshots__/reference/clinical-lowlight-theme/en/chrome_medium/worklist-data-grid-spec/{row-selection-mode-off-cell-4-1-focused.png => row-selection-mode-off-cell-4-0-focused.png} (100%) rename packages/terra-data-grid/tests/wdio/__snapshots__/reference/orion-fusion-theme/en/chrome_large/worklist-data-grid-spec/{row-selection-mode-off-cell-4-1-focused.png => row-selection-mode-off-cell-4-0-focused.png} (100%) rename packages/terra-data-grid/tests/wdio/__snapshots__/reference/orion-fusion-theme/en/chrome_medium/worklist-data-grid-spec/{row-selection-mode-off-cell-4-1-focused.png => row-selection-mode-off-cell-4-0-focused.png} (100%) rename packages/terra-data-grid/tests/wdio/__snapshots__/reference/terra-default-theme/en/chrome_large/worklist-data-grid-spec/{row-selection-mode-off-cell-4-1-focused.png => row-selection-mode-off-cell-4-0-focused.png} (100%) rename packages/terra-data-grid/tests/wdio/__snapshots__/reference/terra-default-theme/en/chrome_medium/worklist-data-grid-spec/{row-selection-mode-off-cell-4-1-focused.png => row-selection-mode-off-cell-4-0-focused.png} (100%) diff --git a/packages/terra-data-grid/CHANGELOG.md b/packages/terra-data-grid/CHANGELOG.md index 8bc20153ea7..4f59a1cbb6c 100644 --- a/packages/terra-data-grid/CHANGELOG.md +++ b/packages/terra-data-grid/CHANGELOG.md @@ -1,6 +1,8 @@ # Changelog ## Unreleased +* Fixed + * Fixed issue where WorklistDataGrid loses focus when Row Selection Mode is turned off from a Row Selection Cell. ## 0.8.0 - (October 11, 2023) diff --git a/packages/terra-data-grid/src/DataGrid.jsx b/packages/terra-data-grid/src/DataGrid.jsx index 2a8da896f89..3a3c3557e7e 100644 --- a/packages/terra-data-grid/src/DataGrid.jsx +++ b/packages/terra-data-grid/src/DataGrid.jsx @@ -1,5 +1,5 @@ import React, { - useState, useContext, useRef, useCallback, useEffect, useMemo, + useState, useContext, useRef, useCallback, useEffect, useMemo, forwardRef, useImperativeHandle, } from 'react'; import PropTypes from 'prop-types'; import { injectIntl } from 'react-intl'; @@ -121,9 +121,10 @@ const defaultProps = { rowHeight: '2.5rem', pinnedColumns: [], overflowColumns: [], + rows: [], }; -function DataGrid(props) { +const DataGrid = injectIntl((props) => { const { id, ariaLabelledBy, @@ -175,7 +176,6 @@ function DataGrid(props) { const grid = useRef(); const gridContainerRef = useRef(); - const hasReceivedFocus = useRef(false); const handleFocus = useRef(true); const [focusedRow, setFocusedRow] = useState(0); @@ -208,6 +208,20 @@ function DataGrid(props) { } }; + // The focus is handled by the DataGrid. However, there are times + // when the other components may want to change the currently focus + // cells. In order to do so, these datagrid methods will be exposed to + // allow those components to request focus change. + useImperativeHandle( + props.focusFuncRef, + () => ({ + setFocusedRowCol, + getFocusedCell() { return { row: focusedRow, col: focusedCol }; }, + }), + // eslint-disable-next-line react-hooks/exhaustive-deps + [focusedCol, focusedRow], + ); + // ------------------------------------- // callback Hooks @@ -232,20 +246,6 @@ function DataGrid(props) { // useEffect for row selection useEffect(() => { - // When row selection mode is turned on or off a row selection column is added or removed. - // Therefore, shift the focused cell to the left or right. - let newFocusCell = { row: focusedRow, col: focusedCol }; - - if (!hasSelectableRows && focusedCol === 0) { - // When row selection is turned off, if a cell in the row selection had focus, then - // refocus on the first cell in that row. - newFocusCell = { row: focusedRow, col: 0 }; - } else if (hasReceivedFocus.current) { - newFocusCell = { row: focusedRow, col: (focusedCol + (hasSelectableRows ? 1 : -1)) }; - } - - setFocusedRowCol(newFocusCell.row, newFocusCell.col, false); - setDataGridColumns(displayedColumns.map((column) => initializeColumn(column))); // eslint-disable-next-line react-hooks/exhaustive-deps }, [hasSelectableRows]); @@ -507,8 +507,6 @@ function DataGrid(props) { if (handleFocus.current) { setFocusedRowCol(focusedRow, focusedCol, true); } - - hasReceivedFocus.current = true; } handleFocus.current = true; @@ -563,9 +561,9 @@ function DataGrid(props) {
); -} +}); DataGrid.propTypes = propTypes; DataGrid.defaultProps = defaultProps; -export default injectIntl(DataGrid); +export default forwardRef((props, ref) => ); diff --git a/packages/terra-data-grid/src/WorklistDataGrid.jsx b/packages/terra-data-grid/src/WorklistDataGrid.jsx index 271b3c73337..ba272481d5d 100644 --- a/packages/terra-data-grid/src/WorklistDataGrid.jsx +++ b/packages/terra-data-grid/src/WorklistDataGrid.jsx @@ -140,6 +140,7 @@ const defaultProps = { rowHeight: '2.5rem', pinnedColumns: [], overflowColumns: [], + rows: [], }; function WorklistDataGrid(props) { @@ -173,6 +174,9 @@ function WorklistDataGrid(props) { const [rowSelectionModeAriaLiveMessage, setRowSelectionModeAriaLiveMessage] = useState(null); const inShiftUpDownMode = useRef(false); const multiSelectRange = useRef({ start: null, end: null }); + const dataGridFuncRef = useRef(); + const gridReceivedFocus = useRef(false); + const gridHasFocus = document.getElementById(`${id}-worklist-data-grid-container`)?.contains(document.activeElement); // ------------------------------------- // useEffect Hooks @@ -192,6 +196,11 @@ function WorklistDataGrid(props) { // Since the row selection mode has changed, the row selection mode needs to be updated. setRowSelectionModeAriaLiveMessage(intl.formatMessage({ id: hasSelectableRows ? 'Terra.worklistDataGrid.row-selection-mode-enabled' : 'Terra.worklistDataGrid.row-selection-mode-disabled' })); + if (gridReceivedFocus.current) { + let newFocusCell = dataGridFuncRef.current.getFocusedCell(); + newFocusCell = { row: newFocusCell.row, col: Math.max(newFocusCell.col + (hasSelectableRows ? 1 : -1), 0) }; + dataGridFuncRef.current.setFocusedRowCol(newFocusCell.row, newFocusCell.col, gridHasFocus); + } // eslint-disable-next-line react-hooks/exhaustive-deps }, [hasSelectableRows]); @@ -392,9 +401,19 @@ function WorklistDataGrid(props) { } }; + const onFocus = () => { + gridReceivedFocus.current = true; + }; + // ------------------------------------- return ( -
+
diff --git a/packages/terra-data-grid/tests/jest/DataGrid.test.jsx b/packages/terra-data-grid/tests/jest/DataGrid.test.jsx index 488bd35ec45..4f8cc9a0f26 100644 --- a/packages/terra-data-grid/tests/jest/DataGrid.test.jsx +++ b/packages/terra-data-grid/tests/jest/DataGrid.test.jsx @@ -76,7 +76,7 @@ describe('DataGrid', () => { overflowColumns={dataFile.cols.slice(2)} rows={dataFile.rows} />, - ).dive(); + ).dive().dive(); // One row used for the header. const columnHeader = wrapper.find(ColumnHeader); @@ -104,7 +104,7 @@ describe('DataGrid', () => { overflowColumns={dataFile.cols} rows={dataFile.rows} />, - ).dive(); + ).dive().dive(); const rows = wrapper.find(Row); expect(rows).toHaveLength(dataFile.rows.length); diff --git a/packages/terra-data-grid/tests/jest/__snapshots__/DataGrid.test.jsx.snap b/packages/terra-data-grid/tests/jest/__snapshots__/DataGrid.test.jsx.snap index f6c5ee9feb7..f57d68125a3 100644 --- a/packages/terra-data-grid/tests/jest/__snapshots__/DataGrid.test.jsx.snap +++ b/packages/terra-data-grid/tests/jest/__snapshots__/DataGrid.test.jsx.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`DataGrid verifies onCellSelect callback is triggered when space is pressed on a masked cell 1`] = ` - - -
- - +
+
- - - + + - - - - - - +
+ + + + + + -
- - - - + + + + - - - - - - - - - +
+ + + + + +
+ + + + - - - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - + + March 16 + + + -
- - -
+
+ + +
-
-
- - March 17 - -
- - + + March 17 + + + -
- - -
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + + +
+ + + `; exports[`DataGrid verifies onCellSelect callback is triggered when space is pressed on a non-selectable cell 1`] = ` - - -
- - +
+
- - - + + - - - - - - +
+ + + + + + -
- - - - + + + + - - - - - - - - - +
+ + + + + +
+ + + + - - - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + + + + + + + - - - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - + + March 16 + + + -
- - -
+
+ + +
-
-
- - March 17 - -
- - + +
+
+ + March 17 + +
+ -
- - -
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
+ +
+ + Terra.dataGrid.maskedCell + +
+
+
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + + +
+ + + `; exports[`DataGrid verifies row selection column header selection 1`] = ` - - -
- - +
+
- - - + + - - - - - - + + + + + + - - - - - +
+ + + + + + -
- - - - + + + + - - - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + +
+ + Terra.dataGrid.maskedCell + +
+
+ + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
-
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - + + March 16 + + + -
- - -
+
+ + +
-
-
- - March 17 - -
- - + + March 17 + + + -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + + +
+ + + `; exports[`DataGrid verifies that the grid created is consistent with the rows and overflowColumns props 1`] = ` diff --git a/packages/terra-data-grid/tests/jest/__snapshots__/WorklistDataGrid.test.jsx.snap b/packages/terra-data-grid/tests/jest/__snapshots__/WorklistDataGrid.test.jsx.snap index 82c8c3354f4..42cf6cf1479 100644 --- a/packages/terra-data-grid/tests/jest/__snapshots__/WorklistDataGrid.test.jsx.snap +++ b/packages/terra-data-grid/tests/jest/__snapshots__/WorklistDataGrid.test.jsx.snap @@ -307,10 +307,12 @@ exports[`Row selection verifies Shift+Click enables row selection when row selec >
- - -
- - +
+
- - - + + - - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
+ -
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + + +
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
+ +
+ +
+
+
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + + + + + + + - - - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
+ -
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
+ +
+ + Terra.dataGrid.maskedCell + +
+
+
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
+ +
+ + Terra.dataGrid.maskedCell + +
+
+
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - + +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - - - - - - - - + Terra.dataGrid.blank + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
+ +
+ + Terra.dataGrid.maskedCell + +
+
+
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
+
- 2.25 -
- -
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - +
+ + Terra.dataGrid.maskedCell + +
+ + + + + + + - - - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
+ -
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
+ +
+ + Terra.dataGrid.maskedCell + +
+
+
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
+ - -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - - - - +
+
+ + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
+ +
+ + Terra.dataGrid.maskedCell + +
+
+
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - + + + + - - - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
+
+ + +
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
+ +
+ + Terra.dataGrid.maskedCell + +
+
+
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
+ - 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - + + + + - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - +
+ + Terra.dataGrid.maskedCell + +
+ + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - - - - - + + + + + + + + + - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
-
- -
-
+
+ +
+
-
- - Vitals - -
- - +
+
+ + Vitals + +
+ -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- -
-
-
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
+ -
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Temperature Oral (degC) -
-
-
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + +
- - -
- - +
+
- - - + + - - - - - - +
+ + + + + + -
- - - - +
+ + +
+ + + + -
- - - - - - - - +
+ + + + + +
+ + + + - - - - - - - + Heart Rate Monitored (bpm) + + + + + + - - - - - + Terra.dataGrid.blank + + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Temperature Oral (degC) + + + + + + - - - - - + 36.7 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Cardiac Index (L/min/m2) + + + + + + - - - - - + 2.25 + + + + + + - - - - - - - + Terra.dataGrid.maskedCell + + + + + + + + + - - - - - - - + Oxygen Flow Rate (L/min) + + + + + + - - - - - + 63 + + + + + + - - - - - - -
+ -
- - Vitals - -
- - + + Vitals + + + -
- - -
-
- - March 16 - -
- - +
+
+ + March 16 + +
+ -
- - -
-
-
- - March 17 - -
- - +
+
+ + March 17 + +
+ -
- - -
- -
- Heart Rate Monitored (bpm) -
-
-
- -
- - Terra.dataGrid.blank - -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
+
- Temperature Oral (degC) -
- -
- -
- 36.7 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Cardiac Index (L/min/m2) -
-
-
- -
- 2.25 -
-
-
- -
- - Terra.dataGrid.maskedCell - -
-
-
- -
- Oxygen Flow Rate (L/min) -
-
-
- -
- 63 -
-
-
- -
- 47 -
-
-
- - + 47 +
+ + + + + + + + + - -
- - + text={null} + > + +
+
+ + + { rowSelectionNavigateToCell(4, 1); browser.keys(['Escape']); // clears row selection mode - Terra.validates.element('row-selection-mode-off-cell-4-1-focused', { selector: defaultSelector }); + Terra.validates.element('row-selection-mode-off-cell-4-0-focused', { selector: defaultSelector }); + }); + + it('focus remains on the grid when row selection mode is turned off from a row selection cell', () => { + rowSelectionNavigateToCell(4, 0); + browser.keys(['Escape']); // clears row selection mode + + Terra.validates.element('row-selection-mode-off-cell-4-0-focused', { selector: defaultSelector }); + expect(browser.$('[role="grid"] tbody tr:nth-of-type(4) th:nth-of-type(1)').isFocused()).toBe(true); }); it('selects a row by clicking inside that row', () => { From 72319978cde491ee2089fd9102fbbabb2710eed4 Mon Sep 17 00:00:00 2001 From: saket2403 Date: Mon, 16 Oct 2023 15:34:31 +0530 Subject: [PATCH 18/19] Update fusion padding --- .../src/orion-fusion-theme/Tabs.module.scss | 2 +- .../tabs-spec/Keyboard_Focus_on_First_Tab.png | Bin 16149 -> 16353 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss b/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss index c4ad604d387..a43858767f1 100644 --- a/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss +++ b/packages/terra-tabs/src/orion-fusion-theme/Tabs.module.scss @@ -10,7 +10,7 @@ --terra-tabs-line-height: 1.41666667rem; --terra-tabs-padding: 0.5rem 1.25rem; --terra-tabs-text-only-padding: 0.5rem 1.25rem; - --terra-tabs-text-only-draggable-padding: 0.5rem 0.25rem; + --terra-tabs-text-only-draggable-padding: 0.9rem 0.25rem; --terra-tabs-label-next-to-icon-margin-left: 0.25rem; --terra-tabs-menu-arrow-margin-left: 0.5rem; --terra-tabs-menu-collapsed-justify-content: center; diff --git a/packages/terra-tabs/tests/wdio/__snapshots__/reference/orion-fusion-theme/en/chrome_medium/tabs-spec/Keyboard_Focus_on_First_Tab.png b/packages/terra-tabs/tests/wdio/__snapshots__/reference/orion-fusion-theme/en/chrome_medium/tabs-spec/Keyboard_Focus_on_First_Tab.png index 5865dee9a038f64f163ad34617bbdb35afaa5af0..e87764e64b97929ef3f49300a8fbcffb57c1eb11 100644 GIT binary patch literal 16353 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 H4d475>0}?R literal 16149 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 Date: Wed, 18 Oct 2023 16:48:55 +0530 Subject: [PATCH 19/19] Update packages/terra-tabs/CHANGELOG.md --- packages/terra-tabs/CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/terra-tabs/CHANGELOG.md b/packages/terra-tabs/CHANGELOG.md index 6244d433368..1d001dfc491 100644 --- a/packages/terra-tabs/CHANGELOG.md +++ b/packages/terra-tabs/CHANGELOG.md @@ -3,7 +3,8 @@ ## Unreleased * Added - * Added Vertical orientation functionality for `terra-tabs`. + * Added Vertical orientation for `terra-tabs`. + ## 7.10.0 - (October 11, 2023) * Changed