@itwin/itwinui-react 1.31.0 → 1.33.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.
Files changed (78) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/cjs/core/ButtonGroup/ButtonGroup.d.ts +8 -1
  3. package/cjs/core/ButtonGroup/ButtonGroup.js +7 -3
  4. package/cjs/core/Checkbox/Checkbox.d.ts +13 -0
  5. package/cjs/core/Checkbox/Checkbox.js +15 -22
  6. package/cjs/core/ColorPicker/ColorSwatch.d.ts +1 -1
  7. package/cjs/core/ComboBox/ComboBox.d.ts +17 -1
  8. package/cjs/core/ComboBox/ComboBox.js +55 -20
  9. package/cjs/core/ExpandableBlock/ExpandableBlock.d.ts +6 -0
  10. package/cjs/core/ExpandableBlock/ExpandableBlock.js +3 -2
  11. package/cjs/core/Footer/Footer.d.ts +14 -2
  12. package/cjs/core/Footer/Footer.js +40 -17
  13. package/cjs/core/InputGroup/InputGroup.js +12 -2
  14. package/cjs/core/LabeledSelect/LabeledSelect.js +10 -4
  15. package/cjs/core/Menu/Menu.js +3 -3
  16. package/cjs/core/Menu/MenuItem.js +1 -1
  17. package/cjs/core/Radio/Radio.d.ts +13 -0
  18. package/cjs/core/Radio/Radio.js +7 -8
  19. package/cjs/core/StatusMessage/StatusMessage.d.ts +24 -0
  20. package/cjs/core/StatusMessage/StatusMessage.js +39 -0
  21. package/cjs/core/StatusMessage/index.d.ts +4 -0
  22. package/cjs/core/StatusMessage/index.js +10 -0
  23. package/cjs/core/Table/filters/DateRangeFilter/DatePickerInput.js +1 -1
  24. package/cjs/core/Tree/Tree.d.ts +123 -0
  25. package/cjs/core/Tree/Tree.js +177 -0
  26. package/cjs/core/Tree/TreeContext.d.ts +25 -0
  27. package/cjs/core/Tree/TreeContext.js +20 -0
  28. package/cjs/core/Tree/TreeNode.d.ts +87 -0
  29. package/cjs/core/Tree/TreeNode.js +169 -0
  30. package/cjs/core/Tree/TreeNodeExpander.d.ts +8 -0
  31. package/cjs/core/Tree/TreeNodeExpander.js +46 -0
  32. package/cjs/core/Tree/index.d.ts +6 -0
  33. package/cjs/core/Tree/index.js +13 -0
  34. package/cjs/core/index.d.ts +4 -0
  35. package/cjs/core/index.js +7 -1
  36. package/cjs/core/utils/components/InputContainer.d.ts +1 -0
  37. package/cjs/core/utils/components/InputContainer.js +8 -7
  38. package/cjs/core/utils/components/Popover.js +1 -1
  39. package/cjs/core/utils/functions/focusable.js +6 -2
  40. package/esm/core/ButtonGroup/ButtonGroup.d.ts +8 -1
  41. package/esm/core/ButtonGroup/ButtonGroup.js +7 -3
  42. package/esm/core/Checkbox/Checkbox.d.ts +13 -0
  43. package/esm/core/Checkbox/Checkbox.js +15 -22
  44. package/esm/core/ColorPicker/ColorSwatch.d.ts +1 -1
  45. package/esm/core/ComboBox/ComboBox.d.ts +17 -1
  46. package/esm/core/ComboBox/ComboBox.js +56 -21
  47. package/esm/core/ExpandableBlock/ExpandableBlock.d.ts +6 -0
  48. package/esm/core/ExpandableBlock/ExpandableBlock.js +3 -2
  49. package/esm/core/Footer/Footer.d.ts +14 -2
  50. package/esm/core/Footer/Footer.js +40 -17
  51. package/esm/core/InputGroup/InputGroup.js +12 -2
  52. package/esm/core/LabeledSelect/LabeledSelect.js +10 -4
  53. package/esm/core/Menu/Menu.js +3 -3
  54. package/esm/core/Menu/MenuItem.js +1 -1
  55. package/esm/core/Radio/Radio.d.ts +13 -0
  56. package/esm/core/Radio/Radio.js +7 -8
  57. package/esm/core/StatusMessage/StatusMessage.d.ts +24 -0
  58. package/esm/core/StatusMessage/StatusMessage.js +32 -0
  59. package/esm/core/StatusMessage/index.d.ts +4 -0
  60. package/esm/core/StatusMessage/index.js +6 -0
  61. package/esm/core/Table/filters/DateRangeFilter/DatePickerInput.js +1 -1
  62. package/esm/core/Tree/Tree.d.ts +123 -0
  63. package/esm/core/Tree/Tree.js +170 -0
  64. package/esm/core/Tree/TreeContext.d.ts +25 -0
  65. package/esm/core/Tree/TreeContext.js +13 -0
  66. package/esm/core/Tree/TreeNode.d.ts +87 -0
  67. package/esm/core/Tree/TreeNode.js +162 -0
  68. package/esm/core/Tree/TreeNodeExpander.d.ts +8 -0
  69. package/esm/core/Tree/TreeNodeExpander.js +39 -0
  70. package/esm/core/Tree/index.d.ts +6 -0
  71. package/esm/core/Tree/index.js +7 -0
  72. package/esm/core/index.d.ts +4 -0
  73. package/esm/core/index.js +2 -0
  74. package/esm/core/utils/components/InputContainer.d.ts +1 -0
  75. package/esm/core/utils/components/InputContainer.js +8 -7
  76. package/esm/core/utils/components/Popover.js +1 -1
  77. package/esm/core/utils/functions/focusable.js +6 -2
  78. package/package.json +2 -2
package/esm/core/index.js CHANGED
@@ -34,6 +34,7 @@ export { RadioTile, RadioTileGroup } from './RadioTiles';
34
34
  export { Select } from './Select';
35
35
  export { SideNavigation, SidenavButton, SidenavSubmenu, SidenavSubmenuHeader, } from './SideNavigation';
36
36
  export { Slider } from './Slider';
37
+ export { StatusMessage } from './StatusMessage';
37
38
  export { Table, tableFilters, FilterButtonBar, DefaultCell, EditableCell, TablePaginator, } from './Table';
38
39
  export { Tag, TagContainer } from './Tag';
39
40
  export { Textarea } from './Textarea';
@@ -43,6 +44,7 @@ export { default as toaster } from './Toast';
43
44
  export { ThemeProvider } from './ThemeProvider';
44
45
  export { ToggleSwitch } from './ToggleSwitch';
45
46
  export { Tooltip } from './Tooltip';
47
+ export { Tree, TreeNode, TreeNodeExpander } from './Tree';
46
48
  export { Anchor, Body, Headline, Leading, Small, Subheading, Title, Blockquote, Code, Kbd, KbdKeys, Text, } from './Typography';
47
49
  export { UserIcon } from './UserIcon';
48
50
  export { UserIconGroup } from './UserIconGroup';
@@ -9,6 +9,7 @@ export declare type InputContainerProps<T extends React.ElementType = 'div'> = {
9
9
  icon?: JSX.Element;
10
10
  isLabelInline?: boolean;
11
11
  isIconInline?: boolean;
12
+ statusMessage?: React.ReactNode;
12
13
  } & React.ComponentPropsWithoutRef<T>;
13
14
  /**
14
15
  * Input container to wrap inputs with label, and add optional message and icon.
@@ -33,22 +33,23 @@ import cx from 'classnames';
33
33
  export var InputContainer = function (props) {
34
34
  var _a;
35
35
  var _b;
36
- var _c = props.as, Element = _c === void 0 ? 'div' : _c, label = props.label, disabled = props.disabled, required = props.required, status = props.status, message = props.message, icon = props.icon, isLabelInline = props.isLabelInline, isIconInline = props.isIconInline, children = props.children, className = props.className, style = props.style, rest = __rest(props, ["as", "label", "disabled", "required", "status", "message", "icon", "isLabelInline", "isIconInline", "children", "className", "style"]);
36
+ var _c = props.as, Element = _c === void 0 ? 'div' : _c, label = props.label, disabled = props.disabled, required = props.required, status = props.status, message = props.message, icon = props.icon, isLabelInline = props.isLabelInline, isIconInline = props.isIconInline, children = props.children, className = props.className, style = props.style, statusMessage = props.statusMessage, rest = __rest(props, ["as", "label", "disabled", "required", "status", "message", "icon", "isLabelInline", "isIconInline", "children", "className", "style", "statusMessage"]);
37
37
  return (React.createElement(Element, __assign({ className: cx('iui-input-container', (_a = {
38
38
  'iui-disabled': disabled
39
39
  },
40
40
  _a["iui-" + status] = !!status,
41
41
  _a['iui-inline-label'] = isLabelInline,
42
42
  _a['iui-inline-icon'] = isIconInline,
43
- _a['iui-with-message'] = !!message && !isLabelInline,
43
+ _a['iui-with-message'] = (!!message || !!icon || !!statusMessage) && !isLabelInline,
44
44
  _a), className), style: style }, rest),
45
45
  label && (React.createElement("div", { className: cx('iui-label', {
46
46
  'iui-required': required,
47
47
  }) }, label)),
48
48
  children,
49
- icon &&
50
- React.cloneElement(icon, {
51
- className: cx('iui-input-icon', (_b = icon.props) === null || _b === void 0 ? void 0 : _b.className),
52
- }),
53
- message && !isLabelInline && (React.createElement("div", { className: 'iui-message' }, message))));
49
+ statusMessage ? (statusMessage) : (React.createElement(React.Fragment, null,
50
+ icon &&
51
+ React.cloneElement(icon, {
52
+ className: cx('iui-input-icon', (_b = icon.props) === null || _b === void 0 ? void 0 : _b.className),
53
+ }),
54
+ message && !isLabelInline && (React.createElement("div", { className: 'iui-message' }, message))))));
54
55
  };
@@ -53,7 +53,7 @@ export var Popover = React.forwardRef(function (props, ref) {
53
53
  },
54
54
  }); },
55
55
  };
56
- var computedProps = __assign(__assign({ allowHTML: true, animation: false, appendTo: 'parent', arrow: false, duration: 0, interactive: true, role: undefined, offset: [0, 0], maxWidth: '' }, props), { className: cx('iui-popover', props.className), plugins: __spreadArray([
56
+ var computedProps = __assign(__assign({ allowHTML: true, animation: false, appendTo: function (el) { return el.ownerDocument.body; }, arrow: false, duration: 0, interactive: true, role: undefined, offset: [0, 0], maxWidth: '', zIndex: 99999 }, props), { className: cx('iui-popover', props.className), plugins: __spreadArray([
57
57
  lazyLoad,
58
58
  removeTabIndex,
59
59
  hideOnEscOrTab
@@ -12,7 +12,9 @@ export var getTabbableElements = function (container) {
12
12
  }
13
13
  var elements = container.querySelectorAll(tabbableElementsSelector);
14
14
  return Array.from(elements).filter(function (el) {
15
- return !el.hasAttribute('disabled') && !el.classList.contains('iui-disabled');
15
+ return !el.hasAttribute('disabled') &&
16
+ !el.classList.contains('iui-disabled') &&
17
+ el.getAttribute('aria-disabled') !== 'true';
16
18
  });
17
19
  };
18
20
  /**
@@ -24,6 +26,8 @@ export var getFocusableElements = function (container) {
24
26
  }
25
27
  var elements = container.querySelectorAll(tabbableElementsSelector + ", [tabindex=\"-1\"]");
26
28
  return Array.from(elements).filter(function (el) {
27
- return !el.hasAttribute('disabled') && !el.classList.contains('iui-disabled');
29
+ return !el.hasAttribute('disabled') &&
30
+ !el.classList.contains('iui-disabled') &&
31
+ el.getAttribute('aria-disabled') !== 'true';
28
32
  });
29
33
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itwin/itwinui-react",
3
- "version": "1.31.0",
3
+ "version": "1.33.0",
4
4
  "author": "Bentley Systems",
5
5
  "license": "MIT",
6
6
  "main": "cjs/index.js",
@@ -40,7 +40,7 @@
40
40
  "build-storybook": "build-storybook"
41
41
  },
42
42
  "dependencies": {
43
- "@itwin/itwinui-css": "^0.47.0",
43
+ "@itwin/itwinui-css": "^0.50.0",
44
44
  "@itwin/itwinui-icons-react": "^1.5.0",
45
45
  "@itwin/itwinui-illustrations-react": "^1.0.1",
46
46
  "@tippyjs/react": "^4.2.5",