@snack-uikit/tree 0.8.14 → 0.8.16

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/CHANGELOG.md CHANGED
@@ -3,6 +3,28 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 0.8.16 (2024-12-27)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **PDS-1315:** tree radio selected element parents ([fae6416](https://github.com/cloud-ru-tech/snack-uikit/commit/fae64165834b2eaa32c66eccad01178ab321436e))
12
+
13
+
14
+
15
+
16
+
17
+ ## 0.8.15 (2024-12-26)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * **FF-5734:** eslint fixes ([5ce6f1f](https://github.com/cloud-ru-tech/snack-uikit/commit/5ce6f1f22d3ac3dd367cbdd184e5873e67837c8b))
23
+
24
+
25
+
26
+
27
+
6
28
  ## 0.8.14 (2024-12-25)
7
29
 
8
30
  ### Only dependencies have been changed
@@ -191,7 +191,7 @@ function TreeNode(_a) {
191
191
  return;
192
192
  }
193
193
  };
194
- const getNodeActions = Boolean(nested) ? parentActions : nodeActions;
194
+ const getNodeActions = nested ? parentActions : nodeActions;
195
195
  return (0, jsx_runtime_1.jsxs)("div", Object.assign({
196
196
  role: 'presentation',
197
197
  className: (0, classnames_1.default)(styles_module_scss_1.default.treeNode, className)
@@ -202,7 +202,7 @@ function TreeNode(_a) {
202
202
  horizontal: true,
203
203
  visible: showLines,
204
204
  "data-test-id": constants_1.TEST_IDS.line
205
- }), !parentNode && !Boolean(nested) && (0, jsx_runtime_1.jsx)(TreeLine_1.TreeLine, {
205
+ }), !parentNode && !nested && (0, jsx_runtime_1.jsx)(TreeLine_1.TreeLine, {
206
206
  visible: false
207
207
  }), isExpandable && (0, jsx_runtime_1.jsx)(button_1.ButtonFunction, {
208
208
  size: 'xs',
@@ -216,7 +216,7 @@ function TreeNode(_a) {
216
216
  }), (0, jsx_runtime_1.jsxs)("div", {
217
217
  role: 'treeitem',
218
218
  "aria-expanded": isExpanded,
219
- "aria-selected": isSelectable ? isSelected : undefined,
219
+ "aria-selected": isSelectable ? isSelected || (nestedNodesSelection === null || nestedNodesSelection === void 0 ? void 0 : nestedNodesSelection.someSelected) && !isExpanded && !isMultiSelect : undefined,
220
220
  "aria-disabled": disabled,
221
221
  "data-multiselect": isMultiSelect || undefined,
222
222
  "data-droplist-active": isDroplistOpen || isDroplistTriggerFocused || undefined,
@@ -242,7 +242,7 @@ function TreeNode(_a) {
242
242
  }), showToggle && (0, jsx_runtime_1.jsx)(toggles_1.Radio, {
243
243
  size: 's',
244
244
  checked: isSelected,
245
- disabled: disabled || !isSelected && (nestedNodesSelection === null || nestedNodesSelection === void 0 ? void 0 : nestedNodesSelection.someSelected),
245
+ disabled: disabled,
246
246
  "data-test-id": constants_1.TEST_IDS.radio,
247
247
  tabIndex: -1
248
248
  })]
@@ -138,8 +138,8 @@ export function TreeNode(_a) {
138
138
  return;
139
139
  }
140
140
  };
141
- const getNodeActions = Boolean(nested) ? parentActions : nodeActions;
142
- return (_jsxs("div", Object.assign({ role: 'presentation', className: cn(styles.treeNode, className) }, extractSupportProps(rest), { "data-node-id": id, children: [parentNode && (_jsx(TreeLine, { halfWidth: Boolean(nested), horizontal: true, visible: showLines, "data-test-id": TEST_IDS.line })), !parentNode && !Boolean(nested) && _jsx(TreeLine, { visible: false }), isExpandable && (_jsx(ButtonFunction, { size: 'xs', icon: _jsx(ChevronRightSVG, {}), loading: isLoading, onClick: onChevronClick, "data-expanded": isExpanded || undefined, className: styles.treeNodeExpandButton, tabIndex: -1, "data-test-id": TEST_IDS.chevron })), _jsxs("div", { role: 'treeitem', "aria-expanded": isExpanded, "aria-selected": isSelectable ? isSelected : undefined, "aria-disabled": disabled, "data-multiselect": isMultiSelect || undefined, "data-droplist-active": isDroplistOpen || isDroplistTriggerFocused || undefined, onClick: handleClick, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: resetFocusPosition, tabIndex: tabIndexAvailable ? 0 : -1, className: styles.treeNodeContent, "data-test-id": TEST_IDS.item, ref: ref, children: [(isMultiSelect || showToggle) && (_jsxs("div", { className: styles.treeNodeCheckboxWrap, children: [isMultiSelect && (_jsx(Checkbox, { size: 's', disabled: disabled, checked: isSelected, indeterminate: !isSelected && (nestedNodesSelection === null || nestedNodesSelection === void 0 ? void 0 : nestedNodesSelection.someSelected), onChange: handleSelect, onClick: stopPropagationClick, "data-test-id": TEST_IDS.checkbox, tabIndex: -1 })), showToggle && (_jsx(Radio, { size: 's', checked: isSelected, disabled: disabled || (!isSelected && (nestedNodesSelection === null || nestedNodesSelection === void 0 ? void 0 : nestedNodesSelection.someSelected)), "data-test-id": TEST_IDS.radio, tabIndex: -1 }))] })), treeNodeIcon && (_jsx("div", { className: styles.treeNodeIcon, "data-test-id": TEST_IDS.icon, children: treeNodeIcon })), _jsxs(Typography.SansBodyM, { tag: 'div', className: styles.treeNodeTitle, children: [typeof title === 'string' && _jsx(TruncateString, { text: title, "data-test-id": TEST_IDS.title }), typeof title !== 'string' && title({ id, disabled, nested })] }), getNodeActions && (_jsx(TreeNodeActions, { getNodeActions: getNodeActions, node: {
141
+ const getNodeActions = nested ? parentActions : nodeActions;
142
+ return (_jsxs("div", Object.assign({ role: 'presentation', className: cn(styles.treeNode, className) }, extractSupportProps(rest), { "data-node-id": id, children: [parentNode && (_jsx(TreeLine, { halfWidth: Boolean(nested), horizontal: true, visible: showLines, "data-test-id": TEST_IDS.line })), !parentNode && !nested && _jsx(TreeLine, { visible: false }), isExpandable && (_jsx(ButtonFunction, { size: 'xs', icon: _jsx(ChevronRightSVG, {}), loading: isLoading, onClick: onChevronClick, "data-expanded": isExpanded || undefined, className: styles.treeNodeExpandButton, tabIndex: -1, "data-test-id": TEST_IDS.chevron })), _jsxs("div", { role: 'treeitem', "aria-expanded": isExpanded, "aria-selected": isSelectable ? isSelected || ((nestedNodesSelection === null || nestedNodesSelection === void 0 ? void 0 : nestedNodesSelection.someSelected) && !isExpanded && !isMultiSelect) : undefined, "aria-disabled": disabled, "data-multiselect": isMultiSelect || undefined, "data-droplist-active": isDroplistOpen || isDroplistTriggerFocused || undefined, onClick: handleClick, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: resetFocusPosition, tabIndex: tabIndexAvailable ? 0 : -1, className: styles.treeNodeContent, "data-test-id": TEST_IDS.item, ref: ref, children: [(isMultiSelect || showToggle) && (_jsxs("div", { className: styles.treeNodeCheckboxWrap, children: [isMultiSelect && (_jsx(Checkbox, { size: 's', disabled: disabled, checked: isSelected, indeterminate: !isSelected && (nestedNodesSelection === null || nestedNodesSelection === void 0 ? void 0 : nestedNodesSelection.someSelected), onChange: handleSelect, onClick: stopPropagationClick, "data-test-id": TEST_IDS.checkbox, tabIndex: -1 })), showToggle && (_jsx(Radio, { size: 's', checked: isSelected, disabled: disabled, "data-test-id": TEST_IDS.radio, tabIndex: -1 }))] })), treeNodeIcon && (_jsx("div", { className: styles.treeNodeIcon, "data-test-id": TEST_IDS.icon, children: treeNodeIcon })), _jsxs(Typography.SansBodyM, { tag: 'div', className: styles.treeNodeTitle, children: [typeof title === 'string' && _jsx(TruncateString, { text: title, "data-test-id": TEST_IDS.title }), typeof title !== 'string' && title({ id, disabled, nested })] }), getNodeActions && (_jsx(TreeNodeActions, { getNodeActions: getNodeActions, node: {
143
143
  id,
144
144
  title,
145
145
  disabled,
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "access": "public"
5
5
  },
6
6
  "title": "Tree",
7
- "version": "0.8.14",
7
+ "version": "0.8.16",
8
8
  "sideEffects": [
9
9
  "*.css",
10
10
  "*.woff",
@@ -38,14 +38,14 @@
38
38
  "dependencies": {
39
39
  "@snack-uikit/button": "0.19.5",
40
40
  "@snack-uikit/icons": "0.24.1",
41
- "@snack-uikit/list": "0.22.1",
42
- "@snack-uikit/toggles": "0.13.2",
43
- "@snack-uikit/truncate-string": "0.6.3",
41
+ "@snack-uikit/list": "0.22.2",
42
+ "@snack-uikit/toggles": "0.13.3",
43
+ "@snack-uikit/truncate-string": "0.6.4",
44
44
  "@snack-uikit/typography": "0.8.3",
45
45
  "@snack-uikit/utils": "3.6.0",
46
46
  "classnames": "2.5.1",
47
47
  "react-transition-state": "2.1.1",
48
48
  "uncontrollable": "8.0.4"
49
49
  },
50
- "gitHead": "5f981cd3d7c5169db2bff1d58db36b6c83da6861"
50
+ "gitHead": "9e7b0296b1a89a61bedfd095f7e40159c6b5f53a"
51
51
  }
@@ -203,7 +203,7 @@ export function TreeNode({
203
203
  }
204
204
  };
205
205
 
206
- const getNodeActions = Boolean(nested) ? parentActions : nodeActions;
206
+ const getNodeActions = nested ? parentActions : nodeActions;
207
207
 
208
208
  return (
209
209
  <div
@@ -216,7 +216,7 @@ export function TreeNode({
216
216
  <TreeLine halfWidth={Boolean(nested)} horizontal visible={showLines} data-test-id={TEST_IDS.line} />
217
217
  )}
218
218
 
219
- {!parentNode && !Boolean(nested) && <TreeLine visible={false} />}
219
+ {!parentNode && !nested && <TreeLine visible={false} />}
220
220
 
221
221
  {isExpandable && (
222
222
  <ButtonFunction
@@ -234,7 +234,9 @@ export function TreeNode({
234
234
  <div
235
235
  role='treeitem'
236
236
  aria-expanded={isExpanded}
237
- aria-selected={isSelectable ? isSelected : undefined}
237
+ aria-selected={
238
+ isSelectable ? isSelected || (nestedNodesSelection?.someSelected && !isExpanded && !isMultiSelect) : undefined
239
+ }
238
240
  aria-disabled={disabled}
239
241
  data-multiselect={isMultiSelect || undefined}
240
242
  data-droplist-active={isDroplistOpen || isDroplistTriggerFocused || undefined}
@@ -262,13 +264,7 @@ export function TreeNode({
262
264
  />
263
265
  )}
264
266
  {showToggle && (
265
- <Radio
266
- size='s'
267
- checked={isSelected}
268
- disabled={disabled || (!isSelected && nestedNodesSelection?.someSelected)}
269
- data-test-id={TEST_IDS.radio}
270
- tabIndex={-1}
271
- />
267
+ <Radio size='s' checked={isSelected} disabled={disabled} data-test-id={TEST_IDS.radio} tabIndex={-1} />
272
268
  )}
273
269
  </div>
274
270
  )}