@pingux/astro 2.20.0-alpha.7 → 2.20.0-alpha.9

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.
@@ -0,0 +1,60 @@
1
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
+ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
3
+ import React, { forwardRef, useImperativeHandle, useRef } from 'react';
4
+ import FileIcon from '@pingux/mdi-react/FileIcon';
5
+ import PropTypes from 'prop-types';
6
+ import { useTreeViewContext } from '../../context/TreeViewContext';
7
+ import { Box } from '../../index';
8
+ import TreeViewRow from './TreeViewRow';
9
+ import { jsx as ___EmotionJSX } from "@emotion/react";
10
+ var TreeViewItem = /*#__PURE__*/forwardRef(function (props, ref) {
11
+ var _context, _context2, _context3;
12
+ var item = props.item,
13
+ title = props.title;
14
+ var treeItemRef = useRef();
15
+ /* istanbul ignore next */
16
+ useImperativeHandle(ref, function () {
17
+ return treeItemRef.current;
18
+ });
19
+ var _useTreeViewContext = useTreeViewContext(),
20
+ state = _useTreeViewContext.state,
21
+ tree = _useTreeViewContext.tree;
22
+ var isExpanded = _includesInstanceProperty(_context = _Array$from(state.expandedKeys)).call(_context, item.key);
23
+ var isSelected = _includesInstanceProperty(_context2 = _Array$from(tree.selectedKeys)).call(_context2, item.key);
24
+ var isDisabled = _includesInstanceProperty(_context3 = _Array$from(state.disabledKeys)).call(_context3, item.key);
25
+
26
+ // this component may seem unnecessary, but it will be where the
27
+ // useOption and dragAndDrop stuff will go
28
+ // this comment will be removed at that time.
29
+
30
+ return ___EmotionJSX(Box, {
31
+ as: "li",
32
+ isRow: true,
33
+ ref: treeItemRef,
34
+ role: "treeitem",
35
+ "aria-selected": isSelected,
36
+ "aria-disabled": isDisabled,
37
+ sx: {
38
+ width: '100%',
39
+ ml: '36px',
40
+ ':not(:last-child)': {
41
+ pb: 'sm'
42
+ }
43
+ }
44
+ }, ___EmotionJSX(TreeViewRow, {
45
+ item: item,
46
+ title: title,
47
+ mainIcon: FileIcon,
48
+ isSelected: isSelected,
49
+ isExpanded: isExpanded,
50
+ isDisabled: isDisabled
51
+ }));
52
+ });
53
+ TreeViewItem.propTypes = {
54
+ item: PropTypes.shape({
55
+ key: PropTypes.string
56
+ }),
57
+ name: PropTypes.string,
58
+ title: PropTypes.string
59
+ };
60
+ export default TreeViewItem;
@@ -0,0 +1,135 @@
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 _defineProperty from "@babel/runtime-corejs3/helpers/esm/defineProperty";
11
+ import _objectWithoutProperties from "@babel/runtime-corejs3/helpers/esm/objectWithoutProperties";
12
+ var _excluded = ["title", "mainIcon", "lastIcon", "item", "items", "isExpanded", "isSelected", "isDisabled", "iconButtonProps"];
13
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
14
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { _defineProperty(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
15
+ import React, { forwardRef, useImperativeHandle, useRef } from 'react';
16
+ import FolderIcon from '@pingux/mdi-react/FolderIcon';
17
+ import LockIcon from '@pingux/mdi-react/LockIcon';
18
+ import MenuDownIcon from '@pingux/mdi-react/MenuDownIcon';
19
+ import MenuRight from '@pingux/mdi-react/MenuRightIcon';
20
+ import { useHover, usePress } from '@react-aria/interactions';
21
+ import { mergeProps } from '@react-aria/utils';
22
+ import PropTypes from 'prop-types';
23
+ import { useTreeViewContext } from '../../context/TreeViewContext';
24
+ import { useStatusClasses } from '../../hooks';
25
+ import { Box, Icon, IconButtonToggle, Text } from '../../index';
26
+ import { jsx as ___EmotionJSX } from "@emotion/react";
27
+ var TreeViewRow = /*#__PURE__*/forwardRef(function (props, ref) {
28
+ var title = props.title,
29
+ _props$mainIcon = props.mainIcon,
30
+ mainIcon = _props$mainIcon === void 0 ? FolderIcon : _props$mainIcon,
31
+ _props$lastIcon = props.lastIcon,
32
+ lastIcon = _props$lastIcon === void 0 ? LockIcon : _props$lastIcon,
33
+ item = props.item,
34
+ items = props.items,
35
+ isExpanded = props.isExpanded,
36
+ isSelected = props.isSelected,
37
+ isDisabled = props.isDisabled,
38
+ iconButtonProps = props.iconButtonProps,
39
+ others = _objectWithoutProperties(props, _excluded);
40
+ var treeRowRef = useRef();
41
+ /* istanbul ignore next */
42
+ useImperativeHandle(ref, function () {
43
+ return treeRowRef.current;
44
+ });
45
+ var key = item.key;
46
+ var _useTreeViewContext = useTreeViewContext(),
47
+ state = _useTreeViewContext.state,
48
+ tree = _useTreeViewContext.tree;
49
+ var _useHover = useHover({}),
50
+ hoverProps = _useHover.hoverProps,
51
+ isHovered = _useHover.isHovered;
52
+ var pressIcon = function pressIcon(e) {
53
+ state.toggleKey(item.key);
54
+ if (iconButtonProps !== null && iconButtonProps !== void 0 && iconButtonProps.onPress) {
55
+ iconButtonProps.onPress(e);
56
+ }
57
+ };
58
+ var pressRow = function pressRow() {
59
+ tree.setSelectedKeys([item.key]);
60
+ };
61
+ var _usePress = usePress(_objectSpread(_objectSpread({}, others), {}, {
62
+ ref: treeRowRef,
63
+ onPress: pressRow
64
+ })),
65
+ isPressed = _usePress.isPressed,
66
+ pressProps = _usePress.pressProps;
67
+ var _useStatusClasses = useStatusClasses('', {
68
+ isHovered: isHovered,
69
+ isSelected: isSelected,
70
+ isExpanded: isExpanded,
71
+ isPressed: isPressed,
72
+ isDisabled: isDisabled
73
+ }),
74
+ classNames = _useStatusClasses.classNames;
75
+ var mergedProps = mergeProps(hoverProps, pressProps, others);
76
+ return ___EmotionJSX(Box, _extends({
77
+ ref: treeRowRef,
78
+ isRow: true,
79
+ alignItems: "center",
80
+ gap: "xs",
81
+ sx: {
82
+ flexGrow: 1
83
+ },
84
+ className: classNames,
85
+ key: "".concat(key, " box")
86
+ }, mergedProps), (items === null || items === void 0 ? void 0 : items.length) > 0 && ___EmotionJSX(IconButtonToggle, {
87
+ onToggle: pressIcon,
88
+ isToggled: isExpanded,
89
+ defaultIcon: MenuRight,
90
+ toggledIcon: MenuDownIcon,
91
+ iconProps: {
92
+ size: 25,
93
+ title: "".concat(title, " expand or collapse button")
94
+ },
95
+ buttonProps: {
96
+ 'aria-label': "".concat(title, " expand or collapse button")
97
+ }
98
+ }), ___EmotionJSX(Box, {
99
+ isRow: true,
100
+ className: classNames,
101
+ alignItems: "center",
102
+ gap: "xs",
103
+ variant: "treeView.treeRow"
104
+ }, ___EmotionJSX(Icon, {
105
+ color: "focus",
106
+ icon: mainIcon,
107
+ size: 25,
108
+ title: "folder icon",
109
+ alt: "folder icon"
110
+ }), ___EmotionJSX(Text, {
111
+ className: classNames
112
+ }, title), ___EmotionJSX(Icon, {
113
+ icon: lastIcon,
114
+ size: 15,
115
+ color: "accent.80",
116
+ title: "lock icon",
117
+ alt: "lock icon"
118
+ })));
119
+ });
120
+ TreeViewRow.propTypes = {
121
+ isSelected: PropTypes.bool,
122
+ isDisabled: PropTypes.bool,
123
+ isExpanded: PropTypes.bool,
124
+ title: PropTypes.string,
125
+ items: PropTypes.arrayOf(PropTypes.shape({})),
126
+ iconButtonProps: PropTypes.shape({
127
+ onPress: PropTypes.func
128
+ }),
129
+ item: PropTypes.shape({
130
+ key: PropTypes.string
131
+ }),
132
+ mainIcon: PropTypes.elementType,
133
+ lastIcon: PropTypes.elementType
134
+ };
135
+ export default TreeViewRow;
@@ -0,0 +1,74 @@
1
+ import _includesInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/includes";
2
+ import _Array$from from "@babel/runtime-corejs3/core-js-stable/array/from";
3
+ import _mapInstanceProperty from "@babel/runtime-corejs3/core-js-stable/instance/map";
4
+ import React, { forwardRef, useImperativeHandle, useRef } from 'react';
5
+ import PropTypes from 'prop-types';
6
+ import { useTreeViewContext } from '../../context/TreeViewContext';
7
+ import { Box, TreeViewItem } from '../../index';
8
+ import { SectionOrItemRender } from './TreeView';
9
+ import TreeViewRow from './TreeViewRow';
10
+ import { jsx as ___EmotionJSX } from "@emotion/react";
11
+ var TreeViewSection = /*#__PURE__*/forwardRef(function (props, ref) {
12
+ var _context, _context2, _context3, _context4;
13
+ var item = props.item,
14
+ items = props.items,
15
+ title = props.title;
16
+ var treeSectionRef = useRef();
17
+ /* istanbul ignore next */
18
+ useImperativeHandle(ref, function () {
19
+ return treeSectionRef.current;
20
+ });
21
+ var _useTreeViewContext = useTreeViewContext(),
22
+ state = _useTreeViewContext.state,
23
+ tree = _useTreeViewContext.tree;
24
+ var isExpanded = _includesInstanceProperty(_context = _Array$from(state.expandedKeys)).call(_context, item.key);
25
+ var isSelected = _includesInstanceProperty(_context2 = _Array$from(tree.selectedKeys)).call(_context2, item.key);
26
+ var isDisabled = _includesInstanceProperty(_context3 = _Array$from(state.disabledKeys)).call(_context3, item.key);
27
+ return ___EmotionJSX(Box, {
28
+ ref: treeSectionRef,
29
+ as: "li",
30
+ sx: {
31
+ ':not(:last-child)': {
32
+ pb: 'sm'
33
+ }
34
+ },
35
+ role: "treeitem",
36
+ "aria-expanded": isExpanded,
37
+ "aria-selected": isSelected,
38
+ "aria-disabled": isDisabled
39
+ }, ___EmotionJSX(TreeViewRow, {
40
+ item: item,
41
+ title: title,
42
+ items: items,
43
+ isExpanded: isExpanded,
44
+ isSelected: isSelected,
45
+ isDisabled: isDisabled
46
+ }), isExpanded && ___EmotionJSX(Box, {
47
+ as: "ul",
48
+ role: "group",
49
+ key: "".concat(item.key, " ul"),
50
+ sx: {
51
+ pl: 'md'
52
+ }
53
+ }, _mapInstanceProperty(_context4 = _Array$from(items)).call(_context4, function (_item) {
54
+ var _item$value$items;
55
+ return SectionOrItemRender(((_item$value$items = _item.value.items) === null || _item$value$items === void 0 ? void 0 : _item$value$items.length) > 0, ___EmotionJSX(TreeViewSection, {
56
+ item: _item,
57
+ items: _item.children,
58
+ title: _item.value.title,
59
+ key: _item.value.title
60
+ }), ___EmotionJSX(TreeViewItem, {
61
+ item: _item,
62
+ title: _item.value.title,
63
+ key: _item.value.title
64
+ }));
65
+ })));
66
+ });
67
+ TreeViewSection.propTypes = {
68
+ items: PropTypes.arrayOf(PropTypes.shape({})),
69
+ item: PropTypes.shape({
70
+ key: PropTypes.string
71
+ }),
72
+ title: PropTypes.string
73
+ };
74
+ export default TreeViewSection;
@@ -0,0 +1,3 @@
1
+ export { default } from './TreeView';
2
+ export { default as TreeViewItem } from './TreeViewItem';
3
+ export { default as TreeViewSection } from './TreeViewSection';
@@ -0,0 +1,5 @@
1
+ import { createContext, useContext } from 'react';
2
+ export var TreeViewContext = /*#__PURE__*/createContext(null);
3
+ export var useTreeViewContext = function useTreeViewContext() {
4
+ return useContext(TreeViewContext);
5
+ };
package/lib/index.js CHANGED
@@ -163,6 +163,8 @@ export * from './components/TextField';
163
163
  export { default as TimeZonePicker } from './components/TimeZonePicker';
164
164
  export { default as TooltipTrigger } from './components/TooltipTrigger';
165
165
  export * from './components/TooltipTrigger';
166
+ export { default as TreeView } from './components/TreeView';
167
+ export * from './components/TreeView';
166
168
  export { default as PageHeader } from './experimental/PageHeader';
167
169
  export * from './experimental/PageHeader';
168
170
 
@@ -172,7 +174,7 @@ export { default as DataTable } from './components/DataTable';
172
174
  export * from './components/DataTable';
173
175
  export * from './types';
174
176
  export { OverlayProvider, useOverlayPosition, useOverlayTrigger } from 'react-aria';
175
- export { Item, Section, useOverlayTriggerState } from 'react-stately';
177
+ export { Item, Section, useOverlayTriggerState, useTreeData } from 'react-stately';
176
178
  export { TableBody as DataTableBody, Cell as DataTableCell, Column as DataTableColumn, TableHeader as DataTableHeader, Row as DataTableRow } from 'react-stately';
177
179
 
178
180
  // Experimental
@@ -45,6 +45,7 @@ import table from '../../components/Table/Table.styles';
45
45
  import * as tab from '../../components/Tabs/Tabs.style';
46
46
  import timeZone from '../../components/TimeZonePicker/TimeZone.styles';
47
47
  import tooltip from '../../components/TooltipTrigger/Tooltip.styles';
48
+ import treeView from '../../components/TreeView/TreeView.styles';
48
49
  import panelHeader from '../../experimental/PanelHeader/PanelHeader.styles';
49
50
  export default _objectSpread({
50
51
  accordion: accordion,
@@ -82,5 +83,6 @@ export default _objectSpread({
82
83
  stepper: stepper,
83
84
  table: table,
84
85
  timeZone: timeZone,
85
- tooltip: tooltip
86
+ tooltip: tooltip,
87
+ treeView: treeView
86
88
  }, tab);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pingux/astro",
3
- "version": "2.20.0-alpha.7",
3
+ "version": "2.20.0-alpha.9",
4
4
  "description": "React component library for Ping Identity's design system",
5
5
  "repository": {
6
6
  "type": "git",