@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
@@ -117,7 +117,6 @@ function setErrorState(target, hasError, errorMessage, parent = undefined) {
117
117
  errorBubble.innerHTML = '';
118
118
  errorBubble.append(errorIcon);
119
119
  errorBubble.append(errorMessage);
120
- // errorBubble.replaceChildren(errorIcon, errorMessage);
121
120
  }
122
121
  // If no error was detected, remove the "invalid" class from the input field and clear the error bubble
123
122
  else {
@@ -127,6 +126,70 @@ function setErrorState(target, hasError, errorMessage, parent = undefined) {
127
126
  }
128
127
  }
129
128
 
129
+ function startEndTimeComparator(event) {
130
+ var _a, _b;
131
+ const target = event.target;
132
+ const formKey = target.getAttribute('data-formkey');
133
+ const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[data-formkey=${formKey}]`));
134
+ if (timeFields.length === 4) {
135
+ const startTime = timeFields.find(t => t.name.endsWith('starttime'));
136
+ const endTime = timeFields.find(t => t.name.endsWith('endtime'));
137
+ const startDate = timeFields.find(t => t.name.endsWith('startdate'));
138
+ const endDate = timeFields.find(t => t.name.endsWith('enddate'));
139
+ 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())) {
140
+ setErrorState(endTime, true, 'End time cannot be the same or before the start time');
141
+ if (target.name.endsWith('starttime')) {
142
+ this.validityCheckWrapper(event);
143
+ }
144
+ }
145
+ else {
146
+ // clear any end time comparitor errors and perform the standard validity check on the event
147
+ endTime.setCustomValidity('');
148
+ setErrorState(endTime, false, null);
149
+ this.validityCheckWrapper(event);
150
+ }
151
+ }
152
+ }
153
+ function clearTimeComparator(event) {
154
+ const target = event.target;
155
+ const formKey = target.getAttribute('data-formkey');
156
+ const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[type=time][data-formkey=${formKey}]`));
157
+ if (timeFields.length) {
158
+ const endTime = timeFields.find(t => t.name.endsWith('endtime'));
159
+ endTime.setCustomValidity('');
160
+ setErrorState(endTime, false, null);
161
+ }
162
+ }
163
+ function endDateComparisonValidator(event, triggeredByStartDate = false) {
164
+ var _a, _b, _c, _d;
165
+ const endDate = event.target;
166
+ if (!endDate.value && triggeredByStartDate) {
167
+ return;
168
+ }
169
+ const compareWithName = endDate.getAttribute('data-compare-with');
170
+ const startDate = endDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareWithName}]`);
171
+ if (((_a = endDate.valueAsDate) === null || _a === void 0 ? void 0 : _a.valueOf()) < ((_b = startDate.valueAsDate) === null || _b === void 0 ? void 0 : _b.valueOf())) {
172
+ endDate.setCustomValidity(endDate.getAttribute('data-compare'));
173
+ setErrorState(endDate, true, endDate.getAttribute('data-compare'));
174
+ }
175
+ else if (((_c = endDate.valueAsDate) === null || _c === void 0 ? void 0 : _c.valueOf()) === ((_d = startDate.valueAsDate) === null || _d === void 0 ? void 0 : _d.valueOf())) {
176
+ endDate.setCustomValidity('');
177
+ this.validityCheckWrapper(event);
178
+ startEndTimeComparator.bind(this)(event);
179
+ }
180
+ else {
181
+ clearTimeComparator.bind(this)(event);
182
+ this.validityCheckWrapper(event);
183
+ }
184
+ }
185
+ function startDateComparisonValidator(event) {
186
+ const startDate = event.target;
187
+ const compareToName = startDate.getAttribute('data-compare-to');
188
+ const endDate = startDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareToName}]`);
189
+ endDateComparisonValidator.bind(this)({ target: endDate }, true);
190
+ this.validityCheckWrapper(event);
191
+ }
192
+
130
193
  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}";
131
194
 
132
195
  const TttxForm = class {
@@ -141,13 +204,6 @@ const TttxForm = class {
141
204
  }
142
205
  // This method is called whenever the "formschema" property changes
143
206
  onFormSchemaChange(newValue) {
144
- // If the formSchema changes and the form data is uncontrolled, store the data since the fields will be removed to avoid form duplication
145
- if (!this.data && this.form && this._formSchema) {
146
- const formData = new FormData(this.form);
147
- this._data = Object.fromEntries(Object.keys(this._formSchema.properties).map(formKey => {
148
- return [formKey, formData.get(formKey)];
149
- }));
150
- }
151
207
  // Check if the new value is a string, indicating that it needs to be parsed
152
208
  if (typeof newValue === 'string') {
153
209
  // Parse the string and set the "_formSchema" property
@@ -157,6 +213,7 @@ const TttxForm = class {
157
213
  // If the new value is already an object, set the "_formSchema" property directly
158
214
  this._formSchema = newValue;
159
215
  }
216
+ return this._formSchema;
160
217
  }
161
218
  onDataChange(newValue) {
162
219
  if (typeof newValue === 'string') {
@@ -165,6 +222,7 @@ const TttxForm = class {
165
222
  else {
166
223
  this._data = newValue;
167
224
  }
225
+ return this._data;
168
226
  }
169
227
  /**
170
228
  * Handles the focus event for a form field and emits a "dataChanged" event
@@ -204,7 +262,6 @@ const TttxForm = class {
204
262
  }
205
263
  select.replaceChildren(fragment);
206
264
  tttxSelect.optionsData = options;
207
- //await tttxSelect.setOptionsData(options);
208
265
  await tttxSelect.setSelectedItem(options[0].value);
209
266
  }
210
267
  /**
@@ -262,9 +319,10 @@ const TttxForm = class {
262
319
  formProperties.options.forEach(optionProperties => {
263
320
  this.appendOption(select, optionProperties);
264
321
  });
265
- if ((_a = this._data) === null || _a === void 0 ? void 0 : _a[formKey])
322
+ if ((_a = this._data) === null || _a === void 0 ? void 0 : _a[formKey]) {
266
323
  select.classList.remove('placeholder');
267
- const tttxSelect = document.createElement('tttx-select-box_1_2_0');
324
+ }
325
+ const tttxSelect = document.createElement('tttx-select-box_1_3_0');
268
326
  tttxSelect.optionsData = (_b = formProperties.options) === null || _b === void 0 ? void 0 : _b.filter(o => !o.placeholder);
269
327
  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;
270
328
  tttxSelect.inline = false;
@@ -275,13 +333,18 @@ const TttxForm = class {
275
333
  const fragment = document.createDocumentFragment();
276
334
  fragment.append(tttxSelect);
277
335
  select.style.display = 'none';
278
- tttxSelect.addEventListener('selectItemEvent', function (ev) {
279
- select.value = ev.detail.value;
280
- select.onblur({ target: select }); // triggers validator
281
- select.onchange({ target: select }); // triggers dataChanged event
282
- });
336
+ tttxSelect.addEventListener('selectItemEvent', this.selectItemEventCallback.bind(select));
283
337
  return { input: select, overlay: fragment };
284
338
  }
339
+ selectItemEventCallback(ev) {
340
+ // this function MUST be bound to a HTMLSelectElement
341
+ // 'this' will be the select element
342
+ // the function was split out for testing
343
+ const select = this;
344
+ select.value = ev.detail.value;
345
+ select.onblur({ target: select }); // triggers validator
346
+ select.onchange({ target: select }); // triggers dataChanged event
347
+ }
285
348
  /**
286
349
  * Appends an option to a select element
287
350
  *
@@ -512,7 +575,7 @@ const TttxForm = class {
512
575
  * @param {HTMLDivElement} errorBubble - The error bubble element to display error messages in.
513
576
  * @return {HTMLLabelElement} - The new label element.
514
577
  */
515
- createLabel(formProperties, input, overlay, errorBubble) {
578
+ createLabel(formProperties, input, overlay = null, errorBubble) {
516
579
  var _a;
517
580
  const outerContainer = document.createElement('div');
518
581
  let outerContainerClassName = 'outer-container inputBlock';
@@ -563,7 +626,7 @@ const TttxForm = class {
563
626
  */
564
627
  createRadio(formKey, formProperties) {
565
628
  var _a, _b;
566
- const fragment = new DocumentFragment();
629
+ const fragment = document.createDocumentFragment();
567
630
  for (const optionProperties of formProperties.options) {
568
631
  // Create a new <input> element with the specified name and type
569
632
  const input = document.createElement('input');
@@ -593,8 +656,9 @@ const TttxForm = class {
593
656
  populateFormFromSchema() {
594
657
  var _a;
595
658
  // If there is no form schema, return early
596
- if (!this._formSchema)
659
+ if (!this._formSchema) {
597
660
  return;
661
+ }
598
662
  // Get the properties of the form schema and their keys
599
663
  const properties = this._formSchema.properties;
600
664
  const propertyKeys = Object.keys(properties);
@@ -662,129 +726,97 @@ const TttxForm = class {
662
726
  const properties = this._formSchema.properties;
663
727
  const propertyKeys = Object.keys(properties);
664
728
  for (const formKey of propertyKeys) {
665
- const formItemsByKey = formItems.querySelectorAll(`[name^=${formKey}]`);
666
- for (const formInput of formItemsByKey) {
667
- // Bind events to form input elements
668
- formInput.oninvalid = this.validityCheckWrapper.bind(this);
669
- formInput.onblur = this.validityCheckWrapper.bind(this);
670
- formInput.onkeyup = this.fieldChanged.bind(this);
671
- formInput.onchange = this.fieldChanged.bind(this);
672
- if (properties[formKey].form.type === 'select' && formInput.classList.contains('placeholder')) {
673
- formInput.addEventListener('change', () => {
674
- formInput.classList.remove('placeholder');
675
- });
676
- }
677
- if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-with')) {
678
- formInput.oninvalid = this.endDateComparisonValidator.bind(this);
679
- formInput.onblur = this.endDateComparisonValidator.bind(this);
680
- }
681
- if (properties[formKey].form.type === 'startenddate' && formInput.type === 'time') {
682
- formInput.oninvalid = this.startEndTimeComparitor.bind(this);
683
- formInput.onblur = this.startEndTimeComparitor.bind(this);
684
- }
685
- if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-to')) {
686
- formInput.oninvalid = this.startDateComparisonValidator.bind(this);
687
- formInput.onblur = this.startDateComparisonValidator.bind(this);
688
- }
689
- }
729
+ this.applyValidationFunctionsToFormElement(formItems, formKey, properties);
690
730
  }
691
731
  // populate with existing form data if available
692
- if (this._data && Object.keys(this._data).length > 0) {
693
- const dataKeys = Object.keys(this._data);
694
- for (const key of dataKeys) {
695
- const formItemsByKey = formItems.querySelectorAll(`[name=${key}]`);
696
- for (const formItem of formItemsByKey) {
697
- switch (formItem.type) {
698
- case 'checkbox':
699
- if (this._data[key] === 'on') {
700
- formItem.checked = true;
701
- }
702
- break;
703
- case 'radio':
704
- if (formItem.value === this._data[key]) {
705
- formItem.checked = true;
706
- }
707
- break;
708
- case 'select':
709
- case 'select-one':
710
- formItems.querySelector(`[name=overlay-${key}]`).selectedValue = this._data[key];
711
- formItem.value = this._data[key];
712
- break;
713
- default:
714
- formItem.value = this._data[key];
715
- }
716
- }
717
- }
732
+ if ((this._data && Object.keys(this._data).length > 0)) {
733
+ this.populateFormWithExistingData(formItems);
718
734
  }
719
735
  // Append the cloned form elements to the fieldset
720
736
  this.fieldset.replaceChildren(formItems);
721
737
  }
722
- startEndTimeComparitor(event) {
723
- var _a, _b;
724
- const target = event.target;
725
- const formKey = target.getAttribute('data-formkey');
726
- const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[data-formkey=${formKey}]`));
727
- if (timeFields.length === 4) {
728
- const startTime = timeFields.find(t => t.name.endsWith('starttime'));
729
- const endTime = timeFields.find(t => t.name.endsWith('endtime'));
730
- const startDate = timeFields.find(t => t.name.endsWith('startdate'));
731
- const endDate = timeFields.find(t => t.name.endsWith('enddate'));
732
- 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())) {
733
- setErrorState(endTime, true, 'End time cannot be the same or before the start time');
734
- if (target.name.endsWith('starttime')) {
735
- this.validityCheckWrapper(event);
736
- }
738
+ /**
739
+ * Assign validation events to a given form item
740
+ * @param formItems The document fragment template of form items to be rendered
741
+ * @param formKey The key of the form item to bind events too
742
+ * @param properties The form item's properties, such as type and name
743
+ */
744
+ applyValidationFunctionsToFormElement(formItems, formKey, properties) {
745
+ const formItemsByKey = formItems.querySelectorAll(`[name^=${formKey}]`);
746
+ for (const formInput of formItemsByKey) {
747
+ // Bind events to form input elements
748
+ formInput.oninvalid = this.validityCheckWrapper.bind(this);
749
+ formInput.onblur = this.validityCheckWrapper.bind(this);
750
+ formInput.onkeyup = this.fieldChanged.bind(this);
751
+ formInput.onchange = this.fieldChanged.bind(this);
752
+ if (properties[formKey].form.type === 'select' && formInput.classList.contains('placeholder')) {
753
+ formInput.addEventListener('change', this.selectRemovePlaceholderCallback.bind(formInput));
737
754
  }
738
- else {
739
- // clear any end time comparitor errors and perform the standard validity check on the event
740
- endTime.setCustomValidity('');
741
- setErrorState(endTime, false, null);
742
- this.validityCheckWrapper(event);
755
+ if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-with')) {
756
+ formInput.oninvalid = endDateComparisonValidator.bind(this);
757
+ formInput.onblur = endDateComparisonValidator.bind(this);
758
+ }
759
+ if (properties[formKey].form.type === 'startenddate' && formInput.type === 'time') {
760
+ formInput.oninvalid = startEndTimeComparator.bind(this);
761
+ formInput.onblur = startEndTimeComparator.bind(this);
762
+ }
763
+ if (properties[formKey].form.type === 'startenddate' && formInput.hasAttribute('data-compare-to')) {
764
+ formInput.oninvalid = startDateComparisonValidator.bind(this);
765
+ formInput.onblur = startDateComparisonValidator.bind(this);
743
766
  }
744
767
  }
745
768
  }
746
- clearTimeComparitor(event) {
747
- const target = event.target;
748
- const formKey = target.getAttribute('data-formkey');
749
- const timeFields = Array.from(target.parentElement.parentElement.parentElement.querySelectorAll(`[type=time][data-formkey=${formKey}]`));
750
- if (timeFields.length) {
751
- const endTime = timeFields.find(t => t.name.endsWith('endtime'));
752
- endTime.setCustomValidity('');
753
- setErrorState(endTime, false, null);
769
+ /**
770
+ * If data exists, set form input values before rendering
771
+ * @param formItems The document fragment template of form items to be rendered
772
+ */
773
+ populateFormWithExistingData(formItems) {
774
+ const dataKeys = Object.keys(this._data);
775
+ for (const key of dataKeys) {
776
+ const formItemsByKey = formItems.querySelectorAll(`[name=${key}]`);
777
+ for (const formItem of formItemsByKey) {
778
+ switch (formItem.type) {
779
+ case 'checkbox':
780
+ if (this._data[key] === 'on') {
781
+ formItem.checked = true;
782
+ }
783
+ break;
784
+ case 'radio':
785
+ if (formItem.value === this._data[key]) {
786
+ formItem.checked = true;
787
+ }
788
+ break;
789
+ case 'select':
790
+ case 'select-one':
791
+ formItems.querySelector(`[name=overlay-${key}]`)['selectedValue'] = this._data[key];
792
+ formItem.value = this._data[key];
793
+ break;
794
+ default:
795
+ formItem.value = this._data[key];
796
+ }
797
+ }
754
798
  }
755
799
  }
756
- startDateComparisonValidator(event) {
757
- const startDate = event.target;
758
- const compareToName = startDate.getAttribute('data-compare-to');
759
- const endDate = startDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareToName}]`);
760
- this.endDateComparisonValidator({ target: endDate }, true);
761
- this.validityCheckWrapper(event);
762
- }
763
- endDateComparisonValidator(event, triggeredByStartDate = false) {
764
- var _a, _b, _c, _d;
765
- const endDate = event.target;
766
- if (!endDate.value && triggeredByStartDate)
767
- return;
768
- const compareWithName = endDate.getAttribute('data-compare-with');
769
- const startDate = endDate.parentElement.parentElement.parentElement.querySelector(`[name=${compareWithName}]`);
770
- if (((_a = endDate.valueAsDate) === null || _a === void 0 ? void 0 : _a.valueOf()) < ((_b = startDate.valueAsDate) === null || _b === void 0 ? void 0 : _b.valueOf())) {
771
- endDate.setCustomValidity(endDate.getAttribute('data-compare'));
772
- setErrorState(endDate, true, endDate.getAttribute('data-compare'));
773
- }
774
- else if (((_c = endDate.valueAsDate) === null || _c === void 0 ? void 0 : _c.valueOf()) === ((_d = startDate.valueAsDate) === null || _d === void 0 ? void 0 : _d.valueOf())) {
775
- endDate.setCustomValidity('');
776
- this.validityCheckWrapper(event);
777
- this.startEndTimeComparitor(event);
778
- }
779
- else {
780
- this.clearTimeComparitor(event);
781
- this.validityCheckWrapper(event);
782
- }
800
+ /**
801
+ * Remove the placeholder class on the bound THIS select element
802
+ */
803
+ selectRemovePlaceholderCallback() {
804
+ const select = this;
805
+ select.classList.remove('placeholder');
783
806
  }
807
+ /**
808
+ * A wrapper around validity check and set error state
809
+ */
784
810
  validityCheckWrapper(event) {
785
811
  const { target, hasError, errorMessage } = validityCheck(event);
786
812
  setErrorState(target, hasError, errorMessage);
787
813
  }
814
+ assignFieldsetReference(el) {
815
+ this.fieldset = el;
816
+ }
817
+ assignButtonReference(el) {
818
+ this.submitButton = el;
819
+ }
788
820
  /**
789
821
  * Renders the component's template as a form element with a fieldset container. The form's
790
822
  * "onSubmit" event is bound to the "doSubmit" function, which handles the form submission
@@ -793,7 +825,7 @@ const TttxForm = class {
793
825
  * later on.
794
826
  */
795
827
  render() {
796
- return (h(Host, null, h("form", { ref: el => (this.form = el), onSubmit: this.doSubmit.bind(this) }, h("fieldset", { ref: el => (this.fieldset = el) }), h("input", { type: "submit", ref: el => (this.submitButton = el), style: { display: 'none' } }))));
828
+ return (h(Host, null, h("form", { onSubmit: this.doSubmit.bind(this) }, h("fieldset", { ref: this.assignFieldsetReference.bind(this) }), h("input", { type: "submit", ref: this.assignButtonReference.bind(this), style: { display: 'none' } }))));
797
829
  }
798
830
  static get watchers() { return {
799
831
  "formschema": ["onFormSchemaChange"],
@@ -802,4 +834,4 @@ const TttxForm = class {
802
834
  };
803
835
  TttxForm.style = tttxFormCss;
804
836
 
805
- export { TttxForm as tttx_form_1_2_0 };
837
+ export { TttxForm as tttx_form_1_3_0 };
@@ -27,4 +27,4 @@ const TttxIcon = class {
27
27
  };
28
28
  TttxIcon.style = tttxIconCss;
29
29
 
30
- export { TttxIcon as tttx_icon_1_2_0 };
30
+ export { TttxIcon as tttx_icon_1_3_0 };
@@ -65,4 +65,4 @@ const TttxKeyvalueBlock = class {
65
65
  };
66
66
  TttxKeyvalueBlock.style = tttxKeyvalueBlockCss;
67
67
 
68
- export { TttxKeyvalueBlock as tttx_keyvalue_block_1_2_0 };
68
+ export { TttxKeyvalueBlock as tttx_keyvalue_block_1_3_0 };
@@ -19,4 +19,4 @@ const TttxLoadingSpinner = class {
19
19
  };
20
20
  TttxLoadingSpinner.style = tttxLoadingSpinnerCss;
21
21
 
22
- export { TttxLoadingSpinner as tttx_loading_spinner_1_2_0 };
22
+ export { TttxLoadingSpinner as tttx_loading_spinner_1_3_0 };
@@ -84,11 +84,11 @@ const TttxMultiselectBox = class {
84
84
  const sanitisedHTML = purify.sanitize(option.html, domSanitiserOptions);
85
85
  // This is tested in e2e tests
86
86
  /* istanbul ignore next */
87
- return (h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, h("tttx-icon_1_2_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), h("div", { innerHTML: sanitisedHTML })));
87
+ return (h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, h("tttx-icon_1_3_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), h("div", { innerHTML: sanitisedHTML })));
88
88
  }
89
89
  // This is tested in e2e tests
90
90
  /* istanbul ignore next */
91
- return (h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, h("tttx-icon_1_2_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), h("div", { class: "plaintext-option" }, option.label)));
91
+ return (h("div", { class: `dropdown-option ${hideOption ? 'hidden' : ''} ${option.selected ? 'selected' : ''}`, onClick: this.onItemSelected.bind(this, option), key: option.label }, h("tttx-icon_1_3_0", { icon: checkboxIcon, color: checkboxColor, class: 'checkbox-icon' }), h("div", { class: "plaintext-option" }, option.label)));
92
92
  }
93
93
  // This is tested in e2e tests
94
94
  /* istanbul ignore next */
@@ -120,11 +120,11 @@ const TttxMultiselectBox = class {
120
120
  if (!this.unsavedSelectedItems)
121
121
  this.unsavedSelectedItems = this.safelyCloneArray(this._optionsData);
122
122
  const chevronIcon = this.open ? 'expand_less' : 'expand_more';
123
- return (h(Host, { class: this.inline ? 'inline' : 'block' }, this.label && h("div", { class: "label" }, this.label), h("div", { tabindex: "0", class: "dropdown-container" }, h("div", { class: "dropdown-selector", onClick: this.onDropdownClicked.bind(this) }, this.dropdownSelectorContent(), h("div", { class: "dropdown-selector-chevron" }, h("tttx-icon_1_2_0", { icon: chevronIcon, color: "black" }))), this.open && (h("div", { class: "dropdown-body-container" }, h("div", { class: "dropdown-body", style: Object.assign({}, this.bodyOffset) }, this.searchEnabled &&
123
+ return (h(Host, { class: this.inline ? 'inline' : 'block' }, this.label && h("div", { class: "label" }, this.label), h("div", { tabindex: "0", class: "dropdown-container" }, h("div", { class: "dropdown-selector", onClick: this.onDropdownClicked.bind(this) }, this.dropdownSelectorContent(), h("div", { class: "dropdown-selector-chevron" }, h("tttx-icon_1_3_0", { icon: chevronIcon, color: "black" }))), this.open && (h("div", { class: "dropdown-body-container" }, h("div", { class: "dropdown-body", style: Object.assign({}, this.bodyOffset) }, this.searchEnabled &&
124
124
  /* istanbul ignore next */
125
- h("div", { class: "searchbox" }, 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 })), h("div", { class: "dropdown-options-list" }, this.unsavedSelectedItems.map((option) => {
125
+ h("div", { class: "searchbox" }, 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 })), h("div", { class: "dropdown-options-list" }, this.unsavedSelectedItems.map((option) => {
126
126
  return this.dropdownOption(option);
127
- })), h("div", { class: 'footer' }, h("tttx-button_1_2_0", { design: "primary", onClick: this.applyChanges.bind(this) }, "Apply"), h("tttx-button_1_2_0", { onClick: this.onCancel.bind(this) }, "Cancel"))))))));
127
+ })), h("div", { class: 'footer' }, h("tttx-button_1_3_0", { design: "primary", onClick: this.applyChanges.bind(this) }, "Apply"), h("tttx-button_1_3_0", { onClick: this.onCancel.bind(this) }, "Cancel"))))))));
128
128
  }
129
129
  get el() { return getElement(this); }
130
130
  static get watchers() { return {
@@ -133,4 +133,4 @@ const TttxMultiselectBox = class {
133
133
  };
134
134
  TttxMultiselectBox.style = tttxMultiselectBoxCss;
135
135
 
136
- export { TttxMultiselectBox as tttx_multiselect_box_1_2_0 };
136
+ export { TttxMultiselectBox as tttx_multiselect_box_1_3_0 };
@@ -1,6 +1,6 @@
1
1
  import { r as registerInstance, h, H as Host } from './index-88bd2f60.js';
2
2
 
3
- 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}";
3
+ 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}";
4
4
 
5
5
  const TttxPercentageBar = class {
6
6
  constructor(hostRef) {
@@ -58,4 +58,4 @@ const TttxPercentageBar = class {
58
58
  };
59
59
  TttxPercentageBar.style = tttxPercentageBarCss;
60
60
 
61
- export { TttxPercentageBar as tttx_percentage_bar_1_2_0 };
61
+ export { TttxPercentageBar as tttx_percentage_bar_1_3_0 };
@@ -36,4 +36,4 @@ const TttxQrCode = class {
36
36
  };
37
37
  TttxQrCode.style = tttxQrcodeCss;
38
38
 
39
- export { TttxQrCode as tttx_qrcode_1_2_0 };
39
+ export { TttxQrCode as tttx_qrcode_1_3_0 };
@@ -61,7 +61,7 @@ const TttxSelectBox = class {
61
61
  let title;
62
62
  let subtitle;
63
63
  const chevronIcon = this.open ? 'expand_less' : 'expand_more';
64
- const icon = h("tttx-icon_1_2_0", { icon: chevronIcon, color: "black" });
64
+ const icon = h("tttx-icon_1_3_0", { icon: chevronIcon, color: "black" });
65
65
  let chevron = h("div", { class: 'dropdown-selector-chevron' }, icon);
66
66
  if (!this.selectedItem) {
67
67
  title = h("div", { class: "placeholder" }, this.placeholder);
@@ -120,7 +120,7 @@ const TttxSelectBox = class {
120
120
  return;
121
121
  return (h(Host, { class: this.inline ? 'inline' : 'block' }, this.label && h("div", { class: "label" }, this.label), h("div", { tabindex: "0", class: "dropdown-container" }, h("div", { class: "dropdown-selector", ref: (el) => this.dropdownSelector = el, onClick: this.onDropdownClicked.bind(this) }, this.dropdownSelectorContent()), this.open && (h("div", { class: "dropdown-body-container" }, h("div", { class: "dropdown-body", style: Object.assign({ width: `${this.dropdownSelector.offsetWidth}px` }, this.bodyOffset) }, this.searchEnabled &&
122
122
  /* istanbul ignore next */
123
- h("div", { class: "searchbox" }, h("tttx-standalone-input_1_2_0", { type: "text", label: "", required: true, showerrorbubble: false, iconleft: 'search', onInput: this.handleSearchInput.bind(this) })), h("div", { class: "dropdown-options-list" }, this._optionsData.map((option) => {
123
+ h("div", { class: "searchbox" }, h("tttx-standalone-input_1_3_0", { type: "text", label: "", required: true, showerrorbubble: false, iconleft: 'search', onInput: this.handleSearchInput.bind(this) })), h("div", { class: "dropdown-options-list" }, this._optionsData.map((option) => {
124
124
  return this.dropdownOption(option);
125
125
  }))))))));
126
126
  }
@@ -131,4 +131,4 @@ const TttxSelectBox = class {
131
131
  };
132
132
  TttxSelectBox.style = tttxSelectBoxCss;
133
133
 
134
- export { TttxSelectBox as tttx_select_box_1_2_0 };
134
+ export { TttxSelectBox as tttx_select_box_1_3_0 };
@@ -0,0 +1,90 @@
1
+ import { r as registerInstance, c as createEvent, h, H as Host } from './index-88bd2f60.js';
2
+
3
+ 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}";
4
+
5
+ const TttxInput = class {
6
+ constructor(hostRef) {
7
+ registerInstance(this, hostRef);
8
+ this.valueChanged = createEvent(this, "valueChanged", 7);
9
+ this.focusChanged = createEvent(this, "focusChanged", 7);
10
+ this.blurChanged = createEvent(this, "blurChanged", 7);
11
+ this.invalidChanged = createEvent(this, "invalidChanged", 7);
12
+ this.inputIconClick = createEvent(this, "inputIconClick", 7);
13
+ this.leftIconClick = createEvent(this, "leftIconClick", 7);
14
+ this.rightIconClick = createEvent(this, "rightIconClick", 7);
15
+ this.label = undefined;
16
+ this.secondarylabel = undefined;
17
+ this.showerrormsg = undefined;
18
+ this.showerrorbubble = true;
19
+ this.errormsg = undefined;
20
+ this.iconleft = undefined;
21
+ this.iconleftcolor = 'grey';
22
+ this.iconright = undefined;
23
+ this.iconrightcolor = 'grey';
24
+ this.inputicon = undefined;
25
+ this.inputiconcolor = 'grey';
26
+ this.inline = undefined;
27
+ this.inputautocapitalize = undefined;
28
+ this.inputautofocus = undefined;
29
+ this.inputkeyhint = undefined;
30
+ this.inputindex = undefined;
31
+ this.inputtitle = undefined;
32
+ this.autocomplete = undefined;
33
+ this.checked = undefined;
34
+ this.disabled = undefined;
35
+ this.max = undefined;
36
+ this.maxlength = undefined;
37
+ this.min = undefined;
38
+ this.minlength = undefined;
39
+ this.name = undefined;
40
+ this.pattern = undefined;
41
+ this.placeholder = undefined;
42
+ this.readonly = undefined;
43
+ this.required = undefined;
44
+ this.step = undefined;
45
+ this.type = 'text';
46
+ this.value = undefined;
47
+ }
48
+ handleChange(event) {
49
+ const target = event.target;
50
+ this.value = target.value;
51
+ this.valueChanged.emit(target.value);
52
+ }
53
+ handleFocus(event) {
54
+ const target = event.target;
55
+ this.focusChanged.emit(target.value);
56
+ }
57
+ handleBlur(event) {
58
+ const target = event.target;
59
+ this.blurChanged.emit(target.value);
60
+ }
61
+ handleInvalid(event) {
62
+ event.preventDefault();
63
+ const target = event.target;
64
+ this.invalidChanged.emit(target.value);
65
+ }
66
+ handleInputIconClick(event) {
67
+ event.preventDefault();
68
+ this.inputIconClick.emit();
69
+ }
70
+ handleLeftIconClick(event) {
71
+ event.preventDefault();
72
+ this.leftIconClick.emit();
73
+ }
74
+ handleRightIconClick(event) {
75
+ event.preventDefault();
76
+ this.rightIconClick.emit();
77
+ }
78
+ render() {
79
+ const classNames = [
80
+ this.showerrormsg ? 'invalid' : '',
81
+ this.inputicon ? 'has-input-icon' : '',
82
+ this.iconleft ? 'has-left-icon' : '',
83
+ this.iconright ? 'has-right-icon' : '',
84
+ ].join(' ');
85
+ return (h(Host, null, h("label", null, this.label, !this.required ? h("span", { class: "optional" }, "\u00A0(optional)") : '', h("div", { class: ['outer-container', this.inline ? 'inputInline' : 'inputBlock'].join(' ') }, 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) && (h("span", { class: "left-icons" }, this.inputicon && (h("tttx-icon_1_3_0", { class: "input-icon", icon: this.inputicon, color: this.inputiconcolor, onClick: this.handleInputIconClick.bind(this) })), this.iconleft && (h("tttx-icon_1_3_0", { class: "left-icon", icon: this.iconleft, color: this.iconleftcolor, onClick: this.handleLeftIconClick.bind(this) })))), this.iconright && (h("span", { class: "right-icons" }, h("tttx-icon_1_3_0", { class: "right-icon", icon: this.iconright, color: this.iconrightcolor, onClick: this.handleRightIconClick.bind(this) })))), this.secondarylabel && h("span", { class: "secondarylabel" }, this.secondarylabel), this.showerrorbubble && (h("span", { class: ['errorBubble', this.showerrormsg && this.errormsg ? 'visible' : ''].join(' ') }, h("span", { class: "material-symbols-rounded" }, "warning"), " ", this.errormsg)))));
86
+ }
87
+ };
88
+ TttxInput.style = tttxStandaloneInputCss;
89
+
90
+ export { TttxInput as tttx_standalone_input_1_3_0 };