udp-stencil-component-library 1.0.2 → 1.0.3

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 (638) hide show
  1. package/dist/cjs/add-map-feature-popup_4.cjs.entry.js +11 -11
  2. package/dist/cjs/advanced-search_50.cjs.entry.js +109 -41
  3. package/dist/cjs/advanced-search_50.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ag-grid-base_2.cjs.entry.js +2 -2
  5. package/dist/cjs/api-method-grid.cjs.entry.js +1 -1
  6. package/dist/cjs/check-box.cjs.entry.js +2 -2
  7. package/dist/cjs/chip-section.cjs.entry.js +2 -2
  8. package/dist/cjs/client-side-grid.cjs.entry.js +1 -1
  9. package/dist/cjs/color-preview.cjs.entry.js +1 -1
  10. package/dist/cjs/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.cjs.js.map +1 -1
  11. package/dist/cjs/date-time-renderer_5.cjs.entry.js +17 -16
  12. package/dist/cjs/date-time-renderer_5.cjs.entry.js.map +1 -1
  13. package/dist/cjs/enums-CA1UjPVU.js +25 -0
  14. package/dist/cjs/enums-CA1UjPVU.js.map +1 -0
  15. package/dist/cjs/feature-details-card_2.cjs.entry.js +5 -5
  16. package/dist/cjs/file-upload.selectable-list.stencil-field.entry.cjs.js.map +1 -1
  17. package/dist/cjs/file-upload_3.cjs.entry.js +73 -29
  18. package/dist/cjs/file-upload_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/index-Bu1pSYrV.js +8 -8
  20. package/dist/cjs/inputs-example.cjs.entry.js +2 -2
  21. package/dist/cjs/inputs-example.cjs.entry.js.map +1 -1
  22. package/dist/cjs/inputs-example.entry.cjs.js.map +1 -1
  23. package/dist/cjs/loader.cjs.js +1 -1
  24. package/dist/cjs/map-component_2.cjs.entry.js +2 -2
  25. package/dist/cjs/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.cjs.js.map +1 -1
  26. package/dist/cjs/numeric-field_5.cjs.entry.js +194 -19
  27. package/dist/cjs/numeric-field_5.cjs.entry.js.map +1 -1
  28. package/dist/cjs/page-renderer.cjs.entry.js +1 -1
  29. package/dist/cjs/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.cjs.js.map +1 -1
  30. package/dist/cjs/question-configs-renderer_5.cjs.entry.js +17 -4
  31. package/dist/cjs/question-configs-renderer_5.cjs.entry.js.map +1 -1
  32. package/dist/cjs/resource-timeline-calendar.cjs.entry.js +1 -1
  33. package/dist/cjs/resource-timeline-primary-bar.cjs.entry.js +1 -1
  34. package/dist/cjs/server-side-grid.cjs.entry.js +1 -1
  35. package/dist/cjs/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.cjs.js.map +1 -0
  36. package/dist/cjs/{signature-input_4.cjs.entry.js → signature-input_6.cjs.entry.js} +359 -157
  37. package/dist/cjs/signature-input_6.cjs.entry.js.map +1 -0
  38. package/dist/cjs/stencil-library.cjs.js +1 -1
  39. package/dist/cjs/udp-container-query-grid-item.cjs.entry.js +1 -1
  40. package/dist/cjs/udp-container-query-grid.cjs.entry.js +1 -1
  41. package/dist/cjs/udp-container-query.cjs.entry.js +2 -2
  42. package/dist/cjs/udp-container.cjs.entry.js +2 -2
  43. package/dist/cjs/udp-drive-utils-BOyI3h7K.js +180 -0
  44. package/dist/cjs/udp-drive-utils-BOyI3h7K.js.map +1 -0
  45. package/dist/cjs/udp-forms-builder.cjs.entry.js +133 -152
  46. package/dist/cjs/udp-forms-builder.cjs.entry.js.map +1 -1
  47. package/dist/cjs/udp-forms-builder.entry.cjs.js.map +1 -1
  48. package/dist/cjs/udp-forms-list-card_2.cjs.entry.js +5 -5
  49. package/dist/cjs/udp-forms-list.cjs.entry.js +1 -1
  50. package/dist/cjs/udp-forms-renderer.cjs.entry.js +185 -175
  51. package/dist/cjs/udp-forms-renderer.cjs.entry.js.map +1 -1
  52. package/dist/cjs/udp-forms-renderer.entry.cjs.js.map +1 -1
  53. package/dist/cjs/udp-forms-ui.cjs.entry.js +113 -82
  54. package/dist/cjs/udp-forms-ui.cjs.entry.js.map +1 -1
  55. package/dist/cjs/udp-forms-ui.entry.cjs.js.map +1 -1
  56. package/dist/cjs/udp-map.cjs.entry.js +3 -3
  57. package/dist/cjs/udp-page.cjs.entry.js +1 -1
  58. package/dist/cjs/udp-split-screen.cjs.entry.js +1 -1
  59. package/dist/cjs/udp-stepper-demo.cjs.entry.js +1 -1
  60. package/dist/cjs/udp-vertical-spacer.cjs.entry.js +1 -1
  61. package/dist/cjs/utils-CdiEmuDf.js +34 -0
  62. package/dist/cjs/utils-CdiEmuDf.js.map +1 -0
  63. package/dist/collection/collection-manifest.json +2 -0
  64. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js +22 -0
  65. package/dist/collection/components/my-component/UI/buttons/icon-button/stencil-icon-button.js.map +1 -1
  66. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.css +269 -0
  67. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js +392 -0
  68. package/dist/collection/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.js.map +1 -0
  69. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js +38 -14
  70. package/dist/collection/components/my-component/UI/forms/form/stencil-field.js.map +1 -1
  71. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js +81 -28
  72. package/dist/collection/components/my-component/UI/forms/form/stencil-form.js.map +1 -1
  73. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js +1 -0
  74. package/dist/collection/components/my-component/UI/forms/udp-forms/mockData.js.map +1 -1
  75. package/dist/collection/components/my-component/UI/forms/udp-forms/types.js.map +1 -1
  76. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js +13 -17
  77. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question-specific-configs-renderer.js.map +1 -1
  78. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js +4 -3
  79. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/date-time-renderer.js.map +1 -1
  80. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.css +0 -1
  81. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js +16 -3
  82. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.js.map +1 -1
  83. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/text-input-renderer.js +2 -2
  84. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js +135 -159
  85. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.js.map +1 -1
  86. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list-card.js +5 -5
  87. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-list/udp-forms-list.js +1 -1
  88. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js +1 -5
  89. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PrivateFormHandler.js.map +1 -1
  90. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js +1 -0
  91. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/form-handler/PublicFormHandler.js.map +1 -1
  92. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js +188 -172
  93. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.js.map +1 -1
  94. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.css +175 -0
  95. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js +211 -88
  96. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.js.map +1 -1
  97. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.css +166 -0
  98. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js +215 -0
  99. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.js.map +1 -0
  100. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js +5 -5
  101. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-question/udp-question.js.map +1 -1
  102. package/dist/collection/components/my-component/UI/grid/ag-table/ag-table.js +1 -1
  103. package/dist/collection/components/my-component/UI/grid/ambient-template-grid/ambient-template-grid.js +15 -15
  104. package/dist/collection/components/my-component/UI/grid/grid-primary-bar/grid-primary-bar.js +2 -2
  105. package/dist/collection/components/my-component/UI/grid/hotlists/udp-hotlist-form/udp-hotlist-form.js +1 -1
  106. package/dist/collection/components/my-component/UI/grid/new-grid/ag-grid-base.js +1 -1
  107. package/dist/collection/components/my-component/UI/grid/new-grid/api-method-grid.js +1 -1
  108. package/dist/collection/components/my-component/UI/grid/new-grid/client-side-grid.js +1 -1
  109. package/dist/collection/components/my-component/UI/grid/new-grid/grid-header.js +1 -1
  110. package/dist/collection/components/my-component/UI/grid/new-grid/server-side-grid.js +1 -1
  111. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-calendar.js +1 -1
  112. package/dist/collection/components/my-component/UI/grid/resource-timeline-calendar/resource-timeline-primary-bar.js +1 -1
  113. package/dist/collection/components/my-component/UI/inputs/checkbox/check-box.js +2 -2
  114. package/dist/collection/components/my-component/UI/inputs/date-selector/udp-date-selector.js +3 -3
  115. package/dist/collection/components/my-component/UI/inputs/date-time-selector/udp-datetime-selector.js +3 -3
  116. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js +35 -22
  117. package/dist/collection/components/my-component/UI/inputs/file-upload/file-upload.js.map +1 -1
  118. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js +202 -10
  119. package/dist/collection/components/my-component/UI/inputs/file-upload/udp-drive-utils.js.map +1 -1
  120. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js +6 -6
  121. package/dist/collection/components/my-component/UI/inputs/numeric-field/numeric-field.js.map +1 -1
  122. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js +52 -22
  123. package/dist/collection/components/my-component/UI/inputs/signature-input/signature-input.js.map +1 -1
  124. package/dist/collection/components/my-component/UI/inputs/tally/tally.js +2 -2
  125. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js +99 -3
  126. package/dist/collection/components/my-component/UI/inputs/text-area/text-area.js.map +1 -1
  127. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js +99 -3
  128. package/dist/collection/components/my-component/UI/inputs/text-field/text-field.js.map +1 -1
  129. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js +132 -6
  130. package/dist/collection/components/my-component/UI/inputs/time-selector/udp-time-selector.js.map +1 -1
  131. package/dist/collection/components/my-component/UI/inputs/toggle/stencil-toggle.js +4 -4
  132. package/dist/collection/components/my-component/UI/inputs/udp-selector/udp-selector.js +4 -4
  133. package/dist/collection/components/my-component/UI/layout/udp-container/udp-container.js +2 -2
  134. package/dist/collection/components/my-component/UI/layout/udp-container-query/udp-container-query.js +2 -2
  135. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid/udp-container-query-grid.js +1 -1
  136. package/dist/collection/components/my-component/UI/layout/udp-container-query-grid-item/udp-container-query-grid-item.js +1 -1
  137. package/dist/collection/components/my-component/UI/layout/udp-page/udp-page.js +1 -1
  138. package/dist/collection/components/my-component/UI/layout/udp-split-screen/udp-split-screen.js +1 -1
  139. package/dist/collection/components/my-component/UI/layout/udp-vertical-spacer.js +1 -1
  140. package/dist/collection/components/my-component/UI/loaders/udp-grid-loader/udp-grid-loader.js +2 -2
  141. package/dist/collection/components/my-component/UI/loaders/udp-linear-loader/udp-linear-loader.js +1 -1
  142. package/dist/collection/components/my-component/UI/loaders/udp-skeleton-loading.js +1 -1
  143. package/dist/collection/components/my-component/UI/map/udp-map/map-component.js +1 -1
  144. package/dist/collection/components/my-component/UI/map/udp-map/popups/add-map-feature-popup.js +3 -3
  145. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-card/feature-details-card.js +4 -4
  146. package/dist/collection/components/my-component/UI/map/udp-map/popups/feature-details-popup.js +1 -1
  147. package/dist/collection/components/my-component/UI/map/udp-map/popups/select-layer-popup.js +1 -1
  148. package/dist/collection/components/my-component/UI/map/udp-map/popups/split-line-popup.js +1 -1
  149. package/dist/collection/components/my-component/UI/map/udp-map/toolbar/map-toolbar.js +6 -6
  150. package/dist/collection/components/my-component/UI/map/udp-map/udp-map-toolbar.js +1 -1
  151. package/dist/collection/components/my-component/UI/map/udp-map/udp-map.js +3 -3
  152. package/dist/collection/components/my-component/UI/menu/menu-item/udp-menu-item.js +2 -2
  153. package/dist/collection/components/my-component/UI/stepper/udp-stepper-demo.js +1 -1
  154. package/dist/collection/components/my-component/UI/tabs/tab/tabs/udp-tabs.js +1 -1
  155. package/dist/collection/components/my-component/UI/tabs/tab/udp-tab.js +1 -1
  156. package/dist/collection/components/my-component/UI/toolbars/app-bar/app-bar.js +1 -1
  157. package/dist/collection/components/my-component/demo/ambient-demo-container.js +1 -1
  158. package/dist/collection/components/test-component/inputs-example/inputs-example.js +2 -2
  159. package/dist/collection/components/test-component/inputs-example/inputs-example.js.map +1 -1
  160. package/dist/collection/page-renderer/page-renderer.js +1 -1
  161. package/dist/collection/theme/color-preview/color-preview.js +1 -1
  162. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/chip-section/chip-section.js +2 -2
  163. package/dist/collection/udp-utilities/layout/udp-dynamic-container-with-menu/udp-dynamic-container-with-menu.js +1 -1
  164. package/dist/components/add-map-feature-popup.js +1 -1
  165. package/dist/components/advanced-search-grouped.js +1 -1
  166. package/dist/components/advanced-search.js +1 -1
  167. package/dist/components/ag-grid-base.js +1 -1
  168. package/dist/components/ag-table.js +1 -1
  169. package/dist/components/ambient-demo-container.js +1 -1
  170. package/dist/components/ambient-template-grid.js +1 -1
  171. package/dist/components/api-method-grid.js +4 -4
  172. package/dist/components/app-bar.js +1 -1
  173. package/dist/components/chart-container.js +1 -1
  174. package/dist/components/check-box-group.js +1 -1
  175. package/dist/components/check-box.js +1 -1
  176. package/dist/components/chip-section.js +3 -3
  177. package/dist/components/client-side-grid.js +3 -3
  178. package/dist/components/color-preview.js +1 -1
  179. package/dist/components/date-time-renderer.js +1 -1
  180. package/dist/components/edit-view-form-dialog.js +1 -1
  181. package/dist/components/feature-details-card.js +1 -1
  182. package/dist/components/feature-details-popup.js +1 -1
  183. package/dist/components/file-upload-renderer.js +1 -1
  184. package/dist/components/file-upload.js +1 -1
  185. package/dist/components/grid-header.js +1 -1
  186. package/dist/components/grid-primary-bar.js +1 -1
  187. package/dist/components/inputs-example.js +15 -15
  188. package/dist/components/inputs-example.js.map +1 -1
  189. package/dist/components/list-options-renderer.js +1 -1
  190. package/dist/components/map-component.js +1 -1
  191. package/dist/components/map-toolbar.js +1 -1
  192. package/dist/components/my-component.js +26 -26
  193. package/dist/components/numeric-field.js +1 -1
  194. package/dist/components/{p-CfZR5rek.js → p-0F2I6Qvn.js} +3 -3
  195. package/dist/components/{p-CfZR5rek.js.map → p-0F2I6Qvn.js.map} +1 -1
  196. package/dist/components/{p-BbC2Itep.js → p-1CPON0Xx.js} +5 -5
  197. package/dist/components/{p-BbC2Itep.js.map → p-1CPON0Xx.js.map} +1 -1
  198. package/dist/components/{p-IlXn87Ki.js → p-1Cv4cku0.js} +4 -14
  199. package/dist/components/p-1Cv4cku0.js.map +1 -0
  200. package/dist/components/{p-CTn3c76I.js → p-1uly65Sv.js} +3 -3
  201. package/dist/components/{p-CTn3c76I.js.map → p-1uly65Sv.js.map} +1 -1
  202. package/dist/components/{p-C8cWVxBF.js → p-26jyxB7s.js} +66 -27
  203. package/dist/components/p-26jyxB7s.js.map +1 -0
  204. package/dist/components/{p-GQEOUb0c.js → p-4hWvEEZf.js} +5 -5
  205. package/dist/components/{p-GQEOUb0c.js.map → p-4hWvEEZf.js.map} +1 -1
  206. package/dist/components/{p-HrsHnWeG.js → p-6EzLtNtq.js} +6 -6
  207. package/dist/components/{p-HrsHnWeG.js.map → p-6EzLtNtq.js.map} +1 -1
  208. package/dist/components/{p-syf9yo9-.js → p-8avkq8Fj.js} +4 -4
  209. package/dist/components/{p-syf9yo9-.js.map → p-8avkq8Fj.js.map} +1 -1
  210. package/dist/components/{p-B8k9GGZB.js → p-8paOuPay.js} +4 -4
  211. package/dist/components/{p-B8k9GGZB.js.map → p-8paOuPay.js.map} +1 -1
  212. package/dist/components/{p-DntePo7I.js → p-B2mj8zmp.js} +3 -3
  213. package/dist/components/{p-DntePo7I.js.map → p-B2mj8zmp.js.map} +1 -1
  214. package/dist/components/{p-Bv1MGbhE.js → p-B3gbGwCE.js} +50 -83
  215. package/dist/components/p-B3gbGwCE.js.map +1 -0
  216. package/dist/components/{p-ves_LtSN.js → p-B6A-djr0.js} +4 -4
  217. package/dist/components/{p-ves_LtSN.js.map → p-B6A-djr0.js.map} +1 -1
  218. package/dist/components/{p-D0T6NTw2.js → p-BANMRVyZ.js} +3 -3
  219. package/dist/components/{p-D0T6NTw2.js.map → p-BANMRVyZ.js.map} +1 -1
  220. package/dist/components/{p-D-JeGky8.js → p-BB2sALAW.js} +3 -3
  221. package/dist/components/{p-D-JeGky8.js.map → p-BB2sALAW.js.map} +1 -1
  222. package/dist/components/{p-DehJN46u.js → p-BLWvjl_b.js} +6 -6
  223. package/dist/components/{p-DehJN46u.js.map → p-BLWvjl_b.js.map} +1 -1
  224. package/dist/components/{p-y6ddPVSK.js → p-BO3Kzy6x.js} +6 -6
  225. package/dist/components/{p-y6ddPVSK.js.map → p-BO3Kzy6x.js.map} +1 -1
  226. package/dist/components/p-BY5RQ-T1.js +16 -0
  227. package/dist/components/p-BY5RQ-T1.js.map +1 -0
  228. package/dist/components/{p-ClToknIK.js → p-BbOHuqrJ.js} +5 -5
  229. package/dist/components/{p-ClToknIK.js.map → p-BbOHuqrJ.js.map} +1 -1
  230. package/dist/components/{p-CJsnV8uM.js → p-BfT3KUJC.js} +4 -4
  231. package/dist/components/{p-CJsnV8uM.js.map → p-BfT3KUJC.js.map} +1 -1
  232. package/dist/components/{p-BdWgc1UD.js → p-Bi8lqIP-.js} +8 -7
  233. package/dist/components/p-Bi8lqIP-.js.map +1 -0
  234. package/dist/components/{p-DNxY-i6k.js → p-BpD1NQKC.js} +5 -5
  235. package/dist/components/{p-DNxY-i6k.js.map → p-BpD1NQKC.js.map} +1 -1
  236. package/dist/components/p-BtOBW9_N.js +142 -0
  237. package/dist/components/p-BtOBW9_N.js.map +1 -0
  238. package/dist/components/{p-Akx0UDMW.js → p-BwPAbBUr.js} +4 -4
  239. package/dist/components/{p-Akx0UDMW.js.map → p-BwPAbBUr.js.map} +1 -1
  240. package/dist/components/p-BzH4NpB-.js +301 -0
  241. package/dist/components/p-BzH4NpB-.js.map +1 -0
  242. package/dist/components/{p-CSunqYw8.js → p-C-E6e6mL.js} +17 -17
  243. package/dist/components/{p-CSunqYw8.js.map → p-C-E6e6mL.js.map} +1 -1
  244. package/dist/components/{p-DWJbhjYR.js → p-C1K2NBql.js} +5 -5
  245. package/dist/components/{p-DWJbhjYR.js.map → p-C1K2NBql.js.map} +1 -1
  246. package/dist/components/{p-CNC3rtXm.js → p-C2j9tPIU.js} +4 -4
  247. package/dist/components/{p-CNC3rtXm.js.map → p-C2j9tPIU.js.map} +1 -1
  248. package/dist/components/p-C5aOw4Ij.js +168 -0
  249. package/dist/components/p-C5aOw4Ij.js.map +1 -0
  250. package/dist/components/{p-CJINZgmD.js → p-C6bm8Rs4.js} +17 -17
  251. package/dist/components/{p-CJINZgmD.js.map → p-C6bm8Rs4.js.map} +1 -1
  252. package/dist/components/{p-PqypuW_Q.js → p-CL4gkS6u.js} +22 -84
  253. package/dist/components/p-CL4gkS6u.js.map +1 -0
  254. package/dist/components/{p-DeS7YSzc.js → p-CMTLAuz8.js} +3 -3
  255. package/dist/components/{p-DeS7YSzc.js.map → p-CMTLAuz8.js.map} +1 -1
  256. package/dist/components/p-CWAWWTnd.js +47 -0
  257. package/dist/components/p-CWAWWTnd.js.map +1 -0
  258. package/dist/components/{p-B3-pcvgV.js → p-Cdz5sX_v.js} +38 -25
  259. package/dist/components/p-Cdz5sX_v.js.map +1 -0
  260. package/dist/components/{p-byKLubNE.js → p-Coa3kO6W.js} +3 -3
  261. package/dist/components/{p-byKLubNE.js.map → p-Coa3kO6W.js.map} +1 -1
  262. package/dist/components/{p-DzaN4l_Y.js → p-Cp1kbBGM.js} +5 -5
  263. package/dist/components/{p-DzaN4l_Y.js.map → p-Cp1kbBGM.js.map} +1 -1
  264. package/dist/components/{p-BYsLvu6g.js → p-CpMdhv3j.js} +69 -5
  265. package/dist/components/p-CpMdhv3j.js.map +1 -0
  266. package/dist/components/{p-BWI0GtPn.js → p-CpQin4NC.js} +7 -7
  267. package/dist/components/{p-BWI0GtPn.js.map → p-CpQin4NC.js.map} +1 -1
  268. package/dist/components/{p-DIPIddaO.js → p-CqiZ9SAU.js} +3 -3
  269. package/dist/components/{p-DIPIddaO.js.map → p-CqiZ9SAU.js.map} +1 -1
  270. package/dist/components/{p-DxJCXXmE.js → p-Cr_ifuX-.js} +27 -26
  271. package/dist/components/p-Cr_ifuX-.js.map +1 -0
  272. package/dist/components/{p-bLKTEsIH.js → p-CsMmUkoQ.js} +8 -8
  273. package/dist/components/{p-bLKTEsIH.js.map → p-CsMmUkoQ.js.map} +1 -1
  274. package/dist/components/{p-Cf-3pInV.js → p-Ct7EvUCI.js} +3 -3
  275. package/dist/components/{p-Cf-3pInV.js.map → p-Ct7EvUCI.js.map} +1 -1
  276. package/dist/components/{p-BbHv2Hzb.js → p-CvQ8X76F.js} +8 -8
  277. package/dist/components/{p-BbHv2Hzb.js.map → p-CvQ8X76F.js.map} +1 -1
  278. package/dist/components/{p-BEwTqpWE.js → p-CxOYMG-r.js} +4 -4
  279. package/dist/components/{p-BEwTqpWE.js.map → p-CxOYMG-r.js.map} +1 -1
  280. package/dist/components/{p-DOKGpXin.js → p-Cyigv-iT.js} +27 -8
  281. package/dist/components/p-Cyigv-iT.js.map +1 -0
  282. package/dist/components/{p-hRee3qYx.js → p-D6Wo7quX.js} +7 -2
  283. package/dist/components/p-D6Wo7quX.js.map +1 -0
  284. package/dist/components/{p-BUw3R0Ql.js → p-D9A5l8BE.js} +7 -7
  285. package/dist/components/{p-BUw3R0Ql.js.map → p-D9A5l8BE.js.map} +1 -1
  286. package/dist/components/{p-CDnOrzs3.js → p-DBtdo56U.js} +4 -4
  287. package/dist/components/{p-CDnOrzs3.js.map → p-DBtdo56U.js.map} +1 -1
  288. package/dist/components/{p-BIc3R4fE.js → p-DFKz-3Nr.js} +5 -5
  289. package/dist/components/{p-BIc3R4fE.js.map → p-DFKz-3Nr.js.map} +1 -1
  290. package/dist/components/{p-BJerffMg.js → p-DL9uHt-7.js} +5 -5
  291. package/dist/components/{p-BJerffMg.js.map → p-DL9uHt-7.js.map} +1 -1
  292. package/dist/components/{p-DIcPqQkn.js → p-DSIcWNUB.js} +5 -4
  293. package/dist/components/p-DSIcWNUB.js.map +1 -0
  294. package/dist/components/{p-CRiQA7Cy.js → p-DZaCCOXB.js} +69 -5
  295. package/dist/components/p-DZaCCOXB.js.map +1 -0
  296. package/dist/components/{p-BwHEv1Kb.js → p-DaMmzX_J.js} +13 -13
  297. package/dist/components/{p-BwHEv1Kb.js.map → p-DaMmzX_J.js.map} +1 -1
  298. package/dist/components/{p-CY0PAhIT.js → p-Dmmz74K2.js} +4 -4
  299. package/dist/components/{p-CY0PAhIT.js.map → p-Dmmz74K2.js.map} +1 -1
  300. package/dist/components/{p-DMcaGgHq.js → p-DnMRLbBX.js} +5 -5
  301. package/dist/components/{p-DMcaGgHq.js.map → p-DnMRLbBX.js.map} +1 -1
  302. package/dist/components/{p-ChdtzL8Z.js → p-Dpvhge5H.js} +10 -9
  303. package/dist/components/p-Dpvhge5H.js.map +1 -0
  304. package/dist/components/p-DtiAfg0X.js +25 -0
  305. package/dist/components/p-DtiAfg0X.js.map +1 -0
  306. package/dist/components/{p-XoXMxeuq.js → p-Dwnxv7WO.js} +3 -3
  307. package/dist/components/{p-XoXMxeuq.js.map → p-Dwnxv7WO.js.map} +1 -1
  308. package/dist/components/{p-BvSuY3tY.js → p-Dx5ehH3t.js} +7 -7
  309. package/dist/components/{p-BvSuY3tY.js.map → p-Dx5ehH3t.js.map} +1 -1
  310. package/dist/components/{p-DueJnVH4.js → p-DyC6jVV8.js} +10 -9
  311. package/dist/components/p-DyC6jVV8.js.map +1 -0
  312. package/dist/components/{p-Bdt-oOnd.js → p-Oil5iqFm.js} +120 -8
  313. package/dist/components/p-Oil5iqFm.js.map +1 -0
  314. package/dist/components/{p-C6aDnKNm.js → p-P3YTnOWe.js} +5 -5
  315. package/dist/components/{p-C6aDnKNm.js.map → p-P3YTnOWe.js.map} +1 -1
  316. package/dist/components/{p-CLvAjrtw.js → p-Qxi-zxd0.js} +8 -8
  317. package/dist/components/{p-CLvAjrtw.js.map → p-Qxi-zxd0.js.map} +1 -1
  318. package/dist/components/{p-DRO3I7Mm.js → p-Qxw1cxga.js} +8 -8
  319. package/dist/components/{p-DRO3I7Mm.js.map → p-Qxw1cxga.js.map} +1 -1
  320. package/dist/components/{p-DLWUrvpt.js → p-Tu9UB-v3.js} +5 -5
  321. package/dist/components/{p-DLWUrvpt.js.map → p-Tu9UB-v3.js.map} +1 -1
  322. package/dist/components/{p-DQIj9UI7.js → p-Ut5zP7nE.js} +5 -5
  323. package/dist/components/{p-DQIj9UI7.js.map → p-Ut5zP7nE.js.map} +1 -1
  324. package/dist/components/{p-Thx6k3Xp.js → p-WLd9SWLl.js} +4 -4
  325. package/dist/components/{p-Thx6k3Xp.js.map → p-WLd9SWLl.js.map} +1 -1
  326. package/dist/components/{p-BTIWOttf.js → p-W_kxEzVl.js} +6 -6
  327. package/dist/components/{p-BTIWOttf.js.map → p-W_kxEzVl.js.map} +1 -1
  328. package/dist/components/{p-BOW03S7b.js → p-XP8tp0pm.js} +5 -5
  329. package/dist/components/{p-BOW03S7b.js.map → p-XP8tp0pm.js.map} +1 -1
  330. package/dist/components/{p-w2FTnlQG.js → p-_HuUfybA.js} +3 -3
  331. package/dist/components/{p-w2FTnlQG.js.map → p-_HuUfybA.js.map} +1 -1
  332. package/dist/components/{p-BU706xtx.js → p-hWgAmNsF.js} +3 -3
  333. package/dist/components/{p-BU706xtx.js.map → p-hWgAmNsF.js.map} +1 -1
  334. package/dist/components/{p-Bykep8mm.js → p-ibwbE8nI.js} +4 -4
  335. package/dist/components/{p-Bykep8mm.js.map → p-ibwbE8nI.js.map} +1 -1
  336. package/dist/components/{p-CA-v1fbV.js → p-ill5r6eV.js} +40 -9
  337. package/dist/components/p-ill5r6eV.js.map +1 -0
  338. package/dist/components/{p-DqYsDDHy.js → p-jdqTpLxN.js} +4 -4
  339. package/dist/components/{p-DqYsDDHy.js.map → p-jdqTpLxN.js.map} +1 -1
  340. package/dist/components/{p-ByM88ZWk.js → p-jpt3zFdi.js} +3 -3
  341. package/dist/components/{p-ByM88ZWk.js.map → p-jpt3zFdi.js.map} +1 -1
  342. package/dist/components/{p-BEtm34A3.js → p-ncemY4Wx.js} +37 -36
  343. package/dist/components/p-ncemY4Wx.js.map +1 -0
  344. package/dist/components/{p-DqPGCQm2.js → p-s8qXxEgi.js} +3 -3
  345. package/dist/components/{p-DqPGCQm2.js.map → p-s8qXxEgi.js.map} +1 -1
  346. package/dist/components/p-vrP9HZiW.js +156 -0
  347. package/dist/components/p-vrP9HZiW.js.map +1 -0
  348. package/dist/components/{p-D32jPxWa.js → p-ycrk0Lr4.js} +5 -5
  349. package/dist/components/{p-D32jPxWa.js.map → p-ycrk0Lr4.js.map} +1 -1
  350. package/dist/components/page-renderer.js +21 -21
  351. package/dist/components/primary-action-header.js +1 -1
  352. package/dist/components/question-configs-renderer.js +1 -1
  353. package/dist/components/question-specific-configs-renderer.js +1 -1
  354. package/dist/components/resource-timeline-calendar.js +5 -5
  355. package/dist/components/resource-timeline-primary-bar.js +1 -1
  356. package/dist/components/save-view-form-dialog.js +1 -1
  357. package/dist/components/search-list-item.js +1 -1
  358. package/dist/components/section-configs-renderer.js +1 -1
  359. package/dist/components/select-layer-popup.js +1 -1
  360. package/dist/components/server-side-grid.js +1 -1
  361. package/dist/components/side-sheet.js +1 -1
  362. package/dist/components/signature-input.js +1 -1
  363. package/dist/components/split-line-popup.js +1 -1
  364. package/dist/components/stencil-field.js +1 -1
  365. package/dist/components/stencil-form.js +1 -1
  366. package/dist/components/stencil-icon-button.js +1 -1
  367. package/dist/components/stencil-toggle.js +1 -1
  368. package/dist/components/tally-display.js +1 -1
  369. package/dist/components/text-area.js +1 -1
  370. package/dist/components/text-field.js +1 -1
  371. package/dist/components/text-input-renderer.js +1 -1
  372. package/dist/components/udp-ambient-card.js +1 -1
  373. package/dist/components/udp-avatar.js +1 -1
  374. package/dist/components/udp-bar-chart.js +1 -1
  375. package/dist/components/udp-charts-example.js +7 -7
  376. package/dist/components/udp-container-query-grid-item.js +1 -1
  377. package/dist/components/udp-container-query-grid.js +2 -2
  378. package/dist/components/udp-container-query.js +1 -1
  379. package/dist/components/udp-container.js +1 -1
  380. package/dist/components/udp-date-selector.js +1 -1
  381. package/dist/components/udp-datetime-selector.js +1 -1
  382. package/dist/components/udp-distribution-chart.js +1 -1
  383. package/dist/components/udp-donut-chart.js +1 -1
  384. package/dist/components/udp-dynamic-container-with-menu.js +1 -1
  385. package/dist/components/udp-dynamic-form.js +4 -4
  386. package/dist/components/udp-forms-builder-menu.js +1 -1
  387. package/dist/components/udp-forms-builder-question-item.js +1 -1
  388. package/dist/components/udp-forms-builder-style-override.js +1 -1
  389. package/dist/components/udp-forms-builder.js +162 -183
  390. package/dist/components/udp-forms-builder.js.map +1 -1
  391. package/dist/components/udp-forms-list-card.js +1 -1
  392. package/dist/components/udp-forms-list.js +10 -10
  393. package/dist/components/udp-forms-renderer.js +244 -219
  394. package/dist/components/udp-forms-renderer.js.map +1 -1
  395. package/dist/components/udp-forms-ui.js +1 -1
  396. package/dist/components/udp-grid-loader.js +1 -1
  397. package/dist/components/udp-hotlist-form.js +1 -1
  398. package/dist/components/udp-icon-button.d.ts +11 -0
  399. package/dist/components/udp-icon-button.js +9 -0
  400. package/dist/components/udp-icon-button.js.map +1 -0
  401. package/dist/components/udp-icon.js +1 -1
  402. package/dist/components/udp-line-chart.js +1 -1
  403. package/dist/components/udp-linear-loader.js +1 -1
  404. package/dist/components/udp-list-item.js +2 -2
  405. package/dist/components/udp-map-toolbar.js +1 -1
  406. package/dist/components/udp-map.js +17 -17
  407. package/dist/components/udp-menu-item.js +1 -1
  408. package/dist/components/udp-page.js +1 -1
  409. package/dist/components/udp-question.js +1 -1
  410. package/dist/components/udp-save-draft-button.d.ts +11 -0
  411. package/dist/components/udp-save-draft-button.js +9 -0
  412. package/dist/components/udp-save-draft-button.js.map +1 -0
  413. package/dist/components/udp-selector.js +1 -1
  414. package/dist/components/udp-side-sheet.js +1 -1
  415. package/dist/components/udp-skeleton-loading.js +1 -1
  416. package/dist/components/udp-split-screen.js +1 -1
  417. package/dist/components/udp-stepper-demo.js +1 -1
  418. package/dist/components/udp-tab.js +1 -1
  419. package/dist/components/udp-tabs.js +1 -1
  420. package/dist/components/udp-time-selector.js +1 -1
  421. package/dist/components/udp-vertical-spacer.js +1 -1
  422. package/dist/esm/add-map-feature-popup_4.entry.js +11 -11
  423. package/dist/esm/advanced-search_50.entry.js +109 -41
  424. package/dist/esm/advanced-search_50.entry.js.map +1 -1
  425. package/dist/esm/ag-grid-base_2.entry.js +2 -2
  426. package/dist/esm/api-method-grid.entry.js +1 -1
  427. package/dist/esm/check-box.entry.js +2 -2
  428. package/dist/esm/chip-section.entry.js +2 -2
  429. package/dist/esm/client-side-grid.entry.js +1 -1
  430. package/dist/esm/color-preview.entry.js +1 -1
  431. package/dist/esm/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.js.map +1 -1
  432. package/dist/esm/date-time-renderer_5.entry.js +17 -16
  433. package/dist/esm/date-time-renderer_5.entry.js.map +1 -1
  434. package/dist/esm/enums-DtiAfg0X.js +25 -0
  435. package/dist/esm/enums-DtiAfg0X.js.map +1 -0
  436. package/dist/esm/feature-details-card_2.entry.js +5 -5
  437. package/dist/esm/file-upload.selectable-list.stencil-field.entry.js.map +1 -1
  438. package/dist/esm/file-upload_3.entry.js +73 -29
  439. package/dist/esm/file-upload_3.entry.js.map +1 -1
  440. package/dist/esm/index-CaIWDYyq.js +8 -8
  441. package/dist/esm/inputs-example.entry.js +2 -2
  442. package/dist/esm/inputs-example.entry.js.map +1 -1
  443. package/dist/esm/loader.js +1 -1
  444. package/dist/esm/map-component_2.entry.js +2 -2
  445. package/dist/esm/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.js.map +1 -1
  446. package/dist/esm/numeric-field_5.entry.js +195 -20
  447. package/dist/esm/numeric-field_5.entry.js.map +1 -1
  448. package/dist/esm/page-renderer.entry.js +1 -1
  449. package/dist/esm/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.js.map +1 -1
  450. package/dist/esm/question-configs-renderer_5.entry.js +17 -4
  451. package/dist/esm/question-configs-renderer_5.entry.js.map +1 -1
  452. package/dist/esm/resource-timeline-calendar.entry.js +1 -1
  453. package/dist/esm/resource-timeline-primary-bar.entry.js +1 -1
  454. package/dist/esm/server-side-grid.entry.js +1 -1
  455. package/dist/esm/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.js.map +1 -0
  456. package/dist/esm/{signature-input_4.entry.js → signature-input_6.entry.js} +315 -115
  457. package/dist/esm/signature-input_6.entry.js.map +1 -0
  458. package/dist/esm/stencil-library.js +1 -1
  459. package/dist/esm/udp-container-query-grid-item.entry.js +1 -1
  460. package/dist/esm/udp-container-query-grid.entry.js +1 -1
  461. package/dist/esm/udp-container-query.entry.js +2 -2
  462. package/dist/esm/udp-container.entry.js +2 -2
  463. package/dist/esm/udp-drive-utils-Cm3Sms8t.js +168 -0
  464. package/dist/esm/udp-drive-utils-Cm3Sms8t.js.map +1 -0
  465. package/dist/esm/udp-forms-builder.entry.js +133 -152
  466. package/dist/esm/udp-forms-builder.entry.js.map +1 -1
  467. package/dist/esm/udp-forms-list-card_2.entry.js +5 -5
  468. package/dist/esm/udp-forms-list.entry.js +1 -1
  469. package/dist/esm/udp-forms-renderer.entry.js +186 -176
  470. package/dist/esm/udp-forms-renderer.entry.js.map +1 -1
  471. package/dist/esm/udp-forms-ui.entry.js +113 -82
  472. package/dist/esm/udp-forms-ui.entry.js.map +1 -1
  473. package/dist/esm/udp-map.entry.js +3 -3
  474. package/dist/esm/udp-page.entry.js +1 -1
  475. package/dist/esm/udp-split-screen.entry.js +1 -1
  476. package/dist/esm/udp-stepper-demo.entry.js +1 -1
  477. package/dist/esm/udp-vertical-spacer.entry.js +1 -1
  478. package/dist/esm/utils-DZv4MqyU.js +31 -0
  479. package/dist/esm/utils-DZv4MqyU.js.map +1 -0
  480. package/dist/stencil-library/date-time-renderer.file-upload-renderer.list-options-renderer.question-specific-configs-renderer.text-input-renderer.entry.esm.js.map +1 -1
  481. package/dist/stencil-library/file-upload.selectable-list.stencil-field.entry.esm.js.map +1 -1
  482. package/dist/stencil-library/inputs-example.entry.esm.js.map +1 -1
  483. package/dist/stencil-library/numeric-field.text-area.udp-date-selector.udp-datetime-selector.udp-time-selector.entry.esm.js.map +1 -1
  484. package/dist/stencil-library/p-09319660.entry.js +2 -0
  485. package/dist/stencil-library/p-09319660.entry.js.map +1 -0
  486. package/dist/stencil-library/p-146bc917.entry.js +2 -0
  487. package/dist/stencil-library/{p-b3b6310e.entry.js → p-147c4595.entry.js} +2 -2
  488. package/dist/stencil-library/{p-06ca29e0.entry.js → p-1b001f78.entry.js} +2 -2
  489. package/dist/stencil-library/{p-762591f6.entry.js → p-2635a6cc.entry.js} +2 -2
  490. package/dist/stencil-library/p-2f2fd111.entry.js +2 -0
  491. package/dist/stencil-library/{p-368be454.entry.js → p-2fc495ce.entry.js} +2 -2
  492. package/dist/stencil-library/{p-fdfa7087.entry.js → p-476c08df.entry.js} +2 -2
  493. package/dist/stencil-library/{p-ee1610d3.entry.js → p-4ab893a0.entry.js} +2 -2
  494. package/dist/stencil-library/p-4dac2b6d.entry.js +2 -0
  495. package/dist/stencil-library/p-4dac2b6d.entry.js.map +1 -0
  496. package/dist/stencil-library/p-556a182f.entry.js +2 -0
  497. package/dist/stencil-library/p-556a182f.entry.js.map +1 -0
  498. package/dist/stencil-library/p-5ac16f81.entry.js +2 -0
  499. package/dist/stencil-library/p-5ac16f81.entry.js.map +1 -0
  500. package/dist/stencil-library/p-609236fc.entry.js +2 -0
  501. package/dist/stencil-library/p-609236fc.entry.js.map +1 -0
  502. package/dist/stencil-library/{p-9b0b311b.entry.js → p-64330dbb.entry.js} +2 -2
  503. package/dist/stencil-library/p-65a5cce3.entry.js +2 -0
  504. package/dist/stencil-library/{p-5a946191.entry.js → p-70d8a0d8.entry.js} +2 -2
  505. package/dist/stencil-library/{p-79065768.entry.js → p-8119eb18.entry.js} +2 -2
  506. package/dist/stencil-library/{p-2f99476a.entry.js → p-86cd0134.entry.js} +2 -2
  507. package/dist/stencil-library/p-89aa56f1.entry.js +2 -0
  508. package/dist/stencil-library/p-89aa56f1.entry.js.map +1 -0
  509. package/dist/stencil-library/{p-767b7be7.entry.js → p-8a0b6bd4.entry.js} +2 -2
  510. package/dist/stencil-library/{p-40127f9f.entry.js → p-90fbca0f.entry.js} +2 -2
  511. package/dist/stencil-library/p-C5aOw4Ij.js +2 -0
  512. package/dist/stencil-library/p-C5aOw4Ij.js.map +1 -0
  513. package/dist/stencil-library/p-DZv4MqyU.js +2 -0
  514. package/dist/stencil-library/p-DZv4MqyU.js.map +1 -0
  515. package/dist/stencil-library/p-DtiAfg0X.js +2 -0
  516. package/dist/stencil-library/p-DtiAfg0X.js.map +1 -0
  517. package/dist/stencil-library/{p-f4f4ba61.entry.js → p-a98b033e.entry.js} +2 -2
  518. package/dist/stencil-library/p-a98b033e.entry.js.map +1 -0
  519. package/dist/stencil-library/{p-2a11c543.entry.js → p-ae167d4b.entry.js} +2 -2
  520. package/dist/stencil-library/{p-55459135.entry.js → p-b53e1b9a.entry.js} +2 -2
  521. package/dist/stencil-library/p-c1966f2c.entry.js +2 -0
  522. package/dist/stencil-library/p-c1966f2c.entry.js.map +1 -0
  523. package/dist/stencil-library/{p-0de6045a.entry.js → p-c9046d64.entry.js} +2 -2
  524. package/dist/stencil-library/{p-c1809ef3.entry.js → p-ca53be83.entry.js} +2 -2
  525. package/dist/stencil-library/p-d46dd16c.entry.js +2 -0
  526. package/dist/stencil-library/{p-09186dea.entry.js → p-d48b5599.entry.js} +2 -2
  527. package/dist/stencil-library/p-d4f31146.entry.js +2 -0
  528. package/dist/stencil-library/p-d4f31146.entry.js.map +1 -0
  529. package/dist/stencil-library/{p-b0b70c0b.entry.js → p-e7e8a8a3.entry.js} +2 -2
  530. package/dist/stencil-library/p-ea6e9a24.entry.js +2 -0
  531. package/dist/stencil-library/p-ea6e9a24.entry.js.map +1 -0
  532. package/dist/stencil-library/{p-79587009.entry.js → p-f4b5879d.entry.js} +2 -2
  533. package/dist/stencil-library/p-fbfbbcf1.entry.js +2 -0
  534. package/dist/stencil-library/question-configs-renderer.section-configs-renderer.udp-forms-builder-menu.udp-forms-builder-question-item.udp-forms-builder-style-override.entry.esm.js.map +1 -1
  535. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-icon-button.udp-question.udp-save-draft-button.entry.esm.js.map +1 -0
  536. package/dist/stencil-library/stencil-library.esm.js +1 -1
  537. package/dist/stencil-library/udp-forms-builder.entry.esm.js.map +1 -1
  538. package/dist/stencil-library/udp-forms-renderer.entry.esm.js.map +1 -1
  539. package/dist/stencil-library/udp-forms-ui.entry.esm.js.map +1 -1
  540. package/dist/types/components/my-component/UI/buttons/icon-button/stencil-icon-button.d.ts +14 -0
  541. package/dist/types/components/my-component/UI/buttons/udp-icon-button/udp-icon-button.d.ts +91 -0
  542. package/dist/types/components/my-component/UI/forms/form/stencil-field.d.ts +2 -1
  543. package/dist/types/components/my-component/UI/forms/form/stencil-form.d.ts +7 -5
  544. package/dist/types/components/my-component/UI/forms/udp-forms/types.d.ts +16 -0
  545. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder-item/question_type_renderers/section-configs-renderer.d.ts +1 -0
  546. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-builder/udp-forms-builder.d.ts +16 -19
  547. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.d.ts +14 -26
  548. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-ui.d.ts +21 -7
  549. package/dist/types/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-save-draft-button/udp-save-draft-button.d.ts +20 -0
  550. package/dist/types/components/my-component/UI/inputs/file-upload/file-upload.d.ts +1 -1
  551. package/dist/types/components/my-component/UI/inputs/file-upload/udp-drive-utils.d.ts +68 -1
  552. package/dist/types/components/my-component/UI/inputs/numeric-field/numeric-field.d.ts +1 -1
  553. package/dist/types/components/my-component/UI/inputs/signature-input/signature-input.d.ts +1 -1
  554. package/dist/types/components/my-component/UI/inputs/text-area/text-area.d.ts +21 -0
  555. package/dist/types/components/my-component/UI/inputs/text-field/text-field.d.ts +21 -0
  556. package/dist/types/components/my-component/UI/inputs/time-selector/udp-time-selector.d.ts +33 -1
  557. package/dist/types/components.d.ts +384 -14
  558. package/package.json +1 -1
  559. package/dist/cjs/signature-input.stencil-form.tally-display.udp-question.entry.cjs.js.map +0 -1
  560. package/dist/cjs/signature-input_4.cjs.entry.js.map +0 -1
  561. package/dist/cjs/utils-DMhqs00g.js +0 -55
  562. package/dist/cjs/utils-DMhqs00g.js.map +0 -1
  563. package/dist/collection/components/my-component/UI/forms/form/stencil-field.css +0 -70
  564. package/dist/collection/components/my-component/UI/forms/udp-forms/udp-forms-renderer/udp-forms-renderer.css +0 -89
  565. package/dist/components/p-B3-pcvgV.js.map +0 -1
  566. package/dist/components/p-BEtm34A3.js.map +0 -1
  567. package/dist/components/p-BYsLvu6g.js.map +0 -1
  568. package/dist/components/p-BdWgc1UD.js.map +0 -1
  569. package/dist/components/p-Bdt-oOnd.js.map +0 -1
  570. package/dist/components/p-Bv1MGbhE.js.map +0 -1
  571. package/dist/components/p-C8cWVxBF.js.map +0 -1
  572. package/dist/components/p-C9cEH65u.js +0 -307
  573. package/dist/components/p-C9cEH65u.js.map +0 -1
  574. package/dist/components/p-CA-v1fbV.js.map +0 -1
  575. package/dist/components/p-CRiQA7Cy.js.map +0 -1
  576. package/dist/components/p-ChdtzL8Z.js.map +0 -1
  577. package/dist/components/p-DIcPqQkn.js.map +0 -1
  578. package/dist/components/p-DOKGpXin.js.map +0 -1
  579. package/dist/components/p-DueJnVH4.js.map +0 -1
  580. package/dist/components/p-DxJCXXmE.js.map +0 -1
  581. package/dist/components/p-IlXn87Ki.js.map +0 -1
  582. package/dist/components/p-PqypuW_Q.js.map +0 -1
  583. package/dist/components/p-hRee3qYx.js.map +0 -1
  584. package/dist/esm/signature-input.stencil-form.tally-display.udp-question.entry.js.map +0 -1
  585. package/dist/esm/signature-input_4.entry.js.map +0 -1
  586. package/dist/esm/utils-vXSpJxEK.js +0 -52
  587. package/dist/esm/utils-vXSpJxEK.js.map +0 -1
  588. package/dist/stencil-library/p-00c1ce44.entry.js +0 -2
  589. package/dist/stencil-library/p-00c1ce44.entry.js.map +0 -1
  590. package/dist/stencil-library/p-250a8400.entry.js +0 -2
  591. package/dist/stencil-library/p-2fda98ee.entry.js +0 -2
  592. package/dist/stencil-library/p-2fda98ee.entry.js.map +0 -1
  593. package/dist/stencil-library/p-50f67815.entry.js +0 -2
  594. package/dist/stencil-library/p-50f67815.entry.js.map +0 -1
  595. package/dist/stencil-library/p-584552e6.entry.js +0 -2
  596. package/dist/stencil-library/p-5e96c57a.entry.js +0 -2
  597. package/dist/stencil-library/p-5e96c57a.entry.js.map +0 -1
  598. package/dist/stencil-library/p-6a1febc9.entry.js +0 -2
  599. package/dist/stencil-library/p-6ed5258c.entry.js +0 -2
  600. package/dist/stencil-library/p-6ed5258c.entry.js.map +0 -1
  601. package/dist/stencil-library/p-77739d4b.entry.js +0 -2
  602. package/dist/stencil-library/p-77739d4b.entry.js.map +0 -1
  603. package/dist/stencil-library/p-7a2202b9.entry.js +0 -2
  604. package/dist/stencil-library/p-7a2202b9.entry.js.map +0 -1
  605. package/dist/stencil-library/p-84109194.entry.js +0 -2
  606. package/dist/stencil-library/p-b1d412a7.entry.js +0 -2
  607. package/dist/stencil-library/p-b1d412a7.entry.js.map +0 -1
  608. package/dist/stencil-library/p-f4f4ba61.entry.js.map +0 -1
  609. package/dist/stencil-library/p-f7c855d0.entry.js +0 -2
  610. package/dist/stencil-library/p-f889438a.entry.js +0 -2
  611. package/dist/stencil-library/p-f889438a.entry.js.map +0 -1
  612. package/dist/stencil-library/p-vXSpJxEK.js +0 -2
  613. package/dist/stencil-library/p-vXSpJxEK.js.map +0 -1
  614. package/dist/stencil-library/signature-input.stencil-form.tally-display.udp-question.entry.esm.js.map +0 -1
  615. /package/dist/stencil-library/{p-84109194.entry.js.map → p-146bc917.entry.js.map} +0 -0
  616. /package/dist/stencil-library/{p-b3b6310e.entry.js.map → p-147c4595.entry.js.map} +0 -0
  617. /package/dist/stencil-library/{p-06ca29e0.entry.js.map → p-1b001f78.entry.js.map} +0 -0
  618. /package/dist/stencil-library/{p-762591f6.entry.js.map → p-2635a6cc.entry.js.map} +0 -0
  619. /package/dist/stencil-library/{p-6a1febc9.entry.js.map → p-2f2fd111.entry.js.map} +0 -0
  620. /package/dist/stencil-library/{p-368be454.entry.js.map → p-2fc495ce.entry.js.map} +0 -0
  621. /package/dist/stencil-library/{p-fdfa7087.entry.js.map → p-476c08df.entry.js.map} +0 -0
  622. /package/dist/stencil-library/{p-ee1610d3.entry.js.map → p-4ab893a0.entry.js.map} +0 -0
  623. /package/dist/stencil-library/{p-9b0b311b.entry.js.map → p-64330dbb.entry.js.map} +0 -0
  624. /package/dist/stencil-library/{p-584552e6.entry.js.map → p-65a5cce3.entry.js.map} +0 -0
  625. /package/dist/stencil-library/{p-5a946191.entry.js.map → p-70d8a0d8.entry.js.map} +0 -0
  626. /package/dist/stencil-library/{p-79065768.entry.js.map → p-8119eb18.entry.js.map} +0 -0
  627. /package/dist/stencil-library/{p-2f99476a.entry.js.map → p-86cd0134.entry.js.map} +0 -0
  628. /package/dist/stencil-library/{p-767b7be7.entry.js.map → p-8a0b6bd4.entry.js.map} +0 -0
  629. /package/dist/stencil-library/{p-40127f9f.entry.js.map → p-90fbca0f.entry.js.map} +0 -0
  630. /package/dist/stencil-library/{p-2a11c543.entry.js.map → p-ae167d4b.entry.js.map} +0 -0
  631. /package/dist/stencil-library/{p-55459135.entry.js.map → p-b53e1b9a.entry.js.map} +0 -0
  632. /package/dist/stencil-library/{p-0de6045a.entry.js.map → p-c9046d64.entry.js.map} +0 -0
  633. /package/dist/stencil-library/{p-c1809ef3.entry.js.map → p-ca53be83.entry.js.map} +0 -0
  634. /package/dist/stencil-library/{p-f7c855d0.entry.js.map → p-d46dd16c.entry.js.map} +0 -0
  635. /package/dist/stencil-library/{p-09186dea.entry.js.map → p-d48b5599.entry.js.map} +0 -0
  636. /package/dist/stencil-library/{p-b0b70c0b.entry.js.map → p-e7e8a8a3.entry.js.map} +0 -0
  637. /package/dist/stencil-library/{p-79587009.entry.js.map → p-f4b5879d.entry.js.map} +0 -0
  638. /package/dist/stencil-library/{p-250a8400.entry.js.map → p-fbfbbcf1.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"file-upload.selectable-list.stencil-field.entry.cjs.js","mappings":"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","names":["ConfigService","axios","h","Host","index","Close24"],"sources":["src/components/my-component/UI/inputs/file-upload/file-upload.css?tag=file-upload&encapsulation=shadow","src/components/my-component/UI/inputs/file-upload/file-upload.tsx","src/components/my-component/UI/inputs/selectable-list/selectable-list.css?tag=selectable-list&encapsulation=shadow","src/components/my-component/UI/inputs/selectable-list/selectable-list.tsx","src/components/my-component/UI/forms/form/stencil-field.css?tag=stencil-field","src/components/my-component/UI/forms/form/stencil-field.tsx"],"sourcesContent":["/* file-upload.css */\n#drop-area {\n height: 200px;\n border: 2px dashed #ccc;\n border-radius: 5px;\n padding: 20px;\n text-align: center;\n font-family: Arial, sans-serif;\n overflow-y: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n#outer-container {\n padding: 10px 5px;\n\n}\n\n#drop-area.highlight {\n border-color: var(--primary-color);\n}\n\n#error-text {\n color: var(--error-color-main);\n}\n\n#add-button {\n border-radius: 5;\n}\n\n#remove-button {\n width: 10px;\n height: 10px;\n margin-left: 5px;\n border: 'none';\n background: 'none';\n cursor: 'pointer';\n}\n\n.file-container {\n display: flex; \n flex-direction: row;\n align-items: center;\n}\n\n.full-width {\n width: auto\n}\n\n.contained-width {\n width: 300px;\n\n}\n.file-text {\n float: left\n}\n.inner-container {\n display: flex;\n justify-content: center;\n flex-direction: row;\n}\n.container {\n display: flex;\n flex-direction: row;\n justify-content: center;\n overflow-y: auto;\n}","import { Component, State, h, Host, Prop, Watch, Element, Event, EventEmitter } from '@stencil/core';\nimport { UdpDriveFile } from '../../../../../global/types';\nimport { ConfigService } from '../../../../../udp-utilities/api-config';\nimport Close24 from '@carbon/icons/es/close/24';\nimport axios from 'axios';\n\n/**\n * A comprehensive file upload component with drag-and-drop support, file type validation,\n * and integration with UDP Drive for existing file management.\n * Supports both new file uploads and existing file management with download capabilities.\n *\n * This component emits a custom `change` event with the committed value and also\n * propagates standard DOM events like `input`, `focus`, and `blur` from the\n * underlying input element.\n *\n * **File Handling Modes:**\n * - **New Files**: Regular File objects that need to be uploaded\n * - **Existing Files**: UdpDriveFile objects that are already stored on the server\n * - **Mixed Mode**: Combination of new and existing files\n *\n * **Value Patterns:**\n * - `initialValue`: For setting default files (UdpDriveFile[], File[], or mixed)\n * - `value`: For direct file access (always File[] for consistency)\n *\n * @example\n * ```tsx\n * // Basic file upload\n * <file-upload\n * allowMultiple={true}\n * onChange={(e) => console.log('Files:', e.detail.files)}\n * />\n *\n * // With existing UDP Drive files\n * <file-upload\n * initialValue={existingUdpFiles}\n * allowMultiple={true}\n * onChange={(e) => handleFileChange(e.detail)}\n * />\n *\n * // With file type restrictions\n * <file-upload\n * allowedFileTypes={['pdf', 'doc', 'docx']}\n * required={true}\n * error={fileError}\n * onChange={handleDocumentUpload}\n * />\n *\n * // Drag and drop disabled\n * <file-upload\n * hideDragAndDrop={true}\n * browseFileMessage=\"Select Images\"\n * allowedFileTypes={['jpg', 'png', 'gif']}\n * onChange={handleImageUpload}\n * />\n * ```\n */\n@Component({\n tag: 'file-upload',\n styleUrl: 'file-upload.css',\n shadow: true,\n})\nexport class FileUpload {\n /**\n * Whether multiple files can be selected. When false, only one file can be uploaded at a time.\n */\n @Prop() allowMultiple: boolean;\n\n /**\n * Array of allowed file extensions (without dots). When specified, only these file types are accepted.\n * Example: ['pdf', 'doc', 'docx', 'jpg', 'png']\n * Mutually exclusive with disallowedFileTypes.\n */\n @Prop() allowedFileTypes: Array<string>;\n\n /**\n * Array of disallowed file extensions (without dots). When specified, these file types are rejected.\n * Example: ['exe', 'bat', 'scr']\n * Mutually exclusive with allowedFileTypes.\n */\n @Prop() disallowedFileTypes: Array<string>;\n\n /**\n * Whether the component should take the full width of its container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * Whether file selection is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Error message to display below the component. Shows validation errors or upload issues.\n */\n @Prop() error: string;\n\n /**\n * Message displayed in the drag-and-drop area. Customizes the user guidance text.\n */\n @Prop() dragAndDropMessage: string = 'Drag and drop your files here';\n\n /**\n * Text displayed on the browse files button. Customizes the button label.\n */\n @Prop() browseFileMessage: string = 'Browse Files';\n\n /**\n * Whether to hide the drag-and-drop area. When true, only the browse button is shown.\n */\n @Prop() hideDragAndDrop: boolean = false;\n\n /**\n * Whether to hide the browse files button. When true, only drag-and-drop is available.\n */\n @Prop() hideButton: boolean = false;\n\n /**\n * Unique identifier for the component. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for form submission. Used for form data collection.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the component. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * When true, all interactions with the component are disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * When true, the component is in a read-only state. Files can be viewed and downloaded, but not added or removed.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Initial files to display in the component. Supports multiple formats:\n * - UdpDriveFile: Existing files stored on UDP Drive (displayed with \"(saved)\" indicator)\n * - File: New file objects ready for upload\n * - string: Legacy support for file references\n * - Arrays: Multiple files of any supported type\n *\n * UdpDriveFiles are converted to placeholder File objects for consistent handling.\n */\n @Prop() initialValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string;\n\n /**\n * Current files in the component. Always contains File objects for consistent API.\n * When files are added/removed, this prop is updated automatically.\n * For external access to uploaded files, use the change/input events.\n */\n @Prop({ mutable: true }) value: File | File[];\n\n /**\n * Array of currently selected/uploaded files. Managed internally by the component.\n * @internal\n */\n @State() files: File[] = [];\n\n /**\n * Whether the file browser window is currently open. Used for UI state management.\n * @internal\n */\n @State() fileWindowOpen: boolean = false;\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Map of file names to their original UdpDriveFile references.\n * Tracks which files are existing (saved) vs new (to be uploaded).\n * @internal\n */\n @State() existingFileReferences: Map<string, UdpDriveFile> = new Map();\n\n /**\n * Emitted when files are added, removed, or changed.\n * Provides both string representation and File objects for flexible handling.\n *\n * @event change\n * @param {object} detail - File change details\n * @param {string} detail.value - Comma-separated file references with UDP Drive IDs\n * @param {File[]} detail.files - Array of new File objects that need to be uploaded\n * @param {string} detail.toString() - String representation for form serialization\n *\n * @example\n * ```tsx\n * <file-upload onChange={(e) => {\n * console.log('String value:', e.detail.value);\n * console.log('Files to upload:', e.detail.files);\n * console.log('Form value:', e.detail.toString());\n * }} />\n * ```\n */\n @Event() change: EventEmitter<{\n value: string;\n files: File[];\n toString(): string;\n valueOf(): string;\n }>;\n\n\n\n @Element() el: HTMLElement;\n\n /**\n * Hidden file input element for triggering file browser. Created programmatically.\n * @internal\n */\n private hiddenInput: HTMLInputElement;\n\n /**\n * Counter for drag events to properly handle drag enter/leave. Prevents flickering.\n * @internal\n */\n private dragCounter: number = 0;\n\n /**\n * Flag to track if the component has been initialized to prevent re-processing during lifecycle events.\n * @internal\n */\n private isInitialized: boolean = false;\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Watches for changes to initialValue prop and processes the new files.\n * Handles conversion of UdpDriveFile objects to File objects.\n * @param newValue - New initial value containing files to process\n * @internal\n */\n @Watch('initialValue')\n async initialValueChanged(newValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string) {\n // Check if this looks like an event detail object (has value, files, toString, valueOf properties)\n // If so, ignore it since this is from our own event emission, not external initialization\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue && 'toString' in newValue) {\n console.log('initialValueChanged received an event detail object, ignoring to prevent circular processing');\n return;\n }\n\n if (newValue === '' || newValue === undefined || newValue === null) {\n this.files = [];\n this.existingFileReferences.clear();\n return;\n }\n\n try {\n // Clear existing references when initialValue changes\n this.existingFileReferences.clear();\n\n if (typeof newValue === 'string') {\n // For backward compatibility - clear files if just a string\n this.files = [];\n } else if (Array.isArray(newValue)) {\n // Handle array of files (UdpDriveFile[] or File[])\n const processedFiles = await Promise.all(\n newValue.map(file => this.processInitialFile(file))\n );\n // Filter out null results after processing\n this.files = processedFiles.filter(file => file !== null);\n } else {\n // Handle single file (UdpDriveFile or File)\n const processedFile = await this.processInitialFile(newValue);\n this.files = processedFile ? [processedFile] : [];\n }\n\n // Update value prop after initialization (but don't emit events)\n this.updateValueProp();\n } catch (error) {\n console.error('Error processing initial files:', error);\n this.files = [];\n this.existingFileReferences.clear();\n }\n }\n\n /**\n * Process an initial file, converting UdpDriveFile to File if needed.\n * Creates placeholder File objects for existing UDP Drive files.\n * @param file - File to process (UdpDriveFile or File)\n * @returns Promise resolving to a File object or null if invalid\n * @internal\n */\n private async processInitialFile(file: UdpDriveFile | File): Promise<File | null> {\n // Handle null/undefined input\n console.log(file)\n if (!file) {\n return null;\n }\n\n if (this.isUdpDriveFile(file)) {\n // For UdpDriveFile, create a placeholder File and track the reference\n try {\n const placeholderFile = this.createPlaceholderFileFromUdpDriveFile(file);\n // Track this as an existing file that doesn't need to be uploaded\n this.existingFileReferences.set(placeholderFile.name, file);\n return placeholderFile;\n } catch (error) {\n console.error('Error creating placeholder file from UdpDriveFile:', error);\n return null;\n }\n } else if (file instanceof File) {\n // Already a File object - this is a new file\n return file;\n } else {\n // Invalid object, return null\n return null;\n }\n }\n\n /**\n * Type guard to check if a file is a UdpDriveFile.\n * @param file - File object to check\n * @returns True if the file is a UdpDriveFile\n * @internal\n */\n private isUdpDriveFile(file: any): file is UdpDriveFile {\n return file && typeof file === 'object' && 'driveFileId' in file;\n }\n\n /**\n * Create a placeholder File object from UdpDriveFile without downloading content.\n * Used for display purposes and consistent File API.\n * @param udpFile - UdpDriveFile to convert\n * @returns Placeholder File object\n * @internal\n */\n private createPlaceholderFileFromUdpDriveFile(udpFile: UdpDriveFile): File {\n // Ensure we have required properties with fallbacks\n const extension = udpFile.extension || 'bin';\n const fileName = udpFile.name || `file.${extension}`;\n\n const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });\n\n // Handle lastUpdated as either Date, string, or number\n let lastModified = Date.now();\n if (udpFile.lastUpdated) {\n if (typeof udpFile.lastUpdated === 'string' || typeof udpFile.lastUpdated === 'number') {\n lastModified = new Date(udpFile.lastUpdated).getTime();\n } else if (udpFile.lastUpdated instanceof Date) {\n lastModified = udpFile.lastUpdated.getTime();\n }\n }\n\n const file = new File([placeholderBlob], fileName, {\n type: placeholderBlob.type,\n lastModified: lastModified\n });\n\n return file;\n }\n\n /**\n * Create a File object from UdpDriveFile by downloading the content from the server.\n * Used when downloading existing files for user access.\n * @param udpFile - UdpDriveFile to download and convert\n * @returns Promise resolving to a File object with downloaded content\n * @internal\n */\n private async createFileFromUdpDriveFile(udpFile: UdpDriveFile): Promise<File> {\n try {\n const downloadUrl = `${ConfigService.tenantV1ApiUrl}/UdpDrive/${udpFile.driveFileId}/stream`;\n\n const response = await axios({\n method: 'GET',\n url: downloadUrl,\n responseType: 'blob',\n timeout: 300000, // 5 minutes\n headers: {\n // Add authentication headers if needed\n // 'Authorization': `Bearer ${accessToken}`\n }\n });\n\n const blob = response.data;\n\n // Create a File object with the downloaded content\n // Use the udpFile.name or construct from extension\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n\n return new File([blob], fileName, {\n type: blob.type || this.getMimeTypeFromExtension(udpFile.extension),\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n } catch (error) {\n console.error('Error creating file from UdpDriveFile:', error);\n // Return a placeholder file if download fails\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([''], fileName, { type: 'application/octet-stream' });\n }\n }\n\n /**\n * Get MIME type from file extension for proper file type handling.\n * @param extension - File extension without dot (e.g., \"pdf\", \"jpg\")\n * @returns MIME type string\n * @internal\n */\n private getMimeTypeFromExtension(extension: string): string {\n // Handle null/undefined extension\n if (!extension) {\n return 'application/octet-stream';\n }\n\n const mimeTypes: { [key: string]: string } = {\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n 'css': 'text/css',\n 'js': 'application/javascript',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'zip': 'application/zip',\n 'rar': 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';\n }\n\n /**\n * Component lifecycle method. Initializes the component and sets up file input.\n * @internal\n */\n async componentWillLoad() {\n // Prevent re-initialization if component is already initialized\n if (this.isInitialized) {\n return;\n }\n\n // Initialize hidden file input FIRST before any async operations\n this.dragCounter = 0;\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n\n if (this.allowedFileTypes && this.disallowedFileTypes) {\n throw new Error('allowedFileTypes and disallowedFileTypes are mutually exlusive, you cannot use both props');\n }\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n // Now do async operations after hiddenInput is ready\n // Initialize from initialValue (stencil-field usage) or value prop (direct usage)\n // Priority: initialValue > value > empty\n if (this.initialValue !== undefined && this.initialValue !== null && this.initialValue !== '') {\n await this.initialValueChanged(this.initialValue);\n } else if (this.value !== undefined && this.value !== null) {\n await this.processValueProp(this.value);\n }\n\n // Mark as initialized\n this.isInitialized = true;\n }\n\n /**\n * Process the value prop (used during initialization only)\n * @param newValue - Value prop content\n * @internal\n */\n private async processValueProp(newValue: File | File[] | UdpDriveFile | UdpDriveFile[] | null | undefined) {\n if (newValue === null || newValue === undefined) {\n this.files = [];\n return;\n }\n\n // Check if this looks like an event detail object (has value, files, toString, valueOf properties)\n // If so, ignore it since this is from our own updateValueProp, not external initialization\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue && 'toString' in newValue) {\n return;\n }\n\n try {\n if (Array.isArray(newValue)) {\n if (newValue.length === 0) {\n this.files = [];\n return;\n }\n\n // Process each item in the array\n const processedFiles: File[] = [];\n for (const item of newValue) {\n // Process the item and filter out nulls from invalid objects\n const processedFile = await this.processInitialFile(item);\n if (processedFile) {\n processedFiles.push(processedFile);\n }\n }\n this.files = processedFiles;\n\n } else {\n // Single value\n const processedFile = await this.processInitialFile(newValue as UdpDriveFile | File);\n if (processedFile) {\n this.files = [processedFile];\n } else {\n this.files = [];\n }\n }\n\n // Update value prop after initialization (but don't emit events)\n this.updateValueProp();\n\n } catch (error) {\n console.error('Error in processValueProp:', error);\n this.files = [];\n }\n }\n\n /**\n * Manually emit events when files change due to user interaction.\n * This replaces the automatic @Watch('files') to avoid circular updates.\n * @internal\n */\n private emitFileChangeEvents() {\n // Update the mutable value prop for non-stencil-field usage\n this.updateValueProp();\n\n // Separate new files (to be uploaded) from existing files (already on server)\n const newFiles = this.files.filter(file => !this.existingFileReferences.has(file.name));\n const existingFiles = this.files.filter(file => this.existingFileReferences.has(file.name));\n\n // If no files at all, emit null instead of empty string\n if (newFiles.length === 0 && existingFiles.length === 0) {\n // Emit null to indicate no files\n this.change.emit(null);\n //this.input.emit(null);\n return;\n }\n\n // Create a structured value that includes both string representation and File objects\n // This allows the form handler to extract the files while maintaining string serialization\n const fileReferences: string[] = [];\n newFiles.forEach(file => {\n // Ensure file has a valid name before adding to references\n if (file.name && file.name.trim() !== '') {\n fileReferences.push(file.name.trim());\n }\n });\n\n existingFiles.forEach(file => {\n if (file.name && file.name.trim() !== '') {\n const udpDriveFile = this.existingFileReferences.get(file.name);\n if (udpDriveFile) {\n fileReferences.push(`${file.name.trim()}|udp:${udpDriveFile.driveFileId}`);\n }\n }\n });\n\n const combinedValue = fileReferences.join(',');\n\n // Create a special value object that contains both the string and the files\n // This allows generic handling while preserving File objects for upload\n const detailValue = {\n toString: () => combinedValue, // For string serialization\n valueOf: () => combinedValue, // For primitive conversion\n value: combinedValue, // Explicit string value\n files: newFiles.filter(file => file.name && file.name.trim() !== '') // Only include files with valid names\n };\n\n // Emit standard events using Stencil's @Event() decorators\n this.change.emit(detailValue);\n }\n\n /**\n * Update the mutable value prop to reflect current files.\n * For direct usage, we want to include all files (new and existing).\n * @internal\n */\n private updateValueProp() {\n try {\n if (this.allowMultiple) {\n this.value = [...this.files];\n } else {\n this.value = this.files.length > 0 ? this.files[0] : null;\n }\n } catch (error) {\n console.error('Error updating value prop:', error);\n }\n }\n\n /**\n * Handles drag over events. Prevents default behavior to allow drop.\n * @param event - Drag event\n * @internal\n */\n private handleDragOver = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n };\n\n /**\n * Handles drag enter events. Adds highlight styling to drop area.\n * @param event - Drag event\n * @internal\n */\n private handleDragEnter = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter++;\n dropArea.classList.add('highlight');\n };\n\n /**\n * Handles drag leave events. Removes highlight styling when drag exits.\n * @param event - Drag event\n * @internal\n */\n private handleDragLeave = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter--;\n if (this.dragCounter === 0) {\n dropArea.classList.remove('highlight');\n }\n };\n\n /**\n * Handles drop events. Processes dropped files and adds them to the component.\n * @param event - Drop event\n * @internal\n */\n private handleDrop = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n dropArea.classList.remove('highlight');\n\n const files = event.dataTransfer.files;\n this.handleFiles(files);\n };\n\n /**\n * Handles file input change events from the hidden input element.\n * @param event - Input change event\n * @internal\n */\n private handleFileInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n\n if (input.files && input.files.length > 0) {\n this.handleFiles(input.files);\n }\n\n // Reset the input value so the same file can be selected again\n input.value = '';\n this.fileWindowOpen = false;\n };\n\n /**\n * Processes a FileList and adds valid files to the component.\n * Handles validation and multiple file constraints.\n * @param files - FileList from input or drop event\n * @internal\n */\n private handleFiles = (files: FileList) => {\n if (files.length === 0) return;\n\n const currentFiles = [...this.files];\n const newValidFiles: File[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n // Validate file name\n if (!file.name || file.name.trim() === '') {\n continue;\n }\n\n // Check for duplicates\n const isDuplicate = currentFiles.some(existingFile =>\n existingFile.name === file.name && existingFile.size === file.size\n );\n\n if (isDuplicate) {\n continue;\n }\n\n // Validate file type if restrictions are set\n if (!this.isFileTypeAllowed(file)) {\n continue;\n }\n\n newValidFiles.push(file);\n\n // If not allowing multiple files, only take the first valid file\n if (!this.allowMultiple) {\n break;\n }\n }\n\n if (newValidFiles.length > 0) {\n if (this.allowMultiple) {\n this.files = [...currentFiles, ...newValidFiles];\n } else {\n // Replace existing files if not allowing multiple\n this.files = [newValidFiles[0]];\n }\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n }\n\n /**\n * Validates if a file type is allowed based on component configuration.\n * @param file - File to validate\n * @returns True if file type is allowed\n * @internal\n */\n private isFileTypeAllowed(file: File): boolean {\n if (!file.name) {\n return false;\n }\n\n const extension = file.name.split('.').pop()?.toLowerCase();\n\n if (!extension) {\n return false;\n }\n\n // If allowedFileTypes is set, only allow those types\n if (this.allowedFileTypes && this.allowedFileTypes.length > 0) {\n return this.allowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If disallowedFileTypes is set, reject those types\n if (this.disallowedFileTypes && this.disallowedFileTypes.length > 0) {\n return !this.disallowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If no restrictions, allow all types\n return true;\n }\n\n /**\n * Handles browse files button click. Opens the file browser dialog.\n * @param event - Click event\n * @internal\n */\n private handleBrowseFiles = (event: Event) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n // Ensure hiddenInput is initialized before trying to use it\n if (!this.hiddenInput) {\n console.error('File input not initialized yet, attempting to create it now...');\n // Try to create it on-demand as a fallback\n try {\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n } catch (error) {\n console.error('Failed to create file input:', error);\n return;\n }\n }\n\n this.fileWindowOpen = true;\n this.hiddenInput.click();\n };\n\n /**\n * Removes a file from the component by index. Updates internal state and cleans up references.\n * @param index - Index of file to remove\n * @internal\n */\n private handleRemoveFile = (index: number) => {\n if (this.disabled || this.readonly) {\n return;\n }\n const fileToRemove = this.files[index];\n\n // Clean up existing file reference if it exists\n if (this.existingFileReferences.has(fileToRemove.name)) {\n this.existingFileReferences.delete(fileToRemove.name);\n }\n\n this.files.splice(index, 1);\n this.files = [...this.files];\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n\n /**\n * Triggers download of a file. Handles both new files and existing UDP Drive files.\n * For UDP Drive files, downloads the content from the server first.\n * @param file - File to download\n * @internal\n */\n async downloadFile(file: File) {\n if (this.disabled) {\n return;\n }\n try {\n // Check if this is a placeholder for a UdpDriveFile\n const udpDriveFile = this.existingFileReferences.get(file.name);\n\n if (udpDriveFile) {\n // Download the actual file content from UdpDrive\n const actualFile = await this.createFileFromUdpDriveFile(udpDriveFile);\n\n // Create a temporary URL for the downloaded file\n const url = URL.createObjectURL(actualFile);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = actualFile.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n } else {\n // Regular file - create download directly\n const url = URL.createObjectURL(file);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = file.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n }\n } catch (error) {\n console.error('Error downloading file:', error);\n }\n }\n\n /**\n * Component lifecycle method. Cleans up the hidden file input.\n * @internal\n */\n disconnectedCallback() {\n if (this.hiddenInput) {\n document.body.removeChild(this.hiddenInput);\n this.hiddenInput = null;\n }\n }\n\n /**\n * Renders the file upload component with drag-and-drop area, browse button, and file list.\n * @returns JSX element or null if not ready\n * @internal\n */\n render() {\n // if (!this.hiddenInput) {\n // return null;\n // }\n const isError = !!this.errorMessage;\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--full-width': this.fullWidth,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n >\n <div\n id={!this.hideDragAndDrop ? 'drop-area' : 'outer-container'}\n onDragOver={this.handleDragOver}\n onDrop={this.handleDrop}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n class={!this.hideDragAndDrop ? (this.fullWidth ? 'full-width' : 'contained-width') : ''}\n >\n {!this.hideDragAndDrop ? (\n <unity-typography>\n <p>{this.dragAndDropMessage}</p>\n {!this.hideButton ? <p>or</p> : ''}\n </unity-typography>\n ) : (\n ''\n )}\n\n {!this.hideButton ? (\n <custom-button\n label={this.browseFileMessage}\n onClick={(e) => this.handleBrowseFiles(e)}\n id={'udpRecord-file-upload-' + this.id}\n disabled={this.disabled || this.readonly}\n //@ts-ignore\n udprecordid={'udpRecord-file-upload-' + this.id}\n />\n ) : (\n ''\n )}\n\n {this.files.length > 0 && (\n <div class={!this.hideDragAndDrop ? 'container' : ''}>\n <div class={!this.hideDragAndDrop ? 'inner-container' : ''}>\n {this.files.map((file, index) => {\n const isExistingFile = this.existingFileReferences.has(file.name);\n return (\n <div class={!this.hideDragAndDrop ? 'file-container' : ''} key={index}>\n <div class=\"file-text\" onClick={() => this.downloadFile(file)} style={{ cursor: this.disabled ? 'not-allowed' : 'pointer', textDecoration: 'underline' }}>\n <unity-typography>\n {file.name}\n {isExistingFile && <span style={{ fontSize: '0.8em', opacity: '0.7' }}> (saved)</span>}\n </unity-typography>\n </div>\n <div>\n <stencil-icon-button showLabel={false} icon={Close24} onClick={() => this.handleRemoveFile(index)} disabled={this.disabled || this.readonly} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n {this.errorMessage ? (\n <div id=\"error-text\">\n <unity-typography>{this.errorMessage}</unity-typography>\n </div>\n ) : (\n ''\n )}\n </div>\n </Host>\n );\n }\n}\n","@import '../inputs.css';\n\n/* selectable-list.css */\n\n:host {\n display: block;\n }\n\n/* Size variants for selectable list items */\n:host(.udp-input--size-small) li {\n padding: var(--spacing-02) var(--spacing-03);\n font-size: var(--caption-font-size, 0.875rem);\n}\n\n:host(.udp-input--size-normal) li {\n padding: var(--spacing-03) var(--spacing-04);\n font-size: var(--body-font-size);\n}\n\n:host(.udp-input--size-large) li {\n padding: var(--spacing-04) var(--spacing-05);\n font-size: var(--body-font-size);\n}\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n \n li {\n padding: var(--spacing-03) var(--spacing-04); /* Default padding, overridden by density variants */\n cursor: pointer;\n transition: background-color 0.3s ease;\n }\n \n li:hover {\n background-color: #f0f0f0;\n color: var(--text-color)\n }\n \n .selected {\n background-color: var(--primary-color);\n color: white\n }\n \n label {\n cursor: pointer\n } \n input {\n cursor: pointer\n }\n .error{\n color: var(--error-color-main)\n }","import {\n Component,\n Prop,\n State,\n h,\n Host,\n Element,\n Watch,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { InputSize, InputMargin } from '../input-types';\n/**\n * A standardized selectable list component with single/multi-select support and various display options.\n * Supports both controlled and uncontrolled modes.\n *\n * This component emits a custom `change` event with the committed value and also\n * propagates standard DOM events like `input`, `focus`, and `blur` from the\n * underlying input element.\n *\n * @example\n * ```tsx\n * // Uncontrolled component with initial selection\n * <selectable-list\n * items={countries}\n * displayKey=\"name\"\n * valueKey=\"id\"\n * initialValue=\"1,2\"\n * multiSelect={true}\n * onChange={(e) => console.log('Selected:', e.detail)}\n * />\n *\n * // Controlled component\n * <selectable-list\n * items={items}\n * displayKey=\"name\"\n * valueKey=\"id\"\n * value={selectedValue}\n * onChange={(e) => setSelectedValue(e.detail)}\n * />\n *\n * // With checkboxes and validation\n * <selectable-list\n * items={options}\n * displayKey=\"label\"\n * valueKey=\"value\"\n * useCheckbox={true}\n * required={true}\n * error={selectionError}\n * value={selectedOptions}\n * onChange={handleSelectionChange}\n * />\n * ```\n */\n@Component({\n tag: 'selectable-list',\n styleUrl: 'selectable-list.css',\n shadow: true,\n})\nexport class SelectableList {\n @Element() el: HTMLElement;\n\n /**\n * Whether the field is disabled. When true, items cannot be selected or deselected.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * When true, the component is in a read-only state. Items can be viewed but not selected or deselected.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Size variant controlling the padding and spacing of the list items.\n * - 'small': Compact spacing for data-heavy interfaces\n * - 'normal': Standard spacing (default)\n * - 'large': Generous spacing for accessibility\n */\n @Prop() size: InputSize = 'normal';\n\n /**\n * Margin variant for the input spacing.\n * - 'none': No margin\n * - 'dense': Minimal margin spacing\n * - 'normal': Standard margin spacing (default)\n */\n @Prop() margin: InputMargin = 'normal';\n\n /**\n * Whether multiple items can be selected. When false, only one item can be selected at a time.\n */\n @Prop() multiSelect: boolean = false;\n\n /**\n * Array of items to display in the list. Each item should be an object with properties for display and value.\n */\n @Prop() items: any[] = [];\n\n /**\n * Property name from item objects to use for display text. Required for proper rendering.\n */\n @Prop() displayKey: string = '';\n\n /**\n * Whether to render items with checkboxes/radio buttons instead of plain list items.\n */\n @Prop() useCheckbox: boolean = false;\n\n /**\n * Initial value for the selectable list. Used for uncontrolled components to set the default selection.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * Only used when `value` prop is not provided.\n */\n @Prop() initialValue: string;\n\n /**\n * Current value of the selectable list. When provided, makes this a controlled component.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * The component will use this value and update it through events.\n */\n @Prop({ mutable: true }) value: string;\n\n /**\n * Whether the field is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Property name from item objects to use for the actual value. Required for proper functionality.\n */\n @Prop() valueKey: string = '';\n\n /**\n * Error message to display below the list. Shows validation errors or other issues.\n */\n @Prop() error: string = '';\n\n /**\n * Unique identifier for the list element. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for form submission. Used for radio button grouping when useCheckbox is true.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the list. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * Internal items state with selection status. Manages item display and selection state.\n * @internal\n */\n @State() internalItems: any[] = [];\n\n /**\n * Internal value state. Manages the current selected value(s) independently of props.\n * @internal\n */\n @State() internalValue: string = '';\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Emitted when the selection changes (on item click, etc.).\n * Provides the final committed value when user makes a selection.\n *\n * @event change\n * @param {string} value - The current selected value(s), comma-separated for multi-select\n *\n * @example\n * ```tsx\n * <selectable-list onChange={(e) => handleSelectionChange(e.detail)} />\n * ```\n */\n @Event() change: EventEmitter<string>;\n\n\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Updates the internal value when initialValue prop changes.\n * Only updates if current value is empty or if this is an uncontrolled component.\n * @internal\n */\n @Watch('initialValue')\n initialValueChanged(newValue: string) {\n // Only update if we don't have a value yet or if this is uncontrolled (no value prop)\n if ((this.internalValue === '' || this.internalValue === undefined) || this.value === undefined) {\n if (newValue !== undefined) {\n this.internalValue = newValue;\n this.updateItemSelection(newValue);\n }\n }\n }\n\n /**\n * Updates the internal value when value prop changes.\n * For controlled components, the value prop takes precedence.\n * @internal\n */\n @Watch('value')\n valueChanged() {\n // If value prop is provided, this is a controlled component\n if (this.value !== undefined && this.value !== this.internalValue) {\n this.internalValue = this.value;\n this.updateItemSelection(this.value);\n }\n }\n\n /**\n * Re-initializes items when the items prop changes.\n * @internal\n */\n @Watch('items')\n itemsChanged() {\n // Re-initialize when items change\n this.initializeItems();\n }\n /**\n * Component lifecycle method. Initializes error message, internal value, and items.\n * @internal\n */\n componentWillLoad() {\n // Initialize value: use value prop if provided (controlled), otherwise use initialValue (uncontrolled)\n this.internalValue = this.value !== undefined ? this.value : (this.initialValue || '');\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n this.initializeItems();\n }\n\n /**\n * Initializes the internal items array with proper selection state.\n * @internal\n */\n private initializeItems() {\n if (!this.valueKey) {\n console.error('valueKey is required');\n this.internalItems = this.items;\n return;\n }\n\n this.updateItemSelection(this.internalValue);\n }\n\n /**\n * Updates the selection state of items based on the provided value.\n * @param selectedValue - Comma-separated string of selected values\n * @internal\n */\n private updateItemSelection(selectedValue: string) {\n if (!selectedValue || !this.valueKey) {\n this.internalItems = [...this.items];\n return;\n }\n\n const selectedItems = this.items.filter(item =>\n selectedValue.split(',').includes(item[this.valueKey])\n );\n\n let filteredSelectedItems = selectedItems;\n if (selectedItems.length > 1 && !this.multiSelect) {\n filteredSelectedItems = [selectedItems[0]];\n console.warn('multiple values are selected, but multiselect is disabled');\n }\n\n const items = this.items.map(item => ({\n ...item,\n selected: filteredSelectedItems.some(selectedItem =>\n selectedItem[this.valueKey] === item[this.valueKey]\n )\n }));\n\n this.internalItems = items;\n }\n /**\n * Gets the currently selected items from the items array.\n * @param items - Optional items array to check, defaults to internal items\n * @returns Array of selected items\n * @internal\n */\n getSelectedItems(items: any[] = null): any[] {\n const itemsToCheck = items ?? this.internalItems;\n return itemsToCheck.filter(item => item.selected) ?? [];\n }\n\n /**\n * Gets the current value as a comma-separated string of selected values.\n * @param items - Optional items array to check, defaults to internal items\n * @returns Comma-separated string of selected values\n * @internal\n */\n getValue(items: any[] = null): string {\n const itemsToCheck = items ?? this.internalItems\n return this.getSelectedItems(itemsToCheck).map(item => item[this.valueKey] ?? item[this.displayKey]).join(',') ?? \"\"\n }\n\n\n /**\n * Handles item click events. Updates selection state and emits events.\n * For controlled components, also updates the value prop.\n * @param item - The clicked item\n * @internal\n */\n private handleItemClick = (item: any) => {\n if (this.disabled || this.readonly) return;\n let newItems = [...this.internalItems];\n const selectedIndex = this.internalItems.findIndex(\n selectedItem => (this.valueKey && selectedItem[this.valueKey] === item[this.valueKey]) || (!this.valueKey && selectedItem === item),\n );\n\n newItems.splice(selectedIndex, 1, {...item, selected: !item.selected});\n if (!this.multiSelect && !item.selected) {\n newItems = newItems.map((item, i) => ({...item, selected: i === selectedIndex}))\n }\n this.internalItems = newItems;\n\n // Update internal value state\n const newValue = this.getValue(newItems);\n this.internalValue = newValue;\n\n // If this is a controlled component (value prop provided), update the value prop\n if (this.value !== undefined) {\n this.value = newValue;\n }\n\n // Emit events for real-time and committed updates\n this.change.emit(newValue);\n }\n /**\n * Renders the selectable list component.\n * @returns JSX element or null if valueKey is not provided\n * @internal\n */\n render() {\n if(!this.valueKey)\n return null;\n const isError = !!this.errorMessage;\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n 'udp-input--required': this.required,\n 'udp-input--multi-select': this.multiSelect,\n [`udp-input--size-${this.size}`]: true,\n [`udp-input--margin-${this.margin}`]: true,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-required={this.required ? 'true' : 'false'}\n >\n <ul>\n {this.internalItems.map((item, i) => (\n <li\n key={item.id || item[this.displayKey]}\n onClick={() => this.handleItemClick(item)}\n class={item.selected && !this.useCheckbox ? 'selected' : ''}\n id={'udpRecord-selectable-list-input-' + i + '-' + this.id}\n //@ts-ignore\n udprecordid={'udpRecord-selectable-list-input-' + i + '-' + this.id}\n >\n {this.useCheckbox ? (\n <label>\n <input\n type={this.multiSelect ? 'checkbox' : 'radio'}\n name={this.name || ((this.valueKey && item[this.valueKey]) || (item.id ?? item[this.displayKey]))}\n disabled={this.disabled || this.readonly}\n value={(this.valueKey && item[this.valueKey]) || (item.id ?? item[this.displayKey])}\n checked={item.selected}\n onChange={() => this.handleItemClick(item)}\n />\n {item[this.displayKey]}\n </label>\n ) : (\n <div>{item[this.displayKey]}</div>\n )}\n </li>\n ))}\n {this.errorMessage && <unity-typography class=\"error\" variant='caption-text' color=\"error\">{this.errorMessage}</unity-typography>}\n </ul>\n </Host>\n );\n }\n}\n","stencil-field.css\n:host {\n display: block;\n padding: 16px;\n background-color: #f4f4f4; /* A lighter gray typical of Carbon backgrounds */\n }\n \n input[type=\"checkbox\"], input[type=\"radio\"] {\n appearance: none;\n background-color: #fff;\n border: 2px solid #8d8d8d; /* Carbon's default border color */\n width: 20px; /* Typical size for touch targets */\n height: 20px; /* Square dimension for checkbox, circular for radio */\n border-radius: 50%; /* Full circle for radios, adjust for checkbox if needed */\n position: relative;\n cursor: pointer; /* Pointer to indicate clickable */\n transition: all 0.3s ease; /* Smooth transition for visual feedback */\n }\n \n input[type=\"checkbox\"] {\n border-radius: 2px; /* Slightly rounded corners for checkboxes */\n }\n \n input[type=\"radio\"]:checked, input[type=\"checkbox\"]:checked {\n background-color: var(--primary-color);\n border-color: var(--primary-color);\n }\n \n input[type=\"radio\"]:checked::before, input[type=\"radio\"]:checked::before {\n content: '';\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 12px;\n height: 12px;\n background-color: white;\n border-radius: 50%; /* Circle inside radio or checkbox */\n }\n\n input[type=\"checkbox\"]:checked::before {\n content: '\\2714'; /* Unicode character for checkmark */\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n font-size: 14px; /* Adjust size as needed */\n color: white; /* Make sure the color is white */\n}\n\n \n\n .checkbox-container, .radio-container {\n display: flex;\n align-items: center; /* Vertical alignment */\n cursor: pointer;\n}\n\ninput[type=\"checkbox\"], input[type=\"radio\"] {\n margin-right: 8px; /* Space between the checkbox and the label */\n}\n\nlabel {\n margin: 0; /* Remove default margin */\n display: block; /* Optional: ensures the label uses the full height */\n line-height: 1; /* Aligns text properly within the flex container */\n display: flex;\n align-items: center;\n}\n\n","/**\n * StencilField - Form field wrapper component that integrates with Final Form\n *\n * This component acts as a bridge between form input components and Final Form state management.\n * It uses slot-based rendering and property injection to work with any child input component.\n *\n * REQUIREMENTS FOR CHILD COMPONENTS:\n *\n * 1. VALUE HANDLING:\n * - SIMPLE INPUTS: Manage own value state, receive initialValue prop from stencil-field\n * - COMPLEX INPUTS: Same approach - internal value management with initialValue\n * - stencil-field reads values from DOM events or custom events, never directly modifies component value\n *\n * 2. ERROR HANDLING:\n * - Child component should have an @Prop() error: string\n * - Use @Watch('error') to react to validation errors\n *\n * 3. EVENT HANDLERS:\n * - Child component must emit standard DOM events (input, change, blur, focus)\n * - SIMPLE INPUTS: Standard HTML input/textarea that emits native events\n * - COMPLEX INPUTS: Emit CustomEvent with detail containing the value\n *\n * 4. STANDARD FORM PROPS:\n * - @Prop() name: string (for form field identification)\n * - @Prop() id: string (for accessibility)\n * - @Prop() label: string (for field labeling)\n * - @Prop() initialValue: string (for setting initial/default values)\n *\n * EXAMPLE SIMPLE INPUT:\n * ```tsx\n * @Component({ tag: 'simple-input' })\n * export class SimpleInput {\n * @Prop() error: string;\n * @Prop() name: string;\n * @Prop() id: string;\n * @Prop() label: string;\n * @Prop() initialValue: string;\n * @State() value: string;\n *\n * componentWillLoad() {\n * this.value = this.initialValue || '';\n * }\n *\n * private onChange = (e: Event) => {\n * this.value = (e.target as HTMLInputElement).value;\n * }\n *\n * render() {\n * return <input name={this.name} id={this.id} value={this.value} onInput={this.onChange} />;\n * }\n * }\n * ```\n *\n * EXAMPLE COMPLEX INPUT:\n * ```tsx\n * @Component({ tag: 'complex-input' })\n * export class ComplexInput {\n * @Prop() error: string;\n * @Prop() name: string;\n * @Prop() id: string;\n * @Prop() label: string;\n * @Prop() initialValue: string;\n * @State() value: string;\n *\n * componentWillLoad() {\n * this.value = this.initialValue || '';\n * }\n *\n * @Watch('error')\n * updateError() {\n * // Handle error display\n * }\n *\n * private onChange = (newValue: string) => {\n * this.value = newValue; // Update internal state\n * // Emit custom event for stencil-field\n * this.el.dispatchEvent(new CustomEvent('input', {\n * detail: newValue,\n * bubbles: true\n * }));\n * }\n * }\n * ```\n *\n * USAGE:\n * ```tsx\n * <!-- Simple input with initial value -->\n * <stencil-field name=\"email\" label=\"Email\" required>\n * <simple-input />\n * </stencil-field>\n *\n * <!-- Complex component -->\n * <stencil-field name=\"tags\" label=\"Tags\" required>\n * <tag-selector />\n * </stencil-field>\n * ```\n */\nimport { Component, Prop, h, State, Listen, Element, Method } from '@stencil/core';\n\n@Component({\n tag: 'stencil-field',\n styleUrl: 'stencil-field.css',\n shadow: false,\n})\nexport class StencilField {\n @Element() el: HTMLElement;\n @Prop() id: string;\n @Prop() defaultValue: string;\n @Prop() name: string;\n @Prop() label: string;\n @Prop() required: boolean = false;\n @Prop({ mutable: true }) value: string;\n @State() errorMessage: string;\n @State() registered: boolean = false;\n @State() finalFormBlur: (e: Event) => void = () => {};\n @State() finalFormChange: (value: any) => void = () => {};\n @State() finalFormFocus: (e: Event) => void = () => {};\n\n private state: any;\n\n @Method()\n async setFormApi(formApi: any) {\n this.state = formApi;\n this.state.api.registerField(\n this.name,\n fieldState => {\n const { blur, change, focus, value } = fieldState;\n if (!this.state.registeredFields[this.name]) {\n this.state.registeredFields[this.name] = { required: this.required };\n // first time, register event listeners\n\n this.finalFormBlur = () => {\n blur();\n this.errorMessage = this.state.api.getFieldState(this.name)?.error;\n };\n this.finalFormChange = event => {\n change(event);\n // reset the error on change, error state will be re-evaluated when the blur event is triggered\n this.errorMessage = '';\n // Force re-render to inject cleared error into child components\n this.injectPropsIntoSlottedElements();\n };\n this.finalFormFocus = focus;\n this.registered = true;\n }\n\n // update value\n\n this.value = value;\n },\n {\n value: true,\n error: false,\n touched: false,\n },\n );\n }\n\n componentDidRender() {\n this.injectPropsIntoSlottedElements();\n }\n\n componentDidUpdate() {\n this.injectPropsIntoSlottedElements();\n }\n\n private injectPropsIntoSlottedElements() {\n const hasSlottedContent = this.el.children.length > 0;\n\n if (hasSlottedContent) {\n Array.from(this.el.children).forEach((element: any) => {\n // Inject form field props\n // Pass initial value only, don't control the component's value directly\n if (this.value !== undefined && !element.hasAttribute('data-initial-value-set')) {\n element.initialValue = this.value;\n element.setAttribute('data-initial-value-set', 'true');\n }\n\n // Always update error state (including clearing it)\n element.error = this.errorMessage || '';\n\n if (this.name) element.name = this.name;\n if (this.id) element.id = this.id;\n if (this.label) element.label = this.label;\n\n // Set up event handlers if not already bound\n if (!element.hasAttribute('data-field-events-bound')) {\n element.addEventListener('input', this.handleInput.bind(this));\n element.addEventListener('change', this.handleChange.bind(this));\n element.addEventListener('blur', this.handleBlur.bind(this));\n element.addEventListener('focus', this.handleFocus.bind(this));\n element.setAttribute('data-field-events-bound', 'true');\n }\n });\n }\n }\n\n disconnectedCallback() {\n // Clean up the field from the registry when component is unmounted\n if (!this.name) {\n return;\n }\n if (this.state.registeredFields[this.name]) {\n delete this.state.registeredFields[this.name];\n }\n\n // Final Form automatically handles field cleanup when no longer subscribed,\n // but we can also explicitly remove the field value if needed\n try {\n if (this.state.api?.change) {\n this.state.api.change(this.name, undefined);\n }\n } catch (error) {\n // Silently handle any errors during cleanup\n console.debug('Field cleanup warning:', error);\n }\n\n // Reset registration state\n this.registered = false;\n }\n\n @Listen('input')\n handleInput(e: Event) {\n let value;\n\n // Handle custom events from complex components\n if (e instanceof CustomEvent && e.detail !== undefined) {\n value = e.detail;\n } else {\n // Handle standard DOM events - need to find the actual input element\n const target = e.target as HTMLElement;\n\n // If target is a custom component, look for the actual input in its shadow DOM\n if (target.shadowRoot) {\n const input = target.shadowRoot.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n if (input) {\n value = input.value;\n }\n }\n // If target is the actual input element\n else if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n value = (target as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement).value;\n }\n // Fallback: check if the custom component has a value property\n else if ('value' in target) {\n value = (target as any).value;\n }\n }\n\n if (value !== undefined) {\n this.finalFormChange?.(value);\n }\n }\n\n @Listen('change')\n handleChange(e: Event) {\n let value;\n\n // Handle custom events from complex components\n if (e instanceof CustomEvent && e.detail !== undefined) {\n value = e.detail;\n } else {\n // Handle standard DOM events - need to find the actual input element\n const target = e.target as HTMLElement;\n\n // If target is a custom component, look for the actual input in its shadow DOM\n if (target.shadowRoot) {\n const input = target.shadowRoot.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n if (input) {\n value = input.value;\n }\n }\n // If target is the actual input element\n else if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n value = (target as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement).value;\n }\n // Fallback: check if the custom component has a value property\n else if ('value' in target) {\n value = (target as any).value;\n }\n }\n\n if (value !== undefined) {\n this.finalFormChange?.(value);\n // For complex components that emit custom events, also trigger blur validation\n if (e instanceof CustomEvent) {\n this.finalFormBlur?.(e);\n }\n }\n }\n\n @Listen('focus')\n handleFocus(e: FocusEvent) {\n this.finalFormFocus?.(e);\n }\n\n @Listen('blur')\n handleBlur(e: FocusEvent) {\n this.finalFormBlur?.(e);\n }\n\n @Listen('stencilFormInvalidEvent', {target: 'body'})\n stencilInvalid(e){\n this.finalFormBlur(e);\n }\n render() {\n if (!this.registered) {\n return null;\n }\n\n // Always use slot-based rendering\n return <slot />;\n }\n}\n"],"version":3}
1
+ {"file":"file-upload.selectable-list.stencil-field.entry.cjs.js","mappings":"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","names":["isFileReference","parseFileReferences","ConfigService","axios","h","Host","index","Close24"],"sources":["src/components/my-component/UI/inputs/file-upload/file-upload.css?tag=file-upload&encapsulation=shadow","src/components/my-component/UI/inputs/file-upload/file-upload.tsx","src/components/my-component/UI/inputs/selectable-list/selectable-list.css?tag=selectable-list&encapsulation=shadow","src/components/my-component/UI/inputs/selectable-list/selectable-list.tsx","src/components/my-component/UI/forms/form/stencil-field.tsx"],"sourcesContent":["/* file-upload.css */\n#drop-area {\n height: 200px;\n border: 2px dashed #ccc;\n border-radius: 5px;\n padding: 20px;\n text-align: center;\n font-family: Arial, sans-serif;\n overflow-y: auto;\n margin-top: 10px;\n margin-bottom: 10px;\n}\n\n#outer-container {\n padding: 10px 5px;\n\n}\n\n#drop-area.highlight {\n border-color: var(--primary-color);\n}\n\n#error-text {\n color: var(--error-color-main);\n}\n\n#add-button {\n border-radius: 5;\n}\n\n#remove-button {\n width: 10px;\n height: 10px;\n margin-left: 5px;\n border: 'none';\n background: 'none';\n cursor: 'pointer';\n}\n\n.file-container {\n display: flex; \n flex-direction: row;\n align-items: center;\n}\n\n.full-width {\n width: auto\n}\n\n.contained-width {\n width: 300px;\n\n}\n.file-text {\n float: left\n}\n.inner-container {\n display: flex;\n justify-content: center;\n flex-direction: row;\n}\n.container {\n display: flex;\n flex-direction: row;\n justify-content: center;\n overflow-y: auto;\n}","import { Component, State, h, Host, Prop, Watch, Element, Event, EventEmitter } from '@stencil/core';\nimport { UdpDriveFile } from '../../../../../global/types';\nimport { ConfigService } from '../../../../../udp-utilities/api-config';\nimport Close24 from '@carbon/icons/es/close/24';\nimport axios from 'axios';\nimport { isFileReference, parseFileReferences } from './udp-drive-utils';\n\n/**\n * A comprehensive file upload component with drag-and-drop support, file type validation,\n * and integration with UDP Drive for existing file management.\n * Supports both new file uploads and existing file management with download capabilities.\n *\n * This component emits a custom `change` event with the committed value and also\n * propagates standard DOM events like `input`, `focus`, and `blur` from the\n * underlying input element.\n *\n * **File Handling Modes:**\n * - **New Files**: Regular File objects that need to be uploaded\n * - **Existing Files**: UdpDriveFile objects that are already stored on the server\n * - **Mixed Mode**: Combination of new and existing files\n *\n * **Value Patterns:**\n * - `initialValue`: For setting default files (UdpDriveFile[], File[], or mixed)\n * - `value`: For direct file access (always File[] for consistency)\n *\n * @example\n * ```tsx\n * // Basic file upload\n * <file-upload\n * allowMultiple={true}\n * onChange={(e) => console.log('Files:', e.detail.files)}\n * />\n *\n * // With existing UDP Drive files\n * <file-upload\n * initialValue={existingUdpFiles}\n * allowMultiple={true}\n * onChange={(e) => handleFileChange(e.detail)}\n * />\n *\n * // With file type restrictions\n * <file-upload\n * allowedFileTypes={['pdf', 'doc', 'docx']}\n * required={true}\n * error={fileError}\n * onChange={handleDocumentUpload}\n * />\n *\n * // Drag and drop disabled\n * <file-upload\n * hideDragAndDrop={true}\n * browseFileMessage=\"Select Images\"\n * allowedFileTypes={['jpg', 'png', 'gif']}\n * onChange={handleImageUpload}\n * />\n * ```\n */\n@Component({\n tag: 'file-upload',\n styleUrl: 'file-upload.css',\n shadow: true,\n})\nexport class FileUpload {\n /**\n * Whether multiple files can be selected. When false, only one file can be uploaded at a time.\n */\n @Prop() allowMultiple: boolean;\n\n /**\n * Array of allowed file extensions (without dots). When specified, only these file types are accepted.\n * Example: ['pdf', 'doc', 'docx', 'jpg', 'png']\n * Mutually exclusive with disallowedFileTypes.\n */\n @Prop() allowedFileTypes: Array<string>;\n\n /**\n * Array of disallowed file extensions (without dots). When specified, these file types are rejected.\n * Example: ['exe', 'bat', 'scr']\n * Mutually exclusive with allowedFileTypes.\n */\n @Prop() disallowedFileTypes: Array<string>;\n\n /**\n * Whether the component should take the full width of its container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * Whether file selection is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Error message to display below the component. Shows validation errors or upload issues.\n */\n @Prop() error: string;\n\n /**\n * Message displayed in the drag-and-drop area. Customizes the user guidance text.\n */\n @Prop() dragAndDropMessage: string = 'Drag and drop your files here';\n\n /**\n * Text displayed on the browse files button. Customizes the button label.\n */\n @Prop() browseFileMessage: string = 'Browse Files';\n\n /**\n * Whether to hide the drag-and-drop area. When true, only the browse button is shown.\n */\n @Prop() hideDragAndDrop: boolean = false;\n\n /**\n * Whether to hide the browse files button. When true, only drag-and-drop is available.\n */\n @Prop() hideButton: boolean = false;\n\n /**\n * Unique identifier for the component. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for form submission. Used for form data collection.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the component. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * When true, all interactions with the component are disabled.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * When true, the component is in a read-only state. Files can be viewed and downloaded, but not added or removed.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Initial files to display in the component. Supports multiple formats:\n * - UdpDriveFile: Existing files stored on UDP Drive (displayed with \"(saved)\" indicator)\n * - File: New file objects ready for upload\n * - string: Legacy support for file references\n * - Arrays: Multiple files of any supported type\n *\n * UdpDriveFiles are converted to placeholder File objects for consistent handling.\n */\n @Prop() initialValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string;\n\n /**\n * Current files in the component. Always contains File objects for consistent API.\n * When files are added/removed, this prop is updated automatically.\n * For external access to uploaded files, use the change/input events.\n */\n @Prop({ mutable: true }) value: File | File[];\n\n /**\n * Array of currently selected/uploaded files. Managed internally by the component.\n * @internal\n */\n @State() files: File[] = [];\n\n /**\n * Whether the file browser window is currently open. Used for UI state management.\n * @internal\n */\n @State() fileWindowOpen: boolean = false;\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Map of file names to their original UdpDriveFile references.\n * Tracks which files are existing (saved) vs new (to be uploaded).\n * @internal\n */\n @State() existingFileReferences: Map<string, Partial<UdpDriveFile>> = new Map();\n\n /**\n * Emitted when files are added, removed, or changed.\n * Provides both string representation and File objects for flexible handling.\n *\n * @event change\n * @param {object} detail - File change details\n * @param {string} detail.value - Comma-separated file references with UDP Drive IDs\n * @param {File[]} detail.files - Array of new File objects that need to be uploaded\n * @param {string} detail.toString() - String representation for form serialization\n *\n * @example\n * ```tsx\n * <file-upload onChange={(e) => {\n * console.log('String value:', e.detail.value);\n * console.log('Files to upload:', e.detail.files);\n * console.log('Form value:', e.detail.toString());\n * }} />\n * ```\n */\n @Event() change: EventEmitter<{\n value: string;\n files: File[];\n toString(): string;\n valueOf(): string;\n }>;\n\n\n\n @Element() el: HTMLElement;\n\n /**\n * Hidden file input element for triggering file browser. Created programmatically.\n * @internal\n */\n private hiddenInput: HTMLInputElement;\n\n /**\n * Counter for drag events to properly handle drag enter/leave. Prevents flickering.\n * @internal\n */\n private dragCounter: number = 0;\n\n /**\n * Flag to track if the component has been initialized to prevent re-processing during lifecycle events.\n * @internal\n */\n private isInitialized: boolean = false;\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Watches for changes to initialValue prop and processes the new files.\n * Handles conversion of UdpDriveFile objects to File objects.\n * @param newValue - New initial value containing files to process\n * @internal\n */\n @Watch('initialValue')\nasync initialValueChanged(newValue: UdpDriveFile | UdpDriveFile[] | File | File[] | string) {\n // Ignore event detail objects from self-emission to prevent cycles\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue) {\n return;\n }\n\n // Handle empty or null values by clearing the component\n if (!newValue) {\n this.files = [];\n this.existingFileReferences.clear();\n return;\n }\n\n try {\n this.existingFileReferences.clear();\n let processedFiles: File[] = [];\n\n // Case 1: The value is a special reference string\n if (typeof newValue === 'string' && isFileReference(newValue)) {\n processedFiles = await parseFileReferences(newValue);\n\n // After parsing, populate the map of existing UDP files so they are marked as \"(saved)\"\n for (const file of processedFiles) {\n if ((file as any).driveFileId) {\n const udpFile: Partial<UdpDriveFile> = {\n driveFileId: (file as any).driveFileId,\n name: file.name,\n extension: (file as any).extension || file.name.split('.').pop() || '',\n tenantId: null, // Dummy value, not needed for display\n productId: 0, // Dummy value\n path: '', // Dummy value\n };\n this.existingFileReferences.set(file.name, udpFile);\n }\n }\n }\n // Case 2: The value is an array of File or UdpDriveFile objects\n else if (Array.isArray(newValue)) {\n const files = await Promise.all(\n newValue.map(file => this.processInitialFile(file))\n );\n processedFiles = files.filter(file => file !== null);\n }\n // Case 3: The value is a single File or UdpDriveFile object\n else if (typeof newValue === 'object') {\n const file = await this.processInitialFile(newValue as File | UdpDriveFile);\n processedFiles = file ? [file] : [];\n }\n\n this.files = processedFiles;\n this.updateValueProp();\n\n } catch (error) {\n console.error('Error processing initial files:', error);\n this.files = [];\n this.existingFileReferences.clear();\n }\n}\n\n /**\n * Process an initial file, converting UdpDriveFile to File if needed.\n * Creates placeholder File objects for existing UDP Drive files.\n * @param file - File to process (UdpDriveFile or File)\n * @returns Promise resolving to a File object or null if invalid\n * @internal\n */\n private async processInitialFile(file: UdpDriveFile | File): Promise<File | null> {\n // Handle null/undefined input\n console.log(file)\n if (!file) {\n return null;\n }\n\n if (this.isUdpDriveFile(file)) {\n // For UdpDriveFile, create a placeholder File and track the reference\n try {\n const placeholderFile = this.createPlaceholderFileFromUdpDriveFile(file);\n // Track this as an existing file that doesn't need to be uploaded\n this.existingFileReferences.set(placeholderFile.name, file);\n return placeholderFile;\n } catch (error) {\n console.error('Error creating placeholder file from UdpDriveFile:', error);\n return null;\n }\n } else if (file instanceof File) {\n // Already a File object - this is a new file\n return file;\n } else {\n // Invalid object, return null\n return null;\n }\n }\n\n /**\n * Type guard to check if a file is a UdpDriveFile.\n * @param file - File object to check\n * @returns True if the file is a UdpDriveFile\n * @internal\n */\n private isUdpDriveFile(file: any): file is UdpDriveFile {\n return file && typeof file === 'object' && 'driveFileId' in file;\n }\n\n /**\n * Create a placeholder File object from UdpDriveFile without downloading content.\n * Used for display purposes and consistent File API.\n * @param udpFile - UdpDriveFile to convert\n * @returns Placeholder File object\n * @internal\n */\n private createPlaceholderFileFromUdpDriveFile(udpFile: UdpDriveFile): File {\n // Ensure we have required properties with fallbacks\n const extension = udpFile.extension || 'bin';\n const fileName = udpFile.name || `file.${extension}`;\n\n const placeholderBlob = new Blob([''], { type: this.getMimeTypeFromExtension(extension) });\n\n // Handle lastUpdated as either Date, string, or number\n let lastModified = Date.now();\n if (udpFile.lastUpdated) {\n if (typeof udpFile.lastUpdated === 'string' || typeof udpFile.lastUpdated === 'number') {\n lastModified = new Date(udpFile.lastUpdated).getTime();\n } else if (udpFile.lastUpdated instanceof Date) {\n lastModified = udpFile.lastUpdated.getTime();\n }\n }\n\n const file = new File([placeholderBlob], fileName, {\n type: placeholderBlob.type,\n lastModified: lastModified\n });\n\n return file;\n }\n\n /**\n * Create a File object from UdpDriveFile by downloading the content from the server.\n * Used when downloading existing files for user access.\n * @param udpFile - UdpDriveFile to download and convert\n * @returns Promise resolving to a File object with downloaded content\n * @internal\n */\n private async createFileFromUdpDriveFile(udpFile: Partial<UdpDriveFile>): Promise<File> {\n try {\n const downloadUrl = `${ConfigService.tenantV1ApiUrl}/UdpDrive/${udpFile.driveFileId}/stream`;\n\n const response = await axios({\n method: 'GET',\n url: downloadUrl,\n responseType: 'blob',\n timeout: 300000, // 5 minutes\n headers: {\n // Add authentication headers if needed\n // 'Authorization': `Bearer ${accessToken}`\n }\n });\n\n const blob = response.data;\n\n // Create a File object with the downloaded content\n // Use the udpFile.name or construct from extension\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n\n return new File([blob], fileName, {\n type: blob.type || this.getMimeTypeFromExtension(udpFile.extension),\n lastModified: udpFile.lastUpdated ? new Date(udpFile.lastUpdated).getTime() : Date.now()\n });\n } catch (error) {\n console.error('Error creating file from UdpDriveFile:', error);\n // Return a placeholder file if download fails\n const fileName = udpFile.name || `file.${udpFile.extension}`;\n return new File([''], fileName, { type: 'application/octet-stream' });\n }\n }\n\n /**\n * Get MIME type from file extension for proper file type handling.\n * @param extension - File extension without dot (e.g., \"pdf\", \"jpg\")\n * @returns MIME type string\n * @internal\n */\n private getMimeTypeFromExtension(extension: string): string {\n // Handle null/undefined extension\n if (!extension) {\n return 'application/octet-stream';\n }\n\n const mimeTypes: { [key: string]: string } = {\n 'pdf': 'application/pdf',\n 'doc': 'application/msword',\n 'docx': 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\n 'xls': 'application/vnd.ms-excel',\n 'xlsx': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',\n 'ppt': 'application/vnd.ms-powerpoint',\n 'pptx': 'application/vnd.openxmlformats-officedocument.presentationml.presentation',\n 'txt': 'text/plain',\n 'csv': 'text/csv',\n 'json': 'application/json',\n 'xml': 'application/xml',\n 'html': 'text/html',\n 'css': 'text/css',\n 'js': 'application/javascript',\n 'png': 'image/png',\n 'jpg': 'image/jpeg',\n 'jpeg': 'image/jpeg',\n 'gif': 'image/gif',\n 'svg': 'image/svg+xml',\n 'zip': 'application/zip',\n 'rar': 'application/x-rar-compressed',\n '7z': 'application/x-7z-compressed'\n };\n\n return mimeTypes[extension.toLowerCase()] || 'application/octet-stream';\n }\n\n /**\n * Component lifecycle method. Initializes the component and sets up file input.\n * @internal\n */\n async componentWillLoad() {\n // Prevent re-initialization if component is already initialized\n if (this.isInitialized) {\n return;\n }\n\n // Initialize hidden file input FIRST before any async operations\n this.dragCounter = 0;\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n\n if (this.allowedFileTypes && this.disallowedFileTypes) {\n throw new Error('allowedFileTypes and disallowedFileTypes are mutually exlusive, you cannot use both props');\n }\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n // Now do async operations after hiddenInput is ready\n // Initialize from initialValue (stencil-field usage) or value prop (direct usage)\n // Priority: initialValue > value > empty\n if (this.initialValue !== undefined && this.initialValue !== null && this.initialValue !== '') {\n await this.initialValueChanged(this.initialValue);\n } else if (this.value !== undefined && this.value !== null) {\n await this.processValueProp(this.value);\n }\n\n // Mark as initialized\n this.isInitialized = true;\n }\n\n /**\n * Process the value prop (used during initialization only)\n * @param newValue - Value prop content\n * @internal\n */\n private async processValueProp(newValue: File | File[] | UdpDriveFile | UdpDriveFile[] | null | undefined) {\n if (newValue === null || newValue === undefined) {\n this.files = [];\n return;\n }\n\n // Check if this looks like an event detail object (has value, files, toString, valueOf properties)\n // If so, ignore it since this is from our own updateValueProp, not external initialization\n if (newValue && typeof newValue === 'object' && 'value' in newValue && 'files' in newValue && 'toString' in newValue) {\n return;\n }\n\n try {\n if (Array.isArray(newValue)) {\n if (newValue.length === 0) {\n this.files = [];\n return;\n }\n\n // Process each item in the array\n const processedFiles: File[] = [];\n for (const item of newValue) {\n // Process the item and filter out nulls from invalid objects\n const processedFile = await this.processInitialFile(item);\n if (processedFile) {\n processedFiles.push(processedFile);\n }\n }\n this.files = processedFiles;\n\n } else {\n // Single value\n const processedFile = await this.processInitialFile(newValue as UdpDriveFile | File);\n if (processedFile) {\n this.files = [processedFile];\n } else {\n this.files = [];\n }\n }\n\n // Update value prop after initialization (but don't emit events)\n this.updateValueProp();\n\n } catch (error) {\n console.error('Error in processValueProp:', error);\n this.files = [];\n }\n }\n\n /**\n * Manually emit events when files change due to user interaction.\n * This replaces the automatic @Watch('files') to avoid circular updates.\n * @internal\n */\n private emitFileChangeEvents() {\n // Update the mutable value prop for non-stencil-field usage\n this.updateValueProp();\n\n // Separate new files (to be uploaded) from existing files (already on server)\n const newFiles = this.files.filter(file => !this.existingFileReferences.has(file.name));\n const existingFiles = this.files.filter(file => this.existingFileReferences.has(file.name));\n\n // If no files at all, emit null instead of empty string\n if (newFiles.length === 0 && existingFiles.length === 0) {\n // Emit null to indicate no files\n this.change.emit(null);\n //this.input.emit(null);\n return;\n }\n\n // Create a structured value that includes both string representation and File objects\n // This allows the form handler to extract the files while maintaining string serialization\n const fileReferences: string[] = [];\n newFiles.forEach(file => {\n // Ensure file has a valid name before adding to references\n if (file.name && file.name.trim() !== '') {\n fileReferences.push(file.name.trim());\n }\n });\n\n existingFiles.forEach(file => {\n if (file.name && file.name.trim() !== '') {\n const udpDriveFile = this.existingFileReferences.get(file.name);\n if (udpDriveFile) {\n fileReferences.push(`${file.name.trim()}|udp:${udpDriveFile.driveFileId}`);\n }\n }\n });\n\n const combinedValue = fileReferences.join(',');\n\n // Create a special value object that contains both the string and the files\n // This allows generic handling while preserving File objects for upload\n const detailValue = {\n toString: () => combinedValue, // For string serialization\n valueOf: () => combinedValue, // For primitive conversion\n value: combinedValue, // Explicit string value\n files: newFiles.filter(file => file.name && file.name.trim() !== '') // Only include files with valid names\n };\n\n // Emit standard events using Stencil's @Event() decorators\n this.change.emit(detailValue);\n }\n\n /**\n * Update the mutable value prop to reflect current files.\n * For direct usage, we want to include all files (new and existing).\n * @internal\n */\n private updateValueProp() {\n try {\n if (this.allowMultiple) {\n this.value = [...this.files];\n } else {\n this.value = this.files.length > 0 ? this.files[0] : null;\n }\n } catch (error) {\n console.error('Error updating value prop:', error);\n }\n }\n\n /**\n * Handles drag over events. Prevents default behavior to allow drop.\n * @param event - Drag event\n * @internal\n */\n private handleDragOver = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n };\n\n /**\n * Handles drag enter events. Adds highlight styling to drop area.\n * @param event - Drag event\n * @internal\n */\n private handleDragEnter = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter++;\n dropArea.classList.add('highlight');\n };\n\n /**\n * Handles drag leave events. Removes highlight styling when drag exits.\n * @param event - Drag event\n * @internal\n */\n private handleDragLeave = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n this.dragCounter--;\n if (this.dragCounter === 0) {\n dropArea.classList.remove('highlight');\n }\n };\n\n /**\n * Handles drop events. Processes dropped files and adds them to the component.\n * @param event - Drop event\n * @internal\n */\n private handleDrop = (event: DragEvent) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n const dropArea = event.currentTarget as HTMLElement;\n dropArea.classList.remove('highlight');\n\n const files = event.dataTransfer.files;\n this.handleFiles(files);\n };\n\n /**\n * Handles file input change events from the hidden input element.\n * @param event - Input change event\n * @internal\n */\n private handleFileInput = (event: Event) => {\n const input = event.target as HTMLInputElement;\n\n if (input.files && input.files.length > 0) {\n this.handleFiles(input.files);\n }\n\n // Reset the input value so the same file can be selected again\n input.value = '';\n this.fileWindowOpen = false;\n };\n\n /**\n * Processes a FileList and adds valid files to the component.\n * Handles validation and multiple file constraints.\n * @param files - FileList from input or drop event\n * @internal\n */\n private handleFiles = (files: FileList) => {\n if (files.length === 0) return;\n\n const currentFiles = [...this.files];\n const newValidFiles: File[] = [];\n\n for (let i = 0; i < files.length; i++) {\n const file = files[i];\n\n // Validate file name\n if (!file.name || file.name.trim() === '') {\n continue;\n }\n\n // Check for duplicates\n const isDuplicate = currentFiles.some(existingFile =>\n existingFile.name === file.name && existingFile.size === file.size\n );\n\n if (isDuplicate) {\n continue;\n }\n\n // Validate file type if restrictions are set\n if (!this.isFileTypeAllowed(file)) {\n continue;\n }\n\n newValidFiles.push(file);\n\n // If not allowing multiple files, only take the first valid file\n if (!this.allowMultiple) {\n break;\n }\n }\n\n if (newValidFiles.length > 0) {\n if (this.allowMultiple) {\n this.files = [...currentFiles, ...newValidFiles];\n } else {\n // Replace existing files if not allowing multiple\n this.files = [newValidFiles[0]];\n }\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n }\n\n /**\n * Validates if a file type is allowed based on component configuration.\n * @param file - File to validate\n * @returns True if file type is allowed\n * @internal\n */\n private isFileTypeAllowed(file: File): boolean {\n if (!file.name) {\n return false;\n }\n\n const extension = file.name.split('.').pop()?.toLowerCase();\n\n if (!extension) {\n return false;\n }\n\n // If allowedFileTypes is set, only allow those types\n if (this.allowedFileTypes && this.allowedFileTypes.length > 0) {\n return this.allowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If disallowedFileTypes is set, reject those types\n if (this.disallowedFileTypes && this.disallowedFileTypes.length > 0) {\n return !this.disallowedFileTypes.map(type => type.toLowerCase()).includes(extension);\n }\n\n // If no restrictions, allow all types\n return true;\n }\n\n /**\n * Handles browse files button click. Opens the file browser dialog.\n * @param event - Click event\n * @internal\n */\n private handleBrowseFiles = (event: Event) => {\n if (this.disabled || this.readonly) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n\n // Ensure hiddenInput is initialized before trying to use it\n if (!this.hiddenInput) {\n console.error('File input not initialized yet, attempting to create it now...');\n // Try to create it on-demand as a fallback\n try {\n this.hiddenInput = document.createElement('input');\n this.hiddenInput.type = 'file';\n this.hiddenInput.multiple = this.allowMultiple;\n this.hiddenInput.style.display = 'none';\n this.hiddenInput.addEventListener('change', this.handleFileInput);\n document.body.appendChild(this.hiddenInput);\n } catch (error) {\n console.error('Failed to create file input:', error);\n return;\n }\n }\n\n this.fileWindowOpen = true;\n this.hiddenInput.click();\n };\n\n /**\n * Removes a file from the component by index. Updates internal state and cleans up references.\n * @param index - Index of file to remove\n * @internal\n */\n private handleRemoveFile = (index: number) => {\n if (this.disabled || this.readonly) {\n return;\n }\n const fileToRemove = this.files[index];\n\n // Clean up existing file reference if it exists\n if (this.existingFileReferences.has(fileToRemove.name)) {\n this.existingFileReferences.delete(fileToRemove.name);\n }\n\n this.files.splice(index, 1);\n this.files = [...this.files];\n\n // Manually emit events since we're not using @Watch('files') anymore\n this.emitFileChangeEvents();\n }\n\n /**\n * Triggers download of a file. Handles both new files and existing UDP Drive files.\n * For UDP Drive files, downloads the content from the server first.\n * @param file - File to download\n * @internal\n */\n async downloadFile(file: File) {\n if (this.disabled) {\n return;\n }\n try {\n // Check if this is a placeholder for a UdpDriveFile\n const udpDriveFile = this.existingFileReferences.get(file.name);\n\n if (udpDriveFile) {\n // Download the actual file content from UdpDrive\n const actualFile = await this.createFileFromUdpDriveFile(udpDriveFile);\n\n // Create a temporary URL for the downloaded file\n const url = URL.createObjectURL(actualFile);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = actualFile.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n } else {\n // Regular file - create download directly\n const url = URL.createObjectURL(file);\n\n // Create a temporary anchor element to trigger download\n const a = document.createElement('a');\n a.href = url;\n a.download = file.name;\n a.style.display = 'none';\n\n // Add to DOM, click, and remove\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n\n // Clean up the temporary URL\n URL.revokeObjectURL(url);\n }\n } catch (error) {\n console.error('Error downloading file:', error);\n }\n }\n\n /**\n * Component lifecycle method. Cleans up the hidden file input.\n * @internal\n */\n disconnectedCallback() {\n if (this.hiddenInput) {\n document.body.removeChild(this.hiddenInput);\n this.hiddenInput = null;\n }\n }\n\n /**\n * Renders the file upload component with drag-and-drop area, browse button, and file list.\n * @returns JSX element or null if not ready\n * @internal\n */\n render() {\n // if (!this.hiddenInput) {\n // return null;\n // }\n const isError = !!this.errorMessage;\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--full-width': this.fullWidth,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-disabled={this.disabled ? 'true' : 'false'}\n >\n <div\n id={!this.hideDragAndDrop ? 'drop-area' : 'outer-container'}\n onDragOver={this.handleDragOver}\n onDrop={this.handleDrop}\n onDragEnter={this.handleDragEnter}\n onDragLeave={this.handleDragLeave}\n class={!this.hideDragAndDrop ? (this.fullWidth ? 'full-width' : 'contained-width') : ''}\n >\n {!this.hideDragAndDrop ? (\n <unity-typography>\n <p>{this.dragAndDropMessage}</p>\n {!this.hideButton ? <p>or</p> : ''}\n </unity-typography>\n ) : (\n ''\n )}\n\n {!this.hideButton ? (\n <custom-button\n label={this.browseFileMessage}\n onClick={(e) => this.handleBrowseFiles(e)}\n id={'udpRecord-file-upload-' + this.id}\n disabled={this.disabled || this.readonly}\n //@ts-ignore\n udprecordid={'udpRecord-file-upload-' + this.id}\n />\n ) : (\n ''\n )}\n\n {this.files.length > 0 && (\n <div class={!this.hideDragAndDrop ? 'container' : ''}>\n <div class={!this.hideDragAndDrop ? 'inner-container' : ''}>\n {this.files.map((file, index) => {\n const isExistingFile = this.existingFileReferences.has(file.name);\n return (\n <div class={!this.hideDragAndDrop ? 'file-container' : ''} key={index}>\n <div class=\"file-text\" onClick={() => this.downloadFile(file)} style={{ cursor: this.disabled ? 'not-allowed' : 'pointer', textDecoration: 'underline' }}>\n <unity-typography>\n {file.name}\n {isExistingFile && <span style={{ fontSize: '0.8em', opacity: '0.7' }}> (saved)</span>}\n </unity-typography>\n </div>\n <div>\n <stencil-icon-button showLabel={false} icon={Close24} onClick={() => this.handleRemoveFile(index)} disabled={this.disabled || this.readonly} />\n </div>\n </div>\n );\n })}\n </div>\n </div>\n )}\n {this.errorMessage && !this.fileWindowOpen ? (\n <div id=\"error-text\">\n <unity-typography color=\"error\">{this.errorMessage}</unity-typography>\n </div>\n ) : (\n ''\n )}\n </div>\n </Host>\n );\n }\n}\n","@import '../inputs.css';\n\n/* selectable-list.css */\n\n:host {\n display: block;\n }\n\n/* Size variants for selectable list items */\n:host(.udp-input--size-small) li {\n padding: var(--spacing-02) var(--spacing-03);\n font-size: var(--caption-font-size, 0.875rem);\n}\n\n:host(.udp-input--size-normal) li {\n padding: var(--spacing-03) var(--spacing-04);\n font-size: var(--body-font-size);\n}\n\n:host(.udp-input--size-large) li {\n padding: var(--spacing-04) var(--spacing-05);\n font-size: var(--body-font-size);\n}\n\n ul {\n list-style: none;\n padding: 0;\n margin: 0;\n }\n \n li {\n padding: var(--spacing-03) var(--spacing-04); /* Default padding, overridden by density variants */\n cursor: pointer;\n transition: background-color 0.3s ease;\n }\n \n li:hover {\n background-color: #f0f0f0;\n color: var(--text-color)\n }\n \n .selected {\n background-color: var(--primary-color);\n color: white\n }\n \n label {\n cursor: pointer\n } \n input {\n cursor: pointer\n }\n .error{\n color: var(--error-color-main)\n }","import {\n Component,\n Prop,\n State,\n h,\n Host,\n Element,\n Watch,\n Event,\n EventEmitter,\n} from '@stencil/core';\nimport { InputSize, InputMargin } from '../input-types';\n/**\n * A standardized selectable list component with single/multi-select support and various display options.\n * Supports both controlled and uncontrolled modes.\n *\n * This component emits a custom `change` event with the committed value and also\n * propagates standard DOM events like `input`, `focus`, and `blur` from the\n * underlying input element.\n *\n * @example\n * ```tsx\n * // Uncontrolled component with initial selection\n * <selectable-list\n * items={countries}\n * displayKey=\"name\"\n * valueKey=\"id\"\n * initialValue=\"1,2\"\n * multiSelect={true}\n * onChange={(e) => console.log('Selected:', e.detail)}\n * />\n *\n * // Controlled component\n * <selectable-list\n * items={items}\n * displayKey=\"name\"\n * valueKey=\"id\"\n * value={selectedValue}\n * onChange={(e) => setSelectedValue(e.detail)}\n * />\n *\n * // With checkboxes and validation\n * <selectable-list\n * items={options}\n * displayKey=\"label\"\n * valueKey=\"value\"\n * useCheckbox={true}\n * required={true}\n * error={selectionError}\n * value={selectedOptions}\n * onChange={handleSelectionChange}\n * />\n * ```\n */\n@Component({\n tag: 'selectable-list',\n styleUrl: 'selectable-list.css',\n shadow: true,\n})\nexport class SelectableList {\n @Element() el: HTMLElement;\n\n /**\n * Whether the field is disabled. When true, items cannot be selected or deselected.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * When true, the component is in a read-only state. Items can be viewed but not selected or deselected.\n */\n @Prop() readonly: boolean = false;\n\n /**\n * Size variant controlling the padding and spacing of the list items.\n * - 'small': Compact spacing for data-heavy interfaces\n * - 'normal': Standard spacing (default)\n * - 'large': Generous spacing for accessibility\n */\n @Prop() size: InputSize = 'normal';\n\n /**\n * Margin variant for the input spacing.\n * - 'none': No margin\n * - 'dense': Minimal margin spacing\n * - 'normal': Standard margin spacing (default)\n */\n @Prop() margin: InputMargin = 'normal';\n\n /**\n * Whether multiple items can be selected. When false, only one item can be selected at a time.\n */\n @Prop() multiSelect: boolean = false;\n\n /**\n * Array of items to display in the list. Each item should be an object with properties for display and value.\n */\n @Prop() items: any[] = [];\n\n /**\n * Property name from item objects to use for display text. Required for proper rendering.\n */\n @Prop() displayKey: string = '';\n\n /**\n * Whether to render items with checkboxes/radio buttons instead of plain list items.\n */\n @Prop() useCheckbox: boolean = false;\n\n /**\n * Initial value for the selectable list. Used for uncontrolled components to set the default selection.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * Only used when `value` prop is not provided.\n */\n @Prop() initialValue: string;\n\n /**\n * Current value of the selectable list. When provided, makes this a controlled component.\n * For multi-select, use comma-separated values (e.g., \"1,2,3\").\n * The component will use this value and update it through events.\n */\n @Prop({ mutable: true }) value: string;\n\n /**\n * Whether the field is required for form submission. Adds validation behavior.\n */\n @Prop() required: boolean;\n\n /**\n * Property name from item objects to use for the actual value. Required for proper functionality.\n */\n @Prop() valueKey: string = '';\n\n /**\n * Error message to display below the list. Shows validation errors or other issues.\n */\n @Prop() error: string = '';\n\n /**\n * Unique identifier for the list element. Used for form association and accessibility.\n */\n @Prop() id: string;\n\n /**\n * Name attribute for form submission. Used for radio button grouping when useCheckbox is true.\n */\n @Prop() name: string;\n\n /**\n * Label text displayed above the list. Used for accessibility and user guidance.\n */\n @Prop() label: string;\n\n /**\n * Internal items state with selection status. Manages item display and selection state.\n * @internal\n */\n @State() internalItems: any[] = [];\n\n /**\n * Internal value state. Manages the current selected value(s) independently of props.\n * @internal\n */\n @State() internalValue: string = '';\n\n /**\n * Internal error message state. Manages display of validation errors.\n * @internal\n */\n @State() errorMessage: string;\n\n /**\n * Emitted when the selection changes (on item click, etc.).\n * Provides the final committed value when user makes a selection.\n *\n * @event change\n * @param {string} value - The current selected value(s), comma-separated for multi-select\n *\n * @example\n * ```tsx\n * <selectable-list onChange={(e) => handleSelectionChange(e.detail)} />\n * ```\n */\n @Event() change: EventEmitter<string>;\n\n\n /**\n * Updates the error message when the error prop changes.\n * @internal\n */\n @Watch('error')\n updateError() {\n this.errorMessage = this.error;\n }\n\n /**\n * Updates the internal value when initialValue prop changes.\n * Only updates if current value is empty or if this is an uncontrolled component.\n * @internal\n */\n @Watch('initialValue')\n initialValueChanged(newValue: string) {\n // Only update if we don't have a value yet or if this is uncontrolled (no value prop)\n if ((this.internalValue === '' || this.internalValue === undefined) || this.value === undefined) {\n if (newValue !== undefined) {\n this.internalValue = newValue;\n this.updateItemSelection(newValue);\n }\n }\n }\n\n /**\n * Updates the internal value when value prop changes.\n * For controlled components, the value prop takes precedence.\n * @internal\n */\n @Watch('value')\n valueChanged() {\n // If value prop is provided, this is a controlled component\n if (this.value !== undefined && this.value !== this.internalValue) {\n this.internalValue = this.value;\n this.updateItemSelection(this.value);\n }\n }\n\n /**\n * Re-initializes items when the items prop changes.\n * @internal\n */\n @Watch('items')\n itemsChanged() {\n // Re-initialize when items change\n this.initializeItems();\n }\n /**\n * Component lifecycle method. Initializes error message, internal value, and items.\n * @internal\n */\n componentWillLoad() {\n // Initialize value: use value prop if provided (controlled), otherwise use initialValue (uncontrolled)\n this.internalValue = this.value !== undefined ? this.value : (this.initialValue || '');\n\n if (this.error) {\n this.errorMessage = this.error;\n }\n\n this.initializeItems();\n }\n\n /**\n * Initializes the internal items array with proper selection state.\n * @internal\n */\n private initializeItems() {\n if (!this.valueKey) {\n console.error('valueKey is required');\n this.internalItems = this.items;\n return;\n }\n\n this.updateItemSelection(this.internalValue);\n }\n\n /**\n * Updates the selection state of items based on the provided value.\n * @param selectedValue - Comma-separated string of selected values\n * @internal\n */\n private updateItemSelection(selectedValue: string) {\n if (!selectedValue || !this.valueKey) {\n this.internalItems = [...this.items];\n return;\n }\n\n const selectedItems = this.items.filter(item =>\n selectedValue.split(',').includes(item[this.valueKey])\n );\n\n let filteredSelectedItems = selectedItems;\n if (selectedItems.length > 1 && !this.multiSelect) {\n filteredSelectedItems = [selectedItems[0]];\n console.warn('multiple values are selected, but multiselect is disabled');\n }\n\n const items = this.items.map(item => ({\n ...item,\n selected: filteredSelectedItems.some(selectedItem =>\n selectedItem[this.valueKey] === item[this.valueKey]\n )\n }));\n\n this.internalItems = items;\n }\n /**\n * Gets the currently selected items from the items array.\n * @param items - Optional items array to check, defaults to internal items\n * @returns Array of selected items\n * @internal\n */\n getSelectedItems(items: any[] = null): any[] {\n const itemsToCheck = items ?? this.internalItems;\n return itemsToCheck.filter(item => item.selected) ?? [];\n }\n\n /**\n * Gets the current value as a comma-separated string of selected values.\n * @param items - Optional items array to check, defaults to internal items\n * @returns Comma-separated string of selected values\n * @internal\n */\n getValue(items: any[] = null): string {\n const itemsToCheck = items ?? this.internalItems\n return this.getSelectedItems(itemsToCheck).map(item => item[this.valueKey] ?? item[this.displayKey]).join(',') ?? \"\"\n }\n\n\n /**\n * Handles item click events. Updates selection state and emits events.\n * For controlled components, also updates the value prop.\n * @param item - The clicked item\n * @internal\n */\n private handleItemClick = (item: any) => {\n if (this.disabled || this.readonly) return;\n let newItems = [...this.internalItems];\n const selectedIndex = this.internalItems.findIndex(\n selectedItem => (this.valueKey && selectedItem[this.valueKey] === item[this.valueKey]) || (!this.valueKey && selectedItem === item),\n );\n\n newItems.splice(selectedIndex, 1, {...item, selected: !item.selected});\n if (!this.multiSelect && !item.selected) {\n newItems = newItems.map((item, i) => ({...item, selected: i === selectedIndex}))\n }\n this.internalItems = newItems;\n\n // Update internal value state\n const newValue = this.getValue(newItems);\n this.internalValue = newValue;\n\n // If this is a controlled component (value prop provided), update the value prop\n if (this.value !== undefined) {\n this.value = newValue;\n }\n\n // Emit events for real-time and committed updates\n this.change.emit(newValue);\n }\n /**\n * Renders the selectable list component.\n * @returns JSX element or null if valueKey is not provided\n * @internal\n */\n render() {\n if(!this.valueKey)\n return null;\n const isError = !!this.errorMessage;\n return (\n <Host\n class={{\n 'udp-input': true,\n 'udp-input--error': isError,\n 'udp-input--disabled': this.disabled,\n 'udp-input--readonly': this.readonly,\n 'udp-input--required': this.required,\n 'udp-input--multi-select': this.multiSelect,\n [`udp-input--size-${this.size}`]: true,\n [`udp-input--margin-${this.margin}`]: true,\n }}\n aria-invalid={isError ? 'true' : 'false'}\n aria-required={this.required ? 'true' : 'false'}\n >\n <ul>\n {this.internalItems.map((item, i) => (\n <li\n key={item.id || item[this.displayKey]}\n onClick={() => this.handleItemClick(item)}\n class={item.selected && !this.useCheckbox ? 'selected' : ''}\n id={'udpRecord-selectable-list-input-' + i + '-' + this.id}\n //@ts-ignore\n udprecordid={'udpRecord-selectable-list-input-' + i + '-' + this.id}\n >\n {this.useCheckbox ? (\n <label>\n <input\n type={this.multiSelect ? 'checkbox' : 'radio'}\n name={this.name || ((this.valueKey && item[this.valueKey]) || (item.id ?? item[this.displayKey]))}\n disabled={this.disabled || this.readonly}\n value={(this.valueKey && item[this.valueKey]) || (item.id ?? item[this.displayKey])}\n checked={item.selected}\n onChange={() => this.handleItemClick(item)}\n />\n {item[this.displayKey]}\n </label>\n ) : (\n <div>{item[this.displayKey]}</div>\n )}\n </li>\n ))}\n {this.errorMessage && <unity-typography class=\"error\" variant='caption-text' color=\"error\">{this.errorMessage}</unity-typography>}\n </ul>\n </Host>\n );\n }\n}\n","/**\n * StencilField - Form field wrapper component that integrates with Final Form\n *\n * This component acts as a bridge between form input components and Final Form state management.\n * It uses slot-based rendering and property injection to work with any child input component.\n *\n * REQUIREMENTS FOR CHILD COMPONENTS:\n *\n * 1. VALUE HANDLING:\n * - SIMPLE INPUTS: Manage own value state, receive initialValue prop from stencil-field\n * - COMPLEX INPUTS: Same approach - internal value management with initialValue\n * - stencil-field reads values from DOM events or custom events, never directly modifies component value\n *\n * 2. ERROR HANDLING:\n * - Child component should have an @Prop() error: string\n * - Use @Watch('error') to react to validation errors\n *\n * 3. EVENT HANDLERS:\n * - Child component must emit standard DOM events (input, change, blur, focus)\n * - SIMPLE INPUTS: Standard HTML input/textarea that emits native events\n * - COMPLEX INPUTS: Emit CustomEvent with detail containing the value\n *\n * 4. STANDARD FORM PROPS:\n * - @Prop() name: string (for form field identification)\n * - @Prop() id: string (for accessibility)\n * - @Prop() label: string (for field labeling)\n * - @Prop() initialValue: string (for setting initial/default values)\n *\n * EXAMPLE SIMPLE INPUT:\n * ```tsx\n * @Component({ tag: 'simple-input' })\n * export class SimpleInput {\n * @Prop() error: string;\n * @Prop() name: string;\n * @Prop() id: string;\n * @Prop() label: string;\n * @Prop() initialValue: string;\n * @State() value: string;\n *\n * componentWillLoad() {\n * this.value = this.initialValue || '';\n * }\n *\n * private onChange = (e: Event) => {\n * this.value = (e.target as HTMLInputElement).value;\n * }\n *\n * render() {\n * return <input name={this.name} id={this.id} value={this.value} onInput={this.onChange} />;\n * }\n * }\n * ```\n *\n * EXAMPLE COMPLEX INPUT:\n * ```tsx\n * @Component({ tag: 'complex-input' })\n * export class ComplexInput {\n * @Prop() error: string;\n * @Prop() name: string;\n * @Prop() id: string;\n * @Prop() label: string;\n * @Prop() initialValue: string;\n * @State() value: string;\n *\n * componentWillLoad() {\n * this.value = this.initialValue || '';\n * }\n *\n * @Watch('error')\n * updateError() {\n * // Handle error display\n * }\n *\n * private onChange = (newValue: string) => {\n * this.value = newValue; // Update internal state\n * // Emit custom event for stencil-field\n * this.el.dispatchEvent(new CustomEvent('input', {\n * detail: newValue,\n * bubbles: true\n * }));\n * }\n * }\n * ```\n *\n * USAGE:\n * ```tsx\n * <!-- Simple input with initial value -->\n * <stencil-field name=\"email\" label=\"Email\" required>\n * <simple-input />\n * </stencil-field>\n *\n * <!-- Complex component -->\n * <stencil-field name=\"tags\" label=\"Tags\" required>\n * <tag-selector />\n * </stencil-field>\n * ```\n */\nimport { Component, Prop, h, State, Listen, Element, Method } from '@stencil/core';\n\n@Component({\n tag: 'stencil-field',\n shadow: false,\n})\nexport class StencilField {\n @Element() el: HTMLElement;\n @Prop() id: string;\n @Prop() defaultValue: string;\n @Prop() name: string;\n @Prop() label: string;\n @Prop() required: boolean = false;\n @Prop({ mutable: true }) value: string;\n @State() errorMessage: string;\n @State() registered: boolean = false;\n @State() finalFormBlur: (e: Event) => void = () => { };\n @State() finalFormChange: (value: any) => void = () => { };\n @State() finalFormFocus: (e: Event) => void = () => { };\n\n private state: any;\n\n @Method()\n async setFormApi(formApi: any) {\n this.state = formApi;\n this.state.api.registerField(\n this.name,\n fieldState => {\n const { blur, change, focus, value } = fieldState;\n if (!this.state.registeredFields[this.name]) {\n this.state.registeredFields[this.name] = { required: this.required };\n // first time, register event listeners\n\n this.finalFormBlur = () => {\n blur();\n // Preserve custom errors - only use Final Form errors if no custom error exists\n const finalFormError = this.state.api.getFieldState(this.name)?.error;\n if (!this.errorMessage) {\n this.errorMessage = finalFormError || '';\n }\n };\n this.finalFormChange = event => {\n change(event);\n // reset the error on change, error state will be re-evaluated when the blur event is triggered\n this.errorMessage = '';\n // // Force re-render to inject cleared error into child components\n this.injectPropsIntoSlottedElements();\n };\n this.finalFormFocus = focus;\n this.registered = true;\n }\n\n // update value\n\n this.value = value ?? \"\";\n },\n {\n value: true,\n error: false,\n touched: false,\n },\n );\n }\n\n componentDidRender() {\n this.injectPropsIntoSlottedElements();\n }\n\n componentDidUpdate() {\n this.injectPropsIntoSlottedElements();\n }\n\n private injectPropsIntoSlottedElements() {\n const hasSlottedContent = this.el.children.length > 0;\n\n if (hasSlottedContent) {\n Array.from(this.el.children).forEach((element: any) => {\n // Inject form field props\n // Pass initial value only, don't control the component's value directly\n if (this.value !== undefined && !element.hasAttribute('data-initial-value-set')) {\n element.initialValue = this.value;\n element.setAttribute('data-initial-value-set', 'true');\n }\n\n // Always update error state (including clearing it)\n element.error = this.errorMessage || '';\n\n if (this.name) element.name = this.name;\n if (this.id) element.id = this.id;\n if (this.label) element.label = this.label;\n\n // Set up event handlers if not already bound\n if (!element.hasAttribute('data-field-events-bound')) {\n element.addEventListener('input', this.handleInput.bind(this));\n element.addEventListener('change', this.handleChange.bind(this));\n element.addEventListener('blur', this.handleBlur.bind(this));\n element.addEventListener('focus', this.handleFocus.bind(this));\n element.addEventListener('error', this.handleError.bind(this));\n element.setAttribute('data-field-events-bound', 'true');\n }\n });\n }\n }\n\n disconnectedCallback() {\n // Clean up the field from the registry when component is unmounted\n if (!this.name) {\n return;\n }\n if (this.state.registeredFields[this.name]) {\n delete this.state.registeredFields[this.name];\n }\n\n // Final Form automatically handles field cleanup when no longer subscribed,\n // but we can also explicitly remove the field value if needed\n try {\n if (this.state.api?.change) {\n this.state.api.change(this.name, undefined);\n }\n } catch (error) {\n // Silently handle any errors during cleanup\n console.debug('Field cleanup warning:', error);\n }\n\n // Reset registration state\n this.registered = false;\n }\n\n @Listen('input')\n handleInput(e: Event) {\n let value;\n\n // Handle custom events from complex components\n if (e instanceof CustomEvent && e.detail !== undefined) {\n value = e.detail;\n } else {\n // Handle standard DOM events - need to find the actual input element\n const target = e.target as HTMLElement;\n\n // If target is a custom component, look for the actual input in its shadow DOM\n if (target.shadowRoot) {\n const input = target.shadowRoot.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n if (input) {\n value = input.value;\n }\n }\n // If target is the actual input element\n else if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n value = (target as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement).value;\n }\n // Fallback: check if the custom component has a value property\n else if ('value' in target) {\n value = (target as any).value;\n }\n }\n\n if (value !== undefined) {\n this.finalFormChange?.(value);\n }\n }\n\n @Listen('change')\n handleChange(e: Event) {\n let value;\n\n // Handle custom events from complex components\n if (e instanceof CustomEvent && e.detail !== undefined) {\n value = e.detail;\n } else {\n // Handle standard DOM events - need to find the actual input element\n const target = e.target as HTMLElement;\n\n // If target is a custom component, look for the actual input in its shadow DOM\n if (target.shadowRoot) {\n const input = target.shadowRoot.querySelector('input, textarea, select') as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement;\n if (input) {\n value = input.value;\n }\n }\n // If target is the actual input element\n else if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.tagName === 'SELECT') {\n value = (target as HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement).value;\n }\n // Fallback: check if the custom component has a value property\n else if ('value' in target) {\n value = (target as any).value;\n }\n }\n\n if (value !== undefined) {\n this.finalFormChange?.(value);\n // For complex components that emit custom events, also trigger blur validation\n if (e instanceof CustomEvent) {\n this.finalFormBlur?.(e);\n }\n }\n }\n\n @Listen('focus')\n handleFocus(e: FocusEvent) {\n this.finalFormFocus?.(e);\n }\n\n @Listen('blur')\n handleBlur(e: FocusEvent) {\n this.finalFormBlur?.(e);\n }\n\n handleError(e: CustomEvent) {\n // Handle error events from slotted child components\n if (e.detail !== undefined) {\n this.errorMessage = e.detail;\n\n // Store the custom error in the form's custom errors registry\n if (this.state?.registeredFields && this.name) {\n if (!this.state.customErrors) {\n this.state.customErrors = {};\n }\n this.state.customErrors[this.name] = e.detail;\n\n // Trigger form validation to include custom errors\n if (this.state.api) {\n // Force re-validation by changing the field value to itself\n const currentValue = this.state.api.getFieldState(this.name)?.value;\n this.state.api.change(this.name, currentValue);\n }\n }\n\n // Force re-render to inject error state\n this.injectPropsIntoSlottedElements();\n }\n }\n\n @Listen('stencilFormInvalidEvent', { target: 'body' })\n stencilInvalid(e: CustomEvent) {\n // Handle form validation errors\n if (e.detail && this.name && e.detail[this.name]) {\n // Set the error message for this specific field\n this.errorMessage = e.detail[this.name];\n // Force re-render to inject error into child components\n this.injectPropsIntoSlottedElements();\n }\n // Don't call finalFormBlur here as it might overwrite custom errors\n }\n render() {\n if (!this.registered) {\n return null;\n }\n\n // Always use slot-based rendering\n return <slot />;\n }\n}\n"],"version":3}
@@ -286,14 +286,14 @@ var loadModule = (cmpMeta, hostRef, hmrVersionId) => {
286
286
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
287
287
  /* webpackMode: "lazy" */
288
288
  './map-component_2.cjs.entry.js')); }).then(processMod, consoleError);
289
- case 'udp-forms-renderer.cjs':
290
- return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
291
- /* webpackMode: "lazy" */
292
- './udp-forms-renderer.cjs.entry.js')); }).then(processMod, consoleError);
293
289
  case 'file-upload_3.cjs':
294
290
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
295
291
  /* webpackMode: "lazy" */
296
292
  './file-upload_3.cjs.entry.js')); }).then(processMod, consoleError);
293
+ case 'udp-forms-renderer.cjs':
294
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
295
+ /* webpackMode: "lazy" */
296
+ './udp-forms-renderer.cjs.entry.js')); }).then(processMod, consoleError);
297
297
  case 'chart-container_3.cjs':
298
298
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
299
299
  /* webpackMode: "lazy" */
@@ -310,10 +310,6 @@ var loadModule = (cmpMeta, hostRef, hmrVersionId) => {
310
310
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
311
311
  /* webpackMode: "lazy" */
312
312
  './udp-bar-chart_4.cjs.entry.js')); }).then(processMod, consoleError);
313
- case 'signature-input_4.cjs':
314
- return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
315
- /* webpackMode: "lazy" */
316
- './signature-input_4.cjs.entry.js')); }).then(processMod, consoleError);
317
313
  case 'date-time-renderer_5.cjs':
318
314
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
319
315
  /* webpackMode: "lazy" */
@@ -330,6 +326,10 @@ var loadModule = (cmpMeta, hostRef, hmrVersionId) => {
330
326
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
331
327
  /* webpackMode: "lazy" */
332
328
  './question-configs-renderer_5.cjs.entry.js')); }).then(processMod, consoleError);
329
+ case 'signature-input_6.cjs':
330
+ return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
331
+ /* webpackMode: "lazy" */
332
+ './signature-input_6.cjs.entry.js')); }).then(processMod, consoleError);
333
333
  case 'advanced-search_50.cjs':
334
334
  return Promise.resolve().then(function () { return /*#__PURE__*/_interopNamespace(require(
335
335
  /* webpackMode: "lazy" */
@@ -88,7 +88,7 @@ const InputsExample = class {
88
88
  };
89
89
  }
90
90
  render() {
91
- return (index.h("div", { key: 'c1752ee849c28d15226e52f89e54effc0124096d', class: "inputs-example" }, index.h("h1", { key: 'f206efe282b4e4be1e72e080c658b5281b62677b' }, "Input Components Examples"), index.h("section", { key: 'dc2ccaa0c26a7828d645edf914afff039ab614cb', class: "example-section" }, index.h("h2", { key: 'a964de5f12691c8b8b376bc60ca555eaed0bab73' }, "Controlled Components"), index.h("p", { key: 'c78e0fbf5bd4af735ea24fc3f1321be657651920' }, "Parent component manages state and passes values to child components."), index.h("div", { key: '3c727d4852fb20550f7beb3293693f3c3b75f1d6', class: "input-grid" }, index.h("div", { key: '55813c68ff4a15b36c2c6ec4f5a3a2350ba99894', class: "input-example" }, index.h("h3", { key: '7fe73653ce6e01047cba3c5e895ceb7360a61c8f' }, "Text Field"), index.h("text-field", { key: 'b157bb01cd1d40475c93afff82753507dd1c0bf5', label: "Controlled Text Input", placeholder: "Enter text...", value: this.controlledTextValue }), index.h("p", { key: '2292267101a88a7edbcc35b4c844c54cfb35670c', class: "value-display" }, "Value: ", this.controlledTextValue)), index.h("div", { key: 'b826cb6aa6811bae0aa6c58d079dadc41b834512', class: "input-example" }, index.h("h3", { key: '75bfe5eaddeee9b8925e542b998f2aa04b6d54e3' }, "Numeric Field"), index.h("numeric-field", { key: '36e0566646ed0fae60c500d3228de73f5ab456d9', label: "Controlled Numeric Input", placeholder: "Enter number...", value: this.controlledNumericValue, min: "0", max: "100", step: "1", onChange: this.handleControlledNumericChange }), index.h("p", { key: '46d9774aa39950df990807c90877d8eb07f89291', class: "value-display" }, "Value: ", this.controlledNumericValue)), index.h("div", { key: 'c30ab6ae34d3c90eb0d9ecda39f4455e16d560cc', class: "input-example" }, index.h("h3", { key: '47b490cd16b75baeba29dd91ba9f10f9ab6fdceb' }, "Text Area"), index.h("text-area", { key: '78a9810cd541b29414158722af7b911a3c55d369', label: "Controlled Text Area", placeholder: "Enter description...", value: this.controlledTextAreaValue, minRows: 3, maxRows: 6 }), index.h("p", { key: '35531b57b6dd4535df39f252c0d89aaccb83077c', class: "value-display" }, "Value: ", this.controlledTextAreaValue)), index.h("div", { key: 'b3c0cf99402b280d615eedcfdd1ef0277772126a', class: "input-example" }, index.h("h3", { key: '294edc98458189a11728c365deaff0630f607ab9' }, "Checkbox"), index.h("check-box", { key: 'cbe8c1c145e6a81051b864e4714462a67aed9298', label: "Controlled Checkbox", checked: this.controlledCheckboxValue, onChange: this.handleControlledCheckboxChange }), index.h("p", { key: '19ffa361b1b479d271fb2f8a90e2b6d341c44ec7', class: "value-display" }, "Checked: ", this.controlledCheckboxValue.toString())), index.h("div", { key: '950be8a45351637658fb1e5c13f2a8b1ad2c3c06', class: "input-example" }, index.h("h3", { key: '5b3e513f3890dd35d62fa03eda5c0dd4f3e2f0ab' }, "Toggle"), index.h("stencil-toggle", { key: '16d125f201dc933e6a80345ca61850268e1b0bae', label: "Controlled Toggle", checked: this.controlledToggleValue, onChange: this.handleControlledToggleChange }), index.h("p", { key: '0a840d6e95d0fd3cacbbadc0f1b0f03082dd0b4c', class: "value-display" }, "Toggled: ", this.controlledToggleValue.toString())), index.h("div", { key: '4786b440e6c3cd22327ad8894bd2cbc1e2a28d43', class: "input-example" }, index.h("h3", { key: '43466d4f854f8fd5b8ebc8448aa20c8dc8fcb5b6' }, "Date Selector"), index.h("udp-date-selector", { key: '84be9acf1c48dff9cbeb19588fe8cf3338b16308', label: "Controlled Date", value: this.controlledDateValue, onChange: this.handleControlledDateChange }), index.h("p", { key: 'ab8531b319529f652fbfeba9d038c157739ab78f', class: "value-display" }, "Date: ", this.controlledDateValue)), index.h("div", { key: '26a293d9425f560f29973aee493757b3f836cae6', class: "input-example" }, index.h("h3", { key: 'cee79570db45935defc57c0b59abaccb72d292cd' }, "DateTime Selector"), index.h("udp-datetime-selector", { key: '7f9efe03d0c622e336742675efb6a029e5a816fb', label: "Controlled DateTime", value: this.controlledDateTimeValue, onChange: this.handleControlledDateTimeChange }), index.h("p", { key: '24a736902871a9b3687b9194c0e934bf231c314e', class: "value-display" }, "DateTime: ", this.controlledDateTimeValue)), index.h("div", { key: '0bef5920951558ee4a1a041930ecb72eea4cb220', class: "input-example" }, index.h("h3", { key: '8e0e2790bb4e50e5702f0500bf125081aa79d9ba' }, "Time Selector"), index.h("udp-time-selector", { key: '6b053bdeb1f685f864345e5af0fa8c841dc9db06', label: "Controlled Time", value: this.controlledTimeValue, onChange: this.handleControlledTimeChange }), index.h("p", { key: 'af9036e1b6c332d1963dfee819d024dc2e11c09c', class: "value-display" }, "Time: ", this.controlledTimeValue)), index.h("div", { key: '3566f7fac6a857d3117dbf0f799b73f1a67fddda', class: "input-example" }, index.h("h3", { key: '0f729058ce3067b744a4e557522d45ad850a09e9' }, "UDP Selector"), index.h("udp-selector", { key: 'bbde5d04caa4a7fdbb0aeccf97f3f2439b0a376a', label: "Controlled Selector", options: this.selectorOptions, value: this.controlledSelectorValue, onChange: this.handleControlledSelectorChange }), index.h("p", { key: 'b8b1cd7d4f6959c4b7574e996d597a629f09e0d9', class: "value-display" }, "Selected: ", this.controlledSelectorValue)), index.h("div", { key: '1dcc15135ed2997d99e867163b8e4bb3482e729f', class: "input-example" }, index.h("h3", { key: '8c35665c76e439b213391def276e3edb5fe8a4ca' }, "File Upload"), index.h("file-upload", { key: '13023732062341ac3f849eb9dd80a7ab3c988709', label: "Controlled File Upload", allowMultiple: true, onChange: this.handleControlledFileChange }), index.h("p", { key: 'a8863fd87d271b8e437169ff858b8727ef20b177', class: "value-display" }, "Files: ", this.controlledFileValue.length, " selected")))), index.h("section", { key: '4df5360723d0adfb5e88e47cf8ad67ebbb3f0cf5', class: "example-section" }, index.h("h2", { key: 'e2b35a91d8af9470830cd59a9c4860fff9b45ced' }, "Uncontrolled Components"), index.h("p", { key: 'ee4972c9404597fe6a1d9166693ed58d6177302a' }, "Components manage their own state with initial values."), index.h("div", { key: '2831fa2114801cb847a5a7be320113c0b0b57e04', class: "input-grid" }, index.h("div", { key: 'fbeb85dc62183315fb224ac174129a28f0b82918', class: "input-example" }, index.h("h3", { key: 'aad3807977d2fa303612c4e4c8fa4b3f10e895c9' }, "Text Field"), index.h("text-field", { key: 'a4758b4b116c8c68481688ea373e2550fe55f72b', label: "Uncontrolled Text Input", placeholder: "Enter text...", initialValue: "Initial text value", onChange: (e) => console.log('Text changed:', e.detail) })), index.h("div", { key: '4a9abaeefc01f435954b8484b99c2cccf2a98b92', class: "input-example" }, index.h("h3", { key: '9316641218224158a182aa0432f32171f0bf8147' }, "Numeric Field"), index.h("numeric-field", { key: '54c980e988f9864066ff5ab74d0919e9d9a821a1', label: "Uncontrolled Numeric Input", placeholder: "Enter number...", initialValue: "42", min: "0", max: "100", onChange: (e) => console.log('Number changed:', e.detail) })), index.h("div", { key: 'c9bd3bdb4c4fe5bb8706d8550b1753d714ea05c9', class: "input-example" }, index.h("h3", { key: '7cc6d984f27655cabd977065a295b7b03a209760' }, "Text Area"), index.h("text-area", { key: 'ab416779159eef26c884b8c7c8108b1a85a27278', label: "Uncontrolled Text Area", placeholder: "Enter description...", initialValue: "Initial description text", minRows: 3, onChange: (e) => console.log('Text area changed:', e.detail) })), index.h("div", { key: '9bd567cecdd5c50a588640bb9192256298af0d85', class: "input-example" }, index.h("h3", { key: '7dc7065799e49d44cd20409cad45a23cebe35b05' }, "Checkbox"), index.h("check-box", { key: 'ce576e8595ef205619a26b1b1cf338af6c6dfb1c', label: "Uncontrolled Checkbox", initialValue: "true", onChange: (e) => console.log('Checkbox changed:', e.detail) })), index.h("div", { key: '7bd2f4c5c57691c8e02bbd8b1031e1b8bd863b19', class: "input-example" }, index.h("h3", { key: '27134fa9a4cdc8bf433802b92be292c0236f1f57' }, "Toggle"), index.h("stencil-toggle", { key: '4bb158343211ec80ba11c054b4d9bea27f4bb871', label: "Uncontrolled Toggle", initialValue: "false", onChange: (e) => console.log('Toggle changed:', e.detail) })), index.h("div", { key: 'e54426c4dd6f29ea88a67f48543e074f221d722e', class: "input-example" }, index.h("h3", { key: 'ef430abc90d5937765f564640a3ba8b990a6d899' }, "Date Selector"), index.h("udp-date-selector", { key: '78e2ad0e5f46ee01aff4c0b48e1004e9119d8244', label: "Uncontrolled Date", initialValue: "2024-01-15", onChange: (e) => console.log('Date changed:', e.detail) })), index.h("div", { key: '05f5e5f00dda67616dc74e65dc32f5919d1b1f07', class: "input-example" }, index.h("h3", { key: '41eaf71ed50ee3188392a677ca5a3130516bcfa0' }, "Time Selector"), index.h("udp-time-selector", { key: 'da6aa8cac663d1307a3bff2c18532f2dcc68293f', label: "Uncontrolled Time", initialValue: "14:30", onChange: (e) => console.log('Time changed:', e.detail) })), index.h("div", { key: '1d7dd74a78f454cf360e83d39463f67e14759a02', class: "input-example" }, index.h("h3", { key: 'faa5e888eb8d1e08ed69e85ca529228119b54412' }, "DateTime Selector"), index.h("udp-datetime-selector", { key: '880b518fd32e80fcf305dbad31b37835755a76b0', label: "Uncontrolled DateTime", initialValue: "2024-01-15T14:30", onChange: (e) => console.log('DateTime changed:', e.detail) })), index.h("div", { key: 'b2e4f0549e0b87c0052cf277914cbdc876c66800', class: "input-example" }, index.h("h3", { key: 'e5d0b009429f4c75dca407d0501179e09aec6ca4' }, "UDP Selector"), index.h("udp-selector", { key: '2f015c435e8fadbd867a0f640feb9e92625cc91c', label: "Uncontrolled Selector", options: this.selectorOptions, initialValue: "option2", onChange: (e) => console.log('Selector changed:', e.detail) })))), index.h("section", { key: '81215b51a88570bedfe8c87b1f0f2b0ac34a270f', class: "example-section" }, index.h("h2", { key: '72ded636a7a45e1b32592a6a3bf863e170c2cf17' }, "Form-wrapped Components"), index.h("p", { key: 'b8364004cf77adf4a3988a080cbb11108a746688' }, "Components integrated with stencil-form and stencil-field for validation and state management."), index.h("stencil-form", { key: '362040b4f61388149bb9485950b23ee2325b857f', handleSubmit: this.handleFormSubmit, handleFormChange: this.handleFormChange, validate: this.validateForm, initialValues: {
91
+ return (index.h("div", { key: 'ead041ba85b98211f012e6b4369dccc99d053b10', class: "inputs-example" }, index.h("h1", { key: '65af5f39246bd6d2da1c64be87e015fda5fb6a7a' }, "Input Components Examples"), index.h("section", { key: 'ef08e78385539484fc0eac954d47211e14777526', class: "example-section" }, index.h("h2", { key: 'c360f6153537f9c4992f3a68a437e45a99c98c4c' }, "Controlled Components"), index.h("p", { key: '825d2a4af1868509344095dd3981c5a29fd246b9' }, "Parent component manages state and passes values to child components."), index.h("div", { key: '1d1a73fb3c9cf058fb28d7b087c83aae1514e49d', class: "input-grid" }, index.h("div", { key: '495161751e4de4d6997083e6ee76bff05f32f978', class: "input-example" }, index.h("h3", { key: '59b79a58b0a1e3c2f47dc9fa34a409c70dbfd0c8' }, "Text Field"), index.h("text-field", { key: '63436822d767c5cc0c418b45dc2ec3ebba41e757', label: "Controlled Text Input", placeholder: "Enter text...", value: this.controlledTextValue }), index.h("p", { key: '5d19c568c62e12b974d264d0cda12f2dd1ebb7dd', class: "value-display" }, "Value: ", this.controlledTextValue)), index.h("div", { key: '0f8790600f3aeb4a246dbf35ff1c314eceb05109', class: "input-example" }, index.h("h3", { key: '03efdac63f20384b41908bd69c79fa8767d980f6' }, "Numeric Field"), index.h("numeric-field", { key: 'c93cde404875a19b6aa7b013332623e1c238807d', label: "Controlled Numeric Input", placeholder: "Enter number...", value: this.controlledNumericValue, min: "0", max: "100", step: "1", onChange: this.handleControlledNumericChange }), index.h("p", { key: '4dd5d5e35b756874e2866fb76f666f7851780a02', class: "value-display" }, "Value: ", this.controlledNumericValue)), index.h("div", { key: '5d074c8b83e033e99854cb7ee62b3dd7a7380428', class: "input-example" }, index.h("h3", { key: '62c8d34121c772c21b5b0d2e02b27f66a6b3be9a' }, "Text Area"), index.h("text-area", { key: '197b2645661c3c2e19ed82e370307a4c10323a63', label: "Controlled Text Area", placeholder: "Enter description...", value: this.controlledTextAreaValue, minRows: 3, maxRows: 6 }), index.h("p", { key: 'af4fcbbb265092ddca731d11c1ff0da1cdf9a91a', class: "value-display" }, "Value: ", this.controlledTextAreaValue)), index.h("div", { key: '7bb01a5788a3d5d6821ce4b69de00a32843b3413', class: "input-example" }, index.h("h3", { key: '9b755776d53ece10f6696d8dae5351f337744e3f' }, "Checkbox"), index.h("check-box", { key: '857622539c358cd9fec892a892cb2a4432b43063', label: "Controlled Checkbox", checked: this.controlledCheckboxValue, onChange: this.handleControlledCheckboxChange }), index.h("p", { key: '4321417816a9abd453dfda86f8a69a9b4954d76f', class: "value-display" }, "Checked: ", this.controlledCheckboxValue.toString())), index.h("div", { key: 'd738bf42aa159aeaf2dc524dfba5ebb68769f272', class: "input-example" }, index.h("h3", { key: '6c9d2e27873505dd564866bb347bdd5687845098' }, "Toggle"), index.h("stencil-toggle", { key: '75c5febd9ee0ede9ab1072842ce7139b69b9d34c', label: "Controlled Toggle", checked: this.controlledToggleValue, onChange: this.handleControlledToggleChange }), index.h("p", { key: 'fdaa02e136ab9f2e573ecff19f59e23313d9af47', class: "value-display" }, "Toggled: ", this.controlledToggleValue.toString())), index.h("div", { key: '177c0f02a15c42f9678b52f85520f980048ede98', class: "input-example" }, index.h("h3", { key: 'ee407549f9d74dc62c9fe17ff27ccab0c4fd1a67' }, "Date Selector"), index.h("udp-date-selector", { key: '61d03580d107a6af1e3f57b169fb084e45ff952f', label: "Controlled Date", value: this.controlledDateValue, onChange: this.handleControlledDateChange }), index.h("p", { key: 'df22efbc5c80ad21a26ba6edefc94afa44b48c85', class: "value-display" }, "Date: ", this.controlledDateValue)), index.h("div", { key: '04871c7e468e21664459dbe05e5f31bce27a50e3', class: "input-example" }, index.h("h3", { key: 'b40bf90f9b5ff4f388308394a65ec3261dd96a54' }, "DateTime Selector"), index.h("udp-datetime-selector", { key: '8fbbeec979c623dd19f4d05e75014353175b6f78', label: "Controlled DateTime", value: this.controlledDateTimeValue, onChange: this.handleControlledDateTimeChange }), index.h("p", { key: '05f4acb63cb896bd1114ae57fb993b10d15f466d', class: "value-display" }, "DateTime: ", this.controlledDateTimeValue)), index.h("div", { key: '15db56d8368350d30a0227677de3fa340d27033d', class: "input-example" }, index.h("h3", { key: 'a028c9048a4e3753130612c377772c399851a283' }, "Time Selector"), index.h("udp-time-selector", { key: '83c4404cb6366ac56a58d2518d92fadfdb309129', label: "Controlled Time", value: this.controlledTimeValue, onChange: this.handleControlledTimeChange }), index.h("p", { key: '2d6828e931a7a060a0c15adb1fe36663c5e81bb1', class: "value-display" }, "Time: ", this.controlledTimeValue)), index.h("div", { key: '8552d777482b8da3aeaada17e99313821d440a75', class: "input-example" }, index.h("h3", { key: 'ff54a50e321ac32a53df3d7847694d5353704de5' }, "UDP Selector"), index.h("udp-selector", { key: '21e773065907d81cbd70d63bc0e2f01982c51c50', label: "Controlled Selector", options: this.selectorOptions, value: this.controlledSelectorValue, onChange: this.handleControlledSelectorChange }), index.h("p", { key: '100924186cdbe53a99cab2243e21ed9501e75a64', class: "value-display" }, "Selected: ", this.controlledSelectorValue)), index.h("div", { key: '55e78a38f3dcc50c82b3ddc881c066e4651340dc', class: "input-example" }, index.h("h3", { key: '79c08058ee3361bb82b20ce740eeb4dbebda89db' }, "File Upload"), index.h("file-upload", { key: 'd8eded5ac0596f01d6b1aea185f7b95ca6da8ba4', label: "Controlled File Upload", allowMultiple: true, onChange: this.handleControlledFileChange }), index.h("p", { key: '0d41949e7a69533971f5443bd2d775124305273b', class: "value-display" }, "Files: ", this.controlledFileValue.length, " selected")))), index.h("section", { key: '146f1684b0757ace25609812cdc8730dabcf15b4', class: "example-section" }, index.h("h2", { key: 'bf9e5f0a41257174a51b68bed545053aa1a431fc' }, "Uncontrolled Components"), index.h("p", { key: '062318030eee902383a84ac760ddf42bc248466c' }, "Components manage their own state with initial values."), index.h("div", { key: 'a1fdbe78c6c361e0e686ce313133c579230befef', class: "input-grid" }, index.h("div", { key: '8719ee0ac014dcc8c1c1a9c18ad8f6bcca539a00', class: "input-example" }, index.h("h3", { key: '1742c1d2570f34aa6067ae1c237c30104e847d83' }, "Text Field"), index.h("text-field", { key: '130f49bdd53c13e1e7a17d451c9d2e5c658a27ef', label: "Uncontrolled Text Input", placeholder: "Enter text...", initialValue: "Initial text value", onChange: (e) => console.log('Text changed:', e.detail) })), index.h("div", { key: 'fcf1194e3256b29499d26518e0a50f38c906209e', class: "input-example" }, index.h("h3", { key: '44a7979e43ff56c504846656699e8040b1034c43' }, "Numeric Field"), index.h("numeric-field", { key: 'f0e350629909aa6dc68fb604ab30b6a685b21d29', label: "Uncontrolled Numeric Input", placeholder: "Enter number...", initialValue: "42", min: "0", max: "100", onChange: (e) => console.log('Number changed:', e.detail) })), index.h("div", { key: '78803cb57e2be17d7362c737825b1711557e766f', class: "input-example" }, index.h("h3", { key: '704e0971cc3c36e5e331adad5cc46b7783a97566' }, "Text Area"), index.h("text-area", { key: '4fb0a56753ee44bbf2dbf8c2544cab06c3e2f059', label: "Uncontrolled Text Area", placeholder: "Enter description...", initialValue: "Initial description text", minRows: 3, onChange: (e) => console.log('Text area changed:', e.detail) })), index.h("div", { key: '039b32e4e293730978effdc73dea7e30d3ac25ae', class: "input-example" }, index.h("h3", { key: '07c6ed789a22cabac6f01a6bf6b800ba84a565b9' }, "Checkbox"), index.h("check-box", { key: '9478c892010ca55a8a7ba6d43774ec00539baaef', label: "Uncontrolled Checkbox", initialValue: "true", onChange: (e) => console.log('Checkbox changed:', e.detail) })), index.h("div", { key: '758db977d0340bcad0762b013a217bb3c67b3453', class: "input-example" }, index.h("h3", { key: 'ae94941ca3fbc0c65c6d319a84414e9f9a91ab07' }, "Toggle"), index.h("stencil-toggle", { key: '9f1f843c2be02f427539edeade6a17cdd441eff2', label: "Uncontrolled Toggle", initialValue: "false", onChange: (e) => console.log('Toggle changed:', e.detail) })), index.h("div", { key: '2d28be1cbbe0f795bd613f99e563b25c0d79a90d', class: "input-example" }, index.h("h3", { key: 'e49e236aee6091cf6f5433e92fa8bb5306d04839' }, "Date Selector"), index.h("udp-date-selector", { key: 'ac2ca5d7327de0d3833cddd5690382c50f7ca1c3', label: "Uncontrolled Date", initialValue: "2024-01-15", onChange: (e) => console.log('Date changed:', e.detail) })), index.h("div", { key: 'aba4ecaa0068112e162c2bc04850d600e5c7767a', class: "input-example" }, index.h("h3", { key: 'bf163192d2b4027ad2589f671ec957a01d0dbe62' }, "Time Selector"), index.h("udp-time-selector", { key: 'ecd51155d0e76cb5eb2ede897dd5826eb4d289f5', label: "Uncontrolled Time", initialValue: "14:30", onChange: (e) => console.log('Time changed:', e.detail) })), index.h("div", { key: '6eee8f9d02ef5d481aa9bd430abe1ea59ed6c061', class: "input-example" }, index.h("h3", { key: 'e15f4fc5522996e4adf89ca3409d509227532473' }, "DateTime Selector"), index.h("udp-datetime-selector", { key: '8af40a16fe3a6760f47972551fa1a48ff08e445f', label: "Uncontrolled DateTime", initialValue: "2024-01-15T14:30", onChange: (e) => console.log('DateTime changed:', e.detail) })), index.h("div", { key: '87a954650d4ebf6c477b9385723e3fe64c7f3745', class: "input-example" }, index.h("h3", { key: 'ff80ee04afabdb29f27b7996b59ffeea98975834' }, "UDP Selector"), index.h("udp-selector", { key: '6bbf24fb2e3a1079c5cb7824705669bae4db524d', label: "Uncontrolled Selector", options: this.selectorOptions, initialValue: "option2", onChange: (e) => console.log('Selector changed:', e.detail) })))), index.h("section", { key: 'b720c35fd8521629276001346204e8a6b6ed213c', class: "example-section" }, index.h("h2", { key: '95c96c7494af07c3e89ffae8cd85b63b518dd5d1' }, "Form-wrapped Components"), index.h("p", { key: 'ae001f27cd4679aa5756520d5312d283008f47d7' }, "Components integrated with stencil-form and stencil-field for validation and state management."), index.h("stencil-form", { key: '0d80d1f25976fae0affdd28648a8f2bc54e3c399', handleSubmit: this.handleFormSubmit, handleChange: this.handleFormChange, handleValidate: this.validateForm, initialValues: {
92
92
  formTextField: 'Initial form text',
93
93
  formNumericField: '25',
94
94
  formTextArea: 'Initial form description',
@@ -97,7 +97,7 @@ const InputsExample = class {
97
97
  formDate: '2024-02-01',
98
98
  formTime: '09:00',
99
99
  formSelector: 'option1'
100
- } }, index.h("div", { key: 'da246cd0f737d4cc24a9e1aab2d642f46f0dd5b9', class: "form-grid" }, index.h("stencil-field", { key: 'fca403e3e4b22b9697a28fa0a72c539b19209c5e', name: "formTextField" }, index.h("text-field", { key: '6fcc84433366bbe7f2ad107e3f62f5086a5bca68', label: "Form Text Field", placeholder: "Enter text...", required: true })), index.h("stencil-field", { key: '02e8e022962ac70fc3922134195d2789a1ff1150', name: "formNumericField" }, index.h("numeric-field", { key: 'c11c278c51a87671babf4aa9d56b6186c675a23b', label: "Form Numeric Field", placeholder: "Enter number...", min: "0", max: "100", required: true })), index.h("stencil-field", { key: '5dab6572842cc9eac5da936d8885772ef79cd316', name: "formTextArea" }, index.h("text-area", { key: '11bfbfd5088ce2394f3afff18e32d2116a32aef5', label: "Form Text Area", placeholder: "Enter description...", required: true, minRows: 3 })), index.h("stencil-field", { key: 'ecea25b318eed0547c13e59a027b654c4be9fcd0', name: "formCheckbox" }, index.h("check-box", { key: '78f127f9f7bcca6a0f6e481afb818b3db6d949fe', label: "Accept Terms and Conditions", required: true })), index.h("stencil-field", { key: '77cbe4ff4e53e767d3eb8d6373019b9b4a50735d', name: "formToggle" }, index.h("stencil-toggle", { key: '1fbd8fcc5decfed9f42b7cc779c52c1094e16865', label: "Enable Notifications" })), index.h("stencil-field", { key: 'a63a863e35dfa120d868c686dd05d904789191b9', name: "formDate" }, index.h("udp-date-selector", { key: 'd28a405f02c4782c4cab90ddfd05f37a98027f3d', label: "Form Date", required: true })), index.h("stencil-field", { key: '0f845e170698ed8278c30c049cb1959ca9014670', name: "formTime" }, index.h("udp-time-selector", { key: '29fcc81c4e71aa1e92ce9912fe65da1b3ef80076', label: "Form Time" })), index.h("stencil-field", { key: '635a13e8e4df968a2e2570752beee6cddd26237d', name: "formSelector" }, index.h("udp-selector", { key: '1b073b08193591c209fbc952d5d2611c640d335c', label: "Form Selector", options: this.selectorOptions, required: true })), index.h("stencil-field", { key: '8edf845e1abc0a0e1e3a6301f4c791c0cb9a4d32', name: "formFiles" }, index.h("file-upload", { key: '232a216103e25969d6e2cccd7accffc1453e7cc8', label: "Form File Upload", allowMultiple: true }))), index.h("div", { key: 'd0f7e7ffcba8cac4a659dc309f5b6a34781cc72b', class: "form-actions" }, index.h("button", { key: '9afaea75673848a0c5f7edd31a12fc4b7073cb57', type: "submit", class: "submit-button" }, "Submit Form"))), index.h("div", { key: 'e85b39d39068141392939d10baa9d99b39e3679e', class: "form-values" }, index.h("h3", { key: 'eafdd2ef93a23b27d2cff21ba16eb6c196ffae7b' }, "Current Form Values:"), index.h("pre", { key: '2db8a367e6a482522522bc88b2c13d9c9bb5e2d7' }, JSON.stringify(this.formValues, null, 2)))), index.h("section", { key: '7b4214782208e8f6a3b51ec98cf921fc2ace3ef1', class: "example-section" }, index.h("h2", { key: '499581121cdd03f92d778365a878fcb54a5d8e47' }, "Additional Examples"), index.h("p", { key: '31154dcc4ff09bdf22e48990b5b8a4ae99b6efe6' }, "More complex configurations and specialized use cases."), index.h("div", { key: '74cd3c0d4165e6abd032dbc93bfd45170634beae', class: "input-grid" }, index.h("div", { key: '50de9539f73cb00ceadeba9042055319b486abcf', class: "input-example" }, index.h("h3", { key: '3dc9837aeeed3d87ab64ecec3c4402a7c6bd0f22' }, "Multi-Select UDP Selector"), index.h("udp-selector", { key: '972ce6287b9c1adb73f2dbc2e48c5d5252044530', label: "Multi-Select Selector", options: this.selectorOptions, multiSelect: true, initialValue: "option1,option3", onChange: (e) => console.log('Multi-select changed:', e.detail) })), index.h("div", { key: '1f3747ee36e54941587f842fc8b78524b738196b', class: "input-example" }, index.h("h3", { key: '3ad60a99c76032da10f00c2b65cea29c003a8044' }, "Large UDP Selector"), index.h("udp-selector", { key: 'a552b021960e894caaf347164a777d87cd10c39a', label: "Large Selector", options: this.selectorOptions, large: true, initialValue: "option2", onChange: (e) => console.log('Large selector changed:', e.detail) })), index.h("div", { key: '41181b3cdff1a6576042a41b94c164aea0c8af24', class: "input-example" }, index.h("h3", { key: '7126db87670d76fd6c7d4b9f2a4c34cf474c5eb5' }, "File Upload with Type Restrictions"), index.h("file-upload", { key: '86fc2356ae21a9a74e12b9819c2d3a0413d39503', label: "Image Upload Only", allowedFileTypes: ['jpg', 'jpeg', 'png', 'gif'], allowMultiple: false, browseFileMessage: "Select an Image", onChange: (e) => console.log('Image upload changed:', e.detail) })), index.h("div", { key: 'bdf0de911e1e15902e722f1dad923ecd0aafef7e', class: "input-example" }, index.h("h3", { key: '359bcf5229b0620c5949970c323f32f63ff1c55b' }, "Disabled Components"), index.h("div", { key: 'bfc2fb3b2b9167228311066b837c146e4d786cb2', class: "disabled-examples" }, index.h("text-field", { key: '032af6447b2942306ca4aa232f583e5e3faf4488', label: "Disabled Text Field", value: "Cannot edit this", disabled: true }), index.h("check-box", { key: '725fed37e0a7d52e9b734591dbf5ede47011bc31', label: "Disabled Checkbox", checked: true, disabled: true }), index.h("udp-selector", { key: '8ff9c64f074c7105b8b9eb682b46c55af42b787f', label: "Disabled Selector", options: this.selectorOptions, value: "option1", disabled: true })))))));
100
+ } }, index.h("div", { key: 'd3f2b6e80373351888fff6354da2e47d0f793e16', class: "form-grid" }, index.h("stencil-field", { key: 'fca42fef7ac85ffc7c78b7d48267a1130d247e18', name: "formTextField" }, index.h("text-field", { key: '2eca17fb876f941bdfc1ba18ed4c24460375b39e', label: "Form Text Field", placeholder: "Enter text...", required: true })), index.h("stencil-field", { key: 'e27116858ab2388ccec348eecadf74b7230412e7', name: "formNumericField" }, index.h("numeric-field", { key: 'a190ffe8b8abb45f3c2ddad582317cd6f0746705', label: "Form Numeric Field", placeholder: "Enter number...", min: "0", max: "100", required: true })), index.h("stencil-field", { key: '0f31ffd8c1112e74e4e923a5cadf5a3de96f22f8', name: "formTextArea" }, index.h("text-area", { key: '7b726b56ac74271d81be67da24264872e6c6510c', label: "Form Text Area", placeholder: "Enter description...", required: true, minRows: 3 })), index.h("stencil-field", { key: 'bfeaf19abe940b745147fc95d7d8a9997b05a1ca', name: "formCheckbox" }, index.h("check-box", { key: 'f14e48a72b51c3ce0eadea0cb9f9d98e6fe6ddf6', label: "Accept Terms and Conditions", required: true })), index.h("stencil-field", { key: 'd71e60dbe3f6073ec6b630100c277db489d1efd3', name: "formToggle" }, index.h("stencil-toggle", { key: 'a04122b5e66627aa561fd4696b04a39ccb74c950', label: "Enable Notifications" })), index.h("stencil-field", { key: '20078be77f220315ccab082acc22f370f849fe44', name: "formDate" }, index.h("udp-date-selector", { key: '65098750d73fb1800330acaa665bf23a7d9f1deb', label: "Form Date", required: true })), index.h("stencil-field", { key: '7ea824bd2f2f7bb0ce6134e6f9ac86520495267e', name: "formTime" }, index.h("udp-time-selector", { key: '3b2efc78755ef1e97f6e2b5f282ddac21561f8b5', label: "Form Time" })), index.h("stencil-field", { key: 'a018fdca8d1b4525a18913b9a61ec15b861567df', name: "formSelector" }, index.h("udp-selector", { key: '14c0fdf9f115b95425d2ad22ef6d43ce666f34e3', label: "Form Selector", options: this.selectorOptions, required: true })), index.h("stencil-field", { key: 'f7d7f213d4a124642984b6f5ad275e3cd2230acf', name: "formFiles" }, index.h("file-upload", { key: '3ffd920ee0ccbbbf29cee8ca764e700ca6061af0', label: "Form File Upload", allowMultiple: true }))), index.h("div", { key: '640cab040e228cfbde45bdcad09bfdafcd97762f', class: "form-actions" }, index.h("button", { key: 'e829bfacee6a40ae5a85dcf27620381594285b9e', type: "submit", class: "submit-button" }, "Submit Form"))), index.h("div", { key: 'e06850277d32c6b429806037834094890e6fe834', class: "form-values" }, index.h("h3", { key: 'e242d0b268e51236233767cf086b007860a79c38' }, "Current Form Values:"), index.h("pre", { key: '628c32d498445e766c39a947048f977b0b87860b' }, JSON.stringify(this.formValues, null, 2)))), index.h("section", { key: '5e7d344174f0cc95a63377492a51f00369c86653', class: "example-section" }, index.h("h2", { key: '7a4fbd7a391fbafe8b3bcbfbc5bf6d6cc39639b0' }, "Additional Examples"), index.h("p", { key: '811a4497b1d7601aa3713ac7afd52a4f52e8aa47' }, "More complex configurations and specialized use cases."), index.h("div", { key: '0f6ff92228f10d1312a6dc380ae167e5644b07e6', class: "input-grid" }, index.h("div", { key: '45377b191a88f04e0bfa33a5791fb5ed6063f34b', class: "input-example" }, index.h("h3", { key: 'be2f5bfd53beacd2223889e32c360aaaa90c42bc' }, "Multi-Select UDP Selector"), index.h("udp-selector", { key: 'cd521f59323fa517f9125000974fe07419eefe3a', label: "Multi-Select Selector", options: this.selectorOptions, multiSelect: true, initialValue: "option1,option3", onChange: (e) => console.log('Multi-select changed:', e.detail) })), index.h("div", { key: '779ee8bb2988bb90bbdfe7c21af013da91da0a36', class: "input-example" }, index.h("h3", { key: '0b1067836811f19b95a2475486bebe9c03c1f205' }, "Large UDP Selector"), index.h("udp-selector", { key: '8450a289444ac6358aa941f67e322c5d3aaa1046', label: "Large Selector", options: this.selectorOptions, large: true, initialValue: "option2", onChange: (e) => console.log('Large selector changed:', e.detail) })), index.h("div", { key: 'd259be6b747f95563f3844498955de4590f5605e', class: "input-example" }, index.h("h3", { key: '6363536f0028333f1d9eca2b0ff8f394dad865c4' }, "File Upload with Type Restrictions"), index.h("file-upload", { key: '353e274d122b8f0791ef8549c2a20a69416060ef', label: "Image Upload Only", allowedFileTypes: ['jpg', 'jpeg', 'png', 'gif'], allowMultiple: false, browseFileMessage: "Select an Image", onChange: (e) => console.log('Image upload changed:', e.detail) })), index.h("div", { key: '5d8723c44a1307e82b00c5bacc54590538bc203a', class: "input-example" }, index.h("h3", { key: '2226792e8402ec9aa95c1b0287caa976433e1f96' }, "Disabled Components"), index.h("div", { key: 'ac25c524f1a396cafea48dd4c918ddf5c4f46dd5', class: "disabled-examples" }, index.h("text-field", { key: 'c3dc2d09d0137837655775adc4fa40632685b4a3', label: "Disabled Text Field", value: "Cannot edit this", disabled: true }), index.h("check-box", { key: '075f60f94e599da6cac7e4a0aae16a11a858b860', label: "Disabled Checkbox", checked: true, disabled: true }), index.h("udp-selector", { key: 'a44401e2621578e294adfb1874d78a62bc483627', label: "Disabled Selector", options: this.selectorOptions, value: "option1", disabled: true })))))));
101
101
  }
102
102
  };
103
103
  InputsExample.style = inputsExampleCss;