@react-spectrum/breadcrumbs 3.0.0-nightly.2453 → 3.0.0-nightly.2458

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/import.mjs CHANGED
@@ -7,8 +7,7 @@ import {MenuTrigger as $koRP3$MenuTrigger, Menu as $koRP3$Menu} from "@react-spe
7
7
  import $koRP3$react, {useRef as $koRP3$useRef, useCallback as $koRP3$useCallback, Fragment as $koRP3$Fragment} from "react";
8
8
  import {useBreadcrumbs as $koRP3$useBreadcrumbs, useBreadcrumbItem as $koRP3$useBreadcrumbItem} from "@react-aria/breadcrumbs";
9
9
  import {useValueEffect as $koRP3$useValueEffect, useResizeObserver as $koRP3$useResizeObserver, useLayoutEffect as $koRP3$useLayoutEffect, mergeProps as $koRP3$mergeProps} from "@react-aria/utils";
10
- import {useProviderProps as $koRP3$useProviderProps, useProvider as $koRP3$useProvider} from "@react-spectrum/provider";
11
- import $koRP3$spectrumiconsexpressChevronRight from "@spectrum-icons/express/ChevronRight";
10
+ import {useProviderProps as $koRP3$useProviderProps} from "@react-spectrum/provider";
12
11
  import $koRP3$spectrumiconsuiChevronRightSmall from "@spectrum-icons/ui/ChevronRightSmall";
13
12
  import {FocusRing as $koRP3$FocusRing} from "@react-aria/focus";
14
13
  import {useHover as $koRP3$useHover} from "@react-aria/interactions";
@@ -57,7 +56,6 @@ function $parcel$export(e, n, v, s) {
57
56
 
58
57
 
59
58
 
60
-
61
59
  var $48e85557f3729e3d$exports = {};
62
60
 
63
61
  $parcel$export($48e85557f3729e3d$exports, "focus-ring", () => $48e85557f3729e3d$export$f39a09f249340e2a, (v) => $48e85557f3729e3d$export$f39a09f249340e2a = v);
@@ -125,11 +123,8 @@ $48e85557f3729e3d$export$63e9e087a73f808b = `_1gDPVa_spectrum-Heading--pageTitle
125
123
 
126
124
 
127
125
 
128
-
129
126
  function $2bfa2c84c665c457$export$c13f210c706eb549(props) {
130
- var _provider_theme, _provider_theme_global;
131
127
  let { children: children, isCurrent: isCurrent, isDisabled: isDisabled, isMenu: isMenu } = props;
132
- let provider = (0, $koRP3$useProvider)();
133
128
  let { direction: direction } = (0, $koRP3$useLocale)();
134
129
  let ref = (0, $koRP3$useRef)(null);
135
130
  let ElementType = props.href ? "a" : "span";
@@ -150,11 +145,7 @@ function $2bfa2c84c665c457$export$c13f210c706eb549(props) {
150
145
  "is-disabled": !isCurrent && isDisabled,
151
146
  "is-hovered": isHovered
152
147
  })
153
- }, children)), (provider === null || provider === void 0 ? void 0 : (_provider_theme = provider.theme) === null || _provider_theme === void 0 ? void 0 : (_provider_theme_global = _provider_theme.global) === null || _provider_theme_global === void 0 ? void 0 : _provider_theme_global.express) ? /*#__PURE__*/ (0, $koRP3$react).createElement((0, $koRP3$spectrumiconsexpressChevronRight), {
154
- UNSAFE_className: (0, $koRP3$classNames)((0, (/*@__PURE__*/$parcel$interopDefault($48e85557f3729e3d$exports))), "spectrum-Breadcrumbs-itemSeparator", {
155
- "is-reversed": direction === "rtl"
156
- })
157
- }) : /*#__PURE__*/ (0, $koRP3$react).createElement((0, $koRP3$spectrumiconsuiChevronRightSmall), {
148
+ }, children)), /*#__PURE__*/ (0, $koRP3$react).createElement((0, $koRP3$spectrumiconsuiChevronRightSmall), {
158
149
  UNSAFE_className: (0, $koRP3$classNames)((0, (/*@__PURE__*/$parcel$interopDefault($48e85557f3729e3d$exports))), "spectrum-Breadcrumbs-itemSeparator", {
159
150
  "is-reversed": direction === "rtl"
160
151
  })
package/dist/main.js CHANGED
@@ -8,7 +8,6 @@ var $8bWUw$react = require("react");
8
8
  var $8bWUw$reactariabreadcrumbs = require("@react-aria/breadcrumbs");
9
9
  var $8bWUw$reactariautils = require("@react-aria/utils");
10
10
  var $8bWUw$reactspectrumprovider = require("@react-spectrum/provider");
11
- var $8bWUw$spectrumiconsexpressChevronRight = require("@spectrum-icons/express/ChevronRight");
12
11
  var $8bWUw$spectrumiconsuiChevronRightSmall = require("@spectrum-icons/ui/ChevronRightSmall");
13
12
  var $8bWUw$reactariafocus = require("@react-aria/focus");
14
13
  var $8bWUw$reactariainteractions = require("@react-aria/interactions");
@@ -60,7 +59,6 @@ $parcel$export(module.exports, "Item", () => $8bWUw$reactstatelycollections.Item
60
59
 
61
60
 
62
61
 
63
-
64
62
  var $3292ef9f328419fc$exports = {};
65
63
 
66
64
  $parcel$export($3292ef9f328419fc$exports, "focus-ring", () => $3292ef9f328419fc$export$f39a09f249340e2a, (v) => $3292ef9f328419fc$export$f39a09f249340e2a = v);
@@ -128,11 +126,8 @@ $3292ef9f328419fc$export$63e9e087a73f808b = `_1gDPVa_spectrum-Heading--pageTitle
128
126
 
129
127
 
130
128
 
131
-
132
129
  function $d90ab02c74e9be0c$export$c13f210c706eb549(props) {
133
- var _provider_theme, _provider_theme_global;
134
130
  let { children: children, isCurrent: isCurrent, isDisabled: isDisabled, isMenu: isMenu } = props;
135
- let provider = (0, $8bWUw$reactspectrumprovider.useProvider)();
136
131
  let { direction: direction } = (0, $8bWUw$reactariai18n.useLocale)();
137
132
  let ref = (0, $8bWUw$react.useRef)(null);
138
133
  let ElementType = props.href ? "a" : "span";
@@ -153,11 +148,7 @@ function $d90ab02c74e9be0c$export$c13f210c706eb549(props) {
153
148
  "is-disabled": !isCurrent && isDisabled,
154
149
  "is-hovered": isHovered
155
150
  })
156
- }, children)), (provider === null || provider === void 0 ? void 0 : (_provider_theme = provider.theme) === null || _provider_theme === void 0 ? void 0 : (_provider_theme_global = _provider_theme.global) === null || _provider_theme_global === void 0 ? void 0 : _provider_theme_global.express) ? /*#__PURE__*/ (0, ($parcel$interopDefault($8bWUw$react))).createElement((0, ($parcel$interopDefault($8bWUw$spectrumiconsexpressChevronRight))), {
157
- UNSAFE_className: (0, $8bWUw$reactspectrumutils.classNames)((0, (/*@__PURE__*/$parcel$interopDefault($3292ef9f328419fc$exports))), "spectrum-Breadcrumbs-itemSeparator", {
158
- "is-reversed": direction === "rtl"
159
- })
160
- }) : /*#__PURE__*/ (0, ($parcel$interopDefault($8bWUw$react))).createElement((0, ($parcel$interopDefault($8bWUw$spectrumiconsuiChevronRightSmall))), {
151
+ }, children)), /*#__PURE__*/ (0, ($parcel$interopDefault($8bWUw$react))).createElement((0, ($parcel$interopDefault($8bWUw$spectrumiconsuiChevronRightSmall))), {
161
152
  UNSAFE_className: (0, $8bWUw$reactspectrumutils.classNames)((0, (/*@__PURE__*/$parcel$interopDefault($3292ef9f328419fc$exports))), "spectrum-Breadcrumbs-itemSeparator", {
162
153
  "is-reversed": direction === "rtl"
163
154
  })
package/dist/main.js.map CHANGED
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/breadcrumbs/src/index.ts","packages/@react-spectrum/breadcrumbs/src/Breadcrumbs.tsx","packages/@react-spectrum/breadcrumbs/src/BreadcrumbItem.tsx","packages/@adobe/spectrum-css-temp/components/breadcrumb/vars.css"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n/// <reference types=\"css-module-types\" />\nexport {Breadcrumbs} from './Breadcrumbs';\nexport {Item} from '@react-stately/collections';\nexport type {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {ActionButton} from '@react-spectrum/button';\nimport {BreadcrumbItem} from './BreadcrumbItem';\nimport {classNames, useDOMRef, useStyleProps} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport FolderBreadcrumb from '@spectrum-icons/ui/FolderBreadcrumb';\nimport {Menu, MenuTrigger} from '@react-spectrum/menu';\nimport React, {Key, ReactElement, useCallback, useRef} from 'react';\nimport {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbs} from '@react-aria/breadcrumbs';\nimport {useLayoutEffect, useResizeObserver, useValueEffect} from '@react-aria/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\n\nconst MIN_VISIBLE_ITEMS = 1;\nconst MAX_VISIBLE_ITEMS = 4;\n\nfunction Breadcrumbs<T>(props: SpectrumBreadcrumbsProps<T>, ref: DOMRef) {\n props = useProviderProps(props);\n let {\n size = 'L',\n isMultiline,\n children,\n showRoot,\n isDisabled,\n onAction,\n autoFocusCurrent,\n ...otherProps\n } = props;\n\n // Not using React.Children.toArray because it mutates the key prop.\n let childArray: ReactElement[] = [];\n React.Children.forEach(children, (child, index) => {\n if (React.isValidElement(child)) {\n if (child.key == null) {\n child = React.cloneElement(child, {key: index});\n }\n childArray.push(child);\n }\n });\n\n let domRef = useDOMRef(ref);\n let listRef = useRef<HTMLUListElement>(null);\n\n let [visibleItems, setVisibleItems] = useValueEffect(childArray.length);\n\n let {navProps} = useBreadcrumbs(props);\n let {styleProps} = useStyleProps(otherProps);\n\n let updateOverflow = useCallback(() => {\n let computeVisibleItems = (visibleItems: number): number => {\n // Refs can be null at runtime.\n let currListRef: HTMLUListElement | null = listRef.current;\n if (!currListRef) {\n return visibleItems;\n }\n\n let listItems = Array.from(currListRef.children) as HTMLLIElement[];\n if (listItems.length <= 0) {\n return visibleItems;\n }\n let containerWidth = currListRef.offsetWidth;\n let isShowingMenu = childArray.length > visibleItems;\n let calculatedWidth = 0;\n let newVisibleItems = 0;\n let maxVisibleItems = MAX_VISIBLE_ITEMS;\n\n if (showRoot) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n newVisibleItems++;\n }\n\n if (isShowingMenu) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n maxVisibleItems--;\n }\n\n if (showRoot && calculatedWidth >= containerWidth) {\n newVisibleItems--;\n }\n\n // TODO: what if multiline and only one breadcrumb??\n if (isMultiline) {\n listItems.pop();\n newVisibleItems++;\n } else {\n if (listItems.length > 0) {\n // Ensure the last breadcrumb isn't truncated when we measure it.\n let last = (listItems.pop() as HTMLLIElement);\n last.style.overflow = 'visible';\n\n calculatedWidth += last.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n\n last.style.overflow = '';\n }\n }\n\n for (let breadcrumb of listItems.reverse()) {\n calculatedWidth += breadcrumb.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n }\n\n return Math.max(MIN_VISIBLE_ITEMS, Math.min(maxVisibleItems, newVisibleItems));\n };\n\n setVisibleItems(function *() {\n // Update to show all items.\n yield childArray.length;\n\n // Measure, and update to show the items that fit.\n let newVisibleItems = computeVisibleItems(childArray.length);\n yield newVisibleItems;\n\n // If the number of items is less than the number of children,\n // then update again to ensure that the menu fits.\n if (newVisibleItems < childArray.length && newVisibleItems > 1) {\n yield computeVisibleItems(newVisibleItems);\n }\n });\n }, [childArray.length, setVisibleItems, showRoot, isMultiline]);\n\n useResizeObserver({ref: domRef, onResize: updateOverflow});\n\n let lastChildren = useRef<typeof children | null>(null);\n useLayoutEffect(() => {\n if (children !== lastChildren.current) {\n lastChildren.current = children;\n updateOverflow();\n }\n });\n\n let contents = childArray;\n if (childArray.length > visibleItems) {\n let selectedItem = childArray[childArray.length - 1];\n let selectedKey = selectedItem.key ?? childArray.length - 1;\n let onMenuAction = (key: Key) => {\n // Don't fire onAction when clicking on the last item\n if (key !== selectedKey && onAction) {\n onAction(key);\n }\n };\n\n let menuItem = (\n <BreadcrumbItem key=\"menu\" isMenu>\n <MenuTrigger>\n <ActionButton\n UNSAFE_className={classNames(styles, 'spectrum-Breadcrumbs-actionButton')}\n aria-label=\"…\"\n isQuiet\n isDisabled={isDisabled}>\n <FolderBreadcrumb />\n </ActionButton>\n <Menu selectionMode=\"single\" selectedKeys={[selectedKey]} onAction={onMenuAction}>\n {childArray}\n </Menu>\n </MenuTrigger>\n </BreadcrumbItem>\n );\n\n contents = [menuItem];\n let breadcrumbs = [...childArray];\n let endItems = visibleItems;\n if (showRoot && visibleItems > 1) {\n let rootItem = breadcrumbs.shift();\n if (rootItem) {\n contents.unshift(rootItem);\n }\n endItems--;\n }\n contents.push(...breadcrumbs.slice(-endItems));\n }\n\n let lastIndex = contents.length - 1;\n let breadcrumbItems = contents.map((child, index) => {\n let isCurrent = index === lastIndex;\n let key = child.key ?? index;\n let onPress = () => {\n if (onAction) {\n onAction(key);\n }\n };\n\n return (\n <li\n key={index}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-item'\n )\n }>\n <BreadcrumbItem\n {...child.props}\n key={key}\n isCurrent={isCurrent}\n isDisabled={isDisabled}\n onPress={onPress}\n autoFocus={isCurrent && autoFocusCurrent}>\n {child.props.children}\n </BreadcrumbItem>\n </li>\n );\n });\n\n return (\n <nav\n {...styleProps}\n {...navProps}\n ref={domRef}>\n <ul\n ref={listRef}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs',\n {\n 'spectrum-Breadcrumbs--small': size === 'S',\n 'spectrum-Breadcrumbs--medium': size === 'M',\n 'spectrum-Breadcrumbs--multiline': isMultiline,\n 'spectrum-Breadcrumbs--showRoot': showRoot,\n 'is-disabled': isDisabled\n },\n styleProps.className\n )\n }>\n {breadcrumbItems}\n </ul>\n </nav>\n );\n}\n\n/**\n * Breadcrumbs show hierarchy and navigational context for a user’s location within an application.\n */\nlet _Breadcrumbs = React.forwardRef(Breadcrumbs);\nexport {_Breadcrumbs as Breadcrumbs};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BreadcrumbItemProps} from '@react-types/breadcrumbs';\n// eslint-disable-next-line monorepo/no-internal-import\nimport ChevronRight from '@spectrum-icons/express/ChevronRight';\nimport ChevronRightSmall from '@spectrum-icons/ui/ChevronRightSmall';\nimport {classNames} from '@react-spectrum/utils';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport React, {Fragment, useRef} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbItem} from '@react-aria/breadcrumbs';\nimport {useHover} from '@react-aria/interactions';\nimport {useLocale} from '@react-aria/i18n';\nimport {useProvider} from '@react-spectrum/provider';\n\ninterface SpectrumBreadcrumbItemProps extends BreadcrumbItemProps {\n isMenu?: boolean\n}\n\nexport function BreadcrumbItem(props: SpectrumBreadcrumbItemProps) {\n let {\n children,\n isCurrent,\n isDisabled,\n isMenu\n } = props;\n let provider = useProvider();\n\n let {direction} = useLocale();\n let ref = useRef(null);\n let ElementType: React.ElementType = props.href ? 'a' : 'span';\n let {itemProps} = useBreadcrumbItem({\n ...props,\n elementType: ElementType\n }, ref);\n let {hoverProps, isHovered} = useHover(props);\n\n // If this item contains a menu button, then it shouldn't be a link.\n if (isMenu) {\n itemProps = {};\n }\n\n return (\n <Fragment>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n <ElementType\n {...mergeProps(itemProps, hoverProps)}\n ref={ref}\n className={\n classNames(\n styles,\n {\n 'spectrum-Breadcrumbs-itemLink': !isMenu,\n 'is-disabled': !isCurrent && isDisabled,\n 'is-hovered': isHovered\n }\n )\n }>\n {children}\n </ElementType>\n </FocusRing>\n {provider?.theme?.global?.express ? (\n <ChevronRight\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-itemSeparator',\n {\n 'is-reversed': direction === 'rtl'\n }\n )\n } />\n ) : (\n <ChevronRightSmall\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-itemSeparator',\n {\n 'is-reversed': direction === 'rtl'\n }\n )\n } />\n )}\n </Fragment>\n );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n"],"names":[],"version":3,"file":"main.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-spectrum/breadcrumbs/src/index.ts","packages/@react-spectrum/breadcrumbs/src/Breadcrumbs.tsx","packages/@react-spectrum/breadcrumbs/src/BreadcrumbItem.tsx","packages/@adobe/spectrum-css-temp/components/breadcrumb/vars.css"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n/// <reference types=\"css-module-types\" />\nexport {Breadcrumbs} from './Breadcrumbs';\nexport {Item} from '@react-stately/collections';\nexport type {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {ActionButton} from '@react-spectrum/button';\nimport {BreadcrumbItem} from './BreadcrumbItem';\nimport {classNames, useDOMRef, useStyleProps} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport FolderBreadcrumb from '@spectrum-icons/ui/FolderBreadcrumb';\nimport {Menu, MenuTrigger} from '@react-spectrum/menu';\nimport React, {Key, ReactElement, useCallback, useRef} from 'react';\nimport {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbs} from '@react-aria/breadcrumbs';\nimport {useLayoutEffect, useResizeObserver, useValueEffect} from '@react-aria/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\n\nconst MIN_VISIBLE_ITEMS = 1;\nconst MAX_VISIBLE_ITEMS = 4;\n\nfunction Breadcrumbs<T>(props: SpectrumBreadcrumbsProps<T>, ref: DOMRef) {\n props = useProviderProps(props);\n let {\n size = 'L',\n isMultiline,\n children,\n showRoot,\n isDisabled,\n onAction,\n autoFocusCurrent,\n ...otherProps\n } = props;\n\n // Not using React.Children.toArray because it mutates the key prop.\n let childArray: ReactElement[] = [];\n React.Children.forEach(children, (child, index) => {\n if (React.isValidElement(child)) {\n if (child.key == null) {\n child = React.cloneElement(child, {key: index});\n }\n childArray.push(child);\n }\n });\n\n let domRef = useDOMRef(ref);\n let listRef = useRef<HTMLUListElement>(null);\n\n let [visibleItems, setVisibleItems] = useValueEffect(childArray.length);\n\n let {navProps} = useBreadcrumbs(props);\n let {styleProps} = useStyleProps(otherProps);\n\n let updateOverflow = useCallback(() => {\n let computeVisibleItems = (visibleItems: number): number => {\n // Refs can be null at runtime.\n let currListRef: HTMLUListElement | null = listRef.current;\n if (!currListRef) {\n return visibleItems;\n }\n\n let listItems = Array.from(currListRef.children) as HTMLLIElement[];\n if (listItems.length <= 0) {\n return visibleItems;\n }\n let containerWidth = currListRef.offsetWidth;\n let isShowingMenu = childArray.length > visibleItems;\n let calculatedWidth = 0;\n let newVisibleItems = 0;\n let maxVisibleItems = MAX_VISIBLE_ITEMS;\n\n if (showRoot) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n newVisibleItems++;\n }\n\n if (isShowingMenu) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n maxVisibleItems--;\n }\n\n if (showRoot && calculatedWidth >= containerWidth) {\n newVisibleItems--;\n }\n\n // TODO: what if multiline and only one breadcrumb??\n if (isMultiline) {\n listItems.pop();\n newVisibleItems++;\n } else {\n if (listItems.length > 0) {\n // Ensure the last breadcrumb isn't truncated when we measure it.\n let last = (listItems.pop() as HTMLLIElement);\n last.style.overflow = 'visible';\n\n calculatedWidth += last.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n\n last.style.overflow = '';\n }\n }\n\n for (let breadcrumb of listItems.reverse()) {\n calculatedWidth += breadcrumb.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n }\n\n return Math.max(MIN_VISIBLE_ITEMS, Math.min(maxVisibleItems, newVisibleItems));\n };\n\n setVisibleItems(function *() {\n // Update to show all items.\n yield childArray.length;\n\n // Measure, and update to show the items that fit.\n let newVisibleItems = computeVisibleItems(childArray.length);\n yield newVisibleItems;\n\n // If the number of items is less than the number of children,\n // then update again to ensure that the menu fits.\n if (newVisibleItems < childArray.length && newVisibleItems > 1) {\n yield computeVisibleItems(newVisibleItems);\n }\n });\n }, [childArray.length, setVisibleItems, showRoot, isMultiline]);\n\n useResizeObserver({ref: domRef, onResize: updateOverflow});\n\n let lastChildren = useRef<typeof children | null>(null);\n useLayoutEffect(() => {\n if (children !== lastChildren.current) {\n lastChildren.current = children;\n updateOverflow();\n }\n });\n\n let contents = childArray;\n if (childArray.length > visibleItems) {\n let selectedItem = childArray[childArray.length - 1];\n let selectedKey = selectedItem.key ?? childArray.length - 1;\n let onMenuAction = (key: Key) => {\n // Don't fire onAction when clicking on the last item\n if (key !== selectedKey && onAction) {\n onAction(key);\n }\n };\n\n let menuItem = (\n <BreadcrumbItem key=\"menu\" isMenu>\n <MenuTrigger>\n <ActionButton\n UNSAFE_className={classNames(styles, 'spectrum-Breadcrumbs-actionButton')}\n aria-label=\"…\"\n isQuiet\n isDisabled={isDisabled}>\n <FolderBreadcrumb />\n </ActionButton>\n <Menu selectionMode=\"single\" selectedKeys={[selectedKey]} onAction={onMenuAction}>\n {childArray}\n </Menu>\n </MenuTrigger>\n </BreadcrumbItem>\n );\n\n contents = [menuItem];\n let breadcrumbs = [...childArray];\n let endItems = visibleItems;\n if (showRoot && visibleItems > 1) {\n let rootItem = breadcrumbs.shift();\n if (rootItem) {\n contents.unshift(rootItem);\n }\n endItems--;\n }\n contents.push(...breadcrumbs.slice(-endItems));\n }\n\n let lastIndex = contents.length - 1;\n let breadcrumbItems = contents.map((child, index) => {\n let isCurrent = index === lastIndex;\n let key = child.key ?? index;\n let onPress = () => {\n if (onAction) {\n onAction(key);\n }\n };\n\n return (\n <li\n key={index}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-item'\n )\n }>\n <BreadcrumbItem\n {...child.props}\n key={key}\n isCurrent={isCurrent}\n isDisabled={isDisabled}\n onPress={onPress}\n autoFocus={isCurrent && autoFocusCurrent}>\n {child.props.children}\n </BreadcrumbItem>\n </li>\n );\n });\n\n return (\n <nav\n {...styleProps}\n {...navProps}\n ref={domRef}>\n <ul\n ref={listRef}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs',\n {\n 'spectrum-Breadcrumbs--small': size === 'S',\n 'spectrum-Breadcrumbs--medium': size === 'M',\n 'spectrum-Breadcrumbs--multiline': isMultiline,\n 'spectrum-Breadcrumbs--showRoot': showRoot,\n 'is-disabled': isDisabled\n },\n styleProps.className\n )\n }>\n {breadcrumbItems}\n </ul>\n </nav>\n );\n}\n\n/**\n * Breadcrumbs show hierarchy and navigational context for a user’s location within an application.\n */\nlet _Breadcrumbs = React.forwardRef(Breadcrumbs);\nexport {_Breadcrumbs as Breadcrumbs};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BreadcrumbItemProps} from '@react-types/breadcrumbs';\nimport ChevronRightSmall from '@spectrum-icons/ui/ChevronRightSmall';\nimport {classNames} from '@react-spectrum/utils';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport React, {Fragment, useRef} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbItem} from '@react-aria/breadcrumbs';\nimport {useHover} from '@react-aria/interactions';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SpectrumBreadcrumbItemProps extends BreadcrumbItemProps {\n isMenu?: boolean\n}\n\nexport function BreadcrumbItem(props: SpectrumBreadcrumbItemProps) {\n let {\n children,\n isCurrent,\n isDisabled,\n isMenu\n } = props;\n\n let {direction} = useLocale();\n let ref = useRef(null);\n let ElementType: React.ElementType = props.href ? 'a' : 'span';\n let {itemProps} = useBreadcrumbItem({\n ...props,\n elementType: ElementType\n }, ref);\n let {hoverProps, isHovered} = useHover(props);\n\n // If this item contains a menu button, then it shouldn't be a link.\n if (isMenu) {\n itemProps = {};\n }\n\n return (\n <Fragment>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n <ElementType\n {...mergeProps(itemProps, hoverProps)}\n ref={ref}\n className={\n classNames(\n styles,\n {\n 'spectrum-Breadcrumbs-itemLink': !isMenu,\n 'is-disabled': !isCurrent && isDisabled,\n 'is-hovered': isHovered\n }\n )\n }>\n {children}\n </ElementType>\n </FocusRing>\n <ChevronRightSmall\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-itemSeparator',\n {\n 'is-reversed': direction === 'rtl'\n }\n )\n } />\n </Fragment>\n );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n"],"names":[],"version":3,"file":"main.js.map"}
package/dist/module.js CHANGED
@@ -7,8 +7,7 @@ import {MenuTrigger as $koRP3$MenuTrigger, Menu as $koRP3$Menu} from "@react-spe
7
7
  import $koRP3$react, {useRef as $koRP3$useRef, useCallback as $koRP3$useCallback, Fragment as $koRP3$Fragment} from "react";
8
8
  import {useBreadcrumbs as $koRP3$useBreadcrumbs, useBreadcrumbItem as $koRP3$useBreadcrumbItem} from "@react-aria/breadcrumbs";
9
9
  import {useValueEffect as $koRP3$useValueEffect, useResizeObserver as $koRP3$useResizeObserver, useLayoutEffect as $koRP3$useLayoutEffect, mergeProps as $koRP3$mergeProps} from "@react-aria/utils";
10
- import {useProviderProps as $koRP3$useProviderProps, useProvider as $koRP3$useProvider} from "@react-spectrum/provider";
11
- import $koRP3$spectrumiconsexpressChevronRight from "@spectrum-icons/express/ChevronRight";
10
+ import {useProviderProps as $koRP3$useProviderProps} from "@react-spectrum/provider";
12
11
  import $koRP3$spectrumiconsuiChevronRightSmall from "@spectrum-icons/ui/ChevronRightSmall";
13
12
  import {FocusRing as $koRP3$FocusRing} from "@react-aria/focus";
14
13
  import {useHover as $koRP3$useHover} from "@react-aria/interactions";
@@ -57,7 +56,6 @@ function $parcel$export(e, n, v, s) {
57
56
 
58
57
 
59
58
 
60
-
61
59
  var $48e85557f3729e3d$exports = {};
62
60
 
63
61
  $parcel$export($48e85557f3729e3d$exports, "focus-ring", () => $48e85557f3729e3d$export$f39a09f249340e2a, (v) => $48e85557f3729e3d$export$f39a09f249340e2a = v);
@@ -125,11 +123,8 @@ $48e85557f3729e3d$export$63e9e087a73f808b = `_1gDPVa_spectrum-Heading--pageTitle
125
123
 
126
124
 
127
125
 
128
-
129
126
  function $2bfa2c84c665c457$export$c13f210c706eb549(props) {
130
- var _provider_theme, _provider_theme_global;
131
127
  let { children: children, isCurrent: isCurrent, isDisabled: isDisabled, isMenu: isMenu } = props;
132
- let provider = (0, $koRP3$useProvider)();
133
128
  let { direction: direction } = (0, $koRP3$useLocale)();
134
129
  let ref = (0, $koRP3$useRef)(null);
135
130
  let ElementType = props.href ? "a" : "span";
@@ -150,11 +145,7 @@ function $2bfa2c84c665c457$export$c13f210c706eb549(props) {
150
145
  "is-disabled": !isCurrent && isDisabled,
151
146
  "is-hovered": isHovered
152
147
  })
153
- }, children)), (provider === null || provider === void 0 ? void 0 : (_provider_theme = provider.theme) === null || _provider_theme === void 0 ? void 0 : (_provider_theme_global = _provider_theme.global) === null || _provider_theme_global === void 0 ? void 0 : _provider_theme_global.express) ? /*#__PURE__*/ (0, $koRP3$react).createElement((0, $koRP3$spectrumiconsexpressChevronRight), {
154
- UNSAFE_className: (0, $koRP3$classNames)((0, (/*@__PURE__*/$parcel$interopDefault($48e85557f3729e3d$exports))), "spectrum-Breadcrumbs-itemSeparator", {
155
- "is-reversed": direction === "rtl"
156
- })
157
- }) : /*#__PURE__*/ (0, $koRP3$react).createElement((0, $koRP3$spectrumiconsuiChevronRightSmall), {
148
+ }, children)), /*#__PURE__*/ (0, $koRP3$react).createElement((0, $koRP3$spectrumiconsuiChevronRightSmall), {
158
149
  UNSAFE_className: (0, $koRP3$classNames)((0, (/*@__PURE__*/$parcel$interopDefault($48e85557f3729e3d$exports))), "spectrum-Breadcrumbs-itemSeparator", {
159
150
  "is-reversed": direction === "rtl"
160
151
  })
@@ -1 +1 @@
1
- {"mappings":"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","sources":["packages/@react-spectrum/breadcrumbs/src/index.ts","packages/@react-spectrum/breadcrumbs/src/Breadcrumbs.tsx","packages/@react-spectrum/breadcrumbs/src/BreadcrumbItem.tsx","packages/@adobe/spectrum-css-temp/components/breadcrumb/vars.css"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n/// <reference types=\"css-module-types\" />\nexport {Breadcrumbs} from './Breadcrumbs';\nexport {Item} from '@react-stately/collections';\nexport type {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {ActionButton} from '@react-spectrum/button';\nimport {BreadcrumbItem} from './BreadcrumbItem';\nimport {classNames, useDOMRef, useStyleProps} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport FolderBreadcrumb from '@spectrum-icons/ui/FolderBreadcrumb';\nimport {Menu, MenuTrigger} from '@react-spectrum/menu';\nimport React, {Key, ReactElement, useCallback, useRef} from 'react';\nimport {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbs} from '@react-aria/breadcrumbs';\nimport {useLayoutEffect, useResizeObserver, useValueEffect} from '@react-aria/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\n\nconst MIN_VISIBLE_ITEMS = 1;\nconst MAX_VISIBLE_ITEMS = 4;\n\nfunction Breadcrumbs<T>(props: SpectrumBreadcrumbsProps<T>, ref: DOMRef) {\n props = useProviderProps(props);\n let {\n size = 'L',\n isMultiline,\n children,\n showRoot,\n isDisabled,\n onAction,\n autoFocusCurrent,\n ...otherProps\n } = props;\n\n // Not using React.Children.toArray because it mutates the key prop.\n let childArray: ReactElement[] = [];\n React.Children.forEach(children, (child, index) => {\n if (React.isValidElement(child)) {\n if (child.key == null) {\n child = React.cloneElement(child, {key: index});\n }\n childArray.push(child);\n }\n });\n\n let domRef = useDOMRef(ref);\n let listRef = useRef<HTMLUListElement>(null);\n\n let [visibleItems, setVisibleItems] = useValueEffect(childArray.length);\n\n let {navProps} = useBreadcrumbs(props);\n let {styleProps} = useStyleProps(otherProps);\n\n let updateOverflow = useCallback(() => {\n let computeVisibleItems = (visibleItems: number): number => {\n // Refs can be null at runtime.\n let currListRef: HTMLUListElement | null = listRef.current;\n if (!currListRef) {\n return visibleItems;\n }\n\n let listItems = Array.from(currListRef.children) as HTMLLIElement[];\n if (listItems.length <= 0) {\n return visibleItems;\n }\n let containerWidth = currListRef.offsetWidth;\n let isShowingMenu = childArray.length > visibleItems;\n let calculatedWidth = 0;\n let newVisibleItems = 0;\n let maxVisibleItems = MAX_VISIBLE_ITEMS;\n\n if (showRoot) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n newVisibleItems++;\n }\n\n if (isShowingMenu) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n maxVisibleItems--;\n }\n\n if (showRoot && calculatedWidth >= containerWidth) {\n newVisibleItems--;\n }\n\n // TODO: what if multiline and only one breadcrumb??\n if (isMultiline) {\n listItems.pop();\n newVisibleItems++;\n } else {\n if (listItems.length > 0) {\n // Ensure the last breadcrumb isn't truncated when we measure it.\n let last = (listItems.pop() as HTMLLIElement);\n last.style.overflow = 'visible';\n\n calculatedWidth += last.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n\n last.style.overflow = '';\n }\n }\n\n for (let breadcrumb of listItems.reverse()) {\n calculatedWidth += breadcrumb.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n }\n\n return Math.max(MIN_VISIBLE_ITEMS, Math.min(maxVisibleItems, newVisibleItems));\n };\n\n setVisibleItems(function *() {\n // Update to show all items.\n yield childArray.length;\n\n // Measure, and update to show the items that fit.\n let newVisibleItems = computeVisibleItems(childArray.length);\n yield newVisibleItems;\n\n // If the number of items is less than the number of children,\n // then update again to ensure that the menu fits.\n if (newVisibleItems < childArray.length && newVisibleItems > 1) {\n yield computeVisibleItems(newVisibleItems);\n }\n });\n }, [childArray.length, setVisibleItems, showRoot, isMultiline]);\n\n useResizeObserver({ref: domRef, onResize: updateOverflow});\n\n let lastChildren = useRef<typeof children | null>(null);\n useLayoutEffect(() => {\n if (children !== lastChildren.current) {\n lastChildren.current = children;\n updateOverflow();\n }\n });\n\n let contents = childArray;\n if (childArray.length > visibleItems) {\n let selectedItem = childArray[childArray.length - 1];\n let selectedKey = selectedItem.key ?? childArray.length - 1;\n let onMenuAction = (key: Key) => {\n // Don't fire onAction when clicking on the last item\n if (key !== selectedKey && onAction) {\n onAction(key);\n }\n };\n\n let menuItem = (\n <BreadcrumbItem key=\"menu\" isMenu>\n <MenuTrigger>\n <ActionButton\n UNSAFE_className={classNames(styles, 'spectrum-Breadcrumbs-actionButton')}\n aria-label=\"…\"\n isQuiet\n isDisabled={isDisabled}>\n <FolderBreadcrumb />\n </ActionButton>\n <Menu selectionMode=\"single\" selectedKeys={[selectedKey]} onAction={onMenuAction}>\n {childArray}\n </Menu>\n </MenuTrigger>\n </BreadcrumbItem>\n );\n\n contents = [menuItem];\n let breadcrumbs = [...childArray];\n let endItems = visibleItems;\n if (showRoot && visibleItems > 1) {\n let rootItem = breadcrumbs.shift();\n if (rootItem) {\n contents.unshift(rootItem);\n }\n endItems--;\n }\n contents.push(...breadcrumbs.slice(-endItems));\n }\n\n let lastIndex = contents.length - 1;\n let breadcrumbItems = contents.map((child, index) => {\n let isCurrent = index === lastIndex;\n let key = child.key ?? index;\n let onPress = () => {\n if (onAction) {\n onAction(key);\n }\n };\n\n return (\n <li\n key={index}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-item'\n )\n }>\n <BreadcrumbItem\n {...child.props}\n key={key}\n isCurrent={isCurrent}\n isDisabled={isDisabled}\n onPress={onPress}\n autoFocus={isCurrent && autoFocusCurrent}>\n {child.props.children}\n </BreadcrumbItem>\n </li>\n );\n });\n\n return (\n <nav\n {...styleProps}\n {...navProps}\n ref={domRef}>\n <ul\n ref={listRef}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs',\n {\n 'spectrum-Breadcrumbs--small': size === 'S',\n 'spectrum-Breadcrumbs--medium': size === 'M',\n 'spectrum-Breadcrumbs--multiline': isMultiline,\n 'spectrum-Breadcrumbs--showRoot': showRoot,\n 'is-disabled': isDisabled\n },\n styleProps.className\n )\n }>\n {breadcrumbItems}\n </ul>\n </nav>\n );\n}\n\n/**\n * Breadcrumbs show hierarchy and navigational context for a user’s location within an application.\n */\nlet _Breadcrumbs = React.forwardRef(Breadcrumbs);\nexport {_Breadcrumbs as Breadcrumbs};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BreadcrumbItemProps} from '@react-types/breadcrumbs';\n// eslint-disable-next-line monorepo/no-internal-import\nimport ChevronRight from '@spectrum-icons/express/ChevronRight';\nimport ChevronRightSmall from '@spectrum-icons/ui/ChevronRightSmall';\nimport {classNames} from '@react-spectrum/utils';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport React, {Fragment, useRef} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbItem} from '@react-aria/breadcrumbs';\nimport {useHover} from '@react-aria/interactions';\nimport {useLocale} from '@react-aria/i18n';\nimport {useProvider} from '@react-spectrum/provider';\n\ninterface SpectrumBreadcrumbItemProps extends BreadcrumbItemProps {\n isMenu?: boolean\n}\n\nexport function BreadcrumbItem(props: SpectrumBreadcrumbItemProps) {\n let {\n children,\n isCurrent,\n isDisabled,\n isMenu\n } = props;\n let provider = useProvider();\n\n let {direction} = useLocale();\n let ref = useRef(null);\n let ElementType: React.ElementType = props.href ? 'a' : 'span';\n let {itemProps} = useBreadcrumbItem({\n ...props,\n elementType: ElementType\n }, ref);\n let {hoverProps, isHovered} = useHover(props);\n\n // If this item contains a menu button, then it shouldn't be a link.\n if (isMenu) {\n itemProps = {};\n }\n\n return (\n <Fragment>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n <ElementType\n {...mergeProps(itemProps, hoverProps)}\n ref={ref}\n className={\n classNames(\n styles,\n {\n 'spectrum-Breadcrumbs-itemLink': !isMenu,\n 'is-disabled': !isCurrent && isDisabled,\n 'is-hovered': isHovered\n }\n )\n }>\n {children}\n </ElementType>\n </FocusRing>\n {provider?.theme?.global?.express ? (\n <ChevronRight\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-itemSeparator',\n {\n 'is-reversed': direction === 'rtl'\n }\n )\n } />\n ) : (\n <ChevronRightSmall\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-itemSeparator',\n {\n 'is-reversed': direction === 'rtl'\n }\n )\n } />\n )}\n </Fragment>\n );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n"],"names":[],"version":3,"file":"module.js.map"}
1
+ {"mappings":"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","sources":["packages/@react-spectrum/breadcrumbs/src/index.ts","packages/@react-spectrum/breadcrumbs/src/Breadcrumbs.tsx","packages/@react-spectrum/breadcrumbs/src/BreadcrumbItem.tsx","packages/@adobe/spectrum-css-temp/components/breadcrumb/vars.css"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n/// <reference types=\"css-module-types\" />\nexport {Breadcrumbs} from './Breadcrumbs';\nexport {Item} from '@react-stately/collections';\nexport type {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\nimport {ActionButton} from '@react-spectrum/button';\nimport {BreadcrumbItem} from './BreadcrumbItem';\nimport {classNames, useDOMRef, useStyleProps} from '@react-spectrum/utils';\nimport {DOMRef} from '@react-types/shared';\nimport FolderBreadcrumb from '@spectrum-icons/ui/FolderBreadcrumb';\nimport {Menu, MenuTrigger} from '@react-spectrum/menu';\nimport React, {Key, ReactElement, useCallback, useRef} from 'react';\nimport {SpectrumBreadcrumbsProps} from '@react-types/breadcrumbs';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbs} from '@react-aria/breadcrumbs';\nimport {useLayoutEffect, useResizeObserver, useValueEffect} from '@react-aria/utils';\nimport {useProviderProps} from '@react-spectrum/provider';\n\nconst MIN_VISIBLE_ITEMS = 1;\nconst MAX_VISIBLE_ITEMS = 4;\n\nfunction Breadcrumbs<T>(props: SpectrumBreadcrumbsProps<T>, ref: DOMRef) {\n props = useProviderProps(props);\n let {\n size = 'L',\n isMultiline,\n children,\n showRoot,\n isDisabled,\n onAction,\n autoFocusCurrent,\n ...otherProps\n } = props;\n\n // Not using React.Children.toArray because it mutates the key prop.\n let childArray: ReactElement[] = [];\n React.Children.forEach(children, (child, index) => {\n if (React.isValidElement(child)) {\n if (child.key == null) {\n child = React.cloneElement(child, {key: index});\n }\n childArray.push(child);\n }\n });\n\n let domRef = useDOMRef(ref);\n let listRef = useRef<HTMLUListElement>(null);\n\n let [visibleItems, setVisibleItems] = useValueEffect(childArray.length);\n\n let {navProps} = useBreadcrumbs(props);\n let {styleProps} = useStyleProps(otherProps);\n\n let updateOverflow = useCallback(() => {\n let computeVisibleItems = (visibleItems: number): number => {\n // Refs can be null at runtime.\n let currListRef: HTMLUListElement | null = listRef.current;\n if (!currListRef) {\n return visibleItems;\n }\n\n let listItems = Array.from(currListRef.children) as HTMLLIElement[];\n if (listItems.length <= 0) {\n return visibleItems;\n }\n let containerWidth = currListRef.offsetWidth;\n let isShowingMenu = childArray.length > visibleItems;\n let calculatedWidth = 0;\n let newVisibleItems = 0;\n let maxVisibleItems = MAX_VISIBLE_ITEMS;\n\n if (showRoot) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n newVisibleItems++;\n }\n\n if (isShowingMenu) {\n calculatedWidth += (listItems.shift() as HTMLLIElement).offsetWidth;\n maxVisibleItems--;\n }\n\n if (showRoot && calculatedWidth >= containerWidth) {\n newVisibleItems--;\n }\n\n // TODO: what if multiline and only one breadcrumb??\n if (isMultiline) {\n listItems.pop();\n newVisibleItems++;\n } else {\n if (listItems.length > 0) {\n // Ensure the last breadcrumb isn't truncated when we measure it.\n let last = (listItems.pop() as HTMLLIElement);\n last.style.overflow = 'visible';\n\n calculatedWidth += last.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n\n last.style.overflow = '';\n }\n }\n\n for (let breadcrumb of listItems.reverse()) {\n calculatedWidth += breadcrumb.offsetWidth;\n if (calculatedWidth < containerWidth) {\n newVisibleItems++;\n }\n }\n\n return Math.max(MIN_VISIBLE_ITEMS, Math.min(maxVisibleItems, newVisibleItems));\n };\n\n setVisibleItems(function *() {\n // Update to show all items.\n yield childArray.length;\n\n // Measure, and update to show the items that fit.\n let newVisibleItems = computeVisibleItems(childArray.length);\n yield newVisibleItems;\n\n // If the number of items is less than the number of children,\n // then update again to ensure that the menu fits.\n if (newVisibleItems < childArray.length && newVisibleItems > 1) {\n yield computeVisibleItems(newVisibleItems);\n }\n });\n }, [childArray.length, setVisibleItems, showRoot, isMultiline]);\n\n useResizeObserver({ref: domRef, onResize: updateOverflow});\n\n let lastChildren = useRef<typeof children | null>(null);\n useLayoutEffect(() => {\n if (children !== lastChildren.current) {\n lastChildren.current = children;\n updateOverflow();\n }\n });\n\n let contents = childArray;\n if (childArray.length > visibleItems) {\n let selectedItem = childArray[childArray.length - 1];\n let selectedKey = selectedItem.key ?? childArray.length - 1;\n let onMenuAction = (key: Key) => {\n // Don't fire onAction when clicking on the last item\n if (key !== selectedKey && onAction) {\n onAction(key);\n }\n };\n\n let menuItem = (\n <BreadcrumbItem key=\"menu\" isMenu>\n <MenuTrigger>\n <ActionButton\n UNSAFE_className={classNames(styles, 'spectrum-Breadcrumbs-actionButton')}\n aria-label=\"…\"\n isQuiet\n isDisabled={isDisabled}>\n <FolderBreadcrumb />\n </ActionButton>\n <Menu selectionMode=\"single\" selectedKeys={[selectedKey]} onAction={onMenuAction}>\n {childArray}\n </Menu>\n </MenuTrigger>\n </BreadcrumbItem>\n );\n\n contents = [menuItem];\n let breadcrumbs = [...childArray];\n let endItems = visibleItems;\n if (showRoot && visibleItems > 1) {\n let rootItem = breadcrumbs.shift();\n if (rootItem) {\n contents.unshift(rootItem);\n }\n endItems--;\n }\n contents.push(...breadcrumbs.slice(-endItems));\n }\n\n let lastIndex = contents.length - 1;\n let breadcrumbItems = contents.map((child, index) => {\n let isCurrent = index === lastIndex;\n let key = child.key ?? index;\n let onPress = () => {\n if (onAction) {\n onAction(key);\n }\n };\n\n return (\n <li\n key={index}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-item'\n )\n }>\n <BreadcrumbItem\n {...child.props}\n key={key}\n isCurrent={isCurrent}\n isDisabled={isDisabled}\n onPress={onPress}\n autoFocus={isCurrent && autoFocusCurrent}>\n {child.props.children}\n </BreadcrumbItem>\n </li>\n );\n });\n\n return (\n <nav\n {...styleProps}\n {...navProps}\n ref={domRef}>\n <ul\n ref={listRef}\n className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs',\n {\n 'spectrum-Breadcrumbs--small': size === 'S',\n 'spectrum-Breadcrumbs--medium': size === 'M',\n 'spectrum-Breadcrumbs--multiline': isMultiline,\n 'spectrum-Breadcrumbs--showRoot': showRoot,\n 'is-disabled': isDisabled\n },\n styleProps.className\n )\n }>\n {breadcrumbItems}\n </ul>\n </nav>\n );\n}\n\n/**\n * Breadcrumbs show hierarchy and navigational context for a user’s location within an application.\n */\nlet _Breadcrumbs = React.forwardRef(Breadcrumbs);\nexport {_Breadcrumbs as Breadcrumbs};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\nimport {BreadcrumbItemProps} from '@react-types/breadcrumbs';\nimport ChevronRightSmall from '@spectrum-icons/ui/ChevronRightSmall';\nimport {classNames} from '@react-spectrum/utils';\nimport {FocusRing} from '@react-aria/focus';\nimport {mergeProps} from '@react-aria/utils';\nimport React, {Fragment, useRef} from 'react';\nimport styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';\nimport {useBreadcrumbItem} from '@react-aria/breadcrumbs';\nimport {useHover} from '@react-aria/interactions';\nimport {useLocale} from '@react-aria/i18n';\n\ninterface SpectrumBreadcrumbItemProps extends BreadcrumbItemProps {\n isMenu?: boolean\n}\n\nexport function BreadcrumbItem(props: SpectrumBreadcrumbItemProps) {\n let {\n children,\n isCurrent,\n isDisabled,\n isMenu\n } = props;\n\n let {direction} = useLocale();\n let ref = useRef(null);\n let ElementType: React.ElementType = props.href ? 'a' : 'span';\n let {itemProps} = useBreadcrumbItem({\n ...props,\n elementType: ElementType\n }, ref);\n let {hoverProps, isHovered} = useHover(props);\n\n // If this item contains a menu button, then it shouldn't be a link.\n if (isMenu) {\n itemProps = {};\n }\n\n return (\n <Fragment>\n <FocusRing focusRingClass={classNames(styles, 'focus-ring')}>\n <ElementType\n {...mergeProps(itemProps, hoverProps)}\n ref={ref}\n className={\n classNames(\n styles,\n {\n 'spectrum-Breadcrumbs-itemLink': !isMenu,\n 'is-disabled': !isCurrent && isDisabled,\n 'is-hovered': isHovered\n }\n )\n }>\n {children}\n </ElementType>\n </FocusRing>\n <ChevronRightSmall\n UNSAFE_className={\n classNames(\n styles,\n 'spectrum-Breadcrumbs-itemSeparator',\n {\n 'is-reversed': direction === 'rtl'\n }\n )\n } />\n </Fragment>\n );\n}\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n@import './index.css';\n@import './skin.css';\n"],"names":[],"version":3,"file":"module.js.map"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@react-spectrum/breadcrumbs",
3
- "version": "3.0.0-nightly.2453+e79cff031",
3
+ "version": "3.0.0-nightly.2458+db5bb1bdc",
4
4
  "description": "Spectrum UI components in React",
5
5
  "license": "Apache-2.0",
6
6
  "main": "dist/main.js",
@@ -36,23 +36,22 @@
36
36
  "url": "https://github.com/adobe/react-spectrum"
37
37
  },
38
38
  "dependencies": {
39
- "@react-aria/breadcrumbs": "3.0.0-nightly.2453+e79cff031",
40
- "@react-aria/focus": "3.0.0-nightly.2453+e79cff031",
41
- "@react-aria/i18n": "3.0.0-nightly.2453+e79cff031",
42
- "@react-aria/interactions": "3.0.0-nightly.2453+e79cff031",
43
- "@react-aria/utils": "3.0.0-nightly.2453+e79cff031",
44
- "@react-spectrum/button": "3.0.0-nightly.2453+e79cff031",
45
- "@react-spectrum/menu": "3.14.1-nightly.4162+e79cff031",
46
- "@react-spectrum/utils": "3.0.0-nightly.2453+e79cff031",
47
- "@react-stately/collections": "3.0.0-nightly.2453+e79cff031",
48
- "@react-types/breadcrumbs": "3.0.0-nightly.2453+e79cff031",
49
- "@react-types/shared": "3.0.0-nightly.2453+e79cff031",
50
- "@spectrum-icons/express": "3.0.0-nightly.4162+e79cff031",
51
- "@spectrum-icons/ui": "3.0.0-nightly.2453+e79cff031",
39
+ "@react-aria/breadcrumbs": "3.0.0-nightly.2458+db5bb1bdc",
40
+ "@react-aria/focus": "3.0.0-nightly.2458+db5bb1bdc",
41
+ "@react-aria/i18n": "3.0.0-nightly.2458+db5bb1bdc",
42
+ "@react-aria/interactions": "3.0.0-nightly.2458+db5bb1bdc",
43
+ "@react-aria/utils": "3.0.0-nightly.2458+db5bb1bdc",
44
+ "@react-spectrum/button": "3.0.0-nightly.2458+db5bb1bdc",
45
+ "@react-spectrum/menu": "3.14.1-nightly.4167+db5bb1bdc",
46
+ "@react-spectrum/utils": "3.0.0-nightly.2458+db5bb1bdc",
47
+ "@react-stately/collections": "3.0.0-nightly.2458+db5bb1bdc",
48
+ "@react-types/breadcrumbs": "3.0.0-nightly.2458+db5bb1bdc",
49
+ "@react-types/shared": "3.0.0-nightly.2458+db5bb1bdc",
50
+ "@spectrum-icons/ui": "3.0.0-nightly.2458+db5bb1bdc",
52
51
  "@swc/helpers": "^0.5.0"
53
52
  },
54
53
  "devDependencies": {
55
- "@adobe/spectrum-css-temp": "3.0.0-nightly.2453+e79cff031"
54
+ "@adobe/spectrum-css-temp": "3.0.0-nightly.2458+db5bb1bdc"
56
55
  },
57
56
  "peerDependencies": {
58
57
  "@react-spectrum/provider": "^3.0.0",
@@ -62,5 +61,5 @@
62
61
  "publishConfig": {
63
62
  "access": "public"
64
63
  },
65
- "gitHead": "e79cff031ecf3cea7242daddf308625d638fd056"
64
+ "gitHead": "db5bb1bdc63abd6a0515591029b4120127fc6dbb"
66
65
  }
@@ -11,8 +11,6 @@
11
11
  */
12
12
 
13
13
  import {BreadcrumbItemProps} from '@react-types/breadcrumbs';
14
- // eslint-disable-next-line monorepo/no-internal-import
15
- import ChevronRight from '@spectrum-icons/express/ChevronRight';
16
14
  import ChevronRightSmall from '@spectrum-icons/ui/ChevronRightSmall';
17
15
  import {classNames} from '@react-spectrum/utils';
18
16
  import {FocusRing} from '@react-aria/focus';
@@ -22,7 +20,6 @@ import styles from '@adobe/spectrum-css-temp/components/breadcrumb/vars.css';
22
20
  import {useBreadcrumbItem} from '@react-aria/breadcrumbs';
23
21
  import {useHover} from '@react-aria/interactions';
24
22
  import {useLocale} from '@react-aria/i18n';
25
- import {useProvider} from '@react-spectrum/provider';
26
23
 
27
24
  interface SpectrumBreadcrumbItemProps extends BreadcrumbItemProps {
28
25
  isMenu?: boolean
@@ -35,7 +32,6 @@ export function BreadcrumbItem(props: SpectrumBreadcrumbItemProps) {
35
32
  isDisabled,
36
33
  isMenu
37
34
  } = props;
38
- let provider = useProvider();
39
35
 
40
36
  let {direction} = useLocale();
41
37
  let ref = useRef(null);
@@ -70,29 +66,16 @@ export function BreadcrumbItem(props: SpectrumBreadcrumbItemProps) {
70
66
  {children}
71
67
  </ElementType>
72
68
  </FocusRing>
73
- {provider?.theme?.global?.express ? (
74
- <ChevronRight
75
- UNSAFE_className={
76
- classNames(
77
- styles,
78
- 'spectrum-Breadcrumbs-itemSeparator',
79
- {
80
- 'is-reversed': direction === 'rtl'
81
- }
82
- )
83
- } />
84
- ) : (
85
- <ChevronRightSmall
86
- UNSAFE_className={
87
- classNames(
88
- styles,
89
- 'spectrum-Breadcrumbs-itemSeparator',
90
- {
91
- 'is-reversed': direction === 'rtl'
92
- }
93
- )
94
- } />
95
- )}
69
+ <ChevronRightSmall
70
+ UNSAFE_className={
71
+ classNames(
72
+ styles,
73
+ 'spectrum-Breadcrumbs-itemSeparator',
74
+ {
75
+ 'is-reversed': direction === 'rtl'
76
+ }
77
+ )
78
+ } />
96
79
  </Fragment>
97
80
  );
98
81
  }