poc_tree_select_input.vue 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. <template>
  2. <div class="pa-4">
  3. <h2>Select Hiérarchique - Exemple de base</h2>
  4. <UiInputTreeSelect
  5. ref="treeSelect"
  6. v-model="selectedValues"
  7. :items="hierarchicalItems"
  8. label="Choisissez vos options"
  9. placeholder="Sélectionnez des éléments..."
  10. :max-visible-chips="2"
  11. />
  12. <div class="mt-4">
  13. <h3>Valeurs sélectionnées :</h3>
  14. <pre>{{ selectedValues }}</pre>
  15. </div>
  16. <v-divider class="my-6" />
  17. <h2>Select Hiérarchique - Catégories d'événements</h2>
  18. <UiInputTreeSelectEventCategories
  19. v-model="selectedCategories"
  20. label="Choisissez des catégories"
  21. placeholder="Sélectionnez des catégories..."
  22. :max-visible-chips="3"
  23. />
  24. <div class="mt-4">
  25. <h3>Catégories sélectionnées :</h3>
  26. <pre>{{ selectedCategories }}</pre>
  27. </div>
  28. </div>
  29. </template>
  30. <script setup lang="ts">
  31. import { type TreeSelectItem } from '~/types/layout'
  32. const selectedValues = ref<string[]>([])
  33. const selectedCategories = ref<string[]>([])
  34. const hierarchicalItems = ref<TreeSelectItem[]>([
  35. // Catégories principales
  36. { id: 'cat1', label: 'Électronique', type: 'category', level: 0 },
  37. { id: 'cat2', label: 'Vêtements', type: 'category', level: 0 },
  38. // Sous-catégories d'Électronique
  39. {
  40. id: 'subcat1',
  41. label: 'Ordinateurs',
  42. type: 'subcategory',
  43. parentId: 'cat1',
  44. level: 1,
  45. },
  46. {
  47. id: 'subcat2',
  48. label: 'Téléphones',
  49. type: 'subcategory',
  50. parentId: 'cat1',
  51. level: 1,
  52. },
  53. // Items sous Ordinateurs
  54. {
  55. id: 'item1',
  56. label: 'Laptop Gaming',
  57. value: 'laptop-gaming',
  58. type: 'item',
  59. parentId: 'subcat1',
  60. level: 2,
  61. },
  62. {
  63. id: 'item2',
  64. label: 'Laptop Bureau',
  65. value: 'laptop-office',
  66. type: 'item',
  67. parentId: 'subcat1',
  68. level: 2,
  69. },
  70. {
  71. id: 'item3',
  72. label: 'PC Desktop',
  73. value: 'pc-desktop',
  74. type: 'item',
  75. parentId: 'subcat1',
  76. level: 2,
  77. },
  78. // Items sous Téléphones
  79. {
  80. id: 'item4',
  81. label: 'iPhone',
  82. value: 'iphone',
  83. type: 'item',
  84. parentId: 'subcat2',
  85. level: 2,
  86. },
  87. {
  88. id: 'item5',
  89. label: 'Android',
  90. value: 'android',
  91. type: 'item',
  92. parentId: 'subcat2',
  93. level: 2,
  94. },
  95. // Sous-catégories de Vêtements
  96. {
  97. id: 'subcat3',
  98. label: 'Homme',
  99. type: 'subcategory',
  100. parentId: 'cat2',
  101. level: 1,
  102. },
  103. {
  104. id: 'subcat4',
  105. label: 'Femme',
  106. type: 'subcategory',
  107. parentId: 'cat2',
  108. level: 1,
  109. },
  110. // Items sous Homme
  111. {
  112. id: 'item6',
  113. label: 'Chemises',
  114. value: 'chemises-homme',
  115. type: 'item',
  116. parentId: 'subcat3',
  117. level: 2,
  118. },
  119. {
  120. id: 'item7',
  121. label: 'Pantalons',
  122. value: 'pantalons-homme',
  123. type: 'item',
  124. parentId: 'subcat3',
  125. level: 2,
  126. },
  127. // Items sous Femme
  128. {
  129. id: 'item8',
  130. label: 'Robes',
  131. value: 'robes',
  132. type: 'item',
  133. parentId: 'subcat4',
  134. level: 2,
  135. },
  136. {
  137. id: 'item9',
  138. label: 'Blouses',
  139. value: 'blouses',
  140. type: 'item',
  141. parentId: 'subcat4',
  142. level: 2,
  143. },
  144. ])
  145. </script>