@tailng-ui/primitives 0.1.0

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 (374) hide show
  1. package/README.md +36 -0
  2. package/package.json +13 -0
  3. package/src/index.d.ts +55 -0
  4. package/src/index.d.ts.map +1 -0
  5. package/src/index.js +61 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/feedback/empty/tng-empty.d.ts +16 -0
  8. package/src/lib/feedback/empty/tng-empty.d.ts.map +1 -0
  9. package/src/lib/feedback/empty/tng-empty.js +68 -0
  10. package/src/lib/feedback/empty/tng-empty.js.map +1 -0
  11. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts +24 -0
  12. package/src/lib/feedback/progress-bar/tng-progress-bar.d.ts.map +1 -0
  13. package/src/lib/feedback/progress-bar/tng-progress-bar.js +100 -0
  14. package/src/lib/feedback/progress-bar/tng-progress-bar.js.map +1 -0
  15. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts +21 -0
  16. package/src/lib/feedback/progress-spinner/tng-progress-spinner.d.ts.map +1 -0
  17. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js +87 -0
  18. package/src/lib/feedback/progress-spinner/tng-progress-spinner.js.map +1 -0
  19. package/src/lib/feedback/skeleton/tng-skeleton.d.ts +11 -0
  20. package/src/lib/feedback/skeleton/tng-skeleton.d.ts.map +1 -0
  21. package/src/lib/feedback/skeleton/tng-skeleton.js +44 -0
  22. package/src/lib/feedback/skeleton/tng-skeleton.js.map +1 -0
  23. package/src/lib/feedback/toast/tng-toast.d.ts +20 -0
  24. package/src/lib/feedback/toast/tng-toast.d.ts.map +1 -0
  25. package/src/lib/feedback/toast/tng-toast.js +79 -0
  26. package/src/lib/feedback/toast/tng-toast.js.map +1 -0
  27. package/src/lib/form/_shared/id/index.d.ts +4 -0
  28. package/src/lib/form/_shared/id/index.d.ts.map +1 -0
  29. package/src/lib/form/_shared/id/index.js +4 -0
  30. package/src/lib/form/_shared/id/index.js.map +1 -0
  31. package/src/lib/form/_shared/id/tng-unique-id.provider.d.ts +11 -0
  32. package/src/lib/form/_shared/id/tng-unique-id.provider.d.ts.map +1 -0
  33. package/src/lib/form/_shared/id/tng-unique-id.provider.js +15 -0
  34. package/src/lib/form/_shared/id/tng-unique-id.provider.js.map +1 -0
  35. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts +9 -0
  36. package/src/lib/form/_shared/id/tng-unique-id.service.d.ts.map +1 -0
  37. package/src/lib/form/_shared/id/tng-unique-id.service.js +18 -0
  38. package/src/lib/form/_shared/id/tng-unique-id.service.js.map +1 -0
  39. package/src/lib/form/_shared/id/tng-unique-id.token.d.ts +8 -0
  40. package/src/lib/form/_shared/id/tng-unique-id.token.d.ts.map +1 -0
  41. package/src/lib/form/_shared/id/tng-unique-id.token.js +13 -0
  42. package/src/lib/form/_shared/id/tng-unique-id.token.js.map +1 -0
  43. package/src/lib/form/_shared/select/tng-select.host-api.d.ts +28 -0
  44. package/src/lib/form/_shared/select/tng-select.host-api.d.ts.map +1 -0
  45. package/src/lib/form/_shared/select/tng-select.host-api.js +1 -0
  46. package/src/lib/form/_shared/select/tng-select.host-api.js.map +1 -0
  47. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts +38 -0
  48. package/src/lib/form/_shared/select/tng-select.overlay.shared.d.ts.map +1 -0
  49. package/src/lib/form/_shared/select/tng-select.overlay.shared.js +226 -0
  50. package/src/lib/form/_shared/select/tng-select.overlay.shared.js.map +1 -0
  51. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts +35 -0
  52. package/src/lib/form/_shared/select/tng-select.parts.shared.d.ts.map +1 -0
  53. package/src/lib/form/_shared/select/tng-select.parts.shared.js +199 -0
  54. package/src/lib/form/_shared/select/tng-select.parts.shared.js.map +1 -0
  55. package/src/lib/form/_shared/select/tng-select.tokens.shared.d.ts +8 -0
  56. package/src/lib/form/_shared/select/tng-select.tokens.shared.d.ts.map +1 -0
  57. package/src/lib/form/_shared/select/tng-select.tokens.shared.js +7 -0
  58. package/src/lib/form/_shared/select/tng-select.tokens.shared.js.map +1 -0
  59. package/src/lib/form/autocomplete/index.d.ts +7 -0
  60. package/src/lib/form/autocomplete/index.d.ts.map +1 -0
  61. package/src/lib/form/autocomplete/index.js +6 -0
  62. package/src/lib/form/autocomplete/index.js.map +1 -0
  63. package/src/lib/form/autocomplete/tng-autocomplete.d.ts +52 -0
  64. package/src/lib/form/autocomplete/tng-autocomplete.d.ts.map +1 -0
  65. package/src/lib/form/autocomplete/tng-autocomplete.js +95 -0
  66. package/src/lib/form/autocomplete/tng-autocomplete.js.map +1 -0
  67. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts +19 -0
  68. package/src/lib/form/autocomplete/tng-autocomplete.listbox.d.ts.map +1 -0
  69. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js +123 -0
  70. package/src/lib/form/autocomplete/tng-autocomplete.listbox.js.map +1 -0
  71. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.d.ts +4 -0
  72. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.d.ts.map +1 -0
  73. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.js +3 -0
  74. package/src/lib/form/autocomplete/tng-autocomplete.listbox.tokens.js.map +1 -0
  75. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.d.ts +4 -0
  76. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.d.ts.map +1 -0
  77. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.js +1 -0
  78. package/src/lib/form/autocomplete/tng-autocomplete.listbox.types.js.map +1 -0
  79. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts +40 -0
  80. package/src/lib/form/autocomplete/tng-autocomplete.overlay.d.ts.map +1 -0
  81. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js +236 -0
  82. package/src/lib/form/autocomplete/tng-autocomplete.overlay.js.map +1 -0
  83. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts +38 -0
  84. package/src/lib/form/autocomplete/tng-autocomplete.parts.d.ts.map +1 -0
  85. package/src/lib/form/autocomplete/tng-autocomplete.parts.js +252 -0
  86. package/src/lib/form/autocomplete/tng-autocomplete.parts.js.map +1 -0
  87. package/src/lib/form/autocomplete/tng-autocomplete.tokens.d.ts +4 -0
  88. package/src/lib/form/autocomplete/tng-autocomplete.tokens.d.ts.map +1 -0
  89. package/src/lib/form/autocomplete/tng-autocomplete.tokens.js +3 -0
  90. package/src/lib/form/autocomplete/tng-autocomplete.tokens.js.map +1 -0
  91. package/src/lib/form/button-toggle/tng-button-toggle.d.ts +164 -0
  92. package/src/lib/form/button-toggle/tng-button-toggle.d.ts.map +1 -0
  93. package/src/lib/form/button-toggle/tng-button-toggle.js +1097 -0
  94. package/src/lib/form/button-toggle/tng-button-toggle.js.map +1 -0
  95. package/src/lib/form/checkbox/tng-checkbox.d.ts +48 -0
  96. package/src/lib/form/checkbox/tng-checkbox.d.ts.map +1 -0
  97. package/src/lib/form/checkbox/tng-checkbox.js +234 -0
  98. package/src/lib/form/checkbox/tng-checkbox.js.map +1 -0
  99. package/src/lib/form/chips/tng-chips.d.ts +4 -0
  100. package/src/lib/form/chips/tng-chips.d.ts.map +1 -0
  101. package/src/lib/form/chips/tng-chips.js +16 -0
  102. package/src/lib/form/chips/tng-chips.js.map +1 -0
  103. package/src/lib/form/combobox/tng-combobox.d.ts +4 -0
  104. package/src/lib/form/combobox/tng-combobox.d.ts.map +1 -0
  105. package/src/lib/form/combobox/tng-combobox.js +16 -0
  106. package/src/lib/form/combobox/tng-combobox.js.map +1 -0
  107. package/src/lib/form/input/tng-input.d.ts +87 -0
  108. package/src/lib/form/input/tng-input.d.ts.map +1 -0
  109. package/src/lib/form/input/tng-input.js +393 -0
  110. package/src/lib/form/input/tng-input.js.map +1 -0
  111. package/src/lib/form/input-otp/tng-input-otp.d.ts +7 -0
  112. package/src/lib/form/input-otp/tng-input-otp.d.ts.map +1 -0
  113. package/src/lib/form/input-otp/tng-input-otp.js +33 -0
  114. package/src/lib/form/input-otp/tng-input-otp.js.map +1 -0
  115. package/src/lib/form/label/tng-label.d.ts +6 -0
  116. package/src/lib/form/label/tng-label.d.ts.map +1 -0
  117. package/src/lib/form/label/tng-label.js +25 -0
  118. package/src/lib/form/label/tng-label.js.map +1 -0
  119. package/src/lib/form/listbox/listbox.directive.d.ts +51 -0
  120. package/src/lib/form/listbox/listbox.directive.d.ts.map +1 -0
  121. package/src/lib/form/listbox/listbox.directive.js +439 -0
  122. package/src/lib/form/listbox/listbox.directive.js.map +1 -0
  123. package/src/lib/form/listbox/option.directive.d.ts +22 -0
  124. package/src/lib/form/listbox/option.directive.d.ts.map +1 -0
  125. package/src/lib/form/listbox/option.directive.js +109 -0
  126. package/src/lib/form/listbox/option.directive.js.map +1 -0
  127. package/src/lib/form/listbox/tokens.d.ts +14 -0
  128. package/src/lib/form/listbox/tokens.d.ts.map +1 -0
  129. package/src/lib/form/listbox/tokens.js +13 -0
  130. package/src/lib/form/listbox/tokens.js.map +1 -0
  131. package/src/lib/form/multi-autocomplete/index.d.ts +10 -0
  132. package/src/lib/form/multi-autocomplete/index.d.ts.map +1 -0
  133. package/src/lib/form/multi-autocomplete/index.js +10 -0
  134. package/src/lib/form/multi-autocomplete/index.js.map +1 -0
  135. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts +11 -0
  136. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.d.ts.map +1 -0
  137. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js +98 -0
  138. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.chip.js.map +1 -0
  139. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts +10 -0
  140. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.d.ts.map +1 -0
  141. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js +45 -0
  142. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.content.js.map +1 -0
  143. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts +43 -0
  144. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.d.ts.map +1 -0
  145. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js +150 -0
  146. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.js.map +1 -0
  147. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts +20 -0
  148. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.d.ts.map +1 -0
  149. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js +138 -0
  150. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.js.map +1 -0
  151. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.d.ts +4 -0
  152. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.d.ts.map +1 -0
  153. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.js +3 -0
  154. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.tokens.js.map +1 -0
  155. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.d.ts +18 -0
  156. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.d.ts.map +1 -0
  157. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.js +2 -0
  158. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.listbox.types.js.map +1 -0
  159. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts +4 -0
  160. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.d.ts.map +1 -0
  161. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js +17 -0
  162. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.overlay.js.map +1 -0
  163. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.d.ts +4 -0
  164. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.d.ts.map +1 -0
  165. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.js +3 -0
  166. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.tokens.js.map +1 -0
  167. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts +21 -0
  168. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.d.ts.map +1 -0
  169. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js +241 -0
  170. package/src/lib/form/multi-autocomplete/tng-multi-autocomplete.trigger.js.map +1 -0
  171. package/src/lib/form/multi-select/index.d.ts +7 -0
  172. package/src/lib/form/multi-select/index.d.ts.map +1 -0
  173. package/src/lib/form/multi-select/index.js +6 -0
  174. package/src/lib/form/multi-select/index.js.map +1 -0
  175. package/src/lib/form/multi-select/tng-multi-select.d.ts +45 -0
  176. package/src/lib/form/multi-select/tng-multi-select.d.ts.map +1 -0
  177. package/src/lib/form/multi-select/tng-multi-select.js +136 -0
  178. package/src/lib/form/multi-select/tng-multi-select.js.map +1 -0
  179. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts +21 -0
  180. package/src/lib/form/multi-select/tng-multi-select.listbox.d.ts.map +1 -0
  181. package/src/lib/form/multi-select/tng-multi-select.listbox.js +107 -0
  182. package/src/lib/form/multi-select/tng-multi-select.listbox.js.map +1 -0
  183. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.d.ts +3 -0
  184. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.d.ts.map +1 -0
  185. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.js +3 -0
  186. package/src/lib/form/multi-select/tng-multi-select.listbox.tokens.js.map +1 -0
  187. package/src/lib/form/multi-select/tng-multi-select.listbox.types.d.ts +3 -0
  188. package/src/lib/form/multi-select/tng-multi-select.listbox.types.d.ts.map +1 -0
  189. package/src/lib/form/multi-select/tng-multi-select.listbox.types.js +1 -0
  190. package/src/lib/form/multi-select/tng-multi-select.listbox.types.js.map +1 -0
  191. package/src/lib/form/multi-select/tng-multi-select.overlay.d.ts +5 -0
  192. package/src/lib/form/multi-select/tng-multi-select.overlay.d.ts.map +1 -0
  193. package/src/lib/form/multi-select/tng-multi-select.overlay.js +5 -0
  194. package/src/lib/form/multi-select/tng-multi-select.overlay.js.map +1 -0
  195. package/src/lib/form/multi-select/tng-multi-select.parts.d.ts +5 -0
  196. package/src/lib/form/multi-select/tng-multi-select.parts.d.ts.map +1 -0
  197. package/src/lib/form/multi-select/tng-multi-select.parts.js +5 -0
  198. package/src/lib/form/multi-select/tng-multi-select.parts.js.map +1 -0
  199. package/src/lib/form/multi-select/tng-multi-select.tokens.d.ts +4 -0
  200. package/src/lib/form/multi-select/tng-multi-select.tokens.d.ts.map +1 -0
  201. package/src/lib/form/multi-select/tng-multi-select.tokens.js +3 -0
  202. package/src/lib/form/multi-select/tng-multi-select.tokens.js.map +1 -0
  203. package/src/lib/form/multiselect/tng-multiselect.d.ts +4 -0
  204. package/src/lib/form/multiselect/tng-multiselect.d.ts.map +1 -0
  205. package/src/lib/form/multiselect/tng-multiselect.js +16 -0
  206. package/src/lib/form/multiselect/tng-multiselect.js.map +1 -0
  207. package/src/lib/form/radio/tng-radio.d.ts +20 -0
  208. package/src/lib/form/radio/tng-radio.d.ts.map +1 -0
  209. package/src/lib/form/radio/tng-radio.js +86 -0
  210. package/src/lib/form/radio/tng-radio.js.map +1 -0
  211. package/src/lib/form/select/tng-select.d.ts +38 -0
  212. package/src/lib/form/select/tng-select.d.ts.map +1 -0
  213. package/src/lib/form/select/tng-select.js +106 -0
  214. package/src/lib/form/select/tng-select.js.map +1 -0
  215. package/src/lib/form/select/tng-select.listbox.d.ts +20 -0
  216. package/src/lib/form/select/tng-select.listbox.d.ts.map +1 -0
  217. package/src/lib/form/select/tng-select.listbox.js +123 -0
  218. package/src/lib/form/select/tng-select.listbox.js.map +1 -0
  219. package/src/lib/form/select/tng-select.listbox.tokens.d.ts +3 -0
  220. package/src/lib/form/select/tng-select.listbox.tokens.d.ts.map +1 -0
  221. package/src/lib/form/select/tng-select.listbox.tokens.js +3 -0
  222. package/src/lib/form/select/tng-select.listbox.tokens.js.map +1 -0
  223. package/src/lib/form/select/tng-select.listbox.types.d.ts +4 -0
  224. package/src/lib/form/select/tng-select.listbox.types.d.ts.map +1 -0
  225. package/src/lib/form/select/tng-select.listbox.types.js +1 -0
  226. package/src/lib/form/select/tng-select.listbox.types.js.map +1 -0
  227. package/src/lib/form/select/tng-select.overlay.d.ts +5 -0
  228. package/src/lib/form/select/tng-select.overlay.d.ts.map +1 -0
  229. package/src/lib/form/select/tng-select.overlay.js +5 -0
  230. package/src/lib/form/select/tng-select.overlay.js.map +1 -0
  231. package/src/lib/form/select/tng-select.parts.d.ts +5 -0
  232. package/src/lib/form/select/tng-select.parts.d.ts.map +1 -0
  233. package/src/lib/form/select/tng-select.parts.js +5 -0
  234. package/src/lib/form/select/tng-select.parts.js.map +1 -0
  235. package/src/lib/form/select/tng-select.tokens.d.ts +4 -0
  236. package/src/lib/form/select/tng-select.tokens.d.ts.map +1 -0
  237. package/src/lib/form/select/tng-select.tokens.js +3 -0
  238. package/src/lib/form/select/tng-select.tokens.js.map +1 -0
  239. package/src/lib/form/slider/tng-slider.d.ts +19 -0
  240. package/src/lib/form/slider/tng-slider.d.ts.map +1 -0
  241. package/src/lib/form/slider/tng-slider.js +84 -0
  242. package/src/lib/form/slider/tng-slider.js.map +1 -0
  243. package/src/lib/form/switch/tng-switch.d.ts +19 -0
  244. package/src/lib/form/switch/tng-switch.d.ts.map +1 -0
  245. package/src/lib/form/switch/tng-switch.js +79 -0
  246. package/src/lib/form/switch/tng-switch.js.map +1 -0
  247. package/src/lib/form/textarea/tng-textarea.d.ts +23 -0
  248. package/src/lib/form/textarea/tng-textarea.d.ts.map +1 -0
  249. package/src/lib/form/textarea/tng-textarea.js +119 -0
  250. package/src/lib/form/textarea/tng-textarea.js.map +1 -0
  251. package/src/lib/form/toggle/tng-toggle.d.ts +44 -0
  252. package/src/lib/form/toggle/tng-toggle.d.ts.map +1 -0
  253. package/src/lib/form/toggle/tng-toggle.js +203 -0
  254. package/src/lib/form/toggle/tng-toggle.js.map +1 -0
  255. package/src/lib/form/toggle-group/tng-toggle-group.d.ts +35 -0
  256. package/src/lib/form/toggle-group/tng-toggle-group.d.ts.map +1 -0
  257. package/src/lib/form/toggle-group/tng-toggle-group.js +156 -0
  258. package/src/lib/form/toggle-group/tng-toggle-group.js.map +1 -0
  259. package/src/lib/internal/combobox/combobox.active.d.ts +17 -0
  260. package/src/lib/internal/combobox/combobox.active.d.ts.map +1 -0
  261. package/src/lib/internal/combobox/combobox.active.js +19 -0
  262. package/src/lib/internal/combobox/combobox.active.js.map +1 -0
  263. package/src/lib/internal/combobox/combobox.commit.d.ts +20 -0
  264. package/src/lib/internal/combobox/combobox.commit.d.ts.map +1 -0
  265. package/src/lib/internal/combobox/combobox.commit.js +34 -0
  266. package/src/lib/internal/combobox/combobox.commit.js.map +1 -0
  267. package/src/lib/internal/combobox/combobox.keyboard.d.ts +39 -0
  268. package/src/lib/internal/combobox/combobox.keyboard.d.ts.map +1 -0
  269. package/src/lib/internal/combobox/combobox.keyboard.js +88 -0
  270. package/src/lib/internal/combobox/combobox.keyboard.js.map +1 -0
  271. package/src/lib/internal/combobox/combobox.listbox-api.d.ts +19 -0
  272. package/src/lib/internal/combobox/combobox.listbox-api.d.ts.map +1 -0
  273. package/src/lib/internal/combobox/combobox.listbox-api.js +5 -0
  274. package/src/lib/internal/combobox/combobox.listbox-api.js.map +1 -0
  275. package/src/lib/internal/combobox/index.d.ts +5 -0
  276. package/src/lib/internal/combobox/index.d.ts.map +1 -0
  277. package/src/lib/internal/combobox/index.js +4 -0
  278. package/src/lib/internal/combobox/index.js.map +1 -0
  279. package/src/lib/layout/accordion/tng-accordion.d.ts +150 -0
  280. package/src/lib/layout/accordion/tng-accordion.d.ts.map +1 -0
  281. package/src/lib/layout/accordion/tng-accordion.js +852 -0
  282. package/src/lib/layout/accordion/tng-accordion.js.map +1 -0
  283. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts +4 -0
  284. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.d.ts.map +1 -0
  285. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js +16 -0
  286. package/src/lib/layout/bottom-sheet/tng-bottom-sheet.js.map +1 -0
  287. package/src/lib/layout/card/tng-card.d.ts +31 -0
  288. package/src/lib/layout/card/tng-card.d.ts.map +1 -0
  289. package/src/lib/layout/card/tng-card.js +133 -0
  290. package/src/lib/layout/card/tng-card.js.map +1 -0
  291. package/src/lib/layout/collapsible/tng-collapsible.d.ts +28 -0
  292. package/src/lib/layout/collapsible/tng-collapsible.d.ts.map +1 -0
  293. package/src/lib/layout/collapsible/tng-collapsible.js +123 -0
  294. package/src/lib/layout/collapsible/tng-collapsible.js.map +1 -0
  295. package/src/lib/layout/drawer/tng-drawer.d.ts +177 -0
  296. package/src/lib/layout/drawer/tng-drawer.d.ts.map +1 -0
  297. package/src/lib/layout/drawer/tng-drawer.js +1147 -0
  298. package/src/lib/layout/drawer/tng-drawer.js.map +1 -0
  299. package/src/lib/layout/grid/tng-grid.d.ts +4 -0
  300. package/src/lib/layout/grid/tng-grid.d.ts.map +1 -0
  301. package/src/lib/layout/grid/tng-grid.js +16 -0
  302. package/src/lib/layout/grid/tng-grid.js.map +1 -0
  303. package/src/lib/layout/separator/tng-separator.d.ts +11 -0
  304. package/src/lib/layout/separator/tng-separator.d.ts.map +1 -0
  305. package/src/lib/layout/separator/tng-separator.js +47 -0
  306. package/src/lib/layout/separator/tng-separator.js.map +1 -0
  307. package/src/lib/layout/stepper/tng-stepper.d.ts +4 -0
  308. package/src/lib/layout/stepper/tng-stepper.d.ts.map +1 -0
  309. package/src/lib/layout/stepper/tng-stepper.js +16 -0
  310. package/src/lib/layout/stepper/tng-stepper.js.map +1 -0
  311. package/src/lib/layout/tree/tng-tree.d.ts +4 -0
  312. package/src/lib/layout/tree/tng-tree.d.ts.map +1 -0
  313. package/src/lib/layout/tree/tng-tree.js +16 -0
  314. package/src/lib/layout/tree/tng-tree.js.map +1 -0
  315. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts +17 -0
  316. package/src/lib/navigation/breadcrumb/tng-breadcrumb.d.ts.map +1 -0
  317. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js +72 -0
  318. package/src/lib/navigation/breadcrumb/tng-breadcrumb.js.map +1 -0
  319. package/src/lib/navigation/context-menu/tng-context-menu.d.ts +36 -0
  320. package/src/lib/navigation/context-menu/tng-context-menu.d.ts.map +1 -0
  321. package/src/lib/navigation/context-menu/tng-context-menu.js +159 -0
  322. package/src/lib/navigation/context-menu/tng-context-menu.js.map +1 -0
  323. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts +4 -0
  324. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.d.ts.map +1 -0
  325. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js +16 -0
  326. package/src/lib/navigation/dropdown-menu/tng-dropdown-menu.js.map +1 -0
  327. package/src/lib/navigation/menu/tng-menu.d.ts +173 -0
  328. package/src/lib/navigation/menu/tng-menu.d.ts.map +1 -0
  329. package/src/lib/navigation/menu/tng-menu.js +1026 -0
  330. package/src/lib/navigation/menu/tng-menu.js.map +1 -0
  331. package/src/lib/navigation/menubar/tng-menubar.d.ts +64 -0
  332. package/src/lib/navigation/menubar/tng-menubar.d.ts.map +1 -0
  333. package/src/lib/navigation/menubar/tng-menubar.js +478 -0
  334. package/src/lib/navigation/menubar/tng-menubar.js.map +1 -0
  335. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts +4 -0
  336. package/src/lib/navigation/navigation-menu/tng-navigation-menu.d.ts.map +1 -0
  337. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js +16 -0
  338. package/src/lib/navigation/navigation-menu/tng-navigation-menu.js.map +1 -0
  339. package/src/lib/navigation/tabs/tng-tabs.d.ts +234 -0
  340. package/src/lib/navigation/tabs/tng-tabs.d.ts.map +1 -0
  341. package/src/lib/navigation/tabs/tng-tabs.js +1350 -0
  342. package/src/lib/navigation/tabs/tng-tabs.js.map +1 -0
  343. package/src/lib/navigation/toolbar/tng-toolbar.d.ts +4 -0
  344. package/src/lib/navigation/toolbar/tng-toolbar.d.ts.map +1 -0
  345. package/src/lib/navigation/toolbar/tng-toolbar.js +16 -0
  346. package/src/lib/navigation/toolbar/tng-toolbar.js.map +1 -0
  347. package/src/lib/overlay/tooltip/tng-tooltip.d.ts +25 -0
  348. package/src/lib/overlay/tooltip/tng-tooltip.d.ts.map +1 -0
  349. package/src/lib/overlay/tooltip/tng-tooltip.js +99 -0
  350. package/src/lib/overlay/tooltip/tng-tooltip.js.map +1 -0
  351. package/src/lib/utility/avatar/tng-avatar.d.ts +10 -0
  352. package/src/lib/utility/avatar/tng-avatar.d.ts.map +1 -0
  353. package/src/lib/utility/avatar/tng-avatar.js +42 -0
  354. package/src/lib/utility/avatar/tng-avatar.js.map +1 -0
  355. package/src/lib/utility/badge/tng-badge.d.ts +63 -0
  356. package/src/lib/utility/badge/tng-badge.d.ts.map +1 -0
  357. package/src/lib/utility/badge/tng-badge.js +345 -0
  358. package/src/lib/utility/badge/tng-badge.js.map +1 -0
  359. package/src/lib/utility/code-block/tng-code-block.d.ts +16 -0
  360. package/src/lib/utility/code-block/tng-code-block.d.ts.map +1 -0
  361. package/src/lib/utility/code-block/tng-code-block.js +68 -0
  362. package/src/lib/utility/code-block/tng-code-block.js.map +1 -0
  363. package/src/lib/utility/copy/tng-copy.d.ts +75 -0
  364. package/src/lib/utility/copy/tng-copy.d.ts.map +1 -0
  365. package/src/lib/utility/copy/tng-copy.js +544 -0
  366. package/src/lib/utility/copy/tng-copy.js.map +1 -0
  367. package/src/lib/utility/press/tng-press.d.ts +33 -0
  368. package/src/lib/utility/press/tng-press.d.ts.map +1 -0
  369. package/src/lib/utility/press/tng-press.js +207 -0
  370. package/src/lib/utility/press/tng-press.js.map +1 -0
  371. package/src/lib/utility/tag/tng-tag.d.ts +4 -0
  372. package/src/lib/utility/tag/tng-tag.d.ts.map +1 -0
  373. package/src/lib/utility/tag/tng-tag.js +16 -0
  374. package/src/lib/utility/tag/tng-tag.js.map +1 -0
@@ -0,0 +1,1147 @@
1
+ import { __decorate } from "tslib";
2
+ import { DOCUMENT } from '@angular/common';
3
+ import { Directive, ElementRef, HostBinding, HostListener, forwardRef, inject, input, output, } from '@angular/core';
4
+ import { createScrollLockManager, createTngIdFactory } from '@tailng-ui/cdk';
5
+ const createDrawerContainerId = createTngIdFactory('tng-drawer-container');
6
+ const createDrawerId = createTngIdFactory('tng-drawer');
7
+ const FOCUSABLE_SELECTOR = [
8
+ 'a[href]',
9
+ 'button:not([disabled])',
10
+ 'input:not([disabled])',
11
+ 'select:not([disabled])',
12
+ 'textarea:not([disabled])',
13
+ '[tabindex]:not([tabindex="-1"])',
14
+ '[contenteditable="true"]',
15
+ ].join(',');
16
+ let TngDrawerContainer = class TngDrawerContainer {
17
+ documentRef = inject(DOCUMENT, { optional: true });
18
+ hostRef = inject(ElementRef);
19
+ resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createDrawerContainerId();
20
+ drawers = new Set();
21
+ contentElements = new Set();
22
+ scrollLockManager = createScrollLockManager({
23
+ documentRef: this.documentRef ?? undefined,
24
+ getScrollbarWidth: () => {
25
+ if (this.documentRef === null) {
26
+ return 0;
27
+ }
28
+ const windowRef = this.documentRef.defaultView;
29
+ if (windowRef === null) {
30
+ return 0;
31
+ }
32
+ const rootWidth = this.documentRef.documentElement?.clientWidth ?? 0;
33
+ return Math.max(0, windowRef.innerWidth - rootWidth);
34
+ },
35
+ });
36
+ hasBackdrop = input('auto', { transform: normalizeAutoBooleanInput });
37
+ closeOthersOnOpen = input(true, {
38
+ transform: normalizeBooleanInput,
39
+ });
40
+ animate = input(true, {
41
+ transform: normalizeBooleanInput,
42
+ });
43
+ lockScroll = input('auto', { transform: normalizeAutoBooleanInput });
44
+ dir = input('auto', {
45
+ transform: normalizeDirectionInput,
46
+ });
47
+ dataSlot = 'drawer-container';
48
+ id = this.resolvedId;
49
+ get dataContentCount() {
50
+ return String(this.contentElements.size);
51
+ }
52
+ get dataContentConflict() {
53
+ return this.contentElements.size > 1 ? 'true' : null;
54
+ }
55
+ get dataDirection() {
56
+ return this.resolveDirection();
57
+ }
58
+ ngDoCheck() {
59
+ this.syncDerivedState();
60
+ }
61
+ ngOnDestroy() {
62
+ this.scrollLockManager.clear();
63
+ }
64
+ registerDrawer(drawer) {
65
+ this.drawers.add(drawer);
66
+ this.syncDerivedState();
67
+ }
68
+ unregisterDrawer(drawer) {
69
+ this.drawers.delete(drawer);
70
+ this.syncDerivedState();
71
+ }
72
+ registerContent(content) {
73
+ this.contentElements.add(content);
74
+ this.syncDerivedState();
75
+ }
76
+ unregisterContent(content) {
77
+ this.contentElements.delete(content);
78
+ this.syncDerivedState();
79
+ }
80
+ getHostElement() {
81
+ return this.hostRef.nativeElement;
82
+ }
83
+ containsTarget(target) {
84
+ if (target === null) {
85
+ return false;
86
+ }
87
+ return this.hostRef.nativeElement.contains(target);
88
+ }
89
+ resolveDirection() {
90
+ const configuredDirection = this.dir();
91
+ if (configuredDirection !== 'auto') {
92
+ return configuredDirection;
93
+ }
94
+ const host = this.hostRef.nativeElement;
95
+ const nearestDirection = host.closest('[dir]')?.getAttribute('dir') ??
96
+ host.ownerDocument?.documentElement?.getAttribute('dir');
97
+ return nearestDirection?.toLowerCase() === 'rtl' ? 'rtl' : 'ltr';
98
+ }
99
+ resolveSide(position) {
100
+ return resolveSideFromDirection(position, this.resolveDirection());
101
+ }
102
+ shouldRenderBackdrop(drawer) {
103
+ const drawerBackdrop = drawer.backdrop();
104
+ if (drawerBackdrop !== 'auto') {
105
+ return drawerBackdrop;
106
+ }
107
+ const containerBackdrop = this.hasBackdrop();
108
+ if (containerBackdrop !== 'auto') {
109
+ return containerBackdrop;
110
+ }
111
+ return drawer.mode() === 'overlay';
112
+ }
113
+ shouldLockScroll(drawer) {
114
+ const lockPolicy = this.lockScroll();
115
+ if (lockPolicy !== 'auto') {
116
+ return lockPolicy;
117
+ }
118
+ return drawer.mode() === 'overlay' && !drawer.resolveAllowBodyScroll();
119
+ }
120
+ onDrawerOpenRequest(drawer) {
121
+ if (!this.closeOthersOnOpen()) {
122
+ return;
123
+ }
124
+ for (const registeredDrawer of this.drawers) {
125
+ if (registeredDrawer === drawer || !registeredDrawer.isOpen()) {
126
+ continue;
127
+ }
128
+ registeredDrawer.closeFromContainer();
129
+ }
130
+ }
131
+ onDrawerStateChanged() {
132
+ this.syncDerivedState();
133
+ }
134
+ syncDerivedState() {
135
+ this.syncContentOffsets();
136
+ this.syncContentInertState();
137
+ this.syncBodyScrollLock();
138
+ }
139
+ getOpenDrawers() {
140
+ return Array.from(this.drawers).filter((drawer) => drawer.isOpen());
141
+ }
142
+ syncBodyScrollLock() {
143
+ const shouldLock = this.getOpenDrawers().some((drawer) => this.shouldLockScroll(drawer));
144
+ if (shouldLock) {
145
+ this.scrollLockManager.acquire(this.id);
146
+ return;
147
+ }
148
+ this.scrollLockManager.release(this.id);
149
+ }
150
+ syncContentInertState() {
151
+ const shouldInert = this.getOpenDrawers().some((drawer) => drawer.shouldInertContent());
152
+ for (const content of this.contentElements) {
153
+ content.setInert(shouldInert);
154
+ }
155
+ }
156
+ syncContentOffsets() {
157
+ let leftOffset = 0;
158
+ let rightOffset = 0;
159
+ for (const drawer of this.getOpenDrawers()) {
160
+ if (!drawer.participatesInContentOffset()) {
161
+ continue;
162
+ }
163
+ const side = this.resolveSide(drawer.position());
164
+ const width = drawer.getMeasuredWidth();
165
+ if (side === 'left') {
166
+ leftOffset += width;
167
+ }
168
+ else {
169
+ rightOffset += width;
170
+ }
171
+ }
172
+ for (const content of this.contentElements) {
173
+ content.applyOffsets(leftOffset, rightOffset);
174
+ }
175
+ }
176
+ };
177
+ __decorate([
178
+ HostBinding('attr.data-slot')
179
+ ], TngDrawerContainer.prototype, "dataSlot", void 0);
180
+ __decorate([
181
+ HostBinding('attr.id')
182
+ ], TngDrawerContainer.prototype, "id", void 0);
183
+ __decorate([
184
+ HostBinding('attr.data-content-count')
185
+ ], TngDrawerContainer.prototype, "dataContentCount", null);
186
+ __decorate([
187
+ HostBinding('attr.data-content-conflict')
188
+ ], TngDrawerContainer.prototype, "dataContentConflict", null);
189
+ __decorate([
190
+ HostBinding('attr.data-direction')
191
+ ], TngDrawerContainer.prototype, "dataDirection", null);
192
+ TngDrawerContainer = __decorate([
193
+ Directive({
194
+ selector: '[tngDrawerContainer]',
195
+ exportAs: 'tngDrawerContainer',
196
+ standalone: true,
197
+ })
198
+ ], TngDrawerContainer);
199
+ export { TngDrawerContainer };
200
+ let TngDrawer = class TngDrawer {
201
+ documentRef = inject(DOCUMENT, { optional: true });
202
+ hostRef = inject(ElementRef);
203
+ container = inject(TngDrawerContainer, { optional: true, host: true });
204
+ resolvedId = this.hostRef.nativeElement.getAttribute('id') ?? createDrawerId();
205
+ backdropElement = null;
206
+ backdropPointerdownListener = null;
207
+ globalPointerdownListener = null;
208
+ globalKeydownListener = null;
209
+ lifecycleFallbackHandle = null;
210
+ pendingLifecycle = null;
211
+ openState = false;
212
+ lastKnownPosition = 'start';
213
+ lastKnownMode = 'overlay';
214
+ restoreFocusTarget = null;
215
+ restoreFocusFallback = null;
216
+ swipeStartX = null;
217
+ swipeLastX = null;
218
+ swipeStartY = null;
219
+ swipeLastY = null;
220
+ openedInput = input(undefined, {
221
+ alias: 'opened',
222
+ transform: normalizeOptionalBooleanInput,
223
+ });
224
+ defaultOpened = input(false, {
225
+ transform: normalizeBooleanInput,
226
+ });
227
+ mode = input('overlay', {
228
+ transform: normalizeModeInput,
229
+ });
230
+ position = input('start', {
231
+ transform: normalizePositionInput,
232
+ });
233
+ disabled = input(false, {
234
+ transform: normalizeBooleanInput,
235
+ });
236
+ backdrop = input('auto', { transform: normalizeAutoBooleanInput });
237
+ closeOnOutsideClickInput = input(undefined, {
238
+ alias: 'closeOnOutsideClick',
239
+ transform: normalizeOptionalBooleanInput,
240
+ });
241
+ closeOnEscape = input(true, {
242
+ transform: normalizeBooleanInput,
243
+ });
244
+ restoreFocus = input(true, {
245
+ transform: normalizeBooleanInput,
246
+ });
247
+ autoFocus = input('drawer', { transform: normalizeAutoFocusInput });
248
+ trapFocus = input('auto', { transform: normalizeAutoBooleanInput });
249
+ inertContent = input('auto', { transform: normalizeAutoBooleanInput });
250
+ allowBodyScrollInput = input(undefined, {
251
+ alias: 'allowBodyScroll',
252
+ transform: normalizeOptionalBooleanInput,
253
+ });
254
+ closeOnTab = input(false, {
255
+ transform: normalizeBooleanInput,
256
+ });
257
+ role = input('navigation', {
258
+ transform: normalizeRoleInput,
259
+ });
260
+ fixedInViewport = input(false, {
261
+ transform: normalizeBooleanInput,
262
+ });
263
+ fixedTopGap = input(0, {
264
+ transform: normalizeNumberInput,
265
+ });
266
+ fixedBottomGap = input(0, {
267
+ transform: normalizeNumberInput,
268
+ });
269
+ swipeToClose = input(false, {
270
+ transform: normalizeBooleanInput,
271
+ });
272
+ openedChange = output();
273
+ tngDrawerOpened = output();
274
+ tngDrawerClosed = output();
275
+ openStart = output();
276
+ closeStart = output();
277
+ backdropClick = output();
278
+ positionChange = output();
279
+ ngOnInit() {
280
+ this.container?.registerDrawer(this);
281
+ this.lastKnownPosition = this.position();
282
+ this.lastKnownMode = this.mode();
283
+ const controlledValue = this.openedInput();
284
+ this.openState = controlledValue ?? this.defaultOpened();
285
+ if (this.openState) {
286
+ this.attachGlobalListeners();
287
+ this.renderBackdropIfNeeded();
288
+ this.container?.onDrawerStateChanged();
289
+ this.queueLifecycleEnd('opening', false);
290
+ }
291
+ }
292
+ ngAfterViewInit() {
293
+ if (this.openState) {
294
+ this.applyAutoFocus();
295
+ }
296
+ }
297
+ ngDoCheck() {
298
+ this.syncControlledState();
299
+ this.syncPositionChange();
300
+ this.syncModeChange();
301
+ if (this.openState) {
302
+ this.renderBackdropIfNeeded();
303
+ this.container?.onDrawerStateChanged();
304
+ }
305
+ }
306
+ ngOnDestroy() {
307
+ if (this.openState) {
308
+ this.performClose({
309
+ emitOpenedChange: false,
310
+ emitLifecycle: true,
311
+ restoreFocus: false,
312
+ reason: 'destroy',
313
+ });
314
+ }
315
+ this.teardownInteractions();
316
+ this.container?.unregisterDrawer(this);
317
+ }
318
+ isOpen() {
319
+ return this.openState;
320
+ }
321
+ participatesInContentOffset() {
322
+ const mode = this.mode();
323
+ return mode === 'push' || mode === 'side';
324
+ }
325
+ shouldInertContent() {
326
+ if (!this.openState) {
327
+ return false;
328
+ }
329
+ return resolveAutoBoolean(this.inertContent(), this.mode() === 'overlay');
330
+ }
331
+ resolveAllowBodyScroll() {
332
+ const configured = this.allowBodyScrollInput();
333
+ if (configured !== undefined) {
334
+ return configured;
335
+ }
336
+ return this.mode() !== 'overlay';
337
+ }
338
+ getMeasuredWidth() {
339
+ const host = this.hostRef.nativeElement;
340
+ const widthAttr = Number.parseFloat(host.getAttribute('data-width') ?? '');
341
+ if (Number.isFinite(widthAttr) && widthAttr > 0) {
342
+ return widthAttr;
343
+ }
344
+ const rectWidth = host.getBoundingClientRect().width;
345
+ if (rectWidth > 0) {
346
+ return rectWidth;
347
+ }
348
+ const inlineWidth = Number.parseFloat(host.style.width);
349
+ if (Number.isFinite(inlineWidth) && inlineWidth > 0) {
350
+ return inlineWidth;
351
+ }
352
+ return 0;
353
+ }
354
+ closeFromContainer() {
355
+ this.requestOpenState(false, 'interaction', 'outside');
356
+ }
357
+ setRestoreFocusFallback(target) {
358
+ this.restoreFocusFallback = target;
359
+ }
360
+ setRestoreFocusTarget(target) {
361
+ this.restoreFocusTarget = target;
362
+ }
363
+ open() {
364
+ this.requestOpenState(true, 'imperative', 'imperative');
365
+ }
366
+ close() {
367
+ this.requestOpenState(false, 'imperative', 'imperative');
368
+ }
369
+ toggle(force) {
370
+ if (force === undefined) {
371
+ this.requestOpenState(!this.openState, 'imperative', 'imperative');
372
+ return;
373
+ }
374
+ this.requestOpenState(force, 'imperative', 'imperative');
375
+ }
376
+ onTransitionEnd(event) {
377
+ if (event.target !== this.hostRef.nativeElement) {
378
+ return;
379
+ }
380
+ this.flushPendingLifecycle();
381
+ }
382
+ onHostPointerDown(event) {
383
+ if (!this.openState || !this.swipeToClose() || this.mode() !== 'overlay') {
384
+ return;
385
+ }
386
+ this.swipeStartX = event.clientX;
387
+ this.swipeLastX = event.clientX;
388
+ this.swipeStartY = event.clientY;
389
+ this.swipeLastY = event.clientY;
390
+ }
391
+ onHostPointerMove(event) {
392
+ if (this.swipeStartX === null) {
393
+ return;
394
+ }
395
+ this.swipeLastX = event.clientX;
396
+ this.swipeLastY = event.clientY;
397
+ }
398
+ onHostPointerUp() {
399
+ if (this.swipeStartX === null ||
400
+ this.swipeLastX === null ||
401
+ this.swipeStartY === null ||
402
+ this.swipeLastY === null) {
403
+ this.resetSwipeState();
404
+ return;
405
+ }
406
+ const deltaX = this.swipeLastX - this.swipeStartX;
407
+ const deltaY = this.swipeLastY - this.swipeStartY;
408
+ const side = this.resolveEffectiveSide();
409
+ const isHorizontalGesture = Math.abs(deltaX) >= Math.abs(deltaY);
410
+ const shouldClose = isHorizontalGesture && ((side === 'left' && deltaX <= -40) || (side === 'right' && deltaX >= 40));
411
+ this.resetSwipeState();
412
+ if (shouldClose) {
413
+ this.requestOpenState(false, 'interaction', 'outside');
414
+ }
415
+ }
416
+ dataSlot = 'drawer';
417
+ id = this.resolvedId;
418
+ get roleAttr() {
419
+ return this.role();
420
+ }
421
+ get tabIndexAttr() {
422
+ return this.hostRef.nativeElement.getAttribute('tabindex') ?? '-1';
423
+ }
424
+ get dataMode() {
425
+ return this.mode();
426
+ }
427
+ get dataState() {
428
+ return this.openState ? 'open' : 'closed';
429
+ }
430
+ get dataOpen() {
431
+ return this.openState ? 'true' : 'false';
432
+ }
433
+ get dataPosition() {
434
+ return this.position();
435
+ }
436
+ get dataEffectivePosition() {
437
+ return this.resolveEffectiveSide();
438
+ }
439
+ get dataDisabled() {
440
+ return this.disabled() ? 'true' : 'false';
441
+ }
442
+ get ariaDisabled() {
443
+ return this.disabled() ? 'true' : null;
444
+ }
445
+ get dataContainerId() {
446
+ return this.container?.id ?? null;
447
+ }
448
+ get dataContainerMissing() {
449
+ return this.container === null ? 'true' : null;
450
+ }
451
+ get hiddenAttr() {
452
+ return this.openState ? null : '';
453
+ }
454
+ get ariaModal() {
455
+ if (this.role() !== 'dialog' || this.mode() !== 'overlay' || !this.openState) {
456
+ return null;
457
+ }
458
+ return 'true';
459
+ }
460
+ get positionStyle() {
461
+ return this.fixedInViewport() ? 'fixed' : null;
462
+ }
463
+ get topStyle() {
464
+ if (!this.fixedInViewport()) {
465
+ return null;
466
+ }
467
+ return `${Math.max(0, this.fixedTopGap())}px`;
468
+ }
469
+ get bottomStyle() {
470
+ if (!this.fixedInViewport()) {
471
+ return null;
472
+ }
473
+ return `${Math.max(0, this.fixedBottomGap())}px`;
474
+ }
475
+ get leftStyle() {
476
+ if (!this.fixedInViewport() || this.resolveEffectiveSide() !== 'left') {
477
+ return null;
478
+ }
479
+ return '0px';
480
+ }
481
+ get rightStyle() {
482
+ if (!this.fixedInViewport() || this.resolveEffectiveSide() !== 'right') {
483
+ return null;
484
+ }
485
+ return '0px';
486
+ }
487
+ syncControlledState() {
488
+ const controlledValue = this.openedInput();
489
+ if (controlledValue === undefined || controlledValue === this.openState) {
490
+ return;
491
+ }
492
+ if (controlledValue) {
493
+ this.performOpen({
494
+ emitOpenedChange: false,
495
+ emitLifecycle: true,
496
+ source: 'external',
497
+ });
498
+ return;
499
+ }
500
+ this.performClose({
501
+ emitOpenedChange: false,
502
+ emitLifecycle: true,
503
+ restoreFocus: false,
504
+ reason: 'external',
505
+ });
506
+ }
507
+ syncPositionChange() {
508
+ const currentPosition = this.position();
509
+ if (currentPosition === this.lastKnownPosition) {
510
+ return;
511
+ }
512
+ this.lastKnownPosition = currentPosition;
513
+ this.positionChange.emit(currentPosition);
514
+ this.container?.onDrawerStateChanged();
515
+ }
516
+ syncModeChange() {
517
+ const currentMode = this.mode();
518
+ if (currentMode === this.lastKnownMode) {
519
+ return;
520
+ }
521
+ this.lastKnownMode = currentMode;
522
+ if (this.openState) {
523
+ this.renderBackdropIfNeeded();
524
+ }
525
+ this.container?.onDrawerStateChanged();
526
+ }
527
+ requestOpenState(nextOpen, source, reason) {
528
+ if (nextOpen && this.disabled()) {
529
+ return;
530
+ }
531
+ if (this.openedInput() !== undefined) {
532
+ const currentControlledValue = this.openedInput() ?? false;
533
+ if (source !== 'external' && currentControlledValue !== nextOpen) {
534
+ this.openedChange.emit(nextOpen);
535
+ }
536
+ return;
537
+ }
538
+ if (nextOpen === this.openState) {
539
+ return;
540
+ }
541
+ if (nextOpen) {
542
+ this.performOpen({
543
+ emitOpenedChange: source !== 'initial' && source !== 'external',
544
+ emitLifecycle: source !== 'initial',
545
+ source,
546
+ });
547
+ return;
548
+ }
549
+ this.performClose({
550
+ emitOpenedChange: source !== 'initial' && source !== 'external',
551
+ emitLifecycle: source !== 'initial',
552
+ restoreFocus: reason !== 'tab',
553
+ reason,
554
+ });
555
+ }
556
+ performOpen(options) {
557
+ if (this.openState) {
558
+ return;
559
+ }
560
+ this.container?.onDrawerOpenRequest(this);
561
+ this.captureRestoreFocusTarget();
562
+ this.openState = true;
563
+ this.attachGlobalListeners();
564
+ this.renderBackdropIfNeeded();
565
+ this.container?.onDrawerStateChanged();
566
+ if (options.emitOpenedChange) {
567
+ this.openedChange.emit(true);
568
+ }
569
+ if (options.emitLifecycle) {
570
+ this.startLifecycle('opening');
571
+ }
572
+ if (options.source !== 'external') {
573
+ this.applyAutoFocus();
574
+ }
575
+ }
576
+ performClose(options) {
577
+ if (!this.openState) {
578
+ return;
579
+ }
580
+ this.openState = false;
581
+ this.teardownInteractions();
582
+ this.container?.onDrawerStateChanged();
583
+ if (options.emitOpenedChange) {
584
+ this.openedChange.emit(false);
585
+ }
586
+ if (options.emitLifecycle) {
587
+ this.startLifecycle('closing');
588
+ }
589
+ if (options.restoreFocus && this.restoreFocus()) {
590
+ this.restoreFocusToTarget();
591
+ }
592
+ }
593
+ captureRestoreFocusTarget() {
594
+ const activeElement = this.documentRef?.activeElement;
595
+ this.restoreFocusTarget = activeElement instanceof HTMLElement ? activeElement : null;
596
+ }
597
+ restoreFocusToTarget() {
598
+ if (this.restoreFocusTarget?.isConnected) {
599
+ this.restoreFocusTarget.focus();
600
+ return;
601
+ }
602
+ if (this.restoreFocusFallback?.isConnected) {
603
+ this.restoreFocusFallback.focus();
604
+ return;
605
+ }
606
+ this.documentRef?.body?.focus?.();
607
+ }
608
+ applyAutoFocus() {
609
+ const strategy = this.autoFocus();
610
+ if (strategy === 'none') {
611
+ return;
612
+ }
613
+ if (strategy === 'first-focusable') {
614
+ const firstFocusable = this.getFocusableElements()[0];
615
+ if (firstFocusable !== undefined) {
616
+ firstFocusable.focus();
617
+ return;
618
+ }
619
+ }
620
+ this.hostRef.nativeElement.focus();
621
+ }
622
+ getFocusableElements() {
623
+ const host = this.hostRef.nativeElement;
624
+ const candidates = Array.from(host.querySelectorAll(FOCUSABLE_SELECTOR));
625
+ return candidates.filter((element) => !element.hasAttribute('disabled') && element.tabIndex >= 0);
626
+ }
627
+ resolveEffectiveSide() {
628
+ return this.container?.resolveSide(this.position()) ?? resolveSideFromDirection(this.position(), 'ltr');
629
+ }
630
+ startLifecycle(transition) {
631
+ this.clearPendingLifecycle();
632
+ if (transition === 'opening') {
633
+ this.openStart.emit();
634
+ }
635
+ else {
636
+ this.closeStart.emit();
637
+ }
638
+ if (!this.container?.animate()) {
639
+ if (transition === 'opening') {
640
+ this.tngDrawerOpened.emit();
641
+ }
642
+ else {
643
+ this.tngDrawerClosed.emit();
644
+ }
645
+ return;
646
+ }
647
+ this.queueLifecycleEnd(transition, true);
648
+ }
649
+ queueLifecycleEnd(transition, withFallback) {
650
+ this.pendingLifecycle = transition;
651
+ if (!withFallback) {
652
+ return;
653
+ }
654
+ this.lifecycleFallbackHandle = setTimeout(() => {
655
+ this.flushPendingLifecycle();
656
+ }, 60);
657
+ }
658
+ flushPendingLifecycle() {
659
+ if (this.pendingLifecycle === null) {
660
+ return;
661
+ }
662
+ const transition = this.pendingLifecycle;
663
+ this.clearPendingLifecycle();
664
+ if (transition === 'opening') {
665
+ this.tngDrawerOpened.emit();
666
+ return;
667
+ }
668
+ this.tngDrawerClosed.emit();
669
+ }
670
+ clearPendingLifecycle() {
671
+ this.pendingLifecycle = null;
672
+ if (this.lifecycleFallbackHandle !== null) {
673
+ clearTimeout(this.lifecycleFallbackHandle);
674
+ this.lifecycleFallbackHandle = null;
675
+ }
676
+ }
677
+ attachGlobalListeners() {
678
+ if (this.documentRef === null) {
679
+ return;
680
+ }
681
+ if (this.globalPointerdownListener === null) {
682
+ this.globalPointerdownListener = (event) => this.handleDocumentPointerDown(event);
683
+ this.documentRef.addEventListener('pointerdown', this.globalPointerdownListener, true);
684
+ }
685
+ if (this.globalKeydownListener === null) {
686
+ this.globalKeydownListener = (event) => this.handleDocumentKeydown(event);
687
+ this.documentRef.addEventListener('keydown', this.globalKeydownListener, true);
688
+ }
689
+ }
690
+ teardownInteractions() {
691
+ this.detachGlobalListeners();
692
+ this.destroyBackdrop();
693
+ this.clearPendingLifecycle();
694
+ this.resetSwipeState();
695
+ }
696
+ detachGlobalListeners() {
697
+ if (this.documentRef === null) {
698
+ return;
699
+ }
700
+ if (this.globalPointerdownListener !== null) {
701
+ this.documentRef.removeEventListener('pointerdown', this.globalPointerdownListener, true);
702
+ this.globalPointerdownListener = null;
703
+ }
704
+ if (this.globalKeydownListener !== null) {
705
+ this.documentRef.removeEventListener('keydown', this.globalKeydownListener, true);
706
+ this.globalKeydownListener = null;
707
+ }
708
+ }
709
+ renderBackdropIfNeeded() {
710
+ if (!this.openState || !this.resolveBackdropEnabled()) {
711
+ this.destroyBackdrop();
712
+ return;
713
+ }
714
+ if (this.backdropElement !== null) {
715
+ return;
716
+ }
717
+ const targetHost = this.container?.getHostElement() ?? this.hostRef.nativeElement.parentElement;
718
+ if (targetHost === null) {
719
+ return;
720
+ }
721
+ const backdrop = this.documentRef?.createElement('div');
722
+ if (backdrop === undefined || backdrop === null) {
723
+ return;
724
+ }
725
+ backdrop.setAttribute('data-slot', 'drawer-backdrop');
726
+ backdrop.setAttribute('data-owner', this.id);
727
+ backdrop.setAttribute('role', 'presentation');
728
+ backdrop.setAttribute('tabindex', '-1');
729
+ backdrop.setAttribute('aria-hidden', 'true');
730
+ backdrop.setAttribute('data-open', 'true');
731
+ this.backdropPointerdownListener = (event) => {
732
+ this.backdropClick.emit();
733
+ if (this.resolveCloseOnOutsideClick()) {
734
+ this.requestOpenState(false, 'interaction', 'outside');
735
+ }
736
+ event.preventDefault();
737
+ event.stopPropagation();
738
+ };
739
+ backdrop.addEventListener('pointerdown', this.backdropPointerdownListener);
740
+ targetHost.insertBefore(backdrop, this.hostRef.nativeElement);
741
+ this.backdropElement = backdrop;
742
+ }
743
+ destroyBackdrop() {
744
+ if (this.backdropElement === null) {
745
+ return;
746
+ }
747
+ if (this.backdropPointerdownListener !== null) {
748
+ this.backdropElement.removeEventListener('pointerdown', this.backdropPointerdownListener);
749
+ this.backdropPointerdownListener = null;
750
+ }
751
+ this.backdropElement.remove();
752
+ this.backdropElement = null;
753
+ }
754
+ resolveBackdropEnabled() {
755
+ if (this.container !== null) {
756
+ return this.container.shouldRenderBackdrop(this);
757
+ }
758
+ return resolveAutoBoolean(this.backdrop(), this.mode() === 'overlay');
759
+ }
760
+ resolveCloseOnOutsideClick() {
761
+ const configured = this.closeOnOutsideClickInput();
762
+ if (configured !== undefined) {
763
+ return configured;
764
+ }
765
+ return this.mode() === 'overlay';
766
+ }
767
+ resolveTrapFocus() {
768
+ return resolveAutoBoolean(this.trapFocus(), this.mode() === 'overlay');
769
+ }
770
+ handleDocumentPointerDown(event) {
771
+ if (!this.openState || !this.resolveCloseOnOutsideClick()) {
772
+ return;
773
+ }
774
+ const target = event.target;
775
+ if (!(target instanceof Node)) {
776
+ return;
777
+ }
778
+ if (this.hostRef.nativeElement.contains(target)) {
779
+ return;
780
+ }
781
+ if (this.backdropElement?.contains(target) === true) {
782
+ return;
783
+ }
784
+ if (this.container?.containsTarget(target) === true) {
785
+ return;
786
+ }
787
+ if (this.isScrollbarPointerDown(event, target)) {
788
+ return;
789
+ }
790
+ this.requestOpenState(false, 'interaction', 'outside');
791
+ }
792
+ handleDocumentKeydown(event) {
793
+ if (!this.openState) {
794
+ return;
795
+ }
796
+ if (event.key === 'Escape') {
797
+ if (!this.closeOnEscape()) {
798
+ return;
799
+ }
800
+ event.preventDefault();
801
+ this.requestOpenState(false, 'interaction', 'escape');
802
+ return;
803
+ }
804
+ if (event.key !== 'Tab') {
805
+ return;
806
+ }
807
+ if (this.resolveTrapFocus()) {
808
+ this.handleTrappedTab(event);
809
+ return;
810
+ }
811
+ if (this.closeOnTab()) {
812
+ this.requestOpenState(false, 'interaction', 'tab');
813
+ }
814
+ }
815
+ handleTrappedTab(event) {
816
+ const focusable = this.getFocusableElements();
817
+ const host = this.hostRef.nativeElement;
818
+ if (focusable.length === 0) {
819
+ event.preventDefault();
820
+ host.focus();
821
+ return;
822
+ }
823
+ const currentActive = this.documentRef?.activeElement;
824
+ const currentIndex = currentActive instanceof HTMLElement ? focusable.indexOf(currentActive) : -1;
825
+ const nextIndex = event.shiftKey
826
+ ? currentIndex <= 0
827
+ ? focusable.length - 1
828
+ : currentIndex - 1
829
+ : currentIndex < 0 || currentIndex >= focusable.length - 1
830
+ ? 0
831
+ : currentIndex + 1;
832
+ event.preventDefault();
833
+ focusable[nextIndex]?.focus();
834
+ }
835
+ resetSwipeState() {
836
+ this.swipeStartX = null;
837
+ this.swipeLastX = null;
838
+ this.swipeStartY = null;
839
+ this.swipeLastY = null;
840
+ }
841
+ isScrollbarPointerDown(event, target) {
842
+ if (this.documentRef === null) {
843
+ return false;
844
+ }
845
+ const root = this.documentRef.documentElement;
846
+ if (target !== root && target !== this.documentRef.body) {
847
+ return false;
848
+ }
849
+ const viewportWidth = root.clientWidth;
850
+ const viewportHeight = root.clientHeight;
851
+ const onVerticalScrollbar = event.clientX >= viewportWidth && event.clientX > 0;
852
+ const onHorizontalScrollbar = event.clientY >= viewportHeight && event.clientY > 0;
853
+ return onVerticalScrollbar || onHorizontalScrollbar;
854
+ }
855
+ };
856
+ __decorate([
857
+ HostListener('transitionend', ['$event'])
858
+ ], TngDrawer.prototype, "onTransitionEnd", null);
859
+ __decorate([
860
+ HostListener('pointerdown', ['$event'])
861
+ ], TngDrawer.prototype, "onHostPointerDown", null);
862
+ __decorate([
863
+ HostListener('pointermove', ['$event'])
864
+ ], TngDrawer.prototype, "onHostPointerMove", null);
865
+ __decorate([
866
+ HostListener('pointerup')
867
+ ], TngDrawer.prototype, "onHostPointerUp", null);
868
+ __decorate([
869
+ HostBinding('attr.data-slot')
870
+ ], TngDrawer.prototype, "dataSlot", void 0);
871
+ __decorate([
872
+ HostBinding('attr.id')
873
+ ], TngDrawer.prototype, "id", void 0);
874
+ __decorate([
875
+ HostBinding('attr.role')
876
+ ], TngDrawer.prototype, "roleAttr", null);
877
+ __decorate([
878
+ HostBinding('attr.tabindex')
879
+ ], TngDrawer.prototype, "tabIndexAttr", null);
880
+ __decorate([
881
+ HostBinding('attr.data-mode')
882
+ ], TngDrawer.prototype, "dataMode", null);
883
+ __decorate([
884
+ HostBinding('attr.data-state')
885
+ ], TngDrawer.prototype, "dataState", null);
886
+ __decorate([
887
+ HostBinding('attr.data-open')
888
+ ], TngDrawer.prototype, "dataOpen", null);
889
+ __decorate([
890
+ HostBinding('attr.data-position')
891
+ ], TngDrawer.prototype, "dataPosition", null);
892
+ __decorate([
893
+ HostBinding('attr.data-effective-position')
894
+ ], TngDrawer.prototype, "dataEffectivePosition", null);
895
+ __decorate([
896
+ HostBinding('attr.data-disabled')
897
+ ], TngDrawer.prototype, "dataDisabled", null);
898
+ __decorate([
899
+ HostBinding('attr.aria-disabled')
900
+ ], TngDrawer.prototype, "ariaDisabled", null);
901
+ __decorate([
902
+ HostBinding('attr.data-container-id')
903
+ ], TngDrawer.prototype, "dataContainerId", null);
904
+ __decorate([
905
+ HostBinding('attr.data-container-missing')
906
+ ], TngDrawer.prototype, "dataContainerMissing", null);
907
+ __decorate([
908
+ HostBinding('attr.hidden')
909
+ ], TngDrawer.prototype, "hiddenAttr", null);
910
+ __decorate([
911
+ HostBinding('attr.aria-modal')
912
+ ], TngDrawer.prototype, "ariaModal", null);
913
+ __decorate([
914
+ HostBinding('style.position')
915
+ ], TngDrawer.prototype, "positionStyle", null);
916
+ __decorate([
917
+ HostBinding('style.top')
918
+ ], TngDrawer.prototype, "topStyle", null);
919
+ __decorate([
920
+ HostBinding('style.bottom')
921
+ ], TngDrawer.prototype, "bottomStyle", null);
922
+ __decorate([
923
+ HostBinding('style.left')
924
+ ], TngDrawer.prototype, "leftStyle", null);
925
+ __decorate([
926
+ HostBinding('style.right')
927
+ ], TngDrawer.prototype, "rightStyle", null);
928
+ TngDrawer = __decorate([
929
+ Directive({
930
+ selector: '[tngDrawer]',
931
+ exportAs: 'tngDrawer',
932
+ standalone: true,
933
+ })
934
+ ], TngDrawer);
935
+ export { TngDrawer };
936
+ let TngDrawerContent = class TngDrawerContent {
937
+ hostRef = inject(ElementRef);
938
+ container = inject(TngDrawerContainer, { optional: true, host: true });
939
+ ngOnInit() {
940
+ this.container?.registerContent(this);
941
+ }
942
+ ngOnDestroy() {
943
+ this.container?.unregisterContent(this);
944
+ }
945
+ dataSlot = 'drawer-content';
946
+ get dataContainerId() {
947
+ return this.container?.id ?? null;
948
+ }
949
+ get dataContainerMissing() {
950
+ return this.container === null ? 'true' : null;
951
+ }
952
+ applyOffsets(leftOffset, rightOffset) {
953
+ const host = this.hostRef.nativeElement;
954
+ host.style.marginLeft = leftOffset > 0 ? `${leftOffset}px` : '';
955
+ host.style.marginRight = rightOffset > 0 ? `${rightOffset}px` : '';
956
+ host.setAttribute('data-offset-left', String(leftOffset));
957
+ host.setAttribute('data-offset-right', String(rightOffset));
958
+ host.setAttribute('data-shifted', leftOffset > 0 || rightOffset > 0 ? 'true' : 'false');
959
+ }
960
+ setInert(nextInert) {
961
+ const host = this.hostRef.nativeElement;
962
+ if (nextInert) {
963
+ host.setAttribute('inert', '');
964
+ host.setAttribute('aria-hidden', 'true');
965
+ try {
966
+ host.inert = true;
967
+ }
968
+ catch {
969
+ // noop: inert is not writable in some environments.
970
+ }
971
+ return;
972
+ }
973
+ host.removeAttribute('inert');
974
+ host.removeAttribute('aria-hidden');
975
+ try {
976
+ host.inert = false;
977
+ }
978
+ catch {
979
+ // noop: inert is not writable in some environments.
980
+ }
981
+ }
982
+ };
983
+ __decorate([
984
+ HostBinding('attr.data-slot')
985
+ ], TngDrawerContent.prototype, "dataSlot", void 0);
986
+ __decorate([
987
+ HostBinding('attr.data-container-id')
988
+ ], TngDrawerContent.prototype, "dataContainerId", null);
989
+ __decorate([
990
+ HostBinding('attr.data-container-missing')
991
+ ], TngDrawerContent.prototype, "dataContainerMissing", null);
992
+ TngDrawerContent = __decorate([
993
+ Directive({
994
+ selector: '[tngDrawerContent]',
995
+ exportAs: 'tngDrawerContent',
996
+ standalone: true,
997
+ })
998
+ ], TngDrawerContent);
999
+ export { TngDrawerContent };
1000
+ let TngSidenavContainer = class TngSidenavContainer extends TngDrawerContainer {
1001
+ };
1002
+ TngSidenavContainer = __decorate([
1003
+ Directive({
1004
+ selector: '[tngSidenavContainer]',
1005
+ exportAs: 'tngSidenavContainer',
1006
+ standalone: true,
1007
+ providers: [
1008
+ {
1009
+ provide: TngDrawerContainer,
1010
+ useExisting: forwardRef(() => TngSidenavContainer),
1011
+ },
1012
+ ],
1013
+ })
1014
+ ], TngSidenavContainer);
1015
+ export { TngSidenavContainer };
1016
+ let TngSidenav = class TngSidenav extends TngDrawer {
1017
+ };
1018
+ TngSidenav = __decorate([
1019
+ Directive({
1020
+ selector: '[tngSidenav]',
1021
+ exportAs: 'tngSidenav',
1022
+ standalone: true,
1023
+ providers: [
1024
+ {
1025
+ provide: TngDrawer,
1026
+ useExisting: forwardRef(() => TngSidenav),
1027
+ },
1028
+ ],
1029
+ })
1030
+ ], TngSidenav);
1031
+ export { TngSidenav };
1032
+ let TngSidenavContent = class TngSidenavContent extends TngDrawerContent {
1033
+ };
1034
+ TngSidenavContent = __decorate([
1035
+ Directive({
1036
+ selector: '[tngSidenavContent]',
1037
+ exportAs: 'tngSidenavContent',
1038
+ standalone: true,
1039
+ providers: [
1040
+ {
1041
+ provide: TngDrawerContent,
1042
+ useExisting: forwardRef(() => TngSidenavContent),
1043
+ },
1044
+ ],
1045
+ })
1046
+ ], TngSidenavContent);
1047
+ export { TngSidenavContent };
1048
+ function normalizeBooleanInput(value) {
1049
+ if (typeof value === 'boolean') {
1050
+ return value;
1051
+ }
1052
+ if (typeof value === 'string') {
1053
+ const normalized = value.trim().toLowerCase();
1054
+ if (normalized === '' || normalized === 'true') {
1055
+ return true;
1056
+ }
1057
+ if (normalized === 'false') {
1058
+ return false;
1059
+ }
1060
+ }
1061
+ return Boolean(value);
1062
+ }
1063
+ function normalizeOptionalBooleanInput(value) {
1064
+ if (value === undefined || value === null) {
1065
+ return undefined;
1066
+ }
1067
+ return normalizeBooleanInput(value);
1068
+ }
1069
+ function normalizeAutoBooleanInput(value) {
1070
+ if (typeof value === 'string' && value.trim().toLowerCase() === 'auto') {
1071
+ return 'auto';
1072
+ }
1073
+ if (value === undefined || value === null) {
1074
+ return 'auto';
1075
+ }
1076
+ return normalizeBooleanInput(value);
1077
+ }
1078
+ function resolveAutoBoolean(value, fallbackWhenAuto) {
1079
+ return value === 'auto' ? fallbackWhenAuto : value;
1080
+ }
1081
+ function normalizeModeInput(value) {
1082
+ if (typeof value === 'string') {
1083
+ const normalized = value.trim().toLowerCase();
1084
+ if (normalized === 'push' || normalized === 'side' || normalized === 'overlay') {
1085
+ return normalized;
1086
+ }
1087
+ }
1088
+ return 'overlay';
1089
+ }
1090
+ function normalizePositionInput(value) {
1091
+ if (typeof value === 'string' && value.trim().toLowerCase() === 'end') {
1092
+ return 'end';
1093
+ }
1094
+ return 'start';
1095
+ }
1096
+ function normalizeDirectionInput(value) {
1097
+ if (typeof value === 'string') {
1098
+ const normalized = value.trim().toLowerCase();
1099
+ if (normalized === 'rtl' || normalized === 'ltr' || normalized === 'auto') {
1100
+ return normalized;
1101
+ }
1102
+ }
1103
+ return 'auto';
1104
+ }
1105
+ function normalizeRoleInput(value) {
1106
+ if (typeof value === 'string') {
1107
+ const normalized = value.trim().toLowerCase();
1108
+ if (normalized === 'dialog' ||
1109
+ normalized === 'complementary' ||
1110
+ normalized === 'navigation' ||
1111
+ normalized === 'region') {
1112
+ return normalized;
1113
+ }
1114
+ }
1115
+ return 'navigation';
1116
+ }
1117
+ function normalizeAutoFocusInput(value) {
1118
+ if (typeof value === 'string') {
1119
+ const normalized = value.trim().toLowerCase();
1120
+ if (normalized === 'first-focusable') {
1121
+ return 'first-focusable';
1122
+ }
1123
+ if (normalized === 'none') {
1124
+ return 'none';
1125
+ }
1126
+ }
1127
+ return 'drawer';
1128
+ }
1129
+ function normalizeNumberInput(value) {
1130
+ if (typeof value === 'number' && Number.isFinite(value)) {
1131
+ return value;
1132
+ }
1133
+ if (typeof value === 'string') {
1134
+ const parsed = Number.parseFloat(value);
1135
+ if (Number.isFinite(parsed)) {
1136
+ return parsed;
1137
+ }
1138
+ }
1139
+ return 0;
1140
+ }
1141
+ function resolveSideFromDirection(position, direction) {
1142
+ if (position === 'start') {
1143
+ return direction === 'rtl' ? 'right' : 'left';
1144
+ }
1145
+ return direction === 'rtl' ? 'left' : 'right';
1146
+ }
1147
+ //# sourceMappingURL=tng-drawer.js.map