@sd-angular/core 0.0.1008 → 0.0.1012

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 (305) hide show
  1. package/api/sd-angular-core-api.metadata.json +1 -1
  2. package/api/src/lib/token.service.d.ts +1 -2
  3. package/autocomplete/sd-angular-core-autocomplete.metadata.json +1 -1
  4. package/autocomplete/src/lib/autocomplete.component.d.ts +6 -5
  5. package/autocomplete/src/lib/autocomplete.module.d.ts +0 -1
  6. package/bundles/sd-angular-core-api.umd.js.map +1 -1
  7. package/bundles/sd-angular-core-api.umd.min.js.map +1 -1
  8. package/bundles/sd-angular-core-autocomplete.umd.js +96 -98
  9. package/bundles/sd-angular-core-autocomplete.umd.js.map +1 -1
  10. package/bundles/sd-angular-core-autocomplete.umd.min.js +2 -2
  11. package/bundles/sd-angular-core-autocomplete.umd.min.js.map +1 -1
  12. package/bundles/sd-angular-core-cache.umd.js +4 -4
  13. package/bundles/sd-angular-core-cache.umd.js.map +1 -1
  14. package/bundles/sd-angular-core-cache.umd.min.js +2 -2
  15. package/bundles/sd-angular-core-cache.umd.min.js.map +1 -1
  16. package/bundles/sd-angular-core-chart.umd.js +4 -8
  17. package/bundles/sd-angular-core-chart.umd.js.map +1 -1
  18. package/bundles/sd-angular-core-chart.umd.min.js +1 -1
  19. package/bundles/sd-angular-core-chart.umd.min.js.map +1 -1
  20. package/bundles/sd-angular-core-comment.umd.js +2 -1
  21. package/bundles/sd-angular-core-comment.umd.js.map +1 -1
  22. package/bundles/sd-angular-core-comment.umd.min.js +1 -1
  23. package/bundles/sd-angular-core-comment.umd.min.js.map +1 -1
  24. package/bundles/sd-angular-core-common.umd.js +376 -40
  25. package/bundles/sd-angular-core-common.umd.js.map +1 -1
  26. package/bundles/sd-angular-core-common.umd.min.js +2 -3
  27. package/bundles/sd-angular-core-common.umd.min.js.map +1 -1
  28. package/bundles/sd-angular-core-date-range.umd.js +4 -4
  29. package/bundles/sd-angular-core-date-range.umd.js.map +1 -1
  30. package/bundles/sd-angular-core-date-range.umd.min.js +2 -2
  31. package/bundles/sd-angular-core-date-range.umd.min.js.map +1 -1
  32. package/bundles/sd-angular-core-date-time.umd.js +57 -35
  33. package/bundles/sd-angular-core-date-time.umd.js.map +1 -1
  34. package/bundles/sd-angular-core-date-time.umd.min.js +2 -2
  35. package/bundles/sd-angular-core-date-time.umd.min.js.map +1 -1
  36. package/bundles/sd-angular-core-export.umd.js +4 -4
  37. package/bundles/sd-angular-core-export.umd.js.map +1 -1
  38. package/bundles/sd-angular-core-export.umd.min.js +1 -1
  39. package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
  40. package/bundles/sd-angular-core-form.umd.js +4 -4
  41. package/bundles/sd-angular-core-form.umd.min.js +1 -1
  42. package/bundles/sd-angular-core-form.umd.min.js.map +1 -1
  43. package/bundles/sd-angular-core-grid-material.umd.js +32 -70
  44. package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
  45. package/bundles/sd-angular-core-grid-material.umd.min.js +2 -2
  46. package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
  47. package/bundles/sd-angular-core-grid.umd.js +5 -4
  48. package/bundles/sd-angular-core-grid.umd.js.map +1 -1
  49. package/bundles/sd-angular-core-grid.umd.min.js +1 -1
  50. package/bundles/sd-angular-core-grid.umd.min.js.map +1 -1
  51. package/bundles/sd-angular-core-input-upload-file.umd.js +4 -4
  52. package/bundles/sd-angular-core-input-upload-file.umd.js.map +1 -1
  53. package/bundles/sd-angular-core-input-upload-file.umd.min.js +2 -2
  54. package/bundles/sd-angular-core-input-upload-file.umd.min.js.map +1 -1
  55. package/bundles/sd-angular-core-input.umd.js +11 -13
  56. package/bundles/sd-angular-core-input.umd.js.map +1 -1
  57. package/bundles/sd-angular-core-input.umd.min.js +2 -2
  58. package/bundles/sd-angular-core-input.umd.min.js.map +1 -1
  59. package/bundles/sd-angular-core-modal.umd.js +4 -4
  60. package/bundles/sd-angular-core-modal.umd.js.map +1 -1
  61. package/bundles/sd-angular-core-modal.umd.min.js +1 -1
  62. package/bundles/sd-angular-core-modal.umd.min.js.map +1 -1
  63. package/bundles/sd-angular-core-radio.umd.js +4 -8
  64. package/bundles/sd-angular-core-radio.umd.js.map +1 -1
  65. package/bundles/sd-angular-core-radio.umd.min.js +2 -2
  66. package/bundles/sd-angular-core-radio.umd.min.js.map +1 -1
  67. package/bundles/sd-angular-core-select-editor.umd.js +4 -4
  68. package/bundles/sd-angular-core-select-editor.umd.js.map +1 -1
  69. package/bundles/sd-angular-core-select-editor.umd.min.js +2 -2
  70. package/bundles/sd-angular-core-select-editor.umd.min.js.map +1 -1
  71. package/bundles/sd-angular-core-select.umd.js +25 -47
  72. package/bundles/sd-angular-core-select.umd.js.map +1 -1
  73. package/bundles/sd-angular-core-select.umd.min.js +2 -2
  74. package/bundles/sd-angular-core-select.umd.min.js.map +1 -1
  75. package/bundles/sd-angular-core-service.umd.js +8 -202
  76. package/bundles/sd-angular-core-service.umd.js.map +1 -1
  77. package/bundles/sd-angular-core-service.umd.min.js +1 -1
  78. package/bundles/sd-angular-core-service.umd.min.js.map +1 -1
  79. package/bundles/sd-angular-core-side-drawer.umd.js +4 -4
  80. package/bundles/sd-angular-core-side-drawer.umd.js.map +1 -1
  81. package/bundles/sd-angular-core-side-drawer.umd.min.js +2 -2
  82. package/bundles/sd-angular-core-side-drawer.umd.min.js.map +1 -1
  83. package/bundles/sd-angular-core-time.umd.js +4 -4
  84. package/bundles/sd-angular-core-time.umd.js.map +1 -1
  85. package/bundles/sd-angular-core-time.umd.min.js +2 -2
  86. package/bundles/sd-angular-core-time.umd.min.js.map +1 -1
  87. package/bundles/sd-angular-core-upload-excel.umd.js +4 -4
  88. package/bundles/sd-angular-core-upload-excel.umd.js.map +1 -1
  89. package/bundles/sd-angular-core-upload-excel.umd.min.js +1 -1
  90. package/bundles/sd-angular-core-upload-excel.umd.min.js.map +1 -1
  91. package/bundles/sd-angular-core-upload-file.umd.js +4 -4
  92. package/bundles/sd-angular-core-upload-file.umd.js.map +1 -1
  93. package/bundles/sd-angular-core-upload-file.umd.min.js +2 -2
  94. package/bundles/sd-angular-core-upload-file.umd.min.js.map +1 -1
  95. package/bundles/sd-angular-core-utility.umd.js +4 -4
  96. package/bundles/sd-angular-core-utility.umd.js.map +1 -1
  97. package/bundles/sd-angular-core-utility.umd.min.js +1 -1
  98. package/bundles/sd-angular-core-utility.umd.min.js.map +1 -1
  99. package/bundles/sd-angular-core.umd.js +4 -8
  100. package/bundles/sd-angular-core.umd.js.map +1 -1
  101. package/bundles/sd-angular-core.umd.min.js +1 -1
  102. package/bundles/sd-angular-core.umd.min.js.map +1 -1
  103. package/cache/sd-angular-core-cache.metadata.json +1 -1
  104. package/cache/src/lib/cache.service.d.ts +0 -1
  105. package/cache/src/public-api.d.ts +1 -0
  106. package/chart/sd-angular-core-chart.metadata.json +1 -1
  107. package/chart/src/lib/chart.component.d.ts +0 -1
  108. package/chart/src/public-api.d.ts +1 -0
  109. package/common/sd-angular-core-common.metadata.json +1 -1
  110. package/{grid-material → common}/src/lib/directives/sd-let.directive.d.ts +0 -0
  111. package/common/src/lib/typings/array.extension.d.ts +20 -0
  112. package/{service → common}/src/lib/typings/date.extension.d.ts +0 -0
  113. package/{service → common}/src/lib/typings/number.extension.d.ts +0 -0
  114. package/{typing/src/lib/typing → common/src/lib/typings}/string.extension.d.ts +2 -0
  115. package/common/src/public-api.d.ts +5 -0
  116. package/date-range/index.d.ts +0 -1
  117. package/date-range/sd-angular-core-date-range.metadata.json +1 -1
  118. package/date-range/src/lib/date-range.component.d.ts +0 -1
  119. package/date-range/src/lib/date-range.module.d.ts +0 -1
  120. package/date-range/src/public-api.d.ts +1 -1
  121. package/date-time/sd-angular-core-date-time.metadata.json +1 -1
  122. package/date-time/src/lib/date-time.component.d.ts +14 -7
  123. package/date-time/src/lib/date-time.module.d.ts +0 -1
  124. package/date-time/src/public-api.d.ts +0 -1
  125. package/esm2015/api/src/lib/token.service.js +1 -1
  126. package/esm2015/autocomplete/src/lib/autocomplete.component.js +86 -73
  127. package/esm2015/autocomplete/src/lib/autocomplete.module.js +1 -2
  128. package/esm2015/cache/src/lib/cache.service.js +1 -2
  129. package/esm2015/cache/src/public-api.js +2 -1
  130. package/esm2015/chart/src/lib/chart.component.js +1 -2
  131. package/esm2015/chart/src/public-api.js +2 -4
  132. package/esm2015/comment/src/lib/comment.component.js +3 -2
  133. package/esm2015/common/src/lib/common.module.js +7 -3
  134. package/esm2015/common/src/lib/directives/sd-let.directive.js +29 -0
  135. package/esm2015/common/src/lib/typings/array.extension.js +65 -0
  136. package/esm2015/common/src/lib/typings/date.extension.js +143 -0
  137. package/esm2015/common/src/lib/typings/number.extension.js +33 -0
  138. package/esm2015/common/src/lib/typings/string.extension.js +42 -0
  139. package/esm2015/common/src/public-api.js +6 -1
  140. package/esm2015/date-range/index.js +1 -2
  141. package/esm2015/date-range/src/lib/date-range.component.js +1 -2
  142. package/esm2015/date-range/src/lib/date-range.module.js +1 -2
  143. package/esm2015/date-range/src/public-api.js +2 -2
  144. package/esm2015/date-time/src/lib/date-time.component.js +55 -35
  145. package/esm2015/date-time/src/lib/date-time.module.js +5 -3
  146. package/esm2015/date-time/src/public-api.js +1 -2
  147. package/esm2015/export/src/lib/export.service.js +1 -2
  148. package/esm2015/form/src/public-api.js +2 -1
  149. package/esm2015/grid/src/lib/components/grid-date-picker-control/grid-date-picker-control.component.js +1 -2
  150. package/esm2015/grid/src/lib/grid.module.js +1 -2
  151. package/esm2015/grid/src/lib/models/handler-dotnet.js +1 -2
  152. package/esm2015/grid-material/sd-angular-core-grid-material.js +27 -28
  153. package/esm2015/grid-material/src/lib/grid-material.module.js +4 -5
  154. package/esm2015/grid-material/src/public-api.js +2 -4
  155. package/esm2015/input/src/lib/input.component.js +5 -4
  156. package/esm2015/input-upload-file/src/lib/input-upload-file.component.js +2 -2
  157. package/esm2015/input-upload-file/src/lib/input-upload-file.module.js +1 -2
  158. package/esm2015/lib/controls/date-picker-control/date-picker-control.component.js +1 -2
  159. package/esm2015/lib/pipes/sd-date.pipe.js +1 -2
  160. package/esm2015/modal/src/lib/modal.module.js +1 -2
  161. package/esm2015/public-api.js +11 -14
  162. package/esm2015/radio/src/lib/radio.module.js +1 -2
  163. package/esm2015/radio/src/public-api.js +2 -4
  164. package/esm2015/select/src/lib/select.component.js +23 -45
  165. package/esm2015/select/src/lib/select.module.js +1 -2
  166. package/esm2015/select-editor/src/lib/select-editor.module.js +1 -2
  167. package/esm2015/service/src/lib/service.module.js +6 -4
  168. package/esm2015/service/src/public-api.js +2 -2
  169. package/esm2015/side-drawer/src/lib/side-drawer.module.js +1 -2
  170. package/esm2015/time/src/lib/time.component.js +1 -2
  171. package/esm2015/time/src/public-api.js +2 -1
  172. package/esm2015/upload-excel/src/lib/upload-excel.component.js +1 -2
  173. package/esm2015/upload-excel/src/lib/upload-excel.module.js +1 -2
  174. package/esm2015/upload-file/src/lib/upload-file.module.js +1 -2
  175. package/esm2015/utility/src/lib/pipes/currency.pipe.js +1 -2
  176. package/esm2015/utility/src/lib/pipes/time-different.pipe.js +1 -2
  177. package/esm2015/utility/src/lib/utility.service.js +1 -2
  178. package/esm2015/utility/src/public-api.js +2 -1
  179. package/export/sd-angular-core-export.metadata.json +1 -1
  180. package/export/src/lib/export.service.d.ts +0 -1
  181. package/fesm2015/sd-angular-core-api.js.map +1 -1
  182. package/fesm2015/sd-angular-core-autocomplete.js +85 -72
  183. package/fesm2015/sd-angular-core-autocomplete.js.map +1 -1
  184. package/fesm2015/sd-angular-core-cache.js +1 -1
  185. package/fesm2015/sd-angular-core-cache.js.map +1 -1
  186. package/fesm2015/sd-angular-core-chart.js +1 -5
  187. package/fesm2015/sd-angular-core-chart.js.map +1 -1
  188. package/fesm2015/sd-angular-core-comment.js +2 -1
  189. package/fesm2015/sd-angular-core-comment.js.map +1 -1
  190. package/fesm2015/sd-angular-core-common.js +315 -5
  191. package/fesm2015/sd-angular-core-common.js.map +1 -1
  192. package/fesm2015/sd-angular-core-date-range.js +1 -1
  193. package/fesm2015/sd-angular-core-date-range.js.map +1 -1
  194. package/fesm2015/sd-angular-core-date-time.js +57 -36
  195. package/fesm2015/sd-angular-core-date-time.js.map +1 -1
  196. package/fesm2015/sd-angular-core-export.js +0 -1
  197. package/fesm2015/sd-angular-core-export.js.map +1 -1
  198. package/fesm2015/sd-angular-core-form.js +1 -0
  199. package/fesm2015/sd-angular-core-form.js.map +1 -1
  200. package/fesm2015/sd-angular-core-grid-material.js +5 -37
  201. package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
  202. package/fesm2015/sd-angular-core-grid.js +1 -1
  203. package/fesm2015/sd-angular-core-grid.js.map +1 -1
  204. package/fesm2015/sd-angular-core-input-upload-file.js +0 -1
  205. package/fesm2015/sd-angular-core-input-upload-file.js.map +1 -1
  206. package/fesm2015/sd-angular-core-input.js +4 -3
  207. package/fesm2015/sd-angular-core-input.js.map +1 -1
  208. package/fesm2015/sd-angular-core-modal.js +0 -1
  209. package/fesm2015/sd-angular-core-modal.js.map +1 -1
  210. package/fesm2015/sd-angular-core-radio.js +1 -5
  211. package/fesm2015/sd-angular-core-radio.js.map +1 -1
  212. package/fesm2015/sd-angular-core-select-editor.js +0 -1
  213. package/fesm2015/sd-angular-core-select-editor.js.map +1 -1
  214. package/fesm2015/sd-angular-core-select.js +22 -45
  215. package/fesm2015/sd-angular-core-select.js.map +1 -1
  216. package/fesm2015/sd-angular-core-service.js +5 -198
  217. package/fesm2015/sd-angular-core-service.js.map +1 -1
  218. package/fesm2015/sd-angular-core-side-drawer.js +0 -1
  219. package/fesm2015/sd-angular-core-side-drawer.js.map +1 -1
  220. package/fesm2015/sd-angular-core-time.js +1 -1
  221. package/fesm2015/sd-angular-core-time.js.map +1 -1
  222. package/fesm2015/sd-angular-core-upload-excel.js +0 -1
  223. package/fesm2015/sd-angular-core-upload-excel.js.map +1 -1
  224. package/fesm2015/sd-angular-core-upload-file.js +0 -1
  225. package/fesm2015/sd-angular-core-upload-file.js.map +1 -1
  226. package/fesm2015/sd-angular-core-utility.js +1 -1
  227. package/fesm2015/sd-angular-core-utility.js.map +1 -1
  228. package/fesm2015/sd-angular-core.js +15 -20
  229. package/fesm2015/sd-angular-core.js.map +1 -1
  230. package/form/src/public-api.d.ts +1 -0
  231. package/grid/sd-angular-core-grid.metadata.json +1 -1
  232. package/grid/src/lib/components/grid-date-picker-control/grid-date-picker-control.component.d.ts +0 -1
  233. package/grid/src/lib/grid.module.d.ts +0 -1
  234. package/grid/src/lib/models/handler-dotnet.d.ts +0 -1
  235. package/grid-material/sd-angular-core-grid-material.d.ts +26 -27
  236. package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
  237. package/grid-material/src/lib/grid-material.module.d.ts +0 -1
  238. package/grid-material/src/public-api.d.ts +1 -0
  239. package/input/sd-angular-core-input.metadata.json +1 -1
  240. package/input-upload-file/sd-angular-core-input-upload-file.metadata.json +1 -1
  241. package/input-upload-file/src/lib/input-upload-file.module.d.ts +0 -1
  242. package/lib/controls/date-picker-control/date-picker-control.component.d.ts +0 -1
  243. package/lib/pipes/sd-date.pipe.d.ts +0 -1
  244. package/modal/sd-angular-core-modal.metadata.json +1 -1
  245. package/modal/src/lib/modal.module.d.ts +0 -1
  246. package/package.json +1 -1
  247. package/public-api.d.ts +10 -10
  248. package/radio/sd-angular-core-radio.metadata.json +1 -1
  249. package/radio/src/lib/radio.module.d.ts +0 -1
  250. package/radio/src/public-api.d.ts +1 -0
  251. package/{sd-angular-core-0.0.1008.tgz → sd-angular-core-0.0.1012.tgz} +0 -0
  252. package/sd-angular-core.metadata.json +1 -1
  253. package/select/sd-angular-core-select.metadata.json +1 -1
  254. package/select/src/lib/select.component.d.ts +3 -4
  255. package/select/src/lib/select.module.d.ts +0 -1
  256. package/select-editor/sd-angular-core-select-editor.metadata.json +1 -1
  257. package/select-editor/src/lib/select-editor.module.d.ts +0 -1
  258. package/service/sd-angular-core-service.metadata.json +1 -1
  259. package/service/src/lib/service.module.d.ts +0 -1
  260. package/service/src/public-api.d.ts +1 -1
  261. package/side-drawer/sd-angular-core-side-drawer.metadata.json +1 -1
  262. package/side-drawer/src/lib/side-drawer.module.d.ts +0 -1
  263. package/time/sd-angular-core-time.metadata.json +1 -1
  264. package/time/src/lib/time.component.d.ts +0 -1
  265. package/time/src/public-api.d.ts +1 -0
  266. package/upload-excel/sd-angular-core-upload-excel.metadata.json +1 -1
  267. package/upload-excel/src/lib/upload-excel.component.d.ts +0 -1
  268. package/upload-excel/src/lib/upload-excel.module.d.ts +0 -1
  269. package/upload-file/sd-angular-core-upload-file.metadata.json +1 -1
  270. package/upload-file/src/lib/upload-file.module.d.ts +0 -1
  271. package/utility/sd-angular-core-utility.metadata.json +1 -1
  272. package/utility/src/lib/pipes/currency.pipe.d.ts +0 -1
  273. package/utility/src/lib/pipes/time-different.pipe.d.ts +0 -1
  274. package/utility/src/lib/utility.service.d.ts +0 -1
  275. package/utility/src/public-api.d.ts +1 -0
  276. package/bundles/sd-angular-core-typing.umd.js +0 -226
  277. package/bundles/sd-angular-core-typing.umd.js.map +0 -1
  278. package/bundles/sd-angular-core-typing.umd.min.js +0 -2
  279. package/bundles/sd-angular-core-typing.umd.min.js.map +0 -1
  280. package/esm2015/grid-material/src/lib/directives/sd-let.directive.js +0 -29
  281. package/esm2015/service/src/lib/typings/date.extension.js +0 -143
  282. package/esm2015/service/src/lib/typings/index.js +0 -4
  283. package/esm2015/service/src/lib/typings/number.extension.js +0 -33
  284. package/esm2015/service/src/lib/typings/string.extension.js +0 -23
  285. package/esm2015/typing/index.js +0 -2
  286. package/esm2015/typing/sd-angular-core-typing.js +0 -5
  287. package/esm2015/typing/src/lib/typing/date.extension.js +0 -143
  288. package/esm2015/typing/src/lib/typing/index.js +0 -4
  289. package/esm2015/typing/src/lib/typing/number.extension.js +0 -33
  290. package/esm2015/typing/src/lib/typing/string.extension.js +0 -23
  291. package/esm2015/typing/src/lib/typing.service.js +0 -13
  292. package/esm2015/typing/src/public-api.js +0 -3
  293. package/fesm2015/sd-angular-core-typing.js +0 -215
  294. package/fesm2015/sd-angular-core-typing.js.map +0 -1
  295. package/service/src/lib/typings/index.d.ts +0 -3
  296. package/service/src/lib/typings/string.extension.d.ts +0 -8
  297. package/typing/index.d.ts +0 -1
  298. package/typing/package.json +0 -12
  299. package/typing/sd-angular-core-typing.d.ts +0 -4
  300. package/typing/sd-angular-core-typing.metadata.json +0 -1
  301. package/typing/src/lib/typing/date.extension.d.ts +0 -24
  302. package/typing/src/lib/typing/index.d.ts +0 -3
  303. package/typing/src/lib/typing/number.extension.d.ts +0 -9
  304. package/typing/src/lib/typing.service.d.ts +0 -3
  305. package/typing/src/public-api.d.ts +0 -2
@@ -1,7 +1,286 @@
1
- import { Directive, TemplateRef, NgModule } from '@angular/core';
1
+ import { of, Subject } from 'rxjs';
2
+ import { Directive, TemplateRef, ViewContainerRef, Input, NgModule } from '@angular/core';
2
3
  import { CommonModule } from '@angular/common';
3
4
  import { FormControl } from '@angular/forms';
4
- import { Subject } from 'rxjs';
5
+
6
+ Array.prototype.search = function (searchText, fields) {
7
+ const items = this;
8
+ if (!(searchText === null || searchText === void 0 ? void 0 : searchText.toString())) {
9
+ return items;
10
+ }
11
+ if (Array.isArray(fields)) {
12
+ const fs = fields.filter(e => e !== undefined && e !== null && e !== '');
13
+ if (!fs.length) {
14
+ return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));
15
+ }
16
+ return items.filter(item => item !== undefined && item !== null && fs.some(field => String.aliasIncludes(item[field], searchText)));
17
+ }
18
+ if (!fields) {
19
+ return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));
20
+ }
21
+ return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item[fields], searchText));
22
+ };
23
+ Array.prototype.paging = function (pageSize, page = 0) {
24
+ const items = this;
25
+ return items.filter((item, index) => {
26
+ return index >= page * pageSize
27
+ && index < (page + 1) * pageSize;
28
+ });
29
+ };
30
+ Array.prototype.toObject = function (key) {
31
+ const items = this;
32
+ if (!key) {
33
+ return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item === null || item === void 0 ? void 0 : item.toString()] = item; return obj; }, {});
34
+ }
35
+ return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item[key]] = item; return obj; }, {});
36
+ };
37
+ Array.prototype.union = function (key, ...args) {
38
+ let results = this;
39
+ const filterUnion = (val, index, self) => val !== undefined && val !== null && self.findIndex((e) => !!key ? e[key] === val[key] : e === val) === index;
40
+ if (!(args === null || args === void 0 ? void 0 : args.length)) {
41
+ return results.filter(filterUnion);
42
+ }
43
+ for (const arg of args) {
44
+ if (Array.isArray(arg)) {
45
+ results = [...results, ...arg].filter(filterUnion);
46
+ }
47
+ }
48
+ return results;
49
+ };
50
+ Array.prototype.asObservable = function () {
51
+ const items = this;
52
+ return of(items);
53
+ };
54
+ Array.search = (items, searchText, fields) => {
55
+ if (!Array.isArray(items)) {
56
+ return [];
57
+ }
58
+ return items.search(searchText, fields);
59
+ };
60
+ Array.union = (key, ...args) => {
61
+ return [].union(key, args);
62
+ };
63
+ Array.toObject = (items, key) => {
64
+ if (!Array.isArray(items)) {
65
+ return {};
66
+ }
67
+ return items.toObject(key);
68
+ };
69
+
70
+ Date.equal = (date1, date2) => {
71
+ if (!Date.isDate(date1) && !Date.isDate(date2)) {
72
+ return true;
73
+ }
74
+ if (!Date.isDate(date1) || !Date.isDate(date2)) {
75
+ return false;
76
+ }
77
+ return new Date(date1).getTime() === new Date(date2).getTime();
78
+ };
79
+ Date.parseFrom = (value, format) => {
80
+ if (!value) {
81
+ return null;
82
+ }
83
+ if (!format) {
84
+ return null;
85
+ }
86
+ value = value.toString();
87
+ const dmy = format.indexOf('dd') > -1 && format.indexOf('MM') > -1 && format.indexOf('yyyy') > -1;
88
+ const hms = format.indexOf('HH') > -1 || format.indexOf('mm') > -1 || format.indexOf('ss') > -1;
89
+ let strDate = '';
90
+ if (dmy) {
91
+ const dd = value.substr(format.indexOf('dd'), 'dd'.length);
92
+ const MM = value.substr(format.indexOf('MM'), 'MM'.length);
93
+ const yyyy = value.substr(format.indexOf('yyyy'), 'yyyy'.length);
94
+ if (+yyyy > 0 && +MM > 0 && +dd > 0) {
95
+ strDate += `${MM}/${dd}/${yyyy}`;
96
+ }
97
+ else {
98
+ return null;
99
+ }
100
+ }
101
+ else {
102
+ const today = new Date();
103
+ const yyyy = today.getFullYear().toString();
104
+ const MM = (today.getMonth() + 1).toString().padStart(2, '0');
105
+ const dd = today.getDate().toString().padStart(2, '0');
106
+ strDate += `${MM}/${dd}/${yyyy}`;
107
+ }
108
+ if (hms) {
109
+ const HH = format.indexOf('HH') > -1 ? value.substr(format.indexOf('HH'), 'HH'.length) : '00';
110
+ const mm = format.indexOf('mm') > -1 ? value.substr(format.indexOf('mm'), 'mm'.length) : '00';
111
+ const ss = format.indexOf('ss') > -1 ? value.substr(format.indexOf('ss'), 'ss'.length) : '00';
112
+ strDate += ` ${HH || '00'}:${mm || '00'}:${ss || '00'}`;
113
+ }
114
+ if (!Date.isDate(strDate)) {
115
+ return null;
116
+ }
117
+ return new Date(strDate);
118
+ };
119
+ Date.isDate = (value) => {
120
+ if (!value) {
121
+ return false;
122
+ }
123
+ const date = new Date(value);
124
+ return !isNaN(date.getTime());
125
+ };
126
+ Date.toFormat = (value, format) => {
127
+ if (!Date.isDate(value)) {
128
+ return '';
129
+ }
130
+ const date = new Date(value);
131
+ return date.toFormat(format);
132
+ };
133
+ Date.addMiliseconds = (value, miliseconds) => {
134
+ if (!Date.isDate(value)) {
135
+ return null;
136
+ }
137
+ const date = new Date(value);
138
+ return date.addMiliseconds(miliseconds);
139
+ };
140
+ Date.addHours = (value, hours) => {
141
+ if (!Date.isDate(value)) {
142
+ return null;
143
+ }
144
+ const date = new Date(value);
145
+ return date.addHours(hours);
146
+ };
147
+ Date.addDays = (value, days) => {
148
+ if (!Date.isDate(value)) {
149
+ return null;
150
+ }
151
+ const date = new Date(value);
152
+ return date.addDays(days);
153
+ };
154
+ Date.addMonths = (value, months) => {
155
+ if (!Date.isDate(value)) {
156
+ return null;
157
+ }
158
+ const date = new Date(value);
159
+ return date.addMonths(months);
160
+ };
161
+ Date.begin = (value) => {
162
+ if (!Date.isDate(value)) {
163
+ return null;
164
+ }
165
+ return new Date(Date.toFormat(value, 'MM/dd/yyyy'));
166
+ };
167
+ Date.end = (value) => {
168
+ if (!Date.isDate(value)) {
169
+ return null;
170
+ }
171
+ return new Date(value).addDays(1).begin().addMiliseconds(-1);
172
+ };
173
+ Date.prototype.begin = function () {
174
+ return new Date(this.toFormat('MM/dd/yyyy'));
175
+ };
176
+ Date.prototype.end = function () {
177
+ const date = this;
178
+ return date.addDays(1).begin().addMiliseconds(-1);
179
+ };
180
+ Date.prototype.addMiliseconds = function (miliseconds) {
181
+ const date = this;
182
+ date.setMilliseconds(date.getMilliseconds() + miliseconds);
183
+ return date;
184
+ };
185
+ Date.prototype.addHours = function (hours) {
186
+ const date = this;
187
+ date.setHours(date.getHours() + hours);
188
+ return date;
189
+ };
190
+ Date.prototype.addDays = function (days) {
191
+ const date = this;
192
+ date.setDate(date.getDate() + days);
193
+ return date;
194
+ };
195
+ Date.prototype.addMonths = function (months) {
196
+ const date = this;
197
+ date.setMonth(date.getMonth() + months);
198
+ return date;
199
+ };
200
+ Date.prototype.toFormat = function (format) {
201
+ const date = this;
202
+ let result = format;
203
+ result = result.replace('yyyy', date.getFullYear().toString());
204
+ result = result.replace('MM', (date.getMonth() + 1).toString().padStart(2, '0'));
205
+ result = result.replace('dd', date.getDate().toString().padStart(2, '0'));
206
+ result = result.replace('HH', date.getHours().toString().padStart(2, '0'));
207
+ result = result.replace('mm', date.getMinutes().toString().padStart(2, '0'));
208
+ result = result.replace('ss', date.getSeconds().toString().padStart(2, '0'));
209
+ return result;
210
+ };
211
+
212
+ Number.toVNCurrency = (value) => {
213
+ value = (value !== null && value !== void 0 ? value : '').toString().replace(/,/g, '');
214
+ if (!value) {
215
+ return null;
216
+ }
217
+ const val = +value;
218
+ if (!Number.isNaN(val)) {
219
+ return val.toLocaleString('vi-VN');
220
+ }
221
+ return null;
222
+ };
223
+ Number.isPositiveInteger = (value) => {
224
+ if (!value) {
225
+ return false;
226
+ }
227
+ const regex = /^([0-9]*)$/;
228
+ return regex.test(value) && +value > 0;
229
+ };
230
+ Number.isPositiveNumber = (value) => {
231
+ if (!value) {
232
+ return false;
233
+ }
234
+ const regex = /^([0-9]*)(\.[0-9]+$){0,1}$/;
235
+ return regex.test(value) && +value > 0;
236
+ };
237
+ Number.isNumber = (value) => {
238
+ if (value === undefined || value === null || value === '') {
239
+ return false;
240
+ }
241
+ return !Number.isNaN(+value);
242
+ };
243
+
244
+ String.isValidEmail = (value) => {
245
+ if (!value) {
246
+ return false;
247
+ }
248
+ const re = /^(([^<>()\[\]\.,;:\s@\"]+(\.[^<>()\[\]\.,;:\s@\"]+)*)|(\".+\"))@(([^<>()[\]\.,;:\s@\"]+\.)+[^<>()[\]\.,;:\s@\"]{2,})$/i;
249
+ return re.test(value);
250
+ };
251
+ String.isValidPhone = (value) => {
252
+ if (!value) {
253
+ return false;
254
+ }
255
+ const re = /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\s\./0-9]*$/;
256
+ return re.test(value);
257
+ };
258
+ String.isValidCode = (value) => {
259
+ if (!value) {
260
+ return false;
261
+ }
262
+ const re = /^[a-zA-Z0-9\@\_\-]{2,20}$/;
263
+ return re.test(value);
264
+ };
265
+ String.changeAliasLowerCase = (alias) => {
266
+ var _a;
267
+ let str = (_a = alias === null || alias === void 0 ? void 0 : alias.toString()) !== null && _a !== void 0 ? _a : '';
268
+ str = str.toString().toLowerCase();
269
+ str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');
270
+ str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');
271
+ str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');
272
+ str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');
273
+ str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');
274
+ str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');
275
+ str = str.replace(/đ/g, 'd');
276
+ str = str.replace(/!|@|%|\^|\*|\(|\)|\+|\=|\<|\>|\?|\/|,|\.|\:|\;|\'|\"|\&|\#|\[|\]|~|\$|_|`|-|{|}|\||\\/g, ' ');
277
+ str = str.replace(/ + /g, ' ');
278
+ str = str.trim();
279
+ return str;
280
+ };
281
+ String.aliasIncludes = (alias, searchText) => {
282
+ return String.changeAliasLowerCase(alias).includes(String.changeAliasLowerCase(searchText));
283
+ };
5
284
 
6
285
  class SdViewDefDirective {
7
286
  // @Input() sdViewDef: string;
@@ -18,6 +297,35 @@ SdViewDefDirective.ctorParameters = () => [
18
297
  { type: TemplateRef }
19
298
  ];
20
299
 
300
+ class SdLetDirective {
301
+ constructor(vcRef, templateRef) {
302
+ this.vcRef = vcRef;
303
+ this.templateRef = templateRef;
304
+ this.context = {};
305
+ }
306
+ set sdLet(context) {
307
+ this.context.$implicit = this.context.sdLet = context;
308
+ this.updateView();
309
+ }
310
+ updateView() {
311
+ this.vcRef.clear();
312
+ this.vcRef.createEmbeddedView(this.templateRef, this.context);
313
+ }
314
+ }
315
+ SdLetDirective.decorators = [
316
+ { type: Directive, args: [{
317
+ selector: '[sdLet]',
318
+ },] }
319
+ ];
320
+ SdLetDirective.ctorParameters = () => [
321
+ { type: ViewContainerRef },
322
+ { type: TemplateRef }
323
+ ];
324
+ SdLetDirective.propDecorators = {
325
+ sdLet: [{ type: Input }]
326
+ };
327
+
328
+ // import './typings';
21
329
  class SdCommonModule {
22
330
  }
23
331
  SdCommonModule.decorators = [
@@ -26,10 +334,12 @@ SdCommonModule.decorators = [
26
334
  CommonModule
27
335
  ],
28
336
  declarations: [
29
- SdViewDefDirective
337
+ SdViewDefDirective,
338
+ SdLetDirective
30
339
  ],
31
340
  exports: [
32
- SdViewDefDirective
341
+ SdViewDefDirective,
342
+ SdLetDirective
33
343
  ],
34
344
  providers: []
35
345
  },] }
@@ -50,5 +360,5 @@ class SdFormControl extends FormControl {
50
360
  * Generated bundle index. Do not edit.
51
361
  */
52
362
 
53
- export { SdCommonModule, SdFormControl, SdViewDefDirective };
363
+ export { SdCommonModule, SdFormControl, SdLetDirective, SdViewDefDirective };
54
364
  //# sourceMappingURL=sd-angular-core-common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-common.js","sources":["../../../../projects/sd-core/common/src/lib/directives/view-def.directive.ts","../../../../projects/sd-core/common/src/lib/common.module.ts","../../../../projects/sd-core/common/src/lib/models/sd-form-control.ts","../../../../projects/sd-core/common/sd-angular-core-common.ts"],"sourcesContent":["import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdViewDef]'\r\n})\r\nexport class SdViewDefDirective {\r\n // @Input() sdViewDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdViewDefDirective } from './directives/view-def.directive';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdViewDefDirective\r\n ],\r\n exports: [\r\n SdViewDefDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommonModule { }\r\n","import { FormControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nexport class SdFormControl extends FormControl {\r\n touchedChanges: Subject<boolean> = new Subject<boolean>();\r\n\r\n constructor(\r\n formState?: Object,\r\n validator: ValidatorFn | ValidatorFn[] = null,\r\n asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] = null\r\n ) {\r\n super(formState, validator, asyncValidator);\r\n }\r\n\r\n markAsTouched({ onlySelf }: { onlySelf?: boolean } = {}): void {\r\n super.markAsTouched({ onlySelf });\r\n this.touchedChanges.next(true);\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;MAKa,kBAAkB;;IAE7B,YAAmB,WAA6B;QAA7B,gBAAW,GAAX,WAAW,CAAkB;KAAK;;;YALtD,SAAS,SAAC;gBACT,QAAQ,EAAE,aAAa;aACxB;;;YAJmB,WAAW;;;MCiBlB,cAAc;;;YAb1B,QAAQ,SAAC;gBACR,OAAO,EAAE;oBACP,YAAY;iBACb;gBACD,YAAY,EAAE;oBACZ,kBAAkB;iBACnB;gBACD,OAAO,EAAE;oBACP,kBAAkB;iBACnB;gBACD,SAAS,EAAE,EACV;aACF;;;MCdY,aAAc,SAAQ,WAAW;IAG5C,YACE,SAAkB,EAClB,YAAyC,IAAI,EAC7C,iBAAwD,IAAI;QAE5D,KAAK,CAAC,SAAS,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;QAP9C,mBAAc,GAAqB,IAAI,OAAO,EAAW,CAAC;KAQzD;IAED,aAAa,CAAC,EAAE,QAAQ,KAA6B,EAAE;QACrD,KAAK,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAChC;;;AChBH;;;;;;"}
1
+ {"version":3,"file":"sd-angular-core-common.js","sources":["../../../../projects/sd-core/common/src/lib/typings/array.extension.ts","../../../../projects/sd-core/common/src/lib/typings/date.extension.ts","../../../../projects/sd-core/common/src/lib/typings/number.extension.ts","../../../../projects/sd-core/common/src/lib/typings/string.extension.ts","../../../../projects/sd-core/common/src/lib/directives/view-def.directive.ts","../../../../projects/sd-core/common/src/lib/directives/sd-let.directive.ts","../../../../projects/sd-core/common/src/lib/common.module.ts","../../../../projects/sd-core/common/src/lib/models/sd-form-control.ts","../../../../projects/sd-core/common/sd-angular-core-common.ts"],"sourcesContent":["import { Observable, of } from 'rxjs';\r\n\r\nexport { };\r\n\r\ndeclare global {\r\n interface Array<T = any> {\r\n search(searchText: string | number, fields?: string | string[]): T[];\r\n paging(pageSize: number, page?: number): T[];\r\n toObject(key?: string): { [key: string]: T };\r\n union(key: string, ...args: T[][]): T[];\r\n asObservable(): Observable<T[]>\r\n }\r\n interface ArrayConstructor {\r\n search<T = any>(items: T[], searchText: string | number, fields?: string | string[]): T[];\r\n union<T = any>(key: string, ...args: T[][]): T[];\r\n toObject<T = any>(items: T[], key?: string): { [key: string]: T };\r\n }\r\n}\r\n\r\nArray.prototype.search = function <T = any>(searchText: any, fields?: string | string[]): T[] {\r\n const items: T[] = this;\r\n if (!searchText?.toString()) {\r\n return items;\r\n }\r\n if (Array.isArray(fields)) {\r\n const fs = fields.filter(e => e !== undefined && e !== null && e !== '');\r\n if (!fs.length) {\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));\r\n }\r\n return items.filter(item => item !== undefined && item !== null && fs.some(field => String.aliasIncludes(item[field], searchText)));\r\n }\r\n if (!fields) {\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item, searchText));\r\n }\r\n return items.filter(item => item !== undefined && item !== null && String.aliasIncludes(item[fields], searchText));\r\n};\r\n\r\nArray.prototype.paging = function <T = any>(pageSize: number, page: number = 0): T[] {\r\n const items: T[] = this;\r\n return items.filter((item, index) => {\r\n return index >= page * pageSize\r\n && index < (page + 1) * pageSize;\r\n });\r\n};\r\n\r\nArray.prototype.toObject = function <T = any>(key: string): { [key: string]: T } {\r\n const items: T[] = this;\r\n if (!key) {\r\n return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item?.toString()] = item; return obj; }, {});\r\n }\r\n return items.filter(item => item !== undefined && item !== null).reduce((obj, item) => { obj[item[key]] = item; return obj; }, {});\r\n};\r\n\r\nArray.prototype.union = function <T = any>(key: string, ...args: T[][]) {\r\n let results: T[] = this;\r\n const filterUnion = <T = any>(val: T, index: number, self: T[]) => val !== undefined && val !== null && self.findIndex((e: { [x: string]: any; }) => !!key ? e[key] === val[key] : e === val) === index;\r\n if (!args?.length) {\r\n return results.filter(filterUnion);\r\n }\r\n for (const arg of args) {\r\n if (Array.isArray(arg)) {\r\n results = [...results, ...arg].filter(filterUnion);\r\n }\r\n }\r\n return results;\r\n}\r\n\r\nArray.prototype.asObservable = function <T = any>() {\r\n const items: T[] = this;\r\n return of(items);\r\n}\r\n\r\nArray.search = <T = any>(items: T[], searchText: string | number, fields?: string | string[]) => {\r\n if (!Array.isArray(items)) {\r\n return [];\r\n }\r\n return items.search(searchText, fields);\r\n};\r\n\r\nArray.union = <T = any>(key: string, ...args: T[][]) => {\r\n return [].union(key, args);\r\n}\r\n\r\nArray.toObject = <T>(items: T[], key?: string): { [key: string]: T } => {\r\n if (!Array.isArray(items)) {\r\n return {};\r\n }\r\n return items.toObject(key);\r\n}\r\n\r\n","export { };\r\n\r\ndeclare global {\r\n interface Date {\r\n begin(): Date;\r\n end(): Date;\r\n addMiliseconds(miliseconds: number): Date;\r\n addHours(hours: number): Date;\r\n addDays(days: number): Date;\r\n addMonths(months: number): Date;\r\n toFormat(format: string): string;\r\n }\r\n interface DateConstructor {\r\n equal(date1: any, date2: any): boolean;\r\n parseFrom(value: any, format: string): Date;\r\n isDate(value: any): boolean;\r\n toFormat(value: any, format: string): string;\r\n addMiliseconds(value: any, miliseconds: number): Date;\r\n addHours(value: any, hours: number): Date;\r\n addDays(value: any, days: number): Date;\r\n addMonths(value: any, months: number): Date;\r\n begin(value: any): Date;\r\n end(value: any): Date;\r\n }\r\n}\r\n\r\nDate.equal = (date1: any, date2: any) => {\r\n if (!Date.isDate(date1) && !Date.isDate(date2)) {\r\n return true;\r\n }\r\n if (!Date.isDate(date1) || !Date.isDate(date2)) {\r\n return false;\r\n }\r\n return new Date(date1).getTime() === new Date(date2).getTime();\r\n};\r\n\r\nDate.parseFrom = (value: any, format: string) => {\r\n if (!value) {\r\n return null;\r\n }\r\n if (!format) {\r\n return null;\r\n }\r\n value = value.toString();\r\n const dmy = format.indexOf('dd') > -1 && format.indexOf('MM') > -1 && format.indexOf('yyyy') > -1;\r\n const hms = format.indexOf('HH') > -1 || format.indexOf('mm') > -1 || format.indexOf('ss') > -1;\r\n let strDate = '';\r\n if (dmy) {\r\n const dd = value.substr(format.indexOf('dd'), 'dd'.length);\r\n const MM = value.substr(format.indexOf('MM'), 'MM'.length);\r\n const yyyy = value.substr(format.indexOf('yyyy'), 'yyyy'.length);\r\n if (+yyyy > 0 && +MM > 0 && +dd > 0) {\r\n strDate += `${MM}/${dd}/${yyyy}`;\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n const today = new Date();\r\n const yyyy = today.getFullYear().toString();\r\n const MM = (today.getMonth() + 1).toString().padStart(2, '0');\r\n const dd = today.getDate().toString().padStart(2, '0');\r\n strDate += `${MM}/${dd}/${yyyy}`;\r\n }\r\n if (hms) {\r\n const HH = format.indexOf('HH') > -1 ? value.substr(format.indexOf('HH'), 'HH'.length) : '00';\r\n const mm = format.indexOf('mm') > -1 ? value.substr(format.indexOf('mm'), 'mm'.length) : '00';\r\n const ss = format.indexOf('ss') > -1 ? value.substr(format.indexOf('ss'), 'ss'.length) : '00';\r\n strDate += ` ${HH || '00'}:${mm || '00'}:${ss || '00'}`;\r\n }\r\n if (!Date.isDate(strDate)) {\r\n return null;\r\n }\r\n return new Date(strDate);\r\n};\r\n\r\nDate.isDate = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const date = new Date(value);\r\n return !isNaN(date.getTime());\r\n};\r\n\r\nDate.toFormat = (value: any, format: string): string => {\r\n if (!Date.isDate(value)) {\r\n return '';\r\n }\r\n const date: Date = new Date(value);\r\n return date.toFormat(format);\r\n};\r\n\r\nDate.addMiliseconds = (value: any, miliseconds: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addMiliseconds(miliseconds);\r\n};\r\n\r\nDate.addHours = (value: any, hours: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addHours(hours);\r\n};\r\n\r\nDate.addDays = (value: any, days: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addDays(days);\r\n};\r\n\r\nDate.addMonths = (value: any, months: number): Date => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n const date: Date = new Date(value);\r\n return date.addMonths(months);\r\n};\r\n\r\nDate.begin = (value: any) => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n return new Date(Date.toFormat(value, 'MM/dd/yyyy'));\r\n};\r\n\r\nDate.end = (value: any) => {\r\n if (!Date.isDate(value)) {\r\n return null;\r\n }\r\n return new Date(value).addDays(1).begin().addMiliseconds(-1);\r\n};\r\n\r\nDate.prototype.begin = function () {\r\n return new Date(this.toFormat('MM/dd/yyyy'));\r\n};\r\n\r\nDate.prototype.end = function () {\r\n const date: Date = this;\r\n return date.addDays(1).begin().addMiliseconds(-1);\r\n};\r\n\r\nDate.prototype.addMiliseconds = function (miliseconds: number) {\r\n const date: Date = this;\r\n date.setMilliseconds(date.getMilliseconds() + miliseconds);\r\n return date;\r\n};\r\n\r\nDate.prototype.addHours = function (hours: number) {\r\n const date: Date = this;\r\n date.setHours(date.getHours() + hours);\r\n return date;\r\n};\r\n\r\nDate.prototype.addDays = function (days: number) {\r\n const date: Date = this;\r\n date.setDate(date.getDate() + days);\r\n return date;\r\n};\r\n\r\nDate.prototype.addMonths = function (months: number) {\r\n const date: Date = this;\r\n date.setMonth(date.getMonth() + months);\r\n return date;\r\n};\r\n\r\nDate.prototype.toFormat = function (format: string) {\r\n const date: Date = this;\r\n let result = format;\r\n result = result.replace('yyyy', date.getFullYear().toString());\r\n result = result.replace('MM', (date.getMonth() + 1).toString().padStart(2, '0'));\r\n result = result.replace('dd', date.getDate().toString().padStart(2, '0'));\r\n result = result.replace('HH', date.getHours().toString().padStart(2, '0'));\r\n result = result.replace('mm', date.getMinutes().toString().padStart(2, '0'));\r\n result = result.replace('ss', date.getSeconds().toString().padStart(2, '0'));\r\n return result;\r\n};\r\n","export { };\r\n\r\ndeclare global {\r\n interface NumberConstructor {\r\n toVNCurrency(value: any): string;\r\n isNumber(value: any): boolean;\r\n isPositiveInteger(value: any): boolean;\r\n isPositiveNumber(value: any): boolean;\r\n }\r\n}\r\n\r\nNumber.toVNCurrency = (value: any) => {\r\n value = (value ?? '').toString().replace(/,/g, '');\r\n if (!value) {\r\n return null;\r\n }\r\n const val = +value;\r\n if (!Number.isNaN(val)) {\r\n return val.toLocaleString('vi-VN');\r\n }\r\n return null;\r\n};\r\n\r\nNumber.isPositiveInteger = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const regex = /^([0-9]*)$/;\r\n return regex.test(value) && +value > 0;\r\n};\r\n\r\nNumber.isPositiveNumber = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const regex = /^([0-9]*)(\\.[0-9]+$){0,1}$/;\r\n return regex.test(value) && +value > 0;\r\n};\r\n\r\nNumber.isNumber = (value: any) => {\r\n if (value === undefined || value === null || value === '') {\r\n return false;\r\n }\r\n return !Number.isNaN(+value);\r\n};\r\n","export { };\r\n\r\ndeclare global {\r\n interface StringConstructor {\r\n isValidEmail(value: any): boolean;\r\n isValidPhone(value: any): boolean;\r\n isValidCode(value: any): boolean;\r\n changeAliasLowerCase(alias: any): string;\r\n aliasIncludes(alias: any, searchText: any): boolean;\r\n }\r\n}\r\n\r\nString.isValidEmail = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^(([^<>()\\[\\]\\.,;:\\s@\\\"]+(\\.[^<>()\\[\\]\\.,;:\\s@\\\"]+)*)|(\\\".+\\\"))@(([^<>()[\\]\\.,;:\\s@\\\"]+\\.)+[^<>()[\\]\\.,;:\\s@\\\"]{2,})$/i;\r\n return re.test(value);\r\n};\r\n\r\nString.isValidPhone = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^[+]*[(]{0,1}[0-9]{1,4}[)]{0,1}[-\\s\\./0-9]*$/;\r\n return re.test(value);\r\n};\r\n\r\nString.isValidCode = (value: any) => {\r\n if (!value) {\r\n return false;\r\n }\r\n const re = /^[a-zA-Z0-9\\@\\_\\-]{2,20}$/;\r\n return re.test(value);\r\n};\r\n\r\nString.changeAliasLowerCase = (alias: any) => {\r\n let str: string = alias?.toString() ?? '';\r\n str = str.toString().toLowerCase();\r\n str = str.replace(/à|á|ạ|ả|ã|â|ầ|ấ|ậ|ẩ|ẫ|ă|ằ|ắ|ặ|ẳ|ẵ/g, 'a');\r\n str = str.replace(/è|é|ẹ|ẻ|ẽ|ê|ề|ế|ệ|ể|ễ/g, 'e');\r\n str = str.replace(/ì|í|ị|ỉ|ĩ/g, 'i');\r\n str = str.replace(/ò|ó|ọ|ỏ|õ|ô|ồ|ố|ộ|ổ|ỗ|ơ|ờ|ớ|ợ|ở|ỡ/g, 'o');\r\n str = str.replace(/ù|ú|ụ|ủ|ũ|ư|ừ|ứ|ự|ử|ữ/g, 'u');\r\n str = str.replace(/ỳ|ý|ỵ|ỷ|ỹ/g, 'y');\r\n str = str.replace(/đ/g, 'd');\r\n str = str.replace(/!|@|%|\\^|\\*|\\(|\\)|\\+|\\=|\\<|\\>|\\?|\\/|,|\\.|\\:|\\;|\\'|\\\"|\\&|\\#|\\[|\\]|~|\\$|_|`|-|{|}|\\||\\\\/g, ' ');\r\n str = str.replace(/ + /g, ' ');\r\n str = str.trim();\r\n return str;\r\n}\r\n\r\nString.aliasIncludes = (alias: any, searchText: any) => {\r\n return String.changeAliasLowerCase(alias).includes(String.changeAliasLowerCase(searchText));\r\n}","import { Directive, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[sdViewDef]'\r\n})\r\nexport class SdViewDefDirective {\r\n // @Input() sdViewDef: string;\r\n constructor(public templateRef: TemplateRef<any>) { }\r\n}\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from \"@angular/core\";\r\n@Directive({\r\n selector: '[sdLet]',\r\n})\r\nexport class SdLetDirective {\r\n @Input()\r\n set sdLet(context: any) {\r\n this.context.$implicit = this.context.sdLet = context;\r\n this.updateView();\r\n }\r\n context: any = {};\r\n\r\n constructor(private vcRef: ViewContainerRef, private templateRef: TemplateRef<any>) { }\r\n\r\n updateView() {\r\n this.vcRef.clear();\r\n this.vcRef.createEmbeddedView(this.templateRef, this.context);\r\n }\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { SdViewDefDirective } from './directives/view-def.directive';\r\nimport { SdLetDirective } from './directives/sd-let.directive';\r\n// import './typings';\r\n@NgModule({\r\n imports: [\r\n CommonModule\r\n ],\r\n declarations: [\r\n SdViewDefDirective,\r\n SdLetDirective\r\n ],\r\n exports: [\r\n SdViewDefDirective,\r\n SdLetDirective\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdCommonModule { }\r\n","import { FormControl, AsyncValidatorFn, ValidatorFn } from '@angular/forms';\r\nimport { Subject } from 'rxjs';\r\nexport class SdFormControl extends FormControl {\r\n touchedChanges: Subject<boolean> = new Subject<boolean>();\r\n\r\n constructor(\r\n formState?: Object,\r\n validator: ValidatorFn | ValidatorFn[] = null,\r\n asyncValidator: AsyncValidatorFn | AsyncValidatorFn[] = null\r\n ) {\r\n super(formState, validator, asyncValidator);\r\n }\r\n\r\n markAsTouched({ onlySelf }: { onlySelf?: boolean } = {}): void {\r\n super.markAsTouched({ onlySelf });\r\n this.touchedChanges.next(true);\r\n }\r\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import '@sd-angular/core/typing';
1
+ import '@sd-angular/core/common';
2
2
  import { EventEmitter, Component, Input, Output, NgModule } from '@angular/core';
3
3
  import { CommonModule } from '@angular/common';
4
4
  import { FormControl, NgForm, FormsModule, ReactiveFormsModule } from '@angular/forms';
@@ -1 +1 @@
1
- {"version":3,"file":"sd-angular-core-date-range.js","sources":["../../../../projects/sd-core/date-range/src/lib/date-range.component.ts","../../../../projects/sd-core/date-range/src/lib/date-range.module.ts","../../../../projects/sd-core/date-range/sd-angular-core-date-range.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n OnDestroy,\r\n AfterViewInit,\r\n OnInit\r\n} from '@angular/core';\r\n\r\nimport { FormControl, FormGroup, NgForm } from '@angular/forms';\r\nimport { MatDatepickerInputEvent, } from '@angular/material/datepicker';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport moment, { Moment } from 'moment';\r\nimport * as uuid from 'uuid';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\nimport '@sd-angular/core/typing';\r\n\r\nconst CUSTOM_DATE_FORMATS = {\r\n parse: {\r\n dateInput: 'DD/MM/YYYY'\r\n },\r\n display: {\r\n dateInput: 'DD/MM/YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'sd-date-range',\r\n templateUrl: './date-range.component.html',\r\n styleUrls: ['./date-range.component.scss'],\r\n providers: [{ provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }],\r\n})\r\nexport class SdDateRange implements OnDestroy, OnInit, AfterViewInit {\r\n id1 = `I${uuid.v4()}`;\r\n id2 = `I${uuid.v4()}`;\r\n #from: any = null;\r\n #to: any = null;\r\n isMobileOrTablet = false;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n formControl = new FormControl();\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n // @Input() disabled = false;\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @Input() required = false;\r\n @Input() label: string;\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n min: Date;\r\n @Input('min') set _min(val: string) {\r\n if (Date.isDate(val)) {\r\n this.min = new Date(val);\r\n } else {\r\n this.min = null;\r\n }\r\n }\r\n max: Date;\r\n @Input('max') set _max(val: string) {\r\n if (Date.isDate(val)) {\r\n this.max = new Date(val);\r\n } else {\r\n this.max = null;\r\n }\r\n }\r\n @Input() set from(val: any) {\r\n if (!Date.isDate(val)) {\r\n val = null;\r\n }\r\n if (this.#from !== val) {\r\n this.#from = val;\r\n this.#onChanges();\r\n }\r\n }\r\n @Input() set to(val: any) {\r\n if (!Date.isDate(val)) {\r\n val = null;\r\n }\r\n if (this.#to !== val) {\r\n this.#to = val;\r\n this.#onChanges();\r\n }\r\n }\r\n @Output() sdChange = new EventEmitter<{ from: Date, to: Date }>();\r\n @Output() fromChange = new EventEmitter();\r\n @Output() toChange = new EventEmitter();\r\n\r\n control1 = new FormControl();\r\n #c1 = uuid.v4();\r\n control2 = new FormControl();\r\n #c2 = uuid.v4();\r\n #subscription = new Subscription();\r\n constructor(\r\n private detectorService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.detectorService.isDesktop();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#c1);\r\n this.#form?.removeControl(this.#c2);\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n this.#form?.addControl(this.#c1, this.control1);\r\n this.#form?.addControl(this.#c2, this.control2);\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(merge(this.control1.valueChanges, this.control2.valueChanges).pipe(debounceTime(500)).subscribe(() => {\r\n const from = this.control1.value?.toDate() || null;\r\n const to = this.control2.value?.toDate() || null;\r\n if (this.#from !== from || this.#to !== to) {\r\n if (from && to) {\r\n this.sdChange.emit({\r\n from,\r\n to\r\n });\r\n } else if (!from && !to) {\r\n this.sdChange.emit({\r\n from: null,\r\n to: null\r\n });\r\n }\r\n }\r\n }));\r\n this.#onChanges();\r\n }\r\n\r\n #onChanges = () => {\r\n const from = Date.isDate(this.#from) ? moment(Date.toFormat(this.#from, 'MM/dd/yyyy HH:mm:ss'), 'MM/DD/YYYY HH:mm:ss') : null;\r\n const to = Date.isDate(this.#to) ? moment(Date.toFormat(this.#to, 'MM/dd/yyyy HH:mm:ss'), 'MM/DD/YYYY HH:mm:ss') : null;\r\n this.control1.setValue(from, {\r\n emitEvent: false\r\n });\r\n this.control2.setValue(to, {\r\n emitEvent: false\r\n });\r\n this.formControl.setValue({\r\n from: from,\r\n to: to\r\n }, {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n onStartChange = (event: MatDatepickerInputEvent<Moment>) => {\r\n const value = event.value?.toDate() || null;\r\n if (value) {\r\n if (new Date(this.#from) !== value) {\r\n this.#from = value;\r\n this.fromChange.emit(value);\r\n }\r\n } else {\r\n this.#from = null;\r\n this.fromChange.emit(null);\r\n }\r\n }\r\n\r\n onEndChange = (event: MatDatepickerInputEvent<Moment>) => {\r\n const value = event.value?.toDate() || null;\r\n if (value) {\r\n if (new Date(this.#to) !== value) {\r\n this.#to = value;\r\n this.toChange.emit(value);\r\n }\r\n } else {\r\n this.#to = null;\r\n this.toChange.emit(null);\r\n }\r\n }\r\n\r\n clear = () => {\r\n this.control1.setValue(null, {\r\n emitEvent: false\r\n });\r\n this.control2.setValue(null, {\r\n emitEvent: false\r\n });\r\n this.formControl.setValue({\r\n from: null,\r\n to: null\r\n }, {\r\n emitEvent: false\r\n });\r\n this.#from = null;\r\n this.#to = null;\r\n this.fromChange.emit(null);\r\n this.toChange.emit(null);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\r\nimport { SdDateRange } from './date-range.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\nimport '@sd-angular/core/typing';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatDatepickerModule,\r\n MatMomentDateModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdDateRange\r\n ],\r\n exports: [\r\n SdDateRange\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdDateRangeModule {\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
1
+ {"version":3,"file":"sd-angular-core-date-range.js","sources":["../../../../projects/sd-core/date-range/src/lib/date-range.component.ts","../../../../projects/sd-core/date-range/src/lib/date-range.module.ts","../../../../projects/sd-core/date-range/sd-angular-core-date-range.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n EventEmitter,\r\n Output,\r\n OnDestroy,\r\n AfterViewInit,\r\n OnInit\r\n} from '@angular/core';\r\n\r\nimport { FormControl, FormGroup, NgForm } from '@angular/forms';\r\nimport { MatDatepickerInputEvent, } from '@angular/material/datepicker';\r\nimport { MAT_DATE_FORMATS } from '@angular/material/core';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\nimport moment, { Moment } from 'moment';\r\nimport * as uuid from 'uuid';\r\nimport { merge, Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\nconst CUSTOM_DATE_FORMATS = {\r\n parse: {\r\n dateInput: 'DD/MM/YYYY'\r\n },\r\n display: {\r\n dateInput: 'DD/MM/YYYY',\r\n monthYearLabel: 'MMM YYYY',\r\n dateA11yLabel: 'LL',\r\n monthYearA11yLabel: 'MMMM YYYY'\r\n }\r\n};\r\n\r\n@Component({\r\n selector: 'sd-date-range',\r\n templateUrl: './date-range.component.html',\r\n styleUrls: ['./date-range.component.scss'],\r\n providers: [{ provide: MAT_DATE_FORMATS, useValue: CUSTOM_DATE_FORMATS }],\r\n})\r\nexport class SdDateRange implements OnDestroy, OnInit, AfterViewInit {\r\n id1 = `I${uuid.v4()}`;\r\n id2 = `I${uuid.v4()}`;\r\n #from: any = null;\r\n #to: any = null;\r\n isMobileOrTablet = false;\r\n #name = uuid.v4();\r\n @Input() set name(val: string) {\r\n if (val) {\r\n this.#name = val;\r\n }\r\n }\r\n @Input() size: 'sm' | 'lg';\r\n #form: FormGroup;\r\n formControl = new FormControl();\r\n @Input() set form(val: NgForm | FormGroup) {\r\n if (val) {\r\n if (val instanceof NgForm) {\r\n this.#form = val.form;\r\n } else {\r\n this.#form = val;\r\n }\r\n }\r\n }\r\n // @Input() disabled = false;\r\n @Input() set disabled(val: boolean | '') {\r\n val = (val === '') || val;\r\n if (val) {\r\n this.formControl.disable();\r\n } else {\r\n this.formControl.enable();\r\n }\r\n }\r\n @Input() required = false;\r\n @Input() label: string;\r\n disableErrorMessage = false;\r\n @Input('disableErrorMessage') set _disableErrorMessage(val: boolean | '') {\r\n this.disableErrorMessage = (val === '') || val;\r\n val = (val === '') || val;\r\n }\r\n min: Date;\r\n @Input('min') set _min(val: string) {\r\n if (Date.isDate(val)) {\r\n this.min = new Date(val);\r\n } else {\r\n this.min = null;\r\n }\r\n }\r\n max: Date;\r\n @Input('max') set _max(val: string) {\r\n if (Date.isDate(val)) {\r\n this.max = new Date(val);\r\n } else {\r\n this.max = null;\r\n }\r\n }\r\n @Input() set from(val: any) {\r\n if (!Date.isDate(val)) {\r\n val = null;\r\n }\r\n if (this.#from !== val) {\r\n this.#from = val;\r\n this.#onChanges();\r\n }\r\n }\r\n @Input() set to(val: any) {\r\n if (!Date.isDate(val)) {\r\n val = null;\r\n }\r\n if (this.#to !== val) {\r\n this.#to = val;\r\n this.#onChanges();\r\n }\r\n }\r\n @Output() sdChange = new EventEmitter<{ from: Date, to: Date }>();\r\n @Output() fromChange = new EventEmitter();\r\n @Output() toChange = new EventEmitter();\r\n\r\n control1 = new FormControl();\r\n #c1 = uuid.v4();\r\n control2 = new FormControl();\r\n #c2 = uuid.v4();\r\n #subscription = new Subscription();\r\n constructor(\r\n private detectorService: DeviceDetectorService) {\r\n this.isMobileOrTablet = !this.detectorService.isDesktop();\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#form?.removeControl(this.#c1);\r\n this.#form?.removeControl(this.#c2);\r\n this.#form?.removeControl(this.#name);\r\n this.#subscription.unsubscribe();\r\n }\r\n\r\n ngOnInit() {\r\n this.#form?.addControl(this.#c1, this.control1);\r\n this.#form?.addControl(this.#c2, this.control2);\r\n this.#form?.addControl(this.#name, this.formControl);\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.#subscription.add(merge(this.control1.valueChanges, this.control2.valueChanges).pipe(debounceTime(500)).subscribe(() => {\r\n const from = this.control1.value?.toDate() || null;\r\n const to = this.control2.value?.toDate() || null;\r\n if (this.#from !== from || this.#to !== to) {\r\n if (from && to) {\r\n this.sdChange.emit({\r\n from,\r\n to\r\n });\r\n } else if (!from && !to) {\r\n this.sdChange.emit({\r\n from: null,\r\n to: null\r\n });\r\n }\r\n }\r\n }));\r\n this.#onChanges();\r\n }\r\n\r\n #onChanges = () => {\r\n const from = Date.isDate(this.#from) ? moment(Date.toFormat(this.#from, 'MM/dd/yyyy HH:mm:ss'), 'MM/DD/YYYY HH:mm:ss') : null;\r\n const to = Date.isDate(this.#to) ? moment(Date.toFormat(this.#to, 'MM/dd/yyyy HH:mm:ss'), 'MM/DD/YYYY HH:mm:ss') : null;\r\n this.control1.setValue(from, {\r\n emitEvent: false\r\n });\r\n this.control2.setValue(to, {\r\n emitEvent: false\r\n });\r\n this.formControl.setValue({\r\n from: from,\r\n to: to\r\n }, {\r\n emitEvent: false\r\n });\r\n }\r\n\r\n onStartChange = (event: MatDatepickerInputEvent<Moment>) => {\r\n const value = event.value?.toDate() || null;\r\n if (value) {\r\n if (new Date(this.#from) !== value) {\r\n this.#from = value;\r\n this.fromChange.emit(value);\r\n }\r\n } else {\r\n this.#from = null;\r\n this.fromChange.emit(null);\r\n }\r\n }\r\n\r\n onEndChange = (event: MatDatepickerInputEvent<Moment>) => {\r\n const value = event.value?.toDate() || null;\r\n if (value) {\r\n if (new Date(this.#to) !== value) {\r\n this.#to = value;\r\n this.toChange.emit(value);\r\n }\r\n } else {\r\n this.#to = null;\r\n this.toChange.emit(null);\r\n }\r\n }\r\n\r\n clear = () => {\r\n this.control1.setValue(null, {\r\n emitEvent: false\r\n });\r\n this.control2.setValue(null, {\r\n emitEvent: false\r\n });\r\n this.formControl.setValue({\r\n from: null,\r\n to: null\r\n }, {\r\n emitEvent: false\r\n });\r\n this.#from = null;\r\n this.#to = null;\r\n this.fromChange.emit(null);\r\n this.toChange.emit(null);\r\n this.sdChange.emit(this.formControl.value);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatDatepickerModule } from '@angular/material/datepicker';\r\nimport { MatMomentDateModule } from '@angular/material-moment-adapter';\r\nimport { SdDateRange } from './date-range.component';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { SdTranslateModule } from '@sd-angular/core/translate';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatDatepickerModule,\r\n MatMomentDateModule,\r\n SdTranslateModule\r\n ],\r\n declarations: [\r\n SdDateRange\r\n ],\r\n exports: [\r\n SdDateRange\r\n ],\r\n providers: [\r\n ]\r\n})\r\nexport class SdDateRangeModule {\r\n\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}