@cgi-learning-hub/ui 1.5.0-dev.1743520380 → 1.5.0-dev.1743528537

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@mui/material"),i=t.styled(t.Card)(({theme:e,selected:o,size:r})=>({boxShadow:"0px 4px 12px rgba(0, 0, 0, 0.1), 0px 2px 4px rgba(0, 0, 0, 0.06)",borderRadius:"0.5rem",height:"auto",border:"2px solid transparent",transition:"border-color 0.2s ease-in-out",position:"relative",...r==="sm"&&{display:"flex",width:"100%"},...o&&{borderColor:e.palette.primary.light},"&:hover":{"& .MuiBox-root.selected-icon":{opacity:1,visibility:"visible"}}})),a=t.styled(t.Box)(({theme:e,selected:o})=>({position:"absolute",top:0,right:0,width:"2rem",height:"2rem",background:e.palette.common.white,display:"flex",justifyContent:"center",alignItems:"center",padding:".8rem",borderRadius:".5rem",visibility:"visible",opacity:0,cursor:"pointer",transition:"opacity 0.2s ease-in-out, visibility 0.2s ease-in-out",...o&&{background:e.palette.primary.lighter,opacity:1,visibility:"visible"},"&:hover, &:focus":{background:e.palette.primary.lighter,opacity:1},"& .MuiSvgIcon-root":{color:e.palette.primary.main}})),s=t.styled(t.CardMedia)(({size:e,image:o,defaultImage:r})=>({height:e=="sm"?85:180,width:e=="sm"?85:"calc(100% - 2rem)",objectFit:"cover",margin:e=="sm"?"0 10px":"1rem",borderRadius:"0.5rem",...!o&&e==="md"&&{backgroundImage:`url(${r})`,backgroundRepeat:"repeat",backgroundSize:"20% 20%",backgroundPosition:"center",opacity:"0.7"}})),n=t.styled(t.CardContent)(({size:e})=>({padding:e=="sm"?".7rem 5px .7rem 0 !important":"0 16px 16px 16px !important",width:e==="sm"?"calc(100% - 110px)":"100%"})),p=t.styled(t.Box)(({size:e})=>({display:"flex",alignItems:"center",marginTop:"0.5rem",...e==="sm"&&{svg:{width:".8em",height:".8em"}}})),c=t.styled(t.Box)(({size:e,width:o,isLast:r})=>({marginLeft:e==="sm"?".3rem":".5rem",fontSize:e==="sm"?"12px":"15px","& .MuiTypography-root":{paddingTop:"2px",fontSize:e==="sm"?"12px":"15px"},...r&&!o&&{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",maxWidth:e==="sm"?"110px":"172px"}})),d=t.styled(t.Box)(({size:e})=>({display:"inline-flex",alignItems:"center",justifyContent:"center",width:"fit-content",height:"fit-content",...e==="sm"&&{svg:{width:".8em",height:".8em"}}})),l=t.styled(t.Box)(({size:e})=>({position:"absolute",bottom:e==="sm"?".65rem":"16px",right:e==="sm"?"8px":"16px",display:"flex",gap:".2rem"}));exports.PublicIconWrapper=l;exports.ResourceCardBody=n;exports.ResourceCardImage=s;exports.ResourceIconItem=d;exports.ResourcePropertyItem=p;exports.ResourcePropertyText=c;exports.SelectedIcon=a;exports.StyledCard=i;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@mui/material"),a=t.styled(t.Card)(({theme:e,selected:o,size:r})=>({boxShadow:"0px 4px 12px rgba(0, 0, 0, 0.1), 0px 2px 4px rgba(0, 0, 0, 0.06)",borderRadius:"0.5rem",height:"auto",border:"2px solid transparent",transition:"border-color 0.2s ease-in-out",position:"relative",...r==="sm"&&{display:"flex",width:"100%"},...o&&{borderColor:e.palette.primary.light},"&:hover":{"& .MuiBox-root.selected-icon":{opacity:1,visibility:"visible"}}})),s=t.styled(t.Box)(({theme:e,selected:o})=>({position:"absolute",top:0,right:0,width:"2rem",height:"2rem",background:e.palette.common.white,display:"flex",justifyContent:"center",alignItems:"center",padding:".8rem",borderRadius:".5rem",visibility:"visible",opacity:0,cursor:"pointer",transition:"opacity 0.2s ease-in-out, visibility 0.2s ease-in-out",...o&&{background:e.palette.primary.lighter,opacity:1,visibility:"visible"},"&:hover, &:focus":{background:e.palette.primary.lighter,opacity:1},"& .MuiSvgIcon-root":{color:e.palette.primary.main}})),n=t.styled(t.CardMedia,{shouldForwardProp:e=>e==="size"||e==="image"||e==="defaultImage"})(({size:e,image:o,defaultImage:r})=>({height:e==="sm"?85:180,width:e==="sm"?85:"calc(100% - 2rem)",objectFit:"cover",margin:e==="sm"?"0 10px":"1rem",borderRadius:"0.5rem",...(!o||o==="")&&e==="md"&&{backgroundImage:`url(${r})`,backgroundRepeat:"repeat",backgroundSize:"20% 20%",backgroundPosition:"center",opacity:.7}})),d=t.styled(t.CardContent)(({size:e})=>({padding:e=="sm"?".7rem 5px .7rem 0 !important":"0 16px 16px 16px !important",width:e==="sm"?"calc(100% - 110px)":"100%"})),c=t.styled(t.Box)(({size:e})=>({display:"flex",alignItems:"center",marginTop:"0.5rem",...e==="sm"&&{svg:{width:".8em",height:".8em"}}})),p=t.styled(t.Box,{shouldForwardProp:e=>e==="size"||e==="isLast"||e==="width"})(({theme:e,size:o,width:r,isLast:i})=>({marginLeft:o==="sm"?".3rem":".5rem",fontSize:o==="sm"?"12px":"15px","& .MuiTypography-root":{paddingTop:"2px",fontSize:o==="sm"?"12px":"15px"},...i&&!r&&{textOverflow:"ellipsis",whiteSpace:"nowrap",overflow:"hidden",maxWidth:o==="sm"?"110px":"172px"}})),l=t.styled(t.Box)(({size:e})=>({display:"inline-flex",alignItems:"center",justifyContent:"center",width:"fit-content",height:"fit-content",...e==="sm"&&{svg:{width:".8em",height:".8em"}}})),m=t.styled(t.Box)(({size:e})=>({position:"absolute",bottom:e==="sm"?".65rem":"16px",right:e==="sm"?"8px":"16px",display:"flex",gap:".2rem"}));exports.PublicIconWrapper=m;exports.ResourceCardBody=d;exports.ResourceCardImage=n;exports.ResourceIconItem=l;exports.ResourcePropertyItem=c;exports.ResourcePropertyText=p;exports.SelectedIcon=s;exports.StyledCard=a;
@@ -1,16 +1,16 @@
1
- import { styled as t, Card as a, Box as r, CardMedia as p, CardContent as n } from "@mui/material";
2
- const c = t(a)(({ theme: e, selected: o, size: i }) => ({
1
+ import { styled as i, Card as n, Box as r, CardMedia as s, CardContent as p } from "@mui/material";
2
+ const m = i(n)(({ theme: e, selected: t, size: o }) => ({
3
3
  boxShadow: "0px 4px 12px rgba(0, 0, 0, 0.1), 0px 2px 4px rgba(0, 0, 0, 0.06)",
4
4
  borderRadius: "0.5rem",
5
5
  height: "auto",
6
6
  border: "2px solid transparent",
7
7
  transition: "border-color 0.2s ease-in-out",
8
8
  position: "relative",
9
- ...i === "sm" && {
9
+ ...o === "sm" && {
10
10
  display: "flex",
11
11
  width: "100%"
12
12
  },
13
- ...o && {
13
+ ...t && {
14
14
  borderColor: e.palette.primary.light
15
15
  },
16
16
  "&:hover": {
@@ -19,8 +19,8 @@ const c = t(a)(({ theme: e, selected: o, size: i }) => ({
19
19
  visibility: "visible"
20
20
  }
21
21
  }
22
- })), m = t(r)(
23
- ({ theme: e, selected: o }) => ({
22
+ })), c = i(r)(
23
+ ({ theme: e, selected: t }) => ({
24
24
  position: "absolute",
25
25
  top: 0,
26
26
  right: 0,
@@ -36,7 +36,7 @@ const c = t(a)(({ theme: e, selected: o, size: i }) => ({
36
36
  opacity: 0,
37
37
  cursor: "pointer",
38
38
  transition: "opacity 0.2s ease-in-out, visibility 0.2s ease-in-out",
39
- ...o && {
39
+ ...t && {
40
40
  background: e.palette.primary.lighter,
41
41
  opacity: 1,
42
42
  visibility: "visible"
@@ -49,23 +49,25 @@ const c = t(a)(({ theme: e, selected: o, size: i }) => ({
49
49
  color: e.palette.primary.main
50
50
  }
51
51
  })
52
- ), d = t(p)(({ size: e, image: o, defaultImage: i }) => ({
53
- height: e == "sm" ? 85 : 180,
54
- width: e == "sm" ? 85 : "calc(100% - 2rem)",
52
+ ), l = i(s, {
53
+ shouldForwardProp: (e) => e === "size" || e === "image" || e === "defaultImage"
54
+ })(({ size: e, image: t, defaultImage: o }) => ({
55
+ height: e === "sm" ? 85 : 180,
56
+ width: e === "sm" ? 85 : "calc(100% - 2rem)",
55
57
  objectFit: "cover",
56
- margin: e == "sm" ? "0 10px" : "1rem",
58
+ margin: e === "sm" ? "0 10px" : "1rem",
57
59
  borderRadius: "0.5rem",
58
- ...!o && e === "md" && {
59
- backgroundImage: `url(${i})`,
60
+ ...(!t || t === "") && e === "md" && {
61
+ backgroundImage: `url(${o})`,
60
62
  backgroundRepeat: "repeat",
61
63
  backgroundSize: "20% 20%",
62
64
  backgroundPosition: "center",
63
- opacity: "0.7"
65
+ opacity: 0.7
64
66
  }
65
- })), l = t(n)(({ size: e }) => ({
67
+ })), g = i(p)(({ size: e }) => ({
66
68
  padding: e == "sm" ? ".7rem 5px .7rem 0 !important" : "0 16px 16px 16px !important",
67
69
  width: e === "sm" ? "calc(100% - 110px)" : "100%"
68
- })), g = t(r)(
70
+ })), x = i(r)(
69
71
  ({ size: e }) => ({
70
72
  display: "flex",
71
73
  alignItems: "center",
@@ -77,20 +79,22 @@ const c = t(a)(({ theme: e, selected: o, size: i }) => ({
77
79
  }
78
80
  }
79
81
  })
80
- ), x = t(r)(({ size: e, width: o, isLast: i }) => ({
81
- marginLeft: e === "sm" ? ".3rem" : ".5rem",
82
- fontSize: e === "sm" ? "12px" : "15px",
82
+ ), h = i(r, {
83
+ shouldForwardProp: (e) => e === "size" || e === "isLast" || e === "width"
84
+ })(({ theme: e, size: t, width: o, isLast: a }) => ({
85
+ marginLeft: t === "sm" ? ".3rem" : ".5rem",
86
+ fontSize: t === "sm" ? "12px" : "15px",
83
87
  "& .MuiTypography-root": {
84
88
  paddingTop: "2px",
85
- fontSize: e === "sm" ? "12px" : "15px"
89
+ fontSize: t === "sm" ? "12px" : "15px"
86
90
  },
87
- ...i && !o && {
91
+ ...a && !o && {
88
92
  textOverflow: "ellipsis",
89
93
  whiteSpace: "nowrap",
90
94
  overflow: "hidden",
91
- maxWidth: e === "sm" ? "110px" : "172px"
95
+ maxWidth: t === "sm" ? "110px" : "172px"
92
96
  }
93
- })), u = t(r)(
97
+ })), u = i(r)(
94
98
  ({ size: e }) => ({
95
99
  display: "inline-flex",
96
100
  alignItems: "center",
@@ -104,7 +108,7 @@ const c = t(a)(({ theme: e, selected: o, size: i }) => ({
104
108
  }
105
109
  }
106
110
  })
107
- ), h = t(r)(
111
+ ), b = i(r)(
108
112
  ({ size: e }) => ({
109
113
  position: "absolute",
110
114
  bottom: e === "sm" ? ".65rem" : "16px",
@@ -114,12 +118,12 @@ const c = t(a)(({ theme: e, selected: o, size: i }) => ({
114
118
  })
115
119
  );
116
120
  export {
117
- h as PublicIconWrapper,
118
- l as ResourceCardBody,
119
- d as ResourceCardImage,
121
+ b as PublicIconWrapper,
122
+ g as ResourceCardBody,
123
+ l as ResourceCardImage,
120
124
  u as ResourceIconItem,
121
- g as ResourcePropertyItem,
122
- x as ResourcePropertyText,
123
- m as SelectedIcon,
124
- c as StyledCard
125
+ x as ResourcePropertyItem,
126
+ h as ResourcePropertyText,
127
+ c as SelectedIcon,
128
+ m as StyledCard
125
129
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@mui/material"),o="50px",r=t.styled(t.Box,{shouldForwardProp:e=>e!=="maxHeight"})(({maxHeight:e})=>({maxHeight:typeof e=="number"?`${e}px`:e,overflowY:"auto"})),n={margin:"6px 0"},a={display:"flex",alignItems:"center",width:"100%"},i={display:"flex",marginLeft:"auto"},l={borderLeft:"1px solid #bdbdbd",paddingLeft:"12px",marginLeft:"11px",marginTop:"8px",marginBottom:"8px"},p={width:"24px",height:"24px"};exports.DEFAULT_CHILDREN_INDENT=o;exports.TreeContainer=r;exports.arrowContainerStyle=i;exports.expandedGroupStyle=l;exports.iconStyle=p;exports.treeContentStyle=a;exports.treeItemRootStyle=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("@mui/material"),o="50px",r=t.styled(t.Box,{shouldForwardProp:e=>e!=="maxHeight"})(({maxHeight:e})=>({maxHeight:typeof e=="number"?`${e}px`:e,overflowY:"auto"})),n={display:"flex",flexDirection:"column"},i={display:"flex",alignItems:"center",width:"100%",margin:"4px 0",padding:"8px"},l={display:"flex",marginLeft:"auto"},a={borderLeft:"1px solid var(--theme-palette-divider)",paddingLeft:"15px",marginLeft:"18px"},d={width:"24px",height:"24px"};exports.DEFAULT_CHILDREN_INDENT=o;exports.TreeContainer=r;exports.arrowContainerStyle=l;exports.expandedGroupStyle=a;exports.iconStyle=d;exports.treeContentStyle=i;exports.treeItemRootStyle=n;
@@ -1,32 +1,35 @@
1
- import { styled as e, Box as o } from "@mui/material";
2
- const r = "50px", p = e(o, {
3
- shouldForwardProp: (t) => t !== "maxHeight"
4
- })(({ maxHeight: t }) => ({
5
- maxHeight: typeof t == "number" ? `${t}px` : t,
1
+ import { styled as t, Box as o } from "@mui/material";
2
+ const r = "50px", i = t(o, {
3
+ shouldForwardProp: (e) => e !== "maxHeight"
4
+ })(({ maxHeight: e }) => ({
5
+ maxHeight: typeof e == "number" ? `${e}px` : e,
6
6
  overflowY: "auto"
7
- })), i = { margin: "6px 0" }, a = {
7
+ })), p = {
8
+ display: "flex",
9
+ flexDirection: "column"
10
+ }, l = {
8
11
  display: "flex",
9
12
  alignItems: "center",
10
- width: "100%"
11
- }, d = {
13
+ width: "100%",
14
+ margin: "4px 0",
15
+ padding: "8px"
16
+ }, a = {
12
17
  display: "flex",
13
18
  marginLeft: "auto"
19
+ }, d = {
20
+ borderLeft: "1px solid var(--theme-palette-divider)",
21
+ paddingLeft: "15px",
22
+ marginLeft: "18px"
14
23
  }, x = {
15
- borderLeft: "1px solid #bdbdbd",
16
- paddingLeft: "12px",
17
- marginLeft: "11px",
18
- marginTop: "8px",
19
- marginBottom: "8px"
20
- }, l = {
21
24
  width: "24px",
22
25
  height: "24px"
23
26
  };
24
27
  export {
25
28
  r as DEFAULT_CHILDREN_INDENT,
26
- p as TreeContainer,
27
- d as arrowContainerStyle,
28
- x as expandedGroupStyle,
29
- l as iconStyle,
30
- a as treeContentStyle,
31
- i as treeItemRootStyle
29
+ i as TreeContainer,
30
+ a as arrowContainerStyle,
31
+ d as expandedGroupStyle,
32
+ x as iconStyle,
33
+ l as treeContentStyle,
34
+ p as treeItemRootStyle
32
35
  };
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),w=require("../../createSvgIcon-DjTQ6UHI.cjs"),V=require("../../IconButton-Czd8uNt8.cjs"),L=require("../../Tooltip-arPEgWU6.cjs"),m=require("react"),p=require("../TreeView/TreeView.cjs.js"),o=require("../TreeView/types.cjs.js"),l=require("../../Box-ge7hyt34.cjs"),a=require("../../Typography-Daq_a9_t.cjs"),x=require("../../ListItemText-Yjh9Zoqh.cjs"),g=require("../../Paper-CRHSfFG5.cjs"),v=require("../../Button-BkHaHEAp.cjs"),O=require("../../Divider-D3QqAaaL.cjs"),Y=require("../../List-CBdWJkIa.cjs"),N=require("../../ListItem-B2M8rFxh.cjs"),P=w.createSvgIcon(e.jsx("path",{d:"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2"}),"Bookmark"),R=w.createSvgIcon(e.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description"),q=w.createSvgIcon(e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info"),_=w.createSvgIcon(e.jsx("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"Person"),F={title:"Components/TreeView",component:p,argTypes:{items:{description:"**[Requis]** Liste des éléments à afficher dans le TreeView.",control:"object",table:{required:!0,type:{summary:"CustomTreeViewItem[]"}}},selectedItemId:{description:"**[Requis]** Identifiant de l'élément sélectionné.",control:"text",table:{required:!0,type:{summary:"string"}}},handleSelectedItemChange:{description:"**[Requis]** Fonction appelée lorsqu'un élément est sélectionné.",table:{required:!0,type:{summary:"(event: React.SyntheticEvent, itemIds: string | null) => void"}}},iconColor:{description:"**[Optionnel]** Couleur des icônes.",control:"select",options:["primary","secondary","success","error","info","warning"],defaultValue:"primary",table:{required:!1,type:{summary:"string"},defaultValue:{summary:"primary"}}},maxHeight:{description:"**[Optionnel]** Hauteur du TreeView avec gestion automatique du défilement.",control:"number",table:{required:!1,type:{summary:"number | string"},defaultValue:{summary:"auto"}}}},parameters:{docs:{description:{component:`
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("react/jsx-runtime"),O=require("../../createSvgIcon-DjTQ6UHI.cjs"),N=require("../../IconButton-Czd8uNt8.cjs"),B=require("../../Tooltip-arPEgWU6.cjs"),u=require("react"),h=require("../TreeView/TreeView.cjs.js"),t=require("../TreeView/types.cjs.js"),l=require("../../Box-ge7hyt34.cjs"),a=require("../../Typography-Daq_a9_t.cjs"),m=require("../../ListItemText-Yjh9Zoqh.cjs"),I=require("../../Paper-CRHSfFG5.cjs"),g=require("../../Button-BkHaHEAp.cjs"),P=require("../../Divider-D3QqAaaL.cjs"),L=require("../../List-CBdWJkIa.cjs"),_=require("../../ListItem-B2M8rFxh.cjs"),R=O.createSvgIcon(e.jsx("path",{d:"M17 3H7c-1.1 0-1.99.9-1.99 2L5 21l7-3 7 3V5c0-1.1-.9-2-2-2"}),"Bookmark"),D=O.createSvgIcon(e.jsx("path",{d:"M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8zm2 16H8v-2h8zm0-4H8v-2h8zm-3-5V3.5L18.5 9z"}),"Description"),V=O.createSvgIcon(e.jsx("path",{d:"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2m1 15h-2v-6h2zm0-8h-2V7h2z"}),"Info"),q=O.createSvgIcon(e.jsx("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4m0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4"}),"Person"),F={title:"Components/TreeView",component:h,argTypes:{items:{description:"**[Requis]** Liste des éléments à afficher dans le TreeView.",control:"object",table:{required:!0,type:{summary:"CustomTreeViewItem[]"}}},selectedItemId:{description:"**[Requis]** Identifiant de l'élément sélectionné.",control:"text",table:{required:!0,type:{summary:"string"}}},handleSelectedItemChange:{description:"**[Requis]** Fonction appelée lorsqu'un élément est sélectionné.",table:{required:!0,type:{summary:"(event: React.SyntheticEvent, itemIds: string | null) => void"}}},iconColor:{description:"**[Optionnel]** Couleur des icônes.",control:"select",options:["primary","secondary","success","error","info","warning"],defaultValue:"primary",table:{required:!1,type:{summary:"string"},defaultValue:{summary:"primary"}}},maxHeight:{description:"**[Optionnel]** Hauteur du TreeView avec gestion automatique du défilement.",control:"number",table:{required:!1,type:{summary:"number | string"},defaultValue:{summary:"auto"}}}},parameters:{docs:{description:{component:`
2
2
  ## TreeView
3
3
 
4
4
  Un composant pour afficher des données hiérarchiques sous forme d'arborescence.
@@ -47,7 +47,7 @@ interface CustomTreeViewItemProps {
47
47
 
48
48
  type CustomTreeViewItem = TreeViewBaseItem<CustomTreeViewItemProps>;
49
49
  \`\`\`
50
- `}}}},D=s=>{const r=[],i=n=>{r.push(n),n.children&&n.children.forEach(t=>i(t))};return s.forEach(n=>i(n)),r},H=({items:s,selectedItemId:r,onItemSelect:i})=>{const n=D(s);return e.jsxs(g.Paper,{sx:{width:"100%",maxHeight:300,overflow:"auto"},children:[e.jsx(a.Typography,{variant:"h6",sx:{p:2},children:"Sélection externe"}),e.jsx(O.Divider,{}),e.jsx(Y.List,{children:n.map(t=>e.jsx(N.ListItem,{disablePadding:!0,children:e.jsx(x.ListItemButton,{selected:r===t.internalId,onClick:()=>i(t.internalId),children:e.jsx(x.ListItemText,{primary:t.label})})},t.internalId))})]})},k=({items:s,onRandomSelect:r})=>{const i=D(s),n=()=>{const t=Math.floor(Math.random()*i.length);r(i[t].internalId)};return e.jsx(l.Box,{sx:{mt:2,mb:2},children:e.jsx(v.Button,{variant:"contained",color:"primary",onClick:n,children:"Sélection aléatoire"})})},A=({id:s,label:r})=>e.jsx(l.Box,{draggable:!0,onDragStart:i=>{i.dataTransfer.setData("application/json",JSON.stringify({id:s,label:r}))},sx:{padding:1,margin:1,backgroundColor:"grey.100",borderRadius:1,display:"inline-block",cursor:"grab","&:hover":{backgroundColor:"grey.200"}},children:e.jsxs(a.Typography,{variant:"body2",display:"flex",alignItems:"center",children:[e.jsx(R,{fontSize:"small",sx:{mr:1}}),r]})}),j=[{internalId:"documents",label:"Mes formulaires",iconType:o.ICON_TYPE.FOLDER,children:[{internalId:"folder1",label:"Premier dossier",iconType:o.ICON_TYPE.FOLDER,children:[{internalId:"subfolder1",label:"Sous-dossier 1",iconType:o.ICON_TYPE.FOLDER},{internalId:"subfolder2",label:"Sous-dossier 2",iconType:o.ICON_TYPE.FOLDER}]},{internalId:"folder2",label:"Deuxième dossier",iconType:o.ICON_TYPE.FOLDER},{internalId:"folder3",label:"Troisième dossier",iconType:o.ICON_TYPE.FOLDER}]},{internalId:"shared",label:"Formulaires partagés avec moi",iconType:o.ICON_TYPE.SHARE},{internalId:"trash",label:"Corbeille",iconType:o.ICON_TYPE.TRASH}],B=[{internalId:"bookmarks",label:"Favoris",iconType:P,children:[{internalId:"important",label:"Important",iconType:o.ICON_TYPE.CUSTOM,customIcon:_}]},...j],S=[{internalId:"documents",label:"Documents",iconType:o.ICON_TYPE.SHARE,children:[{internalId:"reports",label:"Rapports",iconType:o.ICON_TYPE.FOLDER,children:[{internalId:"report1",label:"Rapport Janvier",iconType:o.ICON_TYPE.FOLDER},{internalId:"report2",label:"Rapport Février",iconType:o.ICON_TYPE.FOLDER},{internalId:"report3",label:"Rapport Mars",iconType:o.ICON_TYPE.FOLDER}]},{internalId:"invoices",label:"Factures",iconType:o.ICON_TYPE.FOLDER}]},{internalId:"media",label:"Médias",iconType:o.ICON_TYPE.FOLDER,children:[{internalId:"images",label:"Images",iconType:o.ICON_TYPE.FOLDER},{internalId:"videos",label:"Vidéos",iconType:o.ICON_TYPE.FOLDER}]},{internalId:"downloads",label:"Téléchargements",iconType:o.ICON_TYPE.FOLDER}],$={render:()=>{const[s,r]=m.useState(""),i=m.useCallback((n,t)=>{console.log(`Élément sélectionné: ${t}`),t&&r(t)},[]);return e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(p,{items:j,selectedItemId:s,handleSelectedItemChange:i})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple de base avec des icônes standard et démonstration de sélection."}}}},z={args:{items:j,selectedItemId:"folder1",handleSelectedItemChange:(s,r)=>{console.log(`Élément sélectionné: ${r}`)},iconColor:"success"},render:s=>e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(p,{...s})}),parameters:{docs:{description:{story:"Cette story permet de contrôler les propriétés du TreeView directement via le panneau de contrôle de Storybook. Essayez de changer la couleur des icônes pour voir l'effet en temps réel."}}}},M={render:()=>{const[s,r]=m.useState("bookmarks"),i=m.useCallback((n,t)=>{console.log(`Élément sélectionné: ${t}`),t&&r(t)},[]);return e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(p,{items:B,selectedItemId:s,handleSelectedItemChange:i})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple utilisant à la fois des icônes prédéfinies et des icônes personnalisées."}}}},G={render:()=>{const[s,r]=m.useState("item1"),i=m.useCallback((n,t)=>{console.log(`Élément sélectionné: ${t}`),t&&r(t)},[]);return e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(p,{items:B,selectedItemId:s,handleSelectedItemChange:i,hasNoIcons:!0})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple d'arborescence sans icônes, utilisant la prop hasNoIcons."}}}},U={render:()=>{const s=[{internalId:"root",label:"Structure imbriquée complexe",iconType:o.ICON_TYPE.FOLDER,children:[{internalId:"level1-1",label:"Niveau 1.1",iconType:o.ICON_TYPE.FOLDER,children:[{internalId:"level2-1",label:"Niveau 2.1",iconType:o.ICON_TYPE.FOLDER,children:[{internalId:"level3-1V",label:"VOUS M'AVEZ TROUVÉ HIHIHI",iconType:o.ICON_TYPE.FOLDER},{internalId:"level3-2",label:"Niveau 3.2",iconType:o.ICON_TYPE.SHARE}]},{internalId:"level2-2",label:"Niveau 2.2",iconType:o.ICON_TYPE.TRASH}]},{internalId:"level1-2",label:"Niveau 1.2",iconType:o.ICON_TYPE.CUSTOM,customIcon:P}]}],[r,i]=m.useState("level2-1"),n=m.useCallback((t,d)=>{console.log(`Élément sélectionné: ${d}`),d&&i(d)},[]);return e.jsx(l.Box,{sx:{maxWidth:400,overflowY:"hidden"},children:e.jsx(p,{items:s,selectedItemId:r,handleSelectedItemChange:n})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple d'une structure profondément imbriquée."}}}},W={render:()=>{const s=["primary","secondary","info"],[r,i]=m.useState({primary:"",secondary:"",info:""});return e.jsx(l.Box,{sx:{display:"flex",flexDirection:"row",gap:3,overflowY:"hidden"},children:s.map(n=>e.jsxs(l.Box,{sx:{maxWidth:250,overflowY:"hidden"},children:[e.jsxs(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:["Icônes ",n]}),e.jsx(p,{items:j,selectedItemId:r[n],handleSelectedItemChange:(t,d)=>{d&&i(u=>({...u,[n]:d}))},iconColor:n})]},n))})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Démonstration des principales options de couleurs disponibles pour les icônes."}}}},J={render:()=>{const s=()=>{var u,T;const d=[];for(let h=1;h<=5;h++){const y={internalId:`main-folder-${h}`,label:`Dossier principal ${h}`,iconType:o.ICON_TYPE.FOLDER,children:[]};for(let c=1;c<=10;c++){const I={internalId:`subfolder-${h}-${c}`,label:`Sous-dossier ${h}.${c}`,iconType:o.ICON_TYPE.FOLDER,children:[]};for(let b=1;b<=5;b++)(u=I.children)==null||u.push({internalId:`item-${h}-${c}-${b}`,label:`Élément ${h}.${c}.${b}`,iconType:o.ICON_TYPE.CUSTOM,customIcon:R});(T=y.children)==null||T.push(I)}d.push(y)}return d},[r,i]=m.useState(""),n=s(),t=m.useCallback((d,u)=>{u&&i(u)},[]);return e.jsxs(l.Box,{children:[e.jsx(a.Typography,{variant:"h6",gutterBottom:!0,children:"TreeView avec hauteur limitée et défilement vertical"}),e.jsxs(x.Grid,{container:!0,spacing:3,children:[e.jsx(x.Grid,{item:!0,xs:12,md:6,children:e.jsxs(g.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:"Hauteur maximale de 300px avec overflow"}),e.jsxs(l.Box,{sx:{border:"1px solid #e0e0e0",borderRadius:1},children:[e.jsx(p,{items:n,selectedItemId:r,handleSelectedItemChange:t,maxHeight:300}),e.jsx(l.Box,{sx:{p:2,bgcolor:"primary.light",color:"primary.contrastText",borderTop:"1px solid #e0e0e0"},children:e.jsx(a.Typography,{variant:"body2",children:"Cet élément reste collé sous le TreeView, même avec défilement"})})]})]})}),e.jsx(x.Grid,{item:!0,xs:12,md:6,children:e.jsxs(g.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:"Hauteur maximale de 500px avec overflow"}),e.jsxs(l.Box,{sx:{border:"1px solid #e0e0e0",borderRadius:1},children:[e.jsx(p,{items:n,selectedItemId:r,handleSelectedItemChange:t,maxHeight:500}),e.jsxs(l.Box,{sx:{display:"flex",justifyContent:"space-between",p:1.5,bgcolor:"background.default",borderTop:"1px solid #e0e0e0"},children:[e.jsx(v.Button,{size:"small",variant:"outlined",children:"Annuler"}),e.jsx(v.Button,{size:"small",variant:"contained",children:"Confirmer"})]})]})]})})]}),e.jsx(l.Box,{mt:4,children:e.jsxs(g.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:"TreeView expansé manuellement"}),e.jsxs(l.Box,{sx:{display:"flex",mb:2},children:[e.jsx(v.Button,{variant:"outlined",onClick:()=>i("subfolder-1-1"),sx:{mr:1},children:"Sélectionner Sous-dossier 1.1"}),e.jsx(v.Button,{variant:"outlined",onClick:()=>i("item-3-5-2"),children:"Sélectionner Élément 3.5.2"})]}),e.jsxs(l.Box,{sx:{borderRadius:1,border:"1px solid #e0e0e0"},children:[e.jsx(p,{items:n,selectedItemId:r,handleSelectedItemChange:t,maxHeight:400}),e.jsx(O.Divider,{}),e.jsxs(l.Box,{sx:{p:2,display:"flex",alignItems:"center"},children:[e.jsx(a.Typography,{variant:"body2",sx:{flexGrow:1},children:r?`Élément sélectionné: ${r}`:"Aucun élément sélectionné"}),e.jsx(L.Tooltip,{title:"Ce bandeau reste fixé sous l'arborescence",children:e.jsx(V.IconButton,{size:"small",color:"info",children:e.jsx(q,{fontSize:"small"})})})]})]})]})})]})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Cette story démontre l'utilisation de la prop `maxHeight` pour contrôler la hauteur maximale du TreeView. Elle permet de vérifier le comportement du défilement (overflow) lorsque le contenu dépasse la hauteur définie. Des éléments sont placés en dessous de chaque TreeView pour montrer que ceux-ci restent bien collés, tandis que seul le contenu de l'arborescence défile."}}}},Z={render:()=>{const[s,r]=m.useState("reports"),i=(d,u)=>{console.log("TreeView sélection:",u),u&&r(u)},n=d=>{console.log("Sélection externe:",d),r(d)},t=()=>{const u=D(S).find(T=>T.internalId===s);return u?u.label:"Aucun élément sélectionné"};return e.jsxs(l.Box,{sx:{width:"100%",overflowY:"hidden"},children:[e.jsxs(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:["Élément sélectionné: ",e.jsx("strong",{children:t()})," (ID:"," ",s,")"]}),e.jsx(k,{items:S,onRandomSelect:n}),e.jsxs(x.Grid,{container:!0,spacing:3,sx:{overflowY:"hidden"},children:[e.jsx(x.Grid,{item:!0,xs:12,md:6,children:e.jsxs(g.Paper,{sx:{p:2,overflowY:"hidden"},children:[e.jsx(a.Typography,{variant:"h6",gutterBottom:!0,children:"TreeView"}),e.jsx(p,{items:S,selectedItemId:s,handleSelectedItemChange:i})]})}),e.jsx(x.Grid,{item:!0,xs:12,md:6,children:e.jsx(H,{items:S,selectedItemId:s,onItemSelect:n})})]})]})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Démonstration de la synchronisation entre le TreeView et d'autres composants. Cette story montre comment le TreeView peut être intégré dans une interface complexe où la sélection peut provenir de différentes sources mais reste synchronisée."}}}},Q={render:()=>{var h,y;const[s,r]=m.useState([...j]),[i,n]=m.useState("folder1"),[t,d]=m.useState(null),u=[{id:"doc1",label:"Document 1"},{id:"doc2",label:"Document 2"},{id:"doc3",label:"Document 3"}],T=c=>{c.preventDefault();const I=c.target,b=I.closest("[data-treeview-item]");let f=null,E=null;b?(f=b.getAttribute("data-treeview-item"),E=b.getAttribute("data-treeview-item-label")):I.closest("[data-treeview-root]")&&(f=null,E="Racine du TreeView");try{const C=JSON.parse(c.dataTransfer.getData("application/json"));d({itemId:f,itemLabel:E,droppedItem:C}),f&&n(f)}catch(C){console.error("Erreur lors de la récupération des données",C)}};return e.jsxs(l.Box,{sx:{maxWidth:700,overflowY:"hidden"},children:[e.jsx(a.Typography,{variant:"h6",gutterBottom:!0,children:"Exemple de Drag & Drop avec le TreeView"}),e.jsx(a.Typography,{variant:"body2",gutterBottom:!0,children:"Glissez-déposez un des documents ci-dessous sur un élément du TreeView."}),e.jsx(l.Box,{sx:{display:"flex",mb:2},children:u.map(c=>e.jsx(A,{id:c.id,label:c.label},c.id))}),e.jsxs(x.Grid,{container:!0,spacing:3,children:[e.jsx(x.Grid,{item:!0,xs:12,md:6,children:e.jsxs(l.Box,{sx:{p:2,border:"1px dashed gray",borderRadius:1,minHeight:300,overflowY:"hidden",backgroundColor:"background.paper"},onDragOver:c=>c.preventDefault(),onDrop:T,children:[e.jsx(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:"Zone de drop"}),e.jsx(p,{items:s,selectedItemId:i,handleSelectedItemChange:(c,I)=>{I&&n(I)}})]})}),e.jsx(x.Grid,{item:!0,xs:12,md:6,children:e.jsxs(g.Paper,{sx:{p:2,minHeight:300},children:[e.jsx(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:"Informations du dernier drop"}),t?e.jsxs(l.Box,{children:[e.jsxs(a.Typography,{variant:"body2",children:[e.jsx("strong",{children:"Élément cible :"})," ",t.itemLabel," ",t.itemId&&`(ID: ${t.itemId})`]}),e.jsxs(a.Typography,{variant:"body2",children:[e.jsx("strong",{children:"Élément déposé :"})," ",(h=t.droppedItem)==null?void 0:h.label," (ID:"," ",(y=t.droppedItem)==null?void 0:y.id,")"]}),e.jsxs(l.Box,{sx:{mt:2},children:[e.jsx(a.Typography,{variant:"body2",children:e.jsx("strong",{children:"Code pour gérer ce drop :"})}),e.jsx(g.Paper,{sx:{p:1,mt:1,backgroundColor:"grey.100"},children:e.jsx("pre",{style:{margin:0,fontSize:"0.8rem",whiteSpace:"pre-wrap"},children:`// Dans votre gestionnaire d'événements
50
+ `}}}},w=i=>{const n=[],o=s=>{n.push(s),s.children&&s.children.forEach(r=>o(r))};return i.forEach(s=>o(s)),n},k=({items:i,selectedItemId:n,onItemSelect:o})=>{const s=w(i);return e.jsxs(I.Paper,{sx:{width:"100%",maxHeight:300,overflow:"auto"},children:[e.jsx(a.Typography,{variant:"h6",sx:{p:2},children:"Sélection externe"}),e.jsx(P.Divider,{}),e.jsx(L.List,{children:s.map(r=>e.jsx(_.ListItem,{disablePadding:!0,children:e.jsx(m.ListItemButton,{selected:n===r.internalId,onClick:()=>o(r.internalId),children:e.jsx(m.ListItemText,{primary:r.label})})},r.internalId))})]})},H=({items:i,onRandomSelect:n})=>{const o=w(i),s=()=>{const r=Math.floor(Math.random()*o.length);n(o[r].internalId)};return e.jsx(l.Box,{sx:{mt:2,mb:2},children:e.jsx(g.Button,{variant:"contained",color:"primary",onClick:s,children:"Sélection aléatoire"})})},A=({id:i,label:n})=>e.jsx(l.Box,{draggable:!0,onDragStart:o=>{o.dataTransfer.setData("application/json",JSON.stringify({id:i,label:n}))},sx:{padding:1,margin:1,backgroundColor:"grey.100",borderRadius:1,display:"inline-block",cursor:"grab","&:hover":{backgroundColor:"grey.200"}},children:e.jsxs(a.Typography,{variant:"body2",display:"flex",alignItems:"center",children:[e.jsx(D,{fontSize:"small",sx:{mr:1}}),n]})}),j=[{internalId:"documents",label:"Mes formulaires",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"folder1",label:"Premier dossier",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"subfolder1",label:"Sous-dossier 1",iconType:t.ICON_TYPE.FOLDER},{internalId:"subfolder2",label:"Sous-dossier 2",iconType:t.ICON_TYPE.FOLDER}]},{internalId:"folder2",label:"Deuxième dossier",iconType:t.ICON_TYPE.FOLDER},{internalId:"folder3",label:"Troisième dossier",iconType:t.ICON_TYPE.FOLDER}]},{internalId:"shared",label:"Formulaires partagés avec moi",iconType:t.ICON_TYPE.SHARE},{internalId:"trash",label:"Corbeille",iconType:t.ICON_TYPE.TRASH}],Y=[{internalId:"bookmarks",label:"Favoris",iconType:R,children:[{internalId:"important",label:"Important",iconType:t.ICON_TYPE.CUSTOM,customIcon:q}]},...j],S=[{internalId:"documents",label:"Documents",iconType:t.ICON_TYPE.SHARE,children:[{internalId:"reports",label:"Rapports",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"report1",label:"Rapport Janvier",iconType:t.ICON_TYPE.FOLDER},{internalId:"report2",label:"Rapport Février",iconType:t.ICON_TYPE.FOLDER},{internalId:"report3",label:"Rapport Mars",iconType:t.ICON_TYPE.FOLDER}]},{internalId:"invoices",label:"Factures",iconType:t.ICON_TYPE.FOLDER}]},{internalId:"media",label:"Médias",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"images",label:"Images",iconType:t.ICON_TYPE.FOLDER},{internalId:"videos",label:"Vidéos",iconType:t.ICON_TYPE.FOLDER}]},{internalId:"downloads",label:"Téléchargements",iconType:t.ICON_TYPE.FOLDER}],M={render:()=>{const[i,n]=u.useState(""),o=u.useCallback((s,r)=>{console.log(`Élément sélectionné: ${r}`),r&&n(r)},[]);return e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(h,{items:j,selectedItemId:i,handleSelectedItemChange:o})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple de base avec des icônes standard et démonstration de sélection."}}}},z={args:{items:j,selectedItemId:"folder1",handleSelectedItemChange:(i,n)=>{console.log(`Élément sélectionné: ${n}`)},iconColor:"success"},render:i=>e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(h,{...i})}),parameters:{docs:{description:{story:"Cette story permet de contrôler les propriétés du TreeView directement via le panneau de contrôle de Storybook. Essayez de changer la couleur des icônes pour voir l'effet en temps réel."}}}},$={render:()=>{const[i,n]=u.useState("bookmarks"),o=u.useCallback((s,r)=>{console.log(`Élément sélectionné: ${r}`),r&&n(r)},[]);return e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(h,{items:Y,selectedItemId:i,handleSelectedItemChange:o})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple utilisant à la fois des icônes prédéfinies et des icônes personnalisées."}}}},G={render:()=>{const[i,n]=u.useState("item1"),o=u.useCallback((s,r)=>{console.log(`Élément sélectionné: ${r}`),r&&n(r)},[]);return e.jsx(l.Box,{sx:{maxWidth:300,overflowY:"hidden"},children:e.jsx(h,{items:Y,selectedItemId:i,handleSelectedItemChange:o,hasNoIcons:!0})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple d'arborescence sans icônes, utilisant la prop hasNoIcons."}}}},U={render:()=>{const i=[{internalId:"root",label:"Structure imbriquée complexe",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"level1-1",label:"Niveau 1.1",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"level2-1",label:"Niveau 2.1",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"level3-1V",label:"VOUS M'AVEZ TROUVÉ HIHIHI",iconType:t.ICON_TYPE.FOLDER},{internalId:"level3-2",label:"Niveau 3.2",iconType:t.ICON_TYPE.SHARE}]},{internalId:"level2-2",label:"Niveau 2.2",iconType:t.ICON_TYPE.TRASH}]},{internalId:"level1-2",label:"Niveau 1.2",iconType:t.ICON_TYPE.CUSTOM,customIcon:R}]}],[n,o]=u.useState("level2-1"),s=u.useCallback((r,d)=>{console.log(`Élément sélectionné: ${d}`),d&&o(d)},[]);return e.jsx(l.Box,{sx:{maxWidth:400,overflowY:"hidden"},children:e.jsx(h,{items:i,selectedItemId:n,handleSelectedItemChange:s})})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Exemple d'une structure profondément imbriquée."}}}},W={render:()=>{const i=["primary","secondary","info"],[n,o]=u.useState({primary:"",secondary:"",info:""});return e.jsx(l.Box,{sx:{display:"flex",flexDirection:"row",gap:3,overflowY:"hidden"},children:i.map(s=>e.jsxs(l.Box,{sx:{maxWidth:250,overflowY:"hidden"},children:[e.jsxs(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:["Icônes ",s]}),e.jsx(h,{items:j,selectedItemId:n[s],handleSelectedItemChange:(r,d)=>{d&&o(p=>({...p,[s]:d}))},iconColor:s})]},s))})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Démonstration des principales options de couleurs disponibles pour les icônes."}}}},J={render:()=>{const i=()=>{var p,y;const d=[];for(let x=1;x<=5;x++){const f={internalId:`main-folder-${x}`,label:`Dossier principal ${x}`,iconType:t.ICON_TYPE.FOLDER,children:[]};for(let c=1;c<=10;c++){const T={internalId:`subfolder-${x}-${c}`,label:`Sous-dossier ${x}.${c}`,iconType:t.ICON_TYPE.FOLDER,children:[]};for(let b=1;b<=5;b++)(p=T.children)==null||p.push({internalId:`item-${x}-${c}-${b}`,label:`Élément ${x}.${c}.${b}`,iconType:t.ICON_TYPE.CUSTOM,customIcon:D});(y=f.children)==null||y.push(T)}d.push(f)}return d},[n,o]=u.useState(""),s=i(),r=u.useCallback((d,p)=>{p&&o(p)},[]);return e.jsxs(l.Box,{children:[e.jsx(a.Typography,{variant:"h6",gutterBottom:!0,children:"TreeView avec hauteur limitée et défilement vertical"}),e.jsxs(m.Grid,{container:!0,spacing:3,children:[e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsxs(I.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:"Hauteur maximale de 300px avec overflow"}),e.jsxs(l.Box,{sx:{border:"1px solid #e0e0e0",borderRadius:1},children:[e.jsx(h,{items:s,selectedItemId:n,handleSelectedItemChange:r,maxHeight:300}),e.jsx(l.Box,{sx:{p:2,bgcolor:"primary.light",color:"primary.contrastText",borderTop:"1px solid #e0e0e0"},children:e.jsx(a.Typography,{variant:"body2",children:"Cet élément reste collé sous le TreeView, même avec défilement"})})]})]})}),e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsxs(I.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:"Hauteur maximale de 500px avec overflow"}),e.jsxs(l.Box,{sx:{border:"1px solid #e0e0e0",borderRadius:1},children:[e.jsx(h,{items:s,selectedItemId:n,handleSelectedItemChange:r,maxHeight:500}),e.jsxs(l.Box,{sx:{display:"flex",justifyContent:"space-between",p:1.5,bgcolor:"background.default",borderTop:"1px solid #e0e0e0"},children:[e.jsx(g.Button,{size:"small",variant:"outlined",children:"Annuler"}),e.jsx(g.Button,{size:"small",variant:"contained",children:"Confirmer"})]})]})]})})]}),e.jsx(l.Box,{mt:4,children:e.jsxs(I.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle2",gutterBottom:!0,children:"TreeView expansé manuellement"}),e.jsxs(l.Box,{sx:{display:"flex",mb:2},children:[e.jsx(g.Button,{variant:"outlined",onClick:()=>o("subfolder-1-1"),sx:{mr:1},children:"Sélectionner Sous-dossier 1.1"}),e.jsx(g.Button,{variant:"outlined",onClick:()=>o("item-3-5-2"),children:"Sélectionner Élément 3.5.2"})]}),e.jsxs(l.Box,{sx:{borderRadius:1,border:"1px solid #e0e0e0"},children:[e.jsx(h,{items:s,selectedItemId:n,handleSelectedItemChange:r,maxHeight:400}),e.jsx(P.Divider,{}),e.jsxs(l.Box,{sx:{p:2,display:"flex",alignItems:"center"},children:[e.jsx(a.Typography,{variant:"body2",sx:{flexGrow:1},children:n?`Élément sélectionné: ${n}`:"Aucun élément sélectionné"}),e.jsx(B.Tooltip,{title:"Ce bandeau reste fixé sous l'arborescence",children:e.jsx(N.IconButton,{size:"small",color:"info",children:e.jsx(V,{fontSize:"small"})})})]})]})]})})]})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Cette story démontre l'utilisation de la prop `maxHeight` pour contrôler la hauteur maximale du TreeView. Elle permet de vérifier le comportement du défilement (overflow) lorsque le contenu dépasse la hauteur définie. Des éléments sont placés en dessous de chaque TreeView pour montrer que ceux-ci restent bien collés, tandis que seul le contenu de l'arborescence défile."}}}},X={render:()=>{const[i,n]=u.useState("reports"),o=(d,p)=>{console.log("TreeView sélection:",p),p&&n(p)},s=d=>{console.log("Sélection externe:",d),n(d)},r=()=>{const p=w(S).find(y=>y.internalId===i);return p?p.label:"Aucun élément sélectionné"};return e.jsxs(l.Box,{sx:{width:"100%",overflowY:"hidden"},children:[e.jsxs(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:["Élément sélectionné: ",e.jsx("strong",{children:r()})," (ID:"," ",i,")"]}),e.jsx(H,{items:S,onRandomSelect:s}),e.jsxs(m.Grid,{container:!0,spacing:3,sx:{overflowY:"hidden"},children:[e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsxs(I.Paper,{sx:{p:2,overflowY:"hidden"},children:[e.jsx(a.Typography,{variant:"h6",gutterBottom:!0,children:"TreeView"}),e.jsx(h,{items:S,selectedItemId:i,handleSelectedItemChange:o})]})}),e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsx(k,{items:S,selectedItemId:i,onItemSelect:s})})]})]})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Démonstration de la synchronisation entre le TreeView et d'autres composants. Cette story montre comment le TreeView peut être intégré dans une interface complexe où la sélection peut provenir de différentes sources mais reste synchronisée."}}}},Z={render:()=>{var x,f;const[i,n]=u.useState([...j]),[o,s]=u.useState("folder1"),[r,d]=u.useState(null),p=[{id:"doc1",label:"Document 1"},{id:"doc2",label:"Document 2"},{id:"doc3",label:"Document 3"}],y=c=>{c.preventDefault();const T=c.target,b=T.closest("[data-treeview-item]");let v=null,E=null;b?(v=b.getAttribute("data-treeview-item"),E=b.getAttribute("data-treeview-item-label")):T.closest("[data-treeview-root]")&&(v=null,E="Racine du TreeView");try{const C=JSON.parse(c.dataTransfer.getData("application/json"));d({itemId:v,itemLabel:E,droppedItem:C}),v&&s(v)}catch(C){console.error("Erreur lors de la récupération des données",C)}};return e.jsxs(l.Box,{sx:{maxWidth:700,overflowY:"hidden"},children:[e.jsx(a.Typography,{variant:"h6",gutterBottom:!0,children:"Exemple de Drag & Drop avec le TreeView"}),e.jsx(a.Typography,{variant:"body2",gutterBottom:!0,children:"Glissez-déposez un des documents ci-dessous sur un élément du TreeView."}),e.jsx(l.Box,{sx:{display:"flex",mb:2},children:p.map(c=>e.jsx(A,{id:c.id,label:c.label},c.id))}),e.jsxs(m.Grid,{container:!0,spacing:3,children:[e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsxs(l.Box,{sx:{p:2,border:"1px dashed gray",borderRadius:1,minHeight:300,overflowY:"hidden",backgroundColor:"background.paper"},onDragOver:c=>c.preventDefault(),onDrop:y,children:[e.jsx(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:"Zone de drop"}),e.jsx(h,{items:i,selectedItemId:o,handleSelectedItemChange:(c,T)=>{T&&s(T)}})]})}),e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsxs(I.Paper,{sx:{p:2,minHeight:300},children:[e.jsx(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:"Informations du dernier drop"}),r?e.jsxs(l.Box,{children:[e.jsxs(a.Typography,{variant:"body2",children:[e.jsx("strong",{children:"Élément cible :"})," ",r.itemLabel," ",r.itemId&&`(ID: ${r.itemId})`]}),e.jsxs(a.Typography,{variant:"body2",children:[e.jsx("strong",{children:"Élément déposé :"})," ",(x=r.droppedItem)==null?void 0:x.label," (ID:"," ",(f=r.droppedItem)==null?void 0:f.id,")"]}),e.jsxs(l.Box,{sx:{mt:2},children:[e.jsx(a.Typography,{variant:"body2",children:e.jsx("strong",{children:"Code pour gérer ce drop :"})}),e.jsx(I.Paper,{sx:{p:1,mt:1,backgroundColor:"grey.100"},children:e.jsx("pre",{style:{margin:0,fontSize:"0.8rem",whiteSpace:"pre-wrap"},children:`// Dans votre gestionnaire d'événements
51
51
  const handleDrop = (e) => {
52
52
  e.preventDefault();
53
53
 
@@ -66,4 +66,4 @@ const handleDrop = (e) => {
66
66
 
67
67
  // Votre logique pour traiter le drop...
68
68
  }
69
- };`})})]})]}):e.jsx(a.Typography,{variant:"body2",children:"Aucun élément déposé pour le moment. Glissez un document sur le TreeView pour voir les informations ici."})]})})]})]})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Cette story démontre comment utiliser les attributs `data-` du TreeView pour implémenter une fonctionnalité de drag and drop. Glissez un document sur un élément du TreeView pour voir comment accéder aux informations de l'élément cible."}}}};exports.AvecDragAndDrop=Q;exports.AvecIconesPersonnalisees=M;exports.Controlable=z;exports.Default=$;exports.GrandeHauteurLimitee=J;exports.OptionsDeCouleurs=W;exports.SansIcones=G;exports.StructureImbriquee=U;exports.Synchronicite=Z;exports.default=F;
69
+ };`})})]})]}):e.jsx(a.Typography,{variant:"body2",children:"Aucun élément déposé pour le moment. Glissez un document sur le TreeView pour voir les informations ici."})]})})]})]})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Cette story démontre comment utiliser les attributs `data-` du TreeView pour implémenter une fonctionnalité de drag and drop. Glissez un document sur un élément du TreeView pour voir comment accéder aux informations de l'élément cible."}}}},Q={render:()=>{const i=[{internalId:"root-1",label:"Dossier principal",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"folder-1-1",label:"Sous-dossier avec un nom très long pour tester",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"file-1-1-1",label:"Document A",iconType:t.ICON_TYPE.CUSTOM,customIcon:D},{internalId:"folder-1-1-2",label:"Sous-sous-dossier",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"file-1-1-2-1",label:"Image.jpg",iconType:t.ICON_TYPE.CUSTOM},{internalId:"file-1-1-2-2",label:"Document.pdf",iconType:t.ICON_TYPE.CUSTOM,children:[{internalId:"file-1-1-2-7",label:"Image.jpg",iconType:t.ICON_TYPE.CUSTOM},{internalId:"file-1-1-2-18",label:"Document.pdf",iconType:t.ICON_TYPE.CUSTOM}]}]}]},{internalId:"folder-1-2",label:"Court",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"file-1-2-1",label:"Fichier",iconType:t.ICON_TYPE.CUSTOM}]}]},{internalId:"root-2",label:"Second dossier principal",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"folder-2-1",label:"Sous-dossier A",iconType:t.ICON_TYPE.FOLDER},{internalId:"folder-2-2",label:"Sous-dossier B",iconType:t.ICON_TYPE.FOLDER,children:[]}]},{internalId:"root-3",label:"Troisième dossier principal",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"folder-3-1",label:"Sous-dossier X",iconType:t.ICON_TYPE.FOLDER,children:[{internalId:"file-3-1-1",label:"Fichier X-1",iconType:t.ICON_TYPE.CUSTOM},{internalId:"file-3-1-2",label:"Fichier X-2",iconType:t.ICON_TYPE.CUSTOM}]}]}],[n,o]=u.useState(""),s=u.useCallback((r,d)=>{d&&o(d)},[]);return e.jsxs(l.Box,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"h5",gutterBottom:!0,children:"Test d'alignement des lignes verticales"}),e.jsx(a.Typography,{variant:"body2",color:"text.secondary",paragraph:!0,children:"Cette story permet de vérifier si les lignes verticales s'arrêtent toutes au même niveau, indépendamment de la taille des éléments. Essayez d'expandre et de collapser les différents niveaux."}),e.jsxs(m.Grid,{container:!0,spacing:3,children:[e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsxs(I.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:"TreeView avec plusieurs niveaux imbriqués"}),e.jsx(l.Box,{sx:{border:"1px solid #e0e0e0",borderRadius:1},children:e.jsx(h,{items:i,selectedItemId:n,handleSelectedItemChange:s,maxHeight:400})})]})}),e.jsx(m.Grid,{item:!0,xs:12,md:6,children:e.jsxs(I.Paper,{sx:{p:2},children:[e.jsx(a.Typography,{variant:"subtitle1",gutterBottom:!0,children:"Détails de l'élément sélectionné"}),e.jsx(l.Box,{sx:{p:2,backgroundColor:"#f5f5f5",borderRadius:1,minHeight:100},children:n?e.jsxs(a.Typography,{children:["Élément sélectionné: ",e.jsx("strong",{children:n})]}):e.jsx(a.Typography,{color:"text.secondary",children:"Aucun élément sélectionné. Cliquez sur un élément dans l'arborescence."})}),e.jsxs(l.Box,{sx:{mt:2},children:[e.jsx(g.Button,{variant:"outlined",onClick:()=>o("file-1-1-2-1"),sx:{mr:1},children:'Sélectionner "Image.jpg"'}),e.jsx(g.Button,{variant:"outlined",onClick:()=>o("folder-3-1"),children:'Sélectionner "Sous-dossier X"'})]})]})})]})]})},parameters:{controls:{disable:!0},actions:{disable:!0},docs:{description:{story:"Cette story permet de tester si les lignes verticales du TreeView s'alignent correctement. Elle utilise une arborescence à plusieurs niveaux avec des éléments de différentes tailles et labels de différentes longueurs pour mettre en évidence le comportement des lignes. Vérifiez que toutes les lignes verticales s'arrêtent au même niveau, créant ainsi une structure d'arborescence propre et cohérente."}}}};exports.AvecDragAndDrop=Z;exports.AvecIconesPersonnalisees=$;exports.Controlable=z;exports.Default=M;exports.GrandeHauteurLimitee=J;exports.OptionsDeCouleurs=W;exports.SansIcones=G;exports.StructureImbriquee=U;exports.Synchronicite=X;exports.TestAlignementLignes=Q;exports.default=F;
@@ -12,3 +12,4 @@ export declare const OptionsDeCouleurs: Story;
12
12
  export declare const GrandeHauteurLimitee: Story;
13
13
  export declare const Synchronicite: Story;
14
14
  export declare const AvecDragAndDrop: Story;
15
+ export declare const TestAlignementLignes: Story;