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

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 (398) hide show
  1. app-ng-runtime/build-task/bundles/index.umd.js +402 -440
  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/accordion/accordion-pane/accordion-pane.build.mjs +2 -2
  11. app-ng-runtime/build-task/esm2022/containers/accordion/accordion.build.mjs +3 -3
  12. app-ng-runtime/build-task/esm2022/containers/tile/tile.build.mjs +2 -2
  13. app-ng-runtime/build-task/esm2022/containers/wizard/wizard.build.mjs +2 -2
  14. app-ng-runtime/build-task/esm2022/data/form/form-field/form-field.build.mjs +3 -4
  15. app-ng-runtime/build-task/esm2022/device/barcode-scanner/barcode-scanner.build.mjs +2 -2
  16. app-ng-runtime/build-task/esm2022/device/camera/camera.build.mjs +2 -2
  17. app-ng-runtime/build-task/esm2022/dialogs/alert-dialog/alert-dialog.build.mjs +2 -2
  18. app-ng-runtime/build-task/esm2022/input/calendar/calendar.build.mjs +2 -2
  19. app-ng-runtime/build-task/esm2022/input/chips/chips.build.mjs +2 -2
  20. app-ng-runtime/build-task/esm2022/input/color-picker/color-picker.build.mjs +3 -3
  21. app-ng-runtime/build-task/esm2022/input/currency/currency.build.mjs +3 -3
  22. app-ng-runtime/build-task/esm2022/input/default/button/button.build.mjs +2 -2
  23. app-ng-runtime/build-task/esm2022/input/default/button-group/button-group.build.mjs +2 -2
  24. app-ng-runtime/build-task/esm2022/input/default/switch/switch.build.mjs +2 -2
  25. app-ng-runtime/build-task/esm2022/input/file-upload/file-upload.build.mjs +6 -2
  26. app-ng-runtime/build-task/esm2022/page/footer/footer.build.mjs +2 -2
  27. app-ng-runtime/build-task/esm2022/page/header/header.build.mjs +2 -2
  28. app-ng-runtime/build-task/esm2022/page/layout.build.mjs +2 -2
  29. app-ng-runtime/build-task/esm2022/page/left-panel/left-panel.build.mjs +2 -2
  30. app-ng-runtime/build-task/esm2022/page/page.build.mjs +2 -2
  31. app-ng-runtime/build-task/esm2022/page/right-panel/right-panel.build.mjs +2 -2
  32. app-ng-runtime/build-task/esm2022/page/top-nav/top-nav.build.mjs +2 -2
  33. app-ng-runtime/build-task/esm2022/public_api.mjs +1 -3
  34. app-ng-runtime/build-task/fesm2022/index.mjs +403 -443
  35. app-ng-runtime/build-task/fesm2022/index.mjs.map +1 -1
  36. app-ng-runtime/build-task/public_api.d.ts +0 -2
  37. app-ng-runtime/components/advanced/carousel/bundles/index.umd.js +1 -1
  38. app-ng-runtime/components/advanced/carousel/esm2022/carousel.animator.mjs +2 -2
  39. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs +1 -1
  40. app-ng-runtime/components/advanced/carousel/fesm2022/index.mjs.map +1 -1
  41. app-ng-runtime/components/base/bundles/index.umd.js +22 -69
  42. app-ng-runtime/components/base/components.module.d.ts +11 -12
  43. app-ng-runtime/components/base/esm2022/components.module.mjs +1 -5
  44. app-ng-runtime/components/base/esm2022/pipes/custom-pipes.mjs +3 -3
  45. app-ng-runtime/components/base/esm2022/public_api.mjs +1 -2
  46. app-ng-runtime/components/base/esm2022/utils/live-utils.mjs +8 -2
  47. app-ng-runtime/components/base/esm2022/widgets/common/base/base.component.mjs +15 -30
  48. app-ng-runtime/components/base/fesm2022/index.mjs +23 -69
  49. app-ng-runtime/components/base/fesm2022/index.mjs.map +1 -1
  50. app-ng-runtime/components/base/pipes/custom-pipes.d.ts +1 -1
  51. app-ng-runtime/components/base/public_api.d.ts +0 -1
  52. app-ng-runtime/components/base/widgets/common/base/base.component.d.ts +5 -10
  53. app-ng-runtime/components/basic/default/anchor/anchor.component.d.ts +1 -0
  54. app-ng-runtime/components/basic/default/audio/audio.component.d.ts +3 -0
  55. app-ng-runtime/components/basic/default/bundles/index.umd.js +39 -19
  56. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.component.mjs +4 -4
  57. app-ng-runtime/components/basic/default/esm2022/anchor/anchor.props.mjs +2 -1
  58. app-ng-runtime/components/basic/default/esm2022/audio/audio.component.mjs +14 -6
  59. app-ng-runtime/components/basic/default/esm2022/audio/audio.props.mjs +2 -1
  60. app-ng-runtime/components/basic/default/esm2022/html/html.props.mjs +2 -1
  61. app-ng-runtime/components/basic/default/esm2022/icon/icon.component.mjs +6 -7
  62. app-ng-runtime/components/basic/default/esm2022/icon/icon.props.mjs +2 -1
  63. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.component.mjs +3 -3
  64. app-ng-runtime/components/basic/default/esm2022/iframe/iframe.props.mjs +3 -2
  65. app-ng-runtime/components/basic/default/esm2022/label/label.props.mjs +1 -1
  66. app-ng-runtime/components/basic/default/esm2022/picture/picture.directive.mjs +2 -2
  67. app-ng-runtime/components/basic/default/esm2022/picture/picture.props.mjs +3 -1
  68. app-ng-runtime/components/basic/default/esm2022/spinner/spinner.props.mjs +3 -2
  69. app-ng-runtime/components/basic/default/esm2022/video/video.component.mjs +8 -4
  70. app-ng-runtime/components/basic/default/esm2022/video/video.props.mjs +2 -1
  71. app-ng-runtime/components/basic/default/fesm2022/index.mjs +39 -19
  72. app-ng-runtime/components/basic/default/fesm2022/index.mjs.map +1 -1
  73. app-ng-runtime/components/basic/default/icon/icon.component.d.ts +1 -0
  74. app-ng-runtime/components/basic/default/iframe/iframe.component.d.ts +1 -0
  75. app-ng-runtime/components/basic/default/picture/picture.directive.d.ts +2 -1
  76. app-ng-runtime/components/basic/default/video/video.component.d.ts +2 -0
  77. app-ng-runtime/components/basic/progress/bundles/index.umd.js +17 -9
  78. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.component.mjs +9 -5
  79. app-ng-runtime/components/basic/progress/esm2022/progress-bar/progress-bar.props.mjs +2 -1
  80. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.component.mjs +8 -6
  81. app-ng-runtime/components/basic/progress/esm2022/progress-circle/progress-circle.props.mjs +2 -1
  82. app-ng-runtime/components/basic/progress/fesm2022/index.mjs +17 -9
  83. app-ng-runtime/components/basic/progress/fesm2022/index.mjs.map +1 -1
  84. app-ng-runtime/components/basic/progress/progress-bar/progress-bar.component.d.ts +2 -0
  85. app-ng-runtime/components/basic/progress/progress-circle/progress-circle.component.d.ts +3 -1
  86. app-ng-runtime/components/basic/rich-text-editor/bundles/index.umd.js +2 -0
  87. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.component.mjs +2 -1
  88. app-ng-runtime/components/basic/rich-text-editor/esm2022/rich-text-editor.props.mjs +2 -1
  89. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs +2 -0
  90. app-ng-runtime/components/basic/rich-text-editor/fesm2022/index.mjs.map +1 -1
  91. app-ng-runtime/components/basic/search/bundles/index.umd.js +35 -40
  92. app-ng-runtime/components/basic/search/esm2022/search.component.mjs +37 -40
  93. app-ng-runtime/components/basic/search/esm2022/search.props.mjs +3 -5
  94. app-ng-runtime/components/basic/search/fesm2022/index.mjs +35 -40
  95. app-ng-runtime/components/basic/search/fesm2022/index.mjs.map +1 -1
  96. app-ng-runtime/components/basic/search/search.component.d.ts +4 -5
  97. app-ng-runtime/components/containers/accordion/accordion-pane/accordion-pane.component.d.ts +1 -0
  98. app-ng-runtime/components/containers/accordion/bundles/index.umd.js +15 -9
  99. app-ng-runtime/components/containers/accordion/esm2022/accordion-pane/accordion-pane.component.mjs +13 -10
  100. app-ng-runtime/components/containers/accordion/esm2022/accordion.directive.mjs +4 -1
  101. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs +15 -9
  102. app-ng-runtime/components/containers/accordion/fesm2022/index.mjs.map +1 -1
  103. app-ng-runtime/components/containers/panel/bundles/index.umd.js +14 -14
  104. app-ng-runtime/components/containers/panel/esm2022/panel.component.mjs +15 -15
  105. app-ng-runtime/components/containers/panel/fesm2022/index.mjs +14 -14
  106. app-ng-runtime/components/containers/panel/fesm2022/index.mjs.map +1 -1
  107. app-ng-runtime/components/containers/tabs/bundles/index.umd.js +6 -14
  108. app-ng-runtime/components/containers/tabs/esm2022/tabs.component.mjs +7 -14
  109. app-ng-runtime/components/containers/tabs/esm2022/tabs.props.mjs +2 -3
  110. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs +6 -14
  111. app-ng-runtime/components/containers/tabs/fesm2022/index.mjs.map +1 -1
  112. app-ng-runtime/components/containers/tabs/tabs.component.d.ts +0 -1
  113. app-ng-runtime/components/containers/wizard/bundles/index.umd.js +23 -6
  114. app-ng-runtime/components/containers/wizard/esm2022/wizard.component.mjs +24 -7
  115. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs +23 -6
  116. app-ng-runtime/components/containers/wizard/fesm2022/index.mjs.map +1 -1
  117. app-ng-runtime/components/containers/wizard/wizard.component.d.ts +1 -0
  118. app-ng-runtime/components/data/form/bundles/index.umd.js +4 -0
  119. app-ng-runtime/components/data/form/esm2022/form-field/form-field.directive.mjs +5 -3
  120. app-ng-runtime/components/data/form/fesm2022/index.mjs +4 -2
  121. app-ng-runtime/components/data/form/fesm2022/index.mjs.map +1 -1
  122. app-ng-runtime/components/data/form/form-field/form-field.directive.d.ts +1 -0
  123. app-ng-runtime/components/data/list/bundles/index.umd.js +11 -11
  124. app-ng-runtime/components/data/list/esm2022/list.component.mjs +12 -12
  125. app-ng-runtime/components/data/list/fesm2022/index.mjs +11 -11
  126. app-ng-runtime/components/data/list/fesm2022/index.mjs.map +1 -1
  127. app-ng-runtime/components/data/live-table/bundles/index.umd.js +2 -2
  128. app-ng-runtime/components/data/live-table/esm2022/live-table.component.mjs +3 -3
  129. app-ng-runtime/components/data/live-table/fesm2022/index.mjs +2 -2
  130. app-ng-runtime/components/data/live-table/fesm2022/index.mjs.map +1 -1
  131. app-ng-runtime/components/data/pagination/bundles/index.umd.js +2 -0
  132. app-ng-runtime/components/data/pagination/esm2022/pagination.component.mjs +3 -1
  133. app-ng-runtime/components/data/pagination/fesm2022/index.mjs +2 -0
  134. app-ng-runtime/components/data/pagination/fesm2022/index.mjs.map +1 -1
  135. app-ng-runtime/components/data/table/bundles/index.umd.js +44 -10
  136. app-ng-runtime/components/data/table/esm2022/table-column/table-column.directive.mjs +14 -5
  137. app-ng-runtime/components/data/table/esm2022/table.component.mjs +30 -7
  138. app-ng-runtime/components/data/table/esm2022/table.props.mjs +3 -1
  139. app-ng-runtime/components/data/table/fesm2022/index.mjs +45 -11
  140. app-ng-runtime/components/data/table/fesm2022/index.mjs.map +1 -1
  141. app-ng-runtime/components/data/table/table.component.d.ts +8 -1
  142. app-ng-runtime/components/dialogs/alert-dialog/bundles/index.umd.js +6 -4
  143. app-ng-runtime/components/dialogs/alert-dialog/esm2022/alert-dialog.component.mjs +7 -5
  144. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs +6 -4
  145. app-ng-runtime/components/dialogs/alert-dialog/fesm2022/index.mjs.map +1 -1
  146. app-ng-runtime/components/dialogs/confirm-dialog/bundles/index.umd.js +8 -5
  147. app-ng-runtime/components/dialogs/confirm-dialog/esm2022/confirm-dialog.component.mjs +9 -6
  148. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs +8 -5
  149. app-ng-runtime/components/dialogs/confirm-dialog/fesm2022/index.mjs.map +1 -1
  150. app-ng-runtime/components/dialogs/default/base-dialog.d.ts +0 -2
  151. app-ng-runtime/components/dialogs/default/bundles/index.umd.js +23 -17
  152. app-ng-runtime/components/dialogs/default/dialog-header/dialog-header.component.d.ts +2 -1
  153. app-ng-runtime/components/dialogs/default/esm2022/base-dialog.mjs +13 -1
  154. app-ng-runtime/components/dialogs/default/esm2022/dialog-body/dialog-body.directive.mjs +2 -14
  155. app-ng-runtime/components/dialogs/default/esm2022/dialog-header/dialog-header.component.mjs +12 -6
  156. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs +24 -18
  157. app-ng-runtime/components/dialogs/default/fesm2022/index.mjs.map +1 -1
  158. app-ng-runtime/components/dialogs/design-dialog/bundles/index.umd.js +7 -25
  159. app-ng-runtime/components/dialogs/design-dialog/dialog.component.d.ts +2 -3
  160. app-ng-runtime/components/dialogs/design-dialog/esm2022/dialog.component.mjs +8 -26
  161. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs +7 -25
  162. app-ng-runtime/components/dialogs/design-dialog/fesm2022/index.mjs.map +1 -1
  163. app-ng-runtime/components/dialogs/iframe-dialog/bundles/index.umd.js +9 -5
  164. app-ng-runtime/components/dialogs/iframe-dialog/esm2022/iframe-dialog.component.mjs +10 -6
  165. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs +9 -5
  166. app-ng-runtime/components/dialogs/iframe-dialog/fesm2022/index.mjs.map +1 -1
  167. app-ng-runtime/components/dialogs/partial-dialog/bundles/index.umd.js +9 -5
  168. app-ng-runtime/components/dialogs/partial-dialog/esm2022/partial-dialog.component.mjs +10 -6
  169. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs +9 -5
  170. app-ng-runtime/components/dialogs/partial-dialog/fesm2022/index.mjs.map +1 -1
  171. app-ng-runtime/components/input/calendar/bundles/index.umd.js +2 -4
  172. app-ng-runtime/components/input/calendar/esm2022/calendar.component.mjs +3 -5
  173. app-ng-runtime/components/input/calendar/fesm2022/index.mjs +2 -4
  174. app-ng-runtime/components/input/calendar/fesm2022/index.mjs.map +1 -1
  175. app-ng-runtime/components/input/chips/bundles/index.umd.js +7 -3
  176. app-ng-runtime/components/input/chips/esm2022/chips.component.mjs +7 -4
  177. app-ng-runtime/components/input/chips/esm2022/chips.props.mjs +2 -1
  178. app-ng-runtime/components/input/chips/fesm2022/index.mjs +7 -3
  179. app-ng-runtime/components/input/chips/fesm2022/index.mjs.map +1 -1
  180. app-ng-runtime/components/input/color-picker/bundles/index.umd.js +5 -3
  181. app-ng-runtime/components/input/color-picker/color-picker.component.d.ts +1 -0
  182. app-ng-runtime/components/input/color-picker/esm2022/color-picker.component.mjs +6 -5
  183. app-ng-runtime/components/input/color-picker/esm2022/color-picker.props.mjs +2 -1
  184. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs +5 -3
  185. app-ng-runtime/components/input/color-picker/fesm2022/index.mjs.map +1 -1
  186. app-ng-runtime/components/input/currency/bundles/index.umd.js +4 -3
  187. app-ng-runtime/components/input/currency/currency.component.d.ts +1 -0
  188. app-ng-runtime/components/input/currency/esm2022/currency.component.mjs +6 -6
  189. app-ng-runtime/components/input/currency/esm2022/currency.props.mjs +2 -1
  190. app-ng-runtime/components/input/currency/fesm2022/index.mjs +4 -3
  191. app-ng-runtime/components/input/currency/fesm2022/index.mjs.map +1 -1
  192. app-ng-runtime/components/input/default/bundles/index.umd.js +257 -197
  193. app-ng-runtime/components/input/default/button/button.component.d.ts +1 -0
  194. app-ng-runtime/components/input/default/checkbox/checkbox.component.d.ts +1 -0
  195. app-ng-runtime/components/input/default/checkboxset/checkboxset.component.d.ts +0 -1
  196. app-ng-runtime/components/input/default/esm2022/button/button.component.mjs +1 -1
  197. app-ng-runtime/components/input/default/esm2022/button/button.props.mjs +2 -1
  198. app-ng-runtime/components/input/default/esm2022/caption-position.directive.mjs +8 -7
  199. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.component.mjs +7 -7
  200. app-ng-runtime/components/input/default/esm2022/checkbox/checkbox.props.mjs +2 -1
  201. app-ng-runtime/components/input/default/esm2022/checkboxset/checkboxset.component.mjs +25 -23
  202. app-ng-runtime/components/input/default/esm2022/number/number.component.mjs +5 -5
  203. app-ng-runtime/components/input/default/esm2022/number/number.props.mjs +3 -1
  204. app-ng-runtime/components/input/default/esm2022/radioset/radioset.component.mjs +32 -30
  205. app-ng-runtime/components/input/default/esm2022/select/select.component.mjs +60 -30
  206. app-ng-runtime/components/input/default/esm2022/select/select.props.mjs +2 -1
  207. app-ng-runtime/components/input/default/esm2022/switch/switch.component.mjs +39 -64
  208. app-ng-runtime/components/input/default/esm2022/switch/switch.props.mjs +2 -2
  209. app-ng-runtime/components/input/default/esm2022/text/base/base-input.mjs +1 -4
  210. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.component.mjs +5 -5
  211. app-ng-runtime/components/input/default/esm2022/text/calendar/input-calendar.props.mjs +2 -1
  212. app-ng-runtime/components/input/default/esm2022/text/color/input-color.component.mjs +5 -5
  213. app-ng-runtime/components/input/default/esm2022/text/color/input-color.props.mjs +2 -1
  214. app-ng-runtime/components/input/default/esm2022/text/email/input-email.component.mjs +5 -5
  215. app-ng-runtime/components/input/default/esm2022/text/email/input-email.props.mjs +2 -1
  216. app-ng-runtime/components/input/default/esm2022/text/locale/number-locale.mjs +51 -14
  217. app-ng-runtime/components/input/default/esm2022/text/number/input-number.component.mjs +5 -5
  218. app-ng-runtime/components/input/default/esm2022/text/number/input-number.props.mjs +2 -1
  219. app-ng-runtime/components/input/default/esm2022/text/text/input-text.component.mjs +5 -5
  220. app-ng-runtime/components/input/default/esm2022/text/text/input-text.props.mjs +2 -1
  221. app-ng-runtime/components/input/default/esm2022/textarea/textarea.component.mjs +9 -6
  222. app-ng-runtime/components/input/default/esm2022/textarea/textarea.props.mjs +2 -1
  223. app-ng-runtime/components/input/default/fesm2022/index.mjs +257 -197
  224. app-ng-runtime/components/input/default/fesm2022/index.mjs.map +1 -1
  225. app-ng-runtime/components/input/default/number/number.component.d.ts +1 -0
  226. app-ng-runtime/components/input/default/radioset/radioset.component.d.ts +0 -1
  227. app-ng-runtime/components/input/default/select/select.component.d.ts +4 -4
  228. app-ng-runtime/components/input/default/switch/switch.component.d.ts +0 -2
  229. app-ng-runtime/components/input/default/text/calendar/input-calendar.component.d.ts +1 -0
  230. app-ng-runtime/components/input/default/text/color/input-color.component.d.ts +1 -0
  231. app-ng-runtime/components/input/default/text/email/input-email.component.d.ts +1 -0
  232. app-ng-runtime/components/input/default/text/locale/number-locale.d.ts +1 -0
  233. app-ng-runtime/components/input/default/text/number/input-number.component.d.ts +1 -0
  234. app-ng-runtime/components/input/default/text/text/input-text.component.d.ts +1 -0
  235. app-ng-runtime/components/input/default/textarea/textarea.component.d.ts +4 -2
  236. app-ng-runtime/components/input/epoch/base-date-time.component.d.ts +2 -1
  237. app-ng-runtime/components/input/epoch/bundles/index.umd.js +31 -21
  238. app-ng-runtime/components/input/epoch/date/date.component.d.ts +1 -0
  239. app-ng-runtime/components/input/epoch/date-time/date-time.component.d.ts +2 -1
  240. app-ng-runtime/components/input/epoch/esm2022/base-date-time.component.mjs +10 -6
  241. app-ng-runtime/components/input/epoch/esm2022/date/date.component.mjs +8 -8
  242. app-ng-runtime/components/input/epoch/esm2022/date/date.props.mjs +2 -1
  243. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.component.mjs +12 -9
  244. app-ng-runtime/components/input/epoch/esm2022/date-time/date-time.props.mjs +2 -1
  245. app-ng-runtime/components/input/epoch/esm2022/time/time.component.mjs +7 -7
  246. app-ng-runtime/components/input/epoch/esm2022/time/time.props.mjs +2 -1
  247. app-ng-runtime/components/input/epoch/fesm2022/index.mjs +28 -18
  248. app-ng-runtime/components/input/epoch/fesm2022/index.mjs.map +1 -1
  249. app-ng-runtime/components/input/epoch/time/time.component.d.ts +1 -0
  250. app-ng-runtime/components/input/file-upload/bundles/index.umd.js +241 -112
  251. app-ng-runtime/components/input/file-upload/esm2022/file-upload.component.mjs +238 -115
  252. app-ng-runtime/components/input/file-upload/esm2022/file-upload.props.mjs +7 -1
  253. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs +242 -113
  254. app-ng-runtime/components/input/file-upload/fesm2022/index.mjs.map +1 -1
  255. app-ng-runtime/components/input/file-upload/file-upload.component.d.ts +23 -12
  256. app-ng-runtime/components/input/rating/bundles/index.umd.js +35 -26
  257. app-ng-runtime/components/input/rating/esm2022/rating.component.mjs +37 -26
  258. app-ng-runtime/components/input/rating/esm2022/rating.props.mjs +1 -3
  259. app-ng-runtime/components/input/rating/fesm2022/index.mjs +36 -27
  260. app-ng-runtime/components/input/rating/fesm2022/index.mjs.map +1 -1
  261. app-ng-runtime/components/input/rating/rating.component.d.ts +1 -3
  262. app-ng-runtime/components/input/slider/bundles/index.umd.js +5 -6
  263. app-ng-runtime/components/input/slider/esm2022/slider.component.mjs +6 -8
  264. app-ng-runtime/components/input/slider/esm2022/slider.props.mjs +2 -1
  265. app-ng-runtime/components/input/slider/fesm2022/index.mjs +5 -6
  266. app-ng-runtime/components/input/slider/fesm2022/index.mjs.map +1 -1
  267. app-ng-runtime/components/input/slider/slider.component.d.ts +1 -0
  268. app-ng-runtime/components/navigation/breadcrumb/bundles/index.umd.js +6 -6
  269. app-ng-runtime/components/navigation/breadcrumb/esm2022/breadcrumb.component.mjs +7 -7
  270. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs +6 -6
  271. app-ng-runtime/components/navigation/breadcrumb/fesm2022/index.mjs.map +1 -1
  272. app-ng-runtime/components/navigation/menu/bundles/index.umd.js +10 -8
  273. app-ng-runtime/components/navigation/menu/esm2022/menu.component.mjs +9 -8
  274. app-ng-runtime/components/navigation/menu/esm2022/menu.props.mjs +2 -1
  275. app-ng-runtime/components/navigation/menu/esm2022/nav/nav.component.mjs +2 -2
  276. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs +10 -8
  277. app-ng-runtime/components/navigation/menu/fesm2022/index.mjs.map +1 -1
  278. app-ng-runtime/components/navigation/menu/menu.component.d.ts +1 -0
  279. app-ng-runtime/components/navigation/popover/bundles/index.umd.js +121 -13
  280. app-ng-runtime/components/navigation/popover/esm2022/popover.component.mjs +122 -15
  281. app-ng-runtime/components/navigation/popover/esm2022/popover.props.mjs +2 -1
  282. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs +121 -13
  283. app-ng-runtime/components/navigation/popover/fesm2022/index.mjs.map +1 -1
  284. app-ng-runtime/components/navigation/popover/popover.component.d.ts +15 -3
  285. app-ng-runtime/components/page/default/bundles/index.umd.js +2 -1
  286. app-ng-runtime/components/page/default/esm2022/page.props.mjs +4 -3
  287. app-ng-runtime/components/page/default/fesm2022/index.mjs +2 -1
  288. app-ng-runtime/components/page/default/fesm2022/index.mjs.map +1 -1
  289. app-ng-runtime/components/page/footer/bundles/index.umd.js +2 -1
  290. app-ng-runtime/components/page/footer/esm2022/footer.props.mjs +3 -2
  291. app-ng-runtime/components/page/footer/fesm2022/index.mjs +2 -1
  292. app-ng-runtime/components/page/footer/fesm2022/index.mjs.map +1 -1
  293. app-ng-runtime/components/page/header/bundles/index.umd.js +2 -1
  294. app-ng-runtime/components/page/header/esm2022/header.props.mjs +3 -2
  295. app-ng-runtime/components/page/header/fesm2022/index.mjs +2 -1
  296. app-ng-runtime/components/page/header/fesm2022/index.mjs.map +1 -1
  297. app-ng-runtime/components/page/left-panel/bundles/index.umd.js +4 -7
  298. app-ng-runtime/components/page/left-panel/esm2022/left-panel.directive.mjs +5 -9
  299. app-ng-runtime/components/page/left-panel/esm2022/left-panel.props.mjs +3 -2
  300. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs +6 -9
  301. app-ng-runtime/components/page/left-panel/fesm2022/index.mjs.map +1 -1
  302. app-ng-runtime/components/page/left-panel/left-panel.directive.d.ts +2 -2
  303. app-ng-runtime/components/page/right-panel/bundles/index.umd.js +4 -7
  304. app-ng-runtime/components/page/right-panel/esm2022/right-panel.directive.mjs +5 -9
  305. app-ng-runtime/components/page/right-panel/esm2022/right-panel.props.mjs +3 -2
  306. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs +6 -9
  307. app-ng-runtime/components/page/right-panel/fesm2022/index.mjs.map +1 -1
  308. app-ng-runtime/components/page/right-panel/right-panel.directive.d.ts +2 -2
  309. app-ng-runtime/components/page/top-nav/bundles/index.umd.js +2 -1
  310. app-ng-runtime/components/page/top-nav/esm2022/top-nav.props.mjs +3 -2
  311. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs +2 -1
  312. app-ng-runtime/components/page/top-nav/fesm2022/index.mjs.map +1 -1
  313. app-ng-runtime/core/bundles/index.umd.js +11 -31
  314. app-ng-runtime/core/enums/enums.d.ts +1 -2
  315. app-ng-runtime/core/esm2022/enums/enums.mjs +1 -2
  316. app-ng-runtime/core/esm2022/public_api.mjs +2 -2
  317. app-ng-runtime/core/esm2022/types/types.mjs +1 -4
  318. app-ng-runtime/core/esm2022/utils/build-utils.mjs +7 -12
  319. app-ng-runtime/core/esm2022/utils/utils.mjs +4 -12
  320. app-ng-runtime/core/fesm2022/index.mjs +11 -29
  321. app-ng-runtime/core/fesm2022/index.mjs.map +1 -1
  322. app-ng-runtime/core/public_api.d.ts +1 -1
  323. app-ng-runtime/core/types/types.d.ts +1 -5
  324. app-ng-runtime/core/utils/utils.d.ts +1 -2
  325. app-ng-runtime/mobile/components/device/barcode-scanner/bundles/index.umd.js +2 -1
  326. app-ng-runtime/mobile/components/device/barcode-scanner/esm2022/barcode-scanner.props.mjs +3 -2
  327. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs +2 -1
  328. app-ng-runtime/mobile/components/device/barcode-scanner/fesm2022/index.mjs.map +1 -1
  329. app-ng-runtime/mobile/components/device/camera/bundles/index.umd.js +2 -1
  330. app-ng-runtime/mobile/components/device/camera/esm2022/camera.props.mjs +3 -2
  331. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs +2 -1
  332. app-ng-runtime/mobile/components/device/camera/fesm2022/index.mjs.map +1 -1
  333. app-ng-runtime/mobile/core/bundles/index.umd.js +18 -2
  334. app-ng-runtime/mobile/core/esm2022/native.xhr.mjs +19 -3
  335. app-ng-runtime/mobile/core/fesm2022/index.mjs +18 -2
  336. app-ng-runtime/mobile/core/fesm2022/index.mjs.map +1 -1
  337. app-ng-runtime/package.json +1 -1
  338. app-ng-runtime/runtime/base/bundles/index.umd.js +11 -300
  339. app-ng-runtime/runtime/base/components/app-component/app.component.d.ts +2 -3
  340. app-ng-runtime/runtime/base/esm2022/components/app-component/app.component.mjs +5 -5
  341. app-ng-runtime/runtime/base/esm2022/guards/can-deactivate-page.guard.mjs +5 -4
  342. app-ng-runtime/runtime/base/esm2022/public_api.mjs +1 -2
  343. app-ng-runtime/runtime/base/esm2022/runtime-base.module.mjs +1 -6
  344. app-ng-runtime/runtime/base/esm2022/services/i18n.service.mjs +2 -2
  345. app-ng-runtime/runtime/base/esm2022/types/types.mjs +1 -4
  346. app-ng-runtime/runtime/base/fesm2022/index.mjs +10 -298
  347. app-ng-runtime/runtime/base/fesm2022/index.mjs.map +1 -1
  348. app-ng-runtime/runtime/base/guards/can-deactivate-page.guard.d.ts +2 -1
  349. app-ng-runtime/runtime/base/public_api.d.ts +0 -1
  350. app-ng-runtime/runtime/base/runtime-base.module.d.ts +8 -9
  351. app-ng-runtime/runtime/base/types/types.d.ts +1 -5
  352. app-ng-runtime/runtime/dynamic/bundles/index.umd.js +13 -49
  353. app-ng-runtime/runtime/dynamic/esm2022/app/app.module.mjs +3 -8
  354. app-ng-runtime/runtime/dynamic/esm2022/app/services/component-ref-provider.service.mjs +7 -23
  355. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs +11 -50
  356. app-ng-runtime/runtime/dynamic/fesm2022/index.mjs.map +1 -1
  357. app-ng-runtime/scripts/@wavemaker/nvd3/build/nv.d3.min.js +1 -1
  358. app-ng-runtime/scripts/datatable/datatable.js +38 -34
  359. app-ng-runtime/scripts/summernote/dist/summernote-lite.min.js +2 -3
  360. app-ng-runtime/transpiler/bundles/index.umd.js +0 -5
  361. app-ng-runtime/transpiler/esm2022/build.mjs +1 -4
  362. app-ng-runtime/transpiler/esm2022/imports.mjs +1 -3
  363. app-ng-runtime/transpiler/fesm2022/index.mjs +0 -5
  364. app-ng-runtime/transpiler/fesm2022/index.mjs.map +1 -1
  365. app-ng-runtime/variables/bundles/index.umd.js +34 -16
  366. app-ng-runtime/variables/esm2022/manager/variable/web-socket-variable.manager.mjs +35 -17
  367. app-ng-runtime/variables/fesm2022/index.mjs +34 -16
  368. app-ng-runtime/variables/fesm2022/index.mjs.map +1 -1
  369. app-ng-runtime/variables/manager/variable/web-socket-variable.manager.d.ts +0 -4
  370. app-ng-runtime/build-task/advanced/custom-widget-container/custom-widget-container.build.d.ts +0 -2
  371. app-ng-runtime/build-task/advanced/custom-widget-wrapper/custom-widget-wrapper.build.d.ts +0 -2
  372. app-ng-runtime/build-task/esm2022/advanced/custom-widget-container/custom-widget-container.build.mjs +0 -15
  373. app-ng-runtime/build-task/esm2022/advanced/custom-widget-wrapper/custom-widget-wrapper.build.mjs +0 -26
  374. app-ng-runtime/components/advanced/custom/.npmignore +0 -2
  375. app-ng-runtime/components/advanced/custom/bundles/index.umd.js +0 -232
  376. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget-container.directive.d.ts +0 -19
  377. app-ng-runtime/components/advanced/custom/custom-widget-container/custom-widget.props.d.ts +0 -2
  378. app-ng-runtime/components/advanced/custom/custom-widget-prop.d.ts +0 -1
  379. app-ng-runtime/components/advanced/custom/custom-widget.directive.d.ts +0 -19
  380. app-ng-runtime/components/advanced/custom/custom-widget.module.d.ts +0 -10
  381. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget-container.directive.mjs +0 -102
  382. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-container/custom-widget.props.mjs +0 -12
  383. app-ng-runtime/components/advanced/custom/esm2022/custom-widget-prop.mjs +0 -8
  384. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.directive.mjs +0 -68
  385. app-ng-runtime/components/advanced/custom/esm2022/custom-widget.module.mjs +0 -32
  386. app-ng-runtime/components/advanced/custom/esm2022/index.mjs +0 -5
  387. app-ng-runtime/components/advanced/custom/esm2022/public_api.mjs +0 -4
  388. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs +0 -215
  389. app-ng-runtime/components/advanced/custom/fesm2022/index.mjs.map +0 -1
  390. app-ng-runtime/components/advanced/custom/index.d.ts +0 -5
  391. app-ng-runtime/components/advanced/custom/package.json +0 -23
  392. app-ng-runtime/components/advanced/custom/public_api.d.ts +0 -3
  393. app-ng-runtime/components/base/esm2022/widgets/common/base/custom-widget-container.directive.mjs +0 -39
  394. app-ng-runtime/components/base/widgets/common/base/custom-widget-container.directive.d.ts +0 -14
  395. app-ng-runtime/runtime/base/components/base-custom-widget.component.d.ts +0 -73
  396. app-ng-runtime/runtime/base/esm2022/components/base-custom-widget.component.mjs +0 -294
  397. app-ng-runtime/runtime/dynamic/app/services/customwidget-config-provider.service.d.ts +0 -8
  398. app-ng-runtime/runtime/dynamic/esm2022/app/services/customwidget-config-provider.service.mjs +0 -22
@@ -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],
@@ -41,21 +42,21 @@ const registerProps$e = () => {
41
42
  const _c0$c = ["wmButton", ""];
42
43
  const _c1$b = [[["", 8, "caret"]]];
43
44
  const _c2$8 = [".caret"];
44
- const _c3$4 = (a0, a1, a2) => ({ width: a0, height: a1, margin: a2 });
45
- const _c4$3 = (a0, a1, a2, a3) => ({ width: a0, height: a1, margin: a2, fontSize: a3 });
45
+ const _c3$3 = (a0, a1, a2) => ({ width: a0, height: a1, margin: a2 });
46
+ const _c4$2 = (a0, a1, a2, a3) => ({ width: a0, height: a1, margin: a2, fontSize: a3 });
46
47
  function ButtonComponent_img_0_Template(rf, ctx) { if (rf & 1) {
47
48
  i0.ɵɵelement(0, "img", 5);
48
49
  i0.ɵɵpipe(1, "image");
49
50
  } if (rf & 2) {
50
51
  const ctx_r0 = i0.ɵɵnextContext();
51
- i0.ɵɵproperty("src", i0.ɵɵpipeBind1(1, 2, ctx_r0.iconurl), i0.ɵɵsanitizeUrl)("ngStyle", i0.ɵɵpureFunction3(4, _c3$4, ctx_r0.iconwidth, ctx_r0.iconheight, ctx_r0.iconmargin));
52
+ i0.ɵɵproperty("src", i0.ɵɵpipeBind1(1, 2, ctx_r0.iconurl), i0.ɵɵsanitizeUrl)("ngStyle", i0.ɵɵpureFunction3(4, _c3$3, ctx_r0.iconwidth, ctx_r0.iconheight, ctx_r0.iconmargin));
52
53
  } }
53
54
  function ButtonComponent_i_1_Template(rf, ctx) { if (rf & 1) {
54
55
  i0.ɵɵelement(0, "i", 6);
55
56
  } if (rf & 2) {
56
57
  const ctx_r0 = i0.ɵɵnextContext();
57
58
  i0.ɵɵclassMapInterpolate1("app-icon ", ctx_r0.iconclass, "");
58
- i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction4(4, _c4$3, ctx_r0.iconwidth, ctx_r0.iconheight, ctx_r0.iconmargin, ctx_r0.iconwidth));
59
+ i0.ɵɵproperty("ngStyle", i0.ɵɵpureFunction4(4, _c4$2, ctx_r0.iconwidth, ctx_r0.iconheight, ctx_r0.iconmargin, ctx_r0.iconwidth));
59
60
  } }
60
61
  function ButtonComponent_span_2_Template(rf, ctx) { if (rf & 1) {
61
62
  i0.ɵɵelementStart(0, "span", 7);
@@ -369,6 +370,7 @@ const checkboxProps = new Map([
369
370
  ['datavalue', PROP_STRING],
370
371
  ['disabled', PROP_BOOLEAN],
371
372
  ['hint', PROP_STRING],
373
+ ['arialabel', PROP_STRING],
372
374
  ['name', PROP_STRING],
373
375
  ['readonly', PROP_BOOLEAN],
374
376
  ['required', PROP_BOOLEAN],
@@ -386,7 +388,7 @@ const registerProps$c = () => {
386
388
  const _c0$b = ["checkbox"];
387
389
  const _c1$a = ["wmCheckbox", ""];
388
390
  const _c2$7 = (a0, a1, a2) => ({ "unchecked": a0, "disabled": a1, "required": a2 });
389
- const _c3$3 = () => ({ standalone: true });
391
+ const _c3$2 = () => ({ standalone: true });
390
392
  const DEFAULT_CLS$4 = 'app-checkbox checkbox';
391
393
  const WIDGET_CONFIG$c = {
392
394
  widgetType: 'wm-checkbox',
@@ -496,7 +498,7 @@ class CheckboxComponent extends BaseFormCustomComponent {
496
498
  provideAs(CheckboxComponent, NG_VALUE_ACCESSOR, true),
497
499
  provideAs(CheckboxComponent, NG_VALIDATORS, true),
498
500
  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) {
501
+ ]), 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
502
  const _r1 = i0.ɵɵgetCurrentView();
501
503
  i0.ɵɵelementStart(0, "label", 1)(1, "input", 2, 0);
502
504
  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 +508,11 @@ class CheckboxComponent extends BaseFormCustomComponent {
506
508
  i0.ɵɵelementEnd();
507
509
  i0.ɵɵelement(5, "input", 5);
508
510
  } if (rf & 2) {
509
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(14, _c2$7, !ctx.proxyModel, ctx.disabled || ctx.readonly, ctx.required && ctx._caption));
511
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction3(13, _c2$7, !ctx.proxyModel, ctx.disabled || ctx.readonly, ctx.required && ctx._caption));
510
512
  i0.ɵɵadvance();
511
513
  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);
514
+ i0.ɵɵproperty("ngModelOptions", i0.ɵɵpureFunction0(17, _c3$2))("readonly", ctx.readonly)("required", ctx.required)("disabled", ctx.disabled || ctx.readonly)("tabindex", ctx.tabindex);
515
+ i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.arialabel)("accesskey", ctx.shortcutkey);
514
516
  i0.ɵɵadvance(2);
515
517
  i0.ɵɵproperty("innerHtml", ctx._caption, i0.ɵɵsanitizeHtml);
516
518
  i0.ɵɵadvance(2);
@@ -523,7 +525,7 @@ class CheckboxComponent extends BaseFormCustomComponent {
523
525
  provideAs(CheckboxComponent, NG_VALUE_ACCESSOR, true),
524
526
  provideAs(CheckboxComponent, NG_VALIDATORS, true),
525
527
  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" }]
528
+ ], 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
529
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
528
530
  type: Attribute,
529
531
  args: ['checkedvalue']
@@ -884,8 +886,8 @@ const registerProps$b = () => {
884
886
  const _c0$a = ["wmCheckboxset", ""];
885
887
  const _c1$9 = (a0, a1) => ["checkbox", "app-checkbox", a0, a1];
886
888
  const _c2$6 = a0 => ({ "disabled": a0 });
887
- const _c3$2 = a0 => ({ "collapsible-content": a0 });
888
- const _c4$2 = (a0, a1) => ["checkbox", "app-checkbox", "group-list-item", a0, a1];
889
+ const _c3$1 = a0 => ({ "collapsible-content": a0 });
890
+ const _c4$1 = (a0, a1) => ["checkbox", "app-checkbox", "group-list-item", a0, a1];
889
891
  function CheckboxsetComponent_ng_template_0_li_0_label_1_Template(rf, ctx) { if (rf & 1) {
890
892
  i0.ɵɵelementStart(0, "label", 8);
891
893
  i0.ɵɵelement(1, "input", 9)(2, "span", 10);
@@ -895,10 +897,10 @@ function CheckboxsetComponent_ng_template_0_li_0_label_1_Template(rf, ctx) { if
895
897
  const item_r2 = ctx_r3.$implicit;
896
898
  const i_r5 = ctx_r3.index;
897
899
  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);
900
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c2$6, ctx_r2.disabled || ctx_r2.readonly))("title", item_r2.label);
899
901
  i0.ɵɵadvance();
900
902
  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);
903
+ i0.ɵɵattribute("data-attr-index", i_r5);
902
904
  i0.ɵɵadvance();
903
905
  i0.ɵɵproperty("textContent", item_r2.label);
904
906
  } }
@@ -911,16 +913,16 @@ function CheckboxsetComponent_ng_template_0_li_0_label_2_Template(rf, ctx) { if
911
913
  const item_r2 = ctx_r3.$implicit;
912
914
  const i_r5 = ctx_r3.index;
913
915
  const ctx_r2 = i0.ɵɵnextContext(2);
914
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c2$6, ctx_r2.disabled || ctx_r2.readonly));
916
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$6, ctx_r2.disabled || ctx_r2.readonly));
915
917
  i0.ɵɵadvance();
916
918
  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);
919
+ i0.ɵɵattribute("data-attr-index", i_r5);
918
920
  } }
919
921
  function CheckboxsetComponent_ng_template_0_li_0_Template(rf, ctx) { if (rf & 1) {
920
922
  const _r1 = i0.ɵɵgetCurrentView();
921
923
  i0.ɵɵelementStart(0, "li", 5);
922
924
  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);
925
+ 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
926
  i0.ɵɵelementEnd();
925
927
  } if (rf & 2) {
926
928
  const item_r2 = ctx.$implicit;
@@ -955,7 +957,7 @@ function CheckboxsetComponent_ng_template_3_li_0_span_7_Template(rf, ctx) { if (
955
957
  } }
956
958
  function CheckboxsetComponent_ng_template_3_li_0_li_8_label_1_Template(rf, ctx) { if (rf & 1) {
957
959
  i0.ɵɵelementStart(0, "label", 8);
958
- i0.ɵɵelement(1, "input", 26)(2, "span", 10);
960
+ i0.ɵɵelement(1, "input", 9)(2, "span", 10);
959
961
  i0.ɵɵelementEnd();
960
962
  } if (rf & 2) {
961
963
  const ctx_r9 = i0.ɵɵnextContext();
@@ -971,7 +973,7 @@ function CheckboxsetComponent_ng_template_3_li_0_li_8_label_1_Template(rf, ctx)
971
973
  } }
972
974
  function CheckboxsetComponent_ng_template_3_li_0_li_8_label_2_Template(rf, ctx) { if (rf & 1) {
973
975
  i0.ɵɵelementStart(0, "label", 11);
974
- i0.ɵɵelement(1, "input", 26)(2, "span", 27);
976
+ i0.ɵɵelement(1, "input", 9)(2, "span", 26);
975
977
  i0.ɵɵelementEnd();
976
978
  } if (rf & 2) {
977
979
  const ctx_r9 = i0.ɵɵnextContext();
@@ -993,7 +995,7 @@ function CheckboxsetComponent_ng_template_3_li_0_li_8_Template(rf, ctx) { if (rf
993
995
  const item_r9 = ctx.$implicit;
994
996
  const ctx_r2 = i0.ɵɵnextContext(3);
995
997
  i0.ɵɵclassProp("active", item_r9.selected);
996
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(7, _c4$2, ctx_r2.itemclass, ctx_r2.itemsPerRowClass))("wmItemTemplate", ctx_r2.content)("userComponentParams", item_r9);
998
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(7, _c4$1, ctx_r2.itemclass, ctx_r2.itemsPerRowClass))("wmItemTemplate", ctx_r2.content)("userComponentParams", item_r9);
997
999
  i0.ɵɵadvance();
998
1000
  i0.ɵɵproperty("ngIf", !ctx_r2.content);
999
1001
  i0.ɵɵadvance();
@@ -1012,10 +1014,15 @@ function CheckboxsetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1)
1012
1014
  i0.ɵɵelementEnd()();
1013
1015
  } if (rf & 2) {
1014
1016
  const groupObj_r7 = ctx.$implicit;
1017
+ const groupindex_r12 = ctx.index;
1015
1018
  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);
1019
+ i0.ɵɵadvance();
1020
+ i0.ɵɵattribute("aria-labelledby", "group_" + ctx_r2.widgetId + "_" + groupindex_r12);
1021
+ i0.ɵɵadvance();
1022
+ i0.ɵɵproperty("id", "group_" + ctx_r2.widgetId + "_" + groupindex_r12)("title", groupObj_r7.key)("ngClass", i0.ɵɵpureFunction1(9, _c3$1, ctx_r2.collapsible));
1023
+ i0.ɵɵadvance();
1024
+ i0.ɵɵattribute("aria-label", "Group " + groupObj_r7.key);
1025
+ i0.ɵɵadvance();
1019
1026
  i0.ɵɵtextInterpolate1("", groupObj_r7.key, " ");
1020
1027
  i0.ɵɵadvance(2);
1021
1028
  i0.ɵɵproperty("ngIf", ctx_r2.collapsible);
@@ -1025,7 +1032,7 @@ function CheckboxsetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1)
1025
1032
  i0.ɵɵproperty("ngForOf", groupObj_r7.data);
1026
1033
  } }
1027
1034
  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);
1035
+ i0.ɵɵtemplate(0, CheckboxsetComponent_ng_template_3_li_0_Template, 9, 11, "li", 14);
1029
1036
  } if (rf & 2) {
1030
1037
  const ctx_r2 = i0.ɵɵnextContext();
1031
1038
  i0.ɵɵproperty("ngForOf", ctx_r2.groupedData);
@@ -1040,12 +1047,6 @@ class CheckboxsetComponent extends DatasetAwareFormComponent {
1040
1047
  styler(this.nativeElement, this);
1041
1048
  this.multiple = true;
1042
1049
  }
1043
- triggerInvokeOnChange(keys, $event) {
1044
- this.modelByKey = keys;
1045
- this.invokeOnTouched();
1046
- // invoke on datavalue change.
1047
- this.invokeOnChange(this.datavalue, $event || {}, true);
1048
- }
1049
1050
  onCheckboxLabelClick($event, key) {
1050
1051
  if (!$($event.target).is('input')) {
1051
1052
  return;
@@ -1057,7 +1058,10 @@ class CheckboxsetComponent extends DatasetAwareFormComponent {
1057
1058
  // @ts-ignore
1058
1059
  keys.push($el.value);
1059
1060
  });
1060
- this.triggerInvokeOnChange(keys, $event);
1061
+ this.modelByKey = keys;
1062
+ this.invokeOnTouched();
1063
+ // invoke on datavalue change.
1064
+ this.invokeOnChange(this.datavalue, $event || {}, true);
1061
1065
  }
1062
1066
  // change and blur events are added from the template
1063
1067
  handleEvent(node, eventName, callback, locals) {
@@ -1100,13 +1104,13 @@ class CheckboxsetComponent extends DatasetAwareFormComponent {
1100
1104
  provideAs(CheckboxsetComponent, NG_VALUE_ACCESSOR, true),
1101
1105
  provideAs(CheckboxsetComponent, NG_VALIDATORS, true),
1102
1106
  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) {
1107
+ ]), 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
1108
  i0.ɵɵtemplate(0, CheckboxsetComponent_ng_template_0_Template, 1, 1, "ng-template", 1);
1105
1109
  i0.ɵɵelement(1, "input", 2);
1106
1110
  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
1111
  } if (rf & 2) {
1108
- const groupedListTemplate_r12 = i0.ɵɵreference(4);
1109
- i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r12);
1112
+ const groupedListTemplate_r13 = i0.ɵɵreference(4);
1113
+ i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r13);
1110
1114
  i0.ɵɵadvance();
1111
1115
  i0.ɵɵproperty("disabled", ctx.disabled || ctx.readonly);
1112
1116
  i0.ɵɵadvance();
@@ -1119,7 +1123,7 @@ class CheckboxsetComponent extends DatasetAwareFormComponent {
1119
1123
  provideAs(CheckboxsetComponent, NG_VALUE_ACCESSOR, true),
1120
1124
  provideAs(CheckboxsetComponent, NG_VALIDATORS, true),
1121
1125
  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" }]
1126
+ ], 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
1127
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
1124
1128
  type: Inject,
1125
1129
  args: ['EXPLICIT_CONTEXT']
@@ -1225,6 +1229,7 @@ const numberProps = new Map([
1225
1229
  ['datavalue', PROP_STRING],
1226
1230
  ['disabled', PROP_BOOLEAN],
1227
1231
  ['hint', PROP_STRING],
1232
+ ['arialabel', PROP_STRING],
1228
1233
  ['localefilter', PROP_STRING],
1229
1234
  ['minvalue', PROP_NUMBER],
1230
1235
  ['maxvalue', PROP_NUMBER],
@@ -1241,6 +1246,7 @@ const numberProps = new Map([
1241
1246
  ['trailingzero', { value: false, ...PROP_BOOLEAN }],
1242
1247
  ['updateon', PROP_STRING],
1243
1248
  ['inputmode', { value: 'natural', ...PROP_STRING }],
1249
+ ['decimalplaces', PROP_NUMBER],
1244
1250
  ['conditionalclass', PROP_ANY],
1245
1251
  ['conditionalstyle', PROP_ANY]
1246
1252
  ]);
@@ -1259,9 +1265,6 @@ class BaseInput extends BaseFormCustomComponent {
1259
1265
  /* WMS-18269 | Update Angular about the required attr value change */
1260
1266
  this._onChange(this.datavalue);
1261
1267
  }
1262
- if (key === 'updateon') {
1263
- this.ngModelOptions.updateOn = nv === 'default' ? 'change' : ov;
1264
- }
1265
1268
  if (key === 'class') {
1266
1269
  if (this.inputEl.nativeElement) {
1267
1270
  switchClass(this.inputEl.nativeElement, nv, ov);
@@ -1360,7 +1363,7 @@ let NumberLocale = class NumberLocale extends BaseInput {
1360
1363
  const prevDataValue = this.prevDatavalue;
1361
1364
  this.displayValue = input.value = this.proxyModel = null;
1362
1365
  this.resetValidations();
1363
- if (prevDataValue && !this.isDefaultQuery) {
1366
+ if ((prevDataValue || prevDataValue == 0) && !this.isDefaultQuery) {
1364
1367
  this.handleChange(value);
1365
1368
  this._onChange();
1366
1369
  }
@@ -1370,8 +1373,27 @@ let NumberLocale = class NumberLocale extends BaseInput {
1370
1373
  if (this.isDefaultQuery) {
1371
1374
  const isLocalizedNumber = isString(value) && includes(value, this.DECIMAL);
1372
1375
  const parts = isLocalizedNumber ? value.split(this.DECIMAL) : isString(value) && value.split('.');
1373
- this.decimalValue = parts[1] || '';
1374
- value = isLocalizedNumber ? value : this.transformNumber(value);
1376
+ let decimalPlacesAttrVal = this.getAttr('decimalplaces');
1377
+ const decimalplaces = decimalPlacesAttrVal !== '' && decimalPlacesAttrVal !== undefined ? Number(decimalPlacesAttrVal) : NaN;
1378
+ if (this.inputmode === INPUTMODE.NATURAL && !isNaN(decimalplaces)) {
1379
+ if (decimalplaces === 0) {
1380
+ this.decimalValue = '';
1381
+ value = isLocalizedNumber ? parts[0] : this.transformNumber(parts[0]);
1382
+ }
1383
+ if (decimalplaces > 0) {
1384
+ this.decimalValue = parts[1] && parts[1].substring(0, decimalplaces) || '';
1385
+ if (isLocalizedNumber) {
1386
+ value = this.decimalValue.length ? `${parts[0]}${this.DECIMAL}${this.decimalValue}` : parts[0];
1387
+ }
1388
+ else {
1389
+ value = Number.parseFloat(String(value)).toFixed(decimalplaces);
1390
+ }
1391
+ }
1392
+ }
1393
+ else {
1394
+ this.decimalValue = parts[1] || '';
1395
+ value = isLocalizedNumber ? value : this.transformNumber(value);
1396
+ }
1375
1397
  }
1376
1398
  const numberReg = /\d/;
1377
1399
  const strVal = value.toString();
@@ -1420,8 +1442,14 @@ let NumberLocale = class NumberLocale extends BaseInput {
1420
1442
  */
1421
1443
  isValid(val) {
1422
1444
  // 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))) {
1445
+ let invalidDecimalPlaces = false;
1446
+ if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
1447
+ invalidDecimalPlaces = this.countDecimals(val) > this.decimalplaces;
1448
+ }
1449
+ else if (!Number.isInteger(this.step) && this.countDecimals(val) > this.countDecimals(this.step)) {
1450
+ invalidDecimalPlaces = true;
1451
+ }
1452
+ if (isNaN(val) || !isFinite(val) || invalidDecimalPlaces) {
1425
1453
  this.isInvalidNumber = true;
1426
1454
  return false;
1427
1455
  }
@@ -1530,6 +1558,9 @@ let NumberLocale = class NumberLocale extends BaseInput {
1530
1558
  }
1531
1559
  // This function returns the step length set in the studio
1532
1560
  stepLength() {
1561
+ if (this.inputmode === 'INPUTMODE.NATURAL' && !isNaN(this.decimalplaces) && this.decimalplaces >= 0) {
1562
+ return this.decimalplaces;
1563
+ }
1533
1564
  const stepLen = this.step.toString().split('.');
1534
1565
  if (stepLen.length === 1) {
1535
1566
  return;
@@ -1612,11 +1643,10 @@ let NumberLocale = class NumberLocale extends BaseInput {
1612
1643
  * @returns {number}
1613
1644
  */
1614
1645
  countDecimals(value) {
1615
- if ((value % 1) !== 0) {
1616
- const decimalValue = value.toString().split('.')[1];
1617
- return decimalValue && decimalValue.length;
1618
- }
1619
- return 0;
1646
+ const valueStr = value.toString();
1647
+ const isLocalizedNumber = includes(valueStr, this.DECIMAL);
1648
+ const parts = isLocalizedNumber ? valueStr.split(this.DECIMAL) : valueStr.split('.');
1649
+ return parts[1] ? parts[1].length : 0;
1620
1650
  }
1621
1651
  /**
1622
1652
  * handles the arrow press event. Increases or decreases the number. triggered fom the template
@@ -1718,13 +1748,23 @@ let NumberLocale = class NumberLocale extends BaseInput {
1718
1748
  }
1719
1749
  // validates entering of decimal values only when user provides decimal limit(i.e step contains decimal values).
1720
1750
  // 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
- }
1751
+ // if (!skipStepValidation && inputValue && this.countDecimals(this.step) && (this.countDecimals(inputValue) >= this.countDecimals(this.step)) && $event.target.selectionStart >= inputValue.length - 1) {
1752
+ // return false;
1753
+ // }
1724
1754
  // validates if user entered an invalid character.
1725
1755
  if (!validity.test($event.key)) {
1726
1756
  return false;
1727
1757
  }
1758
+ if (this.inputmode === INPUTMODE.NATURAL && !isNaN(this.decimalplaces)) {
1759
+ if (this.decimalplaces === 0 && this.DECIMAL === $event.key) {
1760
+ return false;
1761
+ }
1762
+ const parts = includes(inputValue, this.DECIMAL) ? inputValue.split(this.DECIMAL) : inputValue.split('.');
1763
+ const isCursorPositionAtDecimalPlace = $event.target.selectionStart > parts[0].length;
1764
+ if (this.decimalplaces > 0 && this.countDecimals(inputValue) >= this.decimalplaces && isCursorPositionAtDecimalPlace) {
1765
+ return false;
1766
+ }
1767
+ }
1728
1768
  // comma cannot be entered consecutively
1729
1769
  if (includes(inputValue, ',') && inputValue[inputValue.length - 1] === ',' && $event.key === ',') {
1730
1770
  return false;
@@ -1803,14 +1843,14 @@ class NumberComponent extends NumberLocale {
1803
1843
  provideAs(NumberComponent, NG_VALUE_ACCESSOR, true),
1804
1844
  provideAs(NumberComponent, NG_VALIDATORS, true),
1805
1845
  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) {
1846
+ ]), 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
1847
  const _r1 = i0.ɵɵgetCurrentView();
1808
1848
  i0.ɵɵelementStart(0, "input", 1, 0);
1809
1849
  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
1850
  i0.ɵɵelementEnd();
1811
1851
  } if (rf & 2) {
1812
1852
  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);
1853
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
1814
1854
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.PatternValidator, i2$1.NgModel], encapsulation: 2 }); }
1815
1855
  }
1816
1856
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NumberComponent, [{
@@ -1819,7 +1859,7 @@ class NumberComponent extends NumberLocale {
1819
1859
  provideAs(NumberComponent, NG_VALUE_ACCESSOR, true),
1820
1860
  provideAs(NumberComponent, NG_VALIDATORS, true),
1821
1861
  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" }]
1862
+ ], 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
1863
  }], () => [{ type: i0.Injector }, { type: i1$1.AbstractI18nService }, { type: i2.TrailingZeroDecimalPipe }, { type: undefined, decorators: [{
1824
1864
  type: Inject,
1825
1865
  args: ['EXPLICIT_CONTEXT']
@@ -1870,8 +1910,8 @@ const registerProps$8 = () => {
1870
1910
  const _c0$8 = ["wmRadioset", ""];
1871
1911
  const _c1$7 = (a0, a1) => ["radio", "app-radio", a0, a1];
1872
1912
  const _c2$5 = a0 => ({ "disabled": a0 });
1873
- const _c3$1 = a0 => ({ "collapsible-content": a0 });
1874
- const _c4$1 = (a0, a1) => ["radio", "app-radio", "group-list-item", a0, a1];
1913
+ const _c3 = a0 => ({ "collapsible-content": a0 });
1914
+ const _c4 = (a0, a1) => ["radio", "app-radio", "group-list-item", a0, a1];
1875
1915
  function RadiosetComponent_ng_template_0_li_0_label_1_Template(rf, ctx) { if (rf & 1) {
1876
1916
  i0.ɵɵelementStart(0, "label", 7);
1877
1917
  i0.ɵɵelement(1, "input", 8)(2, "span", 9);
@@ -1881,10 +1921,10 @@ function RadiosetComponent_ng_template_0_li_0_label_1_Template(rf, ctx) { if (rf
1881
1921
  const item_r2 = ctx_r3.$implicit;
1882
1922
  const i_r5 = ctx_r3.index;
1883
1923
  const ctx_r2 = i0.ɵɵnextContext(2);
1884
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(10, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1924
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1885
1925
  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);
1926
+ 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);
1927
+ i0.ɵɵattribute("data-attr-index", i_r5);
1888
1928
  i0.ɵɵadvance();
1889
1929
  i0.ɵɵproperty("textContent", item_r2.label);
1890
1930
  } }
@@ -1897,16 +1937,16 @@ function RadiosetComponent_ng_template_0_li_0_label_2_Template(rf, ctx) { if (rf
1897
1937
  const item_r2 = ctx_r3.$implicit;
1898
1938
  const i_r5 = ctx_r3.index;
1899
1939
  const ctx_r2 = i0.ɵɵnextContext(2);
1900
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1940
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1901
1941
  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);
1942
+ 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);
1943
+ i0.ɵɵattribute("data-attr-index", i_r5);
1904
1944
  } }
1905
1945
  function RadiosetComponent_ng_template_0_li_0_Template(rf, ctx) { if (rf & 1) {
1906
1946
  const _r1 = i0.ɵɵgetCurrentView();
1907
1947
  i0.ɵɵelementStart(0, "li", 5);
1908
1948
  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);
1949
+ 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
1950
  i0.ɵɵelementEnd();
1911
1951
  } if (rf & 2) {
1912
1952
  const item_r2 = ctx.$implicit;
@@ -1941,45 +1981,45 @@ function RadiosetComponent_ng_template_3_li_0_span_7_Template(rf, ctx) { if (rf
1941
1981
  } }
1942
1982
  function RadiosetComponent_ng_template_3_li_0_li_8_label_1_Template(rf, ctx) { if (rf & 1) {
1943
1983
  i0.ɵɵelementStart(0, "label", 7);
1944
- i0.ɵɵelement(1, "input", 8)(2, "span", 9);
1984
+ i0.ɵɵelement(1, "input", 24)(2, "span", 9);
1945
1985
  i0.ɵɵelementEnd();
1946
1986
  } if (rf & 2) {
1947
1987
  const ctx_r9 = i0.ɵɵnextContext();
1948
1988
  const item_r9 = ctx_r9.$implicit;
1949
1989
  const i_r11 = ctx_r9.index;
1950
1990
  const ctx_r2 = i0.ɵɵnextContext(3);
1951
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(9, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1991
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1952
1992
  i0.ɵɵadvance();
1953
1993
  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);
1994
+ i0.ɵɵattribute("data-attr-index", i_r11);
1955
1995
  i0.ɵɵadvance();
1956
1996
  i0.ɵɵproperty("textContent", item_r9.label);
1957
1997
  } }
1958
1998
  function RadiosetComponent_ng_template_3_li_0_li_8_label_2_Template(rf, ctx) { if (rf & 1) {
1959
1999
  i0.ɵɵelementStart(0, "label", 7);
1960
- i0.ɵɵelement(1, "input", 8)(2, "span", 10);
2000
+ i0.ɵɵelement(1, "input", 24)(2, "span", 10);
1961
2001
  i0.ɵɵelementEnd();
1962
2002
  } if (rf & 2) {
1963
2003
  const ctx_r9 = i0.ɵɵnextContext();
1964
2004
  const item_r9 = ctx_r9.$implicit;
1965
2005
  const i_r11 = ctx_r9.index;
1966
2006
  const ctx_r2 = i0.ɵɵnextContext(3);
1967
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(8, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
2007
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c2$5, ctx_r2.disabled || ctx_r2.readonly));
1968
2008
  i0.ɵɵadvance();
1969
2009
  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);
2010
+ i0.ɵɵattribute("data-attr-index", i_r11);
1971
2011
  } }
1972
2012
  function RadiosetComponent_ng_template_3_li_0_li_8_Template(rf, ctx) { if (rf & 1) {
1973
2013
  const _r8 = i0.ɵɵgetCurrentView();
1974
2014
  i0.ɵɵelementStart(0, "li", 23);
1975
2015
  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);
2016
+ 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
2017
  i0.ɵɵelementEnd();
1978
2018
  } if (rf & 2) {
1979
2019
  const item_r9 = ctx.$implicit;
1980
2020
  const ctx_r2 = i0.ɵɵnextContext(3);
1981
2021
  i0.ɵɵclassProp("active", item_r9.selected);
1982
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(7, _c4$1, ctx_r2.itemclass, ctx_r2.itemsPerRowClass))("wmItemTemplate", ctx_r2.content)("userComponentParams", item_r9);
2022
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction2(7, _c4, ctx_r2.itemclass, ctx_r2.itemsPerRowClass))("wmItemTemplate", ctx_r2.content)("userComponentParams", item_r9);
1983
2023
  i0.ɵɵadvance();
1984
2024
  i0.ɵɵproperty("ngIf", !ctx_r2.content);
1985
2025
  i0.ɵɵadvance();
@@ -1998,10 +2038,15 @@ function RadiosetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1) {
1998
2038
  i0.ɵɵelementEnd()();
1999
2039
  } if (rf & 2) {
2000
2040
  const groupObj_r7 = ctx.$implicit;
2041
+ const groupindex_r12 = ctx.index;
2001
2042
  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);
2043
+ i0.ɵɵadvance();
2044
+ i0.ɵɵattribute("aria-labelledby", "group_" + ctx_r2.widgetId + "_" + groupindex_r12);
2045
+ i0.ɵɵadvance();
2046
+ i0.ɵɵproperty("id", "group_" + ctx_r2.widgetId + "_" + groupindex_r12)("title", groupObj_r7.key)("ngClass", i0.ɵɵpureFunction1(9, _c3, ctx_r2.collapsible));
2047
+ i0.ɵɵadvance();
2048
+ i0.ɵɵattribute("aria-label", "Group " + groupObj_r7.key);
2049
+ i0.ɵɵadvance();
2005
2050
  i0.ɵɵtextInterpolate1("", groupObj_r7.key, " ");
2006
2051
  i0.ɵɵadvance(2);
2007
2052
  i0.ɵɵproperty("ngIf", ctx_r2.collapsible);
@@ -2011,7 +2056,7 @@ function RadiosetComponent_ng_template_3_li_0_Template(rf, ctx) { if (rf & 1) {
2011
2056
  i0.ɵɵproperty("ngForOf", groupObj_r7.data);
2012
2057
  } }
2013
2058
  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);
2059
+ i0.ɵɵtemplate(0, RadiosetComponent_ng_template_3_li_0_Template, 9, 11, "li", 12);
2015
2060
  } if (rf & 2) {
2016
2061
  const ctx_r2 = i0.ɵɵnextContext();
2017
2062
  i0.ɵɵproperty("ngForOf", ctx_r2.groupedData);
@@ -2026,12 +2071,6 @@ class RadiosetComponent extends DatasetAwareFormComponent {
2026
2071
  styler(this.nativeElement, this);
2027
2072
  this.multiple = false;
2028
2073
  }
2029
- triggerInvokeOnChange(key, $event) {
2030
- this.modelByKey = key;
2031
- this.invokeOnTouched();
2032
- // invoke on datavalue change.
2033
- this.invokeOnChange(this.datavalue, $event || {}, true);
2034
- }
2035
2074
  /**
2036
2075
  * On click of the option, update the datavalue
2037
2076
  */
@@ -2039,7 +2078,10 @@ class RadiosetComponent extends DatasetAwareFormComponent {
2039
2078
  if (!$($event.target).is('input')) {
2040
2079
  return;
2041
2080
  }
2042
- this.triggerInvokeOnChange(key, $event);
2081
+ this.modelByKey = key;
2082
+ this.invokeOnTouched();
2083
+ // invoke on datavalue change.
2084
+ this.invokeOnChange(this.datavalue, $event || {}, true);
2043
2085
  }
2044
2086
  // change and blur events are added from the template
2045
2087
  handleEvent(node, eventName, callback, locals) {
@@ -2072,13 +2114,13 @@ class RadiosetComponent extends DatasetAwareFormComponent {
2072
2114
  provideAs(RadiosetComponent, NG_VALUE_ACCESSOR, true),
2073
2115
  provideAs(RadiosetComponent, NG_VALIDATORS, true),
2074
2116
  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) {
2117
+ ]), 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
2118
  i0.ɵɵtemplate(0, RadiosetComponent_ng_template_0_Template, 1, 1, "ng-template", 1);
2077
2119
  i0.ɵɵelement(1, "input", 2);
2078
2120
  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
2121
  } if (rf & 2) {
2080
- const groupedListTemplate_r12 = i0.ɵɵreference(4);
2081
- i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r12);
2122
+ const groupedListTemplate_r13 = i0.ɵɵreference(4);
2123
+ i0.ɵɵproperty("ngIf", !ctx.groupby)("ngIfElse", groupedListTemplate_r13);
2082
2124
  i0.ɵɵadvance();
2083
2125
  i0.ɵɵproperty("disabled", ctx.disabled || ctx.readonly);
2084
2126
  i0.ɵɵadvance();
@@ -2091,7 +2133,7 @@ class RadiosetComponent extends DatasetAwareFormComponent {
2091
2133
  provideAs(RadiosetComponent, NG_VALUE_ACCESSOR, true),
2092
2134
  provideAs(RadiosetComponent, NG_VALIDATORS, true),
2093
2135
  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" }]
2136
+ ], 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
2137
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2096
2138
  type: Inject,
2097
2139
  args: ['EXPLICIT_CONTEXT']
@@ -2115,6 +2157,7 @@ const selectProps = new Map([
2115
2157
  ['displayValue', PROP_STRING],
2116
2158
  ['groupby', PROP_STRING],
2117
2159
  ['hint', PROP_STRING],
2160
+ ['arialabel', PROP_STRING],
2118
2161
  ['match', PROP_STRING],
2119
2162
  ['multiple', { value: false, ...PROP_BOOLEAN }],
2120
2163
  ['name', PROP_STRING],
@@ -2184,10 +2227,38 @@ class SelectComponent extends DatasetAwareFormComponent {
2184
2227
  this.datavalue = ds.execute(DataSource.Operation.GET_DEFAULT_LOCALE);
2185
2228
  }
2186
2229
  }
2187
- constructor(inj, app, explicitContext) {
2230
+ constructor(inj, explicitContext) {
2188
2231
  super(inj, WIDGET_CONFIG$7, explicitContext);
2189
- this.app = app;
2190
2232
  this.acceptsArray = true;
2233
+ /*
2234
+ * When the dataset for a select element is updated and no longer includes the previously selected value:
2235
+ * The select element becomes empty, and the ngModel value is updated to reflect this change.
2236
+ * However, the change event is not triggered, preventing the form control from recognizing the update and applying necessary validations.
2237
+ * As this widget implements ControlValueAccessor, manually updating the ngModel (or modelByKey) is necessary to ensure correct form behavior.
2238
+ * */
2239
+ const datasetSubscription = this.dataset$.subscribe(() => {
2240
+ if (isIos() || isSafari()) {
2241
+ if (this.datavalue) {
2242
+ const selectedItem = this.datasetItems.find(item => item.selected);
2243
+ if (!selectedItem) {
2244
+ setTimeout(() => {
2245
+ if (!this.placeholder) {
2246
+ this.selectEl.nativeElement.value = '';
2247
+ }
2248
+ this.modelByKey = undefined;
2249
+ }, 100);
2250
+ }
2251
+ }
2252
+ else {
2253
+ setTimeout(() => {
2254
+ if (!this.placeholder) {
2255
+ this.selectEl.nativeElement.value = '';
2256
+ }
2257
+ }, 100);
2258
+ }
2259
+ }
2260
+ });
2261
+ this.registerDestroyListener(() => datasetSubscription.unsubscribe());
2191
2262
  }
2192
2263
  ngAfterViewInit() {
2193
2264
  super.ngAfterViewInit();
@@ -2195,7 +2266,7 @@ class SelectComponent extends DatasetAwareFormComponent {
2195
2266
  }
2196
2267
  // Change event is registered from the template, Prevent the framework from registering one more event
2197
2268
  handleEvent(node, eventName, eventCallback, locals) {
2198
- if (!includes(['blur', 'change'], eventName)) {
2269
+ if (!['blur', 'change'].includes(eventName)) {
2199
2270
  super.handleEvent(this.selectEl.nativeElement, eventName, eventCallback, locals);
2200
2271
  }
2201
2272
  }
@@ -2246,36 +2317,40 @@ class SelectComponent extends DatasetAwareFormComponent {
2246
2317
  */
2247
2318
  checkForFloatingLabel($event) {
2248
2319
  const captionEl = $(this.selectEl.nativeElement).closest('.app-composite-widget.caption-floating');
2320
+ if (!this.placeholder && (isIos() || isSafari())) {
2321
+ this.removePlaceholderOption();
2322
+ }
2249
2323
  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);
2324
+ const placeholderOption = this.selectEl.nativeElement.querySelector('#placeholderOption');
2325
+ if ($event.type === 'mousedown' && (!this.datavalue || (this.datavalue && $(this.selectEl).find('select option:selected').text() === '' && this.placeholder))) {
2326
+ if (this.placeholder) {
2327
+ placeholderOption.textContent = this.placeholder;
2256
2328
  }
2257
2329
  }
2258
2330
  else if (!this.datavalue) {
2259
- $(this.selectEl.nativeElement).find('option:selected').text('');
2331
+ if (this.placeholder) {
2332
+ placeholderOption.textContent = '';
2333
+ }
2260
2334
  captionEl.removeClass('float-active');
2261
2335
  }
2262
2336
  }
2263
- else if (!(this.datavalue || this.placeholder)) {
2264
- this.removePlaceholderOption();
2265
- }
2266
2337
  }
2267
2338
  /*
2268
2339
  * 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.
2340
+ * In html we are hiding the placeholder option using css but in Apple devices and safari option is showing.
2341
+ * Styles are not allowed on option tag in ios safari
2342
+ * 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
2343
  * */
2271
2344
  removePlaceholderOption() {
2272
2345
  const hiddenEle = $(this.selectEl.nativeElement).find('#placeholderOption');
2273
2346
  if (hiddenEle.length) {
2274
2347
  hiddenEle.remove();
2275
- this.selectEl.nativeElement.value = '';
2348
+ if (!this.datavalue) {
2349
+ this.selectEl.nativeElement.value = '';
2350
+ }
2276
2351
  }
2277
2352
  }
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)); }; }
2353
+ static { this.ɵfac = function SelectComponent_Factory(t) { return new (t || SelectComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
2279
2354
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SelectComponent, selectors: [["wm-select"]], viewQuery: function SelectComponent_Query(rf, ctx) { if (rf & 1) {
2280
2355
  i0.ɵɵviewQuery(_c0$7, 7, ElementRef);
2281
2356
  } if (rf & 2) {
@@ -2285,11 +2360,11 @@ class SelectComponent extends DatasetAwareFormComponent {
2285
2360
  provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
2286
2361
  provideAs(SelectComponent, NG_VALIDATORS, true),
2287
2362
  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) {
2363
+ ]), 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
2364
  const _r1 = i0.ɵɵgetCurrentView();
2290
2365
  i0.ɵɵelementStart(0, "select", 1, 0);
2291
2366
  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)); });
2367
+ 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
2368
  i0.ɵɵelement(2, "option", 2);
2294
2369
  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
2370
  i0.ɵɵelementEnd();
@@ -2297,7 +2372,7 @@ class SelectComponent extends DatasetAwareFormComponent {
2297
2372
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(15, _c1$6, ctx.class))("disabled", ctx.disabled)("required", ctx.required)("tabindex", ctx.tabindex);
2298
2373
  i0.ɵɵtwoWayProperty("ngModel", ctx.modelByKey);
2299
2374
  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);
2375
+ i0.ɵɵattribute("accesskey", ctx.shortcutkey)("name", ctx.name)("aria-label", ctx.arialabel);
2301
2376
  i0.ɵɵadvance(2);
2302
2377
  i0.ɵɵproperty("textContent", ctx.placeholder)("hidden", !ctx.placeholder);
2303
2378
  i0.ɵɵadvance();
@@ -2312,8 +2387,8 @@ class SelectComponent extends DatasetAwareFormComponent {
2312
2387
  provideAs(SelectComponent, NG_VALUE_ACCESSOR, true),
2313
2388
  provideAs(SelectComponent, NG_VALIDATORS, true),
2314
2389
  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: [{
2390
+ ], 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" }]
2391
+ }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2317
2392
  type: Inject,
2318
2393
  args: ['EXPLICIT_CONTEXT']
2319
2394
  }, {
@@ -2322,7 +2397,7 @@ class SelectComponent extends DatasetAwareFormComponent {
2322
2397
  type: ViewChild,
2323
2398
  args: ['select', { static: true, read: ElementRef }]
2324
2399
  }] }); })();
2325
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectComponent, { className: "SelectComponent", filePath: "select/select.component.ts", lineNumber: 22 }); })();
2400
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(SelectComponent, { className: "SelectComponent", filePath: "select/select.component.ts", lineNumber: 20 }); })();
2326
2401
 
2327
2402
  const switchProps = new Map([
2328
2403
  ['class', PROP_STRING],
@@ -2335,8 +2410,8 @@ const switchProps = new Map([
2335
2410
  ['displayexpression', PROP_STRING],
2336
2411
  ['displayfield', PROP_STRING],
2337
2412
  ['hint', PROP_STRING],
2413
+ ['arialabel', PROP_STRING],
2338
2414
  ['iconclass', PROP_STRING],
2339
- ['checkediconclass', { value: 'wm-sl-l sl-check', ...PROP_STRING }],
2340
2415
  ['name', PROP_STRING],
2341
2416
  ['orderby', PROP_STRING],
2342
2417
  ['required', PROP_BOOLEAN],
@@ -2350,54 +2425,37 @@ const registerProps$6 = () => {
2350
2425
  };
2351
2426
 
2352
2427
  const _c0$6 = ["wmSwitch", ""];
2353
- const _c1$5 = a0 => ({ "multi-select": a0 });
2354
- const _c2$3 = (a0, a1) => ({ "selected": a0, "disabled": a1 });
2355
- const _c3 = a0 => ["app-icon", a0];
2356
- const _c4 = a0 => [a0];
2428
+ const _c1$5 = (a0, a1) => ({ "selected": a0, "disabled": a1 });
2429
+ const _c2$3 = a0 => ["app-icon", a0];
2357
2430
  function SwitchComponent_a_1_i_1_Template(rf, ctx) { if (rf & 1) {
2358
- i0.ɵɵelement(0, "i", 7);
2431
+ i0.ɵɵelement(0, "i", 8);
2359
2432
  } if (rf & 2) {
2360
2433
  const opt_r3 = i0.ɵɵnextContext().$implicit;
2361
2434
  const ctx_r4 = i0.ɵɵnextContext();
2362
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c3, opt_r3.dataObject[ctx_r4.iconclass] || opt_r3["icon"]));
2363
- } }
2364
- function SwitchComponent_a_1_i_2_Template(rf, ctx) { if (rf & 1) {
2365
- i0.ɵɵelement(0, "i", 7);
2366
- } if (rf & 2) {
2367
- const ctx_r4 = i0.ɵɵnextContext(2);
2368
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c4, ctx_r4.checkediconclass));
2435
+ i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(1, _c2$3, opt_r3.dataObject[ctx_r4.iconclass] || opt_r3["icon"]));
2369
2436
  } }
2370
2437
  function SwitchComponent_a_1_Template(rf, ctx) { if (rf & 1) {
2371
2438
  const _r1 = i0.ɵɵgetCurrentView();
2372
- i0.ɵɵelementStart(0, "a", 4);
2439
+ i0.ɵɵelementStart(0, "a", 5);
2373
2440
  i0.ɵɵlistener("click", function SwitchComponent_a_1_Template_a_click_0_listener($event) { const ctx_r1 = i0.ɵɵrestoreView(_r1); const opt_r3 = ctx_r1.$implicit; const $index_r4 = ctx_r1.index; const ctx_r4 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r4.selectOpt($event, $index_r4, opt_r3)); });
2374
- i0.ɵɵtemplate(1, SwitchComponent_a_1_i_1_Template, 1, 3, "i", 5)(2, SwitchComponent_a_1_i_2_Template, 1, 3, "i", 5);
2375
- i0.ɵɵelement(3, "span", 6);
2441
+ i0.ɵɵtemplate(1, SwitchComponent_a_1_i_1_Template, 1, 3, "i", 6);
2442
+ i0.ɵɵelement(2, "span", 7);
2376
2443
  i0.ɵɵelementEnd();
2377
2444
  } if (rf & 2) {
2378
2445
  const opt_r3 = ctx.$implicit;
2379
2446
  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));
2447
+ i0.ɵɵproperty("name", "wm-switch-" + opt_r3.key)("ngClass", i0.ɵɵpureFunction2(5, _c1$5, opt_r3.selected, ctx_r4.disabled));
2448
+ i0.ɵɵattribute("aria-pressed", opt_r3.selected ? true : false);
2381
2449
  i0.ɵɵadvance();
2382
- i0.ɵɵproperty("ngIf", opt_r3.dataObject && opt_r3.dataObject[ctx_r4.iconclass] && !opt_r3.selected);
2383
- i0.ɵɵadvance();
2384
- i0.ɵɵproperty("ngIf", opt_r3.selected);
2450
+ i0.ɵɵproperty("ngIf", opt_r3.dataObject && opt_r3.dataObject[ctx_r4.iconclass]);
2385
2451
  i0.ɵɵadvance();
2386
2452
  i0.ɵɵproperty("textContent", opt_r3[ctx_r4.displayfield] || opt_r3.label);
2387
2453
  } }
2388
- function SwitchComponent_span_2_Template(rf, ctx) { if (rf & 1) {
2389
- i0.ɵɵelementStart(0, "span", 8);
2390
- i0.ɵɵelement(1, "i", 9);
2391
- i0.ɵɵelementStart(2, "span", 10);
2392
- i0.ɵɵtext(3);
2393
- i0.ɵɵelementEnd()();
2454
+ function SwitchComponent_i_3_Template(rf, ctx) { if (rf & 1) {
2455
+ i0.ɵɵelement(0, "i");
2394
2456
  } if (rf & 2) {
2395
2457
  const ctx_r4 = i0.ɵɵnextContext();
2396
- i0.ɵɵproperty("title", ctx_r4.selectedItem ? ctx_r4.selectedItem.label : ctx_r4.modelByKey);
2397
- i0.ɵɵadvance();
2398
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(3, _c4, ctx_r4.checkediconclass));
2399
- i0.ɵɵadvance(2);
2400
- i0.ɵɵtextInterpolate(ctx_r4.selectedItem ? ctx_r4.selectedItem.label : ctx_r4.modelByKey);
2458
+ i0.ɵɵclassMapInterpolate1("app-icon ", ctx_r4.selectedItem && ctx_r4.selectedItem.dataObject && ctx_r4.selectedItem.dataObject[ctx_r4.iconclass], "");
2401
2459
  } }
2402
2460
  const DEFAULT_CLS = 'app-switch';
2403
2461
  const WIDGET_CONFIG$6 = { widgetType: 'wm-switch', hostClass: DEFAULT_CLS };
@@ -2406,8 +2464,6 @@ class SwitchComponent extends DatasetAwareFormComponent {
2406
2464
  constructor(inj, explicitContext) {
2407
2465
  super(inj, WIDGET_CONFIG$6, explicitContext);
2408
2466
  this.options = [];
2409
- this.multiple = this.getAttr("multiple") === "true";
2410
- this.checkediconclass = this.getAttr("checkediconclass") || 'wm-sl-l sl-check';
2411
2467
  this._debounceSetSelectedValue = debounce$1((val) => {
2412
2468
  this.setSelectedValue();
2413
2469
  this.updateHighlighter(val);
@@ -2447,7 +2503,7 @@ class SwitchComponent extends DatasetAwareFormComponent {
2447
2503
  // set the css for switch overlay element.
2448
2504
  // set the selected index from the datasetItems and highlight the datavalue on switch.
2449
2505
  updateSwitchOptions() {
2450
- if (this.datasetItems.length && !this.multiple) {
2506
+ if (this.datasetItems.length) {
2451
2507
  this.btnwidth = (100 / this.datasetItems.length);
2452
2508
  setCSS(this.nativeElement.querySelector('.app-switch-overlay'), 'width', this.btnwidth + '%');
2453
2509
  }
@@ -2485,30 +2541,18 @@ class SwitchComponent extends DatasetAwareFormComponent {
2485
2541
  if (this.disabled) {
2486
2542
  return;
2487
2543
  }
2488
- if (this.multiple) {
2489
- const keys = [];
2490
- this.datasetItems[$index].selected = !this.datasetItems[$index].selected;
2491
- forEach(this.datasetItems, (item) => {
2492
- if (item.selected)
2493
- keys.push(item.key);
2494
- });
2495
- this.modelByKey = keys;
2496
- this.selectedItem = find(this.datasetItems, { selected: true });
2497
- }
2498
- else {
2499
- this.modelByKey = option.key;
2500
- if (!this.multiple && this.selectedItem && $index === findIndex(this.datasetItems, { key: this.selectedItem.key })) {
2501
- if (this.datasetItems.length === 2) {
2502
- $index = $index === 1 ? 0 : 1;
2503
- }
2504
- else {
2505
- return;
2506
- }
2544
+ this.modelByKey = option.key;
2545
+ this.invokeOnTouched();
2546
+ if (this.selectedItem && $index === findIndex(this.datasetItems, { key: this.selectedItem.key })) {
2547
+ if (this.datasetItems.length === 2) {
2548
+ $index = $index === 1 ? 0 : 1;
2549
+ }
2550
+ else {
2551
+ return;
2507
2552
  }
2508
- this.selectedItem = this.datasetItems[$index];
2509
- this.updateHighlighter();
2510
2553
  }
2511
- this.invokeOnTouched();
2554
+ this.selectedItem = this.datasetItems[$index];
2555
+ this.updateHighlighter();
2512
2556
  // invoke on datavalue change.
2513
2557
  this.invokeOnChange(this.datavalue, $event || {}, true);
2514
2558
  $appDigest();
@@ -2525,18 +2569,24 @@ class SwitchComponent extends DatasetAwareFormComponent {
2525
2569
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: SwitchComponent, selectors: [["", "wmSwitch", ""]], exportAs: ["wmSwitch"], features: [i0.ɵɵProvidersFeature([
2526
2570
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
2527
2571
  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) {
2572
+ ]), i0.ɵɵInheritDefinitionFeature], attrs: _c0$6, decls: 6, vars: 8, consts: [[1, "btn-group", "btn-group-justified"], ["focus-target", "", "href", "javascript:void(0);", "class", "btn btn-default", "role", "button", 3, "name", "ngClass", "click", 4, "ngFor", "ngForOf"], ["aria-hidden", "true", 1, "btn", "btn-primary", "app-switch-overlay", "switch-handle", 3, "title"], [3, "class", 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"]], template: function SwitchComponent_Template(rf, ctx) { if (rf & 1) {
2529
2573
  i0.ɵɵelementStart(0, "div", 0);
2530
- i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 4, 8, "a", 1);
2574
+ i0.ɵɵtemplate(1, SwitchComponent_a_1_Template, 3, 8, "a", 1);
2575
+ i0.ɵɵelementEnd();
2576
+ i0.ɵɵelementStart(2, "span", 2);
2577
+ i0.ɵɵtemplate(3, SwitchComponent_i_3_Template, 1, 3, "i", 3);
2578
+ i0.ɵɵtext(4);
2531
2579
  i0.ɵɵelementEnd();
2532
- i0.ɵɵtemplate(2, SwitchComponent_span_2_Template, 4, 5, "span", 2);
2533
- i0.ɵɵelement(3, "input", 3);
2580
+ i0.ɵɵelement(5, "input", 4);
2534
2581
  } if (rf & 2) {
2535
- i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c1$5, ctx.multiple));
2536
2582
  i0.ɵɵadvance();
2537
2583
  i0.ɵɵproperty("ngForOf", ctx.datasetItems);
2538
2584
  i0.ɵɵadvance();
2539
- i0.ɵɵproperty("ngIf", !ctx.multiple);
2585
+ i0.ɵɵproperty("title", ctx.selectedItem ? ctx.selectedItem.label : ctx.modelByKey);
2586
+ i0.ɵɵadvance();
2587
+ i0.ɵɵproperty("ngIf", ctx.iconclass);
2588
+ i0.ɵɵadvance();
2589
+ i0.ɵɵtextInterpolate1(" ", ctx.selectedItem ? ctx.selectedItem.label : ctx.modelByKey, "\n");
2540
2590
  i0.ɵɵadvance();
2541
2591
  i0.ɵɵproperty("name", ctx.name)("disabled", ctx.disabled)("value", ctx.modelByKey)("required", ctx.required);
2542
2592
  } }, dependencies: [i1.NgClass, i1.NgForOf, i1.NgIf, i2.TextContentDirective], encapsulation: 2 }); }
@@ -2546,7 +2596,7 @@ class SwitchComponent extends DatasetAwareFormComponent {
2546
2596
  args: [{ selector: '[wmSwitch]', providers: [
2547
2597
  provideAs(SwitchComponent, NG_VALUE_ACCESSOR, true),
2548
2598
  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" }]
2599
+ ], exportAs: 'wmSwitch', template: "<div class=\"btn-group btn-group-justified\">\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]\" aria-hidden=\"true\" [ngClass]=\"['app-icon', opt.dataObject[iconclass] || opt['icon']]\"></i>\n <span class=\"caption\" [textContent]=\"opt[displayfield] || opt.label\"></span>\n </a>\n</div>\n<span aria-hidden=\"true\" [title]=\"selectedItem ? selectedItem.label : modelByKey\"\n class=\"btn btn-primary app-switch-overlay switch-handle\">\n <i *ngIf=\"iconclass\"\n class=\"app-icon {{(selectedItem && selectedItem.dataObject) && selectedItem.dataObject[iconclass]}}\"></i>\n {{selectedItem ? selectedItem.label : modelByKey}}\n</span>\n<input [name]=\"name\" class=\"model-holder ng-hide\" [disabled]=\"disabled\" [value]=\"modelByKey\" [required]=\"required\" aria-hidden=\"true\">\n" }]
2550
2600
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2551
2601
  type: Inject,
2552
2602
  args: ['EXPLICIT_CONTEXT']
@@ -2564,6 +2614,7 @@ const inputCalendarTypeProps = new Map([
2564
2614
  ['datavalue', PROP_STRING],
2565
2615
  ['disabled', PROP_BOOLEAN],
2566
2616
  ['hint', PROP_STRING],
2617
+ ['arialabel', PROP_STRING],
2567
2618
  ['maxvalue', PROP_NUMBER],
2568
2619
  ['minvalue', PROP_NUMBER],
2569
2620
  ['name', PROP_STRING],
@@ -2607,7 +2658,7 @@ class InputCalendarComponent extends BaseInput {
2607
2658
  provideAs(InputCalendarComponent, NG_VALUE_ACCESSOR, true),
2608
2659
  provideAs(InputCalendarComponent, NG_VALIDATORS, true),
2609
2660
  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) {
2661
+ ]), 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
2662
  const _r1 = i0.ɵɵgetCurrentView();
2612
2663
  i0.ɵɵelementStart(0, "input", 1, 0);
2613
2664
  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 +2668,7 @@ class InputCalendarComponent extends BaseInput {
2617
2668
  i0.ɵɵproperty("type", ctx.type);
2618
2669
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2619
2670
  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");
2671
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel || ctx.type + " field");
2621
2672
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.NgModel], encapsulation: 2 }); }
2622
2673
  }
2623
2674
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputCalendarComponent, [{
@@ -2626,7 +2677,7 @@ class InputCalendarComponent extends BaseInput {
2626
2677
  provideAs(InputCalendarComponent, NG_VALUE_ACCESSOR, true),
2627
2678
  provideAs(InputCalendarComponent, NG_VALIDATORS, true),
2628
2679
  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" }]
2680
+ ], 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
2681
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2631
2682
  type: Inject,
2632
2683
  args: ['EXPLICIT_CONTEXT']
@@ -2650,6 +2701,7 @@ const inputColorTypeProps = new Map([
2650
2701
  ['datavalue', PROP_STRING],
2651
2702
  ['disabled', PROP_BOOLEAN],
2652
2703
  ['hint', PROP_STRING],
2704
+ ['arialabel', PROP_STRING],
2653
2705
  ['name', PROP_STRING],
2654
2706
  ['placeholder', { value: 'Enter text', ...PROP_STRING }],
2655
2707
  ['readonly', PROP_BOOLEAN],
@@ -2690,7 +2742,7 @@ class InputColorComponent extends BaseInput {
2690
2742
  provideAs(InputColorComponent, NG_VALUE_ACCESSOR, true),
2691
2743
  provideAs(InputColorComponent, NG_VALIDATORS, true),
2692
2744
  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) {
2745
+ ]), 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
2746
  const _r1 = i0.ɵɵgetCurrentView();
2695
2747
  i0.ɵɵelementStart(0, "input", 1, 0);
2696
2748
  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 +2752,7 @@ class InputColorComponent extends BaseInput {
2700
2752
  i0.ɵɵproperty("type", ctx.type);
2701
2753
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2702
2754
  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);
2755
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
2704
2756
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.MaxLengthValidator, i2$1.NgModel], encapsulation: 2 }); }
2705
2757
  }
2706
2758
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputColorComponent, [{
@@ -2709,7 +2761,7 @@ class InputColorComponent extends BaseInput {
2709
2761
  provideAs(InputColorComponent, NG_VALUE_ACCESSOR, true),
2710
2762
  provideAs(InputColorComponent, NG_VALIDATORS, true),
2711
2763
  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" }]
2764
+ ], 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
2765
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2714
2766
  type: Inject,
2715
2767
  args: ['EXPLICIT_CONTEXT']
@@ -2733,6 +2785,7 @@ const inputEmailTypeProps = new Map([
2733
2785
  ['datavalue', PROP_STRING],
2734
2786
  ['disabled', PROP_BOOLEAN],
2735
2787
  ['hint', PROP_STRING],
2788
+ ['arialabel', PROP_STRING],
2736
2789
  ['maxchars', PROP_NUMBER],
2737
2790
  ['name', PROP_STRING],
2738
2791
  ['placeholder', { value: 'Enter text', ...PROP_STRING }],
@@ -2774,7 +2827,7 @@ class InputEmailComponent extends BaseInput {
2774
2827
  provideAs(InputEmailComponent, NG_VALUE_ACCESSOR, true),
2775
2828
  provideAs(InputEmailComponent, NG_VALIDATORS, true),
2776
2829
  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) {
2830
+ ]), 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
2831
  const _r1 = i0.ɵɵgetCurrentView();
2779
2832
  i0.ɵɵelementStart(0, "input", 1, 0);
2780
2833
  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 +2837,7 @@ class InputEmailComponent extends BaseInput {
2784
2837
  i0.ɵɵproperty("type", ctx.type);
2785
2838
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2786
2839
  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);
2840
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
2788
2841
  } }, 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
2842
  }
2790
2843
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputEmailComponent, [{
@@ -2793,7 +2846,7 @@ class InputEmailComponent extends BaseInput {
2793
2846
  provideAs(InputEmailComponent, NG_VALUE_ACCESSOR, true),
2794
2847
  provideAs(InputEmailComponent, NG_VALIDATORS, true),
2795
2848
  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" }]
2849
+ ], 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
2850
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2798
2851
  type: Inject,
2799
2852
  args: ['EXPLICIT_CONTEXT']
@@ -2817,6 +2870,7 @@ const inputNumberTypeProps = new Map([
2817
2870
  ['datavalue', PROP_STRING],
2818
2871
  ['disabled', PROP_BOOLEAN],
2819
2872
  ['hint', PROP_STRING],
2873
+ ['arialabel', PROP_STRING],
2820
2874
  ['maxchars', PROP_NUMBER],
2821
2875
  ['maxvalue', PROP_NUMBER],
2822
2876
  ['minvalue', PROP_NUMBER],
@@ -2872,7 +2926,7 @@ class InputNumberComponent extends BaseInput {
2872
2926
  provideAs(InputNumberComponent, NG_VALUE_ACCESSOR, true),
2873
2927
  provideAs(InputNumberComponent, NG_VALIDATORS, true),
2874
2928
  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) {
2929
+ ]), 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
2930
  const _r1 = i0.ɵɵgetCurrentView();
2877
2931
  i0.ɵɵelementStart(0, "input", 1, 0);
2878
2932
  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 +2936,7 @@ class InputNumberComponent extends BaseInput {
2882
2936
  i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c2, ctx.step === 0))("type", ctx.type);
2883
2937
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
2884
2938
  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);
2939
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
2886
2940
  } }, dependencies: [i1.NgClass, i1.NgStyle, i2$1.DefaultValueAccessor, i2$1.NgControlStatus, i2$1.RequiredValidator, i2$1.MaxLengthValidator, i2$1.NgModel], encapsulation: 2 }); }
2887
2941
  }
2888
2942
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputNumberComponent, [{
@@ -2891,7 +2945,7 @@ class InputNumberComponent extends BaseInput {
2891
2945
  provideAs(InputNumberComponent, NG_VALUE_ACCESSOR, true),
2892
2946
  provideAs(InputNumberComponent, NG_VALIDATORS, true),
2893
2947
  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" }]
2948
+ ], 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
2949
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
2896
2950
  type: Inject,
2897
2951
  args: ['EXPLICIT_CONTEXT']
@@ -2916,6 +2970,7 @@ const inputTextTypeProps = new Map([
2916
2970
  ['disabled', PROP_BOOLEAN],
2917
2971
  ['displayformat', PROP_STRING],
2918
2972
  ['hint', PROP_STRING],
2973
+ ['arialabel', PROP_STRING],
2919
2974
  ['maxchars', PROP_NUMBER],
2920
2975
  ['name', PROP_STRING],
2921
2976
  ['placeholder', { value: 'Enter text', ...PROP_STRING }],
@@ -3039,7 +3094,7 @@ class InputTextComponent extends BaseInput {
3039
3094
  provideAs(InputTextComponent, NG_VALUE_ACCESSOR, true),
3040
3095
  provideAs(InputTextComponent, NG_VALIDATORS, true),
3041
3096
  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) {
3097
+ ]), 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
3098
  const _r1 = i0.ɵɵgetCurrentView();
3044
3099
  i0.ɵɵelementStart(0, "input", 1, 0);
3045
3100
  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 +3104,7 @@ class InputTextComponent extends BaseInput {
3049
3104
  i0.ɵɵproperty("type", ctx.type);
3050
3105
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
3051
3106
  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);
3107
+ i0.ɵɵattribute("name", ctx.name)("aria-label", ctx.arialabel)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey);
3053
3108
  } }, 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
3109
  }
3055
3110
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(InputTextComponent, [{
@@ -3058,7 +3113,7 @@ class InputTextComponent extends BaseInput {
3058
3113
  provideAs(InputTextComponent, NG_VALUE_ACCESSOR, true),
3059
3114
  provideAs(InputTextComponent, NG_VALIDATORS, true),
3060
3115
  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" }]
3116
+ ], 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
3117
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
3063
3118
  type: Inject,
3064
3119
  args: ['EXPLICIT_CONTEXT']
@@ -3084,6 +3139,7 @@ const textareaProps = new Map([
3084
3139
  ['datavalue', PROP_STRING],
3085
3140
  ['disabled', PROP_BOOLEAN],
3086
3141
  ['hint', PROP_STRING],
3142
+ ['arialabel', PROP_STRING],
3087
3143
  ['maxchars', PROP_NUMBER],
3088
3144
  ['name', PROP_STRING],
3089
3145
  ['placeholder', { value: 'Place your text', ...PROP_STRING }],
@@ -3126,6 +3182,9 @@ class TextareaComponent extends BaseInput {
3126
3182
  onInputChange() {
3127
3183
  this.charlength = this.inputEl.nativeElement.value.length;
3128
3184
  }
3185
+ ngAfterViewChecked() {
3186
+ this.charlength = this.inputEl.nativeElement.value.length;
3187
+ }
3129
3188
  static { this.ɵfac = function TextareaComponent_Factory(t) { return new (t || TextareaComponent)(i0.ɵɵdirectiveInject(i0.Injector), i0.ɵɵdirectiveInject('EXPLICIT_CONTEXT', 8)); }; }
3130
3189
  static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: TextareaComponent, selectors: [["wm-textarea"]], viewQuery: function TextareaComponent_Query(rf, ctx) { if (rf & 1) {
3131
3190
  i0.ɵɵviewQuery(_c0, 7);
@@ -3138,7 +3197,7 @@ class TextareaComponent extends BaseInput {
3138
3197
  provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),
3139
3198
  provideAs(TextareaComponent, NG_VALIDATORS, true),
3140
3199
  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) {
3200
+ ]), 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
3201
  const _r1 = i0.ɵɵgetCurrentView();
3143
3202
  i0.ɵɵelementStart(0, "textarea", 1, 0);
3144
3203
  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 +3207,7 @@ class TextareaComponent extends BaseInput {
3148
3207
  } if (rf & 2) {
3149
3208
  i0.ɵɵtwoWayProperty("ngModel", ctx.datavalue);
3150
3209
  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);
3210
+ i0.ɵɵattribute("name", ctx.name)("tabindex", ctx.tabindex)("placeholder", ctx.placeholder)("accesskey", ctx.shortcutkey)("aria-label", ctx.arialabel);
3152
3211
  i0.ɵɵadvance(2);
3153
3212
  i0.ɵɵproperty("ngIf", ctx.maxchars);
3154
3213
  } }, 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 +3218,7 @@ class TextareaComponent extends BaseInput {
3159
3218
  provideAs(TextareaComponent, NG_VALUE_ACCESSOR, true),
3160
3219
  provideAs(TextareaComponent, NG_VALIDATORS, true),
3161
3220
  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" }]
3221
+ ], 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
3222
  }], () => [{ type: i0.Injector }, { type: undefined, decorators: [{
3164
3223
  type: Inject,
3165
3224
  args: ['EXPLICIT_CONTEXT']
@@ -3172,7 +3231,7 @@ class TextareaComponent extends BaseInput {
3172
3231
  type: ViewChild,
3173
3232
  args: [NgModel]
3174
3233
  }] }); })();
3175
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextareaComponent, { className: "TextareaComponent", filePath: "textarea/textarea.component.ts", lineNumber: 22 }); })();
3234
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(TextareaComponent, { className: "TextareaComponent", filePath: "textarea/textarea.component.ts", lineNumber: 23 }); })();
3176
3235
 
3177
3236
  class CaptionPositionDirective {
3178
3237
  constructor(inj, app) {
@@ -3203,9 +3262,10 @@ class CaptionPositionDirective {
3203
3262
  }
3204
3263
  // For select widget, display placeholder only on focus else remove the text of the option selected.
3205
3264
  checkForSelectPlaceholder() {
3206
- if ($(this.nativeEl).find('select option:selected').text() && !$(this.nativeEl).find('select').is(':focus') &&
3265
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
3266
+ if (selectElPlaceholderOption && selectElPlaceholderOption.textContent && !$(this.nativeEl).find('select').is(':focus') &&
3207
3267
  !$(this.inputEl.closest('[widget-id]')).attr('datavalue')) {
3208
- $(this.nativeEl).find('select option:selected').text('');
3268
+ selectElPlaceholderOption.textContent = '';
3209
3269
  }
3210
3270
  }
3211
3271
  setDefaultValueAnimation() {
@@ -3307,10 +3367,10 @@ class CaptionPositionDirective {
3307
3367
  // before placeholder is removed assign it to the placeholder variable
3308
3368
  // check for placeholder in inputel and selectel
3309
3369
  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('');
3370
+ const selectElPlaceholderOption = this.nativeEl.querySelector('#placeholderOption');
3371
+ if (this.inputEl.attr('placeholder') || selectElPlaceholderOption) {
3372
+ if (selectElPlaceholderOption) {
3373
+ selectElPlaceholderOption.textContent = '';
3314
3374
  }
3315
3375
  else {
3316
3376
  this.placeholder = this.inputEl.attr('placeholder');