@pingux/astro 2.235.0-alpha.0 → 2.236.0
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/lib/cjs/components/Tree/Tree.d.ts +9 -0
- package/lib/cjs/components/Tree/Tree.js +48 -0
- package/lib/cjs/components/Tree/Tree.mdx +58 -0
- package/lib/cjs/components/Tree/Tree.stories.js +786 -0
- package/lib/cjs/components/Tree/Tree.styles.d.ts +4 -0
- package/lib/cjs/components/Tree/Tree.styles.js +332 -0
- package/lib/cjs/components/Tree/Tree.test.js +300 -0
- package/lib/cjs/components/Tree/TreeItem.d.ts +22 -0
- package/lib/cjs/components/Tree/TreeItem.js +82 -0
- package/lib/cjs/components/Tree/TreeItemContent.d.ts +11 -0
- package/lib/cjs/components/Tree/TreeItemContent.js +102 -0
- package/lib/cjs/components/Tree/index.d.ts +5 -0
- package/lib/cjs/components/Tree/index.js +52 -0
- package/lib/cjs/components/Tree/useTreeDragAndDrop.d.ts +46 -0
- package/lib/cjs/components/Tree/useTreeDragAndDrop.js +76 -0
- package/lib/cjs/context/TooltipContext/index.js +2 -1
- package/lib/cjs/hooks/useCircularLoader/useCircularLoader.d.ts +1 -0
- package/lib/cjs/hooks/useCircularLoader/useCircularLoader.js +3 -2
- package/lib/cjs/hooks/useGetTheme/useGetTheme.d.ts +4 -0
- package/lib/cjs/hooks/useGridListItem/useGridListItem.d.ts +4 -4
- package/lib/cjs/hooks/useOverlayPanelState/useOverlayPanelState.test.js +3 -1
- package/lib/cjs/hooks/usePagination/usePagination.d.ts +8 -8
- package/lib/cjs/hooks/useStatusClasses/useStatusClasses.js +2 -8
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/index.js +43 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.d.ts +1 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/colors.js +7 -1
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/icons.d.ts +2 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/buttons.d.ts +15 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/buttons.js +15 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/tree.d.ts +15 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/tree.js +160 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.d.ts +9 -0
- package/lib/cjs/styles/themeOverrides/nextGenDarkMode/variants/variants.js +3 -1
- package/lib/cjs/styles/themeOverrides/onyxSideNav.d.ts +2 -0
- package/lib/cjs/styles/themes/astro/customProperties/icons.d.ts +2 -0
- package/lib/cjs/styles/themes/astro/customProperties/icons.js +3 -1
- package/lib/cjs/styles/themes/astro/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themes/next-gen/convertedComponentList.js +1 -1
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.d.ts +2 -0
- package/lib/cjs/styles/themes/next-gen/customProperties/icons.js +1 -1
- package/lib/cjs/styles/themes/next-gen/customProperties/index.d.ts +2 -0
- package/lib/cjs/styles/themes/next-gen/next-gen.d.ts +27 -0
- package/lib/cjs/styles/themes/next-gen/variants/button.d.ts +15 -0
- package/lib/cjs/styles/themes/next-gen/variants/button.js +11 -0
- package/lib/cjs/styles/themes/next-gen/variants/tree.d.ts +16 -0
- package/lib/cjs/styles/themes/next-gen/variants/tree.js +153 -0
- package/lib/cjs/styles/themes/next-gen/variants/variants.d.ts +10 -0
- package/lib/cjs/styles/themes/next-gen/variants/variants.js +2 -0
- package/lib/cjs/styles/variants/index.js +3 -1
- package/lib/cjs/styles/variants/variants.js +2 -0
- package/lib/cjs/utils/getStatusClasses.d.ts +13 -0
- package/lib/cjs/utils/getStatusClasses.js +29 -0
- package/lib/components/Tree/Tree.js +33 -0
- package/lib/components/Tree/Tree.mdx +58 -0
- package/lib/components/Tree/Tree.stories.js +775 -0
- package/lib/components/Tree/Tree.styles.js +325 -0
- package/lib/components/Tree/Tree.test.js +297 -0
- package/lib/components/Tree/TreeItem.js +70 -0
- package/lib/components/Tree/TreeItemContent.js +94 -0
- package/lib/components/Tree/index.js +5 -0
- package/lib/components/Tree/useTreeDragAndDrop.js +69 -0
- package/lib/context/TooltipContext/index.js +2 -1
- package/lib/hooks/useCircularLoader/useCircularLoader.js +3 -2
- package/lib/hooks/useOverlayPanelState/useOverlayPanelState.test.js +3 -1
- package/lib/hooks/useStatusClasses/useStatusClasses.js +2 -8
- package/lib/index.js +1 -0
- package/lib/styles/themeOverrides/nextGenDarkMode/colors.js +7 -1
- package/lib/styles/themeOverrides/nextGenDarkMode/variants/buttons.js +15 -0
- package/lib/styles/themeOverrides/nextGenDarkMode/variants/tree.js +154 -0
- package/lib/styles/themeOverrides/nextGenDarkMode/variants/variants.js +3 -1
- package/lib/styles/themes/astro/customProperties/icons.js +3 -1
- package/lib/styles/themes/next-gen/convertedComponentList.js +1 -1
- package/lib/styles/themes/next-gen/customProperties/icons.js +1 -1
- package/lib/styles/themes/next-gen/variants/button.js +11 -0
- package/lib/styles/themes/next-gen/variants/tree.js +147 -0
- package/lib/styles/themes/next-gen/variants/variants.js +2 -0
- package/lib/styles/variants/index.js +3 -1
- package/lib/styles/variants/variants.js +2 -0
- package/lib/utils/getStatusClasses.js +22 -0
- package/package.json +9 -6
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
4
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
5
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
7
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
|
8
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
9
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
10
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
11
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
12
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
13
|
+
value: true
|
|
14
|
+
});
|
|
15
|
+
exports["default"] = void 0;
|
|
16
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
17
|
+
var _onyxTokens = require("@pingux/onyx-tokens");
|
|
18
|
+
var _Tree = _interopRequireDefault(require("../../../../components/Tree/Tree.styles"));
|
|
19
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
20
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
21
|
+
// The base styles file builds its object imperatively (tree.item = {...}), so its
|
|
22
|
+
// inferred type has possibly-undefined members; treat it as a complete object here.
|
|
23
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
24
|
+
var tree = _Tree["default"];
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Onyx (next-gen) theme overrides for the Tree component, derived from
|
|
28
|
+
* @pingux/onyx-tokens. Deep-merged onto the base Astro tree styles, so only
|
|
29
|
+
* differences from the Astro values are specified here.
|
|
30
|
+
*/
|
|
31
|
+
var onyxTree = _objectSpread(_objectSpread({}, tree), {}, {
|
|
32
|
+
item: _objectSpread(_objectSpread({}, tree.item), {}, {
|
|
33
|
+
'&.is-focused, &[data-focused]': {
|
|
34
|
+
boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
|
|
35
|
+
// the base Astro theme draws focus with outline: 2px solid; the Onyx
|
|
36
|
+
// treatment is a single inset shadow (matching ListView/DataTable), so
|
|
37
|
+
// the outline must be reset or both stack and the ring reads ~4px thick
|
|
38
|
+
outline: 'none',
|
|
39
|
+
borderRadius: '4px',
|
|
40
|
+
zIndex: 1
|
|
41
|
+
},
|
|
42
|
+
// the drag handle / chevron carry their own focus treatment, so the
|
|
43
|
+
// row-level focus treatment is suppressed while either is focused
|
|
44
|
+
'&:has(.astro-TreeDragButton:focus), &:has(.astro-TreeDragButton:focus-visible), &:has(.astro-TreeChevronButton:focus), &:has(.astro-TreeChevronButton:focus-visible)': {
|
|
45
|
+
boxShadow: 'none',
|
|
46
|
+
outline: 'none'
|
|
47
|
+
},
|
|
48
|
+
'&.is-focus-visible, &[data-focus-visible]': {
|
|
49
|
+
boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
|
|
50
|
+
outline: 'none',
|
|
51
|
+
borderRadius: '4px'
|
|
52
|
+
},
|
|
53
|
+
'&.is-selected, &[data-selected]': {
|
|
54
|
+
bg: _onyxTokens.astroTokens.color['nav-bar-item'].selected.bg,
|
|
55
|
+
'& *': {
|
|
56
|
+
color: _onyxTokens.astroTokens.color.gray[900]
|
|
57
|
+
}
|
|
58
|
+
},
|
|
59
|
+
'&.is-disabled, &[data-disabled]': {
|
|
60
|
+
opacity: 0.65,
|
|
61
|
+
cursor: 'not-allowed'
|
|
62
|
+
},
|
|
63
|
+
'&.is-dragging, &[data-dragging]': {
|
|
64
|
+
bg: _onyxTokens.astroTokens.color['nav-bar-item'].hover.bg,
|
|
65
|
+
boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
|
|
66
|
+
borderRadius: '4px',
|
|
67
|
+
'& *': {
|
|
68
|
+
color: _onyxTokens.astroTokens.color['nav-bar-item'].selected.text
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
'&.is-drop-target, &[data-drop-target]': {
|
|
72
|
+
boxShadow: "inset 0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
|
|
73
|
+
borderRadius: '4px'
|
|
74
|
+
},
|
|
75
|
+
'&:hover': {
|
|
76
|
+
bg: _onyxTokens.astroTokens.color['nav-bar-item'].hover.bg,
|
|
77
|
+
borderRadius: '4px'
|
|
78
|
+
}
|
|
79
|
+
}),
|
|
80
|
+
itemContent: _objectSpread(_objectSpread({}, tree.itemContent), {}, {
|
|
81
|
+
color: _onyxTokens.astroTokens.color.gray[900],
|
|
82
|
+
'&:hover': {
|
|
83
|
+
bg: 'transparent'
|
|
84
|
+
}
|
|
85
|
+
}),
|
|
86
|
+
dragButton: _objectSpread(_objectSpread({}, tree.dragButton), {}, {
|
|
87
|
+
path: {
|
|
88
|
+
fill: _onyxTokens.astroTokens.color.gray[500]
|
|
89
|
+
},
|
|
90
|
+
'&:hover': {
|
|
91
|
+
bg: _onyxTokens.astroTokens.color['nav-bar-item'].hover.bg,
|
|
92
|
+
'& svg': {
|
|
93
|
+
fill: _onyxTokens.astroTokens.color['nav-bar-item'].selected.text
|
|
94
|
+
}
|
|
95
|
+
},
|
|
96
|
+
'&:focus, &:focus-visible': {
|
|
97
|
+
boxShadow: "0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary),
|
|
98
|
+
borderRadius: '4px'
|
|
99
|
+
},
|
|
100
|
+
'&:active, &[data-pressed]': {
|
|
101
|
+
bg: _onyxTokens.astroTokens.color['primary-light'],
|
|
102
|
+
cursor: 'grabbing',
|
|
103
|
+
'& svg': {
|
|
104
|
+
fill: _onyxTokens.astroTokens.color['primary-dark']
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}),
|
|
108
|
+
// the visible checkbox box is drawn by tree.selectionCheckboxBox on the
|
|
109
|
+
// inner RAC CheckboxButton label; Onyx re-colors it from tokens
|
|
110
|
+
selectionCheckbox: _objectSpread(_objectSpread({}, tree.selectionCheckbox), {}, {
|
|
111
|
+
'&:focus-visible, [data-focus-visible]': {
|
|
112
|
+
boxShadow: "0 0 0 2px ".concat(_onyxTokens.astroTokens.color.primary)
|
|
113
|
+
}
|
|
114
|
+
}),
|
|
115
|
+
selectionCheckboxBox: _objectSpread(_objectSpread({}, tree.selectionCheckboxBox), {}, {
|
|
116
|
+
borderColor: _onyxTokens.astroTokens.color.gray[500],
|
|
117
|
+
'&[data-selected]': _objectSpread(_objectSpread({}, tree.selectionCheckboxBox['&[data-selected]']), {}, {
|
|
118
|
+
borderColor: _onyxTokens.astroTokens.color.primary,
|
|
119
|
+
bg: _onyxTokens.astroTokens.color.primary
|
|
120
|
+
}),
|
|
121
|
+
'[data-hovered] &, [data-pressed] &': {
|
|
122
|
+
borderColor: _onyxTokens.astroTokens.color.primary
|
|
123
|
+
},
|
|
124
|
+
'&[data-disabled]': _objectSpread(_objectSpread({}, tree.selectionCheckboxBox['&[data-disabled]']), {}, {
|
|
125
|
+
borderColor: _onyxTokens.astroTokens.color.border,
|
|
126
|
+
background: _onyxTokens.astroTokens.color.gray[100]
|
|
127
|
+
})
|
|
128
|
+
}),
|
|
129
|
+
// blue circle with a blue.600 folder glyph for expandable nodes; the file
|
|
130
|
+
// (indigo) variant is applied per-item in TreeItemContent via is-leaf
|
|
131
|
+
iconSlot: _objectSpread(_objectSpread({}, tree.iconSlot), {}, {
|
|
132
|
+
bg: _onyxTokens.astroTokens.color.avatar.blue.bg,
|
|
133
|
+
color: _onyxTokens.astroTokens.color.avatar.blue.text,
|
|
134
|
+
'&.is-leaf': {
|
|
135
|
+
bg: _onyxTokens.astroTokens.color.avatar.indigo.bg,
|
|
136
|
+
color: _onyxTokens.astroTokens.color.avatar.indigo.text
|
|
137
|
+
}
|
|
138
|
+
}),
|
|
139
|
+
lockSlot: _objectSpread(_objectSpread({}, tree.lockSlot), {}, {
|
|
140
|
+
color: '#5F6DA7'
|
|
141
|
+
}),
|
|
142
|
+
container: _objectSpread(_objectSpread({}, tree.container), {}, {
|
|
143
|
+
'& .react-aria-DropIndicator': _objectSpread(_objectSpread({}, tree.container['& .react-aria-DropIndicator']), {}, {
|
|
144
|
+
'&::before': _objectSpread(_objectSpread({}, tree.container['& .react-aria-DropIndicator']['&::before']), {}, {
|
|
145
|
+
bg: 'transparent'
|
|
146
|
+
}),
|
|
147
|
+
'&[data-drop-target]::before': {
|
|
148
|
+
bg: _onyxTokens.astroTokens.color.primary
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
})
|
|
152
|
+
});
|
|
153
|
+
var _default = exports["default"] = onyxTree;
|
|
@@ -2373,6 +2373,16 @@ declare const _default: {
|
|
|
2373
2373
|
};
|
|
2374
2374
|
};
|
|
2375
2375
|
};
|
|
2376
|
+
tree: {
|
|
2377
|
+
item: any;
|
|
2378
|
+
itemContent: any;
|
|
2379
|
+
dragButton: any;
|
|
2380
|
+
selectionCheckbox: any;
|
|
2381
|
+
selectionCheckboxBox: any;
|
|
2382
|
+
iconSlot: any;
|
|
2383
|
+
lockSlot: any;
|
|
2384
|
+
container: any;
|
|
2385
|
+
};
|
|
2376
2386
|
imageUpload: {
|
|
2377
2387
|
button: {
|
|
2378
2388
|
border: string;
|
|
@@ -52,6 +52,7 @@ var _table = require("./table");
|
|
|
52
52
|
var _tableBase = require("./tableBase");
|
|
53
53
|
var _tabs = require("./tabs");
|
|
54
54
|
var _tooltip = _interopRequireDefault(require("./tooltip"));
|
|
55
|
+
var _tree = _interopRequireDefault(require("./tree"));
|
|
55
56
|
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
56
57
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
57
58
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
@@ -546,5 +547,6 @@ var _default = exports["default"] = {
|
|
|
546
547
|
tableBase: _tableBase.tableBase,
|
|
547
548
|
tabs: _tabs.tabs,
|
|
548
549
|
tooltip: _tooltip["default"],
|
|
550
|
+
tree: _tree["default"],
|
|
549
551
|
imageUpload: imageUpload
|
|
550
552
|
};
|
|
@@ -62,6 +62,7 @@ _Object$defineProperty(exports, "variants", {
|
|
|
62
62
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
63
63
|
var _Buttons = _interopRequireDefault(require("../../components/Button/Buttons.styles"));
|
|
64
64
|
var _IconButton = _interopRequireDefault(require("../../components/IconButton/IconButton.styles"));
|
|
65
|
+
var _Tree = require("../../components/Tree/Tree.styles");
|
|
65
66
|
var _Badge = _interopRequireDefault(require("../../components/Badge/Badge.styles"));
|
|
66
67
|
var _Card = _interopRequireDefault(require("../../components/Card/Card.styles"));
|
|
67
68
|
var _Grid = _interopRequireDefault(require("../../components/Grid/Grid.styles"));
|
|
@@ -83,5 +84,6 @@ var _variants = _interopRequireDefault(require("./variants"));
|
|
|
83
84
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
84
85
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
85
86
|
var buttons = exports.buttons = _objectSpread(_objectSpread({}, _Buttons["default"]), {}, {
|
|
86
|
-
iconButtons: _IconButton["default"]
|
|
87
|
+
iconButtons: _IconButton["default"],
|
|
88
|
+
treeChevron: _Tree.treeChevron
|
|
87
89
|
});
|
|
@@ -74,6 +74,7 @@ var tab = _interopRequireWildcard(require("../../components/Tabs/Tabs.style"));
|
|
|
74
74
|
var _TimeField = _interopRequireDefault(require("../../components/TimeField/TimeField.styles"));
|
|
75
75
|
var _TimeZone = _interopRequireDefault(require("../../components/TimeZonePicker/TimeZone.styles"));
|
|
76
76
|
var _Tooltip = _interopRequireDefault(require("../../components/TooltipTrigger/Tooltip.styles"));
|
|
77
|
+
var _Tree = _interopRequireDefault(require("../../components/Tree/Tree.styles"));
|
|
77
78
|
var _TreeView = _interopRequireDefault(require("../../components/TreeView/TreeView.styles"));
|
|
78
79
|
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
79
80
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -134,6 +135,7 @@ var _default = exports["default"] = _objectSpread(_objectSpread({
|
|
|
134
135
|
timefield: _TimeField["default"],
|
|
135
136
|
timeZone: _TimeZone["default"],
|
|
136
137
|
tooltip: _Tooltip["default"],
|
|
138
|
+
tree: _Tree["default"],
|
|
137
139
|
treeView: _TreeView["default"]
|
|
138
140
|
}, tab), {}, {
|
|
139
141
|
statusIcon: _StatusIcon["default"],
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Converts status information into a class string. Status keys are converted to
|
|
3
|
+
* kebab-case and joined with the default class.
|
|
4
|
+
*
|
|
5
|
+
* This is the shared implementation behind the `useStatusClasses` hook; it exists
|
|
6
|
+
* as a plain function so render-prop components (e.g. React Aria wrappers) can
|
|
7
|
+
* build the same status classes from values that are only available inside a
|
|
8
|
+
* callback, where hooks cannot be called.
|
|
9
|
+
*
|
|
10
|
+
* e.g. getStatusClasses('thing', { isDisabled: true }) => "thing is-disabled"
|
|
11
|
+
*/
|
|
12
|
+
declare const getStatusClasses: (defaultClass?: string | undefined | null, statuses?: Record<string, string | boolean | undefined | null>) => string;
|
|
13
|
+
export default getStatusClasses;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
5
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports["default"] = void 0;
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _kebabCase = _interopRequireDefault(require("lodash/kebabCase"));
|
|
11
|
+
var _mapKeys = _interopRequireDefault(require("lodash/mapKeys"));
|
|
12
|
+
/**
|
|
13
|
+
* Converts status information into a class string. Status keys are converted to
|
|
14
|
+
* kebab-case and joined with the default class.
|
|
15
|
+
*
|
|
16
|
+
* This is the shared implementation behind the `useStatusClasses` hook; it exists
|
|
17
|
+
* as a plain function so render-prop components (e.g. React Aria wrappers) can
|
|
18
|
+
* build the same status classes from values that are only available inside a
|
|
19
|
+
* callback, where hooks cannot be called.
|
|
20
|
+
*
|
|
21
|
+
* e.g. getStatusClasses('thing', { isDisabled: true }) => "thing is-disabled"
|
|
22
|
+
*/
|
|
23
|
+
var getStatusClasses = function getStatusClasses(defaultClass) {
|
|
24
|
+
var statuses = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
25
|
+
return (0, _classnames["default"])(defaultClass, (0, _mapKeys["default"])(statuses, function (_v, k) {
|
|
26
|
+
return (0, _kebabCase["default"])(k);
|
|
27
|
+
}));
|
|
28
|
+
};
|
|
29
|
+
var _default = exports["default"] = getStatusClasses;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import _Object$keys from "@babel/runtime-corejs3/core-js-stable/object/keys";
|
|
2
|
+
import _Object$getOwnPropertySymbols from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols";
|
|
3
|
+
import _filterInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/filter";
|
|
4
|
+
import _Object$getOwnPropertyDescriptor from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor";
|
|
5
|
+
import _forEachInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/for-each";
|
|
6
|
+
import _Object$getOwnPropertyDescriptors from "@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors";
|
|
7
|
+
import _Object$defineProperties from "@babel/runtime-corejs3/core-js-stable/object/define-properties";
|
|
8
|
+
import _Object$defineProperty from "@babel/runtime-corejs3/core-js-stable/object/define-property";
|
|
9
|
+
import _extends from "@babel/runtime-corejs3/helpers/esm/extends";
|
|
10
|
+
import _typeof from "@babel/runtime-corejs3/helpers/esm/typeof";
|
|
11
|
+
import _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
|
|
12
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
13
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context, _context2; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(t), !0)).call(_context, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context2 = ownKeys(Object(t))).call(_context2, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
14
|
+
import React, { forwardRef } from 'react';
|
|
15
|
+
import { Tree as AriaTree, useDragAndDrop } from 'react-aria-components';
|
|
16
|
+
import Box from '../Box';
|
|
17
|
+
import { jsx as ___EmotionJSX } from "@emotion/react";
|
|
18
|
+
var Tree = /*#__PURE__*/forwardRef(function (props, ref) {
|
|
19
|
+
return ___EmotionJSX(AriaTree, _extends({}, props, {
|
|
20
|
+
ref: ref,
|
|
21
|
+
render: function render(domProps) {
|
|
22
|
+
return ___EmotionJSX(Box, _extends({}, domProps, {
|
|
23
|
+
ref: domProps.ref,
|
|
24
|
+
isRow: false,
|
|
25
|
+
variant: "tree.container",
|
|
26
|
+
sx: _objectSpread({}, _typeof(props.style) === 'object' ? props.style : {})
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
}));
|
|
30
|
+
});
|
|
31
|
+
Tree.displayName = 'Tree';
|
|
32
|
+
export { useDragAndDrop };
|
|
33
|
+
export default Tree;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks';
|
|
2
|
+
import * as TreeStories from './Tree.stories';
|
|
3
|
+
import AccessibilityTable from '../../utils/docUtils/AccessibilityTable';
|
|
4
|
+
import { KeyboardRows } from '../../utils/docUtils/accessibilityTableConstants';
|
|
5
|
+
|
|
6
|
+
<Meta of={TreeStories} isTemplate />
|
|
7
|
+
|
|
8
|
+
# Tree
|
|
9
|
+
|
|
10
|
+
The Tree component displays hierarchical data in an expandable, collapsible tree structure. Users can expand and collapse levels, select one or many items, and — optionally — reorder and re-parent items with drag and drop.
|
|
11
|
+
|
|
12
|
+
A Tree should:
|
|
13
|
+
- Be used for data with a clear parent/child relationship, such as environments, regions, folders, or organization structures.
|
|
14
|
+
- Be used when users need to navigate a nested structure that is deeper than a flat list.
|
|
15
|
+
|
|
16
|
+
A Tree shouldn't:
|
|
17
|
+
- Be used for flat data — use a [ListView](./?path=/docs/components-listview--docs) instead.
|
|
18
|
+
- Be used for navigation that fits a menu or breadcrumbs.
|
|
19
|
+
- Expose too many levels of depth; keep nesting shallow enough to stay scannable.
|
|
20
|
+
|
|
21
|
+
### Required Components
|
|
22
|
+
|
|
23
|
+
This component can be used with `TreeItem`, `TreeItemContent`, and `TreeLoadMoreItem` from this package. A chevron and expand/collapse behavior are provided by default. `TreeItem` children render as row content directly; place them inside `TreeItemContent` only when you need its render props or its built-in folder/file and lock icons.
|
|
24
|
+
|
|
25
|
+
### Authoring Modes
|
|
26
|
+
|
|
27
|
+
- **Static**: declare `TreeItem` children directly in JSX (see the *Static Nested Tree* story). Best for small, fixed trees.
|
|
28
|
+
- **Dynamic**: pass a nested array via the `items` prop and render nodes with a recursive render function (see the *Dynamic Recursive Tree* story). Best for trees backed by data.
|
|
29
|
+
|
|
30
|
+
### Accessibility
|
|
31
|
+
|
|
32
|
+
This component should adhere to the [WAI-ARIA Tree View](https://www.w3.org/WAI/ARIA/apg/patterns/treeview/) accessibility guidelines.
|
|
33
|
+
|
|
34
|
+
<AccessibilityTable keyboardRows={[
|
|
35
|
+
{ key: 'Space or Enter', description: 'When focused, selects the item (with selectionMode enabled) or toggles expand/collapse.' },
|
|
36
|
+
KeyboardRows.tabFocusesItem,
|
|
37
|
+
KeyboardRows.shiftTabFocusPrevious,
|
|
38
|
+
{ key: 'Right Arrow', description: 'Expands a collapsed parent item, or moves focus to its first child when expanded.' },
|
|
39
|
+
{ key: 'Left Arrow', description: 'Collapses an expanded parent item, or moves focus to its parent when collapsed.' },
|
|
40
|
+
{ key: 'Down / Up Arrow', description: 'Moves focus to the next or previous visible item.' },
|
|
41
|
+
{
|
|
42
|
+
key: 'Home (Fn + Right Arrow Key) Or Control/Command + Home',
|
|
43
|
+
description: 'Shifts the focus to the first item in the tree.',
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
key: 'End (Fn + Left Arrow Key) Or Control/Command + End',
|
|
47
|
+
description: 'Shifts the focus to the last item in the tree.',
|
|
48
|
+
},
|
|
49
|
+
]} screenReaderRows={[
|
|
50
|
+
'The Tree uses the **`role="tree"`** attribute with each TreeItem using **`role="treeitem"`**.',
|
|
51
|
+
'Parent items use the **`aria-expanded`** attribute to indicate whether they are expanded or collapsed.',
|
|
52
|
+
'Selected items use the **`aria-selected`** attribute; disabled items use **`aria-disabled`**.',
|
|
53
|
+
'The Tree requires an **`aria-label`** to provide an accessible name.',
|
|
54
|
+
]} />
|
|
55
|
+
|
|
56
|
+
### Keyboard Drag and Drop
|
|
57
|
+
|
|
58
|
+
When drag and drop is enabled, the drag handle is focusable. Press **Enter** to start a drag session, use the arrow keys to move the drop target, then press **Enter** to drop or **Escape** to cancel.
|