playbook_ui 14.23.0.pre.rc.2 → 14.23.0.pre.rc.3

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 (46) hide show
  1. checksums.yaml +4 -4
  2. data/app/pb_kits/playbook/pb_advanced_table/docs/example.yml +7 -6
  3. data/app/pb_kits/playbook/pb_bar_graph/docs/_description.md +1 -1
  4. data/app/pb_kits/playbook/pb_body/docs/_body_truncate.jsx +3 -3
  5. data/app/pb_kits/playbook/pb_body/docs/_body_truncate_react.md +4 -0
  6. data/app/pb_kits/playbook/pb_circle_chart/circleChartTheme.ts +36 -1
  7. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_block.jsx +71 -26
  8. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors.jsx +29 -16
  9. data/app/pb_kits/playbook/pb_circle_chart/docs/{_circle_chart_colors.md → _circle_chart_colors_rails.md} +1 -1
  10. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_colors_react.md +2 -0
  11. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.jsx +28 -16
  12. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_custom_tooltip.md +4 -2
  13. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_default.jsx +23 -15
  14. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_inner_sizes.jsx +81 -51
  15. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.jsx +103 -75
  16. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_legend_position.md +3 -6
  17. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_live_data.jsx +19 -13
  18. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_rounded.jsx +30 -17
  19. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_labels.jsx +34 -20
  20. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_legend_kit.jsx +29 -20
  21. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_with_title.jsx +28 -20
  22. data/app/pb_kits/playbook/pb_circle_chart/docs/_description.md +1 -0
  23. data/app/pb_kits/playbook/pb_circle_chart/docs/example.yml +0 -1
  24. data/app/pb_kits/playbook/pb_circle_chart/docs/index.js +0 -1
  25. data/app/pb_kits/playbook/pb_draggable/context/index.tsx +12 -4
  26. data/app/pb_kits/playbook/pb_draggable/context/types.ts +5 -2
  27. data/app/pb_kits/playbook/pb_phone_number_input/_phone_number_input.tsx +27 -17
  28. data/app/pb_kits/playbook/pb_title/docs/_title_truncate.jsx +3 -3
  29. data/app/pb_kits/playbook/pb_title/docs/_title_truncate_react.md +4 -0
  30. data/dist/chunks/_circle_chart-BZmlhBs2.js +1 -0
  31. data/dist/chunks/{_typeahead-C2h5Gq3P.js → _typeahead-B1tu_vWi.js} +3 -3
  32. data/dist/chunks/{_weekday_stacked-XhCaqWUk.js → _weekday_stacked-CKk0dR5s.js} +1 -1
  33. data/dist/chunks/{lib-C0HyLoRj.js → lib-DYpq0k8j.js} +1 -1
  34. data/dist/chunks/{pb_form_validation-C3CDCB0e.js → pb_form_validation-BUOKwfvW.js} +1 -1
  35. data/dist/chunks/vendor.js +1 -1
  36. data/dist/menu.yml +68 -8
  37. data/dist/playbook-doc.js +2 -2
  38. data/dist/playbook-rails-react-bindings.js +1 -1
  39. data/dist/playbook-rails.js +1 -1
  40. data/lib/playbook/version.rb +1 -1
  41. metadata +14 -12
  42. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.jsx +0 -38
  43. data/app/pb_kits/playbook/pb_circle_chart/docs/_circle_chart_pb_styles.md +0 -1
  44. data/dist/chunks/_bar_graph-DVfSt34a.js +0 -1
  45. /data/app/pb_kits/playbook/pb_body/docs/{_body_truncate.md → _body_truncate_rails.md} +0 -0
  46. /data/app/pb_kits/playbook/pb_title/docs/{_title_truncate.md → _title_truncate_rails.md} +0 -0
@@ -1,114 +1,142 @@
1
1
  import React from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
4
-
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
5
5
  import Title from '../../pb_title/_title'
6
6
 
7
- const data = [
7
+ const dataFirst = [
8
8
  {
9
9
  name: 'Waiting for Calls',
10
- value: 41,
10
+ y: 41,
11
11
  },
12
12
  {
13
13
  name: 'On Call',
14
- value: 49,
14
+ y: 49,
15
15
  },
16
16
  {
17
17
  name: 'After Call',
18
- value: 10,
18
+ y: 10,
19
19
  },
20
20
  ]
21
21
 
22
- const dataFirst = [{
22
+ const dataSecond = [{
23
23
  name: 'Bugs',
24
- value: 8,
25
-
24
+ y: 8,
26
25
  },
27
26
  {
28
27
  name: 'Chores',
29
- value: 1,
30
-
28
+ y: 1,
31
29
  },
32
30
  {
33
31
  name: 'Stories',
34
- value: 12,
35
- },
36
- ]
32
+ y: 12,
33
+ }]
37
34
 
38
- const dataSecond = [
35
+ const dataThird = [
39
36
  {
40
37
  name: 'Queued',
41
- value: 7,
38
+ y: 7,
42
39
  },
43
40
  {
44
41
  name: 'In Progress',
45
- value: 6,
42
+ y: 6,
46
43
  },
47
44
  {
48
45
  name: 'Validation',
49
- value: 3,
46
+ y: 3,
50
47
  },
51
48
  {
52
49
  name: 'Done',
53
- value: 6,
50
+ y: 6,
54
51
  },
55
52
  ]
56
53
 
54
+ const CircleChartLegendPosition = (props) => {
55
+ const chartOptionsFirst = {
56
+ title: { text: "Alignment of Legend" },
57
+ series: [{ data: dataFirst }],
58
+ legend: {
59
+ align: 'right',
60
+ verticalAlign: 'top'
61
+ },
62
+ plotOptions: {
63
+ pie: {
64
+ showInLegend: true
65
+ }
66
+ }
67
+ }
68
+
69
+ const chartOptionsSecond = {
70
+ title: { text: "Layout of Legend" },
71
+ series: [{ data: dataSecond }],
72
+ legend: {
73
+ layout: 'vertical'
74
+ },
75
+ plotOptions: {
76
+ pie: {
77
+ showInLegend: true
78
+ }
79
+ }
80
+ }
81
+
82
+ const chartOptionsThird = {
83
+ title: { text: "Offset of Legend" },
84
+ series: [{ data: dataThird }],
85
+ legend: {
86
+ layout: 'vertical',
87
+ x: 100,
88
+ y: 10
89
+ },
90
+ plotOptions: {
91
+ pie: {
92
+ showInLegend: true
93
+ }
94
+ }
95
+ }
96
+
97
+ const optionsFirst = Highcharts.merge({}, circleChartTheme, chartOptionsFirst)
98
+ const optionsSecond = Highcharts.merge({}, circleChartTheme, chartOptionsSecond)
99
+ const optionsThird = Highcharts.merge({}, circleChartTheme, chartOptionsThird)
57
100
 
58
- const CircleChartLegendPosition = (props) => (
59
- <div>
60
- <Title
61
- paddingBottom="sm"
62
- paddingTop="sm"
63
- size={4}
64
- tag="h4"
65
- text="align | verticalAlign"
66
- />
67
- <CircleChart
68
- align='right'
69
- chartData={data}
70
- id="legend-position-circle"
71
- legend
72
- paddingBottom="sm"
73
- title="Alignment of Legend"
74
- verticalAlign="top"
75
- {...props}
76
- />
77
- <Title
78
- paddingBottom="sm"
79
- paddingTop="sm"
80
- size={4}
81
- tag="h4"
82
- text="layout"
83
- />
84
- <CircleChart
85
- chartData={dataFirst}
86
- id="legend-position-circle-1"
87
- layout="vertical"
88
- legend
89
- paddingBottom="sm"
90
- paddingTop="sm"
91
- title="Layout of Legend"
92
- {...props}
93
- />
94
- <Title
95
- paddingBottom="sm"
96
- paddingTop="sm"
97
- size={4}
98
- tag="h4"
99
- text="x | y"
100
- />
101
- <CircleChart
102
- chartData={dataSecond}
103
- id="legend-position-circle-2"
104
- layout="vertical"
105
- legend
106
- title="Offset of Legend"
107
- x={100}
108
- y={10}
109
- {...props}
110
- />
111
- </div>
112
- )
101
+ return (
102
+ <div>
103
+ <Title
104
+ paddingY="sm"
105
+ size={4}
106
+ tag="h4"
107
+ text="align | verticalAlign"
108
+ {...props}
109
+ />
110
+ <HighchartsReact
111
+ highcharts={Highcharts}
112
+ options={optionsFirst}
113
+ />
114
+
115
+ <Title
116
+ paddingY="sm"
117
+ size={4}
118
+ tag="h4"
119
+ text="layout"
120
+ {...props}
121
+ />
122
+ <HighchartsReact
123
+ highcharts={Highcharts}
124
+ options={optionsSecond}
125
+ />
126
+
127
+ <Title
128
+ paddingY="sm"
129
+ size={4}
130
+ tag="h4"
131
+ text="x | y"
132
+ {...props}
133
+ />
134
+ <HighchartsReact
135
+ highcharts={Highcharts}
136
+ options={optionsThird}
137
+ />
138
+ </div>
139
+ )
140
+ }
113
141
 
114
142
  export default CircleChartLegendPosition
@@ -6,12 +6,9 @@
6
6
  `x` **Type**: Number (defaults to 0)
7
7
  `y` **Type**: Number (defaults to 0)
8
8
 
9
- -
10
-
11
- - `layout` determines the position of the legend items
9
+ `layout` determines the position of the legend items
12
10
  `layout: proximate` will place the legend items as close as possible to the graphs they're representing. It will also determine whether to place the legend above/below or on the side of the plot area, if the legend is in a corner.
13
11
 
14
- - `x` offsets the legend relative to its horizontal alignmnet. Negative x moves it to the left, positive x moves it to the right
15
-
12
+ `x` offsets the legend relative to its horizontal alignment. Negative x moves it to the left, positive x moves it to the right
16
13
 
17
- - `y` offsets the legend relative to its vertical alignmnet. Negative y moves it up, positive y moves it down.
14
+ `y` offsets the legend relative to its vertical alignment. Negative y moves it up, positive y moves it down.
@@ -1,36 +1,37 @@
1
1
  import React, { useState } from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
4
5
  import Button from '../../pb_button/_button'
5
6
 
6
7
  const CircleChartLiveData = (props) => {
7
8
  const [data, setData] = useState([
8
9
  {
9
10
  name: 'Waiting for Calls',
10
- value: 41,
11
+ y: 41,
11
12
  },
12
13
  {
13
14
  name: 'On Call',
14
- value: 49,
15
+ y: 49,
15
16
  },
16
17
  {
17
18
  name: 'After Call',
18
- value: 10,
19
+ y: 10,
19
20
  },
20
21
  ])
21
22
 
22
23
  const data2 = [
23
24
  {
24
25
  name: 'Waiting for Calls',
25
- value: 48,
26
+ y: 48,
26
27
  },
27
28
  {
28
29
  name: 'On Call',
29
- value: 12,
30
+ y: 12,
30
31
  },
31
32
  {
32
33
  name: 'After Call',
33
- value: 140,
34
+ y: 140,
34
35
  },
35
36
  ]
36
37
 
@@ -38,6 +39,12 @@ const CircleChartLiveData = (props) => {
38
39
  setData(data2)
39
40
  }
40
41
 
42
+ const chartOptions = {
43
+ series: [{ data: data }],
44
+ }
45
+
46
+ const options = Highcharts.merge({}, circleChartTheme, chartOptions)
47
+
41
48
  return (
42
49
  <div>
43
50
  <Button
@@ -45,13 +52,12 @@ const CircleChartLiveData = (props) => {
45
52
  text="Update Value"
46
53
  {...props}
47
54
  />
48
- <CircleChart
49
- chartData={data}
50
- id="circle-chart-live-data"
51
- {...props}
55
+ <HighchartsReact
56
+ highcharts={Highcharts}
57
+ options={options}
52
58
  />
53
59
  </div>
54
60
  )
55
61
  }
56
62
 
57
- export default CircleChartLiveData
63
+ export default CircleChartLiveData
@@ -1,32 +1,45 @@
1
1
  import React from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
4
5
 
5
6
  const dataRounded = [
6
7
  {
7
8
  name: 'Waiting for Calls',
8
- value: 41,
9
+ y: 41,
9
10
  },
10
11
  {
11
12
  name: 'On Call',
12
- value: 49,
13
+ y: 49,
13
14
  },
14
15
  {
15
16
  name: 'After Call',
16
- value: 10,
17
+ y: 10,
17
18
  },
18
19
  ]
19
20
 
20
- const CircleChartRounded = (props) => (
21
- <div>
22
- <CircleChart
23
- chartData={dataRounded}
24
- id="default-test-rounded"
25
- innerSize="lg"
26
- rounded
27
- {...props}
28
- />
29
- </div>
30
- )
21
+ const CircleChartRounded = () => {
22
+ const chartOptions = {
23
+ series: [{ data: dataRounded }],
24
+ plotOptions: {
25
+ pie: {
26
+ borderColor: null,
27
+ borderWidth: 20,
28
+ innerSize: '100%',
29
+ },
30
+ },
31
+ }
32
+
33
+ const options = Highcharts.merge({}, circleChartTheme, chartOptions)
34
+
35
+ return (
36
+ <div>
37
+ <HighchartsReact
38
+ highcharts={Highcharts}
39
+ options={options}
40
+ />
41
+ </div>
42
+ )
43
+ }
31
44
 
32
- export default CircleChartRounded
45
+ export default CircleChartRounded
@@ -1,47 +1,61 @@
1
1
  import React from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
4
5
 
5
6
  const dataWithLabels = [
6
7
  {
7
8
  name: 'Facebook',
8
- value: 2498,
9
+ y: 2498,
9
10
  },
10
11
  {
11
12
  name: 'YouTube',
12
- value: 2000,
13
+ y: 2000,
13
14
  },
14
15
  {
15
16
  name: 'WhatsApp',
16
- value: 2000,
17
+ y: 2000,
17
18
  },
18
19
  {
19
20
  name: 'Facebook Messenger',
20
- value: 1300,
21
+ y: 1300,
21
22
  },
22
23
  {
23
24
  name: 'WeChat',
24
- value: 1165,
25
+ y: 1165,
25
26
  },
26
27
  {
27
28
  name: 'Instagram',
28
- value: 1000,
29
+ y: 1000,
29
30
  },
30
31
  {
31
32
  name: 'Tik Tok',
32
- value: 800,
33
+ y: 800,
33
34
  },
34
35
  ]
35
36
 
36
- const CircleChartWithLabels = (props) => (
37
- <div>
38
- <CircleChart
39
- chartData={dataWithLabels}
40
- dataLabels
41
- id="with-labels-example"
42
- {...props}
43
- />
44
- </div>
45
- )
37
+ const CircleChartWithLabels = () => {
38
+ const chartOptions = {
39
+ series: [{ data: dataWithLabels }],
40
+ plotOptions: {
41
+ pie: {
42
+ dataLabels: {
43
+ enabled: true,
44
+ }
45
+ }
46
+ }
47
+ }
48
+
49
+ const options = Highcharts.merge({}, circleChartTheme, chartOptions)
50
+
51
+ return (
52
+ <div>
53
+ <HighchartsReact
54
+ highcharts={Highcharts}
55
+ options={options}
56
+ />
57
+ </div>
58
+ )
59
+ }
46
60
 
47
- export default CircleChartWithLabels
61
+ export default CircleChartWithLabels
@@ -1,32 +1,41 @@
1
1
  import React from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
4
5
 
5
6
  const dataWithLegend = [{
6
7
  name: 'Bugs',
7
- value: 8,
8
-
8
+ y: 8,
9
9
  },
10
10
  {
11
11
  name: 'Chores',
12
- value: 1,
13
-
12
+ y: 1,
14
13
  },
15
14
  {
16
15
  name: 'Stories',
17
- value: 12,
18
- },
19
- ]
16
+ y: 12,
17
+ }]
18
+
19
+ const CircleChartWithLegendKit = () => {
20
+ const chartOptions = {
21
+ series: [{ data: dataWithLegend }],
22
+ plotOptions: {
23
+ pie: {
24
+ showInLegend: true
25
+ }
26
+ }
27
+ }
28
+
29
+ const options = Highcharts.merge({}, circleChartTheme, chartOptions)
20
30
 
21
- const CircleChartWithLegendKit = (props) => (
22
- <div>
23
- <CircleChart
24
- chartData={dataWithLegend}
25
- id="with-legend-example"
26
- legend
27
- {...props}
28
- />
29
- </div>
30
- )
31
+ return (
32
+ <div>
33
+ <HighchartsReact
34
+ highcharts={Highcharts}
35
+ options={options}
36
+ />
37
+ </div>
38
+ )
39
+ }
31
40
 
32
- export default CircleChartWithLegendKit
41
+ export default CircleChartWithLegendKit
@@ -1,47 +1,55 @@
1
1
  import React from 'react'
2
-
3
- import CircleChart from '../_circle_chart'
2
+ import circleChartTheme from '../circleChartTheme'
3
+ import Highcharts from "highcharts"
4
+ import HighchartsReact from "highcharts-react-official"
4
5
 
5
6
  const dataWithTitle = [
6
7
  {
7
8
  name: 'Facebook',
8
- value: 2498,
9
+ y: 2498,
9
10
  },
10
11
  {
11
12
  name: 'YouTube',
12
- value: 2000,
13
+ y: 2000,
13
14
  },
14
15
  {
15
16
  name: 'WhatsApp',
16
- value: 2000,
17
+ y: 2000,
17
18
  },
18
19
  {
19
20
  name: 'Facebook Messenger',
20
- value: 1300,
21
+ y: 1300,
21
22
  },
22
23
  {
23
24
  name: 'WeChat',
24
- value: 1165,
25
+ y: 1165,
25
26
  },
26
27
  {
27
28
  name: 'Instagram',
28
- value: 1000,
29
+ y: 1000,
29
30
  },
30
31
  {
31
32
  name: 'Tik Tok',
32
- value: 800,
33
+ y: 800,
33
34
  },
34
35
  ]
35
36
 
36
- const CircleChartWithLegendKit = (props) => (
37
- <div>
38
- <CircleChart
39
- chartData={dataWithTitle}
40
- id="with-title-example"
41
- title="Active Users on Social Media"
42
- {...props}
43
- />
44
- </div>
45
- )
37
+ const CircleChartWithTitle = () => {
38
+ const chartOptions = {
39
+ title: { text: "Active Users on Social Media" },
40
+ series: [{ data: dataWithTitle }],
41
+ }
42
+
43
+ const options = Highcharts.merge({}, circleChartTheme, chartOptions)
44
+
45
+ return (
46
+ <div>
47
+ <HighchartsReact
48
+ highcharts={Highcharts}
49
+ options={options}
50
+ />
51
+ </div>
52
+ )
53
+ }
46
54
 
47
- export default CircleChartWithLegendKit
55
+ export default CircleChartWithTitle
@@ -0,0 +1 @@
1
+ **Important Note for the React Kit**: In order to leverage this kit, you must install `highcharts` and `highcharts-react-official` into your project as shown below. To then apply Playbook styles to your Highchart, import circleChartTheme.ts from playbook-ui and merge it with your Highchart options. Then, pass the merged value to the options prop. Playbook’s styling will be applied automatically. See the examples in the documentation below.
@@ -14,7 +14,6 @@ examples:
14
14
 
15
15
  react:
16
16
  - circle_chart_default: Default Style
17
- - circle_chart_pb_styles: Playbook Styles
18
17
  - circle_chart_live_data: Live Data
19
18
  - circle_chart_rounded: Rounded Corners
20
19
  - circle_chart_block: Accepts Any Block
@@ -9,4 +9,3 @@ export { default as CircleChartLegendPosition } from './_circle_chart_legend_pos
9
9
  export { default as CircleChartWithTitle } from './_circle_chart_with_title.jsx'
10
10
  export { default as CircleChartInnerSizes } from './_circle_chart_inner_sizes.jsx'
11
11
  export { default as CircleChartCustomTooltip } from "./_circle_chart_custom_tooltip.jsx"
12
- export { default as CircleChartPbStyles } from "./_circle_chart_pb_styles.jsx"
@@ -3,7 +3,7 @@ import { InitialStateType, ActionType, DraggableProviderType } from "./types";
3
3
 
4
4
  const initialState: InitialStateType = {
5
5
  items: [],
6
- dragData: { id: "", initialGroup: "" },
6
+ dragData: { id: "", initialGroup: "", originId: "" },
7
7
  isDragging: "",
8
8
  activeContainer: ""
9
9
  };
@@ -60,7 +60,8 @@ export const DraggableProvider = ({
60
60
  onDragEnd,
61
61
  onDrop,
62
62
  onDragOver,
63
- dropZone = { type: 'ghost', color: 'neutral', direction: 'vertical' }
63
+ dropZone = { type: 'ghost', color: 'neutral', direction: 'vertical' },
64
+ providerId = 'default', // fallback provided for backward compatibility, so this does not become a required prop
64
65
  }: DraggableProviderType) => {
65
66
  const [state, dispatch] = useReducer(reducer, initialState);
66
67
 
@@ -93,15 +94,17 @@ export const DraggableProvider = ({
93
94
  }, [state.items]);
94
95
 
95
96
  const handleDragStart = (id: string, container: string) => {
96
- dispatch({ type: 'SET_DRAG_DATA', payload: { id: id, initialGroup: container } });
97
+ dispatch({ type: 'SET_DRAG_DATA', payload: { id: id, initialGroup: container, originId: providerId } });
97
98
  dispatch({ type: 'SET_IS_DRAGGING', payload: id });
98
99
  if (onDragStart) onDragStart(id, container);
99
100
  };
100
101
 
101
102
  const handleDragEnter = (id: string, container: string) => {
103
+ if (state.dragData.originId !== providerId) return; // Ignore drag events from other providers
104
+
102
105
  if (state.dragData.id !== id) {
103
106
  dispatch({ type: 'REORDER_ITEMS', payload: { dragId: state.dragData.id, targetId: id } });
104
- dispatch({ type: 'SET_DRAG_DATA', payload: { id: state.dragData.id, initialGroup: container } });
107
+ dispatch({ type: 'SET_DRAG_DATA', payload: { id: state.dragData.id, initialGroup: container, originId: providerId } });
105
108
  }
106
109
  if (onDragEnter) onDragEnter(id, container);
107
110
  };
@@ -109,6 +112,7 @@ export const DraggableProvider = ({
109
112
  const handleDragEnd = () => {
110
113
  dispatch({ type: 'SET_IS_DRAGGING', payload: "" });
111
114
  dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: "" });
115
+ dispatch({ type: 'SET_DRAG_DATA', payload: { id: "", initialGroup: "", originId: "" } });
112
116
  if (onDragEnd) onDragEnd();
113
117
  };
114
118
 
@@ -117,6 +121,8 @@ export const DraggableProvider = ({
117
121
  };
118
122
 
119
123
  const handleDrop = (container: string) => {
124
+ if (state.dragData.originId !== providerId) return; // Ignore drop events from other providers
125
+
120
126
  dispatch({ type: 'SET_IS_DRAGGING', payload: "" });
121
127
  dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: "" });
122
128
  changeCategory(state.dragData.id, container);
@@ -124,6 +130,8 @@ export const DraggableProvider = ({
124
130
  };
125
131
 
126
132
  const handleDragOver = (e: Event, container: string) => {
133
+ if (state.dragData.originId !== providerId) return; // Ignore drag over events from other providers
134
+
127
135
  e.preventDefault();
128
136
  dispatch({ type: 'SET_ACTIVE_CONTAINER', payload: container });
129
137
  if (onDragOver) onDragOver(e, container);