+) => {
+ const {
+ prefix,
+ suffix,
+ placeholder,
+ tags,
+ popup,
+ size,
+ rounded,
+ fillMode,
+ showArrowButton,
+ hover,
+ focus,
+ valid,
+ invalid,
+ required,
+ loading,
+ disabled,
+ readonly,
+ opened,
+ ...other
+ } = props;
+
+
+ return (
+ <>
+
+ {prefix}
+
+ <>
+ {tags}
+ >
+
+
+ {placeholder}
+
+
+
+
+ {suffix}
+ {showArrowButton && (
+
+ )}
+
+ { opened && popup &&
+
+ {popup}
+
+ }
+ >
+ );
+};
+
+MultiSelectTree.states = states;
+MultiSelectTree.options = options;
+MultiSelectTree.className = MULTISELECTTREE_CLASSNAME;
+MultiSelectTree.defaultProps = defaultProps;
+
+export default MultiSelectTree;
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-flat.html b/packages/html/src/multiselecttree/tests/multiselecttree-flat.html
new file mode 100644
index 00000000000..d86b36a0a8e
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-flat.html
@@ -0,0 +1,13 @@
+
+
+
+ MultiSelectTree Flat
+
+
+
+
+
+
+
+
+
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-flat.tsx b/packages/html/src/multiselecttree/tests/multiselecttree-flat.tsx
new file mode 100644
index 00000000000..bed3568cefe
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-flat.tsx
@@ -0,0 +1,179 @@
+import ReactDOM from 'react-dom/client';
+import { Chip, ChipAction } from '../../chip';
+import { MultiSelectTree } from '../../multiselecttree';
+
+const root = ReactDOM.createRoot(
+ document.getElementById('app') as HTMLElement
+);
+
+const styles = `
+ #test-area {
+ grid-template-columns: 160px repeat(2, 300px);
+ }
+`;
+
+root.render(
+ <>
+
+
+
+
+
MultiSelectTree Flat
+
MultiSelectTree Flat RTL
+
+
Empty
+
+
+
+
+
+
+
+
Arrow button
+
+
+
+
+
+
+
+
Normal
+
+ } />
+ )}
+ />
+
+
+ } />
+ )}
+ />
+
+
+
Hover
+
+ } />
+ )}
+ hover
+ />
+
+
+ } />
+ )}
+ hover
+ />
+
+
+
Focus
+
+ } />
+ )}
+ focus
+ />
+
+
+ } />
+ )}
+ focus
+ />
+
+
+
Disabled
+
+ } />
+ )}
+ disabled
+ />
+
+
+ } />
+ )}
+ disabled
+ />
+
+
+
Invalid
+
+ } />
+ )}
+ invalid
+ />
+
+
+ } />
+ )}
+ invalid
+ />
+
+
+
Invalid + Focus
+
+ } />
+ )}
+ invalid
+ focus
+ />
+
+
+ } />
+ )}
+ invalid
+ focus
+ />
+
+
+
Loading
+
+
+
+
+
+
+
+
Multi Line + Overflow
+
+
+ } />
+ } />
+ >
+ )}
+ />
+
+
+
+ } />
+ } />
+ >
+ )}
+ />
+
+
+ >
+);
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-opened.html b/packages/html/src/multiselecttree/tests/multiselecttree-opened.html
new file mode 100644
index 00000000000..cea833d43ce
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-opened.html
@@ -0,0 +1,13 @@
+
+
+
+ MultiSelect Opened
+
+
+
+
+
+
+
+
+
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-opened.tsx b/packages/html/src/multiselecttree/tests/multiselecttree-opened.tsx
new file mode 100644
index 00000000000..f2c5dfc685a
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-opened.tsx
@@ -0,0 +1,119 @@
+import ReactDOM from 'react-dom/client';
+import { Chip, ChipAction } from '../../chip';
+import { MultiSelectTree } from '..';
+import { Checkbox } from '../../checkbox';
+import { Textbox } from '../../textbox';
+import { Icon } from '../../icon';
+import { Treeview, TreeviewGroup, TreeviewItem } from '../../treeview';
+
+const root = ReactDOM.createRoot(
+ document.getElementById('app') as HTMLElement
+);
+
+const styles = `
+ #test-area {
+ grid-template-columns: 160px repeat(2, 300px);
+ }
+`;
+
+root.render(
+ <>
+
+
+
+
+
MultiSelectTree
+
MultiSelectTree RTL
+
+
Opened
+
+
+ } />
+ >
+ )}
+ popup={(
+ <>
+
+
+
+ >
+ }
+ />
+
+
+
+
+ Check all
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )}
+ />
+
+
+
+ } />
+ >
+ )}
+ popup={(
+ <>
+
+
+
+ >
+ }
+ />
+
+
+
+
+ Check all
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ >
+ )}
+ />
+
+
+ >
+);
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-outline.html b/packages/html/src/multiselecttree/tests/multiselecttree-outline.html
new file mode 100644
index 00000000000..6519b953968
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-outline.html
@@ -0,0 +1,13 @@
+
+
+
+ MultiSelectTree Outline
+
+
+
+
+
+
+
+
+
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-outline.tsx b/packages/html/src/multiselecttree/tests/multiselecttree-outline.tsx
new file mode 100644
index 00000000000..9e781bfd8c6
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-outline.tsx
@@ -0,0 +1,179 @@
+import ReactDOM from 'react-dom/client';
+import { Chip, ChipAction } from '../../chip';
+import { MultiSelectTree } from '../../multiselecttree';
+
+const root = ReactDOM.createRoot(
+ document.getElementById('app') as HTMLElement
+);
+
+const styles = `
+ #test-area {
+ grid-template-columns: 160px repeat(2, 300px);
+ }
+`;
+
+root.render(
+ <>
+
+
+
+
+
MultiSelectTree Outline
+
MultiSelectTree Outline RTL
+
+
Empty
+
+
+
+
+
+
+
+
Arrow button
+
+
+
+
+
+
+
+
Normal
+
+ } />
+ )}
+ />
+
+
+ } />
+ )}
+ />
+
+
+
Hover
+
+ } />
+ )}
+ hover
+ />
+
+
+ } />
+ )}
+ hover
+ />
+
+
+
Focus
+
+ } />
+ )}
+ focus
+ />
+
+
+ } />
+ )}
+ focus
+ />
+
+
+
Disabled
+
+ } />
+ )}
+ disabled
+ />
+
+
+ } />
+ )}
+ disabled
+ />
+
+
+
Invalid
+
+ } />
+ )}
+ invalid
+ />
+
+
+ } />
+ )}
+ invalid
+ />
+
+
+
Invalid + Focus
+
+ } />
+ )}
+ invalid
+ focus
+ />
+
+
+ } />
+ )}
+ invalid
+ focus
+ />
+
+
+
Loading
+
+
+
+
+
+
+
+
Multi Line + Overflow
+
+
+ } />
+ } />
+ >
+ )}
+ />
+
+
+
+ } />
+ } />
+ >
+ )}
+ />
+
+
+ >
+);
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-size.html b/packages/html/src/multiselecttree/tests/multiselecttree-size.html
new file mode 100644
index 00000000000..03cfee7eade
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-size.html
@@ -0,0 +1,13 @@
+
+
+
+ MultiSelectTree Size
+
+
+
+
+
+
+
+
+
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree-size.tsx b/packages/html/src/multiselecttree/tests/multiselecttree-size.tsx
new file mode 100644
index 00000000000..04a1144489d
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree-size.tsx
@@ -0,0 +1,54 @@
+import ReactDOM from 'react-dom/client';
+import { Chip, ChipAction } from '../../chip';
+import { MultiSelectTree } from '../../multiselecttree';
+
+const root = ReactDOM.createRoot(
+ document.getElementById('app') as HTMLElement
+);
+
+const styles = `
+ #test-area {
+ max-width: 600px;
+ grid-template-columns: 120px repeat(1, 1fr);
+ }
+`;
+
+root.render(
+ <>
+
+
+ small
+
+ } />
+ } />
+ >
+ )}
+ />
+
+ medium
+
+ } />
+ } />
+ >
+ )}
+ />
+
+ large
+
+ } />
+ } />
+ >
+ )}
+ />
+
+ >
+);
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree.html b/packages/html/src/multiselecttree/tests/multiselecttree.html
new file mode 100644
index 00000000000..e1051f2e7cf
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree.html
@@ -0,0 +1,13 @@
+
+
+
+ MultiSelectTree
+
+
+
+
+
+
+
+
+
diff --git a/packages/html/src/multiselecttree/tests/multiselecttree.tsx b/packages/html/src/multiselecttree/tests/multiselecttree.tsx
new file mode 100644
index 00000000000..b02ac35d14b
--- /dev/null
+++ b/packages/html/src/multiselecttree/tests/multiselecttree.tsx
@@ -0,0 +1,179 @@
+import ReactDOM from 'react-dom/client';
+import { Chip, ChipAction } from '../../chip';
+import { MultiSelectTree } from '../../multiselecttree';
+
+const root = ReactDOM.createRoot(
+ document.getElementById('app') as HTMLElement
+);
+
+const styles = `
+ #test-area {
+ grid-template-columns: 160px repeat(2, 300px);
+ }
+`;
+
+root.render(
+ <>
+
+
+
+
+
MultiSelectTree
+
MultiSelectTree RTL
+
+
Empty
+
+
+
+
+
+
+
+
Arrow button
+
+
+
+
+
+
+
+
Normal
+
+ } />
+ )}
+ />
+
+
+ } />
+ )}
+ />
+
+
+
Hover
+
+ } />
+ )}
+ hover
+ />
+
+
+ } />
+ )}
+ hover
+ />
+
+
+
Focus
+
+ } />
+ )}
+ focus
+ />
+
+
+ } />
+ )}
+ focus
+ />
+
+
+
Disabled
+
+ } />
+ )}
+ disabled
+ />
+
+
+ } />
+ )}
+ disabled
+ />
+
+
+
Invalid
+
+ } />
+ )}
+ invalid
+ />
+
+
+ } />
+ )}
+ invalid
+ />
+
+
+
Invalid + Focus
+
+ } />
+ )}
+ invalid
+ focus
+ />
+
+
+ } />
+ )}
+ invalid
+ focus
+ />
+
+
+
Loading
+
+
+
+
+
+
+
+
Multi Line + Overflow
+
+
+ } />
+ } />
+ >
+ )}
+ />
+
+
+
+ } />
+ } />
+ >
+ )}
+ />
+
+
+ >
+);