From 8d2a5fe1723431387be1e7f046294bbc7e7ed87c Mon Sep 17 00:00:00 2001 From: Worth Lutz Date: Fri, 21 Apr 2023 10:18:56 -0400 Subject: [PATCH 01/17] restructure using TreeModel and NodeModel convert ClickableLabelsExample add place holder for Show Root Example update CustomIconsExample update and fix DisabledExample update NoCascadeExample update PessimisticToggleExample update HiddenCheckboxesExample update LargeDataExample update ExpandAllExample and fix errors updated FilterExample and fixed TreeModel(onCheck and onExpand) add ShowRootExample simplify TreeModel work on FilterExample replace 'newTreeModel' with 'newTree' move models into models dir change onCollapse & onExpand to use nodeKey add ExpandNodesToLevel and redo getChecked add radio buttons change to context for state add radio button for nativeCheckboxes --- examples/src/index.html | 14 +- examples/src/index.jsx | 20 +- examples/src/js/BasicExample.jsx | 42 +- examples/src/js/ClickableLabelsExample.jsx | 46 +- examples/src/js/CustomIconsExample.jsx | 39 +- examples/src/js/DisabledExample.jsx | 43 +- examples/src/js/ExpandAllExample.jsx | 36 +- examples/src/js/FilterExample.jsx | 175 ++- examples/src/js/HiddenCheckboxesExample.jsx | 47 +- examples/src/js/LargeDataExample.jsx | 35 +- examples/src/js/NativeCheckboxExample.jsx | 31 + examples/src/js/NoCascadeExample.jsx | 46 +- examples/src/js/PessimisticToggleExample.jsx | 43 +- examples/src/js/RadioButtonExample.jsx | 30 + .../src/js/{common.js => data/empires.js} | 90 +- examples/src/js/data/fileSystem.js | 80 + examples/src/js/data/fileSystemRadio.js | 83 ++ examples/src/js/data/index.js | 4 + examples/src/js/data/mapLayerTree.js | 736 +++++++++ src/index.js | 4 +- src/js/CheckboxTree.jsx | 494 +++---- src/js/CheckboxTreeContext.jsx | 35 + src/js/NodeModel.js | 185 --- src/js/components/BareLabel.jsx | 44 + src/js/components/CheckboxIcon.js | 41 + src/js/components/CheckboxLabel.jsx | 100 ++ src/js/components/LabelChildren.jsx | 35 + src/js/components/NativeCheckbox.jsx | 12 +- src/js/components/TreeNode.jsx | 261 +--- src/js/models/NodeModel.js | 80 + src/js/models/NodeModelError.js | 9 + src/js/models/TreeModel.js | 440 ++++++ src/js/models/TreeModelError.js | 9 + src/js/shapes/iconsShape.js | 3 + src/js/shapes/nodeShape.js | 2 + src/js/shapes/treeShape.js | 10 + src/js/utils.js | 30 - src/scss/react-checkbox-tree.scss | 16 + test/CheckboxTree.jsx | 1317 ++++++++++------- test/TreeNode.jsx | 48 +- 40 files changed, 3206 insertions(+), 1609 deletions(-) create mode 100644 examples/src/js/NativeCheckboxExample.jsx create mode 100644 examples/src/js/RadioButtonExample.jsx rename examples/src/js/{common.js => data/empires.js} (54%) create mode 100644 examples/src/js/data/fileSystem.js create mode 100644 examples/src/js/data/fileSystemRadio.js create mode 100644 examples/src/js/data/index.js create mode 100644 examples/src/js/data/mapLayerTree.js create mode 100644 src/js/CheckboxTreeContext.jsx delete mode 100644 src/js/NodeModel.js create mode 100644 src/js/components/BareLabel.jsx create mode 100644 src/js/components/CheckboxIcon.js create mode 100644 src/js/components/CheckboxLabel.jsx create mode 100644 src/js/components/LabelChildren.jsx create mode 100644 src/js/models/NodeModel.js create mode 100644 src/js/models/NodeModelError.js create mode 100644 src/js/models/TreeModel.js create mode 100644 src/js/models/TreeModelError.js create mode 100644 src/js/shapes/treeShape.js delete mode 100644 src/js/utils.js diff --git a/examples/src/index.html b/examples/src/index.html index 3a5b52bf..1decfdc8 100644 --- a/examples/src/index.html +++ b/examples/src/index.html @@ -52,6 +52,9 @@

Custom Icons Example

Disabled Example

+

Native Checkboxes Example

+
+

No Cascading Example

By default, the check state of children determine the check state of a parent. Similarly, checking or unchecking @@ -73,8 +76,8 @@

Clickable Labels Example

property, the tree will instead call the provided function and will restrict toggling to the checkbox icon.

- When the onClick function is defined, passing the expandOnClick property will also - expand the clicked node automatically. + When the onClick function is defined, passing the expandOnClick property will + cause the clicked node to expand/contract when clicked.

@@ -100,6 +103,13 @@

Filter Example

Filtering tree nodes is possible.

+

Radio Button Group Example

+

+ By adding isRadioGroup: true to a node in the tree initial + configuration, that node's children will work as a Radio Group. +

+
+