@3t-transform/threeteeui 1.2.0 → 1.3.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 (210) hide show
  1. package/dist/cjs/loader.cjs.js +1 -1
  2. package/dist/cjs/{tttx-button_1_2_0.cjs.entry.js → tttx-button_1_3_0.cjs.entry.js} +2 -2
  3. package/dist/cjs/{tttx-checkbox-group-caption_1_2_0.cjs.entry.js → tttx-checkbox-group-caption_1_3_0.cjs.entry.js} +1 -1
  4. package/dist/cjs/{tttx-checkbox-group-heading_1_2_0.cjs.entry.js → tttx-checkbox-group-heading_1_3_0.cjs.entry.js} +1 -1
  5. package/dist/cjs/{tttx-checkbox-group_1_2_0.cjs.entry.js → tttx-checkbox-group_1_3_0.cjs.entry.js} +1 -1
  6. package/dist/cjs/{tttx-checkbox_1_2_0.cjs.entry.js → tttx-checkbox_1_3_0.cjs.entry.js} +2 -2
  7. package/dist/cjs/{tttx-data-pattern_1_2_0.cjs.entry.js → tttx-data-pattern_1_3_0.cjs.entry.js} +2 -2
  8. package/dist/cjs/{tttx-dialog-box_1_2_0.cjs.entry.js → tttx-dialog-box_1_3_0.cjs.entry.js} +3 -3
  9. package/dist/cjs/{tttx-dialog_1_2_0.cjs.entry.js → tttx-dialog_1_3_0.cjs.entry.js} +2 -2
  10. package/dist/cjs/{tttx-expander_1_2_0.cjs.entry.js → tttx-expander_1_3_0.cjs.entry.js} +2 -2
  11. package/dist/cjs/{tttx-filter_1_2_0_4.cjs.entry.js → tttx-filter_1_3_0_4.cjs.entry.js} +17 -10
  12. package/dist/cjs/{tttx-form_1_2_0.cjs.entry.js → tttx-form_1_3_0.cjs.entry.js} +159 -127
  13. package/dist/cjs/{tttx-icon_1_2_0.cjs.entry.js → tttx-icon_1_3_0.cjs.entry.js} +1 -1
  14. package/dist/cjs/{tttx-keyvalue-block_1_2_0.cjs.entry.js → tttx-keyvalue-block_1_3_0.cjs.entry.js} +1 -1
  15. package/dist/cjs/{tttx-loading-spinner_1_2_0.cjs.entry.js → tttx-loading-spinner_1_3_0.cjs.entry.js} +1 -1
  16. package/dist/cjs/{tttx-multiselect-box_1_2_0.cjs.entry.js → tttx-multiselect-box_1_3_0.cjs.entry.js} +6 -6
  17. package/dist/cjs/{tttx-percentage-bar_1_2_0.cjs.entry.js → tttx-percentage-bar_1_3_0.cjs.entry.js} +2 -2
  18. package/dist/cjs/{tttx-qrcode_1_2_0.cjs.entry.js → tttx-qrcode_1_3_0.cjs.entry.js} +1 -1
  19. package/dist/cjs/{tttx-select-box_1_2_0.cjs.entry.js → tttx-select-box_1_3_0.cjs.entry.js} +3 -3
  20. package/dist/cjs/tttx-standalone-input_1_3_0.cjs.entry.js +94 -0
  21. package/dist/cjs/{tttx-tabs_1_2_0.cjs.entry.js → tttx-tabs_1_3_0.cjs.entry.js} +4 -4
  22. package/dist/cjs/{tttx-tag_1_2_0.cjs.entry.js → tttx-tag_1_3_0.cjs.entry.js} +1 -1
  23. package/dist/cjs/{tttx-textarea_1_2_0.cjs.entry.js → tttx-textarea_1_3_0.cjs.entry.js} +2 -2
  24. package/dist/cjs/{tttx-tree-view_1_2_0.cjs.entry.js → tttx-tree-view_1_3_0.cjs.entry.js} +3 -3
  25. package/dist/cjs/tttx.cjs.js +1 -1
  26. package/dist/collection/collection-manifest.json +1 -1
  27. package/dist/collection/components/atoms/tttx-button/tttx-button.js +2 -2
  28. package/dist/collection/components/atoms/tttx-button/tttx-button.stories.js +20 -20
  29. package/dist/collection/components/atoms/tttx-checkbox/tttx-checkbox.js +2 -2
  30. package/dist/collection/components/atoms/tttx-checkbox/tttx-checkbox.stories.js +1 -1
  31. package/dist/collection/components/atoms/tttx-icon/tttx-icon.js +1 -1
  32. package/dist/collection/components/atoms/tttx-icon/tttx-icon.stories.js +1 -1
  33. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.js +1 -1
  34. package/dist/collection/components/atoms/tttx-keyvalue-block/tttx-keyvalue-block.stories.js +6 -6
  35. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.js +1 -1
  36. package/dist/collection/components/atoms/tttx-loading-spinner/tttx-loading-spinner.stories.js +1 -1
  37. package/dist/collection/components/atoms/tttx-percentage-bar/tttx-percentage-bar.js +1 -1
  38. package/dist/collection/components/atoms/tttx-percentage-bar/tttx-percentage-bar.stories.js +5 -5
  39. package/dist/collection/components/atoms/tttx-qrcode/tttx-qrcode.js +1 -1
  40. package/dist/collection/components/atoms/tttx-qrcode/tttx-qrcode.stories.js +1 -1
  41. package/dist/collection/components/atoms/tttx-tag/tttx-tag.js +1 -1
  42. package/dist/collection/components/atoms/tttx-tag/tttx-tag.stories.js +6 -6
  43. package/dist/collection/components/molecules/tttx-checkbox-group/components/tttx-checkbox-group-caption.js +1 -1
  44. package/dist/collection/components/molecules/tttx-checkbox-group/components/tttx-checkbox-group-heading.js +1 -1
  45. package/dist/collection/components/molecules/tttx-checkbox-group/tttx-checkbox-group.js +1 -1
  46. package/dist/collection/components/molecules/tttx-checkbox-group/tttx-checkbox-group.stories.js +10 -10
  47. package/dist/collection/components/molecules/tttx-dialog/tttx-dialog.js +2 -2
  48. package/dist/collection/components/molecules/tttx-dialog/tttx-dialog.stories.js +6 -6
  49. package/dist/collection/components/molecules/tttx-dialog-box/tttx-dialog-box.js +3 -3
  50. package/dist/collection/components/molecules/tttx-dialog-box/tttx-dialog-box.stories.js +24 -24
  51. package/dist/collection/components/molecules/tttx-expander/tttx-expander.js +2 -2
  52. package/dist/collection/components/molecules/tttx-expander/tttx-expander.stories.js +9 -9
  53. package/dist/collection/components/molecules/tttx-filter/tttx-filter.js +3 -3
  54. package/dist/collection/components/molecules/tttx-filter/tttx-filter.stories.js +2 -2
  55. package/dist/collection/components/molecules/tttx-form/lib/setErrorState.js +0 -1
  56. package/dist/collection/components/molecules/tttx-form/lib/timecomparatorChecks.js +64 -0
  57. package/dist/collection/components/molecules/tttx-form/tttx-form.js +103 -129
  58. package/dist/collection/components/molecules/tttx-form/tttx-form.stories.js +5 -5
  59. package/dist/collection/components/molecules/tttx-list/tttx-list.js +11 -4
  60. package/dist/collection/components/molecules/tttx-list/tttx-list.stories.js +46 -46
  61. package/dist/collection/components/molecules/tttx-multiselect-box/tttx-multiselect-box.js +6 -6
  62. package/dist/collection/components/molecules/tttx-multiselect-box/tttx-multiselect-box.stories.js +33 -33
  63. package/dist/collection/components/molecules/tttx-select-box/tttx-select-box.js +3 -3
  64. package/dist/collection/components/molecules/tttx-select-box/tttx-select-box.stories.js +16 -16
  65. package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.js +2 -2
  66. package/dist/collection/components/molecules/tttx-sorter/tttx-sorter.stories.js +1 -1
  67. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.js +4 -4
  68. package/dist/collection/components/molecules/tttx-standalone-input/tttx-standalone-input.stories.js +1 -1
  69. package/dist/collection/components/molecules/tttx-tabs/tttx-tabs.js +3 -3
  70. package/dist/collection/components/molecules/tttx-tabs/tttx-tabs.stories.js +4 -4
  71. package/dist/collection/components/molecules/tttx-textarea/tttx-textarea.js +3 -3
  72. package/dist/collection/components/molecules/tttx-textarea/tttx-textarea.stories.js +1 -1
  73. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.js +1 -1
  74. package/dist/collection/components/molecules/tttx-toolbar/tttx-toolbar.stories.js +37 -37
  75. package/dist/collection/components/molecules/tttx-tree-view/tttx-tree-view.js +3 -3
  76. package/dist/collection/components/molecules/tttx-tree-view/tttx-tree-view.stories.js +8 -8
  77. package/dist/collection/components/organisms/tttx-data-pattern/tttx-data-pattern.js +2 -2
  78. package/dist/collection/components/organisms/tttx-data-pattern/tttx-data-pattern.stories.js +5 -5
  79. package/dist/components/index.d.ts +26 -26
  80. package/dist/components/index.js +26 -26
  81. package/dist/components/tttx-button.js +5 -5
  82. package/dist/components/{tttx-button_1_2_0.d.ts → tttx-button_1_3_0.d.ts} +4 -4
  83. package/dist/components/{tttx-button_1_2_0.js → tttx-button_1_3_0.js} +2 -2
  84. package/dist/components/tttx-checkbox-group-caption_1_3_0.d.ts +11 -0
  85. package/dist/components/{tttx-checkbox-group-caption_1_2_0.js → tttx-checkbox-group-caption_1_3_0.js} +5 -5
  86. package/dist/components/tttx-checkbox-group-heading_1_3_0.d.ts +11 -0
  87. package/dist/components/{tttx-checkbox-group-heading_1_2_0.js → tttx-checkbox-group-heading_1_3_0.js} +5 -5
  88. package/dist/components/tttx-checkbox-group_1_3_0.d.ts +11 -0
  89. package/dist/components/{tttx-checkbox-group_1_2_0.js → tttx-checkbox-group_1_3_0.js} +5 -5
  90. package/dist/components/{tttx-textarea_1_2_0.d.ts → tttx-checkbox_1_3_0.d.ts} +4 -4
  91. package/dist/components/{tttx-checkbox_1_2_0.js → tttx-checkbox_1_3_0.js} +7 -7
  92. package/dist/components/tttx-data-pattern_1_3_0.d.ts +11 -0
  93. package/dist/components/{tttx-data-pattern_1_2_0.js → tttx-data-pattern_1_3_0.js} +13 -13
  94. package/dist/components/{tttx-dialog-box_1_2_0.d.ts → tttx-dialog-box_1_3_0.d.ts} +4 -4
  95. package/dist/components/{tttx-dialog-box_1_2_0.js → tttx-dialog-box_1_3_0.js} +9 -9
  96. package/dist/components/{tttx-filter_1_2_0.d.ts → tttx-dialog_1_3_0.d.ts} +4 -4
  97. package/dist/components/{tttx-dialog_1_2_0.js → tttx-dialog_1_3_0.js} +8 -8
  98. package/dist/components/{tttx-expander_1_2_0.d.ts → tttx-expander_1_3_0.d.ts} +4 -4
  99. package/dist/components/{tttx-expander_1_2_0.js → tttx-expander_1_3_0.js} +7 -7
  100. package/dist/components/tttx-filter.js +6 -6
  101. package/dist/components/{tttx-qrcode_1_2_0.d.ts → tttx-filter_1_3_0.d.ts} +4 -4
  102. package/dist/components/{tttx-filter_1_2_0.js → tttx-filter_1_3_0.js} +2 -2
  103. package/dist/components/{tttx-icon_1_2_0.d.ts → tttx-form_1_3_0.d.ts} +4 -4
  104. package/dist/components/{tttx-form_1_2_0.js → tttx-form_1_3_0.js} +166 -134
  105. package/dist/components/tttx-icon.js +3 -3
  106. package/dist/components/{tttx-list_1_2_0.d.ts → tttx-icon_1_3_0.d.ts} +4 -4
  107. package/dist/components/{tttx-icon_1_2_0.js → tttx-icon_1_3_0.js} +2 -2
  108. package/dist/components/tttx-keyvalue-block_1_3_0.d.ts +11 -0
  109. package/dist/components/{tttx-keyvalue-block_1_2_0.js → tttx-keyvalue-block_1_3_0.js} +5 -5
  110. package/dist/components/tttx-list.js +14 -7
  111. package/dist/components/{tttx-form_1_2_0.d.ts → tttx-list_1_3_0.d.ts} +4 -4
  112. package/dist/components/{tttx-list_1_2_0.js → tttx-list_1_3_0.js} +2 -2
  113. package/dist/components/tttx-loading-spinner_1_3_0.d.ts +11 -0
  114. package/dist/components/{tttx-loading-spinner_1_2_0.js → tttx-loading-spinner_1_3_0.js} +5 -5
  115. package/dist/components/tttx-multiselect-box_1_3_0.d.ts +11 -0
  116. package/dist/components/{tttx-multiselect-box_1_2_0.js → tttx-multiselect-box_1_3_0.js} +13 -13
  117. package/dist/components/tttx-percentage-bar_1_3_0.d.ts +11 -0
  118. package/dist/components/{tttx-percentage-bar_1_2_0.js → tttx-percentage-bar_1_3_0.js} +6 -6
  119. package/dist/components/{tttx-dialog_1_2_0.d.ts → tttx-qrcode_1_3_0.d.ts} +4 -4
  120. package/dist/components/{tttx-qrcode_1_2_0.js → tttx-qrcode_1_3_0.js} +5 -5
  121. package/dist/components/tttx-select-box.js +7 -7
  122. package/dist/components/tttx-select-box_1_3_0.d.ts +11 -0
  123. package/dist/components/{tttx-select-box_1_2_0.js → tttx-select-box_1_3_0.js} +2 -2
  124. package/dist/components/tttx-sorter.js +5 -5
  125. package/dist/components/tttx-sorter_1_3_0.d.ts +11 -0
  126. package/dist/components/{tttx-sorter_1_2_0.js → tttx-sorter_1_3_0.js} +2 -2
  127. package/dist/components/tttx-standalone-input.js +6 -6
  128. package/dist/components/tttx-standalone-input_1_3_0.d.ts +11 -0
  129. package/dist/components/{tttx-standalone-input_1_2_0.js → tttx-standalone-input_1_3_0.js} +2 -2
  130. package/dist/components/{tttx-tabs_1_2_0.d.ts → tttx-tabs_1_3_0.d.ts} +4 -4
  131. package/dist/components/{tttx-tabs_1_2_0.js → tttx-tabs_1_3_0.js} +9 -9
  132. package/dist/components/{tttx-tag_1_2_0.d.ts → tttx-tag_1_3_0.d.ts} +4 -4
  133. package/dist/components/{tttx-tag_1_2_0.js → tttx-tag_1_3_0.js} +5 -5
  134. package/dist/components/{tttx-checkbox_1_2_0.d.ts → tttx-textarea_1_3_0.d.ts} +4 -4
  135. package/dist/components/{tttx-textarea_1_2_0.js → tttx-textarea_1_3_0.js} +6 -6
  136. package/dist/components/tttx-toolbar.js +3 -3
  137. package/dist/components/{tttx-toolbar_1_2_0.d.ts → tttx-toolbar_1_3_0.d.ts} +4 -4
  138. package/dist/components/{tttx-toolbar_1_2_0.js → tttx-toolbar_1_3_0.js} +2 -2
  139. package/dist/components/{tttx-tree-view_1_2_0.d.ts → tttx-tree-view_1_3_0.d.ts} +4 -4
  140. package/dist/components/{tttx-tree-view_1_2_0.js → tttx-tree-view_1_3_0.js} +9 -9
  141. package/dist/esm/loader.js +1 -1
  142. package/dist/esm/{tttx-button_1_2_0.entry.js → tttx-button_1_3_0.entry.js} +2 -2
  143. package/dist/esm/{tttx-checkbox-group-caption_1_2_0.entry.js → tttx-checkbox-group-caption_1_3_0.entry.js} +1 -1
  144. package/dist/esm/{tttx-checkbox-group-heading_1_2_0.entry.js → tttx-checkbox-group-heading_1_3_0.entry.js} +1 -1
  145. package/dist/esm/{tttx-checkbox-group_1_2_0.entry.js → tttx-checkbox-group_1_3_0.entry.js} +1 -1
  146. package/dist/esm/{tttx-checkbox_1_2_0.entry.js → tttx-checkbox_1_3_0.entry.js} +2 -2
  147. package/dist/esm/{tttx-data-pattern_1_2_0.entry.js → tttx-data-pattern_1_3_0.entry.js} +2 -2
  148. package/dist/esm/{tttx-dialog-box_1_2_0.entry.js → tttx-dialog-box_1_3_0.entry.js} +3 -3
  149. package/dist/esm/{tttx-dialog_1_2_0.entry.js → tttx-dialog_1_3_0.entry.js} +2 -2
  150. package/dist/esm/{tttx-expander_1_2_0.entry.js → tttx-expander_1_3_0.entry.js} +2 -2
  151. package/dist/esm/{tttx-filter_1_2_0_4.entry.js → tttx-filter_1_3_0_4.entry.js} +14 -7
  152. package/dist/esm/{tttx-form_1_2_0.entry.js → tttx-form_1_3_0.entry.js} +159 -127
  153. package/dist/esm/{tttx-icon_1_2_0.entry.js → tttx-icon_1_3_0.entry.js} +1 -1
  154. package/dist/esm/{tttx-keyvalue-block_1_2_0.entry.js → tttx-keyvalue-block_1_3_0.entry.js} +1 -1
  155. package/dist/esm/{tttx-loading-spinner_1_2_0.entry.js → tttx-loading-spinner_1_3_0.entry.js} +1 -1
  156. package/dist/esm/{tttx-multiselect-box_1_2_0.entry.js → tttx-multiselect-box_1_3_0.entry.js} +6 -6
  157. package/dist/esm/{tttx-percentage-bar_1_2_0.entry.js → tttx-percentage-bar_1_3_0.entry.js} +2 -2
  158. package/dist/esm/{tttx-qrcode_1_2_0.entry.js → tttx-qrcode_1_3_0.entry.js} +1 -1
  159. package/dist/esm/{tttx-select-box_1_2_0.entry.js → tttx-select-box_1_3_0.entry.js} +3 -3
  160. package/dist/esm/tttx-standalone-input_1_3_0.entry.js +90 -0
  161. package/dist/esm/{tttx-tabs_1_2_0.entry.js → tttx-tabs_1_3_0.entry.js} +4 -4
  162. package/dist/esm/{tttx-tag_1_2_0.entry.js → tttx-tag_1_3_0.entry.js} +1 -1
  163. package/dist/esm/{tttx-textarea_1_2_0.entry.js → tttx-textarea_1_3_0.entry.js} +2 -2
  164. package/dist/esm/{tttx-tree-view_1_2_0.entry.js → tttx-tree-view_1_3_0.entry.js} +3 -3
  165. package/dist/esm/tttx.js +1 -1
  166. package/dist/tttx/p-0e515960.entry.js +1 -1
  167. package/dist/tttx/p-1e5ff5f8.entry.js +1 -1
  168. package/dist/tttx/p-23f45005.entry.js +1 -1
  169. package/dist/tttx/p-3676cddd.entry.js +1 -0
  170. package/dist/tttx/p-56c8c353.entry.js +1 -1
  171. package/dist/tttx/p-59c7b049.entry.js +1 -1
  172. package/dist/tttx/p-5d2706b1.entry.js +1 -1
  173. package/dist/tttx/p-63ad6fb7.entry.js +1 -1
  174. package/dist/tttx/p-6b1c7a21.entry.js +1 -1
  175. package/dist/tttx/p-6deb8699.entry.js +1 -1
  176. package/dist/tttx/p-796f699a.entry.js +1 -1
  177. package/dist/tttx/p-81aaafa0.entry.js +1 -1
  178. package/dist/tttx/p-822ec9dc.entry.js +1 -0
  179. package/dist/tttx/p-884f37d3.entry.js +1 -1
  180. package/dist/tttx/p-9434561e.entry.js +1 -1
  181. package/dist/tttx/p-983d63ff.entry.js +1 -1
  182. package/dist/tttx/p-a01e679a.entry.js +1 -1
  183. package/dist/tttx/p-a8e76e78.entry.js +1 -1
  184. package/dist/tttx/p-c170e3b8.entry.js +1 -1
  185. package/dist/tttx/p-ee358ce4.entry.js +1 -1
  186. package/dist/tttx/p-f374e293.entry.js +1 -1
  187. package/dist/tttx/p-f4db1cf2.entry.js +1 -1
  188. package/dist/tttx/p-fe967031.entry.js +1 -1
  189. package/dist/tttx/tttx.esm.js +1 -1
  190. package/dist/types/components/molecules/tttx-form/lib/timecomparatorChecks.d.ts +4 -0
  191. package/dist/types/components/molecules/tttx-form/tttx-form.d.ts +35 -14
  192. package/dist/types/components/molecules/tttx-standalone-input/tttx-standalone-input.d.ts +2 -2
  193. package/dist/types/components/molecules/tttx-textarea/tttx-textarea.d.ts +2 -2
  194. package/dist/types/components.d.ts +305 -304
  195. package/package.json +2 -1
  196. package/dist/cjs/tttx-standalone-input_1_2_0.cjs.entry.js +0 -94
  197. package/dist/components/tttx-checkbox-group-caption_1_2_0.d.ts +0 -11
  198. package/dist/components/tttx-checkbox-group-heading_1_2_0.d.ts +0 -11
  199. package/dist/components/tttx-checkbox-group_1_2_0.d.ts +0 -11
  200. package/dist/components/tttx-data-pattern_1_2_0.d.ts +0 -11
  201. package/dist/components/tttx-keyvalue-block_1_2_0.d.ts +0 -11
  202. package/dist/components/tttx-loading-spinner_1_2_0.d.ts +0 -11
  203. package/dist/components/tttx-multiselect-box_1_2_0.d.ts +0 -11
  204. package/dist/components/tttx-percentage-bar_1_2_0.d.ts +0 -11
  205. package/dist/components/tttx-select-box_1_2_0.d.ts +0 -11
  206. package/dist/components/tttx-sorter_1_2_0.d.ts +0 -11
  207. package/dist/components/tttx-standalone-input_1_2_0.d.ts +0 -11
  208. package/dist/esm/tttx-standalone-input_1_2_0.entry.js +0 -90
  209. package/dist/tttx/p-34be6c6d.entry.js +0 -1
  210. package/dist/tttx/p-c8589436.entry.js +0 -1
@@ -121,7 +121,6 @@ function setErrorState(target, hasError, errorMessage, parent = undefined) {
121
121
  errorBubble.innerHTML = '';
122
122
  errorBubble.append(errorIcon);
123
123
  errorBubble.append(errorMessage);
124
- // errorBubble.replaceChildren(errorIcon, errorMessage);
125
124
  }
126
125
  // If no error was detected, remove the "invalid" class from the input field and clear the error bubble
127
126
  else {
@@ -131,6 +130,70 @@ function setErrorState(target, hasError, errorMessage, parent = undefined) {
131
130
  }
132
131
  }
133
132
 
133
+ function startEndTimeComparator(event) {
134
+ var _a, _b;
135
+ const target = event.target;
136
+ const formKey = target.getAttribute('data-formkey');
137
+ const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[data-formkey=${formKey}]`));
138
+ if (timeFields.length === 4) {
139
+ const startTime = timeFields.find(t => t.name.endsWith('starttime'));
140
+ const endTime = timeFields.find(t => t.name.endsWith('endtime'));
141
+ const startDate = timeFields.find(t => t.name.endsWith('startdate'));
142
+ const endDate = timeFields.find(t => t.name.endsWith('enddate'));
143
+ if (startTime.valueAsNumber >= endTime.valueAsNumber && ((_a = startDate.valueAsDate) === null || _a === void 0 ? void 0 : _a.valueOf()) === ((_b = endDate.valueAsDate) === null || _b === void 0 ? void 0 : _b.valueOf())) {
144
+ setErrorState(endTime, true, 'End time cannot be the same or before the start time');
145
+ if (target.name.endsWith('starttime')) {
146
+ this.validityCheckWrapper(event);
147
+ }
148
+ }
149
+ else {
150
+ // clear any end time comparitor errors and perform the standard validity check on the event
151
+ endTime.setCustomValidity('');
152
+ setErrorState(endTime, false, null);
153
+ this.validityCheckWrapper(event);
154
+ }
155
+ }
156
+ }
157
+ function clearTimeComparator(event) {
158
+ const target = event.target;
159
+ const formKey = target.getAttribute('data-formkey');
160
+ const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[type=time][data-formkey=${formKey}]`));
161
+ if (timeFields.length) {
162
+ const endTime = timeFields.find(t => t.name.endsWith('endtime'));
163
+ endTime.setCustomValidity('');
164
+ setErrorState(endTime, false, null);
165
+ }
166
+ }
167
+ function endDateComparisonValidator(event, triggeredByStartDate = false) {
168
+ var _a, _b, _c, _d;
169
+ const endDate = event.target;
170
+ if (!endDate.value && triggeredByStartDate) {
171
+ return;
172
+ }
173
+ const compareWithName = endDate.getAttribute('data-compare-with');
174
+ const startDate = endDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareWithName}]`);
175
+ if (((_a = endDate.valueAsDate) === null || _a === void 0 ? void 0 : _a.valueOf()) < ((_b = startDate.valueAsDate) === null || _b === void 0 ? void 0 : _b.valueOf())) {
176
+ endDate.setCustomValidity(endDate.getAttribute('data-compare'));
177
+ setErrorState(endDate, true, endDate.getAttribute('data-compare'));
178
+ }
179
+ else if (((_c = endDate.valueAsDate) === null || _c === void 0 ? void 0 : _c.valueOf()) === ((_d = startDate.valueAsDate) === null || _d === void 0 ? void 0 : _d.valueOf())) {
180
+ endDate.setCustomValidity('');
181
+ this.validityCheckWrapper(event);
182
+ startEndTimeComparator.bind(this)(event);
183
+ }
184
+ else {
185
+ clearTimeComparator.bind(this)(event);
186
+ this.validityCheckWrapper(event);
187
+ }
188
+ }
189
+ function startDateComparisonValidator(event) {
190
+ const startDate = event.target;
191
+ const compareToName = startDate.getAttribute('data-compare-to');
192
+ const endDate = startDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareToName}]`);
193
+ endDateComparisonValidator.bind(this)({ target: endDate }, true);
194
+ this.validityCheckWrapper(event);
195
+ }
196
+
134
197
  const tttxFormCss = ".material-symbols-rounded{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}.material-symbols-rounded{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}label{font-weight:500;font-size:16px;line-height:18.752px;color:#212121}label .optional{color:#757575;font-weight:normal}label .outer-container{position:relative}label .outer-container .left-icons,label .outer-container .right-icons{display:flex;position:absolute;height:24px;gap:8px}label .outer-container .left-icons tttx-icon,label .outer-container .right-icons tttx-icon{height:24px;width:24px}label .outer-container .left-icons{left:8px}label .outer-container .right-icons{right:8px}label .outer-container input,label .outer-container textarea{color:#212121;box-sizing:border-box;border:1px solid #d5d5d5;border-radius:4px;padding:0;padding-left:16px;padding-right:16px;margin-top:4px;}label .outer-container input.has-input-icon,label .outer-container textarea.has-input-icon{padding-left:40px}label .outer-container input.has-input-icon.has-left-icon,label .outer-container textarea.has-input-icon.has-left-icon{padding-left:72px}label .outer-container input.has-left-icon,label .outer-container textarea.has-left-icon{padding-left:40px}label .outer-container input.has-right-icon,label .outer-container textarea.has-right-icon{padding-right:40px}label .outer-container input.invalid,label .outer-container textarea.invalid{border:1px solid #dc0000}label .outer-container input:not([type=submit]),label .outer-container textarea:not([type=submit]){font-family:\"Roboto\", serif;width:100%;height:36px;font-size:16px;line-height:18.752px}label .outer-container input[type=radio],label .outer-container textarea[type=radio]{width:20px;height:20px}label .outer-container input[type=date],label .outer-container textarea[type=date]{background:white;display:block;min-width:calc(100% - 18px);line-height:37px}label .outer-container input[readonly],label .outer-container textarea[readonly]{cursor:default;pointer-events:none;user-select:none;color:gray}label .outer-container input:focus,label .outer-container textarea:focus{border-color:#1479c6}label .outer-container input:focus-visible,label .outer-container textarea:focus-visible{outline:none}label .outer-container textarea{padding:8px;height:auto;min-height:100px;resize:vertical}label .outer-container.inputBlock{display:flex;align-items:center;line-height:21px}label .outer-container.inputBlock .left-icons,label .outer-container.inputBlock .right-icons{margin-top:4px}label .outer-container.inputBlock.readonly{pointer-events:none;user-select:none;color:gray}label .outer-container.inputBlock.radioBlock{display:block}label .outer-container.inputInline{display:flex;white-space:nowrap;align-items:center;margin:0}label .outer-container.inputInline input{margin-top:0}label .secondarylabel{color:#757575;font-size:14px;line-height:16.408px;font-weight:normal;display:flex;margin-top:4px}label .errorBubble{position:relative;font-size:14px;line-height:16.408px;font-weight:normal;width:100%;font-family:\"Roboto\", sans-serif;color:#dc0000;display:flex;align-content:center;align-items:center;justify-items:center;margin-top:4px}label .errorBubble:not(.visible){display:none}label .errorBubble span{color:#dc0000;font-size:16px;margin-right:4px}.material-symbols-rounded{font-family:\"Material Symbols Rounded\", sans-serif;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:#9e9e9e}button{cursor:pointer}.button{font-family:Roboto, serif;box-sizing:border-box;height:36px;min-width:36px;padding:0;margin:0;background:transparent;color:#212121;border:1px solid #c8c8c8;border-radius:4px;text-transform:uppercase;display:flex;justify-content:left;align-items:center;font-size:14px;font-weight:500}.button-content{display:block;padding:0 16px}.icon-left,.icon-right{margin-top:4px}.iconleft{padding-left:8px}.iconleft .button-content{padding-left:4px}.iconright{padding-right:8px}.iconright .button-content{padding-right:4px}.notext{padding:0 6px}.button:active{background:rgba(17, 17, 17, 0.2);border:1px solid #d5d5d5}.primary{background:#1479c6;border:1px solid #1479c6;color:white}.primary:active{background:#1464a2;border:1px solid #1464a2}.borderless{background:transparent;border:none;color:#212121}.borderless:active{background:rgba(17, 17, 17, 0.2);border:none}.borderless-circle{background:transparent;border:none;color:#212121;border-radius:50%}.borderless-circle:active{border:none}.borderless-circle:focus{border-color:transparent}.danger{background:#dc0000;border:1px solid #dc0000;color:white}.danger:active{background:#b00000;border:1px solid #b00000}.disabled{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}.disabled:active{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}@media (hover: hover){.button:hover{background:rgba(17, 17, 17, 0.1);border:1px solid #d5d5d5}.primary:hover{background:#146eb3;border:1px solid #146eb3}.borderless:hover{background:rgba(17, 17, 17, 0.1);border:none}.borderless-circle:hover{background:rgba(17, 17, 17, 0.1);border:none}.danger:hover{background:#c60000;border:1px solid #c60000}.disabled:hover{background:#aeaeae;border:none;color:#4c4c4c;cursor:not-allowed}}:host{display:block}fieldset{margin:0;padding:0;border:none}label{display:block;position:relative;margin-bottom:16px}.inlineLabel{font-weight:400;display:inline-block;vertical-align:top;padding-top:4px}input[type=checkbox]{width:18px;height:18px}input~label{font-weight:400}select{font-family:\"Roboto\", serif;box-sizing:border-box;width:100%;height:36px;padding:0 16px;font-size:16px;border:1px solid #d5d5d5;border-radius:4px;margin-top:4px}.placeholder{color:#9e9e9e}.placeholder option{color:initial}select.invalid:invalid{border:1px solid #dc0000}select~.errorBubble{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:\"Roboto\", sans-serif;color:#dc0000;display:flex;align-content:center;align-items:center;justify-items:center}select~.errorBubble:not(.visible){visibility:hidden}select~.errorBubble span{color:#dc0000;font-size:16px;margin-right:4px;height:16px}select.invalid:invalid~.errorBubble{position:relative;font-size:14px;font-weight:normal;width:100%;font-family:\"Roboto\", sans-serif;color:#dc0000;visibility:visible}select:focus{border-color:#1479c6}select:focus-visible{outline:none}.button{padding:0 16px}.footer{display:flex;gap:16px;flex-direction:row-reverse}label.flex-label{display:flex;flex-direction:column;width:346px;box-sizing:border-box}label>.outer-container>input[type=date]{min-width:0;width:200px}label.flex-label input[type=time]{min-width:auto;text-align:center;width:130px;margin-left:16px}label>.outer-container>input[type=date],label.flex-label input[type=time]{line-height:36px}";
135
198
 
136
199
  const TttxForm = class {
@@ -145,13 +208,6 @@ const TttxForm = class {
145
208
  }
146
209
  // This method is called whenever the "formschema" property changes
147
210
  onFormSchemaChange(newValue) {
148
- // If the formSchema changes and the form data is uncontrolled, store the data since the fields will be removed to avoid form duplication
149
- if (!this.data && this.form && this._formSchema) {
150
- const formData = new FormData(this.form);
151
- this._data = Object.fromEntries(Object.keys(this._formSchema.properties).map(formKey => {
152
- return [formKey, formData.get(formKey)];
153
- }));
154
- }
155
211
  // Check if the new value is a string, indicating that it needs to be parsed
156
212
  if (typeof newValue === 'string') {
157
213
  // Parse the string and set the "_formSchema" property
@@ -161,6 +217,7 @@ const TttxForm = class {
161
217
  // If the new value is already an object, set the "_formSchema" property directly
162
218
  this._formSchema = newValue;
163
219
  }
220
+ return this._formSchema;
164
221
  }
165
222
  onDataChange(newValue) {
166
223
  if (typeof newValue === 'string') {
@@ -169,6 +226,7 @@ const TttxForm = class {
169
226
  else {
170
227
  this._data = newValue;
171
228
  }
229
+ return this._data;
172
230
  }
173
231
  /**
174
232
  * Handles the focus event for a form field and emits a "dataChanged" event
@@ -208,7 +266,6 @@ const TttxForm = class {
208
266
  }
209
267
  select.replaceChildren(fragment);
210
268
  tttxSelect.optionsData = options;
211
- //await tttxSelect.setOptionsData(options);
212
269
  await tttxSelect.setSelectedItem(options[0].value);
213
270
  }
214
271
  /**
@@ -266,9 +323,10 @@ const TttxForm = class {
266
323
  formProperties.options.forEach(optionProperties => {
267
324
  this.appendOption(select, optionProperties);
268
325
  });
269
- if ((_a = this._data) === null || _a === void 0 ? void 0 : _a[formKey])
326
+ if ((_a = this._data) === null || _a === void 0 ? void 0 : _a[formKey]) {
270
327
  select.classList.remove('placeholder');
271
- const tttxSelect = document.createElement('tttx-select-box_1_2_0');
328
+ }
329
+ const tttxSelect = document.createElement('tttx-select-box_1_3_0');
272
330
  tttxSelect.optionsData = (_b = formProperties.options) === null || _b === void 0 ? void 0 : _b.filter(o => !o.placeholder);
273
331
  tttxSelect.placeholder = (_d = (_c = formProperties.options) === null || _c === void 0 ? void 0 : _c.filter(o => o.placeholder)[0]) === null || _d === void 0 ? void 0 : _d.label;
274
332
  tttxSelect.inline = false;
@@ -279,13 +337,18 @@ const TttxForm = class {
279
337
  const fragment = document.createDocumentFragment();
280
338
  fragment.append(tttxSelect);
281
339
  select.style.display = 'none';
282
- tttxSelect.addEventListener('selectItemEvent', function (ev) {
283
- select.value = ev.detail.value;
284
- select.onblur({ target: select }); // triggers validator
285
- select.onchange({ target: select }); // triggers dataChanged event
286
- });
340
+ tttxSelect.addEventListener('selectItemEvent', this.selectItemEventCallback.bind(select));
287
341
  return { input: select, overlay: fragment };
288
342
  }
343
+ selectItemEventCallback(ev) {
344
+ // this function MUST be bound to a HTMLSelectElement
345
+ // 'this' will be the select element
346
+ // the function was split out for testing
347
+ const select = this;
348
+ select.value = ev.detail.value;
349
+ select.onblur({ target: select }); // triggers validator
350
+ select.onchange({ target: select }); // triggers dataChanged event
351
+ }
289
352
  /**
290
353
  * Appends an option to a select element
291
354
  *
@@ -516,7 +579,7 @@ const TttxForm = class {
516
579
  * @param {HTMLDivElement} errorBubble - The error bubble element to display error messages in.
517
580
  * @return {HTMLLabelElement} - The new label element.
518
581
  */
519
- createLabel(formProperties, input, overlay, errorBubble) {
582
+ createLabel(formProperties, input, overlay = null, errorBubble) {
520
583
  var _a;
521
584
  const outerContainer = document.createElement('div');
522
585
  let outerContainerClassName = 'outer-container inputBlock';
@@ -567,7 +630,7 @@ const TttxForm = class {
567
630
  */
568
631
  createRadio(formKey, formProperties) {
569
632
  var _a, _b;
570
- const fragment = new DocumentFragment();
633
+ const fragment = document.createDocumentFragment();
571
634
  for (const optionProperties of formProperties.options) {
572
635
  // Create a new <input> element with the specified name and type
573
636
  const input = document.createElement('input');
@@ -597,8 +660,9 @@ const TttxForm = class {
597
660
  populateFormFromSchema() {
598
661
  var _a;
599
662
  // If there is no form schema, return early
600
- if (!this._formSchema)
663
+ if (!this._formSchema) {
601
664
  return;
665
+ }
602
666
  // Get the properties of the form schema and their keys
603
667
  const properties = this._formSchema.properties;
604
668
  const propertyKeys = Object.keys(properties);
@@ -666,129 +730,97 @@ const TttxForm = class {
666
730
  const properties = this._formSchema.properties;
667
731
  const propertyKeys = Object.keys(properties);
668
732
  for (const formKey of propertyKeys) {
669
- const formItemsByKey = formItems.querySelectorAll(`[name^=${formKey}]`);
670
- for (const formInput of formItemsByKey) {
671
- // Bind events to form input elements
672
- formInput.oninvalid = this.validityCheckWrapper.bind(this);
673
- formInput.onblur = this.validityCheckWrapper.bind(this);
674
- formInput.onkeyup = this.fieldChanged.bind(this);
675
- formInput.onchange = this.fieldChanged.bind(this);
676
- if (properties[formKey].form.type === 'select' && formInput.classList.contains('placeholder')) {
677
- formInput.addEventListener('change', () => {
678
- formInput.classList.remove('placeholder');
679
- });
680
- }
681
- if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-with')) {
682
- formInput.oninvalid = this.endDateComparisonValidator.bind(this);
683
- formInput.onblur = this.endDateComparisonValidator.bind(this);
684
- }
685
- if (properties[formKey].form.type === 'startenddate' && formInput.type === 'time') {
686
- formInput.oninvalid = this.startEndTimeComparitor.bind(this);
687
- formInput.onblur = this.startEndTimeComparitor.bind(this);
688
- }
689
- if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-to')) {
690
- formInput.oninvalid = this.startDateComparisonValidator.bind(this);
691
- formInput.onblur = this.startDateComparisonValidator.bind(this);
692
- }
693
- }
733
+ this.applyValidationFunctionsToFormElement(formItems, formKey, properties);
694
734
  }
695
735
  // populate with existing form data if available
696
- if (this._data && Object.keys(this._data).length > 0) {
697
- const dataKeys = Object.keys(this._data);
698
- for (const key of dataKeys) {
699
- const formItemsByKey = formItems.querySelectorAll(`[name=${key}]`);
700
- for (const formItem of formItemsByKey) {
701
- switch (formItem.type) {
702
- case 'checkbox':
703
- if (this._data[key] === 'on') {
704
- formItem.checked = true;
705
- }
706
- break;
707
- case 'radio':
708
- if (formItem.value === this._data[key]) {
709
- formItem.checked = true;
710
- }
711
- break;
712
- case 'select':
713
- case 'select-one':
714
- formItems.querySelector(`[name=overlay-${key}]`).selectedValue = this._data[key];
715
- formItem.value = this._data[key];
716
- break;
717
- default:
718
- formItem.value = this._data[key];
719
- }
720
- }
721
- }
736
+ if ((this._data && Object.keys(this._data).length > 0)) {
737
+ this.populateFormWithExistingData(formItems);
722
738
  }
723
739
  // Append the cloned form elements to the fieldset
724
740
  this.fieldset.replaceChildren(formItems);
725
741
  }
726
- startEndTimeComparitor(event) {
727
- var _a, _b;
728
- const target = event.target;
729
- const formKey = target.getAttribute('data-formkey');
730
- const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[data-formkey=${formKey}]`));
731
- if (timeFields.length === 4) {
732
- const startTime = timeFields.find(t => t.name.endsWith('starttime'));
733
- const endTime = timeFields.find(t => t.name.endsWith('endtime'));
734
- const startDate = timeFields.find(t => t.name.endsWith('startdate'));
735
- const endDate = timeFields.find(t => t.name.endsWith('enddate'));
736
- if (startTime.valueAsNumber >= endTime.valueAsNumber && ((_a = startDate.valueAsDate) === null || _a === void 0 ? void 0 : _a.valueOf()) === ((_b = endDate.valueAsDate) === null || _b === void 0 ? void 0 : _b.valueOf())) {
737
- setErrorState(endTime, true, 'End time cannot be the same or before the start time');
738
- if (target.name.endsWith('starttime')) {
739
- this.validityCheckWrapper(event);
740
- }
742
+ /**
743
+ * Assign validation events to a given form item
744
+ * @param formItems The document fragment template of form items to be rendered
745
+ * @param formKey The key of the form item to bind events too
746
+ * @param properties The form item's properties, such as type and name
747
+ */
748
+ applyValidationFunctionsToFormElement(formItems, formKey, properties) {
749
+ const formItemsByKey = formItems.querySelectorAll(`[name^=${formKey}]`);
750
+ for (const formInput of formItemsByKey) {
751
+ // Bind events to form input elements
752
+ formInput.oninvalid = this.validityCheckWrapper.bind(this);
753
+ formInput.onblur = this.validityCheckWrapper.bind(this);
754
+ formInput.onkeyup = this.fieldChanged.bind(this);
755
+ formInput.onchange = this.fieldChanged.bind(this);
756
+ if (properties[formKey].form.type === 'select' && formInput.classList.contains('placeholder')) {
757
+ formInput.addEventListener('change', this.selectRemovePlaceholderCallback.bind(formInput));
741
758
  }
742
- else {
743
- // clear any end time comparitor errors and perform the standard validity check on the event
744
- endTime.setCustomValidity('');
745
- setErrorState(endTime, false, null);
746
- this.validityCheckWrapper(event);
759
+ if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-with')) {
760
+ formInput.oninvalid = endDateComparisonValidator.bind(this);
761
+ formInput.onblur = endDateComparisonValidator.bind(this);
762
+ }
763
+ if (properties[formKey].form.type === 'startenddate' && formInput.type === 'time') {
764
+ formInput.oninvalid = startEndTimeComparator.bind(this);
765
+ formInput.onblur = startEndTimeComparator.bind(this);
766
+ }
767
+ if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-to')) {
768
+ formInput.oninvalid = startDateComparisonValidator.bind(this);
769
+ formInput.onblur = startDateComparisonValidator.bind(this);
747
770
  }
748
771
  }
749
772
  }
750
- clearTimeComparitor(event) {
751
- const target = event.target;
752
- const formKey = target.getAttribute('data-formkey');
753
- const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[type=time][data-formkey=${formKey}]`));
754
- if (timeFields.length) {
755
- const endTime = timeFields.find(t => t.name.endsWith('endtime'));
756
- endTime.setCustomValidity('');
757
- setErrorState(endTime, false, null);
773
+ /**
774
+ * If data exists, set form input values before rendering
775
+ * @param formItems The document fragment template of form items to be rendered
776
+ */
777
+ populateFormWithExistingData(formItems) {
778
+ const dataKeys = Object.keys(this._data);
779
+ for (const key of dataKeys) {
780
+ const formItemsByKey = formItems.querySelectorAll(`[name=${key}]`);
781
+ for (const formItem of formItemsByKey) {
782
+ switch (formItem.type) {
783
+ case 'checkbox':
784
+ if (this._data[key] === 'on') {
785
+ formItem.checked = true;
786
+ }
787
+ break;
788
+ case 'radio':
789
+ if (formItem.value === this._data[key]) {
790
+ formItem.checked = true;
791
+ }
792
+ break;
793
+ case 'select':
794
+ case 'select-one':
795
+ formItems.querySelector(`[name=overlay-${key}]`)['selectedValue'] = this._data[key];
796
+ formItem.value = this._data[key];
797
+ break;
798
+ default:
799
+ formItem.value = this._data[key];
800
+ }
801
+ }
758
802
  }
759
803
  }
760
- startDateComparisonValidator(event) {
761
- const startDate = event.target;
762
- const compareToName = startDate.getAttribute('data-compare-to');
763
- const endDate = startDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareToName}]`);
764
- this.endDateComparisonValidator({ target: endDate }, true);
765
- this.validityCheckWrapper(event);
766
- }
767
- endDateComparisonValidator(event, triggeredByStartDate = false) {
768
- var _a, _b, _c, _d;
769
- const endDate = event.target;
770
- if (!endDate.value && triggeredByStartDate)
771
- return;
772
- const compareWithName = endDate.getAttribute('data-compare-with');
773
- const startDate = endDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareWithName}]`);
774
- if (((_a = endDate.valueAsDate) === null || _a === void 0 ? void 0 : _a.valueOf()) < ((_b = startDate.valueAsDate) === null || _b === void 0 ? void 0 : _b.valueOf())) {
775
- endDate.setCustomValidity(endDate.getAttribute('data-compare'));
776
- setErrorState(endDate, true, endDate.getAttribute('data-compare'));
777
- }
778
- else if (((_c = endDate.valueAsDate) === null || _c === void 0 ? void 0 : _c.valueOf()) === ((_d = startDate.valueAsDate) === null || _d === void 0 ? void 0 : _d.valueOf())) {
779
- endDate.setCustomValidity('');
780
- this.validityCheckWrapper(event);
781
- this.startEndTimeComparitor(event);
782
- }
783
- else {
784
- this.clearTimeComparitor(event);
785
- this.validityCheckWrapper(event);
786
- }
804
+ /**
805
+ * Remove the placeholder class on the bound THIS select element
806
+ */
807
+ selectRemovePlaceholderCallback() {
808
+ const select = this;
809
+ select.classList.remove('placeholder');
787
810
  }
811
+ /**
812
+ * A wrapper around validity check and set error state
813
+ */
788
814
  validityCheckWrapper(event) {
789
815
  const { target, hasError, errorMessage } = validityCheck(event);
790
816
  setErrorState(target, hasError, errorMessage);
791
817
  }
818
+ assignFieldsetReference(el) {
819
+ this.fieldset = el;
820
+ }
821
+ assignButtonReference(el) {
822
+ this.submitButton = el;
823
+ }
792
824
  /**
793
825
  * Renders the component's template as a form element with a fieldset container. The form's
794
826
  * "onSubmit" event is bound to the "doSubmit" function, which handles the form submission
@@ -797,7 +829,7 @@ const TttxForm = class {
797
829
  * later on.
798
830
  */
799
831
  render() {
800
- return (index.h(index.Host, null, index.h("form", { ref: el => (this.form = el), onSubmit: this.doSubmit.bind(this) }, index.h("fieldset", { ref: el => (this.fieldset = el) }), index.h("input", { type: "submit", ref: el => (this.submitButton = el), style: { display: 'none' } }))));
832
+ return (index.h(index.Host, null, index.h("form", { onSubmit: this.doSubmit.bind(this) }, index.h("fieldset", { ref: this.assignFieldsetReference.bind(this) }), index.h("input", { type: "submit", ref: this.assignButtonReference.bind(this), style: { display: 'none' } }))));
801
833
  }
802
834
  static get watchers() { return {
803
835
  "formschema": ["onFormSchemaChange"],
@@ -806,4 +838,4 @@ const TttxForm = class {
806
838
  };
807
839
  TttxForm.style = tttxFormCss;
808
840
 
809
- exports.tttx_form_1_2_0 = TttxForm;
841
+ exports.tttx_form_1_3_0 = TttxForm;
@@ -31,4 +31,4 @@ const TttxIcon = class {
31
31
  };
32
32
  TttxIcon.style = tttxIconCss;
33
33
 
34
- exports.tttx_icon_1_2_0 = TttxIcon;
34
+ exports.tttx_icon_1_3_0 = TttxIcon;
@@ -69,4 +69,4 @@ const TttxKeyvalueBlock = class {
69
69
  };
70
70
  TttxKeyvalueBlock.style = tttxKeyvalueBlockCss;
71
71
 
72
- exports.tttx_keyvalue_block_1_2_0 = TttxKeyvalueBlock;
72
+ exports.tttx_keyvalue_block_1_3_0 = TttxKeyvalueBlock;
@@ -23,4 +23,4 @@ const TttxLoadingSpinner = class {
23
23
  };
24
24
  TttxLoadingSpinner.style = tttxLoadingSpinnerCss;
25
25
 
26
- exports.tttx_loading_spinner_1_2_0 = TttxLoadingSpinner;
26
+ exports.tttx_loading_spinner_1_3_0 = TttxLoadingSpinner;
@@ -88,11 +88,11 @@ const TttxMultiselectBox = class {
88
88
  const sanitisedHTML = domsanitiser_options.purify.sanitize(option.html, domsanitiser_options.domSanitiserOptions);
89
89
  // This is tested in e2e tests
90
90
  /* istanbul ignore next */
91
- return (index.h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, index.h("tttx-icon_1_2_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), index.h("div", { innerHTML: sanitisedHTML })));
91
+ return (index.h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, index.h("tttx-icon_1_3_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), index.h("div", { innerHTML: sanitisedHTML })));
92
92
  }
93
93
  // This is tested in e2e tests
94
94
  /* istanbul ignore next */
95
- return (index.h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, index.h("tttx-icon_1_2_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), index.h("div", { class: "plaintext-option" }, option.label)));
95
+ return (index.h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, index.h("tttx-icon_1_3_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), index.h("div", { class: "plaintext-option" }, option.label)));
96
96
  }
97
97
  // This is tested in e2e tests
98
98
  /* istanbul ignore next */
@@ -124,11 +124,11 @@ const TttxMultiselectBox = class {
124
124
  if (!this.unsavedSelectedItems)
125
125
  this.unsavedSelectedItems = this.safelyCloneArray(this._optionsData);
126
126
  const chevronIcon = this.open ? 'expand_less' : 'expand_more';
127
- return (index.h(index.Host, { class: this.inline ? 'inline' : 'block' }, this.label && index.h("div", { class: "label" }, this.label), index.h("div", { tabindex: "0", class: "dropdown-container" }, index.h("div", { class: "dropdown-selector", onClick: this.onDropdownClicked.bind(this) }, this.dropdownSelectorContent(), index.h("div", { class: "dropdown-selector-chevron" }, index.h("tttx-icon_1_2_0", { icon: chevronIcon, color: "black" }))), this.open && (index.h("div", { class: "dropdown-body-container" }, index.h("div", { class: "dropdown-body", style: Object.assign({}, this.bodyOffset) }, this.searchEnabled &&
127
+ return (index.h(index.Host, { class: this.inline ? 'inline' : 'block' }, this.label && index.h("div", { class: "label" }, this.label), index.h("div", { tabindex: "0", class: "dropdown-container" }, index.h("div", { class: "dropdown-selector", onClick: this.onDropdownClicked.bind(this) }, this.dropdownSelectorContent(), index.h("div", { class: "dropdown-selector-chevron" }, index.h("tttx-icon_1_3_0", { icon: chevronIcon, color: "black" }))), this.open && (index.h("div", { class: "dropdown-body-container" }, index.h("div", { class: "dropdown-body", style: Object.assign({}, this.bodyOffset) }, this.searchEnabled &&
128
128
  /* istanbul ignore next */
129
- index.h("div", { class: "searchbox" }, index.h("tttx-standalone-input_1_2_0", { type: "text", placeholder: 'Search', label: "", required: true, showerrorbubble: false, iconleft: 'search', onInput: this.handleSearchInput.bind(this), inline: true })), index.h("div", { class: "dropdown-options-list" }, this.unsavedSelectedItems.map((option) => {
129
+ index.h("div", { class: "searchbox" }, index.h("tttx-standalone-input_1_3_0", { type: "text", placeholder: 'Search', label: "", required: true, showerrorbubble: false, iconleft: 'search', onInput: this.handleSearchInput.bind(this), inline: true })), index.h("div", { class: "dropdown-options-list" }, this.unsavedSelectedItems.map((option) => {
130
130
  return this.dropdownOption(option);
131
- })), index.h("div", { class: 'footer' }, index.h("tttx-button_1_2_0", { design: "primary", onClick: this.applyChanges.bind(this) }, "Apply"), index.h("tttx-button_1_2_0", { onClick: this.onCancel.bind(this) }, "Cancel"))))))));
131
+ })), index.h("div", { class: 'footer' }, index.h("tttx-button_1_3_0", { design: "primary", onClick: this.applyChanges.bind(this) }, "Apply"), index.h("tttx-button_1_3_0", { onClick: this.onCancel.bind(this) }, "Cancel"))))))));
132
132
  }
133
133
  get el() { return index.getElement(this); }
134
134
  static get watchers() { return {
@@ -137,4 +137,4 @@ const TttxMultiselectBox = class {
137
137
  };
138
138
  TttxMultiselectBox.style = tttxMultiselectBoxCss;
139
139
 
140
- exports.tttx_multiselect_box_1_2_0 = TttxMultiselectBox;
140
+ exports.tttx_multiselect_box_1_3_0 = TttxMultiselectBox;
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-fdc30724.js');
6
6
 
7
- const tttxPercentageBarCss = ".sc-tttx-percentage-bar_1_2_0-h{display:block}.progress.sc-tttx-percentage-bar_1_2_0{width:100%;background-color:#dbdbdb}.progress.sc-tttx-percentage-bar_1_2_0 .bar.sc-tttx-percentage-bar_1_2_0{height:20px}";
7
+ const tttxPercentageBarCss = ".sc-tttx-percentage-bar_1_3_0-h{display:block}.progress.sc-tttx-percentage-bar_1_3_0{width:100%;background-color:#dbdbdb}.progress.sc-tttx-percentage-bar_1_3_0 .bar.sc-tttx-percentage-bar_1_3_0{height:20px}";
8
8
 
9
9
  const TttxPercentageBar = class {
10
10
  constructor(hostRef) {
@@ -62,4 +62,4 @@ const TttxPercentageBar = class {
62
62
  };
63
63
  TttxPercentageBar.style = tttxPercentageBarCss;
64
64
 
65
- exports.tttx_percentage_bar_1_2_0 = TttxPercentageBar;
65
+ exports.tttx_percentage_bar_1_3_0 = TttxPercentageBar;
@@ -40,4 +40,4 @@ const TttxQrCode = class {
40
40
  };
41
41
  TttxQrCode.style = tttxQrcodeCss;
42
42
 
43
- exports.tttx_qrcode_1_2_0 = TttxQrCode;
43
+ exports.tttx_qrcode_1_3_0 = TttxQrCode;
@@ -65,7 +65,7 @@ const TttxSelectBox = class {
65
65
  let title;
66
66
  let subtitle;
67
67
  const chevronIcon = this.open ? 'expand_less' : 'expand_more';
68
- const icon = index.h("tttx-icon_1_2_0", { icon: chevronIcon, color: "black" });
68
+ const icon = index.h("tttx-icon_1_3_0", { icon: chevronIcon, color: "black" });
69
69
  let chevron = index.h("div", { class: 'dropdown-selector-chevron' }, icon);
70
70
  if (!this.selectedItem) {
71
71
  title = index.h("div", { class: "placeholder" }, this.placeholder);
@@ -124,7 +124,7 @@ const TttxSelectBox = class {
124
124
  return;
125
125
  return (index.h(index.Host, { class: this.inline ? 'inline' : 'block' }, this.label && index.h("div", { class: "label" }, this.label), index.h("div", { tabindex: "0", class: "dropdown-container" }, index.h("div", { class: "dropdown-selector", ref: (el) => this.dropdownSelector = el, onClick: this.onDropdownClicked.bind(this) }, this.dropdownSelectorContent()), this.open && (index.h("div", { class: "dropdown-body-container" }, index.h("div", { class: "dropdown-body", style: Object.assign({ width: `${this.dropdownSelector.offsetWidth}px` }, this.bodyOffset) }, this.searchEnabled &&
126
126
  /* istanbul ignore next */
127
- index.h("div", { class: "searchbox" }, index.h("tttx-standalone-input_1_2_0", { type: "text", label: "", required: true, showerrorbubble: false, iconleft: 'search', onInput: this.handleSearchInput.bind(this) })), index.h("div", { class: "dropdown-options-list" }, this._optionsData.map((option) => {
127
+ index.h("div", { class: "searchbox" }, index.h("tttx-standalone-input_1_3_0", { type: "text", label: "", required: true, showerrorbubble: false, iconleft: 'search', onInput: this.handleSearchInput.bind(this) })), index.h("div", { class: "dropdown-options-list" }, this._optionsData.map((option) => {
128
128
  return this.dropdownOption(option);
129
129
  }))))))));
130
130
  }
@@ -135,4 +135,4 @@ const TttxSelectBox = class {
135
135
  };
136
136
  TttxSelectBox.style = tttxSelectBoxCss;
137
137
 
138
- exports.tttx_select_box_1_2_0 = TttxSelectBox;
138
+ exports.tttx_select_box_1_3_0 = TttxSelectBox;
@@ -0,0 +1,94 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ const index = require('./index-fdc30724.js');
6
+
7
+ const tttxStandaloneInputCss = ".material-symbols-rounded.sc-tttx-standalone-input_1_3_0{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}.material-symbols-rounded.sc-tttx-standalone-input_1_3_0{font-variation-settings:\"FILL\" 1, \"wght\" 400, \"GRAD\" 0, \"opsz\" 24}label.sc-tttx-standalone-input_1_3_0{font-weight:500;font-size:16px;line-height:18.752px;color:#212121}label.sc-tttx-standalone-input_1_3_0 .optional.sc-tttx-standalone-input_1_3_0{color:#757575;font-weight:normal}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0{position:relative}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 .left-icons.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 .right-icons.sc-tttx-standalone-input_1_3_0{display:flex;position:absolute;height:24px;gap:8px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 .left-icons.sc-tttx-standalone-input_1_3_0 tttx-icon.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 .right-icons.sc-tttx-standalone-input_1_3_0 tttx-icon.sc-tttx-standalone-input_1_3_0{height:24px;width:24px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 .left-icons.sc-tttx-standalone-input_1_3_0{left:8px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 .right-icons.sc-tttx-standalone-input_1_3_0{right:8px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.sc-tttx-standalone-input_1_3_0{color:#212121;box-sizing:border-box;border:1px solid #d5d5d5;border-radius:4px;padding:0;padding-left:16px;padding-right:16px;margin-top:4px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.has-input-icon.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.has-input-icon.sc-tttx-standalone-input_1_3_0{padding-left:40px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.has-input-icon.has-left-icon.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.has-input-icon.has-left-icon.sc-tttx-standalone-input_1_3_0{padding-left:72px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.has-left-icon.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.has-left-icon.sc-tttx-standalone-input_1_3_0{padding-left:40px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.has-right-icon.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.has-right-icon.sc-tttx-standalone-input_1_3_0{padding-right:40px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.invalid.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.invalid.sc-tttx-standalone-input_1_3_0{border:1px solid #dc0000}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.sc-tttx-standalone-input_1_3_0:not([type=submit]),label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.sc-tttx-standalone-input_1_3_0:not([type=submit]){font-family:\"Roboto\", serif;width:100%;height:36px;font-size:16px;line-height:18.752px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input[type=radio].sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea[type=radio].sc-tttx-standalone-input_1_3_0{width:20px;height:20px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input[type=date].sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea[type=date].sc-tttx-standalone-input_1_3_0{background:white;display:block;min-width:calc(100% - 18px);line-height:37px}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input[readonly].sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea[readonly].sc-tttx-standalone-input_1_3_0{cursor:default;pointer-events:none;user-select:none;color:gray}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.sc-tttx-standalone-input_1_3_0:focus,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.sc-tttx-standalone-input_1_3_0:focus{border-color:#1479c6}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 input.sc-tttx-standalone-input_1_3_0:focus-visible,label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.sc-tttx-standalone-input_1_3_0:focus-visible{outline:none}label.sc-tttx-standalone-input_1_3_0 .outer-container.sc-tttx-standalone-input_1_3_0 textarea.sc-tttx-standalone-input_1_3_0{padding:8px;height:auto;min-height:100px;resize:vertical}label.sc-tttx-standalone-input_1_3_0 .outer-container.inputBlock.sc-tttx-standalone-input_1_3_0{display:flex;align-items:center;line-height:21px}label.sc-tttx-standalone-input_1_3_0 .outer-container.inputBlock.sc-tttx-standalone-input_1_3_0 .left-icons.sc-tttx-standalone-input_1_3_0,label.sc-tttx-standalone-input_1_3_0 .outer-container.inputBlock.sc-tttx-standalone-input_1_3_0 .right-icons.sc-tttx-standalone-input_1_3_0{margin-top:4px}label.sc-tttx-standalone-input_1_3_0 .outer-container.inputBlock.readonly.sc-tttx-standalone-input_1_3_0{pointer-events:none;user-select:none;color:gray}label.sc-tttx-standalone-input_1_3_0 .outer-container.inputBlock.radioBlock.sc-tttx-standalone-input_1_3_0{display:block}label.sc-tttx-standalone-input_1_3_0 .outer-container.inputInline.sc-tttx-standalone-input_1_3_0{display:flex;white-space:nowrap;align-items:center;margin:0}label.sc-tttx-standalone-input_1_3_0 .outer-container.inputInline.sc-tttx-standalone-input_1_3_0 input.sc-tttx-standalone-input_1_3_0{margin-top:0}label.sc-tttx-standalone-input_1_3_0 .secondarylabel.sc-tttx-standalone-input_1_3_0{color:#757575;font-size:14px;line-height:16.408px;font-weight:normal;display:flex;margin-top:4px}label.sc-tttx-standalone-input_1_3_0 .errorBubble.sc-tttx-standalone-input_1_3_0{position:relative;font-size:14px;line-height:16.408px;font-weight:normal;width:100%;font-family:\"Roboto\", sans-serif;color:#dc0000;display:flex;align-content:center;align-items:center;justify-items:center;margin-top:4px}label.sc-tttx-standalone-input_1_3_0 .errorBubble.sc-tttx-standalone-input_1_3_0:not(.visible){display:none}label.sc-tttx-standalone-input_1_3_0 .errorBubble.sc-tttx-standalone-input_1_3_0 span.sc-tttx-standalone-input_1_3_0{color:#dc0000;font-size:16px;margin-right:4px}.material-symbols-rounded.sc-tttx-standalone-input_1_3_0{font-family:\"Material Symbols Rounded\", sans-serif;font-weight:400;font-style:normal;font-size:24px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;color:#9e9e9e}.sc-tttx-standalone-input_1_3_0-h{display:block}";
8
+
9
+ const TttxInput = class {
10
+ constructor(hostRef) {
11
+ index.registerInstance(this, hostRef);
12
+ this.valueChanged = index.createEvent(this, "valueChanged", 7);
13
+ this.focusChanged = index.createEvent(this, "focusChanged", 7);
14
+ this.blurChanged = index.createEvent(this, "blurChanged", 7);
15
+ this.invalidChanged = index.createEvent(this, "invalidChanged", 7);
16
+ this.inputIconClick = index.createEvent(this, "inputIconClick", 7);
17
+ this.leftIconClick = index.createEvent(this, "leftIconClick", 7);
18
+ this.rightIconClick = index.createEvent(this, "rightIconClick", 7);
19
+ this.label = undefined;
20
+ this.secondarylabel = undefined;
21
+ this.showerrormsg = undefined;
22
+ this.showerrorbubble = true;
23
+ this.errormsg = undefined;
24
+ this.iconleft = undefined;
25
+ this.iconleftcolor = 'grey';
26
+ this.iconright = undefined;
27
+ this.iconrightcolor = 'grey';
28
+ this.inputicon = undefined;
29
+ this.inputiconcolor = 'grey';
30
+ this.inline = undefined;
31
+ this.inputautocapitalize = undefined;
32
+ this.inputautofocus = undefined;
33
+ this.inputkeyhint = undefined;
34
+ this.inputindex = undefined;
35
+ this.inputtitle = undefined;
36
+ this.autocomplete = undefined;
37
+ this.checked = undefined;
38
+ this.disabled = undefined;
39
+ this.max = undefined;
40
+ this.maxlength = undefined;
41
+ this.min = undefined;
42
+ this.minlength = undefined;
43
+ this.name = undefined;
44
+ this.pattern = undefined;
45
+ this.placeholder = undefined;
46
+ this.readonly = undefined;
47
+ this.required = undefined;
48
+ this.step = undefined;
49
+ this.type = 'text';
50
+ this.value = undefined;
51
+ }
52
+ handleChange(event) {
53
+ const target = event.target;
54
+ this.value = target.value;
55
+ this.valueChanged.emit(target.value);
56
+ }
57
+ handleFocus(event) {
58
+ const target = event.target;
59
+ this.focusChanged.emit(target.value);
60
+ }
61
+ handleBlur(event) {
62
+ const target = event.target;
63
+ this.blurChanged.emit(target.value);
64
+ }
65
+ handleInvalid(event) {
66
+ event.preventDefault();
67
+ const target = event.target;
68
+ this.invalidChanged.emit(target.value);
69
+ }
70
+ handleInputIconClick(event) {
71
+ event.preventDefault();
72
+ this.inputIconClick.emit();
73
+ }
74
+ handleLeftIconClick(event) {
75
+ event.preventDefault();
76
+ this.leftIconClick.emit();
77
+ }
78
+ handleRightIconClick(event) {
79
+ event.preventDefault();
80
+ this.rightIconClick.emit();
81
+ }
82
+ render() {
83
+ const classNames = [
84
+ this.showerrormsg ? 'invalid' : '',
85
+ this.inputicon ? 'has-input-icon' : '',
86
+ this.iconleft ? 'has-left-icon' : '',
87
+ this.iconright ? 'has-right-icon' : '',
88
+ ].join(' ');
89
+ return (index.h(index.Host, null, index.h("label", null, this.label, !this.required ? index.h("span", { class: "optional" }, "\u00A0(optional)") : '', index.h("div", { class: ['outer-container', this.inline ? 'inputInline' : 'inputBlock'].join(' ') }, index.h("input", { class: classNames, autocapitalize: this.inputautocapitalize, autofocus: this.inputautofocus, enterkeyhint: this.inputkeyhint, tabindex: this.inputindex, title: this.inputtitle, autocomplete: this.autocomplete, checked: this.checked, disabled: this.disabled, max: this.max, maxlength: this.maxlength, min: this.min, minlength: this.minlength, name: this.name, pattern: this.pattern, placeholder: this.placeholder, readonly: this.readonly, required: this.required, step: this.step, type: this.type, value: this.value, onBlur: this.handleBlur.bind(this), onFocus: this.handleFocus.bind(this), onInput: this.handleChange.bind(this), onInvalid: this.handleInvalid.bind(this) }), (this.inputicon || this.iconleft) && (index.h("span", { class: "left-icons" }, this.inputicon && (index.h("tttx-icon_1_3_0", { class: "input-icon", icon: this.inputicon, color: this.inputiconcolor, onClick: this.handleInputIconClick.bind(this) })), this.iconleft && (index.h("tttx-icon_1_3_0", { class: "left-icon", icon: this.iconleft, color: this.iconleftcolor, onClick: this.handleLeftIconClick.bind(this) })))), this.iconright && (index.h("span", { class: "right-icons" }, index.h("tttx-icon_1_3_0", { class: "right-icon", icon: this.iconright, color: this.iconrightcolor, onClick: this.handleRightIconClick.bind(this) })))), this.secondarylabel && index.h("span", { class: "secondarylabel" }, this.secondarylabel), this.showerrorbubble && (index.h("span", { class: ['errorBubble', this.showerrormsg && this.errormsg ? 'visible' : ''].join(' ') }, index.h("span", { class: "material-symbols-rounded" }, "warning"), " ", this.errormsg)))));
90
+ }
91
+ };
92
+ TttxInput.style = tttxStandaloneInputCss;
93
+
94
+ exports.tttx_standalone_input_1_3_0 = TttxInput;