@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
JavaScript
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