@elliemae/ds-breadcrumb 2.2.0-alpha.4 → 3.0.0-next.2
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/cjs/DSBreadcrumb.js +97 -81
- package/cjs/DSBreadcrumbItem.js +92 -80
- package/cjs/hooks/useKeyboardNavigation.js +15 -42
- package/cjs/index.d.js +2 -27
- package/cjs/index.js +15 -37
- package/cjs/styles.js +66 -105
- package/esm/DSBreadcrumb.js +79 -48
- package/esm/DSBreadcrumbItem.js +80 -50
- package/esm/hooks/useKeyboardNavigation.js +9 -11
- package/esm/index.d.js +1 -2
- package/esm/index.js +2 -8
- package/esm/styles.js +55 -76
- package/package.json +5 -5
- package/cjs/DSBreadcrumb.js.map +0 -7
- package/cjs/DSBreadcrumbItem.js.map +0 -7
- package/cjs/hooks/useKeyboardNavigation.js.map +0 -7
- package/cjs/index.d.js.map +0 -7
- package/cjs/index.js.map +0 -7
- package/cjs/styles.js.map +0 -7
- package/esm/DSBreadcrumb.js.map +0 -7
- package/esm/DSBreadcrumbItem.js.map +0 -7
- package/esm/hooks/useKeyboardNavigation.js.map +0 -7
- package/esm/index.d.js.map +0 -7
- package/esm/index.js.map +0 -7
- package/esm/styles.js.map +0 -7
package/cjs/styles.js
CHANGED
|
@@ -1,107 +1,68 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
};
|
|
12
|
-
var __reExport = (target, module2, copyDefault, desc) => {
|
|
13
|
-
if (module2 && typeof module2 === "object" || typeof module2 === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(module2))
|
|
15
|
-
if (!__hasOwnProp.call(target, key) && (copyDefault || key !== "default"))
|
|
16
|
-
__defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return target;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (module2, isNodeMode) => {
|
|
21
|
-
return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", !isNodeMode && module2 && module2.__esModule ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2);
|
|
22
|
-
};
|
|
23
|
-
var __toCommonJS = /* @__PURE__ */ ((cache) => {
|
|
24
|
-
return (module2, temp) => {
|
|
25
|
-
return cache && cache.get(module2) || (temp = __reExport(__markAsModule({}), module2, 1), cache && cache.set(module2, temp), temp);
|
|
26
|
-
};
|
|
27
|
-
})(typeof WeakMap !== "undefined" ? /* @__PURE__ */ new WeakMap() : 0);
|
|
28
|
-
var styles_exports = {};
|
|
29
|
-
__export(styles_exports, {
|
|
30
|
-
StyledContainer: () => StyledContainer,
|
|
31
|
-
StyledCrumbWrapper: () => StyledCrumbWrapper,
|
|
32
|
-
StyledLink: () => StyledLink,
|
|
33
|
-
StyledList: () => StyledList
|
|
34
|
-
});
|
|
35
|
-
var React = __toESM(require("react"));
|
|
36
|
-
var import_styled_components = __toESM(require("styled-components"));
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var styled = require('styled-components');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var styled__default = /*#__PURE__*/_interopDefaultLegacy(styled);
|
|
10
|
+
|
|
37
11
|
const handleColor = (theme, isActive, color, isTitle) => {
|
|
38
|
-
if (isActive)
|
|
39
|
-
return theme.colors.neutral[800];
|
|
40
|
-
else if (color)
|
|
41
|
-
return color;
|
|
42
|
-
else if (isTitle)
|
|
43
|
-
return theme.colors.neutral[700];
|
|
44
|
-
else
|
|
45
|
-
return theme.colors.brand[600];
|
|
12
|
+
if (isActive) return theme.colors.neutral[800];else if (color) return color;else if (isTitle) return theme.colors.neutral[700];else return theme.colors.brand[600];
|
|
46
13
|
};
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
color
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
${({ theme }) => `border: 2px solid ${theme.colors.brand[700]};`}
|
|
103
|
-
border-radius: 2px;
|
|
104
|
-
}
|
|
105
|
-
`;
|
|
106
|
-
module.exports = __toCommonJS(styles_exports);
|
|
107
|
-
//# sourceMappingURL=styles.js.map
|
|
14
|
+
|
|
15
|
+
const StyledList = /*#__PURE__*/styled__default["default"].ol.withConfig({
|
|
16
|
+
componentId: "sc-12gvmg4-0"
|
|
17
|
+
})(["width:100%;list-style:none;display:flex;padding:0;margin:0;li:first-child *{margin-left:0;}"]);
|
|
18
|
+
const StyledCrumbWrapper = /*#__PURE__*/styled__default["default"].li.withConfig({
|
|
19
|
+
componentId: "sc-12gvmg4-1"
|
|
20
|
+
})(["display:inline-flex;align-items:center;flex-shrink:20;transition:flex-shrink 0.1s cubic-bezier(0.64,0,0.35,1);height:16px;min-width:10px;&:hover{flex-shrink:0;}", ""], _ref => {
|
|
21
|
+
let {
|
|
22
|
+
theme,
|
|
23
|
+
isTitle,
|
|
24
|
+
trailingSlash
|
|
25
|
+
} = _ref;
|
|
26
|
+
return isTitle || !trailingSlash ? "&:not(:last-child):after {\n display: inline-block;\n content: '/';\n color: ".concat(theme.colors.neutral[700], ";\n }\n ") : "&:after {\n display: inline-block;\n content: '/';\n color: ".concat(theme.colors.neutral[700], ";\n }\n ");
|
|
27
|
+
});
|
|
28
|
+
const StyledContainer = /*#__PURE__*/styled__default["default"].nav.withConfig({
|
|
29
|
+
componentId: "sc-12gvmg4-2"
|
|
30
|
+
})(["display:flex;align-items:center;padding:0;"]);
|
|
31
|
+
const StyledLink = /*#__PURE__*/styled__default["default"].a.withConfig({
|
|
32
|
+
componentId: "sc-12gvmg4-3"
|
|
33
|
+
})(["white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;font-size:12px;outline:none;margin:0 2px;border:2px solid transparent;-webkit-text-stroke:0.4px transparent;font-weight:", ";color:", ";&:hover{color:", ";cursor:pointer;", ";}&:focus{", " border-radius:2px;}"], _ref2 => {
|
|
34
|
+
let {
|
|
35
|
+
theme
|
|
36
|
+
} = _ref2;
|
|
37
|
+
return theme.fontWeights.regular;
|
|
38
|
+
}, _ref3 => {
|
|
39
|
+
let {
|
|
40
|
+
theme,
|
|
41
|
+
isActive,
|
|
42
|
+
color,
|
|
43
|
+
isTitle
|
|
44
|
+
} = _ref3;
|
|
45
|
+
return handleColor(theme, isActive, color, isTitle);
|
|
46
|
+
}, _ref4 => {
|
|
47
|
+
let {
|
|
48
|
+
theme,
|
|
49
|
+
color
|
|
50
|
+
} = _ref4;
|
|
51
|
+
return color ? color : theme.colors.brand[800];
|
|
52
|
+
}, _ref5 => {
|
|
53
|
+
let {
|
|
54
|
+
theme,
|
|
55
|
+
color
|
|
56
|
+
} = _ref5;
|
|
57
|
+
return "-webkit-text-stroke: 0.4px ".concat(color ? color : theme.colors.brand[800]);
|
|
58
|
+
}, _ref6 => {
|
|
59
|
+
let {
|
|
60
|
+
theme
|
|
61
|
+
} = _ref6;
|
|
62
|
+
return "border: 2px solid ".concat(theme.colors.brand[700], ";");
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
exports.StyledContainer = StyledContainer;
|
|
66
|
+
exports.StyledCrumbWrapper = StyledCrumbWrapper;
|
|
67
|
+
exports.StyledLink = StyledLink;
|
|
68
|
+
exports.StyledList = StyledList;
|
package/esm/DSBreadcrumb.js
CHANGED
|
@@ -1,57 +1,88 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
}
|
|
1
|
+
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
2
|
+
import _jsx from '@babel/runtime/helpers/esm/jsx';
|
|
3
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
4
|
+
import 'core-js/modules/web.dom-collections.iterator.js';
|
|
5
|
+
import 'core-js/modules/esnext.async-iterator.map.js';
|
|
6
|
+
import 'core-js/modules/esnext.iterator.map.js';
|
|
7
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
8
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
9
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
10
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
11
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
12
|
+
import React, { useMemo, cloneElement } from 'react';
|
|
13
|
+
import { PropTypes, describe } from 'react-desc';
|
|
14
|
+
import { DSBreadcrumbItem } from './DSBreadcrumbItem.js';
|
|
15
|
+
import { useKeyboardNavigation } from './hooks/useKeyboardNavigation.js';
|
|
16
|
+
import { StyledContainer, StyledList } from './styles.js';
|
|
17
|
+
import { jsx } from 'react/jsx-runtime';
|
|
18
|
+
|
|
19
|
+
const _excluded = ["containerProps", "as", "label", "isTitle", "children", "trailingSlash"];
|
|
20
|
+
|
|
21
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
22
|
+
|
|
23
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
24
|
+
const htmlElements = ['nav', 'div', 'header', 'footer', 'main'];
|
|
25
|
+
|
|
26
|
+
const DSBreadcrumb = _ref => {
|
|
27
|
+
let {
|
|
28
|
+
containerProps = {},
|
|
29
|
+
as = 'nav',
|
|
30
|
+
label = 'Breadcrumb',
|
|
31
|
+
isTitle = false,
|
|
32
|
+
children,
|
|
33
|
+
trailingSlash = true
|
|
34
|
+
} = _ref,
|
|
35
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
36
|
+
|
|
17
37
|
const [addRef, onKeyDown] = useKeyboardNavigation();
|
|
18
|
-
const safeElement = useMemo(() => htmlElements.indexOf(as) > -1 ? as :
|
|
19
|
-
return
|
|
38
|
+
const safeElement = useMemo(() => htmlElements.indexOf(as) > -1 ? as : 'nav', [as]);
|
|
39
|
+
return /*#__PURE__*/jsx(StyledContainer, _objectSpread(_objectSpread(_objectSpread({
|
|
20
40
|
"aria-label": label,
|
|
21
|
-
"data-testid": "breadcrumb-nav-container"
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
}))
|
|
41
|
+
"data-testid": "breadcrumb-nav-container"
|
|
42
|
+
}, rest), containerProps), {}, {
|
|
43
|
+
as: safeElement,
|
|
44
|
+
children: /*#__PURE__*/_jsx(StyledList, {
|
|
45
|
+
"data-testid": "list-container"
|
|
46
|
+
}, void 0, React.Children.map(children, (child, childIndex) => childIndex < children.length - 1 ? /*#__PURE__*/cloneElement(child, {
|
|
47
|
+
childIndex,
|
|
48
|
+
addRef,
|
|
49
|
+
onKeyDown
|
|
50
|
+
}) : /*#__PURE__*/cloneElement(child, {
|
|
51
|
+
childIndex,
|
|
52
|
+
addRef,
|
|
53
|
+
onKeyDown,
|
|
54
|
+
trailingSlash,
|
|
55
|
+
isTitle
|
|
56
|
+
})))
|
|
57
|
+
}));
|
|
38
58
|
};
|
|
59
|
+
|
|
39
60
|
DSBreadcrumb.Item = DSBreadcrumbItem;
|
|
40
61
|
const props = {
|
|
41
|
-
|
|
62
|
+
/** props injected to breadcrumb wrapper */
|
|
63
|
+
containerProps: PropTypes.object.description('props injected to breadcrumb wrapper'),
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Type of element you want the main container to be:
|
|
67
|
+
* 'nav', 'div', 'header', 'footer', 'main'
|
|
68
|
+
*/
|
|
42
69
|
as: PropTypes.string.description("Type of element you want the main container to be: 'nav', 'div', 'header', 'footer', 'main'"),
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Whether to show the last element of the breadcrumb as a title
|
|
73
|
+
* Also removes trailing slash to show last element as title
|
|
74
|
+
*/
|
|
75
|
+
isTitle: PropTypes.bool.description('Whether to show the last element of the breadcrumb as a title. Also removes trailing slash to show last element as title'),
|
|
76
|
+
|
|
77
|
+
/** breadcrumb label */
|
|
78
|
+
label: PropTypes.string.description('breadcrumb label'),
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Container items to wrap
|
|
82
|
+
*/
|
|
83
|
+
children: PropTypes.arrayOf(DSBreadcrumbItem).isRequired.description('Container items to wrap')
|
|
46
84
|
};
|
|
47
|
-
DSBreadcrumb.propTypes = props;
|
|
48
85
|
const DSBreadcrumbWithSchema = describe(DSBreadcrumb);
|
|
49
86
|
DSBreadcrumbWithSchema.propTypes = props;
|
|
50
|
-
|
|
51
|
-
export {
|
|
52
|
-
DSBreadcrumb,
|
|
53
|
-
DSBreadcrumbWithSchema,
|
|
54
|
-
DSBreadcrumb_default as default,
|
|
55
|
-
htmlElements
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=DSBreadcrumb.js.map
|
|
87
|
+
|
|
88
|
+
export { DSBreadcrumb, DSBreadcrumbWithSchema, DSBreadcrumb as default, htmlElements };
|
package/esm/DSBreadcrumbItem.js
CHANGED
|
@@ -1,57 +1,87 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
1
|
+
import 'core-js/modules/esnext.async-iterator.filter.js';
|
|
2
|
+
import 'core-js/modules/esnext.iterator.constructor.js';
|
|
3
|
+
import 'core-js/modules/esnext.iterator.filter.js';
|
|
4
|
+
import 'core-js/modules/esnext.async-iterator.for-each.js';
|
|
5
|
+
import 'core-js/modules/esnext.iterator.for-each.js';
|
|
6
|
+
import _defineProperty from '@babel/runtime/helpers/esm/defineProperty';
|
|
7
|
+
import _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';
|
|
8
|
+
import 'react';
|
|
9
|
+
import { PropTypes, describe } from 'react-desc';
|
|
10
|
+
import { StyledCrumbWrapper, StyledLink } from './styles.js';
|
|
11
|
+
import { jsx } from 'react/jsx-runtime';
|
|
12
|
+
|
|
13
|
+
const _excluded = ["active", "as", "href", "isTitle", "onClick", "label", "color", "addRef", "childIndex", "trailingSlash", "onKeyDown"];
|
|
14
|
+
|
|
15
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
16
|
+
|
|
17
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
18
|
+
|
|
19
|
+
function DSBreadcrumbItem(_ref) {
|
|
20
|
+
let {
|
|
21
|
+
active = false,
|
|
22
|
+
as = 'a',
|
|
23
|
+
href = undefined,
|
|
22
24
|
isTitle,
|
|
25
|
+
onClick = () => null,
|
|
26
|
+
label = '',
|
|
27
|
+
color = null,
|
|
28
|
+
addRef,
|
|
29
|
+
childIndex,
|
|
23
30
|
trailingSlash,
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
31
|
+
onKeyDown = () => null
|
|
32
|
+
} = _ref,
|
|
33
|
+
rest = _objectWithoutProperties(_ref, _excluded);
|
|
34
|
+
|
|
35
|
+
return /*#__PURE__*/jsx(StyledCrumbWrapper, _objectSpread(_objectSpread({
|
|
36
|
+
"aria-current": active ? 'page' : undefined,
|
|
37
|
+
"data-testid": "breadcrumb-item-container",
|
|
38
|
+
isTitle: isTitle,
|
|
39
|
+
trailingSlash: trailingSlash
|
|
40
|
+
}, rest), {}, {
|
|
41
|
+
children: /*#__PURE__*/jsx(StyledLink, {
|
|
42
|
+
as: as,
|
|
43
|
+
href: href,
|
|
44
|
+
onClick: onClick,
|
|
45
|
+
ref: addRef,
|
|
46
|
+
tabIndex: 0,
|
|
47
|
+
isActive: active,
|
|
48
|
+
onKeyDown: e => onKeyDown(e, childIndex, onClick),
|
|
49
|
+
isTitle: isTitle,
|
|
50
|
+
color: color,
|
|
51
|
+
children: label
|
|
52
|
+
})
|
|
53
|
+
}));
|
|
36
54
|
}
|
|
55
|
+
|
|
37
56
|
const props = {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
57
|
+
/** inject props to wrapper */
|
|
58
|
+
containerComponent: PropTypes.string.description('inject props to wrapper'),
|
|
59
|
+
|
|
60
|
+
/** render as any html node */
|
|
61
|
+
as: PropTypes.string.description('render as any html node'),
|
|
62
|
+
|
|
63
|
+
/** active item */
|
|
64
|
+
active: PropTypes.bool.description('active item'),
|
|
65
|
+
|
|
66
|
+
/** href link */
|
|
67
|
+
href: PropTypes.string.description('href link'),
|
|
68
|
+
|
|
69
|
+
/** on click handler */
|
|
70
|
+
onClick: PropTypes.func.description('on click handler'),
|
|
71
|
+
|
|
72
|
+
/** style item as title */
|
|
73
|
+
isTitle: PropTypes.bool.description('style item as title'),
|
|
74
|
+
|
|
75
|
+
/** add trailing slash */
|
|
76
|
+
trailingSlash: PropTypes.bool.description('add trailing slash'),
|
|
77
|
+
|
|
78
|
+
/** item label */
|
|
79
|
+
label: PropTypes.string.description('item label'),
|
|
80
|
+
|
|
81
|
+
/** link color */
|
|
82
|
+
color: PropTypes.string.description('link color')
|
|
47
83
|
};
|
|
48
|
-
DSBreadcrumbItem.propTypes = props;
|
|
49
84
|
const DSBreadcrumbItemWithSchema = describe(DSBreadcrumbItem);
|
|
50
85
|
DSBreadcrumbItemWithSchema.propTypes = props;
|
|
51
|
-
|
|
52
|
-
export {
|
|
53
|
-
DSBreadcrumbItem,
|
|
54
|
-
DSBreadcrumbItemWithSchema,
|
|
55
|
-
DSBreadcrumbItem_default as default
|
|
56
|
-
};
|
|
57
|
-
//# sourceMappingURL=DSBreadcrumbItem.js.map
|
|
86
|
+
|
|
87
|
+
export { DSBreadcrumbItem, DSBreadcrumbItemWithSchema, DSBreadcrumbItem as default };
|
|
@@ -1,28 +1,26 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import { useRef, useCallback } from 'react';
|
|
2
|
+
|
|
3
3
|
const useKeyboardNavigation = () => {
|
|
4
4
|
const componentsRef = useRef([]);
|
|
5
|
-
const addRef = useCallback(
|
|
5
|
+
const addRef = useCallback(ref => {
|
|
6
6
|
if (ref && !componentsRef.current.includes(ref)) {
|
|
7
7
|
componentsRef.current.push(ref);
|
|
8
8
|
}
|
|
9
9
|
}, []);
|
|
10
10
|
const onKeyDown = useCallback((e, componentRefIndex, callback) => {
|
|
11
|
-
if (e.key ===
|
|
11
|
+
if (e.key === 'ArrowDown' && componentsRef.current[componentRefIndex + 1]) {
|
|
12
12
|
componentsRef.current[componentRefIndex + 1].focus();
|
|
13
13
|
e.preventDefault();
|
|
14
|
-
} else if (e.key ===
|
|
14
|
+
} else if (e.key === 'ArrowUp' && componentRefIndex !== 0) {
|
|
15
15
|
componentsRef.current[componentRefIndex - 1].focus();
|
|
16
16
|
e.preventDefault();
|
|
17
|
-
} else if (e.key ===
|
|
17
|
+
} else if (e.key === 'Enter') {
|
|
18
18
|
callback();
|
|
19
|
-
} else if (e.ctrlKey && e.altKey && e.key ===
|
|
19
|
+
} else if (e.ctrlKey && e.altKey && e.key === ' ') {
|
|
20
20
|
componentsRef.current[componentRefIndex].click();
|
|
21
21
|
}
|
|
22
22
|
}, []);
|
|
23
23
|
return [addRef, onKeyDown];
|
|
24
24
|
};
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
};
|
|
28
|
-
//# sourceMappingURL=useKeyboardNavigation.js.map
|
|
25
|
+
|
|
26
|
+
export { useKeyboardNavigation };
|
package/esm/index.d.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
//# sourceMappingURL=index.d.js.map
|
|
1
|
+
|
package/esm/index.js
CHANGED
|
@@ -1,8 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export * from "./DSBreadcrumbItem";
|
|
4
|
-
import { default as default2 } from "./DSBreadcrumb";
|
|
5
|
-
export {
|
|
6
|
-
default2 as default
|
|
7
|
-
};
|
|
8
|
-
//# sourceMappingURL=index.js.map
|
|
1
|
+
export { DSBreadcrumb, DSBreadcrumbWithSchema, DSBreadcrumb as default, htmlElements } from './DSBreadcrumb.js';
|
|
2
|
+
export { DSBreadcrumbItem, DSBreadcrumbItemWithSchema } from './DSBreadcrumbItem.js';
|
package/esm/styles.js
CHANGED
|
@@ -1,78 +1,57 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import styled from 'styled-components';
|
|
2
|
+
|
|
3
3
|
const handleColor = (theme, isActive, color, isTitle) => {
|
|
4
|
-
if (isActive)
|
|
5
|
-
return theme.colors.neutral[800];
|
|
6
|
-
else if (color)
|
|
7
|
-
return color;
|
|
8
|
-
else if (isTitle)
|
|
9
|
-
return theme.colors.neutral[700];
|
|
10
|
-
else
|
|
11
|
-
return theme.colors.brand[600];
|
|
4
|
+
if (isActive) return theme.colors.neutral[800];else if (color) return color;else if (isTitle) return theme.colors.neutral[700];else return theme.colors.brand[600];
|
|
12
5
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
color
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
${({ theme, color }) => `-webkit-text-stroke: 0.4px ${color ? color : theme.colors.brand[800]}`};
|
|
66
|
-
}
|
|
67
|
-
&:focus {
|
|
68
|
-
${({ theme }) => `border: 2px solid ${theme.colors.brand[700]};`}
|
|
69
|
-
border-radius: 2px;
|
|
70
|
-
}
|
|
71
|
-
`;
|
|
72
|
-
export {
|
|
73
|
-
StyledContainer,
|
|
74
|
-
StyledCrumbWrapper,
|
|
75
|
-
StyledLink,
|
|
76
|
-
StyledList
|
|
77
|
-
};
|
|
78
|
-
//# sourceMappingURL=styles.js.map
|
|
6
|
+
|
|
7
|
+
const StyledList = /*#__PURE__*/styled.ol.withConfig({
|
|
8
|
+
componentId: "sc-12gvmg4-0"
|
|
9
|
+
})(["width:100%;list-style:none;display:flex;padding:0;margin:0;li:first-child *{margin-left:0;}"]);
|
|
10
|
+
const StyledCrumbWrapper = /*#__PURE__*/styled.li.withConfig({
|
|
11
|
+
componentId: "sc-12gvmg4-1"
|
|
12
|
+
})(["display:inline-flex;align-items:center;flex-shrink:20;transition:flex-shrink 0.1s cubic-bezier(0.64,0,0.35,1);height:16px;min-width:10px;&:hover{flex-shrink:0;}", ""], _ref => {
|
|
13
|
+
let {
|
|
14
|
+
theme,
|
|
15
|
+
isTitle,
|
|
16
|
+
trailingSlash
|
|
17
|
+
} = _ref;
|
|
18
|
+
return isTitle || !trailingSlash ? "&:not(:last-child):after {\n display: inline-block;\n content: '/';\n color: ".concat(theme.colors.neutral[700], ";\n }\n ") : "&:after {\n display: inline-block;\n content: '/';\n color: ".concat(theme.colors.neutral[700], ";\n }\n ");
|
|
19
|
+
});
|
|
20
|
+
const StyledContainer = /*#__PURE__*/styled.nav.withConfig({
|
|
21
|
+
componentId: "sc-12gvmg4-2"
|
|
22
|
+
})(["display:flex;align-items:center;padding:0;"]);
|
|
23
|
+
const StyledLink = /*#__PURE__*/styled.a.withConfig({
|
|
24
|
+
componentId: "sc-12gvmg4-3"
|
|
25
|
+
})(["white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:none;font-size:12px;outline:none;margin:0 2px;border:2px solid transparent;-webkit-text-stroke:0.4px transparent;font-weight:", ";color:", ";&:hover{color:", ";cursor:pointer;", ";}&:focus{", " border-radius:2px;}"], _ref2 => {
|
|
26
|
+
let {
|
|
27
|
+
theme
|
|
28
|
+
} = _ref2;
|
|
29
|
+
return theme.fontWeights.regular;
|
|
30
|
+
}, _ref3 => {
|
|
31
|
+
let {
|
|
32
|
+
theme,
|
|
33
|
+
isActive,
|
|
34
|
+
color,
|
|
35
|
+
isTitle
|
|
36
|
+
} = _ref3;
|
|
37
|
+
return handleColor(theme, isActive, color, isTitle);
|
|
38
|
+
}, _ref4 => {
|
|
39
|
+
let {
|
|
40
|
+
theme,
|
|
41
|
+
color
|
|
42
|
+
} = _ref4;
|
|
43
|
+
return color ? color : theme.colors.brand[800];
|
|
44
|
+
}, _ref5 => {
|
|
45
|
+
let {
|
|
46
|
+
theme,
|
|
47
|
+
color
|
|
48
|
+
} = _ref5;
|
|
49
|
+
return "-webkit-text-stroke: 0.4px ".concat(color ? color : theme.colors.brand[800]);
|
|
50
|
+
}, _ref6 => {
|
|
51
|
+
let {
|
|
52
|
+
theme
|
|
53
|
+
} = _ref6;
|
|
54
|
+
return "border: 2px solid ".concat(theme.colors.brand[700], ";");
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
export { StyledContainer, StyledCrumbWrapper, StyledLink, StyledList };
|