@onereach/ui-components 3.0.2-beta.2480.0 → 3.0.2-beta.2641.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 (60) hide show
  1. package/dist/bundled/v2/{OrSelect-33f58941.js → OrSelect-0b9b27e9.js} +5 -6
  2. package/dist/bundled/v2/OrTree-b8e47647.js +236 -0
  3. package/dist/bundled/v2/components/index.d.ts +1 -0
  4. package/dist/bundled/v2/components/index.js +2 -1
  5. package/dist/bundled/v2/components/or-select-v3/index.js +1 -1
  6. package/dist/bundled/v2/components/or-tree-v3/OrTree.vue.d.ts +47 -0
  7. package/dist/bundled/v2/components/or-tree-v3/TreeNode.vue.d.ts +82 -0
  8. package/dist/bundled/v2/components/or-tree-v3/index.d.ts +2 -0
  9. package/dist/bundled/v2/components/or-tree-v3/index.js +17 -0
  10. package/dist/bundled/v2/components/or-tree-v3/styles.d.ts +1 -0
  11. package/dist/bundled/v2/components/or-tree-v3/types.d.ts +10 -0
  12. package/dist/bundled/v2/components/or-tree-v3/utils.d.ts +5 -0
  13. package/dist/bundled/v2/index.js +3 -2
  14. package/dist/bundled/v3/OrTree.vue_vue_type_script_lang-9a31b9b4.js +146 -0
  15. package/dist/bundled/v3/components/index.d.ts +1 -0
  16. package/dist/bundled/v3/components/index.js +1 -0
  17. package/dist/bundled/v3/components/or-tree-v3/OrTree.vue.d.ts +47 -0
  18. package/dist/bundled/v3/components/or-tree-v3/TreeNode.vue.d.ts +82 -0
  19. package/dist/bundled/v3/components/or-tree-v3/index.d.ts +2 -0
  20. package/dist/bundled/v3/components/or-tree-v3/index.js +16 -0
  21. package/dist/bundled/v3/components/or-tree-v3/styles.d.ts +1 -0
  22. package/dist/bundled/v3/components/or-tree-v3/types.d.ts +10 -0
  23. package/dist/bundled/v3/components/or-tree-v3/utils.d.ts +5 -0
  24. package/dist/bundled/v3/index.js +141 -116
  25. package/dist/esm/v2/{OrSelect-4b901267.js → OrSelect-8307ad20.js} +5 -6
  26. package/dist/esm/v2/OrTree-32b2fede.js +233 -0
  27. package/dist/esm/v2/components/index.d.ts +1 -0
  28. package/dist/esm/v2/components/index.js +2 -1
  29. package/dist/esm/v2/components/or-select-v3/index.js +1 -1
  30. package/dist/esm/v2/components/or-tree-v3/OrTree.vue.d.ts +47 -0
  31. package/dist/esm/v2/components/or-tree-v3/TreeNode.vue.d.ts +82 -0
  32. package/dist/esm/v2/components/or-tree-v3/index.d.ts +2 -0
  33. package/dist/esm/v2/components/or-tree-v3/index.js +15 -0
  34. package/dist/esm/v2/components/or-tree-v3/styles.d.ts +1 -0
  35. package/dist/esm/v2/components/or-tree-v3/types.d.ts +10 -0
  36. package/dist/esm/v2/components/or-tree-v3/utils.d.ts +5 -0
  37. package/dist/esm/v2/index.js +2 -1
  38. package/dist/esm/v3/{OrSelect-6ccd02ea.js → OrSelect-c3a50846.js} +4 -5
  39. package/dist/esm/v3/OrTree-bf625e80.js +170 -0
  40. package/dist/esm/v3/components/index.d.ts +1 -0
  41. package/dist/esm/v3/components/index.js +2 -1
  42. package/dist/esm/v3/components/or-select-v3/index.js +1 -1
  43. package/dist/esm/v3/components/or-tree-v3/OrTree.vue.d.ts +47 -0
  44. package/dist/esm/v3/components/or-tree-v3/TreeNode.vue.d.ts +82 -0
  45. package/dist/esm/v3/components/or-tree-v3/index.d.ts +2 -0
  46. package/dist/esm/v3/components/or-tree-v3/index.js +14 -0
  47. package/dist/esm/v3/components/or-tree-v3/styles.d.ts +1 -0
  48. package/dist/esm/v3/components/or-tree-v3/types.d.ts +10 -0
  49. package/dist/esm/v3/components/or-tree-v3/utils.d.ts +5 -0
  50. package/dist/esm/v3/index.js +2 -1
  51. package/package.json +2 -2
  52. package/src/components/index.ts +1 -0
  53. package/src/components/or-select-v3/OrSelect.vue +64 -65
  54. package/src/components/or-tree-v3/OrTree.stories3.ts +105 -0
  55. package/src/components/or-tree-v3/OrTree.vue +85 -0
  56. package/src/components/or-tree-v3/TreeNode.vue +72 -0
  57. package/src/components/or-tree-v3/index.ts +2 -0
  58. package/src/components/or-tree-v3/styles.ts +13 -0
  59. package/src/components/or-tree-v3/types.ts +12 -0
  60. package/src/components/or-tree-v3/utils.ts +31 -0
@@ -0,0 +1,85 @@
1
+ <template>
2
+ <div
3
+ class="or-tree"
4
+ @drop="onDrop"
5
+ >
6
+ <tree-node
7
+ v-for="node in visibleItems"
8
+ :key="node[identifierKey]"
9
+ :node="node"
10
+ :node-key="node[identifierKey]"
11
+ :is-expanded="nodeMetadataByKey[node.key].isExpanded"
12
+ :is-leaf="!!node.isLeaf"
13
+ :level="nodeMetadataByKey[node.key].level"
14
+ @trigger-expand="onTriggerExpand"
15
+ >
16
+ <template
17
+ v-slot:default="props"
18
+ >
19
+ <slot v-bind="props" />
20
+ </template>
21
+ </tree-node>
22
+ </div>
23
+ </template>
24
+
25
+ <script lang="ts">
26
+ import { defineComponent, PropType } from 'vue-demi';
27
+ import { ITreeNode, ITreeNodeMetadata } from './types';
28
+ import { getFlatTree } from './utils';
29
+ import TreeNode from './TreeNode.vue';
30
+
31
+ export default defineComponent({
32
+ components: {
33
+ TreeNode,
34
+ },
35
+ props: {
36
+ initialData: {
37
+ type: Array as PropType<ITreeNode[]>,
38
+ default: () => ([]),
39
+ },
40
+ identifierKey: {
41
+ type: String,
42
+ default: 'key',
43
+ },
44
+ },
45
+
46
+ data() {
47
+ return {
48
+ flatTree: [] as ITreeNode[],
49
+ nodeMetadataByKey: {} as Record<string, ITreeNodeMetadata>,
50
+ };
51
+ },
52
+
53
+ computed: {
54
+ visibleItems() {
55
+ return this.flatTree.filter(treeNode => {
56
+ return this.isNodeExpanded(treeNode.key);
57
+ });
58
+ },
59
+ },
60
+
61
+ mounted() {
62
+ const {
63
+ nodeMetadataByKey, flatTree,
64
+ } = getFlatTree(this.initialData);
65
+ this.flatTree = flatTree;
66
+ this.nodeMetadataByKey = nodeMetadataByKey;
67
+ },
68
+
69
+ methods: {
70
+ onTriggerExpand(key: string) {
71
+ this.nodeMetadataByKey[key].isExpanded = !this.nodeMetadataByKey[key].isExpanded;
72
+ },
73
+
74
+ isNodeExpanded(key: string): boolean {
75
+ const { parentNodeKey, level } = this.nodeMetadataByKey[key];
76
+ const parentMetadata = this.nodeMetadataByKey[parentNodeKey];
77
+
78
+ if (level === 0) return true;
79
+ if (!parentMetadata.isExpanded) return false;
80
+
81
+ return this.isNodeExpanded(parentNodeKey);
82
+ },
83
+ },
84
+ });
85
+ </script>
@@ -0,0 +1,72 @@
1
+ <template>
2
+ <div
3
+ class="tree-node"
4
+ :class="rootClasses"
5
+ :style="styleCSS"
6
+ >
7
+ <or-icon-button
8
+ v-if="!isLeaf"
9
+ :icon="expandIcon"
10
+ @click="$emit('trigger-expand', nodeKey)"
11
+ />
12
+
13
+ <slot v-bind="$props">
14
+ {{ nodeKey }}
15
+ </slot>
16
+ </div>
17
+ </template>
18
+
19
+ <script lang="ts">
20
+ import { defineComponent, PropType } from 'vue-demi';
21
+ import { OrIconButtonV3 as OrIconButton } from '../or-icon-button-v3';
22
+ import { TreeNodeRoot } from './styles';
23
+ import { ITreeNode } from './types';
24
+
25
+ export default defineComponent({
26
+ components: {
27
+ OrIconButton,
28
+ },
29
+ props: {
30
+ node: {
31
+ type: Object as PropType<ITreeNode>,
32
+ default: undefined,
33
+ },
34
+ nodeKey: {
35
+ type: String,
36
+ default: '',
37
+ },
38
+ isExpanded: {
39
+ type: Boolean,
40
+ default: false,
41
+ },
42
+ isLeaf: {
43
+ type: Boolean,
44
+ default: false,
45
+ },
46
+ level: {
47
+ type: Number,
48
+ default: 0,
49
+ },
50
+ },
51
+ emits: ['trigger-expand'],
52
+
53
+ setup() {
54
+ return {
55
+ rootClasses: TreeNodeRoot,
56
+ };
57
+ },
58
+
59
+ computed: {
60
+ expandIcon() {
61
+ return this.isExpanded ? 'keyboard_arrow_down' : 'arrow_right';
62
+ },
63
+
64
+ styleCSS() {
65
+ return {
66
+ // 24px -- gap-sm + tooltip width
67
+ 'padding-left': (this.isLeaf && this.level === 0) ? '24px' : `${(this.isLeaf ? 24 : 0) + (this.level * 10)}px`,
68
+ };
69
+ },
70
+ },
71
+ });
72
+ </script>
@@ -0,0 +1,2 @@
1
+ export { default as OrTreeV3 } from './OrTree.vue';
2
+ export * from './types';
@@ -0,0 +1,13 @@
1
+ export const TreeNodeRoot: string[] = [
2
+ 'flex',
3
+ 'items-center',
4
+ 'gap-sm',
5
+ 'pt-6',
6
+ 'my-sm',
7
+
8
+ // Theme
9
+ 'text-on-background',
10
+ 'dark:text-on-background-dark',
11
+ 'hover:bg-primary-opacity-0-08',
12
+ 'dark:hover:bg-primary-opacity-0-08-dark',
13
+ ];
@@ -0,0 +1,12 @@
1
+ export interface ITreeNode {
2
+ key: string;
3
+ isLeaf: boolean;
4
+ children?: ITreeNode[];
5
+ }
6
+
7
+
8
+ export interface ITreeNodeMetadata {
9
+ level: number;
10
+ isExpanded: boolean;
11
+ parentNodeKey: string;
12
+ }
@@ -0,0 +1,31 @@
1
+ import { ITreeNode, ITreeNodeMetadata } from './types';
2
+
3
+ export const getFlatTree = (tree: ITreeNode[]) => {
4
+ const flatTree: ITreeNode[] = [];
5
+ const nodeMetadataByKey: Record<string, ITreeNodeMetadata> = {};
6
+
7
+ const goDeeper = (treeNode: ITreeNode, level: number, parentNodeKey: string) => {
8
+ flatTree.push(treeNode);
9
+ nodeMetadataByKey[treeNode.key] = {
10
+ level,
11
+ isExpanded: false,
12
+ parentNodeKey,
13
+ };
14
+
15
+ if (treeNode.children) {
16
+ for (const child of treeNode.children) {
17
+ goDeeper(child, level + 1, treeNode.key);
18
+ }
19
+
20
+ }
21
+ };
22
+
23
+ for (const node of tree) {
24
+ goDeeper(node, 0, '');
25
+ }
26
+
27
+ return {
28
+ flatTree,
29
+ nodeMetadataByKey,
30
+ };
31
+ };