@pingux/astro 2.235.0-alpha.0 → 2.236.0-alpha.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,786 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
6
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
8
|
+
var _forEachInstanceProperty2 = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
|
9
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
10
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
11
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
12
|
+
var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
|
|
13
|
+
var _Object$create = require("@babel/runtime-corejs3/core-js-stable/object/create");
|
|
14
|
+
var _bindInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/bind");
|
|
15
|
+
var _Object$getPrototypeOf = require("@babel/runtime-corejs3/core-js-stable/object/get-prototype-of");
|
|
16
|
+
var _Object$setPrototypeOf = require("@babel/runtime-corejs3/core-js-stable/object/set-prototype-of");
|
|
17
|
+
var _Symbol$asyncIterator = require("@babel/runtime-corejs3/core-js-stable/symbol/async-iterator");
|
|
18
|
+
var _Promise2 = require("@babel/runtime-corejs3/core-js-stable/promise");
|
|
19
|
+
var _Symbol$iterator = require("@babel/runtime-corejs3/core-js-stable/symbol/iterator");
|
|
20
|
+
var _reverseInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/reverse");
|
|
21
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
22
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
23
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
24
|
+
value: true
|
|
25
|
+
});
|
|
26
|
+
exports["default"] = exports.StaticNestedTree = exports.Selection = exports.DynamicRecursiveTree = exports.DragAndDropReparentOnly = exports.DragAndDrop = exports.DisabledItems = exports.CustomItemContent = exports.AsyncChildLoading = void 0;
|
|
27
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
28
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
29
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
30
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
31
|
+
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
32
|
+
var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
|
|
33
|
+
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
|
34
|
+
var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
|
|
35
|
+
var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set-timeout"));
|
|
36
|
+
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
37
|
+
var _from = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/array/from"));
|
|
38
|
+
var _some = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/some"));
|
|
39
|
+
var _keys = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/keys"));
|
|
40
|
+
var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/for-each"));
|
|
41
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
42
|
+
var _useTreeData = require("react-aria-components/useTreeData");
|
|
43
|
+
var _AlertCircleIcon = _interopRequireDefault(require("@pingux/mdi-react/AlertCircleIcon"));
|
|
44
|
+
var _CheckCircleIcon = _interopRequireDefault(require("@pingux/mdi-react/CheckCircleIcon"));
|
|
45
|
+
var _FormatListGroupIcon = _interopRequireDefault(require("@pingux/mdi-react/FormatListGroupIcon"));
|
|
46
|
+
var _PaperclipIcon = _interopRequireDefault(require("@pingux/mdi-react/PaperclipIcon"));
|
|
47
|
+
var _RefreshIcon = _interopRequireDefault(require("@pingux/mdi-react/RefreshIcon"));
|
|
48
|
+
var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
|
|
49
|
+
var _index = require("../../index");
|
|
50
|
+
var _Tree = _interopRequireDefault(require("./Tree.mdx"));
|
|
51
|
+
var _react2 = require("@emotion/react");
|
|
52
|
+
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 _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
|
|
53
|
+
function _regeneratorRuntime() { "use strict"; var r = _regenerator(), e = r.m(_regeneratorRuntime), t = (_Object$getPrototypeOf ? _Object$getPrototypeOf(e) : e.__proto__).constructor; function n(r) { var e = "function" == typeof r && r.constructor; return !!e && (e === t || "GeneratorFunction" === (e.displayName || e.name)); } var o = { "throw": 1, "return": 2, "break": 3, "continue": 3 }; function a(r) { var e, t; return function (n) { e || (e = { stop: function stop() { return t(n.a, 2); }, "catch": function _catch() { return n.v; }, abrupt: function abrupt(r, e) { return t(n.a, o[r], e); }, delegateYield: function delegateYield(r, o, a) { return e.resultName = o, t(n.d, _regeneratorValues(r), a); }, finish: function finish(r) { return t(n.f, r); } }, t = function t(r, _t, o) { n.p = e.prev, n.n = e.next; try { return r(_t, o); } finally { e.next = n.n; } }), e.resultName && (e[e.resultName] = n.v, e.resultName = void 0), e.sent = n.v, e.next = n.n; try { return r.call(this, e); } finally { n.p = e.prev, n.n = e.next; } }; } return (_regeneratorRuntime = function _regeneratorRuntime() { return { wrap: function wrap(e, t, n, o) { return r.w(a(e), t, n, o && _reverseInstanceProperty(o).call(o)); }, isGeneratorFunction: n, mark: r.m, awrap: function awrap(r, e) { return new _OverloadYield(r, e); }, AsyncIterator: _regeneratorAsyncIterator, async: function async(r, e, t, o, u) { return (n(e) ? _regeneratorAsyncGen : _regeneratorAsync)(a(r), e, t, o, u); }, keys: _regeneratorKeys, values: _regeneratorValues }; })(); }
|
|
54
|
+
function _regeneratorValues(e) { if (null != e) { var t = e["function" == typeof _Symbol && _Symbol$iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(_typeof(e) + " is not iterable"); }
|
|
55
|
+
function _regeneratorKeys(e) { var n = Object(e), r = []; for (var t in n) r.unshift(t); return function e() { for (; r.length;) if ((t = r.pop()) in n) return e.value = t, e.done = !1, e; return e.done = !0, e; }; }
|
|
56
|
+
function _regeneratorAsync(n, e, r, t, o) { var a = _regeneratorAsyncGen(n, e, r, t, o); return a.next().then(function (n) { return n.done ? n.value : a.next(); }); }
|
|
57
|
+
function _regeneratorAsyncGen(r, e, t, o, n) { return new _regeneratorAsyncIterator(_regenerator().w(r, e, t, o), n || _Promise2); }
|
|
58
|
+
function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c = t[r](o), u = c.value; return u instanceof _OverloadYield ? e.resolve(u.v).then(function (t) { n("next", t, i, f); }, function (t) { n("throw", t, i, f); }) : e.resolve(u).then(function (t) { c.value = t, i(c); }, function (t) { return n("throw", t, i, f); }); } catch (t) { f(t); } } var r; this.next || (_regeneratorDefine2(_regeneratorAsyncIterator.prototype), _regeneratorDefine2(_regeneratorAsyncIterator.prototype, "function" == typeof _Symbol && _Symbol$asyncIterator || "@asyncIterator", function () { return this; })), _regeneratorDefine2(this, "_invoke", function (t, o, i) { function f() { return new e(function (e, r) { n(t, i, e, r); }); } return r = r ? r.then(f, f) : f(); }, !0); }
|
|
59
|
+
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof _Symbol ? _Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = _Object$create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: _bindInstanceProperty(d).call(d, e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = _Object$getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = _Object$create(c); function f(e) { return _Object$setPrototypeOf ? _Object$setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = _Object$create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
60
|
+
function _regeneratorDefine2(e, r, n, t) { var i = _Object$defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
61
|
+
function _OverloadYield(e, d) { this.v = e, this.k = d; }
|
|
62
|
+
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; }
|
|
63
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context9, _context0; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty2(_context9 = ownKeys(Object(t), !0)).call(_context9, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty2(_context0 = ownKeys(Object(t))).call(_context0, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
64
|
+
var _default = exports["default"] = {
|
|
65
|
+
title: 'Components/Tree',
|
|
66
|
+
component: _index.Tree,
|
|
67
|
+
parameters: {
|
|
68
|
+
docs: {
|
|
69
|
+
page: function page() {
|
|
70
|
+
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_Tree["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
};
|
|
75
|
+
var StaticNestedTree = exports.StaticNestedTree = function StaticNestedTree() {
|
|
76
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Tree, {
|
|
77
|
+
"aria-label": "Static files"
|
|
78
|
+
}, (0, _react2.jsx)(_index.TreeItem, {
|
|
79
|
+
textValue: "Documents"
|
|
80
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, (0, _react2.jsx)(_index.Text, null, "Documents")), (0, _react2.jsx)(_index.TreeItem, {
|
|
81
|
+
textValue: "Reports"
|
|
82
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, (0, _react2.jsx)(_index.Text, null, "Reports"))), (0, _react2.jsx)(_index.TreeItem, {
|
|
83
|
+
textValue: "Policies"
|
|
84
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, (0, _react2.jsx)(_index.Text, null, "Policies")))), (0, _react2.jsx)(_index.TreeItem, {
|
|
85
|
+
textValue: "Downloads"
|
|
86
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, (0, _react2.jsx)(_index.Text, null, "Downloads")))));
|
|
87
|
+
};
|
|
88
|
+
StaticNestedTree.parameters = {
|
|
89
|
+
docs: {
|
|
90
|
+
description: {
|
|
91
|
+
story: 'The simplest usage: declare TreeItem children directly with nested TreeItems for sub-levels. Best for small, fixed trees that do not change at runtime.'
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
var DynamicRecursiveTree = exports.DynamicRecursiveTree = function DynamicRecursiveTree() {
|
|
96
|
+
var initiallyExpandedKeys = ['projects', 'resources'];
|
|
97
|
+
var items = [{
|
|
98
|
+
id: 'projects',
|
|
99
|
+
name: 'Projects',
|
|
100
|
+
children: [{
|
|
101
|
+
id: 'astro',
|
|
102
|
+
name: 'Astro',
|
|
103
|
+
children: [{
|
|
104
|
+
id: 'components',
|
|
105
|
+
name: 'Components'
|
|
106
|
+
}]
|
|
107
|
+
}, {
|
|
108
|
+
id: 'onyx',
|
|
109
|
+
name: 'Onyx'
|
|
110
|
+
}]
|
|
111
|
+
}, {
|
|
112
|
+
id: 'resources',
|
|
113
|
+
name: 'Resources',
|
|
114
|
+
children: [{
|
|
115
|
+
id: 'guides',
|
|
116
|
+
name: 'Guides',
|
|
117
|
+
children: [{
|
|
118
|
+
id: 'getting-started',
|
|
119
|
+
name: 'Getting Started'
|
|
120
|
+
}]
|
|
121
|
+
}, {
|
|
122
|
+
id: 'examples',
|
|
123
|
+
name: 'Examples'
|
|
124
|
+
}]
|
|
125
|
+
}];
|
|
126
|
+
var _renderItem = function renderItem(item) {
|
|
127
|
+
var _item$children, _item$children2;
|
|
128
|
+
return (0, _react2.jsx)(_index.TreeItem, {
|
|
129
|
+
key: item.id,
|
|
130
|
+
id: item.id,
|
|
131
|
+
textValue: item.name,
|
|
132
|
+
hasChildItems: Boolean((_item$children = item.children) === null || _item$children === void 0 ? void 0 : _item$children.length)
|
|
133
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, function (_ref) {
|
|
134
|
+
var _context, _context2;
|
|
135
|
+
var isExpanded = _ref.isExpanded,
|
|
136
|
+
level = _ref.level;
|
|
137
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, null, (0, _concat["default"])(_context = (0, _concat["default"])(_context2 = "".concat(item.name, " (")).call(_context2, isExpanded ? 'expanded' : 'collapsed', ", level ")).call(_context, level, ")")));
|
|
138
|
+
}), (_item$children2 = item.children) === null || _item$children2 === void 0 ? void 0 : (0, _map["default"])(_item$children2).call(_item$children2, _renderItem));
|
|
139
|
+
};
|
|
140
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Tree, {
|
|
141
|
+
"aria-label": "Dynamic projects",
|
|
142
|
+
items: items,
|
|
143
|
+
defaultExpandedKeys: initiallyExpandedKeys
|
|
144
|
+
}, _renderItem));
|
|
145
|
+
};
|
|
146
|
+
DynamicRecursiveTree.parameters = {
|
|
147
|
+
docs: {
|
|
148
|
+
description: {
|
|
149
|
+
story: 'Pass a nested array via the `items` prop and render each node recursively with a render function. Use this for trees backed by data — each TreeItem gets `hasChildItems` from the node so the chevron renders correctly.'
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
var richItems = [{
|
|
154
|
+
id: 'production',
|
|
155
|
+
name: 'Policies',
|
|
156
|
+
status: 'Healthy',
|
|
157
|
+
color: 'blue',
|
|
158
|
+
children: [{
|
|
159
|
+
id: 'registration',
|
|
160
|
+
name: 'Registration',
|
|
161
|
+
status: 'Healthy',
|
|
162
|
+
color: 'blue',
|
|
163
|
+
locked: true,
|
|
164
|
+
children: [{
|
|
165
|
+
id: 'registration-a',
|
|
166
|
+
name: 'Registration A',
|
|
167
|
+
status: 'Healthy',
|
|
168
|
+
color: 'indigo',
|
|
169
|
+
locked: true
|
|
170
|
+
}, {
|
|
171
|
+
id: 'registration-b',
|
|
172
|
+
name: 'Registration B',
|
|
173
|
+
status: 'Healthy',
|
|
174
|
+
color: 'indigo',
|
|
175
|
+
locked: true
|
|
176
|
+
}]
|
|
177
|
+
}, {
|
|
178
|
+
id: 'authentication',
|
|
179
|
+
name: 'Authentication',
|
|
180
|
+
status: 'Needs review',
|
|
181
|
+
color: 'blue',
|
|
182
|
+
locked: true
|
|
183
|
+
}, {
|
|
184
|
+
id: 'other',
|
|
185
|
+
name: 'Other',
|
|
186
|
+
status: 'In progress',
|
|
187
|
+
color: 'blue'
|
|
188
|
+
}]
|
|
189
|
+
}, {
|
|
190
|
+
id: 'staging',
|
|
191
|
+
name: 'Single Item',
|
|
192
|
+
status: 'In progress',
|
|
193
|
+
color: 'indigo'
|
|
194
|
+
}];
|
|
195
|
+
var Selection = exports.Selection = function Selection(_ref2) {
|
|
196
|
+
var selectionMode = _ref2.selectionMode,
|
|
197
|
+
selectionBehavior = _ref2.selectionBehavior;
|
|
198
|
+
var _useState = (0, _react.useState)(richItems),
|
|
199
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 1),
|
|
200
|
+
items = _useState2[0];
|
|
201
|
+
var _renderItem2 = function renderItem(item) {
|
|
202
|
+
var _item$children3, _item$children4;
|
|
203
|
+
return (0, _react2.jsx)(_index.TreeItem, {
|
|
204
|
+
key: item.id,
|
|
205
|
+
id: item.id,
|
|
206
|
+
textValue: item.name,
|
|
207
|
+
hasChildItems: Boolean((_item$children3 = item.children) === null || _item$children3 === void 0 ? void 0 : _item$children3.length)
|
|
208
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, item.name), (_item$children4 = item.children) === null || _item$children4 === void 0 ? void 0 : (0, _map["default"])(_item$children4).call(_item$children4, _renderItem2));
|
|
209
|
+
};
|
|
210
|
+
var productionExpandedKeys = ['production', 'registration'];
|
|
211
|
+
return (0, _react2.jsx)(_index.Tree, {
|
|
212
|
+
"aria-label": "Selection example",
|
|
213
|
+
items: items,
|
|
214
|
+
selectionMode: selectionMode,
|
|
215
|
+
selectionBehavior: selectionBehavior,
|
|
216
|
+
defaultSelectedKeys: selectionMode === 'none' ? undefined : ['registration-a'],
|
|
217
|
+
defaultExpandedKeys: productionExpandedKeys
|
|
218
|
+
}, function (item) {
|
|
219
|
+
return _renderItem2(item);
|
|
220
|
+
});
|
|
221
|
+
};
|
|
222
|
+
Selection.parameters = {
|
|
223
|
+
docs: {
|
|
224
|
+
description: {
|
|
225
|
+
story: 'Uncontrolled selection: the tree manages selection internally from `defaultSelectedKeys` (seeded with registration-a). Use the Controls panel to try `selectionMode` and `selectionBehavior` combinations. For selection that lives in app state, pass `selectedKeys`/`onSelectionChange` instead of `defaultSelectedKeys`.'
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
};
|
|
229
|
+
Selection.args = {
|
|
230
|
+
selectionMode: 'multiple',
|
|
231
|
+
selectionBehavior: 'toggle'
|
|
232
|
+
};
|
|
233
|
+
Selection.argTypes = {
|
|
234
|
+
selectionMode: {
|
|
235
|
+
control: 'radio',
|
|
236
|
+
options: ['none', 'single', 'multiple'],
|
|
237
|
+
description: 'Whether none, one, or many items can be selected.'
|
|
238
|
+
},
|
|
239
|
+
selectionBehavior: {
|
|
240
|
+
control: 'radio',
|
|
241
|
+
options: ['toggle', 'replace'],
|
|
242
|
+
description: 'How multiple selection responds to pointer/keyboard selection: toggle adds to the selection, replace swaps it.'
|
|
243
|
+
}
|
|
244
|
+
};
|
|
245
|
+
var DisabledItems = exports.DisabledItems = function DisabledItems(_ref3) {
|
|
246
|
+
var disabledBehavior = _ref3.disabledBehavior;
|
|
247
|
+
var _useState3 = (0, _react.useState)(richItems),
|
|
248
|
+
_useState4 = (0, _slicedToArray2["default"])(_useState3, 1),
|
|
249
|
+
items = _useState4[0];
|
|
250
|
+
var disabledItemKeys = ['staging'];
|
|
251
|
+
var productionExpandedKeys = ['production'];
|
|
252
|
+
var _renderDisabledItem = function renderDisabledItem(item) {
|
|
253
|
+
var _item$children5, _item$children6;
|
|
254
|
+
return (0, _react2.jsx)(_index.TreeItem, {
|
|
255
|
+
key: item.id,
|
|
256
|
+
id: item.id,
|
|
257
|
+
textValue: item.name,
|
|
258
|
+
hasChildItems: Boolean((_item$children5 = item.children) === null || _item$children5 === void 0 ? void 0 : _item$children5.length),
|
|
259
|
+
isDisabled: item.id === 'staging'
|
|
260
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, item.name), (_item$children6 = item.children) === null || _item$children6 === void 0 ? void 0 : (0, _map["default"])(_item$children6).call(_item$children6, _renderDisabledItem));
|
|
261
|
+
};
|
|
262
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
|
|
263
|
+
as: "p"
|
|
264
|
+
}, "Single Item is disabled. With", ' ', (0, _react2.jsx)("code", null, "disabledBehavior=\"", disabledBehavior, "\""), ", a disabled item is", ' ', disabledBehavior === 'all' ? 'inert — it cannot be selected, expanded, or focused.' : 'blocked from selection only, but can still be expanded and focused.'), (0, _react2.jsx)(_index.Tree, {
|
|
265
|
+
"aria-label": "Tree with disabled items",
|
|
266
|
+
items: items,
|
|
267
|
+
selectionMode: "multiple",
|
|
268
|
+
disabledKeys: disabledItemKeys,
|
|
269
|
+
disabledBehavior: disabledBehavior,
|
|
270
|
+
defaultExpandedKeys: productionExpandedKeys
|
|
271
|
+
}, function (item) {
|
|
272
|
+
return _renderDisabledItem(item);
|
|
273
|
+
}));
|
|
274
|
+
};
|
|
275
|
+
DisabledItems.args = {
|
|
276
|
+
disabledBehavior: 'all'
|
|
277
|
+
};
|
|
278
|
+
DisabledItems.argTypes = {
|
|
279
|
+
disabledBehavior: {
|
|
280
|
+
control: 'radio',
|
|
281
|
+
options: ['selection', 'all'],
|
|
282
|
+
description: 'Whether disabledKeys blocks selection only, or all interactions.'
|
|
283
|
+
}
|
|
284
|
+
};
|
|
285
|
+
DisabledItems.parameters = {
|
|
286
|
+
docs: {
|
|
287
|
+
description: {
|
|
288
|
+
story: 'Mark an item disabled with `isDisabled` on its TreeItem. Use the control to compare `disabledBehavior="selection"` (item can still expand and focus) with `disabledBehavior="all"` (item is fully inert).'
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
var CustomItemContent = exports.CustomItemContent = function CustomItemContent() {
|
|
293
|
+
var _useState5 = (0, _react.useState)(richItems),
|
|
294
|
+
_useState6 = (0, _slicedToArray2["default"])(_useState5, 2),
|
|
295
|
+
items = _useState6[0],
|
|
296
|
+
setItems = _useState6[1];
|
|
297
|
+
var updateItem = function updateItem(id, update) {
|
|
298
|
+
var _updateItems = function updateItems(nodes) {
|
|
299
|
+
return (0, _map["default"])(nodes).call(nodes, function (node) {
|
|
300
|
+
if (node.id === id) return update(node);
|
|
301
|
+
return node.children ? _objectSpread(_objectSpread({}, node), {}, {
|
|
302
|
+
children: _updateItems(node.children)
|
|
303
|
+
}) : node;
|
|
304
|
+
});
|
|
305
|
+
};
|
|
306
|
+
setItems(_updateItems);
|
|
307
|
+
};
|
|
308
|
+
var refreshItem = function refreshItem(id) {
|
|
309
|
+
updateItem(id, function (item) {
|
|
310
|
+
return _objectSpread(_objectSpread({}, item), {}, {
|
|
311
|
+
status: 'In progress'
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
};
|
|
315
|
+
var statusIconProps = function statusIconProps(item) {
|
|
316
|
+
return {
|
|
317
|
+
icon: item.color === 'indigo' ? _FormatListGroupIcon["default"] : _PaperclipIcon["default"],
|
|
318
|
+
sx: {
|
|
319
|
+
width: '24px',
|
|
320
|
+
height: '24px',
|
|
321
|
+
minWidth: '24px',
|
|
322
|
+
minHeight: '24px',
|
|
323
|
+
p: '3px',
|
|
324
|
+
borderRadius: '100px',
|
|
325
|
+
boxSizing: 'border-box',
|
|
326
|
+
bg: item.color === 'indigo' ? 'avatar.indigo.bg' : 'avatar.blue.bg',
|
|
327
|
+
color: item.color === 'indigo' ? 'avatar.indigo.text' : 'gray.600',
|
|
328
|
+
'& svg': {
|
|
329
|
+
fill: 'currentColor'
|
|
330
|
+
}
|
|
331
|
+
}
|
|
332
|
+
};
|
|
333
|
+
};
|
|
334
|
+
var _renderEnvironmentItem = function renderEnvironmentItem(item) {
|
|
335
|
+
var _context3, _item$children7, _item$children8;
|
|
336
|
+
return (0, _react2.jsx)(_index.TreeItem, {
|
|
337
|
+
key: item.id,
|
|
338
|
+
id: item.id,
|
|
339
|
+
textValue: (0, _concat["default"])(_context3 = "".concat(item.name, " ")).call(_context3, item.status || ''),
|
|
340
|
+
hasChildItems: Boolean((_item$children7 = item.children) === null || _item$children7 === void 0 ? void 0 : _item$children7.length),
|
|
341
|
+
showDefaultIcon: false,
|
|
342
|
+
showDefaultLock: false
|
|
343
|
+
}, (0, _react2.jsx)(_index.Icon, (0, _extends2["default"])({}, statusIconProps(item), {
|
|
344
|
+
"aria-hidden": "true"
|
|
345
|
+
})), (0, _react2.jsx)(_index.Text, {
|
|
346
|
+
sx: {
|
|
347
|
+
flexShrink: 0
|
|
348
|
+
}
|
|
349
|
+
}, item.name), item.status === 'Healthy' ? (0, _react2.jsx)(_index.Icon, {
|
|
350
|
+
icon: _CheckCircleIcon["default"],
|
|
351
|
+
"aria-label": "Healthy",
|
|
352
|
+
size: "sm",
|
|
353
|
+
sx: {
|
|
354
|
+
color: 'success.bright'
|
|
355
|
+
}
|
|
356
|
+
}) : (0, _react2.jsx)(_index.Icon, {
|
|
357
|
+
icon: _AlertCircleIcon["default"],
|
|
358
|
+
"aria-label": item.status,
|
|
359
|
+
size: "sm",
|
|
360
|
+
sx: {
|
|
361
|
+
color: 'warning.bright'
|
|
362
|
+
}
|
|
363
|
+
}), (0, _react2.jsx)(_index.IconButton, {
|
|
364
|
+
"aria-label": "Refresh ".concat(item.name),
|
|
365
|
+
sx: {
|
|
366
|
+
ml: 'auto',
|
|
367
|
+
alignSelf: 'center',
|
|
368
|
+
width: '24px',
|
|
369
|
+
height: '24px',
|
|
370
|
+
'&.is-focused': {
|
|
371
|
+
outline: 'none'
|
|
372
|
+
},
|
|
373
|
+
'&:focus-visible': {
|
|
374
|
+
outline: 'none'
|
|
375
|
+
}
|
|
376
|
+
},
|
|
377
|
+
onClick: function onClick(event) {
|
|
378
|
+
event.stopPropagation();
|
|
379
|
+
refreshItem(item.id);
|
|
380
|
+
}
|
|
381
|
+
}, (0, _react2.jsx)(_index.Icon, {
|
|
382
|
+
icon: _RefreshIcon["default"],
|
|
383
|
+
"aria-hidden": "true"
|
|
384
|
+
})), (_item$children8 = item.children) === null || _item$children8 === void 0 ? void 0 : (0, _map["default"])(_item$children8).call(_item$children8, _renderEnvironmentItem));
|
|
385
|
+
};
|
|
386
|
+
return (0, _react2.jsx)(_index.Tree, {
|
|
387
|
+
"aria-label": "Environments",
|
|
388
|
+
items: items
|
|
389
|
+
}, _renderEnvironmentItem);
|
|
390
|
+
};
|
|
391
|
+
CustomItemContent.parameters = {
|
|
392
|
+
docs: {
|
|
393
|
+
description: {
|
|
394
|
+
story: 'TreeItem children render directly as row content — no TreeItemContent wrapper needed. The default row scaffolding (selection checkbox, expand chevron) is still provided, while the built-in folder/file and lock icons are turned off with showDefaultIcon and showDefaultLock. Row actions do not select or expand the row because each handler calls event.stopPropagation().'
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
};
|
|
398
|
+
var AsyncChildLoading = exports.AsyncChildLoading = function AsyncChildLoading() {
|
|
399
|
+
var _useState7 = (0, _react.useState)([{
|
|
400
|
+
id: 'region-us',
|
|
401
|
+
name: 'US Region',
|
|
402
|
+
hasLoadedChildren: false,
|
|
403
|
+
canLoadMore: true
|
|
404
|
+
}, {
|
|
405
|
+
id: 'region-eu',
|
|
406
|
+
name: 'EU Region',
|
|
407
|
+
hasLoadedChildren: false,
|
|
408
|
+
canLoadMore: true
|
|
409
|
+
}, {
|
|
410
|
+
id: 'single-tenant',
|
|
411
|
+
name: 'Single Tenant'
|
|
412
|
+
}]),
|
|
413
|
+
_useState8 = (0, _slicedToArray2["default"])(_useState7, 2),
|
|
414
|
+
items = _useState8[0],
|
|
415
|
+
setItems = _useState8[1];
|
|
416
|
+
var _useState9 = (0, _react.useState)(new _set["default"]()),
|
|
417
|
+
_useState0 = (0, _slicedToArray2["default"])(_useState9, 2),
|
|
418
|
+
loadingKeys = _useState0[0],
|
|
419
|
+
setLoadingKeys = _useState0[1];
|
|
420
|
+
var _useState1 = (0, _react.useState)(new _set["default"]()),
|
|
421
|
+
_useState10 = (0, _slicedToArray2["default"])(_useState1, 2),
|
|
422
|
+
expandedKeys = _useState10[0],
|
|
423
|
+
setExpandedKeys = _useState10[1];
|
|
424
|
+
var loadChildren = /*#__PURE__*/function () {
|
|
425
|
+
var _ref4 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee(parent) {
|
|
426
|
+
return _regeneratorRuntime().wrap(function _callee$(_context4) {
|
|
427
|
+
while (1) switch (_context4.prev = _context4.next) {
|
|
428
|
+
case 0:
|
|
429
|
+
_context4.next = 2;
|
|
430
|
+
return new _promise["default"](function (resolve) {
|
|
431
|
+
return (0, _setTimeout2["default"])(resolve, 1000);
|
|
432
|
+
});
|
|
433
|
+
case 2:
|
|
434
|
+
return _context4.abrupt("return", [{
|
|
435
|
+
id: "".concat(parent.id, "-child-1"),
|
|
436
|
+
name: "".concat(parent.name, " Tenant 1")
|
|
437
|
+
}, {
|
|
438
|
+
id: "".concat(parent.id, "-child-2"),
|
|
439
|
+
name: "".concat(parent.name, " Tenant 2")
|
|
440
|
+
}]);
|
|
441
|
+
case 3:
|
|
442
|
+
case "end":
|
|
443
|
+
return _context4.stop();
|
|
444
|
+
}
|
|
445
|
+
}, _callee);
|
|
446
|
+
}));
|
|
447
|
+
return function loadChildren(_x) {
|
|
448
|
+
return _ref4.apply(this, arguments);
|
|
449
|
+
};
|
|
450
|
+
}();
|
|
451
|
+
var handleExpandedChange = /*#__PURE__*/function () {
|
|
452
|
+
var _ref5 = (0, _asyncToGenerator2["default"])(/*#__PURE__*/_regeneratorRuntime().mark(function _callee2(keys) {
|
|
453
|
+
var _context5;
|
|
454
|
+
var newlyExpanded, parent, children;
|
|
455
|
+
return _regeneratorRuntime().wrap(function _callee2$(_context6) {
|
|
456
|
+
while (1) switch (_context6.prev = _context6.next) {
|
|
457
|
+
case 0:
|
|
458
|
+
setExpandedKeys(keys);
|
|
459
|
+
newlyExpanded = (0, _find["default"])(_context5 = (0, _from["default"])(keys)).call(_context5, function (key) {
|
|
460
|
+
return !loadingKeys.has(key) && (0, _some["default"])(items).call(items, function (item) {
|
|
461
|
+
return item.id === key && !item.hasLoadedChildren;
|
|
462
|
+
});
|
|
463
|
+
});
|
|
464
|
+
if (!newlyExpanded) {
|
|
465
|
+
_context6.next = 16;
|
|
466
|
+
break;
|
|
467
|
+
}
|
|
468
|
+
setLoadingKeys(function (prev) {
|
|
469
|
+
return new _set["default"](prev).add(newlyExpanded);
|
|
470
|
+
});
|
|
471
|
+
|
|
472
|
+
// Show a placeholder loading row while children are being fetched.
|
|
473
|
+
setItems(function (currentItems) {
|
|
474
|
+
return (0, _map["default"])(currentItems).call(currentItems, function (item) {
|
|
475
|
+
return item.id === newlyExpanded ? _objectSpread(_objectSpread({}, item), {}, {
|
|
476
|
+
children: [{
|
|
477
|
+
id: "".concat(item.id, "-loading"),
|
|
478
|
+
name: "Loading ".concat(item.name, " children"),
|
|
479
|
+
isPendingRow: true
|
|
480
|
+
}]
|
|
481
|
+
}) : item;
|
|
482
|
+
});
|
|
483
|
+
});
|
|
484
|
+
parent = (0, _find["default"])(items).call(items, function (item) {
|
|
485
|
+
return item.id === newlyExpanded;
|
|
486
|
+
});
|
|
487
|
+
if (!parent) {
|
|
488
|
+
_context6.next = 12;
|
|
489
|
+
break;
|
|
490
|
+
}
|
|
491
|
+
_context6.next = 9;
|
|
492
|
+
return loadChildren(parent);
|
|
493
|
+
case 9:
|
|
494
|
+
_context6.t0 = _context6.sent;
|
|
495
|
+
_context6.next = 13;
|
|
496
|
+
break;
|
|
497
|
+
case 12:
|
|
498
|
+
_context6.t0 = [];
|
|
499
|
+
case 13:
|
|
500
|
+
children = _context6.t0;
|
|
501
|
+
setItems(function (currentItems) {
|
|
502
|
+
return (0, _map["default"])(currentItems).call(currentItems, function (item) {
|
|
503
|
+
return item.id === newlyExpanded ? _objectSpread(_objectSpread({}, item), {}, {
|
|
504
|
+
children: children,
|
|
505
|
+
hasLoadedChildren: true
|
|
506
|
+
}) : item;
|
|
507
|
+
});
|
|
508
|
+
});
|
|
509
|
+
setLoadingKeys(function (prev) {
|
|
510
|
+
var next = new _set["default"](prev);
|
|
511
|
+
next["delete"](newlyExpanded);
|
|
512
|
+
return next;
|
|
513
|
+
});
|
|
514
|
+
case 16:
|
|
515
|
+
case "end":
|
|
516
|
+
return _context6.stop();
|
|
517
|
+
}
|
|
518
|
+
}, _callee2);
|
|
519
|
+
}));
|
|
520
|
+
return function handleExpandedChange(_x2) {
|
|
521
|
+
return _ref5.apply(this, arguments);
|
|
522
|
+
};
|
|
523
|
+
}();
|
|
524
|
+
var _renderAsyncItem = function renderAsyncItem(item) {
|
|
525
|
+
var _item$children9, _item$children0, _item$children1;
|
|
526
|
+
return (0, _react2.jsx)(_index.TreeItem, {
|
|
527
|
+
key: item.id,
|
|
528
|
+
id: item.id,
|
|
529
|
+
textValue: item.name,
|
|
530
|
+
hasChildItems: Boolean((_item$children9 = item.children) === null || _item$children9 === void 0 ? void 0 : _item$children9.length) || item.canLoadMore
|
|
531
|
+
}, item.isPendingRow ? (0, _react2.jsx)(_index.TreeItemContent, {
|
|
532
|
+
showDefaultIcon: false,
|
|
533
|
+
showDefaultLock: false
|
|
534
|
+
}, (0, _react2.jsx)(_index.Loader, {
|
|
535
|
+
"aria-label": "Loading ".concat(item.name),
|
|
536
|
+
sx: {
|
|
537
|
+
p: 'xs'
|
|
538
|
+
}
|
|
539
|
+
})) : (0, _react2.jsx)(_index.TreeItemContent, null, (0, _react2.jsx)(_index.Box, {
|
|
540
|
+
isRow: true,
|
|
541
|
+
flexDirection: "row",
|
|
542
|
+
style: {
|
|
543
|
+
display: 'flex',
|
|
544
|
+
flexDirection: 'row',
|
|
545
|
+
alignItems: 'center',
|
|
546
|
+
flexWrap: 'nowrap',
|
|
547
|
+
whiteSpace: 'nowrap',
|
|
548
|
+
minWidth: 'max-content'
|
|
549
|
+
},
|
|
550
|
+
sx: {
|
|
551
|
+
gap: 'sm',
|
|
552
|
+
alignItems: 'center'
|
|
553
|
+
}
|
|
554
|
+
}, (0, _react2.jsx)(_index.Text, {
|
|
555
|
+
as: "span",
|
|
556
|
+
sx: {
|
|
557
|
+
flex: '0 0 auto',
|
|
558
|
+
whiteSpace: 'nowrap'
|
|
559
|
+
}
|
|
560
|
+
}, item.name))), (_item$children0 = item.children) === null || _item$children0 === void 0 ? void 0 : (0, _map["default"])(_item$children0).call(_item$children0, function (child) {
|
|
561
|
+
return _renderAsyncItem(child);
|
|
562
|
+
}), item.canLoadMore && !item.hasLoadedChildren && !((_item$children1 = item.children) !== null && _item$children1 !== void 0 && _item$children1.length) && (0, _react2.jsx)(_index.TreeLoadMoreItem, {
|
|
563
|
+
onLoadMore: function onLoadMore() {
|
|
564
|
+
setLoadingKeys(function (prev) {
|
|
565
|
+
return new _set["default"](prev).add(item.id);
|
|
566
|
+
});
|
|
567
|
+
loadChildren(item).then(function (children) {
|
|
568
|
+
setItems(function (currentItems) {
|
|
569
|
+
return (0, _map["default"])(currentItems).call(currentItems, function (node) {
|
|
570
|
+
return node.id === item.id ? _objectSpread(_objectSpread({}, node), {}, {
|
|
571
|
+
children: children,
|
|
572
|
+
hasLoadedChildren: true
|
|
573
|
+
}) : node;
|
|
574
|
+
});
|
|
575
|
+
});
|
|
576
|
+
setLoadingKeys(function (prev) {
|
|
577
|
+
var next = new _set["default"](prev);
|
|
578
|
+
next["delete"](item.id);
|
|
579
|
+
return next;
|
|
580
|
+
});
|
|
581
|
+
});
|
|
582
|
+
}
|
|
583
|
+
}));
|
|
584
|
+
};
|
|
585
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
|
|
586
|
+
as: "p"
|
|
587
|
+
}, "Expand a region to load its tenants asynchronously"), (0, _react2.jsx)(_index.Tree, {
|
|
588
|
+
"aria-label": "Async regions",
|
|
589
|
+
items: items,
|
|
590
|
+
expandedKeys: expandedKeys,
|
|
591
|
+
onExpandedChange: handleExpandedChange,
|
|
592
|
+
renderEmptyState: function renderEmptyState() {
|
|
593
|
+
return (0, _react2.jsx)(_index.Loader, {
|
|
594
|
+
"aria-label": "Loading items",
|
|
595
|
+
sx: {
|
|
596
|
+
p: 'sm'
|
|
597
|
+
}
|
|
598
|
+
});
|
|
599
|
+
}
|
|
600
|
+
}, _renderAsyncItem));
|
|
601
|
+
};
|
|
602
|
+
AsyncChildLoading.parameters = {
|
|
603
|
+
docs: {
|
|
604
|
+
description: {
|
|
605
|
+
story: 'Lazily loads children on expand: hook `onExpandedChange`, fetch the parent\'s children, then merge them into the `items` state. A `Loader` shows next to the expanding row and via `renderEmptyState` while items load, and `TreeLoadMoreItem` provides a "load more" affordance for the same pattern.'
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
};
|
|
609
|
+
var makeIsDescendant = function makeIsDescendant(tree) {
|
|
610
|
+
return function (key, ofKey) {
|
|
611
|
+
var node = tree.getItem(key);
|
|
612
|
+
while (node) {
|
|
613
|
+
if (node.key === ofKey) return true;
|
|
614
|
+
node = node.parentKey != null ? tree.getItem(node.parentKey) : undefined;
|
|
615
|
+
}
|
|
616
|
+
return false;
|
|
617
|
+
};
|
|
618
|
+
};
|
|
619
|
+
var dragInitialItems = [{
|
|
620
|
+
id: 'environments',
|
|
621
|
+
name: 'Environments',
|
|
622
|
+
children: [{
|
|
623
|
+
id: 'dev',
|
|
624
|
+
name: 'Development',
|
|
625
|
+
isDragDisabled: true
|
|
626
|
+
}, {
|
|
627
|
+
id: 'qa',
|
|
628
|
+
name: 'QA'
|
|
629
|
+
}]
|
|
630
|
+
}, {
|
|
631
|
+
id: 'tenants',
|
|
632
|
+
name: 'Tenants',
|
|
633
|
+
children: [{
|
|
634
|
+
id: 'tenant-1',
|
|
635
|
+
name: 'Tenant 1'
|
|
636
|
+
}]
|
|
637
|
+
}, {
|
|
638
|
+
id: 'shared-services',
|
|
639
|
+
name: 'Shared Services'
|
|
640
|
+
}];
|
|
641
|
+
var DragAndDrop = exports.DragAndDrop = function DragAndDrop() {
|
|
642
|
+
var initiallyExpandedKeys = ['environments', 'tenants'];
|
|
643
|
+
var tree = (0, _useTreeData.useTreeData)({
|
|
644
|
+
initialItems: dragInitialItems,
|
|
645
|
+
getKey: function getKey(item) {
|
|
646
|
+
return item.id;
|
|
647
|
+
},
|
|
648
|
+
getChildren: function getChildren(item) {
|
|
649
|
+
var _item$children10;
|
|
650
|
+
return (_item$children10 = item.children) !== null && _item$children10 !== void 0 ? _item$children10 : [];
|
|
651
|
+
}
|
|
652
|
+
});
|
|
653
|
+
var isDescendant = makeIsDescendant(tree);
|
|
654
|
+
var _useTreeDragAndDrop = (0, _index.useTreeDragAndDrop)({
|
|
655
|
+
getItems: function getItems(keys, items) {
|
|
656
|
+
return (0, _map["default"])(items).call(items, function (item) {
|
|
657
|
+
return {
|
|
658
|
+
'text/plain': item.value.name
|
|
659
|
+
};
|
|
660
|
+
});
|
|
661
|
+
},
|
|
662
|
+
isDescendant: isDescendant,
|
|
663
|
+
isDisabledDropTarget: function isDisabledDropTarget(key) {
|
|
664
|
+
var _tree$getItem;
|
|
665
|
+
return Boolean((_tree$getItem = tree.getItem(key)) === null || _tree$getItem === void 0 ? void 0 : _tree$getItem.value.isDragDisabled);
|
|
666
|
+
},
|
|
667
|
+
onItemDrop: function onItemDrop(_ref6) {
|
|
668
|
+
var _context7;
|
|
669
|
+
var keys = (0, _keys["default"])(_ref6),
|
|
670
|
+
targetKey = _ref6.targetKey;
|
|
671
|
+
var targetNode = tree.getItem(targetKey);
|
|
672
|
+
var targetIndex = targetNode !== null && targetNode !== void 0 && targetNode.children ? targetNode.children.length : 0;
|
|
673
|
+
(0, _forEach["default"])(_context7 = (0, _from["default"])(keys)).call(_context7, function (key, index) {
|
|
674
|
+
tree.move(key, targetKey, targetIndex + index);
|
|
675
|
+
});
|
|
676
|
+
},
|
|
677
|
+
onReorder: function onReorder(_ref7) {
|
|
678
|
+
var keys = (0, _keys["default"])(_ref7),
|
|
679
|
+
targetKey = _ref7.targetKey,
|
|
680
|
+
dropPosition = _ref7.dropPosition;
|
|
681
|
+
if (dropPosition === 'before') {
|
|
682
|
+
tree.moveBefore(targetKey, keys);
|
|
683
|
+
} else {
|
|
684
|
+
tree.moveAfter(targetKey, keys);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
}),
|
|
688
|
+
dragAndDropHooks = _useTreeDragAndDrop.dragAndDropHooks;
|
|
689
|
+
var _renderDragItem = function renderDragItem(item) {
|
|
690
|
+
var _item$children11, _item$children12;
|
|
691
|
+
return (0, _react2.jsx)(_index.TreeItem, {
|
|
692
|
+
key: item.key,
|
|
693
|
+
id: item.key,
|
|
694
|
+
textValue: item.value.name,
|
|
695
|
+
isDisabled: item.value.isDragDisabled,
|
|
696
|
+
hasChildItems: Boolean((_item$children11 = item.children) === null || _item$children11 === void 0 ? void 0 : _item$children11.length)
|
|
697
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, item.value.name), (_item$children12 = item.children) === null || _item$children12 === void 0 ? void 0 : (0, _map["default"])(_item$children12).call(_item$children12, _renderDragItem));
|
|
698
|
+
};
|
|
699
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
|
|
700
|
+
as: "p"
|
|
701
|
+
}, "Drag an item onto another to make it a child, or between siblings to reorder. Keyboard dragging works too: focus the drag handle, press Enter to start a drag session, arrow to a target, and Enter again to drop. Self-drops, descendant drops, and the disabled Development item are rejected."), (0, _react2.jsx)(_index.Tree, {
|
|
702
|
+
"aria-label": "Draggable services",
|
|
703
|
+
selectionMode: "multiple",
|
|
704
|
+
items: tree.items,
|
|
705
|
+
dragAndDropHooks: dragAndDropHooks,
|
|
706
|
+
defaultExpandedKeys: initiallyExpandedKeys
|
|
707
|
+
}, function (item) {
|
|
708
|
+
return _renderDragItem(item);
|
|
709
|
+
}));
|
|
710
|
+
};
|
|
711
|
+
DragAndDrop.parameters = {
|
|
712
|
+
docs: {
|
|
713
|
+
description: {
|
|
714
|
+
story: 'Full drag-and-drop via `useTreeDragAndDrop`: `onItemDrop` re-parents items dropped onto a target, `onReorder` moves items before/after siblings (backed by `useTreeData`\'s `move`/`moveBefore`/`moveAfter`). Self-drops, descendant/cycle drops, and disabled targets are rejected automatically.'
|
|
715
|
+
}
|
|
716
|
+
}
|
|
717
|
+
};
|
|
718
|
+
var DragAndDropReparentOnly = exports.DragAndDropReparentOnly = function DragAndDropReparentOnly() {
|
|
719
|
+
var initiallyExpandedKeys = ['environments', 'tenants'];
|
|
720
|
+
var tree = (0, _useTreeData.useTreeData)({
|
|
721
|
+
initialItems: dragInitialItems,
|
|
722
|
+
getKey: function getKey(item) {
|
|
723
|
+
return item.id;
|
|
724
|
+
},
|
|
725
|
+
getChildren: function getChildren(item) {
|
|
726
|
+
var _item$children13;
|
|
727
|
+
return (_item$children13 = item.children) !== null && _item$children13 !== void 0 ? _item$children13 : [];
|
|
728
|
+
}
|
|
729
|
+
});
|
|
730
|
+
var isDescendant = makeIsDescendant(tree);
|
|
731
|
+
|
|
732
|
+
// No onReorder handler: before/after drops become no-ops, drop-on still re-parents.
|
|
733
|
+
var _useTreeDragAndDrop2 = (0, _index.useTreeDragAndDrop)({
|
|
734
|
+
getItems: function getItems(keys, items) {
|
|
735
|
+
return (0, _map["default"])(items).call(items, function (item) {
|
|
736
|
+
return {
|
|
737
|
+
'text/plain': item.value.name
|
|
738
|
+
};
|
|
739
|
+
});
|
|
740
|
+
},
|
|
741
|
+
isDescendant: isDescendant,
|
|
742
|
+
isDisabledDropTarget: function isDisabledDropTarget(key) {
|
|
743
|
+
var _tree$getItem2;
|
|
744
|
+
return Boolean((_tree$getItem2 = tree.getItem(key)) === null || _tree$getItem2 === void 0 ? void 0 : _tree$getItem2.value.isDragDisabled);
|
|
745
|
+
},
|
|
746
|
+
onItemDrop: function onItemDrop(_ref8) {
|
|
747
|
+
var _context8;
|
|
748
|
+
var keysToMove = (0, _keys["default"])(_ref8),
|
|
749
|
+
targetKey = _ref8.targetKey;
|
|
750
|
+
var targetNode = tree.getItem(targetKey);
|
|
751
|
+
var targetIndex = targetNode !== null && targetNode !== void 0 && targetNode.children ? targetNode.children.length : 0;
|
|
752
|
+
(0, _forEach["default"])(_context8 = (0, _from["default"])(keysToMove)).call(_context8, function (key, index) {
|
|
753
|
+
tree.move(key, targetKey, targetIndex + index);
|
|
754
|
+
});
|
|
755
|
+
}
|
|
756
|
+
}),
|
|
757
|
+
dragAndDropHooks = _useTreeDragAndDrop2.dragAndDropHooks;
|
|
758
|
+
var _renderDragItem2 = function renderDragItem(item) {
|
|
759
|
+
var _item$children14, _item$children15;
|
|
760
|
+
return (0, _react2.jsx)(_index.TreeItem, {
|
|
761
|
+
key: item.key,
|
|
762
|
+
id: item.key,
|
|
763
|
+
textValue: item.value.name,
|
|
764
|
+
isDisabled: item.value.isDragDisabled,
|
|
765
|
+
hasChildItems: Boolean((_item$children14 = item.children) === null || _item$children14 === void 0 ? void 0 : _item$children14.length)
|
|
766
|
+
}, (0, _react2.jsx)(_index.TreeItemContent, null, item.value.name), (_item$children15 = item.children) === null || _item$children15 === void 0 ? void 0 : (0, _map["default"])(_item$children15).call(_item$children15, _renderDragItem2));
|
|
767
|
+
};
|
|
768
|
+
return (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Text, {
|
|
769
|
+
as: "p"
|
|
770
|
+
}, "Drop-on only: dragging an item onto another re-parents it. Sibling reordering is disabled \u2014 no", ' ', (0, _react2.jsx)("code", null, "onReorder"), ' ', "handler is supplied, so dropping between siblings does nothing. Keyboard flow: focus the drag handle, Enter to start the drag session, arrows to a target (only drop-on targets are offered), Enter to drop. Self-drops, descendant drops, and the disabled Development item are rejected."), (0, _react2.jsx)(_index.Tree, {
|
|
771
|
+
"aria-label": "Draggable services (re-parent only)",
|
|
772
|
+
selectionMode: "multiple",
|
|
773
|
+
items: tree.items,
|
|
774
|
+
dragAndDropHooks: dragAndDropHooks,
|
|
775
|
+
defaultExpandedKeys: initiallyExpandedKeys
|
|
776
|
+
}, function (item) {
|
|
777
|
+
return _renderDragItem2(item);
|
|
778
|
+
}));
|
|
779
|
+
};
|
|
780
|
+
DragAndDropReparentOnly.parameters = {
|
|
781
|
+
docs: {
|
|
782
|
+
description: {
|
|
783
|
+
story: 'Same setup as DragAndDrop but without an `onReorder` handler — sibling reordering becomes a no-op, so only drop-on (re-parent) gestures update the tree. Omit `onReorder` when your data model only supports nesting.'
|
|
784
|
+
}
|
|
785
|
+
}
|
|
786
|
+
};
|