@shibui-ui/ui 1.24.1 → 1.25.1

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 (460) hide show
  1. package/dist/components/atoms/index.d.ts +45 -16
  2. package/dist/components/atoms/index.d.ts.map +1 -1
  3. package/dist/components/molecules/index.d.ts +20 -1
  4. package/dist/components/molecules/index.d.ts.map +1 -1
  5. package/dist/components/organisms/index.d.ts +17 -1
  6. package/dist/components/organisms/index.d.ts.map +1 -1
  7. package/dist/index.d.ts +3 -82
  8. package/dist/index.d.ts.map +1 -1
  9. package/dist/index.js +79 -80
  10. package/dist/index.js.map +1 -1
  11. package/dist/index10.js +82 -18
  12. package/dist/index10.js.map +1 -1
  13. package/dist/index11.js +84 -69
  14. package/dist/index11.js.map +1 -1
  15. package/dist/index12.js +40 -26
  16. package/dist/index12.js.map +1 -1
  17. package/dist/index13.js +16 -39
  18. package/dist/index13.js.map +1 -1
  19. package/dist/index14.js +29 -44
  20. package/dist/index14.js.map +1 -1
  21. package/dist/index15.js +16 -117
  22. package/dist/index15.js.map +1 -1
  23. package/dist/index16.js +48 -40
  24. package/dist/index16.js.map +1 -1
  25. package/dist/index17.js +41 -25
  26. package/dist/index17.js.map +1 -1
  27. package/dist/index18.js +76 -49
  28. package/dist/index18.js.map +1 -1
  29. package/dist/index19.js +19 -39
  30. package/dist/index19.js.map +1 -1
  31. package/dist/index194.js +94 -24
  32. package/dist/index194.js.map +1 -1
  33. package/dist/index195.js +2 -2
  34. package/dist/index197.js +2 -24
  35. package/dist/index197.js.map +1 -1
  36. package/dist/index198.js +74 -2
  37. package/dist/index198.js.map +1 -1
  38. package/dist/index199.js +64 -35
  39. package/dist/index199.js.map +1 -1
  40. package/dist/index20.js +21 -41
  41. package/dist/index20.js.map +1 -1
  42. package/dist/index200.js +2 -2
  43. package/dist/index201.js +54 -13
  44. package/dist/index201.js.map +1 -1
  45. package/dist/index202.js +2 -2
  46. package/dist/index203.js +2 -2
  47. package/dist/index204.js +143 -157
  48. package/dist/index204.js.map +1 -1
  49. package/dist/index205.js +43 -24
  50. package/dist/index205.js.map +1 -1
  51. package/dist/index206.js +51 -2
  52. package/dist/index206.js.map +1 -1
  53. package/dist/index207.js +2 -11
  54. package/dist/index207.js.map +1 -1
  55. package/dist/index208.js +33 -2
  56. package/dist/index208.js.map +1 -1
  57. package/dist/index209.js +2 -91
  58. package/dist/index209.js.map +1 -1
  59. package/dist/index21.js +90 -26
  60. package/dist/index21.js.map +1 -1
  61. package/dist/index210.js +6 -2
  62. package/dist/index210.js.map +1 -1
  63. package/dist/index211.js +2 -41
  64. package/dist/index211.js.map +1 -1
  65. package/dist/index212.js +260 -2
  66. package/dist/index212.js.map +1 -1
  67. package/dist/index213.js +16 -5
  68. package/dist/index213.js.map +1 -1
  69. package/dist/index214.js +2 -2
  70. package/dist/index215.js +2 -35
  71. package/dist/index215.js.map +1 -1
  72. package/dist/index216.js +59 -42
  73. package/dist/index216.js.map +1 -1
  74. package/dist/index217.js +32 -2
  75. package/dist/index217.js.map +1 -1
  76. package/dist/index218.js +2 -85
  77. package/dist/index218.js.map +1 -1
  78. package/dist/index219.js +2 -2
  79. package/dist/index22.js +41 -48
  80. package/dist/index22.js.map +1 -1
  81. package/dist/index220.js +73 -65
  82. package/dist/index220.js.map +1 -1
  83. package/dist/index221.js +81 -2
  84. package/dist/index221.js.map +1 -1
  85. package/dist/index222.js +2 -10
  86. package/dist/index222.js.map +1 -1
  87. package/dist/index223.js +133 -2
  88. package/dist/index223.js.map +1 -1
  89. package/dist/index224.js +2 -26
  90. package/dist/index224.js.map +1 -1
  91. package/dist/index225.js +2 -2
  92. package/dist/index226.js +66 -12
  93. package/dist/index226.js.map +1 -1
  94. package/dist/index227.js +97 -2
  95. package/dist/index227.js.map +1 -1
  96. package/dist/index228.js +2 -2
  97. package/dist/index229.js +62 -24
  98. package/dist/index229.js.map +1 -1
  99. package/dist/index23.js +50 -94
  100. package/dist/index23.js.map +1 -1
  101. package/dist/index230.js +2 -2
  102. package/dist/index231.js +2 -2
  103. package/dist/index232.js +12 -2
  104. package/dist/index232.js.map +1 -1
  105. package/dist/index233.js +5 -16
  106. package/dist/index233.js.map +1 -1
  107. package/dist/index234.js +2 -2
  108. package/dist/index235.js +11 -9
  109. package/dist/index235.js.map +1 -1
  110. package/dist/index236.js +2 -2
  111. package/dist/index237.js +76 -34
  112. package/dist/index237.js.map +1 -1
  113. package/dist/index238.js +2 -2
  114. package/dist/index239.js +2 -27
  115. package/dist/index239.js.map +1 -1
  116. package/dist/index24.js +37 -34
  117. package/dist/index24.js.map +1 -1
  118. package/dist/index240.js +39 -2
  119. package/dist/index240.js.map +1 -1
  120. package/dist/index241.js +2 -34
  121. package/dist/index241.js.map +1 -1
  122. package/dist/index242.js +235 -12
  123. package/dist/index242.js.map +1 -1
  124. package/dist/index243.js +82 -2
  125. package/dist/index243.js.map +1 -1
  126. package/dist/index244.js +2 -9
  127. package/dist/index244.js.map +1 -1
  128. package/dist/index245.js +94 -2
  129. package/dist/index245.js.map +1 -1
  130. package/dist/index246.js +2 -5
  131. package/dist/index246.js.map +1 -1
  132. package/dist/index247.js +268 -2
  133. package/dist/index247.js.map +1 -1
  134. package/dist/index248.js +2 -36
  135. package/dist/index248.js.map +1 -1
  136. package/dist/index249.js +21 -2
  137. package/dist/index249.js.map +1 -1
  138. package/dist/index25.js +51 -32
  139. package/dist/index25.js.map +1 -1
  140. package/dist/index250.js +2 -31
  141. package/dist/index250.js.map +1 -1
  142. package/dist/index251.js +9 -2
  143. package/dist/index251.js.map +1 -1
  144. package/dist/index252.js +2 -19
  145. package/dist/index252.js.map +1 -1
  146. package/dist/index253.js +15 -2
  147. package/dist/index253.js.map +1 -1
  148. package/dist/index254.js +2 -2
  149. package/dist/index255.js +135 -69
  150. package/dist/index255.js.map +1 -1
  151. package/dist/index256.js +2 -11
  152. package/dist/index256.js.map +1 -1
  153. package/dist/index257.js +5 -2
  154. package/dist/index257.js.map +1 -1
  155. package/dist/index258.js +2 -78
  156. package/dist/index258.js.map +1 -1
  157. package/dist/index259.js +9 -2
  158. package/dist/index259.js.map +1 -1
  159. package/dist/index26.js +31 -236
  160. package/dist/index26.js.map +1 -1
  161. package/dist/index260.js +2 -32
  162. package/dist/index260.js.map +1 -1
  163. package/dist/index261.js +2 -2
  164. package/dist/index262.js +92 -9
  165. package/dist/index262.js.map +1 -1
  166. package/dist/index263.js +59 -2
  167. package/dist/index263.js.map +1 -1
  168. package/dist/index264.js +2 -16
  169. package/dist/index264.js.map +1 -1
  170. package/dist/index265.js +41 -2
  171. package/dist/index265.js.map +1 -1
  172. package/dist/index266.js +2 -16
  173. package/dist/index266.js.map +1 -1
  174. package/dist/index267.js +34 -9
  175. package/dist/index267.js.map +1 -1
  176. package/dist/index268.js +8 -54
  177. package/dist/index268.js.map +1 -1
  178. package/dist/index269.js +2 -2
  179. package/dist/index27.js +27 -58
  180. package/dist/index27.js.map +1 -1
  181. package/dist/index270.js +42 -7
  182. package/dist/index270.js.map +1 -1
  183. package/dist/index271.js +2 -2
  184. package/dist/index272.js +2 -34
  185. package/dist/index272.js.map +1 -1
  186. package/dist/index273.js +16 -2
  187. package/dist/index273.js.map +1 -1
  188. package/dist/index274.js +9 -2
  189. package/dist/index274.js.map +1 -1
  190. package/dist/index275.js +6 -13
  191. package/dist/index275.js.map +1 -1
  192. package/dist/index276.js +2 -2
  193. package/dist/index277.js +8 -15
  194. package/dist/index277.js.map +1 -1
  195. package/dist/index278.js +2 -2
  196. package/dist/index279.js +55 -2
  197. package/dist/index279.js.map +1 -1
  198. package/dist/index28.js +247 -24
  199. package/dist/index28.js.map +1 -1
  200. package/dist/index280.js +2 -42
  201. package/dist/index280.js.map +1 -1
  202. package/dist/index281.js +2 -100
  203. package/dist/index281.js.map +1 -1
  204. package/dist/index282.js +20 -2
  205. package/dist/index282.js.map +1 -1
  206. package/dist/index283.js +2 -97
  207. package/dist/index283.js.map +1 -1
  208. package/dist/index284.js +33 -2
  209. package/dist/index284.js.map +1 -1
  210. package/dist/index285.js +6 -27
  211. package/dist/index285.js.map +1 -1
  212. package/dist/index286.js +2 -2
  213. package/dist/index287.js +9 -44
  214. package/dist/index287.js.map +1 -1
  215. package/dist/index288.js +2 -2
  216. package/dist/index289.js +2 -33
  217. package/dist/index289.js.map +1 -1
  218. package/dist/index29.js +249 -39
  219. package/dist/index29.js.map +1 -1
  220. package/dist/index290.js +36 -2
  221. package/dist/index290.js.map +1 -1
  222. package/dist/index291.js +2 -57
  223. package/dist/index291.js.map +1 -1
  224. package/dist/index292.js +24 -2
  225. package/dist/index292.js.map +1 -1
  226. package/dist/index293.js +2 -2
  227. package/dist/index294.js +26 -247
  228. package/dist/index294.js.map +1 -1
  229. package/dist/index295.js +2 -2
  230. package/dist/index296.js +2 -72
  231. package/dist/index296.js.map +1 -1
  232. package/dist/index297.js +42 -2
  233. package/dist/index297.js.map +1 -1
  234. package/dist/index298.js +7 -56
  235. package/dist/index298.js.map +1 -1
  236. package/dist/index299.js +2 -133
  237. package/dist/index299.js.map +1 -1
  238. package/dist/index30.js +32 -19
  239. package/dist/index30.js.map +1 -1
  240. package/dist/index300.js +30 -2
  241. package/dist/index300.js.map +1 -1
  242. package/dist/index301.js +2 -12
  243. package/dist/index301.js.map +1 -1
  244. package/dist/index302.js +34 -2
  245. package/dist/index302.js.map +1 -1
  246. package/dist/index303.js +2 -162
  247. package/dist/index303.js.map +1 -1
  248. package/dist/index304.js +26 -42
  249. package/dist/index304.js.map +1 -1
  250. package/dist/index305.js +2 -81
  251. package/dist/index305.js.map +1 -1
  252. package/dist/index306.js +10 -2
  253. package/dist/index306.js.map +1 -1
  254. package/dist/index307.js +2 -71
  255. package/dist/index307.js.map +1 -1
  256. package/dist/index308.js +2 -2
  257. package/dist/index309.js +19 -2
  258. package/dist/index309.js.map +1 -1
  259. package/dist/index31.js +96 -11
  260. package/dist/index31.js.map +1 -1
  261. package/dist/index310.js +2 -81
  262. package/dist/index310.js.map +1 -1
  263. package/dist/index311.js +2 -2
  264. package/dist/index312.js +42 -2
  265. package/dist/index312.js.map +1 -1
  266. package/dist/index313.js +2 -74
  267. package/dist/index313.js.map +1 -1
  268. package/dist/index314.js +25 -67
  269. package/dist/index314.js.map +1 -1
  270. package/dist/index315.js +2 -2
  271. package/dist/index316.js +9 -17
  272. package/dist/index316.js.map +1 -1
  273. package/dist/index317.js +2 -2
  274. package/dist/index318.js +84 -32
  275. package/dist/index318.js.map +1 -1
  276. package/dist/index319.js +2 -2
  277. package/dist/index32.js +40 -48
  278. package/dist/index32.js.map +1 -1
  279. package/dist/index320.js +68 -77
  280. package/dist/index320.js.map +1 -1
  281. package/dist/index321.js +2 -2
  282. package/dist/index322.js +12 -148
  283. package/dist/index322.js.map +1 -1
  284. package/dist/index323.js +1 -1
  285. package/dist/index324.js +28 -6
  286. package/dist/index324.js.map +1 -1
  287. package/dist/index325.js +2 -2
  288. package/dist/index326.js +78 -87
  289. package/dist/index326.js.map +1 -1
  290. package/dist/index327.js +2 -2
  291. package/dist/index328.js +78 -2
  292. package/dist/index328.js.map +1 -1
  293. package/dist/index329.js +2 -237
  294. package/dist/index329.js.map +1 -1
  295. package/dist/index33.js +20 -56
  296. package/dist/index33.js.map +1 -1
  297. package/dist/index330.js +11 -6
  298. package/dist/index330.js.map +1 -1
  299. package/dist/index331.js +2 -2
  300. package/dist/index332.js +18 -59
  301. package/dist/index332.js.map +1 -1
  302. package/dist/index333.js +2 -2
  303. package/dist/index334.js +12 -5
  304. package/dist/index334.js.map +1 -1
  305. package/dist/index335.js +2 -2
  306. package/dist/index336.js +2 -15
  307. package/dist/index336.js.map +1 -1
  308. package/dist/index337.js +88 -2
  309. package/dist/index337.js.map +1 -1
  310. package/dist/index338.js +24 -2
  311. package/dist/index338.js.map +1 -1
  312. package/dist/index339.js +2 -92
  313. package/dist/index339.js.map +1 -1
  314. package/dist/index34.js +59 -35
  315. package/dist/index34.js.map +1 -1
  316. package/dist/index340.js +42 -14
  317. package/dist/index340.js.map +1 -1
  318. package/dist/index341.js +2 -2
  319. package/dist/index342.js +22 -80
  320. package/dist/index342.js.map +1 -1
  321. package/dist/index343.js +2 -2
  322. package/dist/index344.js +2 -18
  323. package/dist/index344.js.map +1 -1
  324. package/dist/index345.js +16 -2
  325. package/dist/index345.js.map +1 -1
  326. package/dist/index346.js +2 -268
  327. package/dist/index346.js.map +1 -1
  328. package/dist/index347.js +176 -2
  329. package/dist/index347.js.map +1 -1
  330. package/dist/index348.js +2 -2
  331. package/dist/index349.js +35 -39
  332. package/dist/index349.js.map +1 -1
  333. package/dist/index35.js +101 -28
  334. package/dist/index35.js.map +1 -1
  335. package/dist/index350.js +3 -3
  336. package/dist/index350.js.map +1 -1
  337. package/dist/index351.js +2 -2
  338. package/dist/index352.js +19 -26
  339. package/dist/index352.js.map +1 -1
  340. package/dist/index357.js +26 -19
  341. package/dist/index357.js.map +1 -1
  342. package/dist/index36.js +115 -33
  343. package/dist/index36.js.map +1 -1
  344. package/dist/index37.js +41 -115
  345. package/dist/index37.js.map +1 -1
  346. package/dist/index38.js +34 -246
  347. package/dist/index38.js.map +1 -1
  348. package/dist/index39.js +30 -137
  349. package/dist/index39.js.map +1 -1
  350. package/dist/index4.js +26 -84
  351. package/dist/index4.js.map +1 -1
  352. package/dist/index40.js +26 -400
  353. package/dist/index40.js.map +1 -1
  354. package/dist/index41.js +28 -77
  355. package/dist/index41.js.map +1 -1
  356. package/dist/index42.js +23 -26
  357. package/dist/index42.js.map +1 -1
  358. package/dist/index43.js +36 -33
  359. package/dist/index43.js.map +1 -1
  360. package/dist/index44.js +62 -16
  361. package/dist/index44.js.map +1 -1
  362. package/dist/index45.js +138 -21
  363. package/dist/index45.js.map +1 -1
  364. package/dist/index46.js +129 -22
  365. package/dist/index46.js.map +1 -1
  366. package/dist/index47.js +41 -19
  367. package/dist/index47.js.map +1 -1
  368. package/dist/index48.js +11 -82
  369. package/dist/index48.js.map +1 -1
  370. package/dist/index49.js +56 -279
  371. package/dist/index49.js.map +1 -1
  372. package/dist/index5.js +21 -34
  373. package/dist/index5.js.map +1 -1
  374. package/dist/index50.js +280 -33
  375. package/dist/index50.js.map +1 -1
  376. package/dist/index51.js +74 -94
  377. package/dist/index51.js.map +1 -1
  378. package/dist/index52.js +66 -41
  379. package/dist/index52.js.map +1 -1
  380. package/dist/index53.js +333 -62
  381. package/dist/index53.js.map +1 -1
  382. package/dist/index54.js +96 -256
  383. package/dist/index54.js.map +1 -1
  384. package/dist/index55.js +38 -130
  385. package/dist/index55.js.map +1 -1
  386. package/dist/index56.js +251 -50
  387. package/dist/index56.js.map +1 -1
  388. package/dist/index57.js +144 -115
  389. package/dist/index57.js.map +1 -1
  390. package/dist/index58.js +93 -183
  391. package/dist/index58.js.map +1 -1
  392. package/dist/index59.js +33 -339
  393. package/dist/index59.js.map +1 -1
  394. package/dist/index6.js +2 -2
  395. package/dist/index60.js +102 -66
  396. package/dist/index60.js.map +1 -1
  397. package/dist/index61.js +73 -179
  398. package/dist/index61.js.map +1 -1
  399. package/dist/index62.js +117 -97
  400. package/dist/index62.js.map +1 -1
  401. package/dist/index63.js +113 -263
  402. package/dist/index63.js.map +1 -1
  403. package/dist/index64.js +258 -251
  404. package/dist/index64.js.map +1 -1
  405. package/dist/index65.js +177 -79
  406. package/dist/index65.js.map +1 -1
  407. package/dist/index66.js +261 -140
  408. package/dist/index66.js.map +1 -1
  409. package/dist/index67.js +183 -100
  410. package/dist/index67.js.map +1 -1
  411. package/dist/index68.js +28 -89
  412. package/dist/index68.js.map +1 -1
  413. package/dist/index69.js +20 -161
  414. package/dist/index69.js.map +1 -1
  415. package/dist/index7.js +394 -32
  416. package/dist/index7.js.map +1 -1
  417. package/dist/index70.js +190 -53
  418. package/dist/index70.js.map +1 -1
  419. package/dist/index71.js +204 -112
  420. package/dist/index71.js.map +1 -1
  421. package/dist/index72.js +2 -2
  422. package/dist/index73.js +89 -28
  423. package/dist/index73.js.map +1 -1
  424. package/dist/index74.js +126 -63
  425. package/dist/index74.js.map +1 -1
  426. package/dist/index75.js +122 -111
  427. package/dist/index75.js.map +1 -1
  428. package/dist/index76.js +67 -64
  429. package/dist/index76.js.map +1 -1
  430. package/dist/index77.js +112 -88
  431. package/dist/index77.js.map +1 -1
  432. package/dist/index78.js +87 -16
  433. package/dist/index78.js.map +1 -1
  434. package/dist/index79.js +151 -79
  435. package/dist/index79.js.map +1 -1
  436. package/dist/index8.js +25 -127
  437. package/dist/index8.js.map +1 -1
  438. package/dist/index80.js +104 -186
  439. package/dist/index80.js.map +1 -1
  440. package/dist/index81.js +59 -20
  441. package/dist/index81.js.map +1 -1
  442. package/dist/index82.js +17 -129
  443. package/dist/index82.js.map +1 -1
  444. package/dist/index83.js +88 -217
  445. package/dist/index83.js.map +1 -1
  446. package/dist/index84.js +64 -112
  447. package/dist/index84.js.map +1 -1
  448. package/dist/index9.js +30 -45
  449. package/dist/index9.js.map +1 -1
  450. package/dist/src/components/atoms/index.d.ts +45 -16
  451. package/dist/src/components/atoms/index.d.ts.map +1 -1
  452. package/dist/src/components/molecules/index.d.ts +20 -1
  453. package/dist/src/components/molecules/index.d.ts.map +1 -1
  454. package/dist/src/components/organisms/index.d.ts +17 -1
  455. package/dist/src/components/organisms/index.d.ts.map +1 -1
  456. package/dist/src/index.d.ts +3 -82
  457. package/dist/src/index.d.ts.map +1 -1
  458. package/dist/tokens.css +353 -7
  459. package/dist/vite.config.d.ts.map +1 -1
  460. package/package.json +4 -4
package/dist/index66.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { unsafeCSS, css, LitElement } from "lit";
2
2
  import { property, state, customElement } from "lit/decorators.js";
3
- import { headerTemplate } from "./index316.js";
4
- import headerCss from "./index317.js";
3
+ import treeSelectCss from "./index231.js";
5
4
  import sharedTokens from "./index196.js";
5
+ import { treeSelectTemplate } from "./index67.js";
6
6
  var __defProp = Object.defineProperty;
7
7
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
8
  var __decorateClass = (decorators, target, key, kind) => {
@@ -13,184 +13,305 @@ var __decorateClass = (decorators, target, key, kind) => {
13
13
  if (kind && result) __defProp(target, key, result);
14
14
  return result;
15
15
  };
16
- let LibHeader = class extends LitElement {
16
+ let LibTreeSelect = class extends LitElement {
17
17
  constructor() {
18
18
  super(...arguments);
19
- this.variant = "classic";
20
- this.logoMark = "渋";
21
- this.brandName = "shibui";
22
- this.brandTagline = "";
23
- this.logoHref = "#";
24
- this.version = "";
25
- this.links = [];
26
- this.actions = [];
27
- this.loginLabel = "";
28
- this.loginHref = "";
29
- this.contactLabel = "";
30
- this.contactHref = "";
31
- this.announcement = "";
32
- this.announcementHref = "";
33
- this.megaColumns = [];
34
- this.megaCta = null;
35
- this.breadcrumbs = [];
36
- this.showSearch = false;
37
- this.searchPlaceholder = "Buscar…";
38
- this.notifications = false;
39
- this.userName = "";
40
- this.userInitials = "";
41
- this.compact = false;
42
- this.shrunk = false;
43
- this.scrolled = false;
44
- this._megaOpen = false;
45
- this._mobileOpen = false;
46
- this._onScroll = () => {
47
- const y = window.scrollY;
48
- if (this.variant === "transparent") this.scrolled = y > 20;
49
- if (this.variant === "shrink") this.shrunk = y > 60;
50
- };
51
- }
52
- /* ── Lifecycle ── */
19
+ this.nodes = [];
20
+ this.multi = false;
21
+ this.inline = false;
22
+ this.searchable = true;
23
+ this.open = false;
24
+ this.disabled = false;
25
+ this.placeholder = "Seleccionar…";
26
+ this.emptyText = "Sin resultados";
27
+ this._nodeStates = /* @__PURE__ */ new Map();
28
+ this._search = "";
29
+ this._parentMap = /* @__PURE__ */ new Map();
30
+ }
31
+ /* ── Ciclo de vida ── */
53
32
  connectedCallback() {
54
33
  super.connectedCallback();
55
- if (this.variant === "transparent" || this.variant === "shrink") {
56
- window.addEventListener("scroll", this._onScroll, { passive: true });
57
- }
34
+ this._boundDocumentClick = (e) => this._onDocumentClick(e);
35
+ document.addEventListener("click", this._boundDocumentClick, true);
58
36
  }
59
37
  disconnectedCallback() {
60
38
  super.disconnectedCallback();
61
- window.removeEventListener("scroll", this._onScroll);
39
+ document.removeEventListener("click", this._boundDocumentClick, true);
62
40
  }
63
- /* ── Mega-nav ── */
64
- _openMega() {
65
- this._megaOpen = true;
41
+ willUpdate(changed) {
42
+ if (changed.has("nodes")) {
43
+ this._initState();
44
+ }
66
45
  }
67
- _closeMega() {
68
- this._megaOpen = false;
46
+ /* ── Inicialización ── */
47
+ _initState() {
48
+ this._nodeStates = /* @__PURE__ */ new Map();
49
+ this._parentMap = /* @__PURE__ */ new Map();
50
+ this._walkNodes(this.nodes, null);
69
51
  }
70
- /* ── Mobile drawer ── */
71
- _toggleMobile() {
72
- this._mobileOpen = !this._mobileOpen;
52
+ _walkNodes(nodes, parentId) {
53
+ nodes.forEach((node) => {
54
+ var _a;
55
+ this._nodeStates.set(node.id, { selected: false, indeterminate: false, expanded: false });
56
+ this._parentMap.set(node.id, parentId);
57
+ if ((_a = node.children) == null ? void 0 : _a.length) this._walkNodes(node.children, node.id);
58
+ });
73
59
  }
74
- _closeMobile() {
75
- this._mobileOpen = false;
60
+ /* ── Traversal ── */
61
+ _getAllNodes(nodes, acc = []) {
62
+ nodes.forEach((n) => {
63
+ var _a;
64
+ acc.push(n);
65
+ if ((_a = n.children) == null ? void 0 : _a.length) this._getAllNodes(n.children, acc);
66
+ });
67
+ return acc;
76
68
  }
77
- /* ── Event dispatchers ── */
78
- _onLinkClick(id) {
79
- this._closeMobile();
80
- this.dispatchEvent(new CustomEvent("ui-lib-header-link", {
81
- detail: { id },
82
- bubbles: true,
83
- composed: true
84
- }));
69
+ _getLeaves(nodes, acc = []) {
70
+ nodes.forEach((n) => {
71
+ var _a;
72
+ if (!((_a = n.children) == null ? void 0 : _a.length)) acc.push(n);
73
+ else this._getLeaves(n.children, acc);
74
+ });
75
+ return acc;
76
+ }
77
+ _getSelectedLeaves() {
78
+ return this._getLeaves(this.nodes).filter(
79
+ (n) => {
80
+ var _a;
81
+ return ((_a = this._nodeStates.get(n.id)) == null ? void 0 : _a.selected) === true;
82
+ }
83
+ );
84
+ }
85
+ /* ── Selección ── */
86
+ _selectDown(node, selected) {
87
+ var _a;
88
+ const st = this._nodeStates.get(node.id);
89
+ if (st) {
90
+ st.selected = selected;
91
+ st.indeterminate = false;
92
+ }
93
+ (_a = node.children) == null ? void 0 : _a.forEach((c) => this._selectDown(c, selected));
94
+ }
95
+ _recalcAll(nodes) {
96
+ nodes.forEach((n) => {
97
+ var _a;
98
+ if (!((_a = n.children) == null ? void 0 : _a.length)) return;
99
+ this._recalcAll(n.children);
100
+ const allSel = n.children.every(
101
+ (c) => {
102
+ var _a2, _b;
103
+ return ((_a2 = this._nodeStates.get(c.id)) == null ? void 0 : _a2.selected) === true && !((_b = this._nodeStates.get(c.id)) == null ? void 0 : _b.indeterminate);
104
+ }
105
+ );
106
+ const someSel = n.children.some(
107
+ (c) => {
108
+ var _a2, _b;
109
+ return ((_a2 = this._nodeStates.get(c.id)) == null ? void 0 : _a2.selected) === true || ((_b = this._nodeStates.get(c.id)) == null ? void 0 : _b.indeterminate) === true;
110
+ }
111
+ );
112
+ const st = this._nodeStates.get(n.id);
113
+ if (st) {
114
+ st.selected = allSel;
115
+ st.indeterminate = !allSel && someSel;
116
+ }
117
+ });
118
+ }
119
+ _handleSelect(node) {
120
+ var _a, _b;
121
+ if (this.disabled) return;
122
+ const hasKids = (((_a = node.children) == null ? void 0 : _a.length) ?? 0) > 0;
123
+ if (!this.multi) {
124
+ if (hasKids) {
125
+ this._handleToggle(node.id);
126
+ return;
127
+ }
128
+ this._getAllNodes(this.nodes).forEach((n) => {
129
+ const st2 = this._nodeStates.get(n.id);
130
+ if (st2) {
131
+ st2.selected = false;
132
+ st2.indeterminate = false;
133
+ }
134
+ });
135
+ const st = this._nodeStates.get(node.id);
136
+ if (st) st.selected = true;
137
+ this._nodeStates = new Map(this._nodeStates);
138
+ this.open = false;
139
+ this._emitChange();
140
+ return;
141
+ }
142
+ const newSelected = !((_b = this._nodeStates.get(node.id)) == null ? void 0 : _b.selected);
143
+ this._selectDown(node, newSelected);
144
+ this._recalcAll(this.nodes);
145
+ this._nodeStates = new Map(this._nodeStates);
146
+ this._emitChange();
147
+ }
148
+ _handleToggle(id) {
149
+ const st = this._nodeStates.get(id);
150
+ if (!st) return;
151
+ st.expanded = !st.expanded;
152
+ this._nodeStates = new Map(this._nodeStates);
153
+ }
154
+ _handleClear() {
155
+ this._nodeStates.forEach((st) => {
156
+ st.selected = false;
157
+ st.indeterminate = false;
158
+ });
159
+ this._nodeStates = new Map(this._nodeStates);
160
+ this._emitChange();
85
161
  }
86
- _onActionClick(action) {
87
- this._closeMobile();
88
- this.dispatchEvent(new CustomEvent("ui-lib-header-action", {
89
- detail: { label: action.label, href: action.href },
162
+ _handleConfirm() {
163
+ this.open = false;
164
+ const sel = this._getSelectedLeaves();
165
+ const detail = { selected: sel, ids: sel.map((n) => n.id) };
166
+ this.dispatchEvent(new CustomEvent("ui-lib-tree-confirm", {
167
+ detail,
90
168
  bubbles: true,
91
169
  composed: true
92
170
  }));
93
171
  }
94
- _onSearch(query) {
95
- this.dispatchEvent(new CustomEvent("ui-lib-header-search", {
96
- detail: { query },
172
+ _handleTagRemove(id) {
173
+ const node = this._getAllNodes(this.nodes).find((n) => n.id === id);
174
+ if (!node) return;
175
+ const st = this._nodeStates.get(id);
176
+ if (st) st.selected = false;
177
+ this._recalcAll(this.nodes);
178
+ this._nodeStates = new Map(this._nodeStates);
179
+ this._emitChange();
180
+ }
181
+ _emitChange() {
182
+ const sel = this._getSelectedLeaves();
183
+ const detail = { selected: sel, ids: sel.map((n) => n.id) };
184
+ this.dispatchEvent(new CustomEvent("ui-lib-tree-change", {
185
+ detail,
97
186
  bubbles: true,
98
187
  composed: true
99
188
  }));
100
189
  }
190
+ /* ── Dropdown ── */
191
+ _toggleOpen() {
192
+ if (this.disabled) return;
193
+ this.open = !this.open;
194
+ if (this.open) {
195
+ setTimeout(() => {
196
+ var _a;
197
+ (_a = this.renderRoot.querySelector(".ts-search")) == null ? void 0 : _a.focus();
198
+ }, 60);
199
+ }
200
+ }
201
+ _onDocumentClick(e) {
202
+ if (this.inline || !this.open) return;
203
+ if (!e.composedPath().includes(this)) this.open = false;
204
+ }
205
+ /* ── Valores derivados ── */
206
+ _getTriggerLabel() {
207
+ var _a;
208
+ if (!this.multi) {
209
+ const sel = this._getLeaves(this.nodes).find(
210
+ (n) => {
211
+ var _a2;
212
+ return ((_a2 = this._nodeStates.get(n.id)) == null ? void 0 : _a2.selected) === true;
213
+ }
214
+ );
215
+ return (sel == null ? void 0 : sel.label) ?? "";
216
+ }
217
+ const count = this._getSelectionCount();
218
+ if (count === 0) return "";
219
+ if (count === 1) return ((_a = this._getSelectedLeaves()[0]) == null ? void 0 : _a.label) ?? "";
220
+ return `${count} seleccionados`;
221
+ }
222
+ _getSelectionCount() {
223
+ return this._getSelectedLeaves().length;
224
+ }
225
+ _getFooterInfo() {
226
+ const count = this._getSelectionCount();
227
+ if (count === 0) return "0 seleccionados";
228
+ return `${count} seleccionado${count !== 1 ? "s" : ""}`;
229
+ }
230
+ _getTags() {
231
+ return this._getSelectedLeaves().slice(0, 8).map((n) => ({ id: n.id, label: n.label }));
232
+ }
233
+ /* ── API pública ── */
234
+ openPanel() {
235
+ if (!this.inline && !this.disabled) this.open = true;
236
+ }
237
+ closePanel() {
238
+ this.open = false;
239
+ }
240
+ clear() {
241
+ this._handleClear();
242
+ }
243
+ getSelected() {
244
+ return this._getSelectedLeaves();
245
+ }
246
+ /* ── Render ── */
101
247
  render() {
102
- return headerTemplate(this);
248
+ const triggerLabel = this._getTriggerLabel();
249
+ return treeSelectTemplate({
250
+ nodes: this.nodes,
251
+ nodeStates: this._nodeStates,
252
+ multi: this.multi,
253
+ inline: this.inline,
254
+ searchable: this.searchable,
255
+ open: this.open,
256
+ disabled: this.disabled,
257
+ placeholder: this.placeholder,
258
+ emptyText: this.emptyText,
259
+ searchValue: this._search,
260
+ triggerLabel,
261
+ isPlaceholder: triggerLabel === "",
262
+ selectionCount: this._getSelectionCount(),
263
+ footerInfo: this._getFooterInfo(),
264
+ tags: this._getTags(),
265
+ onTriggerClick: () => this._toggleOpen(),
266
+ onSearch: (v) => {
267
+ this._search = v;
268
+ },
269
+ onClear: () => this._handleClear(),
270
+ onConfirm: () => this._handleConfirm(),
271
+ onTagRemove: (id) => this._handleTagRemove(id),
272
+ onToggle: (id) => this._handleToggle(id),
273
+ onSelect: (node) => this._handleSelect(node)
274
+ });
103
275
  }
104
276
  };
105
- LibHeader.styles = [
277
+ LibTreeSelect.styles = [
106
278
  css`${unsafeCSS(sharedTokens)}`,
107
- css`${unsafeCSS(headerCss)}`
279
+ css`${unsafeCSS(treeSelectCss)}`
108
280
  ];
109
- __decorateClass([
110
- property({ type: String, reflect: true })
111
- ], LibHeader.prototype, "variant", 2);
112
- __decorateClass([
113
- property({ type: String, attribute: "logo-mark" })
114
- ], LibHeader.prototype, "logoMark", 2);
115
- __decorateClass([
116
- property({ type: String, attribute: "brand-name" })
117
- ], LibHeader.prototype, "brandName", 2);
118
- __decorateClass([
119
- property({ type: String, attribute: "brand-tagline" })
120
- ], LibHeader.prototype, "brandTagline", 2);
121
- __decorateClass([
122
- property({ type: String, attribute: "logo-href" })
123
- ], LibHeader.prototype, "logoHref", 2);
124
- __decorateClass([
125
- property({ type: String })
126
- ], LibHeader.prototype, "version", 2);
127
- __decorateClass([
128
- property({ type: Array })
129
- ], LibHeader.prototype, "links", 2);
130
281
  __decorateClass([
131
282
  property({ type: Array })
132
- ], LibHeader.prototype, "actions", 2);
133
- __decorateClass([
134
- property({ type: String, attribute: "login-label" })
135
- ], LibHeader.prototype, "loginLabel", 2);
136
- __decorateClass([
137
- property({ type: String, attribute: "login-href" })
138
- ], LibHeader.prototype, "loginHref", 2);
139
- __decorateClass([
140
- property({ type: String, attribute: "contact-label" })
141
- ], LibHeader.prototype, "contactLabel", 2);
142
- __decorateClass([
143
- property({ type: String, attribute: "contact-href" })
144
- ], LibHeader.prototype, "contactHref", 2);
145
- __decorateClass([
146
- property({ type: String })
147
- ], LibHeader.prototype, "announcement", 2);
283
+ ], LibTreeSelect.prototype, "nodes", 2);
148
284
  __decorateClass([
149
- property({ type: String, attribute: "announcement-href" })
150
- ], LibHeader.prototype, "announcementHref", 2);
151
- __decorateClass([
152
- property({ type: Array, attribute: "mega-columns" })
153
- ], LibHeader.prototype, "megaColumns", 2);
154
- __decorateClass([
155
- property({ type: Object, attribute: "mega-cta" })
156
- ], LibHeader.prototype, "megaCta", 2);
157
- __decorateClass([
158
- property({ type: Array })
159
- ], LibHeader.prototype, "breadcrumbs", 2);
160
- __decorateClass([
161
- property({ type: Boolean, attribute: "show-search" })
162
- ], LibHeader.prototype, "showSearch", 2);
163
- __decorateClass([
164
- property({ type: String, attribute: "search-placeholder" })
165
- ], LibHeader.prototype, "searchPlaceholder", 2);
166
- __decorateClass([
167
- property({ type: Boolean })
168
- ], LibHeader.prototype, "notifications", 2);
169
- __decorateClass([
170
- property({ type: String, attribute: "user-name" })
171
- ], LibHeader.prototype, "userName", 2);
285
+ property({ type: Boolean, reflect: true })
286
+ ], LibTreeSelect.prototype, "multi", 2);
172
287
  __decorateClass([
173
- property({ type: String, attribute: "user-initials" })
174
- ], LibHeader.prototype, "userInitials", 2);
288
+ property({ type: Boolean, reflect: true })
289
+ ], LibTreeSelect.prototype, "inline", 2);
175
290
  __decorateClass([
176
291
  property({ type: Boolean, reflect: true })
177
- ], LibHeader.prototype, "compact", 2);
292
+ ], LibTreeSelect.prototype, "searchable", 2);
178
293
  __decorateClass([
179
294
  property({ type: Boolean, reflect: true })
180
- ], LibHeader.prototype, "shrunk", 2);
295
+ ], LibTreeSelect.prototype, "open", 2);
181
296
  __decorateClass([
182
297
  property({ type: Boolean, reflect: true })
183
- ], LibHeader.prototype, "scrolled", 2);
298
+ ], LibTreeSelect.prototype, "disabled", 2);
299
+ __decorateClass([
300
+ property({ type: String })
301
+ ], LibTreeSelect.prototype, "placeholder", 2);
302
+ __decorateClass([
303
+ property({ type: String, attribute: "empty-text" })
304
+ ], LibTreeSelect.prototype, "emptyText", 2);
184
305
  __decorateClass([
185
306
  state()
186
- ], LibHeader.prototype, "_megaOpen", 2);
307
+ ], LibTreeSelect.prototype, "_nodeStates", 2);
187
308
  __decorateClass([
188
309
  state()
189
- ], LibHeader.prototype, "_mobileOpen", 2);
190
- LibHeader = __decorateClass([
191
- customElement("lib-header")
192
- ], LibHeader);
310
+ ], LibTreeSelect.prototype, "_search", 2);
311
+ LibTreeSelect = __decorateClass([
312
+ customElement("lib-tree-select")
313
+ ], LibTreeSelect);
193
314
  export {
194
- LibHeader
315
+ LibTreeSelect
195
316
  };
196
317
  //# sourceMappingURL=index66.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index66.js","sources":["../src/components/molecules/header/lib-header.component.ts"],"sourcesContent":["import { LitElement, css, unsafeCSS, TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { headerTemplate } from './lib-header.html';\nimport headerCss from './lib-header.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type {\n HeaderVariant, NavLink, HeaderAction, BreadcrumbItem,\n} from './lib-header.types';\n\nexport interface MegaColumn {\n title: string;\n items: { label: string; href?: string }[];\n}\n\nexport interface MegaCta {\n label: string; title: string; desc: string;\n href?: string; cta: string;\n}\n\n/**\n * lib-header — Shibui UI · SG-66\n *\n * 10 variantes: classic · dark · centered · transparent · kintsugi ·\n * glitch · mega · minimal · shrink · app-bar\n *\n * Mobile: breakpoint 640px — drawer vertical compartido por todas las variantes.\n */\n@customElement('lib-header')\nexport class LibHeader extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(headerCss)}`,\n ];\n\n /* ── Variant ── */\n @property({ type: String, reflect: true })\n variant: HeaderVariant = 'classic';\n\n /* ── Logo ── */\n @property({ type: String, attribute: 'logo-mark' })\n logoMark = '渋';\n\n @property({ type: String, attribute: 'brand-name' })\n brandName = 'shibui';\n\n @property({ type: String, attribute: 'brand-tagline' })\n brandTagline = '';\n\n @property({ type: String, attribute: 'logo-href' })\n logoHref = '#';\n\n @property({ type: String })\n version = '';\n\n /* ── Nav ── */\n @property({ type: Array })\n links: NavLink[] = [];\n\n @property({ type: Array })\n actions: HeaderAction[] = [];\n\n @property({ type: String, attribute: 'login-label' })\n loginLabel = '';\n\n @property({ type: String, attribute: 'login-href' })\n loginHref = '';\n\n @property({ type: String, attribute: 'contact-label' })\n contactLabel = '';\n\n @property({ type: String, attribute: 'contact-href' })\n contactHref = '';\n\n /* ── Centered announcement ── */\n @property({ type: String })\n announcement = '';\n\n @property({ type: String, attribute: 'announcement-href' })\n announcementHref = '';\n\n /* ── Mega-nav ── */\n @property({ type: Array, attribute: 'mega-columns' })\n megaColumns: MegaColumn[] = [];\n\n @property({ type: Object, attribute: 'mega-cta' })\n megaCta: MegaCta | null = null;\n\n /* ── App-bar ── */\n @property({ type: Array })\n breadcrumbs: BreadcrumbItem[] = [];\n\n @property({ type: Boolean, attribute: 'show-search' })\n showSearch = false;\n\n @property({ type: String, attribute: 'search-placeholder' })\n searchPlaceholder = 'Buscar…';\n\n @property({ type: Boolean })\n notifications = false;\n\n @property({ type: String, attribute: 'user-name' })\n userName = '';\n\n @property({ type: String, attribute: 'user-initials' })\n userInitials = '';\n\n @property({ type: Boolean, reflect: true })\n compact = false;\n\n /* ── Scroll states ── */\n @property({ type: Boolean, reflect: true })\n shrunk = false;\n\n @property({ type: Boolean, reflect: true })\n scrolled = false;\n\n /* ── Internal ── */\n @state() _megaOpen = false;\n @state() _mobileOpen = false;\n\n /* ── Lifecycle ── */\n override connectedCallback(): void {\n super.connectedCallback();\n if (this.variant === 'transparent' || this.variant === 'shrink') {\n window.addEventListener('scroll', this._onScroll, { passive: true });\n }\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n window.removeEventListener('scroll', this._onScroll);\n }\n\n /* ── Scroll handler ── */\n private _onScroll = (): void => {\n const y = window.scrollY;\n if (this.variant === 'transparent') this.scrolled = y > 20;\n if (this.variant === 'shrink') this.shrunk = y > 60;\n };\n\n /* ── Mega-nav ── */\n _openMega(): void { this._megaOpen = true; }\n _closeMega(): void { this._megaOpen = false; }\n\n /* ── Mobile drawer ── */\n _toggleMobile(): void {\n this._mobileOpen = !this._mobileOpen;\n }\n\n _closeMobile(): void {\n this._mobileOpen = false;\n }\n\n /* ── Event dispatchers ── */\n _onLinkClick(id: string): void {\n this._closeMobile();\n this.dispatchEvent(new CustomEvent('ui-lib-header-link', {\n detail: { id }, bubbles: true, composed: true,\n }));\n }\n\n _onActionClick(action: HeaderAction): void {\n this._closeMobile();\n this.dispatchEvent(new CustomEvent('ui-lib-header-action', {\n detail: { label: action.label, href: action.href },\n bubbles: true, composed: true,\n }));\n }\n\n _onSearch(query: string): void {\n this.dispatchEvent(new CustomEvent('ui-lib-header-search', {\n detail: { query }, bubbles: true, composed: true,\n }));\n }\n\n protected override render(): TemplateResult {\n return headerTemplate(this);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-header': LibHeader;\n }\n}"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index66.js","sources":["../src/components/molecules/tree-select/lib-tree-node.component.ts"],"sourcesContent":["import { LitElement, TemplateResult, css, unsafeCSS } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport treeSelectCss from './lib-tree-select.css?inline';\nimport sharedTokens from '../../../styles/shared/tokens.css?inline';\nimport type {\n TreeNode,\n TreeNodeState,\n TreeSelectChangeDetail,\n TreeSelectConfirmDetail,\n} from './lib-tree-node.types';\nimport { treeSelectTemplate } from './lib-tree-select.component.html';\n\n/**\n * @element lib-tree-select\n *\n * Selector jerárquico con soporte multi-nivel, propagación bidireccional\n * de selección, búsqueda y variantes dropdown / inline / single / multi.\n *\n * @prop {TreeNode[]} nodes — Árbol de datos\n * @prop {boolean} multi — Selección múltiple (con checkboxes)\n * @prop {boolean} inline — Sin dropdown, árbol directo en layout\n * @prop {boolean} searchable — Mostrar barra de búsqueda\n * @prop {boolean} open — Estado del dropdown (reflected)\n * @prop {boolean} disabled — Deshabilitado (reflected)\n * @prop {string} placeholder — Texto cuando no hay selección\n * @prop {string} empty-text — Texto sin resultados de búsqueda\n *\n * @fires ui-lib-tree-change — Cada vez que cambia la selección\n * Detail: { selected: TreeNode[], ids: string[] }\n * @fires ui-lib-tree-confirm — Al pulsar \"Aplicar\" (solo multi dropdown)\n * Detail: { selected: TreeNode[], ids: string[] }\n */\n@customElement('lib-tree-select')\nexport class LibTreeSelect extends LitElement {\n static override styles = [\n css`${unsafeCSS(sharedTokens)}`,\n css`${unsafeCSS(treeSelectCss)}`,\n ];\n\n /* ── Propiedades públicas ── */\n @property({ type: Array }) nodes: TreeNode[] = [];\n @property({ type: Boolean, reflect: true }) multi = false;\n @property({ type: Boolean, reflect: true }) inline = false;\n @property({ type: Boolean, reflect: true }) searchable = true;\n @property({ type: Boolean, reflect: true }) open = false;\n @property({ type: Boolean, reflect: true }) disabled = false;\n @property({ type: String }) placeholder = 'Seleccionar…';\n @property({ type: String, attribute: 'empty-text' }) emptyText = 'Sin resultados';\n\n /* ── Estado interno ── */\n @state() private _nodeStates: Map<string, TreeNodeState> = new Map();\n @state() private _search = '';\n\n private _parentMap: Map<string, string | null> = new Map();\n private _boundDocumentClick!: (e: Event) => void;\n\n /* ── Ciclo de vida ── */\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._boundDocumentClick = (e: Event): void => this._onDocumentClick(e);\n document.addEventListener('click', this._boundDocumentClick, true);\n }\n\n override disconnectedCallback(): void {\n super.disconnectedCallback();\n document.removeEventListener('click', this._boundDocumentClick, true);\n }\n\n protected override willUpdate(changed: Map<PropertyKey, unknown>): void {\n if (changed.has('nodes')) {\n this._initState();\n }\n }\n\n /* ── Inicialización ── */\n\n private _initState(): void {\n this._nodeStates = new Map();\n this._parentMap = new Map();\n this._walkNodes(this.nodes, null);\n }\n\n private _walkNodes(nodes: TreeNode[], parentId: string | null): void {\n nodes.forEach(node => {\n this._nodeStates.set(node.id, { selected: false, indeterminate: false, expanded: false });\n this._parentMap.set(node.id, parentId);\n if (node.children?.length) this._walkNodes(node.children, node.id);\n });\n }\n\n /* ── Traversal ── */\n\n private _getAllNodes(nodes: TreeNode[], acc: TreeNode[] = []): TreeNode[] {\n nodes.forEach(n => {\n acc.push(n);\n if (n.children?.length) this._getAllNodes(n.children, acc);\n });\n return acc;\n }\n\n private _getLeaves(nodes: TreeNode[], acc: TreeNode[] = []): TreeNode[] {\n nodes.forEach(n => {\n if (!n.children?.length) acc.push(n);\n else this._getLeaves(n.children, acc);\n });\n return acc;\n }\n\n private _getSelectedLeaves(): TreeNode[] {\n return this._getLeaves(this.nodes).filter(\n n => this._nodeStates.get(n.id)?.selected === true\n );\n }\n\n /* ── Selección ── */\n\n private _selectDown(node: TreeNode, selected: boolean): void {\n const st = this._nodeStates.get(node.id);\n if (st) { st.selected = selected; st.indeterminate = false; }\n node.children?.forEach(c => this._selectDown(c, selected));\n }\n\n private _recalcAll(nodes: TreeNode[]): void {\n nodes.forEach(n => {\n if (!n.children?.length) return;\n this._recalcAll(n.children);\n const allSel = n.children.every(c =>\n this._nodeStates.get(c.id)?.selected === true &&\n !this._nodeStates.get(c.id)?.indeterminate\n );\n const someSel = n.children.some(c =>\n this._nodeStates.get(c.id)?.selected === true ||\n this._nodeStates.get(c.id)?.indeterminate === true\n );\n const st = this._nodeStates.get(n.id);\n if (st) { st.selected = allSel; st.indeterminate = !allSel && someSel; }\n });\n }\n\n private _handleSelect(node: TreeNode): void {\n if (this.disabled) return;\n const hasKids = (node.children?.length ?? 0) > 0;\n\n if (!this.multi) {\n // Single — los nodos padre solo expanden/colapsan, NUNCA seleccionan\n if (hasKids) {\n this._handleToggle(node.id);\n return;\n }\n // Hoja → limpiar todo, seleccionar, cerrar dropdown\n this._getAllNodes(this.nodes).forEach(n => {\n const st = this._nodeStates.get(n.id);\n if (st) { st.selected = false; st.indeterminate = false; }\n });\n const st = this._nodeStates.get(node.id);\n if (st) st.selected = true;\n this._nodeStates = new Map(this._nodeStates);\n this.open = false;\n this._emitChange();\n return;\n }\n\n // Multi — toggle + propagación bidireccional (padres e hijos seleccionables)\n const newSelected = !this._nodeStates.get(node.id)?.selected;\n this._selectDown(node, newSelected);\n this._recalcAll(this.nodes);\n this._nodeStates = new Map(this._nodeStates);\n this._emitChange();\n }\n\n private _handleToggle(id: string): void {\n const st = this._nodeStates.get(id);\n if (!st) return;\n st.expanded = !st.expanded;\n this._nodeStates = new Map(this._nodeStates);\n }\n\n private _handleClear(): void {\n this._nodeStates.forEach(st => { st.selected = false; st.indeterminate = false; });\n this._nodeStates = new Map(this._nodeStates);\n this._emitChange();\n }\n\n private _handleConfirm(): void {\n this.open = false;\n const sel = this._getSelectedLeaves();\n const detail: TreeSelectConfirmDetail = { selected: sel, ids: sel.map(n => n.id) };\n this.dispatchEvent(new CustomEvent<TreeSelectConfirmDetail>('ui-lib-tree-confirm', {\n detail, bubbles: true, composed: true,\n }));\n }\n\n private _handleTagRemove(id: string): void {\n const node = this._getAllNodes(this.nodes).find(n => n.id === id);\n if (!node) return;\n const st = this._nodeStates.get(id);\n if (st) st.selected = false;\n this._recalcAll(this.nodes);\n this._nodeStates = new Map(this._nodeStates);\n this._emitChange();\n }\n\n private _emitChange(): void {\n const sel = this._getSelectedLeaves();\n const detail: TreeSelectChangeDetail = { selected: sel, ids: sel.map(n => n.id) };\n this.dispatchEvent(new CustomEvent<TreeSelectChangeDetail>('ui-lib-tree-change', {\n detail, bubbles: true, composed: true,\n }));\n }\n\n /* ── Dropdown ── */\n\n private _toggleOpen(): void {\n if (this.disabled) return;\n this.open = !this.open;\n if (this.open) {\n setTimeout((): void => {\n (this.renderRoot.querySelector('.ts-search') as HTMLInputElement | null)?.focus();\n }, 60);\n }\n }\n\n private _onDocumentClick(e: Event): void {\n if (this.inline || !this.open) return;\n if (!e.composedPath().includes(this)) this.open = false;\n }\n\n /* ── Valores derivados ── */\n\n private _getTriggerLabel(): string {\n if (!this.multi) {\n const sel = this._getLeaves(this.nodes).find(\n n => this._nodeStates.get(n.id)?.selected === true\n );\n return sel?.label ?? '';\n }\n const count = this._getSelectionCount();\n if (count === 0) return '';\n if (count === 1) return this._getSelectedLeaves()[0]?.label ?? '';\n return `${count} seleccionados`;\n }\n\n private _getSelectionCount(): number {\n return this._getSelectedLeaves().length;\n }\n\n private _getFooterInfo(): string {\n const count = this._getSelectionCount();\n if (count === 0) return '0 seleccionados';\n return `${count} seleccionado${count !== 1 ? 's' : ''}`;\n }\n\n private _getTags(): Array<{ id: string; label: string }> {\n return this._getSelectedLeaves().slice(0, 8).map(n => ({ id: n.id, label: n.label }));\n }\n\n /* ── API pública ── */\n\n public openPanel(): void { if (!this.inline && !this.disabled) this.open = true; }\n public closePanel(): void { this.open = false; }\n public clear(): void { this._handleClear(); }\n public getSelected(): TreeNode[] { return this._getSelectedLeaves(); }\n\n /* ── Render ── */\n\n protected override render(): TemplateResult {\n const triggerLabel = this._getTriggerLabel();\n return treeSelectTemplate({\n nodes: this.nodes,\n nodeStates: this._nodeStates,\n multi: this.multi,\n inline: this.inline,\n searchable: this.searchable,\n open: this.open,\n disabled: this.disabled,\n placeholder: this.placeholder,\n emptyText: this.emptyText,\n searchValue: this._search,\n triggerLabel,\n isPlaceholder: triggerLabel === '',\n selectionCount: this._getSelectionCount(),\n footerInfo: this._getFooterInfo(),\n tags: this._getTags(),\n onTriggerClick: (): void => this._toggleOpen(),\n onSearch: (v: string): void => { this._search = v; },\n onClear: (): void => this._handleClear(),\n onConfirm: (): void => this._handleConfirm(),\n onTagRemove: (id: string): void => this._handleTagRemove(id),\n onToggle: (id: string): void => this._handleToggle(id),\n onSelect: (node: TreeNode): void => this._handleSelect(node),\n });\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'lib-tree-select': LibTreeSelect;\n }\n}"],"names":["_a","st"],"mappings":"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"}