@ojiepermana/angular 22.0.1 → 22.0.29

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 (513) hide show
  1. package/README.md +61 -311
  2. package/fesm2022/ojiepermana-angular-chart.mjs +10 -0
  3. package/fesm2022/ojiepermana-angular-component.mjs +10 -0
  4. package/fesm2022/ojiepermana-angular-navigation.mjs +10 -0
  5. package/fesm2022/ojiepermana-angular-sdk.mjs +10 -0
  6. package/fesm2022/ojiepermana-angular-theme.mjs +4 -384
  7. package/fesm2022/ojiepermana-angular.mjs +15 -16
  8. package/package.json +25 -425
  9. package/types/ojiepermana-angular-chart.d.ts +1 -0
  10. package/types/ojiepermana-angular-component.d.ts +1 -0
  11. package/types/ojiepermana-angular-navigation.d.ts +1 -0
  12. package/types/ojiepermana-angular-sdk.d.ts +1 -0
  13. package/types/ojiepermana-angular-theme.d.ts +1 -116
  14. package/types/ojiepermana-angular.d.ts +5 -3
  15. package/.npmignore +0 -2
  16. package/collection.json +0 -30
  17. package/component/accordion/README.md +0 -195
  18. package/component/accordion/package.json +0 -4
  19. package/component/alert/README.md +0 -182
  20. package/component/alert/package.json +0 -4
  21. package/component/alert-dialog/README.md +0 -239
  22. package/component/alert-dialog/package.json +0 -4
  23. package/component/aspect-ratio/README.md +0 -112
  24. package/component/aspect-ratio/package.json +0 -4
  25. package/component/avatar/README.md +0 -176
  26. package/component/avatar/package.json +0 -4
  27. package/component/badge/README.md +0 -133
  28. package/component/badge/package.json +0 -4
  29. package/component/breadcrumb/README.md +0 -216
  30. package/component/breadcrumb/package.json +0 -4
  31. package/component/button/README.md +0 -139
  32. package/component/button/package.json +0 -4
  33. package/component/button-group/README.md +0 -208
  34. package/component/button-group/package.json +0 -4
  35. package/component/calendar/README.md +0 -132
  36. package/component/calendar/package.json +0 -4
  37. package/component/card/README.md +0 -220
  38. package/component/card/package.json +0 -4
  39. package/component/carousel/README.md +0 -276
  40. package/component/carousel/package.json +0 -4
  41. package/component/chart/README.md +0 -249
  42. package/component/chart/area/package.json +0 -4
  43. package/component/chart/bar/package.json +0 -4
  44. package/component/chart/line/package.json +0 -4
  45. package/component/chart/package.json +0 -4
  46. package/component/chart/pie/package.json +0 -4
  47. package/component/chart/radar/package.json +0 -4
  48. package/component/chart/radial/package.json +0 -4
  49. package/component/chart/scatter/package.json +0 -4
  50. package/component/checkbox/README.md +0 -149
  51. package/component/checkbox/package.json +0 -4
  52. package/component/collapsible/README.md +0 -195
  53. package/component/collapsible/package.json +0 -4
  54. package/component/combobox/README.md +0 -198
  55. package/component/combobox/package.json +0 -4
  56. package/component/command/README.md +0 -275
  57. package/component/command/package.json +0 -4
  58. package/component/composer/README.md +0 -235
  59. package/component/composer/package.json +0 -4
  60. package/component/context-menu/README.md +0 -267
  61. package/component/context-menu/package.json +0 -4
  62. package/component/date-picker/README.md +0 -177
  63. package/component/date-picker/package.json +0 -4
  64. package/component/dialog/README.md +0 -237
  65. package/component/dialog/package.json +0 -4
  66. package/component/drawer/README.md +0 -145
  67. package/component/drawer/package.json +0 -4
  68. package/component/dropdown-menu/README.md +0 -311
  69. package/component/dropdown-menu/package.json +0 -4
  70. package/component/editor/README.md +0 -136
  71. package/component/editor/package.json +0 -4
  72. package/component/empty/README.md +0 -183
  73. package/component/empty/package.json +0 -4
  74. package/component/form/README.md +0 -210
  75. package/component/form/package.json +0 -4
  76. package/component/hover-card/README.md +0 -146
  77. package/component/hover-card/package.json +0 -4
  78. package/component/input/README.md +0 -159
  79. package/component/input/package.json +0 -4
  80. package/component/input-group/README.md +0 -239
  81. package/component/input-group/package.json +0 -4
  82. package/component/input-otp/README.md +0 -278
  83. package/component/input-otp/package.json +0 -4
  84. package/component/item/README.md +0 -247
  85. package/component/item/package.json +0 -4
  86. package/component/kanban/README.md +0 -81
  87. package/component/kanban/package.json +0 -4
  88. package/component/kbd/README.md +0 -139
  89. package/component/kbd/package.json +0 -4
  90. package/component/label/README.md +0 -136
  91. package/component/label/package.json +0 -4
  92. package/component/menubar/README.md +0 -269
  93. package/component/menubar/package.json +0 -4
  94. package/component/native-select/README.md +0 -176
  95. package/component/native-select/package.json +0 -4
  96. package/component/navigation-menu/README.md +0 -160
  97. package/component/navigation-menu/package.json +0 -4
  98. package/component/pagination/README.md +0 -144
  99. package/component/pagination/package.json +0 -4
  100. package/component/pillbox/README.md +0 -67
  101. package/component/pillbox/package.json +0 -4
  102. package/component/popover/README.md +0 -43
  103. package/component/popover/package.json +0 -4
  104. package/component/progress/README.md +0 -160
  105. package/component/progress/package.json +0 -4
  106. package/component/radio/README.md +0 -209
  107. package/component/radio/package.json +0 -4
  108. package/component/resizable/README.md +0 -168
  109. package/component/resizable/package.json +0 -4
  110. package/component/scroll-area/README.md +0 -143
  111. package/component/scroll-area/package.json +0 -4
  112. package/component/select/README.md +0 -174
  113. package/component/select/package.json +0 -4
  114. package/component/separator/README.md +0 -170
  115. package/component/separator/package.json +0 -4
  116. package/component/sheet/README.md +0 -183
  117. package/component/sheet/package.json +0 -4
  118. package/component/skeleton/README.md +0 -158
  119. package/component/skeleton/package.json +0 -4
  120. package/component/slider/README.md +0 -207
  121. package/component/slider/package.json +0 -4
  122. package/component/spinner/README.md +0 -160
  123. package/component/spinner/package.json +0 -4
  124. package/component/switch/README.md +0 -166
  125. package/component/switch/package.json +0 -4
  126. package/component/table/README.md +0 -291
  127. package/component/table/package.json +0 -4
  128. package/component/tabs/README.md +0 -219
  129. package/component/tabs/package.json +0 -4
  130. package/component/textarea/README.md +0 -154
  131. package/component/textarea/package.json +0 -4
  132. package/component/timeline/README.md +0 -94
  133. package/component/timeline/package.json +0 -4
  134. package/component/toast/README.md +0 -321
  135. package/component/toast/package.json +0 -4
  136. package/component/toggle/README.md +0 -131
  137. package/component/toggle/package.json +0 -4
  138. package/component/toggle-group/README.md +0 -206
  139. package/component/toggle-group/package.json +0 -4
  140. package/component/tooltip/README.md +0 -211
  141. package/component/tooltip/package.json +0 -4
  142. package/component/utils/package.json +0 -4
  143. package/fesm2022/ojiepermana-angular-component-accordion.mjs +0 -189
  144. package/fesm2022/ojiepermana-angular-component-accordion.mjs.map +0 -1
  145. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs +0 -276
  146. package/fesm2022/ojiepermana-angular-component-alert-dialog.mjs.map +0 -1
  147. package/fesm2022/ojiepermana-angular-component-alert.mjs +0 -99
  148. package/fesm2022/ojiepermana-angular-component-alert.mjs.map +0 -1
  149. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs +0 -37
  150. package/fesm2022/ojiepermana-angular-component-aspect-ratio.mjs.map +0 -1
  151. package/fesm2022/ojiepermana-angular-component-avatar.mjs +0 -139
  152. package/fesm2022/ojiepermana-angular-component-avatar.mjs.map +0 -1
  153. package/fesm2022/ojiepermana-angular-component-badge.mjs +0 -50
  154. package/fesm2022/ojiepermana-angular-component-badge.mjs.map +0 -1
  155. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs +0 -200
  156. package/fesm2022/ojiepermana-angular-component-breadcrumb.mjs.map +0 -1
  157. package/fesm2022/ojiepermana-angular-component-button-group.mjs +0 -103
  158. package/fesm2022/ojiepermana-angular-component-button-group.mjs.map +0 -1
  159. package/fesm2022/ojiepermana-angular-component-button.mjs +0 -68
  160. package/fesm2022/ojiepermana-angular-component-button.mjs.map +0 -1
  161. package/fesm2022/ojiepermana-angular-component-calendar.mjs +0 -88
  162. package/fesm2022/ojiepermana-angular-component-calendar.mjs.map +0 -1
  163. package/fesm2022/ojiepermana-angular-component-card.mjs +0 -152
  164. package/fesm2022/ojiepermana-angular-component-card.mjs.map +0 -1
  165. package/fesm2022/ojiepermana-angular-component-carousel.mjs +0 -334
  166. package/fesm2022/ojiepermana-angular-component-carousel.mjs.map +0 -1
  167. package/fesm2022/ojiepermana-angular-component-chart-area.mjs +0 -6
  168. package/fesm2022/ojiepermana-angular-component-chart-area.mjs.map +0 -1
  169. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs +0 -6
  170. package/fesm2022/ojiepermana-angular-component-chart-bar.mjs.map +0 -1
  171. package/fesm2022/ojiepermana-angular-component-chart-line.mjs +0 -6
  172. package/fesm2022/ojiepermana-angular-component-chart-line.mjs.map +0 -1
  173. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs +0 -6
  174. package/fesm2022/ojiepermana-angular-component-chart-pie.mjs.map +0 -1
  175. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs +0 -6
  176. package/fesm2022/ojiepermana-angular-component-chart-radar.mjs.map +0 -1
  177. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs +0 -6
  178. package/fesm2022/ojiepermana-angular-component-chart-radial.mjs.map +0 -1
  179. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs +0 -6
  180. package/fesm2022/ojiepermana-angular-component-chart-scatter.mjs.map +0 -1
  181. package/fesm2022/ojiepermana-angular-component-chart.mjs +0 -3925
  182. package/fesm2022/ojiepermana-angular-component-chart.mjs.map +0 -1
  183. package/fesm2022/ojiepermana-angular-component-checkbox.mjs +0 -114
  184. package/fesm2022/ojiepermana-angular-component-checkbox.mjs.map +0 -1
  185. package/fesm2022/ojiepermana-angular-component-collapsible.mjs +0 -124
  186. package/fesm2022/ojiepermana-angular-component-collapsible.mjs.map +0 -1
  187. package/fesm2022/ojiepermana-angular-component-combobox.mjs +0 -272
  188. package/fesm2022/ojiepermana-angular-component-combobox.mjs.map +0 -1
  189. package/fesm2022/ojiepermana-angular-component-command.mjs +0 -293
  190. package/fesm2022/ojiepermana-angular-component-command.mjs.map +0 -1
  191. package/fesm2022/ojiepermana-angular-component-composer.mjs +0 -352
  192. package/fesm2022/ojiepermana-angular-component-composer.mjs.map +0 -1
  193. package/fesm2022/ojiepermana-angular-component-context-menu.mjs +0 -103
  194. package/fesm2022/ojiepermana-angular-component-context-menu.mjs.map +0 -1
  195. package/fesm2022/ojiepermana-angular-component-date-picker.mjs +0 -170
  196. package/fesm2022/ojiepermana-angular-component-date-picker.mjs.map +0 -1
  197. package/fesm2022/ojiepermana-angular-component-dialog.mjs +0 -279
  198. package/fesm2022/ojiepermana-angular-component-dialog.mjs.map +0 -1
  199. package/fesm2022/ojiepermana-angular-component-drawer.mjs +0 -6
  200. package/fesm2022/ojiepermana-angular-component-drawer.mjs.map +0 -1
  201. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs +0 -492
  202. package/fesm2022/ojiepermana-angular-component-dropdown-menu.mjs.map +0 -1
  203. package/fesm2022/ojiepermana-angular-component-editor.mjs +0 -717
  204. package/fesm2022/ojiepermana-angular-component-editor.mjs.map +0 -1
  205. package/fesm2022/ojiepermana-angular-component-empty.mjs +0 -145
  206. package/fesm2022/ojiepermana-angular-component-empty.mjs.map +0 -1
  207. package/fesm2022/ojiepermana-angular-component-form.mjs +0 -366
  208. package/fesm2022/ojiepermana-angular-component-form.mjs.map +0 -1
  209. package/fesm2022/ojiepermana-angular-component-hover-card.mjs +0 -297
  210. package/fesm2022/ojiepermana-angular-component-hover-card.mjs.map +0 -1
  211. package/fesm2022/ojiepermana-angular-component-input-group.mjs +0 -179
  212. package/fesm2022/ojiepermana-angular-component-input-group.mjs.map +0 -1
  213. package/fesm2022/ojiepermana-angular-component-input-otp.mjs +0 -514
  214. package/fesm2022/ojiepermana-angular-component-input-otp.mjs.map +0 -1
  215. package/fesm2022/ojiepermana-angular-component-input.mjs +0 -45
  216. package/fesm2022/ojiepermana-angular-component-input.mjs.map +0 -1
  217. package/fesm2022/ojiepermana-angular-component-item.mjs +0 -264
  218. package/fesm2022/ojiepermana-angular-component-item.mjs.map +0 -1
  219. package/fesm2022/ojiepermana-angular-component-kanban.mjs +0 -314
  220. package/fesm2022/ojiepermana-angular-component-kanban.mjs.map +0 -1
  221. package/fesm2022/ojiepermana-angular-component-kbd.mjs +0 -55
  222. package/fesm2022/ojiepermana-angular-component-kbd.mjs.map +0 -1
  223. package/fesm2022/ojiepermana-angular-component-label.mjs +0 -33
  224. package/fesm2022/ojiepermana-angular-component-label.mjs.map +0 -1
  225. package/fesm2022/ojiepermana-angular-component-menubar.mjs +0 -308
  226. package/fesm2022/ojiepermana-angular-component-menubar.mjs.map +0 -1
  227. package/fesm2022/ojiepermana-angular-component-native-select.mjs +0 -67
  228. package/fesm2022/ojiepermana-angular-component-native-select.mjs.map +0 -1
  229. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs +0 -413
  230. package/fesm2022/ojiepermana-angular-component-navigation-menu.mjs.map +0 -1
  231. package/fesm2022/ojiepermana-angular-component-pagination.mjs +0 -226
  232. package/fesm2022/ojiepermana-angular-component-pagination.mjs.map +0 -1
  233. package/fesm2022/ojiepermana-angular-component-pillbox.mjs +0 -812
  234. package/fesm2022/ojiepermana-angular-component-pillbox.mjs.map +0 -1
  235. package/fesm2022/ojiepermana-angular-component-popover.mjs +0 -169
  236. package/fesm2022/ojiepermana-angular-component-popover.mjs.map +0 -1
  237. package/fesm2022/ojiepermana-angular-component-progress.mjs +0 -60
  238. package/fesm2022/ojiepermana-angular-component-progress.mjs.map +0 -1
  239. package/fesm2022/ojiepermana-angular-component-radio.mjs +0 -122
  240. package/fesm2022/ojiepermana-angular-component-radio.mjs.map +0 -1
  241. package/fesm2022/ojiepermana-angular-component-resizable.mjs +0 -481
  242. package/fesm2022/ojiepermana-angular-component-resizable.mjs.map +0 -1
  243. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs +0 -54
  244. package/fesm2022/ojiepermana-angular-component-scroll-area.mjs.map +0 -1
  245. package/fesm2022/ojiepermana-angular-component-select.mjs +0 -176
  246. package/fesm2022/ojiepermana-angular-component-select.mjs.map +0 -1
  247. package/fesm2022/ojiepermana-angular-component-separator.mjs +0 -37
  248. package/fesm2022/ojiepermana-angular-component-separator.mjs.map +0 -1
  249. package/fesm2022/ojiepermana-angular-component-sheet.mjs +0 -284
  250. package/fesm2022/ojiepermana-angular-component-sheet.mjs.map +0 -1
  251. package/fesm2022/ojiepermana-angular-component-skeleton.mjs +0 -31
  252. package/fesm2022/ojiepermana-angular-component-skeleton.mjs.map +0 -1
  253. package/fesm2022/ojiepermana-angular-component-slider.mjs +0 -423
  254. package/fesm2022/ojiepermana-angular-component-slider.mjs.map +0 -1
  255. package/fesm2022/ojiepermana-angular-component-spinner.mjs +0 -60
  256. package/fesm2022/ojiepermana-angular-component-spinner.mjs.map +0 -1
  257. package/fesm2022/ojiepermana-angular-component-switch.mjs +0 -116
  258. package/fesm2022/ojiepermana-angular-component-switch.mjs.map +0 -1
  259. package/fesm2022/ojiepermana-angular-component-table.mjs +0 -155
  260. package/fesm2022/ojiepermana-angular-component-table.mjs.map +0 -1
  261. package/fesm2022/ojiepermana-angular-component-tabs.mjs +0 -272
  262. package/fesm2022/ojiepermana-angular-component-tabs.mjs.map +0 -1
  263. package/fesm2022/ojiepermana-angular-component-textarea.mjs +0 -39
  264. package/fesm2022/ojiepermana-angular-component-textarea.mjs.map +0 -1
  265. package/fesm2022/ojiepermana-angular-component-timeline.mjs +0 -237
  266. package/fesm2022/ojiepermana-angular-component-timeline.mjs.map +0 -1
  267. package/fesm2022/ojiepermana-angular-component-toast.mjs +0 -71
  268. package/fesm2022/ojiepermana-angular-component-toast.mjs.map +0 -1
  269. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs +0 -289
  270. package/fesm2022/ojiepermana-angular-component-toggle-group.mjs.map +0 -1
  271. package/fesm2022/ojiepermana-angular-component-toggle.mjs +0 -82
  272. package/fesm2022/ojiepermana-angular-component-toggle.mjs.map +0 -1
  273. package/fesm2022/ojiepermana-angular-component-tooltip.mjs +0 -354
  274. package/fesm2022/ojiepermana-angular-component-tooltip.mjs.map +0 -1
  275. package/fesm2022/ojiepermana-angular-component-utils.mjs +0 -13
  276. package/fesm2022/ojiepermana-angular-component-utils.mjs.map +0 -1
  277. package/fesm2022/ojiepermana-angular-generator-api.mjs +0 -68
  278. package/fesm2022/ojiepermana-angular-generator-api.mjs.map +0 -1
  279. package/fesm2022/ojiepermana-angular-layout-component.mjs +0 -602
  280. package/fesm2022/ojiepermana-angular-layout-component.mjs.map +0 -1
  281. package/fesm2022/ojiepermana-angular-layout-provider.mjs +0 -21
  282. package/fesm2022/ojiepermana-angular-layout-provider.mjs.map +0 -1
  283. package/fesm2022/ojiepermana-angular-layout-services.mjs +0 -116
  284. package/fesm2022/ojiepermana-angular-layout-services.mjs.map +0 -1
  285. package/fesm2022/ojiepermana-angular-layout-shell.mjs +0 -48
  286. package/fesm2022/ojiepermana-angular-layout-shell.mjs.map +0 -1
  287. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs +0 -30
  288. package/fesm2022/ojiepermana-angular-layout-token-directive.mjs.map +0 -1
  289. package/fesm2022/ojiepermana-angular-layout-token.mjs +0 -33
  290. package/fesm2022/ojiepermana-angular-layout-token.mjs.map +0 -1
  291. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs +0 -49
  292. package/fesm2022/ojiepermana-angular-layout-type-empty.mjs.map +0 -1
  293. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs +0 -128
  294. package/fesm2022/ojiepermana-angular-layout-type-horizontal.mjs.map +0 -1
  295. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs +0 -123
  296. package/fesm2022/ojiepermana-angular-layout-type-vertical.mjs.map +0 -1
  297. package/fesm2022/ojiepermana-angular-layout.mjs +0 -485
  298. package/fesm2022/ojiepermana-angular-layout.mjs.map +0 -1
  299. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs +0 -334
  300. package/fesm2022/ojiepermana-angular-navigation-demo-data.mjs.map +0 -1
  301. package/fesm2022/ojiepermana-angular-navigation-icon.mjs +0 -63
  302. package/fesm2022/ojiepermana-angular-navigation-icon.mjs.map +0 -1
  303. package/fesm2022/ojiepermana-angular-navigation-item.mjs +0 -559
  304. package/fesm2022/ojiepermana-angular-navigation-item.mjs.map +0 -1
  305. package/fesm2022/ojiepermana-angular-navigation-service.mjs +0 -213
  306. package/fesm2022/ojiepermana-angular-navigation-service.mjs.map +0 -1
  307. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs +0 -401
  308. package/fesm2022/ojiepermana-angular-navigation-sidebar.mjs.map +0 -1
  309. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs +0 -670
  310. package/fesm2022/ojiepermana-angular-navigation-topbar.mjs.map +0 -1
  311. package/fesm2022/ojiepermana-angular-navigation-types.mjs +0 -4
  312. package/fesm2022/ojiepermana-angular-navigation-types.mjs.map +0 -1
  313. package/fesm2022/ojiepermana-angular-theme-provider.mjs +0 -35
  314. package/fesm2022/ojiepermana-angular-theme-provider.mjs.map +0 -1
  315. package/fesm2022/ojiepermana-angular-theme-services.mjs +0 -294
  316. package/fesm2022/ojiepermana-angular-theme-services.mjs.map +0 -1
  317. package/fesm2022/ojiepermana-angular-theme-token.mjs +0 -56
  318. package/fesm2022/ojiepermana-angular-theme-token.mjs.map +0 -1
  319. package/fesm2022/ojiepermana-angular-theme.mjs.map +0 -1
  320. package/fesm2022/ojiepermana-angular.mjs.map +0 -1
  321. package/generator/api/README.md +0 -252
  322. package/generator/api/bin/package.json +0 -3
  323. package/generator/api/bin/schematics/init/index.js +0 -90
  324. package/generator/api/bin/schematics/ng-add/index.js +0 -131
  325. package/generator/api/bin/schematics/sdk/index.js +0 -76
  326. package/generator/api/bin/src/config/loader.js +0 -41
  327. package/generator/api/bin/src/config/schema.js +0 -57
  328. package/generator/api/bin/src/emit/client.js +0 -248
  329. package/generator/api/bin/src/emit/metadata.js +0 -295
  330. package/generator/api/bin/src/emit/models.js +0 -106
  331. package/generator/api/bin/src/emit/navigation.js +0 -56
  332. package/generator/api/bin/src/emit/operations.js +0 -122
  333. package/generator/api/bin/src/emit/public-api.js +0 -54
  334. package/generator/api/bin/src/emit/services.js +0 -87
  335. package/generator/api/bin/src/engine.js +0 -65
  336. package/generator/api/bin/src/layout/per-domain.js +0 -359
  337. package/generator/api/bin/src/parser/bundle.js +0 -25
  338. package/generator/api/bin/src/parser/ir.js +0 -320
  339. package/generator/api/bin/src/parser/types.js +0 -7
  340. package/generator/api/bin/src/render/template.js +0 -58
  341. package/generator/api/bin/src/writer/index.js +0 -278
  342. package/generator/api/package.json +0 -4
  343. package/generator/api/schematics/init/schema.json +0 -19
  344. package/generator/api/schematics/ng-add/schema.json +0 -14
  345. package/generator/api/schematics/sdk/schema.json +0 -19
  346. package/generator/api/sdk.config.example.json +0 -24
  347. package/generator/guide/README.md +0 -84
  348. package/generator/guide/bin/package.json +0 -3
  349. package/generator/guide/bin/schematics/build/index.js +0 -36
  350. package/generator/guide/bin/schematics/init/index.js +0 -70
  351. package/generator/guide/bin/src/config/loader.js +0 -50
  352. package/generator/guide/bin/src/config/schema.js +0 -12
  353. package/generator/guide/bin/src/engine/component.js +0 -74
  354. package/generator/guide/bin/src/engine/frontmatter.js +0 -42
  355. package/generator/guide/bin/src/engine/index.js +0 -42
  356. package/generator/guide/bin/src/engine/naming.js +0 -39
  357. package/generator/guide/bin/src/engine/render.js +0 -36
  358. package/generator/guide/bin/src/engine/routes.js +0 -106
  359. package/generator/guide/bin/src/engine/walk.js +0 -35
  360. package/generator/guide/guide.config.example.json +0 -9
  361. package/generator/guide/schematics/build/schema.json +0 -14
  362. package/generator/guide/schematics/init/schema.json +0 -19
  363. package/layout/component/package.json +0 -4
  364. package/layout/package.json +0 -4
  365. package/layout/provider/package.json +0 -4
  366. package/layout/services/package.json +0 -4
  367. package/layout/shell/package.json +0 -4
  368. package/layout/token/directive/package.json +0 -4
  369. package/layout/token/package.json +0 -4
  370. package/layout/type/empty/package.json +0 -4
  371. package/layout/type/horizontal/package.json +0 -4
  372. package/layout/type/vertical/package.json +0 -4
  373. package/navigation/demo-data/package.json +0 -4
  374. package/navigation/icon/package.json +0 -4
  375. package/navigation/item/package.json +0 -4
  376. package/navigation/service/package.json +0 -4
  377. package/navigation/sidebar/package.json +0 -4
  378. package/navigation/topbar/README.md +0 -196
  379. package/navigation/topbar/package.json +0 -4
  380. package/navigation/types/package.json +0 -4
  381. package/theme/README.md +0 -174
  382. package/theme/package.json +0 -4
  383. package/theme/provider/package.json +0 -4
  384. package/theme/services/package.json +0 -4
  385. package/theme/styles/foundation/components.css +0 -81
  386. package/theme/styles/foundation/layers.css +0 -15
  387. package/theme/styles/foundation/tokens.css +0 -55
  388. package/theme/styles/index.css +0 -37
  389. package/theme/styles/integrations/material/autocomplete.css +0 -178
  390. package/theme/styles/integrations/material/button.css +0 -468
  391. package/theme/styles/integrations/material/dialog.css +0 -152
  392. package/theme/styles/integrations/material/select.css +0 -175
  393. package/theme/styles/integrations/material/slide-toggle.css +0 -234
  394. package/theme/styles/integrations/material/slider.css +0 -194
  395. package/theme/styles/integrations/material/tabs.css +0 -229
  396. package/theme/styles/integrations/material.css +0 -264
  397. package/theme/styles/integrations/tailwind.css +0 -114
  398. package/theme/styles/variants/color/amber.css +0 -31
  399. package/theme/styles/variants/color/base.css +0 -36
  400. package/theme/styles/variants/color/blue.css +0 -31
  401. package/theme/styles/variants/color/cyan.css +0 -31
  402. package/theme/styles/variants/color/emerald.css +0 -31
  403. package/theme/styles/variants/color/fuchsia.css +0 -31
  404. package/theme/styles/variants/color/green.css +0 -31
  405. package/theme/styles/variants/color/index.css +0 -22
  406. package/theme/styles/variants/color/indigo.css +0 -31
  407. package/theme/styles/variants/color/lime.css +0 -31
  408. package/theme/styles/variants/color/orange.css +0 -31
  409. package/theme/styles/variants/color/pink.css +0 -31
  410. package/theme/styles/variants/color/purple.css +0 -31
  411. package/theme/styles/variants/color/red.css +0 -31
  412. package/theme/styles/variants/color/rose.css +0 -31
  413. package/theme/styles/variants/color/sky.css +0 -31
  414. package/theme/styles/variants/color/teal.css +0 -31
  415. package/theme/styles/variants/color/violet.css +0 -31
  416. package/theme/styles/variants/color/yellow.css +0 -31
  417. package/theme/styles/variants/mode/dark.css +0 -20
  418. package/theme/styles/variants/mode/index.css +0 -6
  419. package/theme/styles/variants/mode/light.css +0 -24
  420. package/theme/styles/variants/style/brutal.css +0 -50
  421. package/theme/styles/variants/style/default.css +0 -54
  422. package/theme/styles/variants/style/index.css +0 -8
  423. package/theme/styles/variants/style/sharp.css +0 -50
  424. package/theme/styles/variants/style/soft.css +0 -50
  425. package/theme/token/package.json +0 -4
  426. package/types/ojiepermana-angular-component-accordion.d.ts +0 -51
  427. package/types/ojiepermana-angular-component-alert-dialog.d.ts +0 -93
  428. package/types/ojiepermana-angular-component-alert.d.ts +0 -37
  429. package/types/ojiepermana-angular-component-aspect-ratio.d.ts +0 -12
  430. package/types/ojiepermana-angular-component-avatar.d.ts +0 -51
  431. package/types/ojiepermana-angular-component-badge.d.ts +0 -19
  432. package/types/ojiepermana-angular-component-breadcrumb.d.ts +0 -46
  433. package/types/ojiepermana-angular-component-button-group.d.ts +0 -26
  434. package/types/ojiepermana-angular-component-button.d.ts +0 -22
  435. package/types/ojiepermana-angular-component-calendar.d.ts +0 -33
  436. package/types/ojiepermana-angular-component-card.d.ts +0 -60
  437. package/types/ojiepermana-angular-component-carousel.d.ts +0 -86
  438. package/types/ojiepermana-angular-component-chart-area.d.ts +0 -1
  439. package/types/ojiepermana-angular-component-chart-bar.d.ts +0 -1
  440. package/types/ojiepermana-angular-component-chart-line.d.ts +0 -1
  441. package/types/ojiepermana-angular-component-chart-pie.d.ts +0 -1
  442. package/types/ojiepermana-angular-component-chart-radar.d.ts +0 -1
  443. package/types/ojiepermana-angular-component-chart-radial.d.ts +0 -1
  444. package/types/ojiepermana-angular-component-chart-scatter.d.ts +0 -1
  445. package/types/ojiepermana-angular-component-chart.d.ts +0 -1094
  446. package/types/ojiepermana-angular-component-checkbox.d.ts +0 -35
  447. package/types/ojiepermana-angular-component-collapsible.d.ts +0 -42
  448. package/types/ojiepermana-angular-component-combobox.d.ts +0 -50
  449. package/types/ojiepermana-angular-component-command.d.ts +0 -99
  450. package/types/ojiepermana-angular-component-composer.d.ts +0 -90
  451. package/types/ojiepermana-angular-component-context-menu.d.ts +0 -35
  452. package/types/ojiepermana-angular-component-date-picker.d.ts +0 -41
  453. package/types/ojiepermana-angular-component-dialog.d.ts +0 -87
  454. package/types/ojiepermana-angular-component-drawer.d.ts +0 -1
  455. package/types/ojiepermana-angular-component-dropdown-menu.d.ts +0 -137
  456. package/types/ojiepermana-angular-component-editor.d.ts +0 -123
  457. package/types/ojiepermana-angular-component-empty.d.ts +0 -50
  458. package/types/ojiepermana-angular-component-form.d.ts +0 -141
  459. package/types/ojiepermana-angular-component-hover-card.d.ts +0 -74
  460. package/types/ojiepermana-angular-component-input-group.d.ts +0 -51
  461. package/types/ojiepermana-angular-component-input-otp.d.ts +0 -136
  462. package/types/ojiepermana-angular-component-input.d.ts +0 -16
  463. package/types/ojiepermana-angular-component-item.d.ts +0 -88
  464. package/types/ojiepermana-angular-component-kanban.d.ts +0 -70
  465. package/types/ojiepermana-angular-component-kbd.d.ts +0 -16
  466. package/types/ojiepermana-angular-component-label.d.ts +0 -11
  467. package/types/ojiepermana-angular-component-menubar.d.ts +0 -67
  468. package/types/ojiepermana-angular-component-native-select.d.ts +0 -26
  469. package/types/ojiepermana-angular-component-navigation-menu.d.ts +0 -96
  470. package/types/ojiepermana-angular-component-pagination.d.ts +0 -33
  471. package/types/ojiepermana-angular-component-pillbox.d.ts +0 -157
  472. package/types/ojiepermana-angular-component-popover.d.ts +0 -43
  473. package/types/ojiepermana-angular-component-progress.d.ts +0 -17
  474. package/types/ojiepermana-angular-component-radio.d.ts +0 -40
  475. package/types/ojiepermana-angular-component-resizable.d.ts +0 -99
  476. package/types/ojiepermana-angular-component-scroll-area.d.ts +0 -19
  477. package/types/ojiepermana-angular-component-select.d.ts +0 -57
  478. package/types/ojiepermana-angular-component-separator.d.ts +0 -14
  479. package/types/ojiepermana-angular-component-sheet.d.ts +0 -76
  480. package/types/ojiepermana-angular-component-skeleton.d.ts +0 -10
  481. package/types/ojiepermana-angular-component-slider.d.ts +0 -74
  482. package/types/ojiepermana-angular-component-spinner.d.ts +0 -13
  483. package/types/ojiepermana-angular-component-switch.d.ts +0 -40
  484. package/types/ojiepermana-angular-component-table.d.ts +0 -52
  485. package/types/ojiepermana-angular-component-tabs.d.ts +0 -92
  486. package/types/ojiepermana-angular-component-textarea.d.ts +0 -12
  487. package/types/ojiepermana-angular-component-timeline.d.ts +0 -63
  488. package/types/ojiepermana-angular-component-toast.d.ts +0 -38
  489. package/types/ojiepermana-angular-component-toggle-group.d.ts +0 -89
  490. package/types/ojiepermana-angular-component-toggle.d.ts +0 -25
  491. package/types/ojiepermana-angular-component-tooltip.d.ts +0 -89
  492. package/types/ojiepermana-angular-component-utils.d.ts +0 -5
  493. package/types/ojiepermana-angular-generator-api.d.ts +0 -86
  494. package/types/ojiepermana-angular-layout-component.d.ts +0 -205
  495. package/types/ojiepermana-angular-layout-provider.d.ts +0 -6
  496. package/types/ojiepermana-angular-layout-services.d.ts +0 -25
  497. package/types/ojiepermana-angular-layout-shell.d.ts +0 -8
  498. package/types/ojiepermana-angular-layout-token-directive.d.ts +0 -13
  499. package/types/ojiepermana-angular-layout-token.d.ts +0 -36
  500. package/types/ojiepermana-angular-layout-type-empty.d.ts +0 -22
  501. package/types/ojiepermana-angular-layout-type-horizontal.d.ts +0 -36
  502. package/types/ojiepermana-angular-layout-type-vertical.d.ts +0 -38
  503. package/types/ojiepermana-angular-layout.d.ts +0 -164
  504. package/types/ojiepermana-angular-navigation-demo-data.d.ts +0 -5
  505. package/types/ojiepermana-angular-navigation-icon.d.ts +0 -17
  506. package/types/ojiepermana-angular-navigation-item.d.ts +0 -54
  507. package/types/ojiepermana-angular-navigation-service.d.ts +0 -77
  508. package/types/ojiepermana-angular-navigation-sidebar.d.ts +0 -75
  509. package/types/ojiepermana-angular-navigation-topbar.d.ts +0 -74
  510. package/types/ojiepermana-angular-navigation-types.d.ts +0 -135
  511. package/types/ojiepermana-angular-theme-provider.d.ts +0 -11
  512. package/types/ojiepermana-angular-theme-services.d.ts +0 -55
  513. package/types/ojiepermana-angular-theme-token.d.ts +0 -57
@@ -1,812 +0,0 @@
1
- import { DOCUMENT, NgTemplateOutlet } from '@angular/common';
2
- import * as i0 from '@angular/core';
3
- import { inject, TemplateRef, Directive, ElementRef, contentChild, input, booleanAttribute, output, computed, ChangeDetectionStrategy, Component, numberAttribute, DestroyRef, signal, viewChild, contentChildren, forwardRef } from '@angular/core';
4
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
5
- import { cn } from '@ojiepermana/angular/component/utils';
6
-
7
- class PillboxContext {
8
- }
9
- let nextPillboxId = 0;
10
- const pillboxTriggerSizeClasses = {
11
- default: 'min-h-10 px-3 py-2 text-sm',
12
- sm: 'min-h-8 px-2.5 py-1.5 text-xs',
13
- };
14
- const pillboxPillSizeClasses = {
15
- default: 'min-h-6 px-2 text-xs',
16
- sm: 'min-h-5 px-1.5 text-[0.6875rem]',
17
- };
18
- class PillboxSelectedDirective {
19
- template = inject(TemplateRef);
20
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxSelectedDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
21
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.0", type: PillboxSelectedDirective, isStandalone: true, selector: "ng-template[uiPillboxSelected]", exportAs: ["uiPillboxSelected"], ngImport: i0 });
22
- }
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxSelectedDirective, decorators: [{
24
- type: Directive,
25
- args: [{
26
- selector: 'ng-template[uiPillboxSelected]',
27
- exportAs: 'uiPillboxSelected',
28
- }]
29
- }] });
30
- class PillboxOptionComponent {
31
- context = inject(PillboxContext);
32
- element = inject(ElementRef);
33
- selectedTemplate = contentChild(PillboxSelectedDirective, /* @ts-ignore */
34
- ...(ngDevMode ? [{ debugName: "selectedTemplate" }] : /* istanbul ignore next */ []));
35
- value = input.required(/* @ts-ignore */
36
- ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
37
- label = input('', /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
39
- selectedLabel = input('', /* @ts-ignore */
40
- ...(ngDevMode ? [{ debugName: "selectedLabel" }] : /* istanbul ignore next */ []));
41
- disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
42
- filterable = input(true, { ...(ngDevMode ? { debugName: "filterable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
43
- class = input('', /* @ts-ignore */
44
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
45
- selectedChange = output();
46
- selected = computed(() => this.context.optionSelected(this), /* @ts-ignore */
47
- ...(ngDevMode ? [{ debugName: "selected" }] : /* istanbul ignore next */ []));
48
- visible = computed(() => this.context.optionVisible(this), /* @ts-ignore */
49
- ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
50
- classes = computed(() => cn('relative flex w-full cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors', 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground', 'data-[selected]:bg-accent data-[selected]:text-accent-foreground', 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50', this.class()), /* @ts-ignore */
51
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
52
- textLabel() {
53
- return (this.label() || this.element.nativeElement.textContent || String(this.value())).trim();
54
- }
55
- pillLabel() {
56
- return (this.selectedLabel() || this.textLabel()).trim();
57
- }
58
- pillTemplate() {
59
- return this.selectedTemplate()?.template ?? null;
60
- }
61
- handleClick(event) {
62
- this.context.chooseOption(this, event);
63
- }
64
- handleKeydown(event) {
65
- event.preventDefault();
66
- this.context.chooseOption(this, event);
67
- }
68
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: PillboxOptionComponent, isStandalone: true, selector: "ui-pillbox-option, button[ui-pillbox-option]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, selectedLabel: { classPropertyName: "selectedLabel", publicName: "selectedLabel", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selectedChange: "selectedChange" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option\"", "attr.data-selected": "selected() ? \"\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.role": "\"option\"", "attr.aria-selected": "selected()", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.tabindex": "disabled() ? -1 : 0", "hidden": "!visible()" } }, queries: [{ propertyName: "selectedTemplate", first: true, predicate: PillboxSelectedDirective, descendants: true, isSignal: true }], ngImport: i0, template: `
70
- <span class="min-w-0 flex-1 truncate text-left"><ng-content /></span>
71
- @if (selected()) {
72
- <svg
73
- aria-hidden="true"
74
- class="ml-auto size-4 shrink-0"
75
- viewBox="0 0 24 24"
76
- fill="none"
77
- stroke="currentColor"
78
- stroke-width="1.75"
79
- stroke-linecap="round"
80
- stroke-linejoin="round">
81
- <path d="M20 6 9 17l-5-5" />
82
- </svg>
83
- }
84
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
85
- }
86
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxOptionComponent, decorators: [{
87
- type: Component,
88
- args: [{
89
- selector: 'ui-pillbox-option, button[ui-pillbox-option]',
90
- changeDetection: ChangeDetectionStrategy.OnPush,
91
- host: {
92
- type: 'button',
93
- '[class]': 'classes()',
94
- '[attr.data-slot]': '"pillbox-option"',
95
- '[attr.data-selected]': 'selected() ? "" : null',
96
- '[attr.data-disabled]': 'disabled() ? "" : null',
97
- '[attr.role]': '"option"',
98
- '[attr.aria-selected]': 'selected()',
99
- '[attr.aria-disabled]': 'disabled() ? "true" : null',
100
- '[attr.tabindex]': 'disabled() ? -1 : 0',
101
- '[hidden]': '!visible()',
102
- '(click)': 'handleClick($event)',
103
- '(keydown.enter)': 'handleKeydown($any($event))',
104
- '(keydown.space)': 'handleKeydown($any($event))',
105
- },
106
- template: `
107
- <span class="min-w-0 flex-1 truncate text-left"><ng-content /></span>
108
- @if (selected()) {
109
- <svg
110
- aria-hidden="true"
111
- class="ml-auto size-4 shrink-0"
112
- viewBox="0 0 24 24"
113
- fill="none"
114
- stroke="currentColor"
115
- stroke-width="1.75"
116
- stroke-linecap="round"
117
- stroke-linejoin="round">
118
- <path d="M20 6 9 17l-5-5" />
119
- </svg>
120
- }
121
- `,
122
- }]
123
- }], propDecorators: { selectedTemplate: [{ type: i0.ContentChild, args: [i0.forwardRef(() => PillboxSelectedDirective), { isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], selectedLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedLabel", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], filterable: [{ type: i0.Input, args: [{ isSignal: true, alias: "filterable", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], selectedChange: [{ type: i0.Output, args: ["selectedChange"] }] } });
124
- class PillboxOptionCreateComponent {
125
- context = inject(PillboxContext);
126
- minLength = input(1, { ...(ngDevMode ? { debugName: "minLength" } : /* istanbul ignore next */ {}), transform: numberAttribute });
127
- disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
128
- class = input('', /* @ts-ignore */
129
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
130
- selected = output();
131
- visible = computed(() => this.context.createVisible(this), /* @ts-ignore */
132
- ...(ngDevMode ? [{ debugName: "visible" }] : /* istanbul ignore next */ []));
133
- classes = computed(() => cn('relative flex w-full cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm font-medium text-primary outline-none transition-colors', 'hover:bg-accent hover:text-accent-foreground focus:bg-accent focus:text-accent-foreground', 'aria-disabled:pointer-events-none aria-disabled:opacity-50', this.class()), /* @ts-ignore */
134
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
135
- handleClick(event) {
136
- this.context.chooseCreate(this, event);
137
- }
138
- handleKeydown(event) {
139
- event.preventDefault();
140
- this.context.chooseCreate(this, event);
141
- }
142
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxOptionCreateComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
143
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.0", type: PillboxOptionCreateComponent, isStandalone: true, selector: "ui-pillbox-option-create, button[ui-pillbox-option-create]", inputs: { minLength: { classPropertyName: "minLength", publicName: "minLength", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selected" }, host: { attributes: { "type": "button" }, listeners: { "click": "handleClick($event)", "keydown.enter": "handleKeydown($any($event))", "keydown.space": "handleKeydown($any($event))" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-create\"", "attr.role": "\"option\"", "attr.tabindex": "disabled() ? -1 : 0", "attr.aria-disabled": "disabled() ? \"true\" : null", "hidden": "!visible()" } }, ngImport: i0, template: `<ng-content />`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
144
- }
145
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxOptionCreateComponent, decorators: [{
146
- type: Component,
147
- args: [{
148
- selector: 'ui-pillbox-option-create, button[ui-pillbox-option-create]',
149
- changeDetection: ChangeDetectionStrategy.OnPush,
150
- host: {
151
- type: 'button',
152
- '[class]': 'classes()',
153
- '[attr.data-slot]': '"pillbox-option-create"',
154
- '[attr.role]': '"option"',
155
- '[attr.tabindex]': 'disabled() ? -1 : 0',
156
- '[attr.aria-disabled]': 'disabled() ? "true" : null',
157
- '[hidden]': '!visible()',
158
- '(click)': 'handleClick($event)',
159
- '(keydown.enter)': 'handleKeydown($any($event))',
160
- '(keydown.space)': 'handleKeydown($any($event))',
161
- },
162
- template: `<ng-content />`,
163
- }]
164
- }], propDecorators: { minLength: [{ type: i0.Input, args: [{ isSignal: true, alias: "minLength", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], selected: [{ type: i0.Output, args: ["selected"] }] } });
165
- class PillboxOptionEmptyComponent {
166
- context = inject(PillboxContext);
167
- whenLoading = input('', /* @ts-ignore */
168
- ...(ngDevMode ? [{ debugName: "whenLoading" }] : /* istanbul ignore next */ []));
169
- class = input('', /* @ts-ignore */
170
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
171
- classes = computed(() => cn('px-2 py-6 text-center text-sm text-muted-foreground', this.class()), /* @ts-ignore */
172
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
173
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxOptionEmptyComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
174
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: PillboxOptionEmptyComponent, isStandalone: true, selector: "ui-pillbox-option-empty", inputs: { whenLoading: { classPropertyName: "whenLoading", publicName: "whenLoading", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "presentation" }, properties: { "class": "classes()", "attr.data-slot": "\"pillbox-option-empty\"", "hidden": "!context.emptyVisible()" } }, ngImport: i0, template: `
175
- @if (context.emptyMessage()) {
176
- {{ context.emptyMessage() }}
177
- } @else {
178
- <ng-content />
179
- }
180
- `, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
181
- }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxOptionEmptyComponent, decorators: [{
183
- type: Component,
184
- args: [{
185
- selector: 'ui-pillbox-option-empty',
186
- changeDetection: ChangeDetectionStrategy.OnPush,
187
- host: {
188
- '[class]': 'classes()',
189
- '[attr.data-slot]': '"pillbox-option-empty"',
190
- role: 'presentation',
191
- '[hidden]': '!context.emptyVisible()',
192
- },
193
- template: `
194
- @if (context.emptyMessage()) {
195
- {{ context.emptyMessage() }}
196
- } @else {
197
- <ng-content />
198
- }
199
- `,
200
- }]
201
- }], propDecorators: { whenLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "whenLoading", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }] } });
202
- class PillboxComponent extends PillboxContext {
203
- element = inject(ElementRef);
204
- document = inject(DOCUMENT);
205
- destroyRef = inject(DestroyRef);
206
- id = input(null, /* @ts-ignore */
207
- ...(ngDevMode ? [{ debugName: "id" }] : /* istanbul ignore next */ []));
208
- placeholder = input('Choose options...', /* @ts-ignore */
209
- ...(ngDevMode ? [{ debugName: "placeholder" }] : /* istanbul ignore next */ []));
210
- searchPlaceholder = input('Search...', /* @ts-ignore */
211
- ...(ngDevMode ? [{ debugName: "searchPlaceholder" }] : /* istanbul ignore next */ []));
212
- size = input('default', /* @ts-ignore */
213
- ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
214
- variant = input('default', /* @ts-ignore */
215
- ...(ngDevMode ? [{ debugName: "variant" }] : /* istanbul ignore next */ []));
216
- multiple = input(false, { ...(ngDevMode ? { debugName: "multiple" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
217
- searchable = input(false, { ...(ngDevMode ? { debugName: "searchable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
218
- filter = input(true, { ...(ngDevMode ? { debugName: "filter" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
219
- clearable = input(true, { ...(ngDevMode ? { debugName: "clearable" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
220
- disabled = input(false, { ...(ngDevMode ? { debugName: "disabled" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
221
- invalid = input(false, { ...(ngDevMode ? { debugName: "invalid" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
222
- loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: booleanAttribute });
223
- emptyText = input('No options found.', /* @ts-ignore */
224
- ...(ngDevMode ? [{ debugName: "emptyText" }] : /* istanbul ignore next */ []));
225
- loadingText = input('Loading...', /* @ts-ignore */
226
- ...(ngDevMode ? [{ debugName: "loadingText" }] : /* istanbul ignore next */ []));
227
- ariaLabel = input(null, { ...(ngDevMode ? { debugName: "ariaLabel" } : /* istanbul ignore next */ {}), alias: 'aria-label' });
228
- ariaDescribedby = input(null, { ...(ngDevMode ? { debugName: "ariaDescribedby" } : /* istanbul ignore next */ {}), alias: 'aria-describedby' });
229
- ariaLabelledby = input(null, { ...(ngDevMode ? { debugName: "ariaLabelledby" } : /* istanbul ignore next */ {}), alias: 'aria-labelledby' });
230
- class = input('', /* @ts-ignore */
231
- ...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
232
- valueChange = output();
233
- searchChange = output();
234
- create = output();
235
- openedChange = output();
236
- query = signal('', /* @ts-ignore */
237
- ...(ngDevMode ? [{ debugName: "query" }] : /* istanbul ignore next */ []));
238
- openState = signal(false, /* @ts-ignore */
239
- ...(ngDevMode ? [{ debugName: "openState" }] : /* istanbul ignore next */ []));
240
- selectedValues = signal([], /* @ts-ignore */
241
- ...(ngDevMode ? [{ debugName: "selectedValues" }] : /* istanbul ignore next */ []));
242
- disabledFromControl = signal(false, /* @ts-ignore */
243
- ...(ngDevMode ? [{ debugName: "disabledFromControl" }] : /* istanbul ignore next */ []));
244
- generatedId = `ui-pillbox-${++nextPillboxId}`;
245
- trigger = viewChild.required('trigger');
246
- inlineSearch = viewChild('inlineSearch', /* @ts-ignore */
247
- ...(ngDevMode ? [{ debugName: "inlineSearch" }] : /* istanbul ignore next */ []));
248
- panelSearch = viewChild('panelSearch', /* @ts-ignore */
249
- ...(ngDevMode ? [{ debugName: "panelSearch" }] : /* istanbul ignore next */ []));
250
- options = contentChildren(PillboxOptionComponent, { ...(ngDevMode ? { debugName: "options" } : /* istanbul ignore next */ {}), descendants: true });
251
- createOptions = contentChildren(PillboxOptionCreateComponent, { ...(ngDevMode ? { debugName: "createOptions" } : /* istanbul ignore next */ {}), descendants: true });
252
- emptyOptions = contentChildren(PillboxOptionEmptyComponent, { ...(ngDevMode ? { debugName: "emptyOptions" } : /* istanbul ignore next */ {}), descendants: true });
253
- removeDocumentListener = null;
254
- onChange = () => { };
255
- onTouched = () => { };
256
- panelId = `${this.generatedId}-panel`;
257
- resolvedId = computed(() => this.id() ?? this.generatedId, /* @ts-ignore */
258
- ...(ngDevMode ? [{ debugName: "resolvedId" }] : /* istanbul ignore next */ []));
259
- disabledState = computed(() => this.disabled() || this.disabledFromControl(), /* @ts-ignore */
260
- ...(ngDevMode ? [{ debugName: "disabledState" }] : /* istanbul ignore next */ []));
261
- classes = computed(() => cn('relative block w-full min-w-0 text-sm text-foreground', this.class()), /* @ts-ignore */
262
- ...(ngDevMode ? [{ debugName: "classes" }] : /* istanbul ignore next */ []));
263
- triggerClasses = computed(() => cn('flex w-full min-w-0 cursor-default items-center gap-2 rounded-md border border-input bg-background shadow-sm transition-colors', 'focus-within:outline-none focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2 focus-within:ring-offset-background', 'hover:bg-accent/20', pillboxTriggerSizeClasses[this.size()], this.invalid() ? 'border-destructive ring-1 ring-destructive' : '', this.disabledState() ? 'pointer-events-none cursor-not-allowed opacity-50' : ''), /* @ts-ignore */
264
- ...(ngDevMode ? [{ debugName: "triggerClasses" }] : /* istanbul ignore next */ []));
265
- pillClasses = computed(() => cn('inline-flex max-w-full shrink-0 items-center gap-1 rounded-md border border-border bg-muted font-medium text-muted-foreground', pillboxPillSizeClasses[this.size()]), /* @ts-ignore */
266
- ...(ngDevMode ? [{ debugName: "pillClasses" }] : /* istanbul ignore next */ []));
267
- panelClasses = computed(() => cn('absolute left-0 right-0 z-50 mt-1 overflow-hidden rounded-md border border-border bg-popover text-popover-foreground shadow-md', 'min-w-full'), /* @ts-ignore */
268
- ...(ngDevMode ? [{ debugName: "panelClasses" }] : /* istanbul ignore next */ []));
269
- selectedItems = computed(() => this.selectedValues().map((value, index) => {
270
- const option = this.findOption(value);
271
- return {
272
- value,
273
- label: option?.pillLabel() || String(value),
274
- template: option?.pillTemplate() ?? null,
275
- track: this.trackValue(value, index),
276
- };
277
- }), /* @ts-ignore */
278
- ...(ngDevMode ? [{ debugName: "selectedItems" }] : /* istanbul ignore next */ []));
279
- constructor() {
280
- super();
281
- this.destroyRef.onDestroy(() => this.removeOutsideListener());
282
- }
283
- optionVisible(option) {
284
- if (!this.filter() || !option.filterable()) {
285
- return true;
286
- }
287
- const query = this.query().trim().toLowerCase();
288
- if (!query) {
289
- return true;
290
- }
291
- return option.textLabel().toLowerCase().includes(query);
292
- }
293
- optionSelected(option) {
294
- return this.hasValue(option.value());
295
- }
296
- chooseOption(option, event) {
297
- event.preventDefault();
298
- event.stopPropagation();
299
- if (this.disabledState() || option.disabled()) {
300
- return;
301
- }
302
- if (this.multiple()) {
303
- const value = option.value();
304
- this.selectedValues.update((values) => values.some((entry) => this.sameValue(entry, value))
305
- ? values.filter((entry) => !this.sameValue(entry, value))
306
- : [...values, value]);
307
- }
308
- else {
309
- this.selectedValues.set([option.value()]);
310
- this.close();
311
- }
312
- option.selectedChange.emit(option.value());
313
- this.query.set('');
314
- this.emitValue();
315
- }
316
- createVisible(option) {
317
- const query = this.query().trim();
318
- if (option.disabled() || query.length < option.minLength()) {
319
- return false;
320
- }
321
- return !this.options().some((entry) => entry.textLabel().trim().toLowerCase() === query.toLowerCase());
322
- }
323
- chooseCreate(option, event) {
324
- event.preventDefault();
325
- event.stopPropagation();
326
- const query = this.query().trim();
327
- if (this.disabledState() || option.disabled() || !this.createVisible(option)) {
328
- return;
329
- }
330
- option.selected.emit(query);
331
- this.create.emit(query);
332
- }
333
- emptyVisible() {
334
- return this.options().length > 0 && !this.hasVisibleOptions() && !this.hasVisibleCreateOption();
335
- }
336
- emptyMessage() {
337
- const customEmptyOption = this.emptyOptions()[0];
338
- if (this.loading()) {
339
- return customEmptyOption?.whenLoading() || this.loadingText();
340
- }
341
- return customEmptyOption ? '' : this.emptyText();
342
- }
343
- handleTriggerClick() {
344
- this.open();
345
- }
346
- handleTriggerKeydown(event) {
347
- if (this.disabledState()) {
348
- return;
349
- }
350
- event.preventDefault();
351
- this.open();
352
- }
353
- handleSearchInput(event) {
354
- const inputElement = event.target;
355
- this.query.set(inputElement.value);
356
- this.searchChange.emit(inputElement.value);
357
- this.open();
358
- }
359
- handleInlineBackspace(event) {
360
- if (event.target.value.length > 0 || this.selectedValues().length === 0) {
361
- return;
362
- }
363
- event.preventDefault();
364
- this.selectedValues.update((values) => values.slice(0, -1));
365
- this.emitValue();
366
- }
367
- clearSearch(event) {
368
- event.preventDefault();
369
- event.stopPropagation();
370
- this.query.set('');
371
- this.searchChange.emit('');
372
- this.focusSearchInput();
373
- }
374
- clear(event) {
375
- event.preventDefault();
376
- event.stopPropagation();
377
- this.selectedValues.set([]);
378
- this.emitValue();
379
- }
380
- removeSelected(value, event) {
381
- event.preventDefault();
382
- event.stopPropagation();
383
- this.selectedValues.update((values) => values.filter((entry) => !this.sameValue(entry, value)));
384
- this.emitValue();
385
- }
386
- open() {
387
- if (this.disabledState() || this.openState()) {
388
- return;
389
- }
390
- this.openState.set(true);
391
- this.openedChange.emit(true);
392
- queueMicrotask(() => {
393
- this.focusSearchInput();
394
- this.bindOutsideListener();
395
- });
396
- }
397
- close() {
398
- if (!this.openState()) {
399
- return;
400
- }
401
- this.openState.set(false);
402
- this.openedChange.emit(false);
403
- this.removeOutsideListener();
404
- this.onTouched();
405
- }
406
- focus() {
407
- this.trigger().nativeElement.focus();
408
- }
409
- writeValue(value) {
410
- if (this.multiple()) {
411
- this.selectedValues.set(Array.isArray(value) ? value : []);
412
- return;
413
- }
414
- this.selectedValues.set(value === null || value === undefined ? [] : [value]);
415
- }
416
- registerOnChange(fn) {
417
- this.onChange = fn;
418
- }
419
- registerOnTouched(fn) {
420
- this.onTouched = fn;
421
- }
422
- setDisabledState(disabled) {
423
- this.disabledFromControl.set(disabled);
424
- }
425
- emitValue() {
426
- const nextValue = this.multiple() ? [...this.selectedValues()] : (this.selectedValues()[0] ?? null);
427
- this.onChange(nextValue);
428
- this.valueChange.emit(nextValue);
429
- }
430
- hasValue(value) {
431
- return this.selectedValues().some((entry) => this.sameValue(entry, value));
432
- }
433
- findOption(value) {
434
- return this.options().find((option) => this.sameValue(option.value(), value));
435
- }
436
- hasVisibleOptions() {
437
- return this.options().some((option) => this.optionVisible(option));
438
- }
439
- hasVisibleCreateOption() {
440
- return this.createOptions().some((option) => this.createVisible(option));
441
- }
442
- sameValue(left, right) {
443
- return Object.is(left, right);
444
- }
445
- trackValue(value, index) {
446
- return typeof value === 'object' && value !== null ? index : value;
447
- }
448
- focusSearchInput() {
449
- const searchInput = this.variant() === 'combobox' ? this.inlineSearch()?.nativeElement : this.panelSearch()?.nativeElement;
450
- searchInput?.focus();
451
- }
452
- bindOutsideListener() {
453
- this.removeOutsideListener();
454
- const listener = (event) => {
455
- if (!this.element.nativeElement.contains(event.target)) {
456
- this.close();
457
- }
458
- };
459
- this.document.addEventListener('pointerdown', listener, true);
460
- this.removeDocumentListener = () => this.document.removeEventListener('pointerdown', listener, true);
461
- }
462
- removeOutsideListener() {
463
- this.removeDocumentListener?.();
464
- this.removeDocumentListener = null;
465
- }
466
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
467
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.0", type: PillboxComponent, isStandalone: true, selector: "ui-pillbox", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, searchPlaceholder: { classPropertyName: "searchPlaceholder", publicName: "searchPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, searchable: { classPropertyName: "searchable", publicName: "searchable", isSignal: true, isRequired: false, transformFunction: null }, filter: { classPropertyName: "filter", publicName: "filter", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, emptyText: { classPropertyName: "emptyText", publicName: "emptyText", isSignal: true, isRequired: false, transformFunction: null }, loadingText: { classPropertyName: "loadingText", publicName: "loadingText", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "aria-label", isSignal: true, isRequired: false, transformFunction: null }, ariaDescribedby: { classPropertyName: "ariaDescribedby", publicName: "aria-describedby", isSignal: true, isRequired: false, transformFunction: null }, ariaLabelledby: { classPropertyName: "ariaLabelledby", publicName: "aria-labelledby", isSignal: true, isRequired: false, transformFunction: null }, class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", searchChange: "searchChange", create: "create", openedChange: "openedChange" }, host: { properties: { "class": "classes()", "attr.data-slot": "\"pillbox\"", "attr.data-open": "openState() ? \"\" : null", "attr.data-size": "size()", "attr.data-variant": "variant()" } }, providers: [
468
- { provide: PillboxContext, useExisting: forwardRef(() => PillboxComponent) },
469
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PillboxComponent), multi: true },
470
- ], queries: [{ propertyName: "options", predicate: PillboxOptionComponent, descendants: true, isSignal: true }, { propertyName: "createOptions", predicate: PillboxOptionCreateComponent, descendants: true, isSignal: true }, { propertyName: "emptyOptions", predicate: PillboxOptionEmptyComponent, descendants: true, isSignal: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: ["trigger"], descendants: true, isSignal: true }, { propertyName: "inlineSearch", first: true, predicate: ["inlineSearch"], descendants: true, isSignal: true }, { propertyName: "panelSearch", first: true, predicate: ["panelSearch"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: `
471
- <div
472
- #trigger
473
- [attr.id]="resolvedId()"
474
- role="combobox"
475
- aria-haspopup="listbox"
476
- [attr.aria-expanded]="openState()"
477
- [attr.aria-controls]="openState() ? panelId : null"
478
- [attr.aria-label]="ariaLabel()"
479
- [attr.aria-labelledby]="ariaLabelledby()"
480
- [attr.aria-describedby]="ariaDescribedby()"
481
- [attr.aria-invalid]="invalid() ? 'true' : null"
482
- [attr.aria-disabled]="disabledState() ? 'true' : null"
483
- [attr.tabindex]="disabledState() ? -1 : 0"
484
- [class]="triggerClasses()"
485
- (click)="handleTriggerClick()"
486
- (keydown.enter)="handleTriggerKeydown($any($event))"
487
- (keydown.space)="handleTriggerKeydown($any($event))"
488
- (keydown.arrowDown)="handleTriggerKeydown($any($event))"
489
- (keydown.escape)="close()">
490
- <div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5">
491
- @if (selectedItems().length > 0) {
492
- @for (item of selectedItems(); track item.track) {
493
- <span [class]="pillClasses()">
494
- @if (item.template; as template) {
495
- <span class="inline-flex min-w-0 max-w-40 items-center gap-1 truncate">
496
- <ng-container *ngTemplateOutlet="template" />
497
- </span>
498
- } @else {
499
- <span class="max-w-40 truncate">{{ item.label }}</span>
500
- }
501
- <button
502
- type="button"
503
- class="-mr-1 inline-flex size-4 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
504
- [attr.aria-label]="'Remove ' + item.label"
505
- [disabled]="disabledState() || null"
506
- (click)="removeSelected(item.value, $event)">
507
- <svg
508
- aria-hidden="true"
509
- class="size-3"
510
- viewBox="0 0 24 24"
511
- fill="none"
512
- stroke="currentColor"
513
- stroke-width="2"
514
- stroke-linecap="round"
515
- stroke-linejoin="round">
516
- <path d="M18 6 6 18" />
517
- <path d="m6 6 12 12" />
518
- </svg>
519
- </button>
520
- </span>
521
- }
522
- }
523
-
524
- @if (variant() === 'combobox') {
525
- <input
526
- #inlineSearch
527
- class="min-w-28 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed"
528
- [placeholder]="selectedItems().length === 0 ? placeholder() : ''"
529
- [value]="query()"
530
- [disabled]="disabledState() || null"
531
- (click)="$event.stopPropagation(); open()"
532
- (focus)="open()"
533
- (input)="handleSearchInput($event)"
534
- (keydown.backspace)="handleInlineBackspace($any($event))"
535
- (keydown.escape)="close()" />
536
- } @else if (selectedItems().length === 0) {
537
- <span class="truncate text-muted-foreground">{{ placeholder() }}</span>
538
- }
539
- </div>
540
-
541
- @if (clearable() && selectedItems().length > 0 && !disabledState()) {
542
- <button
543
- type="button"
544
- class="inline-flex size-5 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
545
- aria-label="Clear selected options"
546
- (click)="clear($event)">
547
- <svg
548
- aria-hidden="true"
549
- class="size-3.5"
550
- viewBox="0 0 24 24"
551
- fill="none"
552
- stroke="currentColor"
553
- stroke-width="2"
554
- stroke-linecap="round"
555
- stroke-linejoin="round">
556
- <path d="M18 6 6 18" />
557
- <path d="m6 6 12 12" />
558
- </svg>
559
- </button>
560
- }
561
-
562
- <svg
563
- aria-hidden="true"
564
- class="size-4 shrink-0 text-muted-foreground transition-transform"
565
- [class.rotate-180]="openState()"
566
- viewBox="0 0 24 24"
567
- fill="none"
568
- stroke="currentColor"
569
- stroke-width="1.75"
570
- stroke-linecap="round"
571
- stroke-linejoin="round">
572
- <path d="m6 9 6 6 6-6" />
573
- </svg>
574
- </div>
575
-
576
- <div [attr.id]="panelId" [class]="panelClasses()" [hidden]="!openState()" role="listbox">
577
- @if (searchable() && variant() !== 'combobox') {
578
- <div class="border-b border-border p-2">
579
- <div class="flex items-center gap-2 rounded-md border border-input bg-background px-2">
580
- <svg
581
- aria-hidden="true"
582
- class="size-4 shrink-0 text-muted-foreground"
583
- viewBox="0 0 24 24"
584
- fill="none"
585
- stroke="currentColor"
586
- stroke-width="1.75"
587
- stroke-linecap="round"
588
- stroke-linejoin="round">
589
- <circle cx="11" cy="11" r="8" />
590
- <path d="m21 21-4.35-4.35" />
591
- </svg>
592
- <input
593
- #panelSearch
594
- class="h-9 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"
595
- [placeholder]="searchPlaceholder()"
596
- [value]="query()"
597
- (input)="handleSearchInput($event)"
598
- (keydown.escape)="close()" />
599
- @if (query().length > 0) {
600
- <button
601
- type="button"
602
- class="inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground"
603
- aria-label="Clear search"
604
- (click)="clearSearch($event)">
605
- <svg
606
- aria-hidden="true"
607
- class="size-3.5"
608
- viewBox="0 0 24 24"
609
- fill="none"
610
- stroke="currentColor"
611
- stroke-width="2"
612
- stroke-linecap="round"
613
- stroke-linejoin="round">
614
- <path d="M18 6 6 18" />
615
- <path d="m6 6 12 12" />
616
- </svg>
617
- </button>
618
- }
619
- </div>
620
- </div>
621
- }
622
-
623
- <div class="max-h-72 overflow-y-auto p-1">
624
- <ng-content />
625
- </div>
626
- </div>
627
- `, isInline: true, dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
628
- }
629
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.0", ngImport: i0, type: PillboxComponent, decorators: [{
630
- type: Component,
631
- args: [{
632
- selector: 'ui-pillbox',
633
- changeDetection: ChangeDetectionStrategy.OnPush,
634
- imports: [NgTemplateOutlet],
635
- providers: [
636
- { provide: PillboxContext, useExisting: forwardRef(() => PillboxComponent) },
637
- { provide: NG_VALUE_ACCESSOR, useExisting: forwardRef(() => PillboxComponent), multi: true },
638
- ],
639
- host: {
640
- '[class]': 'classes()',
641
- '[attr.data-slot]': '"pillbox"',
642
- '[attr.data-open]': 'openState() ? "" : null',
643
- '[attr.data-size]': 'size()',
644
- '[attr.data-variant]': 'variant()',
645
- },
646
- template: `
647
- <div
648
- #trigger
649
- [attr.id]="resolvedId()"
650
- role="combobox"
651
- aria-haspopup="listbox"
652
- [attr.aria-expanded]="openState()"
653
- [attr.aria-controls]="openState() ? panelId : null"
654
- [attr.aria-label]="ariaLabel()"
655
- [attr.aria-labelledby]="ariaLabelledby()"
656
- [attr.aria-describedby]="ariaDescribedby()"
657
- [attr.aria-invalid]="invalid() ? 'true' : null"
658
- [attr.aria-disabled]="disabledState() ? 'true' : null"
659
- [attr.tabindex]="disabledState() ? -1 : 0"
660
- [class]="triggerClasses()"
661
- (click)="handleTriggerClick()"
662
- (keydown.enter)="handleTriggerKeydown($any($event))"
663
- (keydown.space)="handleTriggerKeydown($any($event))"
664
- (keydown.arrowDown)="handleTriggerKeydown($any($event))"
665
- (keydown.escape)="close()">
666
- <div class="flex min-w-0 flex-1 flex-wrap items-center gap-1.5">
667
- @if (selectedItems().length > 0) {
668
- @for (item of selectedItems(); track item.track) {
669
- <span [class]="pillClasses()">
670
- @if (item.template; as template) {
671
- <span class="inline-flex min-w-0 max-w-40 items-center gap-1 truncate">
672
- <ng-container *ngTemplateOutlet="template" />
673
- </span>
674
- } @else {
675
- <span class="max-w-40 truncate">{{ item.label }}</span>
676
- }
677
- <button
678
- type="button"
679
- class="-mr-1 inline-flex size-4 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
680
- [attr.aria-label]="'Remove ' + item.label"
681
- [disabled]="disabledState() || null"
682
- (click)="removeSelected(item.value, $event)">
683
- <svg
684
- aria-hidden="true"
685
- class="size-3"
686
- viewBox="0 0 24 24"
687
- fill="none"
688
- stroke="currentColor"
689
- stroke-width="2"
690
- stroke-linecap="round"
691
- stroke-linejoin="round">
692
- <path d="M18 6 6 18" />
693
- <path d="m6 6 12 12" />
694
- </svg>
695
- </button>
696
- </span>
697
- }
698
- }
699
-
700
- @if (variant() === 'combobox') {
701
- <input
702
- #inlineSearch
703
- class="min-w-28 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground disabled:cursor-not-allowed"
704
- [placeholder]="selectedItems().length === 0 ? placeholder() : ''"
705
- [value]="query()"
706
- [disabled]="disabledState() || null"
707
- (click)="$event.stopPropagation(); open()"
708
- (focus)="open()"
709
- (input)="handleSearchInput($event)"
710
- (keydown.backspace)="handleInlineBackspace($any($event))"
711
- (keydown.escape)="close()" />
712
- } @else if (selectedItems().length === 0) {
713
- <span class="truncate text-muted-foreground">{{ placeholder() }}</span>
714
- }
715
- </div>
716
-
717
- @if (clearable() && selectedItems().length > 0 && !disabledState()) {
718
- <button
719
- type="button"
720
- class="inline-flex size-5 shrink-0 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
721
- aria-label="Clear selected options"
722
- (click)="clear($event)">
723
- <svg
724
- aria-hidden="true"
725
- class="size-3.5"
726
- viewBox="0 0 24 24"
727
- fill="none"
728
- stroke="currentColor"
729
- stroke-width="2"
730
- stroke-linecap="round"
731
- stroke-linejoin="round">
732
- <path d="M18 6 6 18" />
733
- <path d="m6 6 12 12" />
734
- </svg>
735
- </button>
736
- }
737
-
738
- <svg
739
- aria-hidden="true"
740
- class="size-4 shrink-0 text-muted-foreground transition-transform"
741
- [class.rotate-180]="openState()"
742
- viewBox="0 0 24 24"
743
- fill="none"
744
- stroke="currentColor"
745
- stroke-width="1.75"
746
- stroke-linecap="round"
747
- stroke-linejoin="round">
748
- <path d="m6 9 6 6 6-6" />
749
- </svg>
750
- </div>
751
-
752
- <div [attr.id]="panelId" [class]="panelClasses()" [hidden]="!openState()" role="listbox">
753
- @if (searchable() && variant() !== 'combobox') {
754
- <div class="border-b border-border p-2">
755
- <div class="flex items-center gap-2 rounded-md border border-input bg-background px-2">
756
- <svg
757
- aria-hidden="true"
758
- class="size-4 shrink-0 text-muted-foreground"
759
- viewBox="0 0 24 24"
760
- fill="none"
761
- stroke="currentColor"
762
- stroke-width="1.75"
763
- stroke-linecap="round"
764
- stroke-linejoin="round">
765
- <circle cx="11" cy="11" r="8" />
766
- <path d="m21 21-4.35-4.35" />
767
- </svg>
768
- <input
769
- #panelSearch
770
- class="h-9 min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground"
771
- [placeholder]="searchPlaceholder()"
772
- [value]="query()"
773
- (input)="handleSearchInput($event)"
774
- (keydown.escape)="close()" />
775
- @if (query().length > 0) {
776
- <button
777
- type="button"
778
- class="inline-flex size-6 shrink-0 items-center justify-center rounded-md text-muted-foreground hover:bg-muted hover:text-foreground"
779
- aria-label="Clear search"
780
- (click)="clearSearch($event)">
781
- <svg
782
- aria-hidden="true"
783
- class="size-3.5"
784
- viewBox="0 0 24 24"
785
- fill="none"
786
- stroke="currentColor"
787
- stroke-width="2"
788
- stroke-linecap="round"
789
- stroke-linejoin="round">
790
- <path d="M18 6 6 18" />
791
- <path d="m6 6 12 12" />
792
- </svg>
793
- </button>
794
- }
795
- </div>
796
- </div>
797
- }
798
-
799
- <div class="max-h-72 overflow-y-auto p-1">
800
- <ng-content />
801
- </div>
802
- </div>
803
- `,
804
- }]
805
- }], ctorParameters: () => [], propDecorators: { id: [{ type: i0.Input, args: [{ isSignal: true, alias: "id", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], searchPlaceholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchPlaceholder", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], variant: [{ type: i0.Input, args: [{ isSignal: true, alias: "variant", required: false }] }], multiple: [{ type: i0.Input, args: [{ isSignal: true, alias: "multiple", required: false }] }], searchable: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchable", required: false }] }], filter: [{ type: i0.Input, args: [{ isSignal: true, alias: "filter", required: false }] }], clearable: [{ type: i0.Input, args: [{ isSignal: true, alias: "clearable", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], invalid: [{ type: i0.Input, args: [{ isSignal: true, alias: "invalid", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], emptyText: [{ type: i0.Input, args: [{ isSignal: true, alias: "emptyText", required: false }] }], loadingText: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingText", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-label", required: false }] }], ariaDescribedby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-describedby", required: false }] }], ariaLabelledby: [{ type: i0.Input, args: [{ isSignal: true, alias: "aria-labelledby", required: false }] }], class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], valueChange: [{ type: i0.Output, args: ["valueChange"] }], searchChange: [{ type: i0.Output, args: ["searchChange"] }], create: [{ type: i0.Output, args: ["create"] }], openedChange: [{ type: i0.Output, args: ["openedChange"] }], trigger: [{ type: i0.ViewChild, args: ['trigger', { isSignal: true }] }], inlineSearch: [{ type: i0.ViewChild, args: ['inlineSearch', { isSignal: true }] }], panelSearch: [{ type: i0.ViewChild, args: ['panelSearch', { isSignal: true }] }], options: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionComponent), { ...{ descendants: true }, isSignal: true }] }], createOptions: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionCreateComponent), { ...{ descendants: true }, isSignal: true }] }], emptyOptions: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => PillboxOptionEmptyComponent), { ...{ descendants: true }, isSignal: true }] }] } });
806
-
807
- /**
808
- * Generated bundle index. Do not edit.
809
- */
810
-
811
- export { PillboxComponent, PillboxOptionComponent, PillboxOptionCreateComponent, PillboxOptionEmptyComponent, PillboxSelectedDirective };
812
- //# sourceMappingURL=ojiepermana-angular-component-pillbox.mjs.map