@wavemaker/app-ng-runtime 12.0.0-next.141131 → 12.0.0-next.141134

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 (326) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +54 -39
  2. app-ng-runtime/build-task/esm2022/basic/default/anchor/anchor.build.mjs +2 -2
  3. app-ng-runtime/build-task/esm2022/basic/default/html/html.build.mjs +2 -2
  4. app-ng-runtime/build-task/esm2022/basic/default/icon/icon.build.mjs +2 -2
  5. app-ng-runtime/build-task/esm2022/basic/default/label/label.build.mjs +2 -2
  6. app-ng-runtime/build-task/esm2022/basic/default/picture/picture.build.mjs +2 -2
  7. app-ng-runtime/build-task/esm2022/basic/default/spinner/spinner.build.mjs +2 -2
  8. app-ng-runtime/build-task/esm2022/basic/progress/progress-circle/progress-circle.build.mjs +7 -2
  9. app-ng-runtime/build-task/esm2022/basic/rich-text-editor/rich-text-editor.build.mjs +2 -2
  10. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +10 -3
  12. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  15. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  17. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  18. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  21. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +5 -1
  22. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  26. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  29. app-ng-runtime/build-task/fesm2022/index.mjs +54 -39
  30. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  31. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  32. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  33. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  34. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  35. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +53 -13
  36. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +11 -4
  37. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +55 -12
  38. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +2 -2
  39. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +55 -12
  40. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +1 -1
  41. app-ng-runtime/components/base/bundles/index.umd.js +22 -6
  42. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  43. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
  44. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +15 -5
  45. app-ng-runtime/components/base/esm2022/widgets/framework/property-change-handler.mjs +2 -2
  46. app-ng-runtime/components/base/fesm2022/index.mjs +23 -7
  47. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  48. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  49. app-ng-runtime/components/base/widgets/common/base/base-field-validations.d.ts +1 -1
  50. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +1 -0
  51. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  52. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +1 -0
  53. app-ng-runtime/components/basic/default/bundles/index.umd.js +27 -18
  54. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  55. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  56. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +5 -5
  57. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  58. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  59. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  60. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  61. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  62. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  63. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  64. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  65. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  66. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  67. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +5 -4
  68. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  69. app-ng-runtime/components/basic/default/fesm2022/index.mjs +27 -18
  70. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  71. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  72. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  73. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  74. app-ng-runtime/components/basic/default/video/video.component.d.ts +1 -0
  75. app-ng-runtime/components/basic/progress/bundles/index.umd.js +12 -8
  76. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +4 -4
  77. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  78. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  79. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  80. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +12 -8
  81. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  82. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +1 -0
  83. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  84. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  85. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  86. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  87. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  88. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  89. app-ng-runtime/components/basic/search/bundles/index.umd.js +11 -9
  90. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +14 -13
  91. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +2 -1
  92. app-ng-runtime/components/basic/search/fesm2022/index.mjs +11 -9
  93. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  94. app-ng-runtime/components/basic/search/search.component.d.ts +1 -0
  95. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +3 -3
  96. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +4 -4
  97. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +3 -3
  98. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  99. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  100. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  101. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  102. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  103. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +2 -2
  104. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +3 -3
  105. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +2 -2
  106. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +17 -0
  108. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +18 -1
  109. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +17 -0
  110. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  111. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
  112. app-ng-runtime/components/data/form/bundles/index.umd.js +27 -11
  113. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +28 -14
  114. app-ng-runtime/components/data/form/fesm2022/index.mjs +27 -13
  115. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  116. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +2 -0
  117. app-ng-runtime/components/data/list/bundles/index.umd.js +2 -2
  118. app-ng-runtime/components/data/list/esm2022/list.component.mjs +3 -3
  119. app-ng-runtime/components/data/list/fesm2022/index.mjs +2 -2
  120. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  121. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  122. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  123. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  124. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  125. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  126. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  127. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  128. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  129. app-ng-runtime/components/data/table/bundles/index.umd.js +45 -11
  130. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  131. app-ng-runtime/components/data/table/esm2022/table-row/table-row.props.mjs +2 -2
  132. app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
  133. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  134. app-ng-runtime/components/data/table/fesm2022/index.mjs +46 -12
  135. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  136. app-ng-runtime/components/data/table/table.component.d.ts +8 -1
  137. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  138. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  139. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  140. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  141. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  142. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  143. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  144. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  145. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +20 -3
  146. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  147. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +13 -1
  148. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +9 -4
  149. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +20 -3
  150. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  151. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +4 -4
  152. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +5 -5
  153. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +4 -4
  154. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  155. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  156. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  157. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  158. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  159. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  160. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  161. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  162. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  163. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  164. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  165. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  166. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/input/chips/bundles/index.umd.js +3 -2
  168. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +3 -3
  169. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  170. app-ng-runtime/components/input/chips/fesm2022/index.mjs +3 -2
  171. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  172. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  173. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  174. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  175. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  176. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  177. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  178. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  179. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  180. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  181. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  182. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  183. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  184. app-ng-runtime/components/input/default/base-form-custom.component.d.ts +2 -1
  185. app-ng-runtime/components/input/default/bundles/index.umd.js +219 -114
  186. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  187. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  188. app-ng-runtime/components/input/default/dataset-aware-form.component.d.ts +2 -2
  189. app-ng-runtime/components/input/default/esm2022/base-form-custom.component.mjs +6 -1
  190. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  191. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  192. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  193. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  194. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  195. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +23 -16
  196. app-ng-runtime/components/input/default/esm2022/dataset-aware-form.component.mjs +5 -5
  197. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  198. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  199. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +30 -23
  200. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +60 -30
  201. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  202. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +6 -5
  203. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -1
  204. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  205. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  206. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  207. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  208. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  209. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  210. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +51 -14
  211. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  212. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  213. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  214. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  215. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +9 -6
  216. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  217. app-ng-runtime/components/input/default/fesm2022/index.mjs +219 -114
  218. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  219. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  220. app-ng-runtime/components/input/default/select/select.component.d.ts +4 -4
  221. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  222. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  223. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  224. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  225. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  226. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  227. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +4 -2
  228. app-ng-runtime/components/input/epoch/bundles/index.umd.js +15 -9
  229. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  230. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  231. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +6 -6
  232. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  233. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +10 -7
  234. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  235. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  236. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  237. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +15 -9
  238. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  239. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  240. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +208 -95
  241. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +206 -98
  242. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +6 -1
  243. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +209 -96
  244. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  245. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +17 -11
  246. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  247. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  248. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  249. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  250. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  251. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  252. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +10 -8
  253. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +9 -8
  254. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  255. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
  256. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -8
  257. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  258. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  259. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  260. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  261. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  262. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  263. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  264. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  265. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  266. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  267. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  268. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  269. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  270. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  271. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  272. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  273. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  274. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  275. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  276. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  277. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +2 -1
  278. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  279. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +2 -1
  280. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  281. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +2 -1
  282. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  283. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +2 -1
  284. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  285. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  286. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  287. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  288. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  289. app-ng-runtime/core/bundles/index.umd.js +18 -15
  290. app-ng-runtime/core/enums/enums.d.ts +2 -2
  291. app-ng-runtime/core/esm2022/enums/enums.mjs +2 -2
  292. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  293. app-ng-runtime/core/esm2022/utils/build-utils.mjs +12 -12
  294. app-ng-runtime/core/esm2022/utils/utils.mjs +5 -4
  295. app-ng-runtime/core/fesm2022/index.mjs +18 -16
  296. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  297. app-ng-runtime/core/public_api.d.ts +1 -1
  298. app-ng-runtime/core/utils/utils.d.ts +1 -0
  299. app-ng-runtime/locales/moment-timezone/moment-timezone-with-data.js +37 -37
  300. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  301. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  302. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  303. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  304. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  305. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  306. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  307. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  308. app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
  309. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
  310. app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
  311. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  312. app-ng-runtime/package.json +1 -1
  313. app-ng-runtime/runtime/base/bundles/index.umd.js +16 -5
  314. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  315. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +2 -0
  316. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  317. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +10 -1
  318. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  319. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  320. app-ng-runtime/runtime/base/fesm2022/index.mjs +16 -5
  321. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  322. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  323. app-ng-runtime/runtime/base/services/i18n.service.d.ts +1 -1
  324. app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  325. app-ng-runtime/scripts/datatable/datatable.js +54 -43
  326. app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
@@ -9,7 +9,7 @@ import { IMaskDirective, IMaskModule } from 'angular-imask';
9
9
  import * as i2 from '@wm/components/base';
10
10
  import { PROP_STRING, PROP_ANY, PROP_BOOLEAN, PROP_NUMBER, register, DISPLAY_TYPE, StylableComponent, styler, provideAsWidgetRef, APPLY_STYLES_TYPE, WidgetConfig, registerFormWidget, provideAs, extractDataAsArray, ToDatePipe, ALLFIELDS, convertDataToObject, getOrderedDataset, transformDataWithKeys, transformFormData, getUniqObjsByDataField, groupData, handleHeaderClick, toggleAllHeaders, WidgetRef, INPUTMODE, TrailingZeroDecimalPipe, WmComponentsModule } from '@wm/components/base';
11
11
  import * as i1$1 from '@wm/core';
12
- import { DataSource, FormWidgetType, isDefined, toggleClass, AppDefaults, $appDigest, debounce as debounce$1, noop, isEqualWithFields, toBoolean, setListClass, switchClass, addForIdAttributes, addClass, AbstractI18nService, setAttr, removeAttr, setCSS } from '@wm/core';
12
+ import { DataSource, FormWidgetType, isDefined, toggleClass, AppDefaults, $appDigest, debounce as debounce$1, noop, isEqualWithFields, toBoolean, setListClass, switchClass, addForIdAttributes, addClass, AbstractI18nService, isIos, isSafari, setAttr, removeAttr, setCSS } from '@wm/core';
13
13
  import { has, set, isArray, debounce, toString, find, isNull, isObject, isEqual, isEmpty, forEach, includes, isString, get, isUndefined, round, toArray, intersection, findIndex } from 'lodash-es';
14
14
  import { Subject } from 'rxjs';
15
15
  import { __param, __metadata, __decorate } from 'tslib';
@@ -24,6 +24,7 @@ const registerProps$e = () => {
24
24
  ['conditionalstyle', PROP_ANY],
25
25
  ['disabled', PROP_BOOLEAN],
26
26
  ['hint', PROP_STRING],
27
+ ['arialabel', PROP_STRING],
27
28
  ['iconclass', PROP_STRING],
28
29
  ['iconheight', PROP_STRING],
29
30
  ['iconmargin', PROP_STRING],
@@ -317,6 +318,8 @@ class BaseFormCustomComponent extends BaseFormComponent {
317
318
  return;
318
319
  }
319
320
  if (this._formControl) {
321
+ if (this._formControl.valueAccessor["widgetSubType"].startsWith('wm-custom-'))
322
+ return;
320
323
  this.datavalue = value;
321
324
  this.onPropertyChange('datavalue', value);
322
325
  this.updatePrevDatavalue(value);
@@ -328,6 +331,9 @@ class BaseFormCustomComponent extends BaseFormComponent {
328
331
  */
329
332
  (value !== this.datavalue) && this._onChange(this.datavalue);
330
333
  }
334
+ get formControl() {
335
+ return this._formControl;
336
+ }
331
337
  invokeOnChange(value, $event, valid) {
332
338
  // let the angular know about the change
333
339
  this._onChange(value);
@@ -369,6 +375,7 @@ const checkboxProps = new Map([
369
375
  ['datavalue', PROP_STRING],
370
376
  ['disabled', PROP_BOOLEAN],
371
377
  ['hint', PROP_STRING],
378
+ ['arialabel', PROP_STRING],
372
379
  ['name', PROP_STRING],
373
380
  ['readonly', PROP_BOOLEAN],
374
381
  ['required', PROP_BOOLEAN],
@@ -496,7 +503,7 @@ class CheckboxComponent extends BaseFormCustomComponent {
496
503
  provideAs(CheckboxComponent, NG_VALUE_ACCESSOR, true),
497
504
  provideAs(CheckboxComponent, NG_VALIDATORS, true),
498
505
  provideAsWidgetRef(CheckboxComponent)
499
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$a, decls: 6, vars: 19, consts: [["checkbox", ""], [3, "ngClass"], ["type", "checkbox", "role", "checkbox", "focus-target", "", 3, "ngModelChange", "blur", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "tabindex"], [1, "caption", 3, "innerHtml"], ["alt", "Checkbox Image", "aria-hidden", "true", "src", "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", 1, "switch"], ["type", "hidden", "aria-hidden", "true", "tabindex", "-1", 1, "ng-hide", "model-holder", 3, "disabled", "value"]], template: function CheckboxComponent_Template(rf, ctx) { if (rf & 1) {
506
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$a, decls: 6, vars: 18, consts: [["checkbox", ""], [3, "ngClass"], ["type", "checkbox", "focus-target", "", 3, "ngModelChange", "blur", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "tabindex"], [1, "caption", 3, "innerHtml"], ["alt", "Checkbox Image", "aria-hidden", "true", "src", "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", 1, "switch"], ["type", "hidden", "aria-hidden", "true", "tabindex", "-1", 1, "ng-hide", "model-holder", 3, "disabled", "value"]], template: function CheckboxComponent_Template(rf, ctx) { if (rf & 1) {
500
507
  const _r1 = i0.ɵɵgetCurrentView();
501
508
  i0.ɵɵelementStart(0, "label", 1)(1, "input", 2, 0);
502
509
  i0.ɵɵtwoWayListener("ngModelChange", function CheckboxComponent_Template_input_ngModelChange_1_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.proxyModel, $event) || (ctx.proxyModel = $event); return i0.ɵɵresetView($event); });
@@ -506,11 +513,11 @@ class CheckboxComponent extends BaseFormCustomComponent {
506
513
  i0.ɵɵelementEnd();
507
514
  i0.ɵɵelement(5, "input", 5);
508
515
  } if (rf & 2) {
509
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(14, _c2$7, !ctx.proxyModel, ctx.disabled || ctx.readonly, ctx.required && ctx._caption));
516
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(13, _c2$7, !ctx.proxyModel, ctx.disabled || ctx.readonly, ctx.required && ctx._caption));
510
517
  i0.ɵɵadvance();
511
518
  i0.ɵɵtwoWayProperty("ngModel", ctx.proxyModel);
512
- i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(18, _c3$3))("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled || ctx.readonly)("tabindex", ctx.tabindex);
513
- i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.hint)("aria-checked", !!ctx.proxyModel)("accesskey", ctx.shortcutkey);
519
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(17, _c3$3))("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled || ctx.readonly)("tabindex", ctx.tabindex);
520
+ i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.arialabel)("accesskey", ctx.shortcutkey);
514
521
  i0.ɵɵadvance(2);
515
522
  i0.ɵɵproperty("innerHtml", ctx._caption, i0.ɵɵsanitizeHtml);
516
523
  i0.ɵɵadvance(2);
@@ -523,7 +530,7 @@ class CheckboxComponent extends BaseFormCustomComponent {
523
530
  provideAs(CheckboxComponent, NG_VALUE_ACCESSOR, true),
524
531
  provideAs(CheckboxComponent, NG_VALIDATORS, true),
525
532
  provideAsWidgetRef(CheckboxComponent)
526
- ], template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption)}\">\n <input type=\"checkbox\"\n role=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-checked]=\"!!proxyModel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n" }]
533
+ ], template: "<label [ngClass]=\"{'unchecked': !proxyModel, 'disabled': (disabled || readonly), 'required': (required && _caption)}\">\n <input type=\"checkbox\"\n #checkbox\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n focus-target\n [(ngModel)]=\"proxyModel\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled || readonly\"\n [attr.accesskey]=\"shortcutkey\"\n [tabindex]=\"tabindex\"\n (blur)=\"invokeOnTouched($event)\"\n (ngModelChange)=\"handleChange($event)\">\n <span class=\"caption\" [innerHtml]=\"_caption\"></span>\n <img alt=\"Checkbox Image\" aria-hidden=\"true\" src=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" class=\"switch\"/>\n</label>\n<input type=\"hidden\" class=\"ng-hide model-holder\" aria-hidden=\"true\" tabindex=\"-1\" [disabled]=\"disabled\" [value]=\"proxyModel\">\n" }]
527
534
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
528
535
  type: Attribute,
529
536
  args: ['checkedvalue']
@@ -577,8 +584,8 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
577
584
  // invoke on datavalue change.
578
585
  this.invokeOnChange(val, undefined, true);
579
586
  }
580
- constructor(inj, config, explicitContext, groupby) {
581
- super(inj, config, explicitContext);
587
+ constructor(inj, config, explicitContext, groupby, initPromise) {
588
+ super(inj, config, explicitContext, initPromise);
582
589
  this.groupby = groupby;
583
590
  this.datasetItems = [];
584
591
  this.acceptsArray = false; // set to true if proxyModel on widget accepts array type.
@@ -830,7 +837,7 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
830
837
  this.cancelLocaleChangeSubscription();
831
838
  }
832
839
  }
833
- static { this.ɵfac = function DatasetAwareFormComponent_Factory(t) { return new (t || DatasetAwareFormComponent)(i0.ɵɵinject(i0.Injector), i0.ɵɵinject(WidgetConfig), i0.ɵɵinject('EXPLICIT_CONTEXT', 8), i0.ɵɵinjectAttribute('groupby')); }; }
840
+ static { this.ɵfac = function DatasetAwareFormComponent_Factory(t) { return new (t || DatasetAwareFormComponent)(i0.ɵɵinject(i0.Injector), i0.ɵɵinject(WidgetConfig), i0.ɵɵinject('EXPLICIT_CONTEXT', 8), i0.ɵɵinjectAttribute('groupby'), i0.ɵɵinject(Promise)); }; }
834
841
  static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DatasetAwareFormComponent, factory: DatasetAwareFormComponent.ɵfac }); }
835
842
  }
836
843
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DatasetAwareFormComponent, [{
@@ -846,7 +853,7 @@ class DatasetAwareFormComponent extends BaseFormCustomComponent {
846
853
  }] }, { type: undefined, decorators: [{
847
854
  type: Attribute,
848
855
  args: ['groupby']
849
- }] }], null); })();
856
+ }] }, { type: Promise }], null); })();
850
857
 
851
858
  const checkboxsetProps = new Map([
852
859
  ['class', PROP_STRING],
@@ -895,10 +902,10 @@ function CheckboxsetComponent_ng_template_0_li_0_label_1_Template(rf, ctx) { if
895
902
  const item_r2 = ctx_r3.$implicit;
896
903
  const i_r5 = ctx_r3.index;
897
904
  const ctx_r2 = i0.ɵɵnextContext(2);
898
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(12, _c2$6, ctx_r2.disabled || ctx_r2.readonly))("title", item_r2.label);
905
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c2$6, ctx_r2.disabled || ctx_r2.readonly))("title", item_r2.label);
899
906
  i0.ɵɵadvance();
900
907
  i0.ɵɵproperty("name", "checkboxset_" + ctx_r2.widgetId)("tabindex", ctx_r2.tabindex)("disabled", ctx_r2.disabled || ctx_r2.readonly)("value", item_r2.key)("tabindex", ctx_r2.tabindex)("checked", item_r2.selected);
901
- i0.ɵɵattribute("aria-label", item_r2.key)("aria-checked", item_r2.selected)("data-attr-index", i_r5);
908
+ i0.ɵɵattribute("data-attr-index", i_r5);
902
909
  i0.ɵɵadvance();
903
910
  i0.ɵɵproperty("textContent", item_r2.label);
904
911
  } }
@@ -911,16 +918,16 @@ function CheckboxsetComponent_ng_template_0_li_0_label_2_Template(rf, ctx) { if
911
918
  const item_r2 = ctx_r3.$implicit;
912
919
  const i_r5 = ctx_r3.index;
913
920
  const ctx_r2 = i0.ɵɵnextContext(2);
914
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c2$6, ctx_r2.disabled || ctx_r2.readonly));
921
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$6, ctx_r2.disabled || ctx_r2.readonly));
915
922
  i0.ɵɵadvance();
916
923
  i0.ɵɵproperty("name", "checkboxset_" + ctx_r2.widgetId)("tabindex", ctx_r2.tabindex)("disabled", ctx_r2.disabled || ctx_r2.readonly)("value", item_r2.key)("tabindex", ctx_r2.tabindex)("checked", item_r2.selected);
917
- i0.ɵɵattribute("aria-label", item_r2.key)("aria-checked", item_r2.selected)("data-attr-index", i_r5);
924
+ i0.ɵɵattribute("data-attr-index", i_r5);
918
925
  } }
919
926
  function CheckboxsetComponent_ng_template_0_li_0_Template(rf, ctx) { if (rf & 1) {
920
927
  const _r1 = i0.ɵɵgetCurrentView();
921
928
  i0.ɵɵelementStart(0, "li", 5);
922
929
  i0.ɵɵlistener("click", function CheckboxsetComponent_ng_template_0_li_0_Template_li_click_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onCheckboxLabelClick($event, item_r2.key)); });
923
- i0.ɵɵtemplate(1, CheckboxsetComponent_ng_template_0_li_0_label_1_Template, 3, 14, "label", 6)(2, CheckboxsetComponent_ng_template_0_li_0_label_2_Template, 3, 12, "label", 7);
930
+ i0.ɵɵtemplate(1, CheckboxsetComponent_ng_template_0_li_0_label_1_Template, 3, 12, "label", 6)(2, CheckboxsetComponent_ng_template_0_li_0_label_2_Template, 3, 10, "label", 7);
924
931
  i0.ɵɵelementEnd();
925
932
  } if (rf & 2) {
926
933
  const item_r2 = ctx.$implicit;
@@ -955,7 +962,7 @@ function CheckboxsetComponent_ng_template_3_li_0_span_7_Template(rf, ctx) { if (
955
962
  } }
956
963
  function CheckboxsetComponent_ng_template_3_li_0_li_8_label_1_Template(rf, ctx) { if (rf & 1) {
957
964
  i0.ɵɵelementStart(0, "label", 8);
958
- i0.ɵɵelement(1, "input", 26)(2, "span", 10);
965
+ i0.ɵɵelement(1, "input", 9)(2, "span", 10);
959
966
  i0.ɵɵelementEnd();
960
967
  } if (rf & 2) {
961
968
  const ctx_r9 = i0.ɵɵnextContext();
@@ -971,7 +978,7 @@ function CheckboxsetComponent_ng_template_3_li_0_li_8_label_1_Template(rf, ctx)
971
978
  } }
972
979
  function CheckboxsetComponent_ng_template_3_li_0_li_8_label_2_Template(rf, ctx) { if (rf & 1) {
973
980
  i0.ɵɵelementStart(0, "label", 11);
974
- i0.ɵɵelement(1, "input", 26)(2, "span", 27);
981
+ i0.ɵɵelement(1, "input", 9)(2, "span", 26);
975
982
  i0.ɵɵelementEnd();
976
983
  } if (rf & 2) {
977
984
  const ctx_r9 = i0.ɵɵnextContext();
@@ -1012,10 +1019,15 @@ function CheckboxsetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1)
1012
1019
  i0.ɵɵelementEnd()();
1013
1020
  } if (rf & 2) {
1014
1021
  const groupObj_r7 = ctx.$implicit;
1022
+ const groupindex_r12 = ctx.index;
1015
1023
  const ctx_r2 = i0.ɵɵnextContext(2);
1016
- i0.ɵɵadvance(2);
1017
- i0.ɵɵproperty("title", groupObj_r7.key)("ngClass", i0.ɵɵpureFunction1(6, _c3$2, ctx_r2.collapsible));
1018
- i0.ɵɵadvance(2);
1024
+ i0.ɵɵadvance();
1025
+ i0.ɵɵattribute("aria-labelledby", "group_" + ctx_r2.widgetId + "_" + groupindex_r12);
1026
+ i0.ɵɵadvance();
1027
+ i0.ɵɵproperty("id", "group_" + ctx_r2.widgetId + "_" + groupindex_r12)("title", groupObj_r7.key)("ngClass", i0.ɵɵpureFunction1(9, _c3$2, ctx_r2.collapsible));
1028
+ i0.ɵɵadvance();
1029
+ i0.ɵɵattribute("aria-label", "Group " + groupObj_r7.key);
1030
+ i0.ɵɵadvance();
1019
1031
  i0.ɵɵtextInterpolate1("", groupObj_r7.key, " ");
1020
1032
  i0.ɵɵadvance(2);
1021
1033
  i0.ɵɵproperty("ngIf", ctx_r2.collapsible);
@@ -1025,7 +1037,7 @@ function CheckboxsetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1)
1025
1037
  i0.ɵɵproperty("ngForOf", groupObj_r7.data);
1026
1038
  } }
1027
1039
  function CheckboxsetComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
1028
- i0.ɵɵtemplate(0, CheckboxsetComponent_ng_template_3_li_0_Template, 9, 8, "li", 14);
1040
+ i0.ɵɵtemplate(0, CheckboxsetComponent_ng_template_3_li_0_Template, 9, 11, "li", 14);
1029
1041
  } if (rf & 2) {
1030
1042
  const ctx_r2 = i0.ɵɵnextContext();
1031
1043
  i0.ɵɵproperty("ngForOf", ctx_r2.groupedData);
@@ -1042,6 +1054,8 @@ class CheckboxsetComponent extends DatasetAwareFormComponent {
1042
1054
  }
1043
1055
  triggerInvokeOnChange(keys, $event) {
1044
1056
  this.modelByKey = keys;
1057
+ if (this.viewParent.containerWidget)
1058
+ this.viewParent.containerWidget.updateDataValue(this.datavalue);
1045
1059
  this.invokeOnTouched();
1046
1060
  // invoke on datavalue change.
1047
1061
  this.invokeOnChange(this.datavalue, $event || {}, true);
@@ -1100,13 +1114,13 @@ class CheckboxsetComponent extends DatasetAwareFormComponent {
1100
1114
  provideAs(CheckboxsetComponent, NG_VALUE_ACCESSOR, true),
1101
1115
  provideAs(CheckboxsetComponent, NG_VALIDATORS, true),
1102
1116
  provideAsWidgetRef(CheckboxsetComponent)
1103
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$a, decls: 5, vars: 4, consts: [["groupedListTemplate", ""], [3, "ngIf", "ngIfElse"], ["hidden", "", 1, "model-holder", 3, "disabled"], ["class", "readonly-wrapper", 4, "ngIf"], ["partialContainer", "", "role", "presentation", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], ["partialContainer", "", "role", "presentation", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"], ["class", "app-checkboxset-label", 3, "ngClass", "title", 4, "ngIf"], ["class", "app-checkboxset-label", 3, "ngClass", 4, "ngIf"], [1, "app-checkboxset-label", 3, "ngClass", "title"], ["type", "checkbox", 3, "name", "tabindex", "disabled", "value", "checked"], [1, "caption", 3, "textContent"], [1, "app-checkboxset-label", 3, "ngClass"], ["partial-container-target", "", 1, "caption", "customTemplate"], [1, "readonly-wrapper"], ["class", "app-list-item-group", "role", "presentation", 4, "ngFor", "ngForOf"], ["role", "presentation", 1, "app-list-item-group"], [1, "item-group"], [1, "list-group-header", 3, "click", "title", "ngClass"], [1, "group-title"], [1, "header-action"], ["class", "app-icon wi action wi-chevron-up", 3, "title", 4, "ngIf"], ["class", "label label-default", 3, "textContent", 4, "ngIf"], ["partialContainer", "", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], [1, "app-icon", "wi", "action", "wi-chevron-up", 3, "title"], [1, "label", "label-default", 3, "textContent"], ["partialContainer", "", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"], ["type", "checkbox", "aria-label", "checkbox group", 3, "name", "tabindex", "disabled", "value", "checked"], ["partial-container-target", "", 1, "caption"]], template: function CheckboxsetComponent_Template(rf, ctx) { if (rf & 1) {
1117
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$a, decls: 5, vars: 4, consts: [["groupedListTemplate", ""], [3, "ngIf", "ngIfElse"], ["hidden", "", 1, "model-holder", 3, "disabled"], ["class", "readonly-wrapper", 4, "ngIf"], ["partialContainer", "", "role", "presentation", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], ["partialContainer", "", "role", "presentation", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"], ["class", "app-checkboxset-label", 3, "ngClass", "title", 4, "ngIf"], ["class", "app-checkboxset-label", 3, "ngClass", 4, "ngIf"], [1, "app-checkboxset-label", 3, "ngClass", "title"], ["type", "checkbox", 3, "name", "tabindex", "disabled", "value", "checked"], [1, "caption", 3, "textContent"], [1, "app-checkboxset-label", 3, "ngClass"], ["partial-container-target", "", 1, "caption", "customTemplate"], [1, "readonly-wrapper"], ["class", "app-list-item-group", "role", "presentation", 4, "ngFor", "ngForOf"], ["role", "presentation", 1, "app-list-item-group"], [1, "item-group"], ["aria-hidden", "true", 1, "list-group-header", 3, "click", "id", "title", "ngClass"], [1, "group-title"], [1, "header-action"], ["class", "app-icon wi action wi-chevron-up", 3, "title", 4, "ngIf"], ["class", "label label-default", 3, "textContent", 4, "ngIf"], ["partialContainer", "", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], [1, "app-icon", "wi", "action", "wi-chevron-up", 3, "title"], [1, "label", "label-default", 3, "textContent"], ["partialContainer", "", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"], ["partial-container-target", "", 1, "caption"]], template: function CheckboxsetComponent_Template(rf, ctx) { if (rf & 1) {
1104
1118
  i0.ɵɵtemplate(0, CheckboxsetComponent_ng_template_0_Template, 1, 1, "ng-template", 1);
1105
1119
  i0.ɵɵelement(1, "input", 2);
1106
1120
  i0.ɵɵtemplate(2, CheckboxsetComponent_div_2_Template, 1, 0, "div", 3)(3, CheckboxsetComponent_ng_template_3_Template, 1, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
1107
1121
  } if (rf & 2) {
1108
- const groupedListTemplate_r12 = i0.ɵɵreference(4);
1109
- i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r12);
1122
+ const groupedListTemplate_r13 = i0.ɵɵreference(4);
1123
+ i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r13);
1110
1124
  i0.ɵɵadvance();
1111
1125
  i0.ɵɵproperty("disabled", ctx.disabled || ctx.readonly);
1112
1126
  i0.ɵɵadvance();
@@ -1119,7 +1133,7 @@ class CheckboxsetComponent extends DatasetAwareFormComponent {
1119
1133
  provideAs(CheckboxsetComponent, NG_VALUE_ACCESSOR, true),
1120
1134
  provideAs(CheckboxsetComponent, NG_VALIDATORS, true),
1121
1135
  provideAsWidgetRef(CheckboxsetComponent)
1122
- ], template: "<ng-template [ngIf]=\"!groupby\" [ngIfElse]=\"groupedListTemplate\">\n <li [ngClass]=\"['checkbox', 'app-checkbox', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n *ngFor=\"let item of datasetItems; let i = index\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\" [attr.aria-label]=\"item.key\"\n [tabindex]=\"tabindex\" [attr.aria-checked]=\"item.selected\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\" [attr.aria-label]=\"item.key\"\n [tabindex]=\"tabindex\" [attr.aria-checked]=\"item.selected\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n </li>\n</ng-template>\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n<div *ngIf=\"readonly || disabled\" class=\"readonly-wrapper\"></div>\n\n<!-- This template will be displayed when groupby is specified. -->\n<ng-template #groupedListTemplate>\n <li *ngFor=\"let groupObj of groupedData\" class=\"app-list-item-group\" role=\"presentation\">\n <ul class=\"item-group\">\n <li class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\">{{groupObj.key}}\n <div class=\"header-action\">\n <i class=\"app-icon wi action wi-chevron-up\" *ngIf=\"collapsible\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n <span *ngIf=\"showcount\" class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n </div>\n </h4>\n </li>\n <li *ngFor=\"let item of groupObj.data; let i = index;\"\n [ngClass]=\"['checkbox', 'app-checkbox', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item)\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\" aria-label=\"checkbox group\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\" aria-label=\"checkbox group\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" partial-container-target></span>\n </label>\n </li>\n </ul>\n </li>\n</ng-template>\n" }]
1136
+ ], template: "<ng-template [ngIf]=\"!groupby\" [ngIfElse]=\"groupedListTemplate\">\n <li [ngClass]=\"['checkbox', 'app-checkbox', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n *ngFor=\"let item of datasetItems; let i = index\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" [tabindex]=\"tabindex\"\n type=\"checkbox\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n </li>\n</ng-template>\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n<div *ngIf=\"readonly || disabled\" class=\"readonly-wrapper\"></div>\n\n<!-- This template will be displayed when groupby is specified. -->\n<ng-template #groupedListTemplate>\n <li *ngFor=\"let groupObj of groupedData; let groupindex = index;\" class=\"app-list-item-group\" role=\"presentation\">\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n <i class=\"app-icon wi action wi-chevron-up\" *ngIf=\"collapsible\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n <span *ngIf=\"showcount\" class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n </div>\n </h4>\n </li>\n <li *ngFor=\"let item of groupObj.data; let i = index;\"\n [ngClass]=\"['checkbox', 'app-checkbox', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onCheckboxLabelClick($event, item)\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" [title]=\"item.label\">\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-checkboxset-label\" [ngClass]=\"{'disabled':disabled || readonly}\" >\n <input [name]=\"'checkboxset_' + widgetId\" type=\"checkbox\"\n [tabindex]=\"tabindex\"\n [disabled]=\"disabled || readonly\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" partial-container-target></span>\n </label>\n </li>\n </ul>\n </li>\n</ng-template>\n" }]
1123
1137
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
1124
1138
  type: Inject,
1125
1139
  args: ['EXPLICIT_CONTEXT']
@@ -1225,6 +1239,7 @@ const numberProps = new Map([
1225
1239
  ['datavalue', PROP_STRING],
1226
1240
  ['disabled', PROP_BOOLEAN],
1227
1241
  ['hint', PROP_STRING],
1242
+ ['arialabel', PROP_STRING],
1228
1243
  ['localefilter', PROP_STRING],
1229
1244
  ['minvalue', PROP_NUMBER],
1230
1245
  ['maxvalue', PROP_NUMBER],
@@ -1241,6 +1256,7 @@ const numberProps = new Map([
1241
1256
  ['trailingzero', { value: false, ...PROP_BOOLEAN }],
1242
1257
  ['updateon', PROP_STRING],
1243
1258
  ['inputmode', { value: 'natural', ...PROP_STRING }],
1259
+ ['decimalplaces', PROP_NUMBER],
1244
1260
  ['conditionalclass', PROP_ANY],
1245
1261
  ['conditionalstyle', PROP_ANY]
1246
1262
  ]);
@@ -1360,7 +1376,7 @@ let NumberLocale = class NumberLocale extends BaseInput {
1360
1376
  const prevDataValue = this.prevDatavalue;
1361
1377
  this.displayValue = input.value = this.proxyModel = null;
1362
1378
  this.resetValidations();
1363
- if (prevDataValue && !this.isDefaultQuery) {
1379
+ if ((prevDataValue || prevDataValue == 0) && !this.isDefaultQuery) {
1364
1380
  this.handleChange(value);
1365
1381
  this._onChange();
1366
1382
  }
@@ -1370,8 +1386,27 @@ let NumberLocale = class NumberLocale extends BaseInput {
1370
1386
  if (this.isDefaultQuery) {
1371
1387
  const isLocalizedNumber = isString(value) && includes(value, this.DECIMAL);
1372
1388
  const parts = isLocalizedNumber ? value.split(this.DECIMAL) : isString(value) && value.split('.');
1373
- this.decimalValue = parts[1] || '';
1374
- value = isLocalizedNumber ? value : this.transformNumber(value);
1389
+ let decimalPlacesAttrVal = this.getAttr('decimalplaces');
1390
+ const decimalplaces = decimalPlacesAttrVal !== '' && decimalPlacesAttrVal !== undefined ? Number(decimalPlacesAttrVal) : NaN;
1391
+ if (this.inputmode === INPUTMODE.NATURAL && !isNaN(decimalplaces)) {
1392
+ if (decimalplaces === 0) {
1393
+ this.decimalValue = '';
1394
+ value = isLocalizedNumber ? parts[0] : this.transformNumber(parts[0]);
1395
+ }
1396
+ if (decimalplaces > 0) {
1397
+ this.decimalValue = parts[1] && parts[1].substring(0, decimalplaces) || '';
1398
+ if (isLocalizedNumber) {
1399
+ value = this.decimalValue.length ? `${parts[0]}${this.DECIMAL}${this.decimalValue}` : parts[0];
1400
+ }
1401
+ else {
1402
+ value = Number.parseFloat(String(value)).toFixed(decimalplaces);
1403
+ }
1404
+ }
1405
+ }
1406
+ else {
1407
+ this.decimalValue = parts[1] || '';
1408
+ value = isLocalizedNumber ? value : this.transformNumber(value);
1409
+ }
1375
1410
  }
1376
1411
  const numberReg = /\d/;
1377
1412
  const strVal = value.toString();
@@ -1420,8 +1455,14 @@ let NumberLocale = class NumberLocale extends BaseInput {
1420
1455
  */
1421
1456
  isValid(val) {
1422
1457
  // id number is infinite then consider it as invalid value
1423
- if (isNaN(val) || !isFinite(val) || (!Number.isInteger(this.step) &&
1424
- this.countDecimals(val) > this.countDecimals(this.step))) {
1458
+ let invalidDecimalPlaces = false;
1459
+ if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
1460
+ invalidDecimalPlaces = this.countDecimals(val) > this.decimalplaces;
1461
+ }
1462
+ else if (!Number.isInteger(this.step) && this.countDecimals(val) > this.countDecimals(this.step)) {
1463
+ invalidDecimalPlaces = true;
1464
+ }
1465
+ if (isNaN(val) || !isFinite(val) || invalidDecimalPlaces) {
1425
1466
  this.isInvalidNumber = true;
1426
1467
  return false;
1427
1468
  }
@@ -1530,6 +1571,9 @@ let NumberLocale = class NumberLocale extends BaseInput {
1530
1571
  }
1531
1572
  // This function returns the step length set in the studio
1532
1573
  stepLength() {
1574
+ if (this.inputmode === 'INPUTMODE.NATURAL' && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
1575
+ return this.decimalplaces;
1576
+ }
1533
1577
  const stepLen = this.step.toString().split('.');
1534
1578
  if (stepLen.length === 1) {
1535
1579
  return;
@@ -1612,11 +1656,10 @@ let NumberLocale = class NumberLocale extends BaseInput {
1612
1656
  * @returns {number}
1613
1657
  */
1614
1658
  countDecimals(value) {
1615
- if ((value % 1) !== 0) {
1616
- const decimalValue = value.toString().split('.')[1];
1617
- return decimalValue && decimalValue.length;
1618
- }
1619
- return 0;
1659
+ const valueStr = value.toString();
1660
+ const isLocalizedNumber = includes(valueStr, this.DECIMAL);
1661
+ const parts = isLocalizedNumber ? valueStr.split(this.DECIMAL) : valueStr.split('.');
1662
+ return parts[1] ? parts[1].length : 0;
1620
1663
  }
1621
1664
  /**
1622
1665
  * handles the arrow press event. Increases or decreases the number. triggered fom the template
@@ -1718,13 +1761,23 @@ let NumberLocale = class NumberLocale extends BaseInput {
1718
1761
  }
1719
1762
  // validates entering of decimal values only when user provides decimal limit(i.e step contains decimal values).
1720
1763
  // Restrict user from entering only if the decimal limit is reached and the new digit is entered in decimal place
1721
- if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {
1722
- return false;
1723
- }
1764
+ // if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {
1765
+ // return false;
1766
+ // }
1724
1767
  // validates if user entered an invalid character.
1725
1768
  if (!validity.test($event.key)) {
1726
1769
  return false;
1727
1770
  }
1771
+ if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces)) {
1772
+ if (this.decimalplaces === 0 && this.DECIMAL === $event.key) {
1773
+ return false;
1774
+ }
1775
+ const parts = includes(inputValue, this.DECIMAL) ? inputValue.split(this.DECIMAL) : inputValue.split('.');
1776
+ const isCursorPositionAtDecimalPlace = $event.target.selectionStart > parts[0].length;
1777
+ if (this.decimalplaces > 0 && this.countDecimals(inputValue) >= this.decimalplaces && isCursorPositionAtDecimalPlace) {
1778
+ return false;
1779
+ }
1780
+ }
1728
1781
  // comma cannot be entered consecutively
1729
1782
  if (includes(inputValue, ',') && inputValue[inputValue.length - 1] === ',' && $event.key === ',') {
1730
1783
  return false;
@@ -1803,14 +1856,14 @@ class NumberComponent extends NumberLocale {
1803
1856
  provideAs(NumberComponent, NG_VALUE_ACCESSOR, true),
1804
1857
  provideAs(NumberComponent, NG_VALIDATORS, true),
1805
1858
  provideAsWidgetRef(NumberComponent)
1806
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$8, decls: 2, vars: 14, consts: [["input", ""], ["inputmode", "decimal", "focus-target", "", "role", "textbox", "type", "text", 1, "form-control", "app-textbox", "app-number-input", 3, "ngModelChange", "blur", "focus", "input", "keypress", "keydown.backspace", "keydown.enter", "keydown.ArrowUp", "keydown.ArrowDown", "ngModel", "readonly", "disabled", "pattern", "autofocus", "ngClass", "ngStyle", "ngModelOptions", "required"]], template: function NumberComponent_Template(rf, ctx) { if (rf & 1) {
1859
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$8, decls: 2, vars: 14, consts: [["input", ""], ["inputmode", "decimal", "focus-target", "", "type", "text", 1, "form-control", "app-textbox", "app-number-input", 3, "ngModelChange", "blur", "focus", "input", "keypress", "keydown.backspace", "keydown.enter", "keydown.ArrowUp", "keydown.ArrowDown", "ngModel", "readonly", "disabled", "pattern", "autofocus", "ngClass", "ngStyle", "ngModelOptions", "required"]], template: function NumberComponent_Template(rf, ctx) { if (rf & 1) {
1807
1860
  const _r1 = i0.ɵɵgetCurrentView();
1808
1861
  i0.ɵɵelementStart(0, "input", 1, 0);
1809
1862
  i0.ɵɵlistener("ngModelChange", function NumberComponent_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onModelChange($event)); })("blur", function NumberComponent_Template_input_blur_0_listener($event) { i0.ɵɵrestoreView(_r1); ctx.handleBlur($event); return i0.ɵɵresetView(ctx.checkForTrailingZeros($event)); })("focus", function NumberComponent_Template_input_focus_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.checkForTrailingZeros($event)); })("input", function NumberComponent_Template_input_input_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onInputChange($event.target.value)); })("keypress", function NumberComponent_Template_input_keypress_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.validateInputEntry($event)); })("keydown.backspace", function NumberComponent_Template_input_keydown_backspace_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onBackspace($event)); })("keydown.enter", function NumberComponent_Template_input_keydown_enter_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onEnter($event)); })("keydown.ArrowUp", function NumberComponent_Template_input_keydown_ArrowUp_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onArrowPress($event, "UP")); })("keydown.ArrowDown", function NumberComponent_Template_input_keydown_ArrowDown_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onArrowPress($event, "DOWN")); });
1810
1863
  i0.ɵɵelementEnd();
1811
1864
  } if (rf & 2) {
1812
1865
  i0.ɵɵproperty("ngModel", ctx.displayValue)("readonly", ctx.readonly)("disabled", ctx.disabled)("pattern", ctx.regexp)("autofocus", ctx.autofocus)("ngClass", ctx.conditionalclass)("ngStyle", ctx.conditionalstyle)("ngModelOptions", ctx.ngModelOptions)("required", ctx.required);
1813
- i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.hint);
1866
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
1814
1867
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.PatternValidator, i2$1.NgModel], encapsulation: 2 }); }
1815
1868
  }
1816
1869
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NumberComponent, [{
@@ -1819,7 +1872,7 @@ class NumberComponent extends NumberLocale {
1819
1872
  provideAs(NumberComponent, NG_VALUE_ACCESSOR, true),
1820
1873
  provideAs(NumberComponent, NG_VALIDATORS, true),
1821
1874
  provideAsWidgetRef(NumberComponent)
1822
- ], template: "<input class=\"form-control app-textbox app-number-input\"\n inputmode=\"decimal\"\n focus-target\n [attr.name]=\"name\"\n role=\"textbox\"\n type=\"text\"\n [ngModel]=\"displayValue\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [pattern]=\"regexp\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"handleBlur($event); checkForTrailingZeros($event);\"\n (focus)=\"checkForTrailingZeros($event)\"\n (input)=\"onInputChange($event.target.value)\"\n [ngModelOptions]=\"ngModelOptions\"\n [required]=\"required\"\n (keypress)=\"validateInputEntry($event)\"\n (keydown.backspace)=\"onBackspace($event)\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.ArrowUp)=\"onArrowPress($event, 'UP')\"\n (keydown.ArrowDown)=\"onArrowPress($event, 'DOWN')\"\n #input>\n" }]
1875
+ ], template: "<input class=\"form-control app-textbox app-number-input\"\n inputmode=\"decimal\"\n focus-target\n [attr.name]=\"name\"\n type=\"text\"\n [ngModel]=\"displayValue\"\n [readonly]=\"readonly\"\n [disabled]=\"disabled\"\n [pattern]=\"regexp\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (ngModelChange)=\"onModelChange($event)\"\n (blur)=\"handleBlur($event); checkForTrailingZeros($event);\"\n (focus)=\"checkForTrailingZeros($event)\"\n (input)=\"onInputChange($event.target.value)\"\n [ngModelOptions]=\"ngModelOptions\"\n [required]=\"required\"\n (keypress)=\"validateInputEntry($event)\"\n (keydown.backspace)=\"onBackspace($event)\"\n (keydown.enter)=\"onEnter($event)\"\n (keydown.ArrowUp)=\"onArrowPress($event, 'UP')\"\n (keydown.ArrowDown)=\"onArrowPress($event, 'DOWN')\"\n #input>\n" }]
1823
1876
  }], () => [{ type: i0.Injector }, { type: i1$1.AbstractI18nService }, { type: i2.TrailingZeroDecimalPipe }, { type: undefined, decorators: [{
1824
1877
  type: Inject,
1825
1878
  args: ['EXPLICIT_CONTEXT']
@@ -1881,10 +1934,10 @@ function RadiosetComponent_ng_template_0_li_0_label_1_Template(rf, ctx) { if (rf
1881
1934
  const item_r2 = ctx_r3.$implicit;
1882
1935
  const i_r5 = ctx_r3.index;
1883
1936
  const ctx_r2 = i0.ɵɵnextContext(2);
1884
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1937
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1885
1938
  i0.ɵɵadvance();
1886
- i0.ɵɵproperty("name", "radioset_" + ctx_r2.widgetId)("value", item_r2.key)("disabled", ctx_r2.disabled || ctx_r2.readonly)("tabindex", ctx_r2.tabindex)("checked", item_r2.selected);
1887
- i0.ɵɵattribute("aria-checked", item_r2.selected)("data-attr-index", i_r5)("aria-label", item_r2.key);
1939
+ i0.ɵɵproperty("checked", item_r2.selected)("disabled", ctx_r2.disabled || ctx_r2.readonly)("name", "radioset_" + ctx_r2.widgetId)("tabindex", ctx_r2.tabindex)("value", item_r2.key);
1940
+ i0.ɵɵattribute("data-attr-index", i_r5);
1888
1941
  i0.ɵɵadvance();
1889
1942
  i0.ɵɵproperty("textContent", item_r2.label);
1890
1943
  } }
@@ -1897,16 +1950,16 @@ function RadiosetComponent_ng_template_0_li_0_label_2_Template(rf, ctx) { if (rf
1897
1950
  const item_r2 = ctx_r3.$implicit;
1898
1951
  const i_r5 = ctx_r3.index;
1899
1952
  const ctx_r2 = i0.ɵɵnextContext(2);
1900
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1953
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1901
1954
  i0.ɵɵadvance();
1902
- i0.ɵɵproperty("name", "radioset_" + ctx_r2.widgetId)("value", item_r2.key)("disabled", ctx_r2.disabled || ctx_r2.readonly)("tabindex", ctx_r2.tabindex)("checked", item_r2.selected);
1903
- i0.ɵɵattribute("aria-checked", item_r2.selected)("data-attr-index", i_r5)("aria-label", item_r2.key);
1955
+ i0.ɵɵproperty("checked", item_r2.selected)("disabled", ctx_r2.disabled || ctx_r2.readonly)("name", "radioset_" + ctx_r2.widgetId)("tabindex", ctx_r2.tabindex)("value", item_r2.key);
1956
+ i0.ɵɵattribute("data-attr-index", i_r5);
1904
1957
  } }
1905
1958
  function RadiosetComponent_ng_template_0_li_0_Template(rf, ctx) { if (rf & 1) {
1906
1959
  const _r1 = i0.ɵɵgetCurrentView();
1907
1960
  i0.ɵɵelementStart(0, "li", 5);
1908
1961
  i0.ɵɵlistener("click", function RadiosetComponent_ng_template_0_li_0_Template_li_click_0_listener($event) { const item_r2 = i0.ɵɵrestoreView(_r1).$implicit; const ctx_r2 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r2.onRadioLabelClick($event, item_r2.key)); });
1909
- i0.ɵɵtemplate(1, RadiosetComponent_ng_template_0_li_0_label_1_Template, 3, 12, "label", 6)(2, RadiosetComponent_ng_template_0_li_0_label_2_Template, 3, 11, "label", 6);
1962
+ i0.ɵɵtemplate(1, RadiosetComponent_ng_template_0_li_0_label_1_Template, 3, 10, "label", 6)(2, RadiosetComponent_ng_template_0_li_0_label_2_Template, 3, 9, "label", 6);
1910
1963
  i0.ɵɵelementEnd();
1911
1964
  } if (rf & 2) {
1912
1965
  const item_r2 = ctx.$implicit;
@@ -1941,39 +1994,39 @@ function RadiosetComponent_ng_template_3_li_0_span_7_Template(rf, ctx) { if (rf
1941
1994
  } }
1942
1995
  function RadiosetComponent_ng_template_3_li_0_li_8_label_1_Template(rf, ctx) { if (rf & 1) {
1943
1996
  i0.ɵɵelementStart(0, "label", 7);
1944
- i0.ɵɵelement(1, "input", 8)(2, "span", 9);
1997
+ i0.ɵɵelement(1, "input", 24)(2, "span", 9);
1945
1998
  i0.ɵɵelementEnd();
1946
1999
  } if (rf & 2) {
1947
2000
  const ctx_r9 = i0.ɵɵnextContext();
1948
2001
  const item_r9 = ctx_r9.$implicit;
1949
2002
  const i_r11 = ctx_r9.index;
1950
2003
  const ctx_r2 = i0.ɵɵnextContext(3);
1951
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
2004
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1952
2005
  i0.ɵɵadvance();
1953
2006
  i0.ɵɵproperty("name", "radioset_" + ctx_r2.widgetId)("value", item_r9.key)("disabled", ctx_r2.disabled || ctx_r2.readonly)("tabindex", ctx_r2.tabindex)("checked", item_r9.selected);
1954
- i0.ɵɵattribute("aria-checked", item_r9.selected)("data-attr-index", i_r11);
2007
+ i0.ɵɵattribute("data-attr-index", i_r11);
1955
2008
  i0.ɵɵadvance();
1956
2009
  i0.ɵɵproperty("textContent", item_r9.label);
1957
2010
  } }
1958
2011
  function RadiosetComponent_ng_template_3_li_0_li_8_label_2_Template(rf, ctx) { if (rf & 1) {
1959
2012
  i0.ɵɵelementStart(0, "label", 7);
1960
- i0.ɵɵelement(1, "input", 8)(2, "span", 10);
2013
+ i0.ɵɵelement(1, "input", 24)(2, "span", 10);
1961
2014
  i0.ɵɵelementEnd();
1962
2015
  } if (rf & 2) {
1963
2016
  const ctx_r9 = i0.ɵɵnextContext();
1964
2017
  const item_r9 = ctx_r9.$implicit;
1965
2018
  const i_r11 = ctx_r9.index;
1966
2019
  const ctx_r2 = i0.ɵɵnextContext(3);
1967
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
2020
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1968
2021
  i0.ɵɵadvance();
1969
2022
  i0.ɵɵproperty("name", "radioset_" + ctx_r2.widgetId)("value", item_r9.key)("disabled", ctx_r2.disabled || ctx_r2.readonly)("tabindex", ctx_r2.tabindex)("checked", item_r9.selected);
1970
- i0.ɵɵattribute("aria-checked", item_r9.selected)("data-attr-index", i_r11);
2023
+ i0.ɵɵattribute("data-attr-index", i_r11);
1971
2024
  } }
1972
2025
  function RadiosetComponent_ng_template_3_li_0_li_8_Template(rf, ctx) { if (rf & 1) {
1973
2026
  const _r8 = i0.ɵɵgetCurrentView();
1974
2027
  i0.ɵɵelementStart(0, "li", 23);
1975
2028
  i0.ɵɵlistener("click", function RadiosetComponent_ng_template_3_li_0_li_8_Template_li_click_0_listener($event) { const item_r9 = i0.ɵɵrestoreView(_r8).$implicit; const ctx_r2 = i0.ɵɵnextContext(3); return i0.ɵɵresetView(ctx_r2.onRadioLabelClick($event, item_r9)); });
1976
- i0.ɵɵtemplate(1, RadiosetComponent_ng_template_3_li_0_li_8_label_1_Template, 3, 11, "label", 6)(2, RadiosetComponent_ng_template_3_li_0_li_8_label_2_Template, 3, 10, "label", 6);
2029
+ i0.ɵɵtemplate(1, RadiosetComponent_ng_template_3_li_0_li_8_label_1_Template, 3, 10, "label", 6)(2, RadiosetComponent_ng_template_3_li_0_li_8_label_2_Template, 3, 9, "label", 6);
1977
2030
  i0.ɵɵelementEnd();
1978
2031
  } if (rf & 2) {
1979
2032
  const item_r9 = ctx.$implicit;
@@ -1998,10 +2051,15 @@ function RadiosetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1) {
1998
2051
  i0.ɵɵelementEnd()();
1999
2052
  } if (rf & 2) {
2000
2053
  const groupObj_r7 = ctx.$implicit;
2054
+ const groupindex_r12 = ctx.index;
2001
2055
  const ctx_r2 = i0.ɵɵnextContext(2);
2002
- i0.ɵɵadvance(2);
2003
- i0.ɵɵproperty("title", groupObj_r7.key)("ngClass", i0.ɵɵpureFunction1(6, _c3$1, ctx_r2.collapsible));
2004
- i0.ɵɵadvance(2);
2056
+ i0.ɵɵadvance();
2057
+ i0.ɵɵattribute("aria-labelledby", "group_" + ctx_r2.widgetId + "_" + groupindex_r12);
2058
+ i0.ɵɵadvance();
2059
+ i0.ɵɵproperty("id", "group_" + ctx_r2.widgetId + "_" + groupindex_r12)("title", groupObj_r7.key)("ngClass", i0.ɵɵpureFunction1(9, _c3$1, ctx_r2.collapsible));
2060
+ i0.ɵɵadvance();
2061
+ i0.ɵɵattribute("aria-label", "Group " + groupObj_r7.key);
2062
+ i0.ɵɵadvance();
2005
2063
  i0.ɵɵtextInterpolate1("", groupObj_r7.key, " ");
2006
2064
  i0.ɵɵadvance(2);
2007
2065
  i0.ɵɵproperty("ngIf", ctx_r2.collapsible);
@@ -2011,7 +2069,7 @@ function RadiosetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1) {
2011
2069
  i0.ɵɵproperty("ngForOf", groupObj_r7.data);
2012
2070
  } }
2013
2071
  function RadiosetComponent_ng_template_3_Template(rf, ctx) { if (rf & 1) {
2014
- i0.ɵɵtemplate(0, RadiosetComponent_ng_template_3_li_0_Template, 9, 8, "li", 12);
2072
+ i0.ɵɵtemplate(0, RadiosetComponent_ng_template_3_li_0_Template, 9, 11, "li", 12);
2015
2073
  } if (rf & 2) {
2016
2074
  const ctx_r2 = i0.ɵɵnextContext();
2017
2075
  i0.ɵɵproperty("ngForOf", ctx_r2.groupedData);
@@ -2028,6 +2086,8 @@ class RadiosetComponent extends DatasetAwareFormComponent {
2028
2086
  }
2029
2087
  triggerInvokeOnChange(key, $event) {
2030
2088
  this.modelByKey = key;
2089
+ if (this.viewParent.containerWidget)
2090
+ this.viewParent.containerWidget.updateDataValue(this.datavalue);
2031
2091
  this.invokeOnTouched();
2032
2092
  // invoke on datavalue change.
2033
2093
  this.invokeOnChange(this.datavalue, $event || {}, true);
@@ -2072,13 +2132,13 @@ class RadiosetComponent extends DatasetAwareFormComponent {
2072
2132
  provideAs(RadiosetComponent, NG_VALUE_ACCESSOR, true),
2073
2133
  provideAs(RadiosetComponent, NG_VALIDATORS, true),
2074
2134
  provideAsWidgetRef(RadiosetComponent)
2075
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$8, decls: 5, vars: 4, consts: [["groupedListTemplate", ""], [3, "ngIf", "ngIfElse"], ["hidden", "", 1, "model-holder", 3, "disabled"], ["aria-readonly", "true", "class", "readonly-wrapper", 4, "ngIf"], ["partialContainer", "", "role", "presentation", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], ["partialContainer", "", "role", "presentation", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"], ["class", "app-radioset-label", 3, "ngClass", 4, "ngIf"], [1, "app-radioset-label", 3, "ngClass"], ["type", "radio", 3, "name", "value", "disabled", "tabindex", "checked"], [1, "caption", 3, "textContent"], ["partial-container-target", "", 1, "caption", "customTemplate"], ["aria-readonly", "true", 1, "readonly-wrapper"], ["class", "app-list-item-group", 4, "ngFor", "ngForOf"], [1, "app-list-item-group"], [1, "item-group"], [1, "list-group-header", 3, "click", "title", "ngClass"], [1, "group-title"], [1, "header-action"], ["class", "app-icon wi action wi-chevron-up", 3, "title", 4, "ngIf"], ["class", "label label-default", 3, "textContent", 4, "ngIf"], ["partialContainer", "", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], [1, "app-icon", "wi", "action", "wi-chevron-up", 3, "title"], [1, "label", "label-default", 3, "textContent"], ["partialContainer", "", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"]], template: function RadiosetComponent_Template(rf, ctx) { if (rf & 1) {
2135
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$8, decls: 5, vars: 4, consts: [["groupedListTemplate", ""], [3, "ngIf", "ngIfElse"], ["hidden", "", 1, "model-holder", 3, "disabled"], ["aria-readonly", "true", "class", "readonly-wrapper", 4, "ngIf"], ["partialContainer", "", "role", "presentation", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], ["partialContainer", "", "role", "presentation", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"], ["class", "app-radioset-label", 3, "ngClass", 4, "ngIf"], [1, "app-radioset-label", 3, "ngClass"], ["type", "radio", 3, "checked", "disabled", "name", "tabindex", "value"], [1, "caption", 3, "textContent"], ["partial-container-target", "", 1, "caption", "customTemplate"], ["aria-readonly", "true", 1, "readonly-wrapper"], ["class", "app-list-item-group", "role", "presentation", 4, "ngFor", "ngForOf"], ["role", "presentation", 1, "app-list-item-group"], [1, "item-group"], ["aria-hidden", "true", 1, "list-group-header", 3, "click", "id", "title", "ngClass"], [1, "group-title"], [1, "header-action"], ["class", "app-icon wi action wi-chevron-up", 3, "title", 4, "ngIf"], ["class", "label label-default", 3, "textContent", 4, "ngIf"], ["partialContainer", "", 3, "ngClass", "active", "wmItemTemplate", "userComponentParams", "click", 4, "ngFor", "ngForOf"], [1, "app-icon", "wi", "action", "wi-chevron-up", 3, "title"], [1, "label", "label-default", 3, "textContent"], ["partialContainer", "", 3, "click", "ngClass", "wmItemTemplate", "userComponentParams"], ["type", "radio", 3, "name", "value", "disabled", "tabindex", "checked"]], template: function RadiosetComponent_Template(rf, ctx) { if (rf & 1) {
2076
2136
  i0.ɵɵtemplate(0, RadiosetComponent_ng_template_0_Template, 1, 1, "ng-template", 1);
2077
2137
  i0.ɵɵelement(1, "input", 2);
2078
2138
  i0.ɵɵtemplate(2, RadiosetComponent_div_2_Template, 1, 0, "div", 3)(3, RadiosetComponent_ng_template_3_Template, 1, 1, "ng-template", null, 0, i0.ɵɵtemplateRefExtractor);
2079
2139
  } if (rf & 2) {
2080
- const groupedListTemplate_r12 = i0.ɵɵreference(4);
2081
- i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r12);
2140
+ const groupedListTemplate_r13 = i0.ɵɵreference(4);
2141
+ i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r13);
2082
2142
  i0.ɵɵadvance();
2083
2143
  i0.ɵɵproperty("disabled", ctx.disabled || ctx.readonly);
2084
2144
  i0.ɵɵadvance();
@@ -2091,7 +2151,7 @@ class RadiosetComponent extends DatasetAwareFormComponent {
2091
2151
  provideAs(RadiosetComponent, NG_VALUE_ACCESSOR, true),
2092
2152
  provideAs(RadiosetComponent, NG_VALIDATORS, true),
2093
2153
  provideAsWidgetRef(RadiosetComponent)
2094
- ], template: "<ng-template [ngIf]=\"!groupby\" [ngIfElse]=\"groupedListTemplate\">\n <li [ngClass]=\"['radio', 'app-radio', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n *ngFor=\"let item of datasetItems;let i = index\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [name]=\"'radioset_' + widgetId\" type=\"radio\" [attr.aria-checked]=\"item.selected\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"\n [attr.aria-label]=\"item.key\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [name]=\"'radioset_' + widgetId\" type=\"radio\" [attr.aria-checked]=\"item.selected\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"\n [attr.aria-label]=\"item.key\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n </li>\n</ng-template>\n\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n<div *ngIf=\"readonly || disabled\" aria-readonly=\"true\" class=\"readonly-wrapper\"></div>\n\n<!-- This template will be displayed when groupby is specified. -->\n<ng-template #groupedListTemplate>\n <li *ngFor=\"let groupObj of groupedData\" class=\"app-list-item-group\">\n <ul class=\"item-group\">\n <li class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\">{{groupObj.key}}\n <div class=\"header-action\">\n <i class=\"app-icon wi action wi-chevron-up\" *ngIf=\"collapsible\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n <span *ngIf=\"showcount\" class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n </div>\n </h4>\n </li>\n <li *ngFor=\"let item of groupObj.data; let i = index;\"\n [ngClass]=\"['radio', 'app-radio', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item)\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [name]=\"'radioset_' + widgetId\" type=\"radio\" [attr.aria-checked]=\"item.selected\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [name]=\"'radioset_' + widgetId\" type=\"radio\" [attr.aria-checked]=\"item.selected\" [attr.data-attr-index]=\"i\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n </li>\n </ul>\n </li>\n</ng-template>\n" }]
2154
+ ], template: "<ng-template [ngIf]=\"!groupby\" [ngIfElse]=\"groupedListTemplate\">\n <li [ngClass]=\"['radio', 'app-radio', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n *ngFor=\"let item of datasetItems;let i = index\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item.key)\" role=\"presentation\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [checked]=\"item.selected\" [disabled]=\"disabled || readonly\"\n [name]=\"'radioset_' + widgetId\" [tabindex]=\"tabindex\" [value]=\"item.key\"\n type=\"radio\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n </li>\n</ng-template>\n\n<input [disabled]=\"disabled || readonly\" hidden class=\"model-holder\">\n<div *ngIf=\"readonly || disabled\" aria-readonly=\"true\" class=\"readonly-wrapper\"></div>\n\n<!-- This template will be displayed when groupby is specified. -->\n<ng-template #groupedListTemplate>\n <li *ngFor=\"let groupObj of groupedData; let groupindex = index;\" class=\"app-list-item-group\" role=\"presentation\" >\n <ul class=\"item-group\" [attr.aria-labelledby]=\"'group_' + widgetId + '_' + groupindex\">\n <li [id]=\"'group_' + widgetId + '_' + groupindex\" aria-hidden=\"true\" class=\"list-group-header\" (click)=\"handleHeaderClick($event)\" [title]=\"groupObj.key\" [ngClass]=\"{'collapsible-content': collapsible}\">\n <h4 class=\"group-title\" [attr.aria-label]=\"'Group '+groupObj.key\">{{groupObj.key}}\n <div class=\"header-action\">\n <i class=\"app-icon wi action wi-chevron-up\" *ngIf=\"collapsible\" title=\"{{appLocale.LABEL_COLLAPSE}}/{{appLocale.LABEL_EXPAND}}\"></i>\n <span *ngIf=\"showcount\" class=\"label label-default\" [textContent]=\"groupObj.data.length\"></span>\n </div>\n </h4>\n </li>\n <li *ngFor=\"let item of groupObj.data; let i = index;\"\n [ngClass]=\"['radio', 'app-radio', 'group-list-item', itemclass, itemsPerRowClass]\"\n [class.active]=\"item.selected\"\n [wmItemTemplate]=\"content\" [userComponentParams]=\"item\" partialContainer\n (click)=\"onRadioLabelClick($event, item)\">\n <!-- Default item template -->\n <label *ngIf=\"!content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption\" [textContent]=\"item.label\"></span>\n </label>\n <!-- Custom partial template -->\n <label *ngIf=\"content\" class=\"app-radioset-label\"\n [ngClass]=\"{'disabled':disabled || readonly}\">\n <input [attr.data-attr-index]=\"i\" [name]=\"'radioset_' + widgetId\" type=\"radio\"\n [value]=\"item.key\" [disabled]=\"disabled || readonly\" [tabindex]=\"tabindex\" [checked]=\"item.selected\"/>\n <span class=\"caption customTemplate\" partial-container-target></span>\n </label>\n </li>\n </ul>\n </li>\n</ng-template>\n" }]
2095
2155
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2096
2156
  type: Inject,
2097
2157
  args: ['EXPLICIT_CONTEXT']
@@ -2115,6 +2175,7 @@ const selectProps = new Map([
2115
2175
  ['displayValue', PROP_STRING],
2116
2176
  ['groupby', PROP_STRING],
2117
2177
  ['hint', PROP_STRING],
2178
+ ['arialabel', PROP_STRING],
2118
2179
  ['match', PROP_STRING],
2119
2180
  ['multiple', { value: false, ...PROP_BOOLEAN }],
2120
2181
  ['name', PROP_STRING],
@@ -2184,10 +2245,38 @@ class SelectComponent extends DatasetAwareFormComponent {
2184
2245
  this.datavalue = ds.execute(DataSource.Operation.GET_DEFAULT_LOCALE);
2185
2246
  }
2186
2247
  }
2187
- constructor(inj, app, explicitContext) {
2248
+ constructor(inj, explicitContext) {
2188
2249
  super(inj, WIDGET_CONFIG$7, explicitContext);
2189
- this.app = app;
2190
2250
  this.acceptsArray = true;
2251
+ /*
2252
+ * When the dataset for a select element is updated and no longer includes the previously selected value:
2253
+ * The select element becomes empty, and the ngModel value is updated to reflect this change.
2254
+ * However, the change event is not triggered, preventing the form control from recognizing the update and applying necessary validations.
2255
+ * As this widget implements ControlValueAccessor, manually updating the ngModel (or modelByKey) is necessary to ensure correct form behavior.
2256
+ * */
2257
+ const datasetSubscription = this.dataset$.subscribe(() => {
2258
+ if (isIos() || isSafari()) {
2259
+ if (this.datavalue) {
2260
+ const selectedItem = this.datasetItems.find(item => item.selected);
2261
+ if (!selectedItem) {
2262
+ setTimeout(() => {
2263
+ if (!this.placeholder) {
2264
+ this.selectEl.nativeElement.value = '';
2265
+ }
2266
+ this.modelByKey = undefined;
2267
+ }, 100);
2268
+ }
2269
+ }
2270
+ else {
2271
+ setTimeout(() => {
2272
+ if (!this.placeholder) {
2273
+ this.selectEl.nativeElement.value = '';
2274
+ }
2275
+ }, 100);
2276
+ }
2277
+ }
2278
+ });
2279
+ this.registerDestroyListener(() => datasetSubscription.unsubscribe());
2191
2280
  }
2192
2281
  ngAfterViewInit() {
2193
2282
  super.ngAfterViewInit();
@@ -2195,7 +2284,7 @@ class SelectComponent extends DatasetAwareFormComponent {
2195
2284
  }
2196
2285
  // Change event is registered from the template, Prevent the framework from registering one more event
2197
2286
  handleEvent(node, eventName, eventCallback, locals) {
2198
- if (!includes(['blur', 'change'], eventName)) {
2287
+ if (!['blur', 'change'].includes(eventName)) {
2199
2288
  super.handleEvent(this.selectEl.nativeElement, eventName, eventCallback, locals);
2200
2289
  }
2201
2290
  }
@@ -2246,36 +2335,40 @@ class SelectComponent extends DatasetAwareFormComponent {
2246
2335
  */
2247
2336
  checkForFloatingLabel($event) {
2248
2337
  const captionEl = $(this.selectEl.nativeElement).closest('.app-composite-widget.caption-floating');
2338
+ if (!this.placeholder && (isIos() || isSafari())) {
2339
+ this.removePlaceholderOption();
2340
+ }
2249
2341
  if (captionEl.length > 0) {
2250
- if ($event.type === 'focus' && (!this.datavalue || (this.datavalue && $(this.selectEl).find('select option:selected').text() === '' && this.placeholder))) {
2251
- if (!(this.datavalue || this.placeholder)) {
2252
- this.removePlaceholderOption();
2253
- }
2254
- else {
2255
- $(this.selectEl.nativeElement).find('option:first').text(this.placeholder);
2342
+ const placeholderOption = this.selectEl.nativeElement.querySelector('#placeholderOption');
2343
+ if ($event.type === 'mousedown' && (!this.datavalue || (this.datavalue && $(this.selectEl).find('select option:selected').text() === '' && this.placeholder))) {
2344
+ if (this.placeholder) {
2345
+ placeholderOption.textContent = this.placeholder;
2256
2346
  }
2257
2347
  }
2258
2348
  else if (!this.datavalue) {
2259
- $(this.selectEl.nativeElement).find('option:selected').text('');
2349
+ if (this.placeholder) {
2350
+ placeholderOption.textContent = '';
2351
+ }
2260
2352
  captionEl.removeClass('float-active');
2261
2353
  }
2262
2354
  }
2263
- else if (!(this.datavalue || this.placeholder)) {
2264
- this.removePlaceholderOption();
2265
- }
2266
2355
  }
2267
2356
  /*
2268
2357
  * Removing the placeholder option if no placeholder is provided.
2269
- * In html we are hiding the placeholder option using css but in apple devices and safari option is showing.
2358
+ * In html we are hiding the placeholder option using css but in Apple devices and safari option is showing.
2359
+ * Styles are not allowed on option tag in ios safari
2360
+ * After removing the option, if no datavalue is present and native select element sets value to the first option by default, so we are setting it to empty
2270
2361
  * */
2271
2362
  removePlaceholderOption() {
2272
2363
  const hiddenEle = $(this.selectEl.nativeElement).find('#placeholderOption');
2273
2364
  if (hiddenEle.length) {
2274
2365
  hiddenEle.remove();
2275
- this.selectEl.nativeElement.value = '';
2366
+ if (!this.datavalue) {
2367
+ this.selectEl.nativeElement.value = '';
2368
+ }
2276
2369
  }
2277
2370
  }
2278
- static { this.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject(i1$1.App), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
2371
+ static { this.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
2279
2372
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectComponent, selectors: [["wm-select"]], viewQuery: function SelectComponent_Query(rf, ctx) { if (rf & 1) {
2280
2373
  i0.ɵɵviewQuery(_c0$7, 7, ElementRef);
2281
2374
  } if (rf & 2) {
@@ -2285,11 +2378,11 @@ class SelectComponent extends DatasetAwareFormComponent {
2285
2378
  provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
2286
2379
  provideAs(SelectComponent, NG_VALIDATORS, true),
2287
2380
  provideAsWidgetRef(SelectComponent)
2288
- ]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 18, consts: [["select", ""], ["role", "listbox", "aria-haspopup", "true", "aria-expanded", "false", "focus-target", "", 3, "ngModelChange", "change", "focus", "blur", "ngClass", "disabled", "required", "tabindex", "ngModel", "ngModelOptions", "multiple", "autofocus"], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], ["role", "option", 3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], ["role", "option", 3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
2381
+ ]), i0.ɵɵInheritDefinitionFeature], decls: 5, vars: 18, consts: [["select", ""], ["focus-target", "", 3, "ngModelChange", "change", "mousedown", "blur", "ngClass", "disabled", "required", "tabindex", "ngModel", "ngModelOptions", "multiple", "autofocus"], ["selected", "", "value", "undefined", "id", "placeholderOption", 3, "textContent", "hidden"], [4, "ngIf"], [3, "label", 4, "ngFor", "ngForOf"], [3, "label"], [3, "value", "selected", "textContent", 4, "ngFor", "ngForOf"], [3, "value", "selected", "textContent"]], template: function SelectComponent_Template(rf, ctx) { if (rf & 1) {
2289
2382
  const _r1 = i0.ɵɵgetCurrentView();
2290
2383
  i0.ɵɵelementStart(0, "select", 1, 0);
2291
2384
  i0.ɵɵtwoWayListener("ngModelChange", function SelectComponent_Template_select_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.modelByKey, $event) || (ctx.modelByKey = $event); return i0.ɵɵresetView($event); });
2292
- i0.ɵɵlistener("change", function SelectComponent_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSelectValueChange($event)); })("focus", function SelectComponent_Template_select_focus_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.checkForFloatingLabel($event)); })("blur", function SelectComponent_Template_select_blur_0_listener($event) { i0.ɵɵrestoreView(_r1); ctx.invokeOnTouched($event); return i0.ɵɵresetView(ctx.checkForFloatingLabel($event)); });
2385
+ i0.ɵɵlistener("change", function SelectComponent_Template_select_change_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.onSelectValueChange($event)); })("mousedown", function SelectComponent_Template_select_mousedown_0_listener($event) { i0.ɵɵrestoreView(_r1); return i0.ɵɵresetView(ctx.checkForFloatingLabel($event)); })("blur", function SelectComponent_Template_select_blur_0_listener($event) { i0.ɵɵrestoreView(_r1); ctx.invokeOnTouched($event); return i0.ɵɵresetView(ctx.checkForFloatingLabel($event)); });
2293
2386
  i0.ɵɵelement(2, "option", 2);
2294
2387
  i0.ɵɵtemplate(3, SelectComponent_ng_container_3_Template, 2, 1, "ng-container", 3)(4, SelectComponent_ng_container_4_Template, 2, 1, "ng-container", 3);
2295
2388
  i0.ɵɵelementEnd();
@@ -2297,7 +2390,7 @@ class SelectComponent extends DatasetAwareFormComponent {
2297
2390
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c1$6, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex);
2298
2391
  i0.ɵɵtwoWayProperty("ngModel", ctx.modelByKey);
2299
2392
  i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(17, _c2$4))("multiple", ctx.multiple)("autofocus", ctx.autofocus);
2300
- i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.hint)("aria-multiselectable", ctx.multiple);
2393
+ i0.ɵɵattribute("accesskey", ctx.shortcutkey)("name", ctx.name)("aria-label", ctx.arialabel);
2301
2394
  i0.ɵɵadvance(2);
2302
2395
  i0.ɵɵproperty("textContent", ctx.placeholder)("hidden", !ctx.placeholder);
2303
2396
  i0.ɵɵadvance();
@@ -2312,8 +2405,8 @@ class SelectComponent extends DatasetAwareFormComponent {
2312
2405
  provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
2313
2406
  provideAs(SelectComponent, NG_VALIDATORS, true),
2314
2407
  provideAsWidgetRef(SelectComponent)
2315
- ], template: "<select role=\"listbox\" aria-haspopup=\"true\" aria-expanded=\"false\" #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [(ngModel)]=\"modelByKey\"\n [ngModelOptions]=\"{standalone: true}\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (focus)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [attr.aria-multiselectable]=\"multiple\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n role=\"option\"></option>\n </ng-container>\n</select>\n" }]
2316
- }], () => [{ type: i0.Injector }, { type: i1$1.App }, { type: undefined, decorators: [{
2408
+ ], template: "<!--Updated focus with mousedown event. IOS devices not allow update of option value after opening dropdown-->\n<select #select\n focus-target\n [ngClass]=\"['app-select form-control', class]\"\n [disabled]=\"disabled\"\n [required]=\"required\"\n [tabindex]=\"tabindex\"\n [attr.accesskey]=\"shortcutkey\"\n [(ngModel)]=\"modelByKey\"\n [ngModelOptions]=\"{standalone: true}\"\n [multiple]=\"multiple\"\n (change)=\"onSelectValueChange($event)\"\n (mousedown)=\"checkForFloatingLabel($event)\"\n (blur)=\"invokeOnTouched($event); checkForFloatingLabel($event)\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\">\n\n <option selected\n value=\"undefined\"\n [textContent]=\"placeholder\"\n id=\"placeholderOption\"\n [hidden]=\"!placeholder\"></option>\n\n <ng-container *ngIf=\"groupby\">\n <optgroup *ngFor=\"let groupObj of groupedData\"\n [label]=\"groupObj.key\">\n <option *ngFor=\"let item of groupObj.data;\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </optgroup>\n </ng-container>\n\n <ng-container *ngIf=\"!groupby\">\n <option *ngFor=\"let item of datasetItems\"\n [value]=\"item.key\"\n [selected]=\"item.selected\"\n [textContent]=\"item.label\"\n ></option>\n </ng-container>\n</select>\n" }]
2409
+ }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2317
2410
  type: Inject,
2318
2411
  args: ['EXPLICIT_CONTEXT']
2319
2412
  }, {
@@ -2322,7 +2415,7 @@ class SelectComponent extends DatasetAwareFormComponent {
2322
2415
  type: ViewChild,
2323
2416
  args: ['select', { static: true, read: ElementRef }]
2324
2417
  }] }); })();
2325
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectComponent, { className: "SelectComponent", filePath: "select/select.component.ts", lineNumber: 22 }); })();
2418
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectComponent, { className: "SelectComponent", filePath: "select/select.component.ts", lineNumber: 20 }); })();
2326
2419
 
2327
2420
  const switchProps = new Map([
2328
2421
  ['class', PROP_STRING],
@@ -2335,6 +2428,7 @@ const switchProps = new Map([
2335
2428
  ['displayexpression', PROP_STRING],
2336
2429
  ['displayfield', PROP_STRING],
2337
2430
  ['hint', PROP_STRING],
2431
+ ['arialabel', PROP_STRING],
2338
2432
  ['iconclass', PROP_STRING],
2339
2433
  ['checkediconclass', { value: 'wm-sl-l sl-check', ...PROP_STRING }],
2340
2434
  ['name', PROP_STRING],
@@ -2377,7 +2471,8 @@ function SwitchComponent_a_1_Template(rf, ctx) { if (rf & 1) {
2377
2471
  } if (rf & 2) {
2378
2472
  const opt_r3 = ctx.$implicit;
2379
2473
  const ctx_r4 = i0.ɵɵnextContext();
2380
- i0.ɵɵproperty("name", "wm-switch-" + opt_r3.key)("ngClass", i0.ɵɵpureFunction2(5, _c2$3, opt_r3.selected, ctx_r4.disabled));
2474
+ i0.ɵɵproperty("name", "wm-switch-" + opt_r3.key)("ngClass", i0.ɵɵpureFunction2(6, _c2$3, opt_r3.selected, ctx_r4.disabled));
2475
+ i0.ɵɵattribute("aria-pressed", opt_r3.selected ? true : false);
2381
2476
  i0.ɵɵadvance();
2382
2477
  i0.ɵɵproperty("ngIf", opt_r3.dataObject && opt_r3.dataObject[ctx_r4.iconclass] && !opt_r3.selected);
2383
2478
  i0.ɵɵadvance();
@@ -2525,9 +2620,9 @@ class SwitchComponent extends DatasetAwareFormComponent {
2525
2620
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SwitchComponent, selectors: [["", "wmSwitch", ""]], exportAs: ["wmSwitch"], features: [i0.ɵɵProvidersFeature([
2526
2621
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
2527
2622
  provideAsWidgetRef(SwitchComponent)
2528
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$6, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", 3, "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", 1, "btn", "btn-default", 3, "click", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], [1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
2623
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$6, decls: 4, vars: 9, consts: [["role", "group", 1, "btn-group", "btn-group-justified", 3, "ngClass"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", "class", "btn btn-primary app-switch-overlay switch-handle", 3, "title", 4, "ngIf"], ["aria-hidden", "true", 1, "model-holder", "ng-hide", 3, "name", "disabled", "value", "required"], ["focus-target", "", "href", "javascript:void(0);", "role", "button", 1, "btn", "btn-default", 3, "click", "name", "ngClass"], ["aria-hidden", "true", 3, "ngClass", 4, "ngIf"], [1, "caption", 3, "textContent"], ["aria-hidden", "true", 3, "ngClass"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "ngClass"], [1, "caption"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
2529
2624
  i0.ɵɵelementStart(0, "div", 0);
2530
- i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 8, "a", 1);
2625
+ i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 9, "a", 1);
2531
2626
  i0.ɵɵelementEnd();
2532
2627
  i0.ɵɵtemplate(2, SwitchComponent_span_2_Template, 4, 5, "span", 2);
2533
2628
  i0.ɵɵelement(3, "input", 3);
@@ -2546,7 +2641,7 @@ class SwitchComponent extends DatasetAwareFormComponent {
2546
2641
  args: [{ selector: '[wmSwitch]', providers: [
2547
2642
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
2548
2643
  provideAsWidgetRef(SwitchComponent)
2549
- ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [name]=\"'wm-switch-' + opt.key\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
2644
+ ], exportAs: 'wmSwitch', template: "<div role=\"group\" class=\"btn-group btn-group-justified\" [ngClass]=\"{'multi-select': multiple}\">\n <a *ngFor=\"let opt of datasetItems; let $index = index;\"\n focus-target\n href=\"javascript:void(0);\"\n class=\"btn btn-default\"\n [name]=\"'wm-switch-' + opt.key\"\n role=\"button\"\n [ngClass]=\"{'selected': opt.selected, 'disabled': disabled}\"\n [attr.aria-pressed]=\"opt.selected ? true : false\"\n (click)=\"selectOpt($event, $index, opt)\"\n >\n <i *ngIf=\"opt.dataObject && opt.dataObject[iconclass] && !opt.selected\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <i *ngIf=\"opt.selected\" aria-hidden=\"true\" [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span [title]=\"selectedItem ? selectedItem.label : modelByKey\" aria-hidden=\"true\"\n class=\"btn btn-primary app-switch-overlay switch-handle\" *ngIf=\"!multiple\">\n <i [ngClass]=\"[checkediconclass]\"></i>\n <span class=\"caption\">{{selectedItem ? selectedItem.label : modelByKey}}</span>\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
2550
2645
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2551
2646
  type: Inject,
2552
2647
  args: ['EXPLICIT_CONTEXT']
@@ -2564,6 +2659,7 @@ const inputCalendarTypeProps = new Map([
2564
2659
  ['datavalue', PROP_STRING],
2565
2660
  ['disabled', PROP_BOOLEAN],
2566
2661
  ['hint', PROP_STRING],
2662
+ ['arialabel', PROP_STRING],
2567
2663
  ['maxvalue', PROP_NUMBER],
2568
2664
  ['minvalue', PROP_NUMBER],
2569
2665
  ['name', PROP_STRING],
@@ -2607,7 +2703,7 @@ class InputCalendarComponent extends BaseInput {
2607
2703
  provideAs(InputCalendarComponent, NG_VALUE_ACCESSOR, true),
2608
2704
  provideAs(InputCalendarComponent, NG_VALIDATORS, true),
2609
2705
  provideAsWidgetRef(InputCalendarComponent)
2610
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$4, decls: 2, vars: 19, consts: [["input", ""], ["focus-target", "", "role", "textbox", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "min", "max", "step", "autofocus", "autocomplete", "ngClass", "ngStyle"]], template: function InputCalendarComponent_Template(rf, ctx) { if (rf & 1) {
2706
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$4, decls: 2, vars: 19, consts: [["input", ""], ["focus-target", "", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "min", "max", "step", "autofocus", "autocomplete", "ngClass", "ngStyle"]], template: function InputCalendarComponent_Template(rf, ctx) { if (rf & 1) {
2611
2707
  const _r1 = i0.ɵɵgetCurrentView();
2612
2708
  i0.ɵɵelementStart(0, "input", 1, 0);
2613
2709
  i0.ɵɵtwoWayListener("ngModelChange", function InputCalendarComponent_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.datavalue, $event) || (ctx.datavalue = $event); return i0.ɵɵresetView($event); });
@@ -2617,7 +2713,7 @@ class InputCalendarComponent extends BaseInput {
2617
2713
  i0.ɵɵproperty("type", ctx.type);
2618
2714
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2619
2715
  i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(18, _c2$2))("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled)("min", ctx.minvalue)("max", ctx.maxvalue)("step", ctx.step)("autofocus", ctx.autofocus)("autocomplete", ctx.autocomplete ? "on" : "off")("ngClass", ctx.conditionalclass)("ngStyle", ctx.conditionalstyle);
2620
- i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.hint || ctx.type + " field");
2716
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel || ctx.type + " field");
2621
2717
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.NgModel], encapsulation: 2 }); }
2622
2718
  }
2623
2719
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputCalendarComponent, [{
@@ -2626,7 +2722,7 @@ class InputCalendarComponent extends BaseInput {
2626
2722
  provideAs(InputCalendarComponent, NG_VALUE_ACCESSOR, true),
2627
2723
  provideAs(InputCalendarComponent, NG_VALIDATORS, true),
2628
2724
  provideAsWidgetRef(InputCalendarComponent)
2629
- ], template: "<input class=\"form-control app-textbox\"\n focus-target\n role=\"textbox\"\n [type]=\"type\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [min]=\"minvalue\"\n [max]=\"maxvalue\"\n [step]=\"step\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint || type + ' field'\"\n [autofocus]=\"autofocus\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n #input>\n" }]
2725
+ ], template: "<input class=\"form-control app-textbox\"\n focus-target\n [type]=\"type\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [min]=\"minvalue\"\n [max]=\"maxvalue\"\n [step]=\"step\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel || type + ' field'\"\n [autofocus]=\"autofocus\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n #input>\n" }]
2630
2726
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2631
2727
  type: Inject,
2632
2728
  args: ['EXPLICIT_CONTEXT']
@@ -2650,6 +2746,7 @@ const inputColorTypeProps = new Map([
2650
2746
  ['datavalue', PROP_STRING],
2651
2747
  ['disabled', PROP_BOOLEAN],
2652
2748
  ['hint', PROP_STRING],
2749
+ ['arialabel', PROP_STRING],
2653
2750
  ['name', PROP_STRING],
2654
2751
  ['placeholder', { value: 'Enter text', ...PROP_STRING }],
2655
2752
  ['readonly', PROP_BOOLEAN],
@@ -2690,7 +2787,7 @@ class InputColorComponent extends BaseInput {
2690
2787
  provideAs(InputColorComponent, NG_VALUE_ACCESSOR, true),
2691
2788
  provideAs(InputColorComponent, NG_VALIDATORS, true),
2692
2789
  provideAsWidgetRef(InputColorComponent)
2693
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$3, decls: 2, vars: 16, consts: [["input", ""], ["focus-target", "", "role", "textbox", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "autofocus", "ngClass", "ngStyle"]], template: function InputColorComponent_Template(rf, ctx) { if (rf & 1) {
2790
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$3, decls: 2, vars: 16, consts: [["input", ""], ["focus-target", "", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "autofocus", "ngClass", "ngStyle"]], template: function InputColorComponent_Template(rf, ctx) { if (rf & 1) {
2694
2791
  const _r1 = i0.ɵɵgetCurrentView();
2695
2792
  i0.ɵɵelementStart(0, "input", 1, 0);
2696
2793
  i0.ɵɵtwoWayListener("ngModelChange", function InputColorComponent_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.datavalue, $event) || (ctx.datavalue = $event); return i0.ɵɵresetView($event); });
@@ -2700,7 +2797,7 @@ class InputColorComponent extends BaseInput {
2700
2797
  i0.ɵɵproperty("type", ctx.type);
2701
2798
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2702
2799
  i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(15, _c2$1))("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled)("maxlength", ctx.maxchars)("autofocus", ctx.autofocus)("ngClass", ctx.conditionalclass)("ngStyle", ctx.conditionalstyle);
2703
- i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.hint);
2800
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
2704
2801
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.MaxLengthValidator, i2$1.NgModel], encapsulation: 2 }); }
2705
2802
  }
2706
2803
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputColorComponent, [{
@@ -2709,7 +2806,7 @@ class InputColorComponent extends BaseInput {
2709
2806
  provideAs(InputColorComponent, NG_VALUE_ACCESSOR, true),
2710
2807
  provideAs(InputColorComponent, NG_VALIDATORS, true),
2711
2808
  provideAsWidgetRef(InputColorComponent)
2712
- ], template: "<input class=\"form-control app-textbox\"\n focus-target\n [type]=\"type\"\n role=\"textbox\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n #input>\n" }]
2809
+ ], template: "<input class=\"form-control app-textbox\"\n focus-target\n [type]=\"type\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"{standalone: true}\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n #input>\n" }]
2713
2810
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2714
2811
  type: Inject,
2715
2812
  args: ['EXPLICIT_CONTEXT']
@@ -2733,6 +2830,7 @@ const inputEmailTypeProps = new Map([
2733
2830
  ['datavalue', PROP_STRING],
2734
2831
  ['disabled', PROP_BOOLEAN],
2735
2832
  ['hint', PROP_STRING],
2833
+ ['arialabel', PROP_STRING],
2736
2834
  ['maxchars', PROP_NUMBER],
2737
2835
  ['name', PROP_STRING],
2738
2836
  ['placeholder', { value: 'Enter text', ...PROP_STRING }],
@@ -2774,7 +2872,7 @@ class InputEmailComponent extends BaseInput {
2774
2872
  provideAs(InputEmailComponent, NG_VALUE_ACCESSOR, true),
2775
2873
  provideAs(InputEmailComponent, NG_VALIDATORS, true),
2776
2874
  provideAsWidgetRef(InputEmailComponent)
2777
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$2, decls: 2, vars: 17, consts: [["input", ""], ["focus-target", "", "role", "textbox", "email", "", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "keyup.enter", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "pattern", "autofocus", "ngClass", "ngStyle", "autocomplete"]], template: function InputEmailComponent_Template(rf, ctx) { if (rf & 1) {
2875
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$2, decls: 2, vars: 17, consts: [["input", ""], ["focus-target", "", "email", "", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "keyup.enter", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "pattern", "autofocus", "ngClass", "ngStyle", "autocomplete"]], template: function InputEmailComponent_Template(rf, ctx) { if (rf & 1) {
2778
2876
  const _r1 = i0.ɵɵgetCurrentView();
2779
2877
  i0.ɵɵelementStart(0, "input", 1, 0);
2780
2878
  i0.ɵɵtwoWayListener("ngModelChange", function InputEmailComponent_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.datavalue, $event) || (ctx.datavalue = $event); return i0.ɵɵresetView($event); });
@@ -2784,7 +2882,7 @@ class InputEmailComponent extends BaseInput {
2784
2882
  i0.ɵɵproperty("type", ctx.type);
2785
2883
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2786
2884
  i0.ɵɵproperty("ngModelOptions", ctx.ngModelOptions)("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled)("maxlength", ctx.maxchars)("pattern", ctx.regexp)("autofocus", ctx.autofocus)("ngClass", ctx.conditionalclass)("ngStyle", ctx.conditionalstyle)("autocomplete", ctx.autocomplete ? "on" : "off");
2787
- i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.hint);
2885
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
2788
2886
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.MaxLengthValidator, i2$1.PatternValidator, i2$1.EmailValidator, i2$1.NgModel], encapsulation: 2 }); }
2789
2887
  }
2790
2888
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputEmailComponent, [{
@@ -2793,7 +2891,7 @@ class InputEmailComponent extends BaseInput {
2793
2891
  provideAs(InputEmailComponent, NG_VALUE_ACCESSOR, true),
2794
2892
  provideAs(InputEmailComponent, NG_VALIDATORS, true),
2795
2893
  provideAsWidgetRef(InputEmailComponent)
2796
- ], template: "<input class=\"form-control app-textbox\"\n focus-target\n role=\"textbox\"\n [type]=\"type\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [pattern]=\"regexp\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n (keyup.enter)=\"flushViewChanges(input.value)\"\n email\n #input>\n" }]
2894
+ ], template: "<input class=\"form-control app-textbox\"\n focus-target\n [type]=\"type\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [pattern]=\"regexp\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n (keyup.enter)=\"flushViewChanges(input.value)\"\n email\n #input>\n" }]
2797
2895
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2798
2896
  type: Inject,
2799
2897
  args: ['EXPLICIT_CONTEXT']
@@ -2817,6 +2915,7 @@ const inputNumberTypeProps = new Map([
2817
2915
  ['datavalue', PROP_STRING],
2818
2916
  ['disabled', PROP_BOOLEAN],
2819
2917
  ['hint', PROP_STRING],
2918
+ ['arialabel', PROP_STRING],
2820
2919
  ['maxchars', PROP_NUMBER],
2821
2920
  ['maxvalue', PROP_NUMBER],
2822
2921
  ['minvalue', PROP_NUMBER],
@@ -2872,7 +2971,7 @@ class InputNumberComponent extends BaseInput {
2872
2971
  provideAs(InputNumberComponent, NG_VALUE_ACCESSOR, true),
2873
2972
  provideAs(InputNumberComponent, NG_VALIDATORS, true),
2874
2973
  provideAsWidgetRef(InputNumberComponent)
2875
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$1, decls: 2, vars: 22, consts: [["input", ""], ["focus-target", "", "role", "textbox", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "keyup.enter", "keydown.ArrowUp", "keydown.ArrowDown", "keypress", "ngClass", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "min", "max", "step", "autofocus", "ngStyle", "autocomplete"]], template: function InputNumberComponent_Template(rf, ctx) { if (rf & 1) {
2974
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1$1, decls: 2, vars: 22, consts: [["input", ""], ["focus-target", "", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "keyup.enter", "keydown.ArrowUp", "keydown.ArrowDown", "keypress", "ngClass", "type", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "min", "max", "step", "autofocus", "ngStyle", "autocomplete"]], template: function InputNumberComponent_Template(rf, ctx) { if (rf & 1) {
2876
2975
  const _r1 = i0.ɵɵgetCurrentView();
2877
2976
  i0.ɵɵelementStart(0, "input", 1, 0);
2878
2977
  i0.ɵɵtwoWayListener("ngModelChange", function InputNumberComponent_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.datavalue, $event) || (ctx.datavalue = $event); return i0.ɵɵresetView($event); });
@@ -2882,7 +2981,7 @@ class InputNumberComponent extends BaseInput {
2882
2981
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c2, ctx.step === 0))("type", ctx.type);
2883
2982
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2884
2983
  i0.ɵɵproperty("ngModelOptions", ctx.ngModelOptions)("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled)("maxlength", ctx.maxchars)("min", ctx.minvalue)("max", ctx.maxvalue)("step", ctx.step)("autofocus", ctx.autofocus)("ngClass", ctx.conditionalclass)("ngStyle", ctx.conditionalstyle)("autocomplete", ctx.autocomplete ? "on" : "off");
2885
- i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.hint);
2984
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
2886
2985
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.MaxLengthValidator, i2$1.NgModel], encapsulation: 2 }); }
2887
2986
  }
2888
2987
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputNumberComponent, [{
@@ -2891,7 +2990,7 @@ class InputNumberComponent extends BaseInput {
2891
2990
  provideAs(InputNumberComponent, NG_VALUE_ACCESSOR, true),
2892
2991
  provideAs(InputNumberComponent, NG_VALIDATORS, true),
2893
2992
  provideAsWidgetRef(InputNumberComponent)
2894
- ], template: "<input class=\"form-control app-textbox\"\n [ngClass]=\"{'step-hidden': step === 0}\"\n focus-target\n role=\"textbox\"\n [type]=\"type\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [min]=\"minvalue\"\n [max]=\"maxvalue\"\n [step]=\"step\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n (keyup.enter)=\"flushViewChanges(input.value)\"\n (keydown.ArrowUp)=\"onArrowPress($event)\"\n (keydown.ArrowDown)=\"onArrowPress($event)\"\n (keypress)=\"validateInputEntry($event)\"\n #input>\n" }]
2993
+ ], template: "<input class=\"form-control app-textbox\"\n [ngClass]=\"{'step-hidden': step === 0}\"\n focus-target\n [type]=\"type\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [min]=\"minvalue\"\n [max]=\"maxvalue\"\n [step]=\"step\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (ngModelChange)=\"handleChange($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n (keyup.enter)=\"flushViewChanges(input.value)\"\n (keydown.ArrowUp)=\"onArrowPress($event)\"\n (keydown.ArrowDown)=\"onArrowPress($event)\"\n (keypress)=\"validateInputEntry($event)\"\n #input>\n" }]
2895
2994
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2896
2995
  type: Inject,
2897
2996
  args: ['EXPLICIT_CONTEXT']
@@ -2916,6 +3015,7 @@ const inputTextTypeProps = new Map([
2916
3015
  ['disabled', PROP_BOOLEAN],
2917
3016
  ['displayformat', PROP_STRING],
2918
3017
  ['hint', PROP_STRING],
3018
+ ['arialabel', PROP_STRING],
2919
3019
  ['maxchars', PROP_NUMBER],
2920
3020
  ['name', PROP_STRING],
2921
3021
  ['placeholder', { value: 'Enter text', ...PROP_STRING }],
@@ -3039,7 +3139,7 @@ class InputTextComponent extends BaseInput {
3039
3139
  provideAs(InputTextComponent, NG_VALUE_ACCESSOR, true),
3040
3140
  provideAs(InputTextComponent, NG_VALIDATORS, true),
3041
3141
  provideAsWidgetRef(InputTextComponent)
3042
- ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, decls: 2, vars: 19, consts: [["input", ""], ["focus-target", "", "role", "textbox", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "focus", "keyup.enter", "type", "ngModel", "imask", "unmask", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "pattern", "autofocus", "ngClass", "ngStyle", "autocomplete"]], template: function InputTextComponent_Template(rf, ctx) { if (rf & 1) {
3142
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c1, decls: 2, vars: 19, consts: [["input", ""], ["focus-target", "", 1, "form-control", "app-textbox", 3, "ngModelChange", "blur", "focus", "keyup.enter", "type", "ngModel", "imask", "unmask", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "pattern", "autofocus", "ngClass", "ngStyle", "autocomplete"]], template: function InputTextComponent_Template(rf, ctx) { if (rf & 1) {
3043
3143
  const _r1 = i0.ɵɵgetCurrentView();
3044
3144
  i0.ɵɵelementStart(0, "input", 1, 0);
3045
3145
  i0.ɵɵtwoWayListener("ngModelChange", function InputTextComponent_Template_input_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.datavalue, $event) || (ctx.datavalue = $event); return i0.ɵɵresetView($event); });
@@ -3049,7 +3149,7 @@ class InputTextComponent extends BaseInput {
3049
3149
  i0.ɵɵproperty("type", ctx.type);
3050
3150
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
3051
3151
  i0.ɵɵproperty("imask", ctx.mask)("unmask", true)("ngModelOptions", ctx.ngModelOptions)("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled)("maxlength", ctx.maxchars)("pattern", ctx.regexp)("autofocus", ctx.autofocus)("ngClass", ctx.conditionalclass)("ngStyle", ctx.conditionalstyle)("autocomplete", ctx.autocomplete ? "on" : "off");
3052
- i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.hint)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey);
3152
+ i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.arialabel)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey);
3053
3153
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.MaxLengthValidator, i2$1.PatternValidator, i2$1.NgModel, i3.IMaskDirective], encapsulation: 2 }); }
3054
3154
  }
3055
3155
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputTextComponent, [{
@@ -3058,7 +3158,7 @@ class InputTextComponent extends BaseInput {
3058
3158
  provideAs(InputTextComponent, NG_VALUE_ACCESSOR, true),
3059
3159
  provideAs(InputTextComponent, NG_VALIDATORS, true),
3060
3160
  provideAsWidgetRef(InputTextComponent)
3061
- ], template: "<input class=\"form-control app-textbox\"\n focus-target\n role=\"textbox\"\n [type]=\"type\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"hint\"\n [(ngModel)]=\"datavalue\"\n [imask]=\"mask\"\n [unmask]=\"true\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [pattern]=\"regexp\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (ngModelChange)=\"handleChange($event)\"\n (blur)=\"handleBlur($event); checkForDisplayFormat($event)\"\n (focus)=\"checkForDisplayFormat($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n (keyup.enter)=\"flushViewChanges(input.value)\"\n #input>\n" }]
3161
+ ], template: "<input class=\"form-control app-textbox\"\n focus-target\n [type]=\"type\"\n [attr.name]=\"name\"\n [attr.aria-label]=\"arialabel\"\n [(ngModel)]=\"datavalue\"\n [imask]=\"mask\"\n [unmask]=\"true\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [pattern]=\"regexp\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (ngModelChange)=\"handleChange($event)\"\n (blur)=\"handleBlur($event); checkForDisplayFormat($event)\"\n (focus)=\"checkForDisplayFormat($event)\"\n [autocomplete]=\"autocomplete ? 'on' : 'off'\"\n (keyup.enter)=\"flushViewChanges(input.value)\"\n #input>\n" }]
3062
3162
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
3063
3163
  type: Inject,
3064
3164
  args: ['EXPLICIT_CONTEXT']
@@ -3084,6 +3184,7 @@ const textareaProps = new Map([
3084
3184
  ['datavalue', PROP_STRING],
3085
3185
  ['disabled', PROP_BOOLEAN],
3086
3186
  ['hint', PROP_STRING],
3187
+ ['arialabel', PROP_STRING],
3087
3188
  ['maxchars', PROP_NUMBER],
3088
3189
  ['name', PROP_STRING],
3089
3190
  ['placeholder', { value: 'Place your text', ...PROP_STRING }],
@@ -3126,6 +3227,9 @@ class TextareaComponent extends BaseInput {
3126
3227
  onInputChange() {
3127
3228
  this.charlength = this.inputEl.nativeElement.value.length;
3128
3229
  }
3230
+ ngAfterViewChecked() {
3231
+ this.charlength = this.inputEl.nativeElement.value.length;
3232
+ }
3129
3233
  static { this.ɵfac = function TextareaComponent_Factory(t) { return new (t || TextareaComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
3130
3234
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextareaComponent, selectors: [["wm-textarea"]], viewQuery: function TextareaComponent_Query(rf, ctx) { if (rf & 1) {
3131
3235
  i0.ɵɵviewQuery(_c0, 7);
@@ -3138,7 +3242,7 @@ class TextareaComponent extends BaseInput {
3138
3242
  provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),
3139
3243
  provideAs(TextareaComponent, NG_VALIDATORS, true),
3140
3244
  provideAsWidgetRef(TextareaComponent)
3141
- ]), i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 15, consts: [["textarea", ""], ["focus-target", "", "role", "textbox", "aria-multiline", "true", 1, "form-control", "app-textarea", 3, "ngModelChange", "blur", "input", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "autofocus", "ngClass", "ngStyle"], ["class", "textarea-count", 4, "ngIf"], [1, "textarea-count"]], template: function TextareaComponent_Template(rf, ctx) { if (rf & 1) {
3245
+ ]), i0.ɵɵInheritDefinitionFeature], decls: 3, vars: 15, consts: [["textarea", ""], ["focus-target", "", "aria-multiline", "true", 1, "form-control", "app-textarea", 3, "ngModelChange", "blur", "input", "ngModel", "ngModelOptions", "readonly", "required", "disabled", "maxlength", "autofocus", "ngClass", "ngStyle"], ["class", "textarea-count", 4, "ngIf"], [1, "textarea-count"]], template: function TextareaComponent_Template(rf, ctx) { if (rf & 1) {
3142
3246
  const _r1 = i0.ɵɵgetCurrentView();
3143
3247
  i0.ɵɵelementStart(0, "textarea", 1, 0);
3144
3248
  i0.ɵɵtwoWayListener("ngModelChange", function TextareaComponent_Template_textarea_ngModelChange_0_listener($event) { i0.ɵɵrestoreView(_r1); i0.ɵɵtwoWayBindingSet(ctx.datavalue, $event) || (ctx.datavalue = $event); return i0.ɵɵresetView($event); });
@@ -3148,7 +3252,7 @@ class TextareaComponent extends BaseInput {
3148
3252
  } if (rf & 2) {
3149
3253
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
3150
3254
  i0.ɵɵproperty("ngModelOptions", ctx.ngModelOptions)("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled)("maxlength", ctx.maxchars)("autofocus", ctx.autofocus)("ngClass", ctx.conditionalclass)("ngStyle", ctx.conditionalstyle);
3151
- i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.hint);
3255
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
3152
3256
  i0.ɵɵadvance(2);
3153
3257
  i0.ɵɵproperty("ngIf", ctx.maxchars);
3154
3258
  } }, dependencies: [i1.NgClass, i1.NgIf, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.MaxLengthValidator, i2$1.NgModel], encapsulation: 2 }); }
@@ -3159,7 +3263,7 @@ class TextareaComponent extends BaseInput {
3159
3263
  provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),
3160
3264
  provideAs(TextareaComponent, NG_VALIDATORS, true),
3161
3265
  provideAsWidgetRef(TextareaComponent)
3162
- ], template: "<textarea class=\"form-control app-textarea\"\n focus-target\n role=\"textbox\"\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"hint\"\n aria-multiline=\"true\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (input)=\"onInputChange()\"\n (ngModelChange)=\"handleChange($event); onInputChange();\"\n #textarea\n></textarea>\n\n<div *ngIf=\"maxchars\" class=\"textarea-count\" >{{limitdisplaytext}}</div>\n" }]
3266
+ ], template: "<textarea class=\"form-control app-textarea\"\n focus-target\n [attr.name]=\"name\"\n [(ngModel)]=\"datavalue\"\n [ngModelOptions]=\"ngModelOptions\"\n [readonly]=\"readonly\"\n [required]=\"required\"\n [disabled]=\"disabled\"\n [maxlength]=\"maxchars\"\n [attr.tabindex]=\"tabindex\"\n [attr.placeholder]=\"placeholder\"\n [attr.accesskey]=\"shortcutkey\"\n [attr.aria-label]=\"arialabel\"\n aria-multiline=\"true\"\n [autofocus]=\"autofocus\"\n [ngClass]=\"conditionalclass\"\n [ngStyle]=\"conditionalstyle\"\n (blur)=\"handleBlur($event)\"\n (input)=\"onInputChange()\"\n (ngModelChange)=\"handleChange($event); onInputChange();\"\n #textarea\n></textarea>\n\n<div *ngIf=\"maxchars\" class=\"textarea-count\" >{{limitdisplaytext}}</div>\n" }]
3163
3267
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
3164
3268
  type: Inject,
3165
3269
  args: ['EXPLICIT_CONTEXT']
@@ -3172,7 +3276,7 @@ class TextareaComponent extends BaseInput {
3172
3276
  type: ViewChild,
3173
3277
  args: [NgModel]
3174
3278
  }] }); })();
3175
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextareaComponent, { className: "TextareaComponent", filePath: "textarea/textarea.component.ts", lineNumber: 22 }); })();
3279
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextareaComponent, { className: "TextareaComponent", filePath: "textarea/textarea.component.ts", lineNumber: 23 }); })();
3176
3280
 
3177
3281
  class CaptionPositionDirective {
3178
3282
  constructor(inj, app) {
@@ -3203,9 +3307,10 @@ class CaptionPositionDirective {
3203
3307
  }
3204
3308
  // For select widget, display placeholder only on focus else remove the text of the option selected.
3205
3309
  checkForSelectPlaceholder() {
3206
- if ($(this.nativeEl).find('select option:selected').text() && !$(this.nativeEl).find('select').is(':focus') &&
3310
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
3311
+ if (selectElPlaceholderOption && selectElPlaceholderOption.textContent && !$(this.nativeEl).find('select').is(':focus') &&
3207
3312
  !$(this.inputEl.closest('[widget-id]')).attr('datavalue')) {
3208
- $(this.nativeEl).find('select option:selected').text('');
3313
+ selectElPlaceholderOption.textContent = '';
3209
3314
  }
3210
3315
  }
3211
3316
  setDefaultValueAnimation() {
@@ -3307,10 +3412,10 @@ class CaptionPositionDirective {
3307
3412
  // before placeholder is removed assign it to the placeholder variable
3308
3413
  // check for placeholder in inputel and selectel
3309
3414
  if (this.inputEl) {
3310
- const selectEl = this.inputEl.find('option:first');
3311
- if (this.inputEl.attr('placeholder') || selectEl.text()) {
3312
- if (selectEl.length) {
3313
- selectEl.text('');
3415
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
3416
+ if (this.inputEl.attr('placeholder') || selectElPlaceholderOption) {
3417
+ if (selectElPlaceholderOption) {
3418
+ selectElPlaceholderOption.textContent = '';
3314
3419
  }
3315
3420
  else {
3316
3421
  this.placeholder = this.inputEl.attr('placeholder');