UNPKG

@awsui/components-react

Version:

On July 19th, 2022, we launched [Cloudscape Design System](https://cloudscape.design). Cloudscape is an evolution of AWS-UI. It consists of user interface guidelines, front-end components, design resources, and development tools for building intuitive, en

53 lines 4.71 kB
import { __rest } from "tslib"; // Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 import React, { useContext } from 'react'; import clsx from 'clsx'; import { getAnalyticsLabelAttribute } from '@awsui/component-toolkit/internal/analytics-metadata'; import { StickyHeaderContext } from '../container/use-sticky-header'; import { DATA_ATTR_FUNNEL_KEY, FUNNEL_KEY_SUBSTEP_NAME } from '../internal/analytics/selectors'; import { getBaseProps } from '../internal/base-component'; import { CollectionLabelContext } from '../internal/context/collection-label-context'; import { useContainerHeader } from '../internal/context/container-header'; import { InfoLinkLabelContext } from '../internal/context/info-link-label-context'; import { useMobile } from '../internal/hooks/use-mobile'; import { useUniqueId } from '../internal/hooks/use-unique-id'; import { useVisualRefresh } from '../internal/hooks/use-visual-mode'; import analyticsSelectors from './analytics-metadata/styles.css.js'; import styles from './styles.css.js'; export default function InternalHeader(_a) { var { variant, headingTagOverride, children, actions, counter, description, info, __internalRootRef = null, __disableActionsWrapping, __headingTagRef, __headingTagTabIndex } = _a, restProps = __rest(_a, ["variant", "headingTagOverride", "children", "actions", "counter", "description", "info", "__internalRootRef", "__disableActionsWrapping", "__headingTagRef", "__headingTagTabIndex"]); const isMobile = useMobile(); const HeadingTag = headingTagOverride !== null && headingTagOverride !== void 0 ? headingTagOverride : (variant === 'awsui-h1-sticky' ? 'h1' : variant); const { isStuck } = useContext(StickyHeaderContext); const baseProps = getBaseProps(restProps); const isRefresh = useVisualRefresh(); const assignHeaderId = useContext(CollectionLabelContext).assignId; const isInContainer = useContainerHeader(); const headingId = useUniqueId('heading'); if (assignHeaderId !== undefined) { assignHeaderId(headingId); } // If is mobile there is no need to have the dynamic variant because it's scrolled out of view const dynamicVariant = !isMobile && isStuck ? 'h2' : 'h1'; const variantOverride = variant === 'awsui-h1-sticky' ? (isRefresh ? dynamicVariant : 'h2') : variant; return (React.createElement("div", Object.assign({}, baseProps, { className: clsx(styles.root, baseProps.className, styles[`root-variant-${variantOverride}`], isRefresh && styles.refresh, !actions && [styles[`root-no-actions`]], description && [styles[`root-has-description`]]), ref: __internalRootRef }), React.createElement("div", { className: clsx(styles.main, styles[`main-variant-${variantOverride}`], isRefresh && styles.refresh, __disableActionsWrapping && [styles['no-wrap']]) }, React.createElement("div", { className: clsx(styles.title, styles[`title-variant-${variantOverride}`], isRefresh && styles.refresh) }, React.createElement(HeadingTag, Object.assign({ className: clsx(styles.heading, styles[`heading-variant-${variantOverride}`]), ref: __headingTagRef, tabIndex: __headingTagTabIndex }, getAnalyticsLabelAttribute(`.${analyticsSelectors['heading-text']}`)), React.createElement("span", Object.assign({}, (isInContainer ? { [DATA_ATTR_FUNNEL_KEY]: FUNNEL_KEY_SUBSTEP_NAME } : {}), { className: clsx(styles['heading-text'], analyticsSelectors['heading-text'], styles[`heading-text-variant-${variantOverride}`]), id: headingId }), children), counter !== undefined && React.createElement("span", { className: styles.counter }, " ", counter)), info && (React.createElement(InfoLinkLabelContext.Provider, { value: headingId }, React.createElement("span", { className: styles['virtual-space'] }, " \u00A0"), React.createElement("span", { className: styles.info }, info)))), actions && (React.createElement("div", { className: clsx(styles.actions, styles[`actions-variant-${variantOverride}`], isRefresh && styles.refresh, !__disableActionsWrapping && [styles['actions-centered']]) }, actions))), React.createElement(Description, { variantOverride: variantOverride }, description))); } export function Description({ children, variantOverride }) { const isRefresh = useVisualRefresh(); return ((children && (React.createElement("p", { className: clsx(styles.description, styles[`description-variant-${variantOverride}`], isRefresh && styles.refresh) }, children))) || null); } //# sourceMappingURL=internal.js.map