@messaia/cdk 14.0.0 → 15.0.0-rc02

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 (559) hide show
  1. package/esm2020/lib/base/base.module.mjs +8 -8
  2. package/esm2020/lib/base/components/base.component.mjs +3 -3
  3. package/esm2020/lib/base/components/dynamic-table-config-dialog.comnponent.mjs +21 -21
  4. package/esm2020/lib/base/components/generic-form-base.component.mjs +3 -3
  5. package/esm2020/lib/base/components/generic-form.component.mjs +3 -3
  6. package/esm2020/lib/base/components/generic-list.component.mjs +3 -3
  7. package/esm2020/lib/base/components/generic-reactive-form.component.mjs +3 -3
  8. package/esm2020/lib/base/interceptors/base.interceptor.mjs +3 -3
  9. package/esm2020/lib/base/interceptors/caching-interceptor.mjs +3 -3
  10. package/esm2020/lib/base/interceptors/loading.interceptor.mjs +3 -3
  11. package/esm2020/lib/base/services/file.service.mjs +3 -3
  12. package/esm2020/lib/base/services/loading-screen.service.mjs +3 -3
  13. package/esm2020/lib/base/services/print.service.mjs +3 -3
  14. package/esm2020/lib/chips/chips.module.mjs +4 -4
  15. package/esm2020/lib/chips/components/chips.component.mjs +6 -6
  16. package/esm2020/lib/chips/directives/autocomplete-option.directive.mjs +3 -3
  17. package/esm2020/lib/chips/directives/chip.directive.mjs +3 -3
  18. package/esm2020/lib/common/common.module.mjs +4 -4
  19. package/esm2020/lib/common/directives/disable-control.directive.mjs +3 -3
  20. package/esm2020/lib/common/functions/utils.mjs +4 -4
  21. package/esm2020/lib/common/helpers/app-storage.mjs +4 -4
  22. package/esm2020/lib/common/helpers/dynamic-builder.mjs +3 -3
  23. package/esm2020/lib/common/helpers/dynamic-component-compiler.mjs +3 -3
  24. package/esm2020/lib/common/models/app-setting.mjs +3 -3
  25. package/esm2020/lib/common/models/audit-entity.mjs +1 -1
  26. package/esm2020/lib/common/models/base-entity.mjs +1 -1
  27. package/esm2020/lib/common/models/displayname-number-projection.mjs +1 -1
  28. package/esm2020/lib/common/models/displayname-projection.mjs +1 -1
  29. package/esm2020/lib/common/models/name-number-projection.mjs +1 -1
  30. package/esm2020/lib/common/models/name-projection.mjs +1 -1
  31. package/esm2020/lib/common/models/title-projection.mjs +1 -1
  32. package/esm2020/lib/common/pipes/data-source.pipe.mjs +3 -3
  33. package/esm2020/lib/common/pipes/enum.pipe.mjs +3 -3
  34. package/esm2020/lib/common/pipes/file-size.pipe.mjs +3 -3
  35. package/esm2020/lib/common/pipes/filter.pipe.mjs +3 -3
  36. package/esm2020/lib/common/pipes/first-letter.mjs +3 -3
  37. package/esm2020/lib/common/pipes/form-control.pipe.mjs +3 -3
  38. package/esm2020/lib/common/pipes/form-group.pipe.mjs +3 -3
  39. package/esm2020/lib/common/pipes/func.pipe.mjs +3 -3
  40. package/esm2020/lib/common/pipes/keys.mjs +3 -3
  41. package/esm2020/lib/common/pipes/month-name.pipe.mjs +3 -3
  42. package/esm2020/lib/common/pipes/only-number.mjs +3 -3
  43. package/esm2020/lib/common/pipes/order.pipe.mjs +3 -3
  44. package/esm2020/lib/common/pipes/placeholder.pipe.mjs +3 -3
  45. package/esm2020/lib/common/pipes/safe-html.pipe.mjs +3 -3
  46. package/esm2020/lib/common/pipes/time.pipe.mjs +3 -3
  47. package/esm2020/lib/common/pipes/titlecase.pipe.mjs +3 -3
  48. package/esm2020/lib/common/pipes/truncate.pipe.mjs +3 -3
  49. package/esm2020/lib/common/pipes/values.mjs +3 -3
  50. package/esm2020/lib/common/services/base.service.mjs +3 -3
  51. package/esm2020/lib/common/services/enum.service.mjs +3 -3
  52. package/esm2020/lib/dialogs/alert-dialog/alert-dialog.component.mjs +18 -6
  53. package/esm2020/lib/dialogs/confirm-dialog/confirm-dialog.component.mjs +20 -6
  54. package/esm2020/lib/dialogs/dialog.component.mjs +12 -12
  55. package/esm2020/lib/dialogs/dialogs.module.mjs +4 -4
  56. package/esm2020/lib/dialogs/prompt-dialog/prompt-dialog.component.mjs +5 -5
  57. package/esm2020/lib/dialogs/services/dialog.service.mjs +3 -3
  58. package/esm2020/lib/file/file-input.component.mjs +33 -33
  59. package/esm2020/lib/file/file.module.mjs +4 -4
  60. package/esm2020/lib/form-validators/abstract/typed-form.mjs +1 -1
  61. package/esm2020/lib/form-validators/algorithm/luhn-algorithm.mjs +1 -1
  62. package/esm2020/lib/form-validators/const/app-validators.const.mjs +1 -1
  63. package/esm2020/lib/form-validators/const/app.const.mjs +1 -1
  64. package/esm2020/lib/form-validators/const/config-names.const.mjs +1 -1
  65. package/esm2020/lib/form-validators/const/config-required-fields.const.mjs +1 -1
  66. package/esm2020/lib/form-validators/const/decorators.const.mjs +1 -1
  67. package/esm2020/lib/form-validators/const/events.const.mjs +1 -1
  68. package/esm2020/lib/form-validators/const/html-elements.const.mjs +1 -1
  69. package/esm2020/lib/form-validators/const/iban-country-wise-regex.const.mjs +1 -1
  70. package/esm2020/lib/form-validators/const/index.mjs +1 -1
  71. package/esm2020/lib/form-validators/const/operators.const.mjs +1 -1
  72. package/esm2020/lib/form-validators/const/validation-alphabet-locale.const.mjs +1 -1
  73. package/esm2020/lib/form-validators/const/validator.const.mjs +1 -1
  74. package/esm2020/lib/form-validators/core/defaultContainer.mjs +1 -1
  75. package/esm2020/lib/form-validators/core/validator.interface.mjs +1 -1
  76. package/esm2020/lib/form-validators/core/validator.static.mjs +1 -1
  77. package/esm2020/lib/form-validators/decorators/allOf.decorator.mjs +1 -1
  78. package/esm2020/lib/form-validators/decorators/alpha.decorator.mjs +1 -1
  79. package/esm2020/lib/form-validators/decorators/alphaNumeric.decorator.mjs +1 -1
  80. package/esm2020/lib/form-validators/decorators/and.decorator.mjs +1 -1
  81. package/esm2020/lib/form-validators/decorators/ascii.decorator.mjs +1 -1
  82. package/esm2020/lib/form-validators/decorators/async.decorator.mjs +1 -1
  83. package/esm2020/lib/form-validators/decorators/base-decorator.function.mjs +1 -1
  84. package/esm2020/lib/form-validators/decorators/choice.decorator.mjs +1 -1
  85. package/esm2020/lib/form-validators/decorators/compare.decorator.mjs +1 -1
  86. package/esm2020/lib/form-validators/decorators/compose.decorator.mjs +1 -1
  87. package/esm2020/lib/form-validators/decorators/contains.decorator.mjs +1 -1
  88. package/esm2020/lib/form-validators/decorators/credit-card.decorator.mjs +1 -1
  89. package/esm2020/lib/form-validators/decorators/cusip.decorator.mjs +1 -1
  90. package/esm2020/lib/form-validators/decorators/custom.decorator.mjs +1 -1
  91. package/esm2020/lib/form-validators/decorators/dataUri.decorator.mjs +1 -1
  92. package/esm2020/lib/form-validators/decorators/date.decorator.mjs +1 -1
  93. package/esm2020/lib/form-validators/decorators/different.decorator.mjs +1 -1
  94. package/esm2020/lib/form-validators/decorators/digit.decorator.mjs +1 -1
  95. package/esm2020/lib/form-validators/decorators/email.decorator.mjs +1 -1
  96. package/esm2020/lib/form-validators/decorators/endsWith.decorator.mjs +1 -1
  97. package/esm2020/lib/form-validators/decorators/even.decorator.mjs +1 -1
  98. package/esm2020/lib/form-validators/decorators/extension.decorator.mjs +1 -1
  99. package/esm2020/lib/form-validators/decorators/factor.decorator.mjs +1 -1
  100. package/esm2020/lib/form-validators/decorators/file.decorator.mjs +1 -1
  101. package/esm2020/lib/form-validators/decorators/fileSize.decorator.mjs +1 -1
  102. package/esm2020/lib/form-validators/decorators/greater-than-equal-to.decorator.mjs +1 -1
  103. package/esm2020/lib/form-validators/decorators/greater-than.decorator.mjs +1 -1
  104. package/esm2020/lib/form-validators/decorators/grid.decorator.mjs +1 -1
  105. package/esm2020/lib/form-validators/decorators/hexColor.decorator.mjs +1 -1
  106. package/esm2020/lib/form-validators/decorators/image.decorator.mjs +1 -1
  107. package/esm2020/lib/form-validators/decorators/index.mjs +1 -1
  108. package/esm2020/lib/form-validators/decorators/json.decorator.mjs +1 -1
  109. package/esm2020/lib/form-validators/decorators/latLong.decorator.mjs +1 -1
  110. package/esm2020/lib/form-validators/decorators/latitude.decorator.mjs +1 -1
  111. package/esm2020/lib/form-validators/decorators/leapYear.decorator.mjs +1 -1
  112. package/esm2020/lib/form-validators/decorators/less-than-equal-to.decorator.mjs +1 -1
  113. package/esm2020/lib/form-validators/decorators/less-than.decorator.mjs +1 -1
  114. package/esm2020/lib/form-validators/decorators/longitude.decorator.mjs +1 -1
  115. package/esm2020/lib/form-validators/decorators/lowercase.decorator.mjs +1 -1
  116. package/esm2020/lib/form-validators/decorators/mac.decorator.mjs +1 -1
  117. package/esm2020/lib/form-validators/decorators/mask.decorator.mjs +1 -1
  118. package/esm2020/lib/form-validators/decorators/maxDate.decorator.mjs +1 -1
  119. package/esm2020/lib/form-validators/decorators/maxLength.decorator.mjs +1 -1
  120. package/esm2020/lib/form-validators/decorators/maxNumber.decorator.mjs +1 -1
  121. package/esm2020/lib/form-validators/decorators/maxTime.decorator.mjs +1 -1
  122. package/esm2020/lib/form-validators/decorators/minDate.decorator.mjs +1 -1
  123. package/esm2020/lib/form-validators/decorators/minLength.decorator.mjs +1 -1
  124. package/esm2020/lib/form-validators/decorators/minNumber.decorator.mjs +1 -1
  125. package/esm2020/lib/form-validators/decorators/minTime.decorator.mjs +1 -1
  126. package/esm2020/lib/form-validators/decorators/model.decorator.mjs +1 -1
  127. package/esm2020/lib/form-validators/decorators/non-validation-decorators/disable.decorator.mjs +1 -1
  128. package/esm2020/lib/form-validators/decorators/non-validation-decorators/elementClass.decorator.mjs +1 -1
  129. package/esm2020/lib/form-validators/decorators/non-validation-decorators/error.decorator.mjs +1 -1
  130. package/esm2020/lib/form-validators/decorators/non-validation-decorators/update-on.decorator.mjs +1 -1
  131. package/esm2020/lib/form-validators/decorators/noneOf.decorator.mjs +1 -1
  132. package/esm2020/lib/form-validators/decorators/not.decorator.mjs +1 -1
  133. package/esm2020/lib/form-validators/decorators/notEmpty.decorator.mjs +1 -1
  134. package/esm2020/lib/form-validators/decorators/numeric.decorator.mjs +1 -1
  135. package/esm2020/lib/form-validators/decorators/odd.decorator.mjs +1 -1
  136. package/esm2020/lib/form-validators/decorators/oneOf.decorator.mjs +1 -1
  137. package/esm2020/lib/form-validators/decorators/or.decorator.mjs +1 -1
  138. package/esm2020/lib/form-validators/decorators/password.decorator.mjs +1 -1
  139. package/esm2020/lib/form-validators/decorators/pattern.decorator.mjs +1 -1
  140. package/esm2020/lib/form-validators/decorators/port.decorator.mjs +1 -1
  141. package/esm2020/lib/form-validators/decorators/primeNumber.decorator.mjs +1 -1
  142. package/esm2020/lib/form-validators/decorators/prop-array.decorator.mjs +1 -1
  143. package/esm2020/lib/form-validators/decorators/prop-object.decorator.mjs +1 -1
  144. package/esm2020/lib/form-validators/decorators/prop.decorator.mjs +1 -1
  145. package/esm2020/lib/form-validators/decorators/range.decorator.mjs +1 -1
  146. package/esm2020/lib/form-validators/decorators/required.decorator.mjs +1 -1
  147. package/esm2020/lib/form-validators/decorators/requiredTrue.decorator.mjs +1 -1
  148. package/esm2020/lib/form-validators/decorators/rule.decorator.mjs +1 -1
  149. package/esm2020/lib/form-validators/decorators/sanitize/blacklist.decorator.mjs +1 -1
  150. package/esm2020/lib/form-validators/decorators/sanitize/escape.decorator.mjs +1 -1
  151. package/esm2020/lib/form-validators/decorators/sanitize/ltrim.decorator.mjs +1 -1
  152. package/esm2020/lib/form-validators/decorators/sanitize/prefix.decorator.mjs +1 -1
  153. package/esm2020/lib/form-validators/decorators/sanitize/rtrim.decorator.mjs +1 -1
  154. package/esm2020/lib/form-validators/decorators/sanitize/sanitize.decorator.mjs +1 -1
  155. package/esm2020/lib/form-validators/decorators/sanitize/stripLow.decorator.mjs +1 -1
  156. package/esm2020/lib/form-validators/decorators/sanitize/suffix.decorator.mjs +1 -1
  157. package/esm2020/lib/form-validators/decorators/sanitize/toBoolean.decorator.mjs +1 -1
  158. package/esm2020/lib/form-validators/decorators/sanitize/toDate.decorator.mjs +1 -1
  159. package/esm2020/lib/form-validators/decorators/sanitize/toDouble.decorator.mjs +1 -1
  160. package/esm2020/lib/form-validators/decorators/sanitize/toFloat.decorator.mjs +1 -1
  161. package/esm2020/lib/form-validators/decorators/sanitize/toInt.decorator.mjs +1 -1
  162. package/esm2020/lib/form-validators/decorators/sanitize/toString.decorator.mjs +1 -1
  163. package/esm2020/lib/form-validators/decorators/sanitize/trim.decorator.mjs +1 -1
  164. package/esm2020/lib/form-validators/decorators/sanitize/whitelist.decorator.mjs +1 -1
  165. package/esm2020/lib/form-validators/decorators/startsWith.decorator.mjs +1 -1
  166. package/esm2020/lib/form-validators/decorators/time.decorator.mjs +1 -1
  167. package/esm2020/lib/form-validators/decorators/unique.decorator.mjs +1 -1
  168. package/esm2020/lib/form-validators/decorators/uppercase.decorator.mjs +1 -1
  169. package/esm2020/lib/form-validators/decorators/url.decorator.mjs +1 -1
  170. package/esm2020/lib/form-validators/directives/base-directive.mjs +4 -4
  171. package/esm2020/lib/form-validators/directives/control-host.directive.mjs +4 -4
  172. package/esm2020/lib/form-validators/directives/html-control-template.directive.mjs +4 -4
  173. package/esm2020/lib/form-validators/directives/rx-form.directive.mjs +4 -4
  174. package/esm2020/lib/form-validators/directives/template-validations/async-validation.directive.mjs +4 -4
  175. package/esm2020/lib/form-validators/directives/template-validations/base-validator.directive.mjs +4 -4
  176. package/esm2020/lib/form-validators/directives/template-validations/control-expression-process.mjs +4 -4
  177. package/esm2020/lib/form-validators/directives/template-validations/file-control.directive.mjs +4 -4
  178. package/esm2020/lib/form-validators/directives/template-validations/image-file-control.directive.mjs +4 -4
  179. package/esm2020/lib/form-validators/directives/template-validations/rxformcontrol.directive.mjs +4 -4
  180. package/esm2020/lib/form-validators/domain/disable-provider.mjs +1 -1
  181. package/esm2020/lib/form-validators/domain/element-processor/decimal.provider.mjs +4 -4
  182. package/esm2020/lib/form-validators/domain/element-processor/mask.provider.mjs +1 -1
  183. package/esm2020/lib/form-validators/domain/form-data.mjs +1 -1
  184. package/esm2020/lib/form-validators/enums/error-message-binding-strategy.mjs +1 -1
  185. package/esm2020/lib/form-validators/enums/index.mjs +1 -1
  186. package/esm2020/lib/form-validators/enums/ip-version.mjs +1 -1
  187. package/esm2020/lib/form-validators/enums/numeric-value-type.mjs +1 -1
  188. package/esm2020/lib/form-validators/enums/reset-type.mjs +1 -1
  189. package/esm2020/lib/form-validators/enums/url-validation-type.mjs +1 -1
  190. package/esm2020/lib/form-validators/models/config/alpha-config.mjs +1 -1
  191. package/esm2020/lib/form-validators/models/config/array-config.mjs +1 -1
  192. package/esm2020/lib/form-validators/models/config/base-config-fn.mjs +1 -1
  193. package/esm2020/lib/form-validators/models/config/base-config.mjs +1 -1
  194. package/esm2020/lib/form-validators/models/config/base-date-config.mjs +1 -1
  195. package/esm2020/lib/form-validators/models/config/choice-config.mjs +1 -1
  196. package/esm2020/lib/form-validators/models/config/compare-config.mjs +1 -1
  197. package/esm2020/lib/form-validators/models/config/component-config.mjs +1 -1
  198. package/esm2020/lib/form-validators/models/config/compose-config.mjs +1 -1
  199. package/esm2020/lib/form-validators/models/config/contains-config.mjs +1 -1
  200. package/esm2020/lib/form-validators/models/config/credit-card-config.mjs +1 -1
  201. package/esm2020/lib/form-validators/models/config/custom-config.mjs +1 -1
  202. package/esm2020/lib/form-validators/models/config/date-config.mjs +1 -1
  203. package/esm2020/lib/form-validators/models/config/default-config.mjs +1 -1
  204. package/esm2020/lib/form-validators/models/config/digit-config.mjs +1 -1
  205. package/esm2020/lib/form-validators/models/config/disable-config.mjs +1 -1
  206. package/esm2020/lib/form-validators/models/config/element-class-config.mjs +1 -1
  207. package/esm2020/lib/form-validators/models/config/email-config.mjs +1 -1
  208. package/esm2020/lib/form-validators/models/config/error-config.mjs +1 -1
  209. package/esm2020/lib/form-validators/models/config/extension-config.mjs +1 -1
  210. package/esm2020/lib/form-validators/models/config/factor-config.mjs +1 -1
  211. package/esm2020/lib/form-validators/models/config/field-config.mjs +1 -1
  212. package/esm2020/lib/form-validators/models/config/file-config.mjs +1 -1
  213. package/esm2020/lib/form-validators/models/config/hex-color-config.mjs +1 -1
  214. package/esm2020/lib/form-validators/models/config/iban-config.mjs +1 -1
  215. package/esm2020/lib/form-validators/models/config/image-config.mjs +1 -1
  216. package/esm2020/lib/form-validators/models/config/index.mjs +1 -1
  217. package/esm2020/lib/form-validators/models/config/ip-config.mjs +1 -1
  218. package/esm2020/lib/form-validators/models/config/logical-operator-config.mjs +1 -1
  219. package/esm2020/lib/form-validators/models/config/mask-config.mjs +1 -1
  220. package/esm2020/lib/form-validators/models/config/max-date-config.mjs +1 -1
  221. package/esm2020/lib/form-validators/models/config/message-config.mjs +1 -1
  222. package/esm2020/lib/form-validators/models/config/min-date-config.mjs +1 -1
  223. package/esm2020/lib/form-validators/models/config/model-config.mjs +1 -1
  224. package/esm2020/lib/form-validators/models/config/number-config.mjs +1 -1
  225. package/esm2020/lib/form-validators/models/config/numeric-config.mjs +1 -1
  226. package/esm2020/lib/form-validators/models/config/password-config.mjs +1 -1
  227. package/esm2020/lib/form-validators/models/config/pattern-config.mjs +1 -1
  228. package/esm2020/lib/form-validators/models/config/prop-config.mjs +1 -1
  229. package/esm2020/lib/form-validators/models/config/props-config.mjs +1 -1
  230. package/esm2020/lib/form-validators/models/config/range-config.mjs +1 -1
  231. package/esm2020/lib/form-validators/models/config/relational-operator-config.mjs +1 -1
  232. package/esm2020/lib/form-validators/models/config/required-config.mjs +1 -1
  233. package/esm2020/lib/form-validators/models/config/rule-config.mjs +1 -1
  234. package/esm2020/lib/form-validators/models/config/sanitize-config.mjs +1 -1
  235. package/esm2020/lib/form-validators/models/config/size-config.mjs +1 -1
  236. package/esm2020/lib/form-validators/models/config/string-comparison-config.mjs +1 -1
  237. package/esm2020/lib/form-validators/models/config/string-value-config.mjs +1 -1
  238. package/esm2020/lib/form-validators/models/config/time-config.mjs +1 -1
  239. package/esm2020/lib/form-validators/models/config/todate-config.mjs +1 -1
  240. package/esm2020/lib/form-validators/models/config/unique-config.mjs +1 -1
  241. package/esm2020/lib/form-validators/models/config/update-on-config.mjs +1 -1
  242. package/esm2020/lib/form-validators/models/config/url-config.mjs +1 -1
  243. package/esm2020/lib/form-validators/models/form-builder-configuration.mjs +1 -1
  244. package/esm2020/lib/form-validators/models/index.mjs +1 -1
  245. package/esm2020/lib/form-validators/models/interface/array-prop-instance-config.interface.mjs +1 -1
  246. package/esm2020/lib/form-validators/models/interface/auto-instance-config.interface.mjs +1 -1
  247. package/esm2020/lib/form-validators/models/interface/form-data-config.mjs +1 -1
  248. package/esm2020/lib/form-validators/models/interface/i-abstract-control.mjs +1 -1
  249. package/esm2020/lib/form-validators/models/interface/i-form-group.mjs +1 -1
  250. package/esm2020/lib/form-validators/models/interface/instance-argument.interface.mjs +1 -1
  251. package/esm2020/lib/form-validators/models/interface/object-prop-instance-config.interface.mjs +1 -1
  252. package/esm2020/lib/form-validators/models/interface/options.mjs +1 -1
  253. package/esm2020/lib/form-validators/models/password-validation.model.mjs +1 -1
  254. package/esm2020/lib/form-validators/models/prop-validation-config.mjs +1 -1
  255. package/esm2020/lib/form-validators/reactive-form-validators/allOf.validator.mjs +1 -1
  256. package/esm2020/lib/form-validators/reactive-form-validators/alpha.validator.mjs +1 -1
  257. package/esm2020/lib/form-validators/reactive-form-validators/alphaNumeric.validator.mjs +1 -1
  258. package/esm2020/lib/form-validators/reactive-form-validators/and.validator.mjs +1 -1
  259. package/esm2020/lib/form-validators/reactive-form-validators/ascii.validator.mjs +1 -1
  260. package/esm2020/lib/form-validators/reactive-form-validators/choice.validator.mjs +1 -1
  261. package/esm2020/lib/form-validators/reactive-form-validators/compare.validator.mjs +1 -1
  262. package/esm2020/lib/form-validators/reactive-form-validators/compose.validator.mjs +1 -1
  263. package/esm2020/lib/form-validators/reactive-form-validators/conditional-change.validator.mjs +1 -1
  264. package/esm2020/lib/form-validators/reactive-form-validators/contains.validator.mjs +1 -1
  265. package/esm2020/lib/form-validators/reactive-form-validators/credit-card.validator.mjs +1 -1
  266. package/esm2020/lib/form-validators/reactive-form-validators/cusip.validator.mjs +1 -1
  267. package/esm2020/lib/form-validators/reactive-form-validators/custom.validator.mjs +1 -1
  268. package/esm2020/lib/form-validators/reactive-form-validators/dataUri.validator.mjs +1 -1
  269. package/esm2020/lib/form-validators/reactive-form-validators/date.validator.mjs +1 -1
  270. package/esm2020/lib/form-validators/reactive-form-validators/different.validator.mjs +1 -1
  271. package/esm2020/lib/form-validators/reactive-form-validators/digit.validator.mjs +1 -1
  272. package/esm2020/lib/form-validators/reactive-form-validators/email.validator.mjs +1 -1
  273. package/esm2020/lib/form-validators/reactive-form-validators/endsWith.validator.mjs +1 -1
  274. package/esm2020/lib/form-validators/reactive-form-validators/even.validator.mjs +1 -1
  275. package/esm2020/lib/form-validators/reactive-form-validators/extension.validator.mjs +1 -1
  276. package/esm2020/lib/form-validators/reactive-form-validators/factor.validator.mjs +1 -1
  277. package/esm2020/lib/form-validators/reactive-form-validators/file.validator.mjs +1 -1
  278. package/esm2020/lib/form-validators/reactive-form-validators/fileSize.validator.mjs +1 -1
  279. package/esm2020/lib/form-validators/reactive-form-validators/greater-than-equal-to.validator.mjs +1 -1
  280. package/esm2020/lib/form-validators/reactive-form-validators/greater-than.validator.mjs +1 -1
  281. package/esm2020/lib/form-validators/reactive-form-validators/grid.validator.mjs +1 -1
  282. package/esm2020/lib/form-validators/reactive-form-validators/hexcolor.validator.mjs +1 -1
  283. package/esm2020/lib/form-validators/reactive-form-validators/iban.validator.mjs +1 -1
  284. package/esm2020/lib/form-validators/reactive-form-validators/image.validator.mjs +1 -1
  285. package/esm2020/lib/form-validators/reactive-form-validators/index.mjs +1 -1
  286. package/esm2020/lib/form-validators/reactive-form-validators/ip.validator.mjs +1 -1
  287. package/esm2020/lib/form-validators/reactive-form-validators/json.validator.mjs +1 -1
  288. package/esm2020/lib/form-validators/reactive-form-validators/latLong.validator.mjs +1 -1
  289. package/esm2020/lib/form-validators/reactive-form-validators/latitude.validator.mjs +1 -1
  290. package/esm2020/lib/form-validators/reactive-form-validators/leapYear.validator.mjs +1 -1
  291. package/esm2020/lib/form-validators/reactive-form-validators/less-than-equal-to.validator.mjs +1 -1
  292. package/esm2020/lib/form-validators/reactive-form-validators/less-than.validator.mjs +1 -1
  293. package/esm2020/lib/form-validators/reactive-form-validators/longitude.validator.mjs +1 -1
  294. package/esm2020/lib/form-validators/reactive-form-validators/lowercase.validator.mjs +1 -1
  295. package/esm2020/lib/form-validators/reactive-form-validators/mac.validator.mjs +1 -1
  296. package/esm2020/lib/form-validators/reactive-form-validators/mask.validator.mjs +1 -1
  297. package/esm2020/lib/form-validators/reactive-form-validators/maxDate.validator.mjs +1 -1
  298. package/esm2020/lib/form-validators/reactive-form-validators/maxLength.validator.mjs +1 -1
  299. package/esm2020/lib/form-validators/reactive-form-validators/maxNumber.validator.mjs +1 -1
  300. package/esm2020/lib/form-validators/reactive-form-validators/maxTime.validator.mjs +1 -1
  301. package/esm2020/lib/form-validators/reactive-form-validators/minDate.validator.mjs +1 -1
  302. package/esm2020/lib/form-validators/reactive-form-validators/minLength.validator.mjs +1 -1
  303. package/esm2020/lib/form-validators/reactive-form-validators/minNumber.validator.mjs +1 -1
  304. package/esm2020/lib/form-validators/reactive-form-validators/minTime.validator.mjs +1 -1
  305. package/esm2020/lib/form-validators/reactive-form-validators/noneOf.validator.mjs +1 -1
  306. package/esm2020/lib/form-validators/reactive-form-validators/not.validator.mjs +1 -1
  307. package/esm2020/lib/form-validators/reactive-form-validators/notEmpty.validator.mjs +1 -1
  308. package/esm2020/lib/form-validators/reactive-form-validators/numeric.validator.mjs +1 -1
  309. package/esm2020/lib/form-validators/reactive-form-validators/odd.validator.mjs +1 -1
  310. package/esm2020/lib/form-validators/reactive-form-validators/oneOf.validator.mjs +1 -1
  311. package/esm2020/lib/form-validators/reactive-form-validators/or.validator.mjs +1 -1
  312. package/esm2020/lib/form-validators/reactive-form-validators/password.validator.mjs +1 -1
  313. package/esm2020/lib/form-validators/reactive-form-validators/pattern.validator.mjs +1 -1
  314. package/esm2020/lib/form-validators/reactive-form-validators/port.validator.mjs +1 -1
  315. package/esm2020/lib/form-validators/reactive-form-validators/primeNumber.validator.mjs +1 -1
  316. package/esm2020/lib/form-validators/reactive-form-validators/range.validator.mjs +1 -1
  317. package/esm2020/lib/form-validators/reactive-form-validators/required.validator.mjs +1 -1
  318. package/esm2020/lib/form-validators/reactive-form-validators/requiredTrue.validator.mjs +1 -1
  319. package/esm2020/lib/form-validators/reactive-form-validators/rule.validator.mjs +1 -1
  320. package/esm2020/lib/form-validators/reactive-form-validators/startsWith.validator.mjs +1 -1
  321. package/esm2020/lib/form-validators/reactive-form-validators/time.validator.mjs +1 -1
  322. package/esm2020/lib/form-validators/reactive-form-validators/unique.validator.mjs +1 -1
  323. package/esm2020/lib/form-validators/reactive-form-validators/uppercase.validator.mjs +1 -1
  324. package/esm2020/lib/form-validators/reactive-form-validators/url.validator.mjs +1 -1
  325. package/esm2020/lib/form-validators/services/base-form-builder.mjs +1 -1
  326. package/esm2020/lib/form-validators/services/entity.service.mjs +1 -1
  327. package/esm2020/lib/form-validators/services/form-control.mjs +1 -1
  328. package/esm2020/lib/form-validators/services/form-group.mjs +1 -1
  329. package/esm2020/lib/form-validators/services/reactive-form.module.mjs +9 -9
  330. package/esm2020/lib/form-validators/services/rx-form-array.mjs +1 -1
  331. package/esm2020/lib/form-validators/services/rx-form-builder.mjs +4 -4
  332. package/esm2020/lib/form-validators/services/rx-form-group.mjs +1 -1
  333. package/esm2020/lib/form-validators/services/typed-form-builder.mjs +4 -4
  334. package/esm2020/lib/form-validators/util/alphabet-regex.locale.mjs +1 -1
  335. package/esm2020/lib/form-validators/util/app-util.mjs +1 -1
  336. package/esm2020/lib/form-validators/util/check-length.mjs +1 -1
  337. package/esm2020/lib/form-validators/util/config-provider.mjs +1 -1
  338. package/esm2020/lib/form-validators/util/date-checker.function.mjs +1 -1
  339. package/esm2020/lib/form-validators/util/date-provider.mjs +1 -1
  340. package/esm2020/lib/form-validators/util/form-const.mjs +1 -1
  341. package/esm2020/lib/form-validators/util/form-provider.mjs +1 -1
  342. package/esm2020/lib/form-validators/util/index.mjs +1 -1
  343. package/esm2020/lib/form-validators/util/instance-provider.function.mjs +1 -1
  344. package/esm2020/lib/form-validators/util/ip-checker.mjs +1 -1
  345. package/esm2020/lib/form-validators/util/linq.mjs +1 -1
  346. package/esm2020/lib/form-validators/util/object-maker.mjs +1 -1
  347. package/esm2020/lib/form-validators/util/reactive-form-config.mjs +1 -1
  348. package/esm2020/lib/form-validators/util/regex-rules.mjs +1 -1
  349. package/esm2020/lib/form-validators/util/regex-validator.mjs +1 -1
  350. package/esm2020/lib/form-validators/util/relational-checker.function.mjs +1 -1
  351. package/esm2020/lib/form-validators/util/reset-form.mjs +1 -1
  352. package/esm2020/lib/form-validators/util/sanitizers.mjs +1 -1
  353. package/esm2020/lib/form-validators/util/time-checker.function.mjs +1 -1
  354. package/esm2020/lib/form-validators/util/type.mjs +1 -1
  355. package/esm2020/lib/form-validators/util/validator-value-checker.mjs +1 -1
  356. package/esm2020/lib/form-validators/validators-extension/allOf-validator.extension.mjs +1 -1
  357. package/esm2020/lib/form-validators/validators-extension/alpha-validator.extension.mjs +1 -1
  358. package/esm2020/lib/form-validators/validators-extension/alphaNumeric-validator.extension.mjs +1 -1
  359. package/esm2020/lib/form-validators/validators-extension/and-validator.extension.mjs +1 -1
  360. package/esm2020/lib/form-validators/validators-extension/ascii-validator.extension.mjs +1 -1
  361. package/esm2020/lib/form-validators/validators-extension/base-validator.function.mjs +1 -1
  362. package/esm2020/lib/form-validators/validators-extension/choice-validator.extension.mjs +1 -1
  363. package/esm2020/lib/form-validators/validators-extension/compare-validator.extension.mjs +1 -1
  364. package/esm2020/lib/form-validators/validators-extension/compose-validator.extension.mjs +1 -1
  365. package/esm2020/lib/form-validators/validators-extension/contains-validator.extension.mjs +1 -1
  366. package/esm2020/lib/form-validators/validators-extension/credit-card-validator.extension.mjs +1 -1
  367. package/esm2020/lib/form-validators/validators-extension/cusip-validator.extension.mjs +1 -1
  368. package/esm2020/lib/form-validators/validators-extension/custom-validator.extension.mjs +1 -1
  369. package/esm2020/lib/form-validators/validators-extension/dataUri-validator.extension.mjs +1 -1
  370. package/esm2020/lib/form-validators/validators-extension/date-validator.extension.mjs +1 -1
  371. package/esm2020/lib/form-validators/validators-extension/different-validator.extension.mjs +1 -1
  372. package/esm2020/lib/form-validators/validators-extension/digit-validator.extension.mjs +1 -1
  373. package/esm2020/lib/form-validators/validators-extension/email-validator.extension.mjs +1 -1
  374. package/esm2020/lib/form-validators/validators-extension/endsWith-validator.extension.mjs +1 -1
  375. package/esm2020/lib/form-validators/validators-extension/even-validator.extension.mjs +1 -1
  376. package/esm2020/lib/form-validators/validators-extension/extension-validator.extension.mjs +1 -1
  377. package/esm2020/lib/form-validators/validators-extension/factor-validator.extension.mjs +1 -1
  378. package/esm2020/lib/form-validators/validators-extension/file-validator.extension.mjs +1 -1
  379. package/esm2020/lib/form-validators/validators-extension/fileSize-validator.extension.mjs +1 -1
  380. package/esm2020/lib/form-validators/validators-extension/greater-than-equal-to-validator.extension.mjs +1 -1
  381. package/esm2020/lib/form-validators/validators-extension/greater-than-validator.extension.mjs +1 -1
  382. package/esm2020/lib/form-validators/validators-extension/grid-validator.extension.mjs +1 -1
  383. package/esm2020/lib/form-validators/validators-extension/hexcolor-validator.extension.mjs +1 -1
  384. package/esm2020/lib/form-validators/validators-extension/iban-validator.extension.mjs +1 -1
  385. package/esm2020/lib/form-validators/validators-extension/image-validator.extension.mjs +1 -1
  386. package/esm2020/lib/form-validators/validators-extension/index.mjs +1 -1
  387. package/esm2020/lib/form-validators/validators-extension/ip-validator.extension.mjs +1 -1
  388. package/esm2020/lib/form-validators/validators-extension/json-validator.extension.mjs +1 -1
  389. package/esm2020/lib/form-validators/validators-extension/latLong-validator.extension.mjs +1 -1
  390. package/esm2020/lib/form-validators/validators-extension/latitude-validator.extension.mjs +1 -1
  391. package/esm2020/lib/form-validators/validators-extension/leapYear-validator.extension.mjs +1 -1
  392. package/esm2020/lib/form-validators/validators-extension/less-than-equal-to-validator.extension.mjs +1 -1
  393. package/esm2020/lib/form-validators/validators-extension/less-than-validator.extension.mjs +1 -1
  394. package/esm2020/lib/form-validators/validators-extension/longitude-validator.extension.mjs +1 -1
  395. package/esm2020/lib/form-validators/validators-extension/lowercase-validator.extension.mjs +1 -1
  396. package/esm2020/lib/form-validators/validators-extension/mac-validator.extension.mjs +1 -1
  397. package/esm2020/lib/form-validators/validators-extension/mask-validator.extension.mjs +1 -1
  398. package/esm2020/lib/form-validators/validators-extension/maxDate-validator.extension.mjs +1 -1
  399. package/esm2020/lib/form-validators/validators-extension/maxLength-validator.extension.mjs +1 -1
  400. package/esm2020/lib/form-validators/validators-extension/maxNumber-validator.extension.mjs +1 -1
  401. package/esm2020/lib/form-validators/validators-extension/maxTime-validator.extension.mjs +1 -1
  402. package/esm2020/lib/form-validators/validators-extension/minDate-validator.extension.mjs +1 -1
  403. package/esm2020/lib/form-validators/validators-extension/minLength-validator.extension.mjs +1 -1
  404. package/esm2020/lib/form-validators/validators-extension/minNumber-validator.extension.mjs +1 -1
  405. package/esm2020/lib/form-validators/validators-extension/minTime-validator.extension.mjs +1 -1
  406. package/esm2020/lib/form-validators/validators-extension/noneOf-validator.extension.mjs +1 -1
  407. package/esm2020/lib/form-validators/validators-extension/not-validator.extension.mjs +1 -1
  408. package/esm2020/lib/form-validators/validators-extension/notEmpty-validator.extension.mjs +1 -1
  409. package/esm2020/lib/form-validators/validators-extension/numeric-validator.extension.mjs +1 -1
  410. package/esm2020/lib/form-validators/validators-extension/odd-validator.extension.mjs +1 -1
  411. package/esm2020/lib/form-validators/validators-extension/oneOf-validator.extension.mjs +1 -1
  412. package/esm2020/lib/form-validators/validators-extension/or-validator.extension.mjs +1 -1
  413. package/esm2020/lib/form-validators/validators-extension/password-validator.extension.mjs +1 -1
  414. package/esm2020/lib/form-validators/validators-extension/pattern-validator.extension.mjs +1 -1
  415. package/esm2020/lib/form-validators/validators-extension/port-validator.extension.mjs +1 -1
  416. package/esm2020/lib/form-validators/validators-extension/primeNumber-validator.extension.mjs +1 -1
  417. package/esm2020/lib/form-validators/validators-extension/range-validator.extension.mjs +1 -1
  418. package/esm2020/lib/form-validators/validators-extension/required-validator.extension.mjs +1 -1
  419. package/esm2020/lib/form-validators/validators-extension/requiredTrue-validator.extension.mjs +1 -1
  420. package/esm2020/lib/form-validators/validators-extension/rxweb-validators.mjs +1 -1
  421. package/esm2020/lib/form-validators/validators-extension/startsWith-validator.extension.mjs +1 -1
  422. package/esm2020/lib/form-validators/validators-extension/time-validator.extension.mjs +1 -1
  423. package/esm2020/lib/form-validators/validators-extension/unique-validator.extension.mjs +1 -1
  424. package/esm2020/lib/form-validators/validators-extension/uppercase-validator.extension.mjs +1 -1
  425. package/esm2020/lib/form-validators/validators-extension/url-validator.extension.mjs +1 -1
  426. package/esm2020/lib/form-validators/validators-function/alpha-validation.function.mjs +1 -1
  427. package/esm2020/lib/form-validators/validators-function/regex-validation.function.mjs +1 -1
  428. package/esm2020/lib/forms/components/generic-form/generic-form.component.mjs +17 -17
  429. package/esm2020/lib/forms/directives/mat-form-field-editor.directive.mjs +3 -3
  430. package/esm2020/lib/forms/directives/mat-form-field-readonly.directive.mjs +3 -3
  431. package/esm2020/lib/forms/forms.module.mjs +4 -4
  432. package/esm2020/lib/forms/helpers/abstract-mat-form-field.mjs +17 -7
  433. package/esm2020/lib/forms/helpers/value-accessor-base.mjs +3 -3
  434. package/esm2020/lib/forms/models/form-field-definition.mjs +1 -1
  435. package/esm2020/lib/forms/validators/empty-string-reset.directive.mjs +3 -3
  436. package/esm2020/lib/forms/validators/equal-validator.directive.mjs +3 -3
  437. package/esm2020/lib/forms/validators/native-element-injector.directive.mjs +3 -3
  438. package/esm2020/lib/forms/validators/unique-validator-directive.mjs +3 -3
  439. package/esm2020/lib/http/http.module.mjs +4 -4
  440. package/esm2020/lib/layout/dynamic-menu/dynamic-menu.component.mjs +3 -3
  441. package/esm2020/lib/layout/layout-card-over/layout-card-over.component.mjs +5 -5
  442. package/esm2020/lib/layout/layout-footer/layout-footer.component.mjs +3 -3
  443. package/esm2020/lib/layout/layout-manage-list/layout-manage-list.component.mjs +4 -4
  444. package/esm2020/lib/layout/layout-manage-list/layout-manage-list.directives.mjs +9 -9
  445. package/esm2020/lib/layout/layout-nav/layout-nav.component.mjs +3 -3
  446. package/esm2020/lib/layout/layout-nav-list/layout-nav-list.component.mjs +3 -3
  447. package/esm2020/lib/layout/layout-nav-list/layout-nav-list.directives.mjs +9 -9
  448. package/esm2020/lib/layout/layout-toggle.class.mjs +3 -3
  449. package/esm2020/lib/layout/layout.component.mjs +3 -3
  450. package/esm2020/lib/layout/layout.directives.mjs +9 -9
  451. package/esm2020/lib/layout/layout.module.mjs +4 -4
  452. package/esm2020/lib/layout/list-toolbar/list-toolbar.component.mjs +3 -3
  453. package/esm2020/lib/layout/navigation-drawer/navigation-drawer.component.mjs +10 -10
  454. package/esm2020/lib/media/directives/media-toggle.directive.mjs +3 -3
  455. package/esm2020/lib/media/media.module.mjs +4 -4
  456. package/esm2020/lib/media/services/media.service.mjs +3 -3
  457. package/esm2020/lib/menu/components/menu.component.mjs +6 -7
  458. package/esm2020/lib/menu/menu.module.mjs +4 -4
  459. package/esm2020/lib/menu/models/menu-item.mjs +1 -1
  460. package/esm2020/lib/menu/models/menu.mjs +1 -1
  461. package/esm2020/lib/menu/services/menu-items.service.mjs +3 -3
  462. package/esm2020/lib/menu/services/menu.resolve.mjs +6 -6
  463. package/esm2020/lib/menu/services/menu.service.mjs +3 -3
  464. package/esm2020/lib/search/search.module.mjs +4 -4
  465. package/esm2020/lib/search/vd-search-box/vd-search-box.component.mjs +4 -4
  466. package/esm2020/lib/search/vd-search-input/vd-search-input.component.mjs +7 -7
  467. package/esm2020/lib/select/components/select.component.mjs +36 -10
  468. package/esm2020/lib/select/directives/vd-select-option.directive.mjs +3 -3
  469. package/esm2020/lib/select/directives/vd-select-trigger.directive.mjs +3 -3
  470. package/esm2020/lib/select/select.module.mjs +4 -4
  471. package/esm2020/lib/table/components/dynamic-table/dynamic-table.component.mjs +5 -5
  472. package/esm2020/lib/table/components/filter-clear.component.mjs +10 -10
  473. package/esm2020/lib/table/components/filter-date.component.mjs +28 -19
  474. package/esm2020/lib/table/components/filter-input.component.mjs +31 -20
  475. package/esm2020/lib/table/components/filter-select.component.mjs +41 -15
  476. package/esm2020/lib/table/directives/data-source-filter.directive.mjs +3 -3
  477. package/esm2020/lib/table/functions/decorators.mjs +2 -2
  478. package/esm2020/lib/table/models/table-column-config.mjs +1 -1
  479. package/esm2020/lib/table/paginator-intl.mjs +3 -3
  480. package/esm2020/lib/table/table.module.mjs +4 -4
  481. package/fesm2015/messaia-cdk.mjs +682 -573
  482. package/fesm2015/messaia-cdk.mjs.map +1 -1
  483. package/fesm2020/messaia-cdk.mjs +683 -574
  484. package/fesm2020/messaia-cdk.mjs.map +1 -1
  485. package/lib/base/components/base.component.d.ts +1 -1
  486. package/lib/base/components/dynamic-table-config-dialog.comnponent.d.ts +1 -1
  487. package/lib/base/components/generic-form-base.component.d.ts +1 -1
  488. package/lib/base/components/generic-form.component.d.ts +1 -1
  489. package/lib/base/components/generic-list.component.d.ts +1 -1
  490. package/lib/base/components/generic-reactive-form.component.d.ts +1 -1
  491. package/lib/chips/components/chips.component.d.ts +1 -1
  492. package/lib/chips/directives/autocomplete-option.directive.d.ts +1 -1
  493. package/lib/chips/directives/chip.directive.d.ts +1 -1
  494. package/lib/common/directives/disable-control.directive.d.ts +1 -1
  495. package/lib/common/functions/utils.d.ts +1 -1
  496. package/lib/common/helpers/app-storage.d.ts +1 -1
  497. package/lib/common/pipes/only-number.d.ts +1 -1
  498. package/lib/common/pipes/order.pipe.d.ts +1 -1
  499. package/lib/common/styles/_common-theme.scss +8 -7
  500. package/lib/common/styles/_layout.scss +1 -1
  501. package/lib/common/styles/core/_button.scss +1 -1
  502. package/lib/common/styles/core/_card.scss +40 -36
  503. package/lib/common/styles/core/_icons.scss +2 -1
  504. package/lib/common/styles/core/_sidenav.scss +2 -1
  505. package/lib/common/styles/utilities/_general.scss +197 -31
  506. package/lib/common/theming/_all-theme.scss +4 -0
  507. package/lib/dialogs/alert-dialog/alert-dialog.component.d.ts +1 -1
  508. package/lib/dialogs/confirm-dialog/confirm-dialog.component.d.ts +1 -1
  509. package/lib/dialogs/dialog.component.d.ts +4 -4
  510. package/lib/dialogs/prompt-dialog/prompt-dialog.component.d.ts +1 -1
  511. package/lib/file/file-input.component.d.ts +1 -1
  512. package/lib/form-validators/directives/base-directive.d.ts +1 -1
  513. package/lib/form-validators/directives/control-host.directive.d.ts +1 -1
  514. package/lib/form-validators/directives/html-control-template.directive.d.ts +1 -1
  515. package/lib/form-validators/directives/rx-form.directive.d.ts +1 -1
  516. package/lib/form-validators/directives/template-validations/async-validation.directive.d.ts +1 -1
  517. package/lib/form-validators/directives/template-validations/base-validator.directive.d.ts +1 -1
  518. package/lib/form-validators/directives/template-validations/control-expression-process.d.ts +1 -1
  519. package/lib/form-validators/directives/template-validations/file-control.directive.d.ts +1 -1
  520. package/lib/form-validators/directives/template-validations/image-file-control.directive.d.ts +1 -1
  521. package/lib/form-validators/directives/template-validations/rxformcontrol.directive.d.ts +1 -1
  522. package/lib/forms/components/generic-form/generic-form.component.d.ts +5 -5
  523. package/lib/forms/directives/mat-form-field-editor.directive.d.ts +1 -1
  524. package/lib/forms/directives/mat-form-field-readonly.directive.d.ts +1 -1
  525. package/lib/forms/helpers/abstract-mat-form-field.d.ts +8 -3
  526. package/lib/forms/helpers/value-accessor-base.d.ts +1 -1
  527. package/lib/forms/models/form-field-definition.d.ts +3 -0
  528. package/lib/forms/validators/empty-string-reset.directive.d.ts +1 -1
  529. package/lib/forms/validators/equal-validator.directive.d.ts +1 -1
  530. package/lib/forms/validators/native-element-injector.directive.d.ts +1 -1
  531. package/lib/forms/validators/unique-validator-directive.d.ts +1 -1
  532. package/lib/layout/_layout-theme.scss +133 -2
  533. package/lib/layout/dynamic-menu/dynamic-menu.component.d.ts +1 -1
  534. package/lib/layout/layout-card-over/layout-card-over.component.d.ts +1 -1
  535. package/lib/layout/layout-footer/layout-footer.component.d.ts +1 -1
  536. package/lib/layout/layout-manage-list/layout-manage-list.component.d.ts +1 -1
  537. package/lib/layout/layout-manage-list/layout-manage-list.directives.d.ts +3 -3
  538. package/lib/layout/layout-nav/layout-nav.component.d.ts +1 -1
  539. package/lib/layout/layout-nav-list/layout-nav-list.component.d.ts +1 -1
  540. package/lib/layout/layout-nav-list/layout-nav-list.directives.d.ts +3 -3
  541. package/lib/layout/layout-toggle.class.d.ts +1 -1
  542. package/lib/layout/layout.component.d.ts +1 -1
  543. package/lib/layout/layout.directives.d.ts +3 -3
  544. package/lib/layout/list-toolbar/list-toolbar.component.d.ts +1 -1
  545. package/lib/layout/navigation-drawer/navigation-drawer.component.d.ts +3 -3
  546. package/lib/media/directives/media-toggle.directive.d.ts +1 -1
  547. package/lib/menu/components/menu.component.d.ts +1 -1
  548. package/lib/search/vd-search-box/vd-search-box.component.d.ts +1 -1
  549. package/lib/search/vd-search-input/vd-search-input.component.d.ts +1 -1
  550. package/lib/select/components/select.component.d.ts +22 -5
  551. package/lib/select/directives/vd-select-option.directive.d.ts +1 -1
  552. package/lib/select/directives/vd-select-trigger.directive.d.ts +1 -1
  553. package/lib/table/components/dynamic-table/dynamic-table.component.d.ts +1 -1
  554. package/lib/table/components/filter-clear.component.d.ts +1 -1
  555. package/lib/table/components/filter-date.component.d.ts +10 -1
  556. package/lib/table/components/filter-input.component.d.ts +10 -1
  557. package/lib/table/components/filter-select.component.d.ts +11 -2
  558. package/lib/table/directives/data-source-filter.directive.d.ts +1 -1
  559. package/package.json +1 -1
@@ -1,5 +1,5 @@
1
1
  import { CdkColumnDef } from '@angular/cdk/table';
2
- import { Component, forwardRef, Input } from '@angular/core';
2
+ import { Component, forwardRef, HostListener, Input } from '@angular/core';
3
3
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
4
4
  import { MatTable } from '@angular/material/table';
5
5
  import * as i0 from "@angular/core";
@@ -34,6 +34,10 @@ export class FilterDateComponent {
34
34
  * Placeholder for the underlying input component.
35
35
  */
36
36
  this.placeholder = 'Filter...';
37
+ /**
38
+ * Whether the control is focused.
39
+ */
40
+ this.focused = false;
37
41
  /**
38
42
  * Called when the control receives a change event.
39
43
  */
@@ -64,6 +68,11 @@ export class FilterDateComponent {
64
68
  this.onChange(v);
65
69
  }
66
70
  }
71
+ /**
72
+ * Whether the control is focused.
73
+ */
74
+ onFocusIn() { this.focused = true; }
75
+ onFocusOut() { this.focused = false; }
67
76
  /**
68
77
  * Call serch event
69
78
  */
@@ -100,8 +109,8 @@ export class FilterDateComponent {
100
109
  */
101
110
  registerOnTouched(fn) { this.onTouched = fn; }
102
111
  }
103
- /** @nocollapse */ FilterDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: FilterDateComponent, deps: [{ token: i1.MatTable }, { token: i2.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Component });
104
- /** @nocollapse */ FilterDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: FilterDateComponent, selector: "mat-header-cell[filter-date], [mat-header-cell][filter-date], [filter-date]", inputs: { field: "field", debounce: "debounce", placeholder: "placeholder" }, providers: [
112
+ /** @nocollapse */ FilterDateComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FilterDateComponent, deps: [{ token: i1.MatTable }, { token: i2.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Component });
113
+ /** @nocollapse */ FilterDateComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: FilterDateComponent, selector: "mat-header-cell[filter-date], [mat-header-cell][filter-date], [filter-date]", inputs: { field: "field", debounce: "debounce", placeholder: "placeholder" }, host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()" } }, providers: [
105
114
  {
106
115
  provide: NG_VALUE_ACCESSOR,
107
116
  useExisting: forwardRef((() => FilterDateComponent)),
@@ -109,36 +118,30 @@ export class FilterDateComponent {
109
118
  }
110
119
  ], ngImport: i0, template: `
111
120
  <mat-form-field flex>
112
- <input matInput [matDatepicker]="picker" [ngModel]="value" (ngModelChange)="handleSearch($event)"
113
- (click)="picker.open()" [placeholder]="placeholder" (search)="handleSearch($event)" (keyup.enter)="handleSearch($event)"
114
- readonly>
121
+ <input matInput [matDatepicker]="picker" [ngModel]="value" (ngModelChange)="handleSearch($event)" (click)="picker.open()" (search)="handleSearch($event)" (keyup.enter)="handleSearch($event)" readonly>
122
+ <span matPrefix *ngIf="!value && !focused"><mat-icon>manage_search</mat-icon></span>
115
123
  <button type="button" mat-button matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
116
124
  <mat-icon>close</mat-icon>
117
125
  </button>
118
126
  <mat-datepicker #picker></mat-datepicker>
119
- </mat-form-field>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }] });
120
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: FilterDateComponent, decorators: [{
127
+ </mat-form-field>`, isInline: true, styles: [".mdc-icon-button{padding:3px;width:30px;height:30px}.mdc-icon-button mat-icon{line-height:1.125;font-size:.8em}mat-icon{opacity:.7}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatButton, selector: " button[mat-button], button[mat-raised-button], button[mat-flat-button], button[mat-stroked-button] ", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i9.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }] });
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FilterDateComponent, decorators: [{
121
129
  type: Component,
122
- args: [{
123
- selector: 'mat-header-cell[filter-date], [mat-header-cell][filter-date], [filter-date]',
124
- template: `
130
+ args: [{ selector: 'mat-header-cell[filter-date], [mat-header-cell][filter-date], [filter-date]', template: `
125
131
  <mat-form-field flex>
126
- <input matInput [matDatepicker]="picker" [ngModel]="value" (ngModelChange)="handleSearch($event)"
127
- (click)="picker.open()" [placeholder]="placeholder" (search)="handleSearch($event)" (keyup.enter)="handleSearch($event)"
128
- readonly>
132
+ <input matInput [matDatepicker]="picker" [ngModel]="value" (ngModelChange)="handleSearch($event)" (click)="picker.open()" (search)="handleSearch($event)" (keyup.enter)="handleSearch($event)" readonly>
133
+ <span matPrefix *ngIf="!value && !focused"><mat-icon>manage_search</mat-icon></span>
129
134
  <button type="button" mat-button matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
130
135
  <mat-icon>close</mat-icon>
131
136
  </button>
132
137
  <mat-datepicker #picker></mat-datepicker>
133
- </mat-form-field>`,
134
- providers: [
138
+ </mat-form-field>`, providers: [
135
139
  {
136
140
  provide: NG_VALUE_ACCESSOR,
137
141
  useExisting: forwardRef((() => FilterDateComponent)),
138
142
  multi: true
139
143
  }
140
- ]
141
- }]
144
+ ], styles: [".mdc-icon-button{padding:3px;width:30px;height:30px}.mdc-icon-button mat-icon{line-height:1.125;font-size:.8em}mat-icon{opacity:.7}\n"] }]
142
145
  }], ctorParameters: function () { return [{ type: i1.MatTable }, { type: i2.CdkColumnDef }]; }, propDecorators: { field: [{
143
146
  type: Input
144
147
  }], debounce: [{
@@ -147,5 +150,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
147
150
  }], placeholder: [{
148
151
  type: Input,
149
152
  args: ['placeholder']
153
+ }], onFocusIn: [{
154
+ type: HostListener,
155
+ args: ["focusin"]
156
+ }], onFocusOut: [{
157
+ type: HostListener,
158
+ args: ["focusout"]
150
159
  }] } });
151
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvdGFibGUvY29tcG9uZW50cy9maWx0ZXItZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3RCxPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7Ozs7Ozs7OztBQXNCbkQsTUFBTSxPQUFPLG1CQUFtQjtJQStCL0I7OztPQUdHO0lBQ0gsWUFBb0IsS0FBb0IsRUFBVSxNQUFvQjtRQUFsRCxVQUFLLEdBQUwsS0FBSyxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQWpDdEU7O1dBRUc7UUFDTSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRTVCOzs7V0FHRztRQUNnQixhQUFRLEdBQVcsR0FBRyxDQUFDO1FBRTFDOzs7V0FHRztRQUNtQixnQkFBVyxHQUFXLFdBQVcsQ0FBQztRQThEeEQ7O1dBRUc7UUFDSCxhQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0Qjs7V0FFRztRQUNILGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEI7O1dBRUc7UUFDSyxXQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUV6RDs7V0FFRztRQUNLLFFBQUcsR0FBRyxDQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUUsRUFBRSxHQUFHLE9BQU8sQ0FBQyxHQUFH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QUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsb0JBQW9CLEVBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNYO3FCQUNEO2lCQUNEOzBIQU1TLEtBQUs7c0JBQWIsS0FBSztnQkFNYSxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBTUssV0FBVztzQkFBaEMsS0FBSzt1QkFBQyxhQUFhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29sdW1uRGVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdtYXQtaGVhZGVyLWNlbGxbZmlsdGVyLWRhdGVdLCBbbWF0LWhlYWRlci1jZWxsXVtmaWx0ZXItZGF0ZV0sIFtmaWx0ZXItZGF0ZV0nLFxyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleD5cclxuXHRcdFx0PGlucHV0IG1hdElucHV0IFttYXREYXRlcGlja2VyXT1cInBpY2tlclwiIFtuZ01vZGVsXT1cInZhbHVlXCIgKG5nTW9kZWxDaGFuZ2UpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG5cdFx0XHQoY2xpY2spPVwicGlja2VyLm9wZW4oKVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIChzZWFyY2gpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIiAoa2V5dXAuZW50ZXIpPVwiaGFuZGxlU2VhcmNoKCRldmVudClcIlxyXG5cdFx0XHRyZWFkb25seT5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJDbGVhclwiICpuZ0lmPVwidmFsdWVcIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiPlxyXG5cdFx0XHRcdDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHQ8bWF0LWRhdGVwaWNrZXIgI3BpY2tlcj48L21hdC1kYXRlcGlja2VyPlxyXG5cdFx0PC9tYXQtZm9ybS1maWVsZD5gLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsdGVyRGF0ZUNvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlXHJcblx0XHR9XHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcblx0LyoqXHJcblx0ICogRmllbGQgbmFtZVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIGZpZWxkOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogZGVib3VuY2U/OiBudW1iZXJcclxuXHQgKiBEZWJvdW5jZSB0aW1lb3V0IGJldHdlZW4ga2V5cHJlc3Nlcy4gRGVmYXVsdHMgdG8gNDAwLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgnZGVib3VuY2UnKSBkZWJvdW5jZTogbnVtYmVyID0gNDAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBwbGFjZWhvbGRlcj86IHN0cmluZ1xyXG5cdCAqIFBsYWNlaG9sZGVyIGZvciB0aGUgdW5kZXJseWluZyBpbnB1dCBjb21wb25lbnQuXHJcblx0ICovXHJcblx0QElucHV0KCdwbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnRmlsdGVyLi4uJztcclxuXHJcblx0LyoqXHJcblx0ICogU2V0dGVycyBhbmQgZ2V0dGVycyBmb3IgdGhlIGlucHV0IHZhbHVlXHJcblx0ICovXHJcblx0Z2V0IHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdOyB9O1xyXG5cdHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuXHRcdGlmICh2ICE9PSB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdKSB7XHJcblx0XHRcdHRoaXMudGFibGUuZGF0YVNvdXJjZVsnZmllbGRGaWx0ZXJzJ11bdGhpcy5maWVsZF0gPSB2O1xyXG5cdFx0XHR0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ3BhZ2luYXRvciddWydwYWdlSW5kZXgnXSA9IDA7XHJcblx0XHRcdHRoaXMub25DaGFuZ2Uodik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSB0YWJsZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBNYXRUYWJsZTxhbnk+LCBwcml2YXRlIGNvbHVtbjogQ2RrQ29sdW1uRGVmKSB7XHJcblx0XHR0aGlzLmZpZWxkID0gdGhpcy5jb2x1bW4ubmFtZS5yZXBsYWNlKCdmaWx0ZXIuJywgJycpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbCBzZXJjaCBldmVudFxyXG5cdCAqL1xyXG5cdGhhbmRsZVNlYXJjaChkYXRlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG5cdFx0XHR0aGlzLnZhbHVlID0gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke3RoaXMucGFkKGRhdGUuZ2V0TW9udGgoKSArIDEsIDIpfS0ke3RoaXMucGFkKGRhdGUuZ2V0RGF0ZSgpLCAyKX1gO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy52YWx1ZSA9IGAke2RhdGUueWVhcigpfS0ke3RoaXMucGFkKGRhdGUubW9udGgoKSArIDEsIDIpfS0ke3RoaXMucGFkKGRhdGUuZGF0ZSgpLCAyKX1gO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMucmVsb2FkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhcnMgaW5wdXQgYm94XHJcblx0ICovXHJcblx0Y2xlYXJTZWFyY2goKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy52YWx1ZSAhPSAnJykge1xyXG5cdFx0XHR0aGlzLnZhbHVlID0gJyc7XHJcblx0XHRcdHRoaXMucmVsb2FkKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXcml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cclxuXHQgKi9cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0b25DaGFuZ2UgPSAoXykgPT4geyB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuXHJcblx0LyoqXHJcblx0ICogUmVsb2FkIGRhdGFcclxuXHQgKi9cclxuXHRwcml2YXRlIHJlbG9hZCA9ICgpID0+IHRoaXMudGFibGUuZGF0YVNvdXJjZVsncmVsb2FkJ10oKTtcclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBsZWFkaW5nIHplcm9zIHRvIGEgZGlnaXRcclxuXHQgKi9cclxuXHRwcml2YXRlIHBhZCA9IChudW0sIHNpemUpID0+IHsgcmV0dXJuICgnMCcgKyBudW0pLnN1YnN0cigtc2l6ZSkgfTtcclxufSJdfQ==
160
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWRhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NyYy9saWIvdGFibGUvY29tcG9uZW50cy9maWx0ZXItZGF0ZS5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQzs7Ozs7Ozs7Ozs7QUFxQ25ELE1BQU0sT0FBTyxtQkFBbUI7SUEwQy9COzs7T0FHRztJQUNILFlBQW9CLEtBQW9CLEVBQVUsTUFBb0I7UUFBbEQsVUFBSyxHQUFMLEtBQUssQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWM7UUE1Q3RFOztXQUVHO1FBQ00sVUFBSyxHQUFXLEVBQUUsQ0FBQztRQUU1Qjs7O1dBR0c7UUFDZ0IsYUFBUSxHQUFXLEdBQUcsQ0FBQztRQUUxQzs7O1dBR0c7UUFDbUIsZ0JBQVcsR0FBVyxXQUFXLENBQUM7UUFjeEQ7O1dBRUc7UUFDSSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBd0R2Qjs7V0FFRztRQUNILGFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXRCOztXQUVHO1FBQ0gsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV0Qjs7V0FFRztRQUNLLFdBQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1FBRXpEOztXQUVHO1FBQ0ssUUFBRyxHQUFHLENB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Q2xELEtBQUssRUFBRSxJQUFJO1NBQ1g7S0FDRCwwQkEvQlM7Ozs7Ozs7O29CQVFTOzJGQXlCUCxtQkFBbUI7a0JBbkMvQixTQUFTOytCQUNDLDZFQUE2RSxZQUM3RTs7Ozs7Ozs7b0JBUVMsYUFpQlI7d0JBQ1Y7NEJBQ0MsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsb0JBQW9CLEVBQUM7NEJBQ2xELEtBQUssRUFBRSxJQUFJO3lCQUNYO3FCQUNEOzBIQU9RLEtBQUs7c0JBQWIsS0FBSztnQkFNYSxRQUFRO3NCQUExQixLQUFLO3VCQUFDLFVBQVU7Z0JBTUssV0FBVztzQkFBaEMsS0FBSzt1QkFBQyxhQUFhO2dCQXNCSyxTQUFTO3NCQUFqQyxZQUFZO3VCQUFDLFNBQVM7Z0JBQ0csVUFBVTtzQkFBbkMsWUFBWTt1QkFBQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29sdW1uRGVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuXHRzZWxlY3RvcjogJ21hdC1oZWFkZXItY2VsbFtmaWx0ZXItZGF0ZV0sIFttYXQtaGVhZGVyLWNlbGxdW2ZpbHRlci1kYXRlXSwgW2ZpbHRlci1kYXRlXScsXHJcblx0dGVtcGxhdGU6IGBcclxuXHRcdDxtYXQtZm9ybS1maWVsZCBmbGV4PlxyXG5cdFx0XHQ8aW5wdXQgbWF0SW5wdXQgW21hdERhdGVwaWNrZXJdPVwicGlja2VyXCIgW25nTW9kZWxdPVwidmFsdWVcIiAobmdNb2RlbENoYW5nZSk9XCJoYW5kbGVTZWFyY2goJGV2ZW50KVwiIChjbGljayk9XCJwaWNrZXIub3BlbigpXCIgKHNlYXJjaCk9XCJoYW5kbGVTZWFyY2goJGV2ZW50KVwiIChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50KVwiIHJlYWRvbmx5PlxyXG5cdFx0XHQ8c3BhbiBtYXRQcmVmaXggKm5nSWY9XCIhdmFsdWUgJiYgIWZvY3VzZWRcIj48bWF0LWljb24+bWFuYWdlX3NlYXJjaDwvbWF0LWljb24+PC9zcGFuPlxyXG5cdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsZWFyXCIgKm5nSWY9XCJ2YWx1ZVwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCI+XHJcblx0XHRcdFx0PG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuXHRcdFx0PC9idXR0b24+XHJcblx0XHRcdDxtYXQtZGF0ZXBpY2tlciAjcGlja2VyPjwvbWF0LWRhdGVwaWNrZXI+XHJcblx0XHQ8L21hdC1mb3JtLWZpZWxkPmAsXHJcblx0c3R5bGVzOiBbYFx0XHRcclxuXHRcdC5tZGMtaWNvbi1idXR0b24ge1xyXG5cdFx0XHRwYWRkaW5nOiAzcHg7XHJcblx0XHRcdHdpZHRoOiAzMHB4O1xyXG5cdFx0XHRoZWlnaHQ6IDMwcHg7XHJcblx0XHR9XHJcblx0XHRcdFxyXG5cdFx0Lm1kYy1pY29uLWJ1dHRvbiBtYXQtaWNvbiB7XHJcblx0XHRcdGxpbmUtaGVpZ2h0OiAxLjEyNTtcclxuICAgIFx0XHRmb250LXNpemU6IDAuOGVtO1xyXG5cdFx0fVxyXG5cclxuXHRcdG1hdC1pY29uIHtcclxuXHRcdFx0b3BhY2l0eTogMC43O1xyXG5cdFx0fVxyXG5cdGBdLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsdGVyRGF0ZUNvbXBvbmVudCksXHJcblx0XHRcdG11bHRpOiB0cnVlXHJcblx0XHR9XHJcblx0XVxyXG59KVxyXG5leHBvcnQgY2xhc3MgRmlsdGVyRGF0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHJcblx0LyoqXHJcblx0ICogRmllbGQgbmFtZVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIGZpZWxkOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogZGVib3VuY2U/OiBudW1iZXJcclxuXHQgKiBEZWJvdW5jZSB0aW1lb3V0IGJldHdlZW4ga2V5cHJlc3Nlcy4gRGVmYXVsdHMgdG8gNDAwLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgnZGVib3VuY2UnKSBkZWJvdW5jZTogbnVtYmVyID0gNDAwO1xyXG5cclxuXHQvKipcclxuXHQgKiBwbGFjZWhvbGRlcj86IHN0cmluZ1xyXG5cdCAqIFBsYWNlaG9sZGVyIGZvciB0aGUgdW5kZXJseWluZyBpbnB1dCBjb21wb25lbnQuXHJcblx0ICovXHJcblx0QElucHV0KCdwbGFjZWhvbGRlcicpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnRmlsdGVyLi4uJztcclxuXHJcblx0LyoqXHJcblx0ICogU2V0dGVycyBhbmQgZ2V0dGVycyBmb3IgdGhlIGlucHV0IHZhbHVlXHJcblx0ICovXHJcblx0Z2V0IHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdOyB9O1xyXG5cdHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuXHRcdGlmICh2ICE9PSB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdKSB7XHJcblx0XHRcdHRoaXMudGFibGUuZGF0YVNvdXJjZVsnZmllbGRGaWx0ZXJzJ11bdGhpcy5maWVsZF0gPSB2O1xyXG5cdFx0XHR0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ3BhZ2luYXRvciddWydwYWdlSW5kZXgnXSA9IDA7XHJcblx0XHRcdHRoaXMub25DaGFuZ2Uodik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGZvY3VzZWQuXHJcblx0ICovXHJcblx0cHVibGljIGZvY3VzZWQgPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgY29udHJvbCBpcyBmb2N1c2VkLlxyXG5cdCAqL1xyXG5cdEBIb3N0TGlzdGVuZXIoXCJmb2N1c2luXCIpIG9uRm9jdXNJbigpIHsgdGhpcy5mb2N1c2VkID0gdHJ1ZTsgfVxyXG5cdEBIb3N0TGlzdGVuZXIoXCJmb2N1c291dFwiKSBvbkZvY3VzT3V0KCkgeyB0aGlzLmZvY3VzZWQgPSBmYWxzZTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSB0YWJsZSBcclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBNYXRUYWJsZTxhbnk+LCBwcml2YXRlIGNvbHVtbjogQ2RrQ29sdW1uRGVmKSB7XHJcblx0XHR0aGlzLmZpZWxkID0gdGhpcy5jb2x1bW4ubmFtZS5yZXBsYWNlKCdmaWx0ZXIuJywgJycpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbCBzZXJjaCBldmVudFxyXG5cdCAqL1xyXG5cdGhhbmRsZVNlYXJjaChkYXRlOiBhbnkpOiB2b2lkIHtcclxuXHRcdGlmIChkYXRlIGluc3RhbmNlb2YgRGF0ZSkge1xyXG5cdFx0XHR0aGlzLnZhbHVlID0gYCR7ZGF0ZS5nZXRGdWxsWWVhcigpfS0ke3RoaXMucGFkKGRhdGUuZ2V0TW9udGgoKSArIDEsIDIpfS0ke3RoaXMucGFkKGRhdGUuZ2V0RGF0ZSgpLCAyKX1gO1xyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0dGhpcy52YWx1ZSA9IGAke2RhdGUueWVhcigpfS0ke3RoaXMucGFkKGRhdGUubW9udGgoKSArIDEsIDIpfS0ke3RoaXMucGFkKGRhdGUuZGF0ZSgpLCAyKX1gO1xyXG5cdFx0fVxyXG5cclxuXHRcdHRoaXMucmVsb2FkKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDbGVhcnMgaW5wdXQgYm94XHJcblx0ICovXHJcblx0Y2xlYXJTZWFyY2goKTogdm9pZCB7XHJcblx0XHRpZiAodGhpcy52YWx1ZSAhPSAnJykge1xyXG5cdFx0XHR0aGlzLnZhbHVlID0gJyc7XHJcblx0XHRcdHRoaXMucmVsb2FkKCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBXcml0ZSBhIG5ldyB2YWx1ZSB0byB0aGUgZWxlbWVudC5cclxuXHQgKi9cclxuXHR3cml0ZVZhbHVlKHZhbHVlOiBhbnkpIHtcclxuXHRcdHRoaXMudmFsdWUgPSB2YWx1ZTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0b25DaGFuZ2UgPSAoXykgPT4geyB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuXHJcblx0LyoqXHJcblx0ICogUmVsb2FkIGRhdGFcclxuXHQgKi9cclxuXHRwcml2YXRlIHJlbG9hZCA9ICgpID0+IHRoaXMudGFibGUuZGF0YVNvdXJjZVsncmVsb2FkJ10oKTtcclxuXHJcblx0LyoqXHJcblx0ICogQWRkcyBsZWFkaW5nIHplcm9zIHRvIGEgZGlnaXRcclxuXHQgKi9cclxuXHRwcml2YXRlIHBhZCA9IChudW0sIHNpemUpID0+IHsgcmV0dXJuICgnMCcgKyBudW0pLnN1YnN0cigtc2l6ZSkgfTtcclxufSJdfQ==
@@ -40,6 +40,10 @@ export class FilterInputComponent {
40
40
  * Placeholder for the underlying input component.
41
41
  */
42
42
  this.placeholder = 'Filter...';
43
+ /**
44
+ * Whether the control is focused.
45
+ */
46
+ this.focused = false;
43
47
  /**
44
48
  * Called when the control receives a change event.
45
49
  */
@@ -54,6 +58,11 @@ export class FilterInputComponent {
54
58
  this.reload = () => this.table.dataSource['reload']();
55
59
  this.field = this.column.name.replace('filter.', '');
56
60
  }
61
+ /**
62
+ * Whether the control is focused.
63
+ */
64
+ onFocusIn() { this.focused = true; }
65
+ onFocusOut() { this.focused = false; }
57
66
  /**
58
67
  * Setters and getters for the input value
59
68
  */
@@ -143,41 +152,37 @@ export class FilterInputComponent {
143
152
  }
144
153
  }
145
154
  }
146
- /** @nocollapse */ FilterInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: FilterInputComponent, deps: [{ token: i1.MatTable }, { token: i2.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Component });
147
- /** @nocollapse */ FilterInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: FilterInputComponent, selector: "mat-header-cell[filter-input], [mat-header-cell][filter-input], [filter-input]", inputs: { field: "field", operator: "operator", onlyNumber: "onlyNumber", debounce: "debounce", placeholder: "placeholder" }, host: { listeners: { "keydown": "onKeyDown($event)" } }, providers: [
155
+ /** @nocollapse */ FilterInputComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FilterInputComponent, deps: [{ token: i1.MatTable }, { token: i2.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Component });
156
+ /** @nocollapse */ FilterInputComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: FilterInputComponent, selector: "mat-header-cell[filter-input], [mat-header-cell][filter-input], [filter-input]", inputs: { field: "field", operator: "operator", onlyNumber: "onlyNumber", debounce: "debounce", placeholder: "placeholder" }, host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()", "keydown": "onKeyDown($event)" } }, providers: [
148
157
  {
149
158
  provide: NG_VALUE_ACCESSOR,
150
159
  useExisting: forwardRef((() => FilterInputComponent)),
151
160
  multi: true
152
161
  }
153
162
  ], viewQueries: [{ propertyName: "_filter", first: true, predicate: ["filterElement"], descendants: true, static: true }], ngImport: i0, template: `
154
- <mat-form-field flex>
155
- <input matInput #filterElement ngControl="filterElement" autocomplete="off" type="input" [(ngModel)]="value" [placeholder]="placeholder" (search)="stopPropagation($event)"
156
- (keyup.enter)="handleSearch($event)"/>
157
- <button type="button" mat-button matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
163
+ <mat-form-field [ngClass]="{'filter-not-empty': value}" flex>
164
+ <input matInput #filterElement ngControl="filterElement" autocomplete="off" type="input" [(ngModel)]="value" (search)="stopPropagation($event)" (keyup.enter)="handleSearch($event)"/>
165
+ <span matPrefix *ngIf="!value && !focused"><mat-icon>manage_search</mat-icon></span>
166
+ <button type="button" matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
158
167
  <mat-icon>close</mat-icon>
159
168
  </button>
160
- </mat-form-field>`, isInline: true, dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
161
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: FilterInputComponent, decorators: [{
169
+ </mat-form-field>`, isInline: true, styles: [".mdc-icon-button{padding:3px;width:30px;height:30px}.mdc-icon-button mat-icon{line-height:1.125;font-size:.8em}mat-icon{opacity:.6}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i4.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatIconButton, selector: "button[mat-icon-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "component", type: i6.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i6.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]" }, { kind: "directive", type: i6.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]" }, { kind: "component", type: i7.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }] });
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FilterInputComponent, decorators: [{
162
171
  type: Component,
163
- args: [{
164
- selector: 'mat-header-cell[filter-input], [mat-header-cell][filter-input], [filter-input]',
165
- template: `
166
- <mat-form-field flex>
167
- <input matInput #filterElement ngControl="filterElement" autocomplete="off" type="input" [(ngModel)]="value" [placeholder]="placeholder" (search)="stopPropagation($event)"
168
- (keyup.enter)="handleSearch($event)"/>
169
- <button type="button" mat-button matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
172
+ args: [{ selector: 'mat-header-cell[filter-input], [mat-header-cell][filter-input], [filter-input]', template: `
173
+ <mat-form-field [ngClass]="{'filter-not-empty': value}" flex>
174
+ <input matInput #filterElement ngControl="filterElement" autocomplete="off" type="input" [(ngModel)]="value" (search)="stopPropagation($event)" (keyup.enter)="handleSearch($event)"/>
175
+ <span matPrefix *ngIf="!value && !focused"><mat-icon>manage_search</mat-icon></span>
176
+ <button type="button" matSuffix mat-icon-button aria-label="Clear" *ngIf="value" (click)="clearSearch()">
170
177
  <mat-icon>close</mat-icon>
171
178
  </button>
172
- </mat-form-field>`,
173
- providers: [
179
+ </mat-form-field>`, providers: [
174
180
  {
175
181
  provide: NG_VALUE_ACCESSOR,
176
182
  useExisting: forwardRef((() => FilterInputComponent)),
177
183
  multi: true
178
184
  }
179
- ]
180
- }]
185
+ ], styles: [".mdc-icon-button{padding:3px;width:30px;height:30px}.mdc-icon-button mat-icon{line-height:1.125;font-size:.8em}mat-icon{opacity:.6}\n"] }]
181
186
  }], ctorParameters: function () { return [{ type: i1.MatTable }, { type: i2.CdkColumnDef }]; }, propDecorators: { _filter: [{
182
187
  type: ViewChild,
183
188
  args: ['filterElement', { static: true }]
@@ -191,8 +196,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
191
196
  type: Input
192
197
  }], placeholder: [{
193
198
  type: Input
199
+ }], onFocusIn: [{
200
+ type: HostListener,
201
+ args: ["focusin"]
202
+ }], onFocusOut: [{
203
+ type: HostListener,
204
+ args: ["focusout"]
194
205
  }], onKeyDown: [{
195
206
  type: HostListener,
196
207
  args: ['keydown', ['$event']]
197
208
  }] } });
198
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL3RhYmxlL2NvbXBvbmVudHMvZmlsdGVyLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFvQnBFLE1BQU0sT0FBTyxvQkFBb0I7SUE4Q2hDOzs7O09BSUc7SUFDSCxZQUFvQixLQUFvQixFQUFVLE1BQW9CO1FBQWxELFVBQUssR0FBTCxLQUFLLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBNUN0RTs7V0FFRztRQUNNLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFNUI7O1dBRUc7UUFDTSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBTy9COzs7V0FHRztRQUNNLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFFaEM7OztXQUdHO1FBQ00sZ0JBQVcsR0FBVyxXQUFXLENBQUM7UUFrRjNDOztXQUVHO1FBQ0gsYUFBUSxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFdEI7O1dBRUc7UUFDSCxjQUFTLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBK0J0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QUFDOztvSUF2Slcsb0JBQW9CO3dIQUFwQixvQkFBb0IsZ1NBUnJCO1FBQ1Y7WUFDQyxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxVQUFVLEVBQUMsR0FBRyxFQUFFLENBQUMsb0JBQW9CLEVBQUM7WUFDbkQsS0FBSyxFQUFFLElBQUk7U0FDWDtLQUNELGtKQWRTOzs7Ozs7O29CQU9TOzJGQVNQLG9CQUFvQjtrQkFsQmhDLFNBQVM7bUJBQUM7b0JBQ1YsUUFBUSxFQUFFLGdGQUFnRjtvQkFDMUYsUUFBUSxFQUFFOzs7Ozs7O29CQU9TO29CQUNuQixTQUFTLEVBQUU7d0JBQ1Y7NEJBQ0MsT0FBTyxFQUFFLGlCQUFpQjs0QkFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUscUJBQXFCLEVBQUM7NEJBQ25ELEtBQUssRUFBRSxJQUFJO3lCQUNYO3FCQUNEO2lCQUNEOzBIQU1zRCxPQUFPO3NCQUE1RCxTQUFTO3VCQUFDLGVBQWUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS25DLEtBQUs7c0JBQWIsS0FBSztnQkFLRyxRQUFRO3NCQUFoQixLQUFLO2dCQUtHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBTUcsUUFBUTtzQkFBaEIsS0FBSztnQkFNRyxXQUFXO3NCQUFuQixLQUFLO2dCQWdHK0IsU0FBUztzQkFBN0MsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtDb2x1bW5EZWYgfSBmcm9tICdAYW5ndWxhci9jZGsvdGFibGUnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5wdXQsIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IGZyb21FdmVudCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdtYXQtaGVhZGVyLWNlbGxbZmlsdGVyLWlucHV0XSwgW21hdC1oZWFkZXItY2VsbF1bZmlsdGVyLWlucHV0XSwgW2ZpbHRlci1pbnB1dF0nLFxyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleD5cclxuXHRcdFx0PGlucHV0IG1hdElucHV0ICNmaWx0ZXJFbGVtZW50IG5nQ29udHJvbD1cImZpbHRlckVsZW1lbnRcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwiaW5wdXRcIiBbKG5nTW9kZWwpXT1cInZhbHVlXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgKHNlYXJjaCk9XCJzdG9wUHJvcGFnYXRpb24oJGV2ZW50KVwiXHJcblx0XHRcdChrZXl1cC5lbnRlcik9XCJoYW5kbGVTZWFyY2goJGV2ZW50KVwiLz5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWJ1dHRvbiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJDbGVhclwiICpuZ0lmPVwidmFsdWVcIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiPlxyXG5cdFx0XHRcdDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9tYXQtZm9ybS1maWVsZD5gLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsdGVySW5wdXRDb21wb25lbnQpLFxyXG5cdFx0XHRtdWx0aTogdHJ1ZVxyXG5cdFx0fVxyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlcklucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgcmVmZXJuY2UgdG8gdGhlIGlucHV0IGVsZW1lbnRcclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKCdmaWx0ZXJFbGVtZW50JywgeyBzdGF0aWM6IHRydWUgfSkgcHJpdmF0ZSBfZmlsdGVyOiBFbGVtZW50UmVmO1xyXG5cclxuXHQvKipcclxuXHQgKiBGaWVsZCBuYW1lXHJcblx0ICovXHJcblx0QElucHV0KCkgZmllbGQ6IHN0cmluZyA9ICcnO1xyXG5cclxuXHQvKipcclxuXHQgKiBRdWVyeSBvcGVyYXRvclxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIG9wZXJhdG9yOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogT25seSBudW1iZXJcclxuXHQgKi9cclxuXHRASW5wdXQoKSBvbmx5TnVtYmVyOiBib29sZWFuO1xyXG5cclxuXHQvKipcclxuXHQgKiBkZWJvdW5jZT86IG51bWJlclxyXG5cdCAqIERlYm91bmNlIHRpbWVvdXQgYmV0d2VlbiBrZXlwcmVzc2VzLiBEZWZhdWx0cyB0byA0MDAuXHJcblx0ICovXHJcblx0QElucHV0KCkgZGVib3VuY2U6IG51bWJlciA9IDQwMDtcclxuXHJcblx0LyoqXHJcblx0ICogcGxhY2Vob2xkZXI/OiBzdHJpbmdcclxuXHQgKiBQbGFjZWhvbGRlciBmb3IgdGhlIHVuZGVybHlpbmcgaW5wdXQgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnRmlsdGVyLi4uJztcclxuXHJcblx0LyoqXHJcblx0ICogU2V0dGVycyBhbmQgZ2V0dGVycyBmb3IgdGhlIGlucHV0IHZhbHVlXHJcblx0ICovXHJcblx0Z2V0IHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdPy5yZXBsYWNlKHRoaXMub3BlcmF0b3IsICcnKT8udHJpbSgpOyB9O1xyXG5cdHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuXHRcdGlmICh2ICE9PSB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdKSB7XHJcblx0XHRcdHRoaXMudGFibGUuZGF0YVNvdXJjZVsnZmllbGRGaWx0ZXJzJ11bdGhpcy5maWVsZF0gPSB2ID8gYCR7dGhpcy5vcGVyYXRvciB8fCAnJ30ke3Z9YCA6ICcnO1xyXG5cdFx0XHR0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ3BhZ2luYXRvciddWydwYWdlSW5kZXgnXSA9IDA7XHJcblx0XHRcdHRoaXMub25DaGFuZ2Uodik7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDb25zdHJ1Y3RvclxyXG5cdCAqIEBwYXJhbSB0YWJsZVxyXG5cdCAqIEBwYXJhbSBjb2x1bW5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIHRhYmxlOiBNYXRUYWJsZTxhbnk+LCBwcml2YXRlIGNvbHVtbjogQ2RrQ29sdW1uRGVmKSB7XHJcblx0XHR0aGlzLmZpZWxkID0gdGhpcy5jb2x1bW4ubmFtZS5yZXBsYWNlKCdmaWx0ZXIuJywgJycpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogTGlmZWN5Y2xlIGhvb2sgdGhhdCBpcyBjYWxsZWQgYWZ0ZXIgZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIG9mIGEgZGlyZWN0aXZlIGFyZSBpbml0aWFsaXplZC5cclxuXHQgKi9cclxuXHRuZ09uSW5pdCgpIHtcclxuXHRcdGZyb21FdmVudCh0aGlzLl9maWx0ZXIubmF0aXZlRWxlbWVudCwgJ2tleXVwJylcclxuXHRcdFx0LnBpcGUoXHJcblx0XHRcdFx0ZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2UpLFxyXG5cdFx0XHRcdGRpc3RpbmN0VW50aWxDaGFuZ2VkKClcclxuXHRcdFx0KS5zdWJzY3JpYmUoKHZhbHVlOiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRpZiAodmFsdWUgIT0gdW5kZWZpbmVkKSB7XHJcblx0XHRcdFx0XHR0aGlzLnJlbG9hZCgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBQcmV2ZW50cyB0aGUgZXZlbnQgZnJvbSBidWJibGluZyB1cCB0aGUgRE9NIHRyZWUsIHByZXZlbnRpbmcgYW55IHBhcmVudCBcclxuXHQgKiBoYW5kbGVycyBmcm9tIGJlaW5nIG5vdGlmaWVkIG9mIHRoZSBldmVudC5cclxuXHQgKi9cclxuXHRzdG9wUHJvcGFnYXRpb24oZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENhbGwgc2VyY2ggZXZlbnRcclxuXHQgKi9cclxuXHRoYW5kbGVTZWFyY2goZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHR0aGlzLnN0b3BQcm9wYWdhdGlvbihldmVudCk7XHJcblx0XHR0aGlzLnJlbG9hZCgpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2xlYXJzIGlucHV0IGJveFxyXG5cdCAqL1xyXG5cdGNsZWFyU2VhcmNoKCk6IHZvaWQge1xyXG5cdFx0aWYgKHRoaXMudmFsdWUgIT0gJycpIHtcclxuXHRcdFx0dGhpcy52YWx1ZSA9ICcnO1xyXG5cdFx0XHR0aGlzLnJlbG9hZCgpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV3JpdGUgYSBuZXcgdmFsdWUgdG8gdGhlIGVsZW1lbnQuXHJcblx0ICovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblx0XHR0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0b25DaGFuZ2UgPSAoXykgPT4geyB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxuXHJcblx0LyoqXHJcblx0ICogSGFuZGxlcyBrZXlkb3duIGV2ZW50c1xyXG5cdCAqIEBwYXJhbSBldmVudCBcclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSkgb25LZXlEb3duKGV2ZW50KSB7XHJcblx0XHRsZXQgZSA9IDxLZXlib2FyZEV2ZW50PmV2ZW50O1xyXG5cdFx0aWYgKHRoaXMub25seU51bWJlcikge1xyXG5cdFx0XHRpZiAoWzQ2LCA4LCA5LCAyNywgMTMsIDExMCwgMTkwXS5pbmRleE9mKGUua2V5Q29kZSkgIT09IC0xIHx8XHJcblx0XHRcdFx0LyogQWxsb3c6IEN0cmwrQSAqL1xyXG5cdFx0XHRcdChlLmtleUNvZGUgPT09IDY1ICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSkgfHxcclxuXHRcdFx0XHQvKiBBbGxvdzogQ3RybCtDICovXHJcblx0XHRcdFx0KGUua2V5Q29kZSA9PT0gNjcgJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpKSB8fFxyXG5cdFx0XHRcdC8qIEFsbG93OiBDdHJsK1YgKi9cclxuXHRcdFx0XHQoZS5rZXlDb2RlID09PSA4NiAmJiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkpIHx8XHJcblx0XHRcdFx0LyogQWxsb3c6IEN0cmwrWCAqL1xyXG5cdFx0XHRcdChlLmtleUNvZGUgPT09IDg4ICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSkgfHxcclxuXHRcdFx0XHQvKiBBbGxvdzogaG9tZSwgZW5kLCBsZWZ0LCByaWdodCAqL1xyXG5cdFx0XHRcdChlLmtleUNvZGUgPj0gMzUgJiYgZS5rZXlDb2RlIDw9IDM5KSkge1xyXG5cdFx0XHRcdC8qIGxldCBpdCBoYXBwZW4sIGRvbid0IGRvIGFueXRoaW5nICovXHJcblx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiBFbnN1cmUgdGhhdCBpdCBpcyBhIG51bWJlciBhbmQgc3RvcCB0aGUga2V5cHJlc3MgKi9cclxuXHRcdFx0aWYgKChlLnNoaWZ0S2V5IHx8IChlLmtleUNvZGUgPCA0OCB8fCBlLmtleUNvZGUgPiA1NykpICYmIChlLmtleUNvZGUgPCA5NiB8fCBlLmtleUNvZGUgPiAxMDUpKSB7XHJcblx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZWxvYWQgZGF0YVxyXG5cdCAqL1xyXG5cdHByaXZhdGUgcmVsb2FkID0gKCkgPT4gdGhpcy50YWJsZS5kYXRhU291cmNlWydyZWxvYWQnXSgpO1xyXG59Il19
209
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL3RhYmxlL2NvbXBvbmVudHMvZmlsdGVyLWlucHV0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFHLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNqQyxPQUFPLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7Ozs7Ozs7Ozs7QUFvQ3BFLE1BQU0sT0FBTyxvQkFBb0I7SUF5RGhDOzs7O09BSUc7SUFDSCxZQUFvQixLQUFvQixFQUFVLE1BQW9CO1FBQWxELFVBQUssR0FBTCxLQUFLLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFjO1FBdkR0RTs7V0FFRztRQUNNLFVBQUssR0FBVyxFQUFFLENBQUM7UUFFNUI7O1dBRUc7UUFDTSxhQUFRLEdBQVcsRUFBRSxDQUFDO1FBTy9COzs7V0FHRztRQUNNLGFBQVEsR0FBVyxHQUFHLENBQUM7UUFFaEM7OztXQUdHO1FBQ00sZ0JBQVcsR0FBVyxXQUFXLENBQUM7UUFFM0M7O1dBRUc7UUFDSSxZQUFPLEdBQUcsS0FBSyxDQUFDO1FBd0Z2Qjs7V0FFRztRQUNILGFBQVEsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBRXRCOztXQUVHO1FBQ0gsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztRQStCdEI7O1dBRUc7UUFDSyxXQUFNLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQXhHeEQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUF6QkQ7O09BRUc7SUFDc0IsU0FBUyxLQUFLLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNuQyxVQUFVLEtBQUssSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRWhFOztPQUVHO0lBQ0gsSUFBSSxLQUFLLEtBQVUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQUEsQ0FBQztJQUNuSCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ2YsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLFFBQVEsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMxRixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDcEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUNqQjtJQUNGLENBQUM7SUFXRDs7T0FFRztJQUNILFFBQVE7UUFDUCxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsT0FBTyxDQUFDO2FBQzVDLElBQUksQ0FDSixZQUFZLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUMzQixvQkFBb0IsRUFBRSxDQUN0QixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzdCLElBQUksS0FBSyxJQUFJLFNBQVMsRUFBRTtnQkFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2FBQ2Q7UUFDRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsS0FBWTtRQUMzQixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsWUFBWSxDQUFDLEtBQVk7UUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSCxXQUFXO1FBQ1YsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDZDtJQUNGLENBQUM7SUFFRDs7T0FFRztJQUNILFVBQVUsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDdEIsQ0FBQztJQUVEOztPQUVHO0lBQ0gsZ0JBQWdCLENBQUMsRUFBb0IsSUFBVSxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFcEU7O09BRUc7SUFDSCxpQkFBaUIsQ0FBQyxFQUFjLElBQVUsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBWWhFOzs7T0FHRztJQUNrQyxTQUFTLENBQUMsS0FBSztRQUNuRCxJQUFJLENBQUMsR0FBa0IsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNwQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pELG1CQUFtQjtnQkFDbkIsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QyxtQkFBbUI7Z0JBQ25CLENBQUMsQ0FBQyxDQUFDLE9BQU8sS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDOUMsbUJBQW1CO2dCQUNuQixDQUFDLENBQUMsQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQzlDLG1CQUFtQjtnQkFDbkIsQ0FBQyxDQUFDLENBQUMsT0FBTyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUM5QyxtQ0FBbUM7Z0JBQ25DLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUMsRUFBRTtnQkFDdEMsc0NBQXNDO2dCQUN0QyxPQUFPO2FBQ1A7WUFFRCxzREFBc0Q7WUFDdEQsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQyxFQUFFO2dCQUM5RixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7YUFDbkI7U0FDRDtJQUNGLENBQUM7O29JQWxLVyxvQkFBb0I7d0hBQXBCLG9CQUFvQixzVkFSckI7UUFDVjtZQUNDLE9BQU8sRUFBRSxpQkFBaUI7WUFDMUIsV0FBVyxFQUFFLFVBQVUsRUFBQyxHQUFHLEVBQUUsQ0FBQyxvQkFBb0IsRUFBQztZQUNuRCxLQUFLLEVBQUUsSUFBSTtTQUNYO0tBQ0Qsa0pBOUJTOzs7Ozs7O29CQU9TOzJGQXlCUCxvQkFBb0I7a0JBbENoQyxTQUFTOytCQUNDLGdGQUFnRixZQUNoRjs7Ozs7OztvQkFPUyxhQWlCUjt3QkFDVjs0QkFDQyxPQUFPLEVBQUUsaUJBQWlCOzRCQUMxQixXQUFXLEVBQUUsVUFBVSxFQUFDLEdBQUcsRUFBRSxxQkFBcUIsRUFBQzs0QkFDbkQsS0FBSyxFQUFFLElBQUk7eUJBQ1g7cUJBQ0Q7MEhBT3FELE9BQU87c0JBQTVELFNBQVM7dUJBQUMsZUFBZSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFLbkMsS0FBSztzQkFBYixLQUFLO2dCQUtHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBS0csVUFBVTtzQkFBbEIsS0FBSztnQkFNRyxRQUFRO3NCQUFoQixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBVW1CLFNBQVM7c0JBQWpDLFlBQVk7dUJBQUMsU0FBUztnQkFDRyxVQUFVO3NCQUFuQyxZQUFZO3VCQUFDLFVBQVU7Z0JBZ0dhLFNBQVM7c0JBQTdDLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2RrQ29sdW1uRGVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBmb3J3YXJkUmVmLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPbkluaXQsIFZpZXdDaGlsZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdFRhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdGFibGUnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCBkaXN0aW5jdFVudGlsQ2hhbmdlZCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG5cdHNlbGVjdG9yOiAnbWF0LWhlYWRlci1jZWxsW2ZpbHRlci1pbnB1dF0sIFttYXQtaGVhZGVyLWNlbGxdW2ZpbHRlci1pbnB1dF0sIFtmaWx0ZXItaW5wdXRdJyxcclxuXHR0ZW1wbGF0ZTogYFxyXG5cdFx0PG1hdC1mb3JtLWZpZWxkIFtuZ0NsYXNzXT1cInsnZmlsdGVyLW5vdC1lbXB0eSc6IHZhbHVlfVwiIGZsZXg+XHJcblx0XHRcdDxpbnB1dCBtYXRJbnB1dCAjZmlsdGVyRWxlbWVudCBuZ0NvbnRyb2w9XCJmaWx0ZXJFbGVtZW50XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cImlucHV0XCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiICAoc2VhcmNoKT1cInN0b3BQcm9wYWdhdGlvbigkZXZlbnQpXCIgKGtleXVwLmVudGVyKT1cImhhbmRsZVNlYXJjaCgkZXZlbnQpXCIvPlxyXG5cdFx0XHQ8c3BhbiBtYXRQcmVmaXggKm5nSWY9XCIhdmFsdWUgJiYgIWZvY3VzZWRcIj48bWF0LWljb24+bWFuYWdlX3NlYXJjaDwvbWF0LWljb24+PC9zcGFuPlxyXG5cdFx0XHQ8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXRTdWZmaXggbWF0LWljb24tYnV0dG9uIGFyaWEtbGFiZWw9XCJDbGVhclwiICpuZ0lmPVwidmFsdWVcIiAoY2xpY2spPVwiY2xlYXJTZWFyY2goKVwiPlxyXG5cdFx0XHRcdDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XHJcblx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0PC9tYXQtZm9ybS1maWVsZD5gLFxyXG5cdHN0eWxlczogW2BcdFx0XHJcblx0XHQubWRjLWljb24tYnV0dG9uIHtcclxuXHRcdFx0cGFkZGluZzogM3B4O1xyXG5cdFx0XHR3aWR0aDogMzBweDtcclxuXHRcdFx0aGVpZ2h0OiAzMHB4O1xyXG5cdFx0fVxyXG5cdFx0XHRcclxuXHRcdC5tZGMtaWNvbi1idXR0b24gbWF0LWljb24ge1xyXG5cdFx0XHRsaW5lLWhlaWdodDogMS4xMjU7XHJcbiAgICBcdFx0Zm9udC1zaXplOiAwLjhlbTtcclxuXHRcdH1cclxuXHJcblx0XHRtYXQtaWNvbiB7XHJcblx0XHRcdG9wYWNpdHk6IDAuNjtcclxuXHRcdH1cclxuXHRgXSxcclxuXHRwcm92aWRlcnM6IFtcclxuXHRcdHtcclxuXHRcdFx0cHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXHJcblx0XHRcdHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEZpbHRlcklucHV0Q29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWVcclxuXHRcdH1cclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cclxuXHQvKipcclxuXHQgKiBBIHJlZmVybmNlIHRvIHRoZSBpbnB1dCBlbGVtZW50XHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZmlsdGVyRWxlbWVudCcsIHsgc3RhdGljOiB0cnVlIH0pIHByaXZhdGUgX2ZpbHRlcjogRWxlbWVudFJlZjtcclxuXHJcblx0LyoqXHJcblx0ICogRmllbGQgbmFtZVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIGZpZWxkOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogUXVlcnkgb3BlcmF0b3JcclxuXHQgKi9cclxuXHRASW5wdXQoKSBvcGVyYXRvcjogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9ubHkgbnVtYmVyXHJcblx0ICovXHJcblx0QElucHV0KCkgb25seU51bWJlcjogYm9vbGVhbjtcclxuXHJcblx0LyoqXHJcblx0ICogZGVib3VuY2U/OiBudW1iZXJcclxuXHQgKiBEZWJvdW5jZSB0aW1lb3V0IGJldHdlZW4ga2V5cHJlc3Nlcy4gRGVmYXVsdHMgdG8gNDAwLlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIGRlYm91bmNlOiBudW1iZXIgPSA0MDA7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBsYWNlaG9sZGVyPzogc3RyaW5nXHJcblx0ICogUGxhY2Vob2xkZXIgZm9yIHRoZSB1bmRlcmx5aW5nIGlucHV0IGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ0ZpbHRlci4uLic7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZm9jdXNlZC5cclxuXHQgKi9cclxuXHRwdWJsaWMgZm9jdXNlZCA9IGZhbHNlO1xyXG5cclxuXHQvKipcclxuXHQgKiBXaGV0aGVyIHRoZSBjb250cm9sIGlzIGZvY3VzZWQuXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcihcImZvY3VzaW5cIikgb25Gb2N1c0luKCkgeyB0aGlzLmZvY3VzZWQgPSB0cnVlOyB9XHJcblx0QEhvc3RMaXN0ZW5lcihcImZvY3Vzb3V0XCIpIG9uRm9jdXNPdXQoKSB7IHRoaXMuZm9jdXNlZCA9IGZhbHNlOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldHRlcnMgYW5kIGdldHRlcnMgZm9yIHRoZSBpbnB1dCB2YWx1ZVxyXG5cdCAqL1xyXG5cdGdldCB2YWx1ZSgpOiBhbnkgeyByZXR1cm4gdGhpcy50YWJsZS5kYXRhU291cmNlWydmaWVsZEZpbHRlcnMnXVt0aGlzLmZpZWxkXT8ucmVwbGFjZSh0aGlzLm9wZXJhdG9yLCAnJyk/LnRyaW0oKTsgfTtcclxuXHRzZXQgdmFsdWUodjogYW55KSB7XHJcblx0XHRpZiAodiAhPT0gdGhpcy50YWJsZS5kYXRhU291cmNlWydmaWVsZEZpbHRlcnMnXVt0aGlzLmZpZWxkXSkge1xyXG5cdFx0XHR0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdID0gdiA/IGAke3RoaXMub3BlcmF0b3IgfHwgJyd9JHt2fWAgOiAnJztcclxuXHRcdFx0dGhpcy50YWJsZS5kYXRhU291cmNlWydwYWdpbmF0b3InXVsncGFnZUluZGV4J10gPSAwO1xyXG5cdFx0XHR0aGlzLm9uQ2hhbmdlKHYpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gdGFibGVcclxuXHQgKiBAcGFyYW0gY29sdW1uXHJcblx0ICovXHJcblx0Y29uc3RydWN0b3IocHJpdmF0ZSB0YWJsZTogTWF0VGFibGU8YW55PiwgcHJpdmF0ZSBjb2x1bW46IENka0NvbHVtbkRlZikge1xyXG5cdFx0dGhpcy5maWVsZCA9IHRoaXMuY29sdW1uLm5hbWUucmVwbGFjZSgnZmlsdGVyLicsICcnKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRmcm9tRXZlbnQodGhpcy5fZmlsdGVyLm5hdGl2ZUVsZW1lbnQsICdrZXl1cCcpXHJcblx0XHRcdC5waXBlKFxyXG5cdFx0XHRcdGRlYm91bmNlVGltZSh0aGlzLmRlYm91bmNlKSxcclxuXHRcdFx0XHRkaXN0aW5jdFVudGlsQ2hhbmdlZCgpXHJcblx0XHRcdCkuc3Vic2NyaWJlKCh2YWx1ZTogc3RyaW5nKSA9PiB7XHJcblx0XHRcdFx0aWYgKHZhbHVlICE9IHVuZGVmaW5lZCkge1xyXG5cdFx0XHRcdFx0dGhpcy5yZWxvYWQoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUHJldmVudHMgdGhlIGV2ZW50IGZyb20gYnViYmxpbmcgdXAgdGhlIERPTSB0cmVlLCBwcmV2ZW50aW5nIGFueSBwYXJlbnQgXHJcblx0ICogaGFuZGxlcnMgZnJvbSBiZWluZyBub3RpZmllZCBvZiB0aGUgZXZlbnQuXHJcblx0ICovXHJcblx0c3RvcFByb3BhZ2F0aW9uKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsIHNlcmNoIGV2ZW50XHJcblx0ICovXHJcblx0aGFuZGxlU2VhcmNoKGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG5cdFx0dGhpcy5zdG9wUHJvcGFnYXRpb24oZXZlbnQpO1xyXG5cdFx0dGhpcy5yZWxvYWQoKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENsZWFycyBpbnB1dCBib3hcclxuXHQgKi9cclxuXHRjbGVhclNlYXJjaCgpOiB2b2lkIHtcclxuXHRcdGlmICh0aGlzLnZhbHVlICE9ICcnKSB7XHJcblx0XHRcdHRoaXMudmFsdWUgPSAnJztcclxuXHRcdFx0dGhpcy5yZWxvYWQoKTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cdFx0dGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgY2hhbmdlIGV2ZW50LlxyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vbkNoYW5nZSA9IGZuOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSB0b3VjaCBldmVudC5cclxuXHQgKi9cclxuXHRyZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uVG91Y2hlZCA9IGZuOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgY2hhbmdlIGV2ZW50LlxyXG5cdCAqL1xyXG5cdG9uQ2hhbmdlID0gKF8pID0+IHsgfTtcclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSB0b3VjaCBldmVudC5cclxuXHQgKi9cclxuXHRvblRvdWNoZWQgPSAoKSA9PiB7IH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRsZXMga2V5ZG93biBldmVudHNcclxuXHQgKiBAcGFyYW0gZXZlbnQgXHJcblx0ICovXHJcblx0QEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pIG9uS2V5RG93bihldmVudCkge1xyXG5cdFx0bGV0IGUgPSA8S2V5Ym9hcmRFdmVudD5ldmVudDtcclxuXHRcdGlmICh0aGlzLm9ubHlOdW1iZXIpIHtcclxuXHRcdFx0aWYgKFs0NiwgOCwgOSwgMjcsIDEzLCAxMTAsIDE5MF0uaW5kZXhPZihlLmtleUNvZGUpICE9PSAtMSB8fFxyXG5cdFx0XHRcdC8qIEFsbG93OiBDdHJsK0EgKi9cclxuXHRcdFx0XHQoZS5rZXlDb2RlID09PSA2NSAmJiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkpIHx8XHJcblx0XHRcdFx0LyogQWxsb3c6IEN0cmwrQyAqL1xyXG5cdFx0XHRcdChlLmtleUNvZGUgPT09IDY3ICYmIChlLmN0cmxLZXkgfHwgZS5tZXRhS2V5KSkgfHxcclxuXHRcdFx0XHQvKiBBbGxvdzogQ3RybCtWICovXHJcblx0XHRcdFx0KGUua2V5Q29kZSA9PT0gODYgJiYgKGUuY3RybEtleSB8fCBlLm1ldGFLZXkpKSB8fFxyXG5cdFx0XHRcdC8qIEFsbG93OiBDdHJsK1ggKi9cclxuXHRcdFx0XHQoZS5rZXlDb2RlID09PSA4OCAmJiAoZS5jdHJsS2V5IHx8IGUubWV0YUtleSkpIHx8XHJcblx0XHRcdFx0LyogQWxsb3c6IGhvbWUsIGVuZCwgbGVmdCwgcmlnaHQgKi9cclxuXHRcdFx0XHQoZS5rZXlDb2RlID49IDM1ICYmIGUua2V5Q29kZSA8PSAzOSkpIHtcclxuXHRcdFx0XHQvKiBsZXQgaXQgaGFwcGVuLCBkb24ndCBkbyBhbnl0aGluZyAqL1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogRW5zdXJlIHRoYXQgaXQgaXMgYSBudW1iZXIgYW5kIHN0b3AgdGhlIGtleXByZXNzICovXHJcblx0XHRcdGlmICgoZS5zaGlmdEtleSB8fCAoZS5rZXlDb2RlIDwgNDggfHwgZS5rZXlDb2RlID4gNTcpKSAmJiAoZS5rZXlDb2RlIDwgOTYgfHwgZS5rZXlDb2RlID4gMTA1KSkge1xyXG5cdFx0XHRcdGUucHJldmVudERlZmF1bHQoKTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUmVsb2FkIGRhdGFcclxuXHQgKi9cclxuXHRwcml2YXRlIHJlbG9hZCA9ICgpID0+IHRoaXMudGFibGUuZGF0YVNvdXJjZVsncmVsb2FkJ10oKTtcclxufSJdfQ==
@@ -2,9 +2,9 @@ import { coerceBooleanProperty } from '@angular/cdk/coercion';
2
2
  import { TemplatePortalDirective } from '@angular/cdk/portal';
3
3
  import { CdkColumnDef } from '@angular/cdk/table';
4
4
  import { HttpClient, HttpHeaders } from '@angular/common/http';
5
- import { Component, ContentChild, Directive, ElementRef, forwardRef, Injector, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
5
+ import { Component, ContentChild, Directive, ElementRef, forwardRef, HostListener, Injector, Input, TemplateRef, ViewChild, ViewContainerRef } from '@angular/core';
6
6
  import { NG_VALUE_ACCESSOR } from '@angular/forms';
7
- import { MatSelect } from '@angular/material/select';
7
+ import { MatSelect, MAT_SELECT_CONFIG } from '@angular/material/select';
8
8
  import { MatTable } from '@angular/material/table';
9
9
  import { BehaviorSubject } from 'rxjs';
10
10
  import { EnumService } from '../../common/services/enum.service';
@@ -16,14 +16,15 @@ import * as i4 from "@angular/forms";
16
16
  import * as i5 from "@angular/material/form-field";
17
17
  import * as i6 from "@angular/material/select";
18
18
  import * as i7 from "@angular/material/core";
19
+ import * as i8 from "@angular/material/icon";
19
20
  export class VdFilterOptionDirective extends TemplatePortalDirective {
20
21
  constructor(templateRef, viewContainerRef) {
21
22
  super(templateRef, viewContainerRef);
22
23
  }
23
24
  }
24
- /** @nocollapse */ VdFilterOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdFilterOptionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
25
- /** @nocollapse */ VdFilterOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: VdFilterOptionDirective, selector: "[vd-filter-option]ng-template", usesInheritance: true, ngImport: i0 });
26
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: VdFilterOptionDirective, decorators: [{
25
+ /** @nocollapse */ VdFilterOptionDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdFilterOptionDirective, deps: [{ token: i0.TemplateRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
26
+ /** @nocollapse */ VdFilterOptionDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: VdFilterOptionDirective, selector: "[vd-filter-option]ng-template", usesInheritance: true, ngImport: i0 });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: VdFilterOptionDirective, decorators: [{
27
28
  type: Directive,
28
29
  args: [{ selector: '[vd-filter-option]ng-template' }]
29
30
  }], ctorParameters: function () { return [{ type: i0.TemplateRef }, { type: i0.ViewContainerRef }]; } });
@@ -88,6 +89,10 @@ export class FilterSelectComponent {
88
89
  * The http service from to get the data
89
90
  */
90
91
  this.http = null;
92
+ /**
93
+ * Whether the control is focused.
94
+ */
95
+ this.focused = false;
91
96
  /**
92
97
  * Called when the control receives a change event.
93
98
  */
@@ -159,6 +164,11 @@ export class FilterSelectComponent {
159
164
  this.onChange(v);
160
165
  }
161
166
  }
167
+ /**
168
+ * Whether the control is focused.
169
+ */
170
+ onFocusIn() { this.focused = true; }
171
+ onFocusOut() { this.focused = false; }
162
172
  /**
163
173
  * Lifecycle hook that is called after data-bound properties of a directive are initialized.
164
174
  */
@@ -227,16 +237,21 @@ export class FilterSelectComponent {
227
237
  */
228
238
  registerOnTouched(fn) { this.onTouched = fn; }
229
239
  }
230
- /** @nocollapse */ FilterSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: FilterSelectComponent, deps: [{ token: i0.Injector }, { token: i1.MatTable }, { token: i2.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Component });
231
- /** @nocollapse */ FilterSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.0", type: FilterSelectComponent, selector: "mat-header-cell[filter-select], [mat-header-cell][filter-select], [filter-select]", inputs: { endpoint: "endpoint", params: "params", projection: "projection", sortBy: "sortBy", sorted: "sorted", enum: "enum", key: "key", text: "text", prefix: "prefix", multiple: "multiple", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", field: "field", placeholder: "placeholder", cache: "cache" }, providers: [
240
+ /** @nocollapse */ FilterSelectComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FilterSelectComponent, deps: [{ token: i0.Injector }, { token: i1.MatTable }, { token: i2.CdkColumnDef }], target: i0.ɵɵFactoryTarget.Component });
241
+ /** @nocollapse */ FilterSelectComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.0.1", type: FilterSelectComponent, selector: "mat-header-cell[filter-select], [mat-header-cell][filter-select], [filter-select]", inputs: { endpoint: "endpoint", params: "params", projection: "projection", sortBy: "sortBy", sorted: "sorted", enum: "enum", key: "key", text: "text", prefix: "prefix", multiple: "multiple", options: "options", filteredOptions: "filteredOptions", filterable: "filterable", field: "field", placeholder: "placeholder", cache: "cache" }, host: { listeners: { "focusin": "onFocusIn()", "focusout": "onFocusOut()" } }, providers: [
232
242
  {
233
243
  provide: NG_VALUE_ACCESSOR,
234
244
  useExisting: forwardRef((() => FilterSelectComponent)),
235
245
  multi: true
246
+ },
247
+ {
248
+ provide: MAT_SELECT_CONFIG,
249
+ useValue: { overlayPanelClass: 'vd-select-filter-overlay' }
236
250
  }
237
251
  ], queries: [{ propertyName: "optionTemplate", first: true, predicate: VdFilterOptionDirective, descendants: true }], viewQueries: [{ propertyName: "selectEl", first: true, predicate: MatSelect, descendants: true }, { propertyName: "filterInput", first: true, predicate: ["filterInput"], descendants: true }], ngImport: i0, template: `
238
- <mat-form-field flex>
239
- <mat-select type="input" [(ngModel)]="value" [multiple]="multiple" [placeholder]="placeholder">
252
+ <mat-form-field [ngClass]="{'filter-not-empty': value}" flex>
253
+ <span matPrefix *ngIf="!value && value!=0 && !focused"><mat-icon>manage_search</mat-icon></span>
254
+ <mat-select type="input" [(ngModel)]="value" [multiple]="multiple">
240
255
  <input #filterInput *ngIf="filterable" type="text" placeholder="Filter..." class="vd-select-filter" (keyup)="handleFilter($event)">
241
256
  <mat-option *ngIf="!multiple" class="tc-grey-500"></mat-option>
242
257
  <ng-template let-option let-first="first" ngFor [ngForOf]="filteredOptions">
@@ -246,12 +261,13 @@ export class FilterSelectComponent {
246
261
  </mat-option>
247
262
  </ng-template>
248
263
  </mat-select>
249
- </mat-form-field>`, isInline: true, styles: [".vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:11px 16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:#f5f5f5;outline:none}\n"], dependencies: [{ kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }] });
250
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: FilterSelectComponent, decorators: [{
264
+ </mat-form-field>`, isInline: true, styles: [".vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:11px 16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:inherit;color:inherit;outline:none}mat-icon{opacity:.7}::ng-deep .vd-select-filter-overlay{min-width:150px}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]" }, { kind: "component", type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { kind: "component", type: i8.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: FilterSelectComponent, decorators: [{
251
266
  type: Component,
252
267
  args: [{ selector: 'mat-header-cell[filter-select], [mat-header-cell][filter-select], [filter-select]', template: `
253
- <mat-form-field flex>
254
- <mat-select type="input" [(ngModel)]="value" [multiple]="multiple" [placeholder]="placeholder">
268
+ <mat-form-field [ngClass]="{'filter-not-empty': value}" flex>
269
+ <span matPrefix *ngIf="!value && value!=0 && !focused"><mat-icon>manage_search</mat-icon></span>
270
+ <mat-select type="input" [(ngModel)]="value" [multiple]="multiple">
255
271
  <input #filterInput *ngIf="filterable" type="text" placeholder="Filter..." class="vd-select-filter" (keyup)="handleFilter($event)">
256
272
  <mat-option *ngIf="!multiple" class="tc-grey-500"></mat-option>
257
273
  <ng-template let-option let-first="first" ngFor [ngForOf]="filteredOptions">
@@ -266,8 +282,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
266
282
  provide: NG_VALUE_ACCESSOR,
267
283
  useExisting: forwardRef((() => FilterSelectComponent)),
268
284
  multi: true
285
+ },
286
+ {
287
+ provide: MAT_SELECT_CONFIG,
288
+ useValue: { overlayPanelClass: 'vd-select-filter-overlay' }
269
289
  }
270
- ], styles: [".vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:11px 16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:#f5f5f5;outline:none}\n"] }]
290
+ ], styles: [".vd-select-filter{position:sticky;top:0;z-index:100;font-size:inherit;box-shadow:none;border-radius:0;padding:11px 16px;box-sizing:border-box;border:none;border-bottom:1px solid #dcdcdc;width:100%;background-color:inherit;color:inherit;outline:none}mat-icon{opacity:.7}::ng-deep .vd-select-filter-overlay{min-width:150px}\n"] }]
271
291
  }], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1.MatTable }, { type: i2.CdkColumnDef }]; }, propDecorators: { optionTemplate: [{
272
292
  type: ContentChild,
273
293
  args: [VdFilterOptionDirective]
@@ -309,5 +329,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImpor
309
329
  type: Input
310
330
  }], cache: [{
311
331
  type: Input
332
+ }], onFocusIn: [{
333
+ type: HostListener,
334
+ args: ["focusin"]
335
+ }], onFocusOut: [{
336
+ type: HostListener,
337
+ args: ["focusout"]
312
338
  }] } });
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2ZpbHRlci1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQVUsV0FBVyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5SixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7Ozs7O0FBR2pFLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSx1QkFBdUI7SUFDbkUsWUFBWSxXQUE2QixFQUFFLGdCQUFrQztRQUM1RSxLQUFLLENBQUMsV0FBVyxFQUFFLGdCQUFnQixDQUFDLENBQUM7SUFDdEMsQ0FBQzs7dUlBSFcsdUJBQXVCOzJIQUF2Qix1QkFBdUI7MkZBQXZCLHVCQUF1QjtrQkFEbkMsU0FBUztt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QUFFO2dCQU9oQyxXQUFXO3NCQURqQixTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7Z0JBa0J2QyxRQUFRO3NCQURYLEtBQUs7Z0JBWUYsTUFBTTtzQkFEVCxLQUFLO2dCQXdCRixVQUFVO3NCQURiLEtBQUs7Z0JBV0MsTUFBTTtzQkFEWixLQUFLO2dCQVlGLE1BQU07c0JBRFQsS0FBSztnQkFXRSxJQUFJO3NCQURYLEtBQUs7Z0JBT0MsR0FBRztzQkFEVCxLQUFLO2dCQU9DLElBQUk7c0JBRFYsS0FBSztnQkFPQyxNQUFNO3NCQURaLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQVlGLE9BQU87c0JBRFYsS0FBSztnQkFTQyxlQUFlO3NCQURyQixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBTUcsS0FBSztzQkFBYixLQUFLO2dCQU1HLFdBQVc7c0JBQW5CLEtBQUs7Z0JBTUMsS0FBSztzQkFEWCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWxEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQ2RrQ29sdW1uRGVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEluamVjdG9yLCBJbnB1dCwgT25Jbml0LCBUZW1wbGF0ZVJlZiwgVmlld0NoaWxkLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0U2VsZWN0IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9lbnVtLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWZpbHRlci1vcHRpb25dbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbHRlck9wdGlvbkRpcmVjdGl2ZSBleHRlbmRzIFRlbXBsYXRlUG9ydGFsRGlyZWN0aXZlIHtcclxuXHRjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG5cdFx0c3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG5cdH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdtYXQtaGVhZGVyLWNlbGxbZmlsdGVyLXNlbGVjdF0sIFttYXQtaGVhZGVyLWNlbGxdW2ZpbHRlci1zZWxlY3RdLCBbZmlsdGVyLXNlbGVjdF0nLFxyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8bWF0LWZvcm0tZmllbGQgZmxleD5cclxuXHRcdFx0PG1hdC1zZWxlY3QgdHlwZT1cImlucHV0XCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiPlxyXG5cdFx0XHRcdDxpbnB1dCAjZmlsdGVySW5wdXQgKm5nSWY9XCJmaWx0ZXJhYmxlXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkZpbHRlci4uLlwiIGNsYXNzPVwidmQtc2VsZWN0LWZpbHRlclwiIChrZXl1cCk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiPlxyXG5cdFx0XHRcdDxtYXQtb3B0aW9uICpuZ0lmPVwiIW11bHRpcGxlXCIgY2xhc3M9XCJ0Yy1ncmV5LTUwMFwiPjwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cImZpbHRlcmVkT3B0aW9uc1wiPlxyXG5cdFx0XHRcdFx0PG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbltrZXldXCI+XHJcblx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiIW9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIGkxOG49XCJAQHNlbGVjdGlvblwiPntvcHRpb24ubmFtZSwgc2VsZWN0LCBvcHRpb24ge29wdGlvbn0gb3RoZXIge3t7b3B0aW9uW3RleHRdfX19fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGUudGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IG9wdGlvbiB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L21hdC1zZWxlY3Q+XHJcblx0XHQ8L21hdC1mb3JtLWZpZWxkPmAsXHJcblx0c3R5bGVzOiBbYFxyXG5cdFx0LnZkLXNlbGVjdC1maWx0ZXIge1xyXG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xyXG5cdFx0XHR0b3A6IDA7XHJcblx0XHRcdHotaW5kZXg6IDEwMDtcclxuXHRcdFx0Zm9udC1zaXplOiBpbmhlcml0O1xyXG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiAwO1xyXG5cdFx0XHRwYWRkaW5nOiAxMXB4IDE2cHg7XHJcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RjZGM7XHJcblx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjVmNWY1O1xyXG5cdFx0XHRvdXRsaW5lOiBub25lO1xyXG5cdFx0fWBcclxuXHRdLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsdGVyU2VsZWN0Q29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWVcclxuXHRcdH1cclxuXHRdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGaWx0ZXJTZWxlY3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcclxuXHQvKipcclxuXHQgKiBWZENoaXAgdGVtcGxhdGVcclxuXHQgKi9cclxuXHRAQ29udGVudENoaWxkKFZkRmlsdGVyT3B0aW9uRGlyZWN0aXZlKVxyXG5cdHB1YmxpYyBvcHRpb25UZW1wbGF0ZTogVmRGaWx0ZXJPcHRpb25EaXJlY3RpdmU7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgc2VsZWN0IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZChNYXRTZWxlY3QsIHsgc3RhdGljOiBmYWxzZSB9KVxyXG5cdHB1YmxpYyBzZWxlY3RFbDogTWF0U2VsZWN0O1xyXG5cclxuXHQvKiogXHJcblx0ICogVGhlIHNlbGVjdCBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdEBWaWV3Q2hpbGQoJ2ZpbHRlcklucHV0JywgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIGZpbHRlcklucHV0OiBFbGVtZW50UmVmO1xyXG5cclxuXHQvKipcclxuXHQgKiBSZXByZXNlbnRzIGEgdmFsdWUgdGhhdCBjaGFuZ2VzIG92ZXIgdGltZS4gXHJcblx0ICogT2JzZXJ2ZXJzIGNhbiBzdWJzY3JpYmUgdG8gdGhlIHN1YmplY3QgdG8gcmVjZWl2ZSBwZGYgZmlsZSBjaGFuZ2VzXHJcblx0ICovXHJcblx0cHJpdmF0ZSBfZW5kcG9pbnRDaGFuZ2UgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KG51bGwpO1xyXG5cclxuXHQvKipcclxuXHQgKiBHZXRzIHBkZiBlbmRwb2ludFxyXG5cdCAqL1xyXG5cdGdldCBlbmRwb2ludCgpOiBhbnkgeyByZXR1cm4gdGhpcy5fZW5kcG9pbnRDaGFuZ2UudmFsdWU7IH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0cyBwZGYgZW5kcG9pbnRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHNldCBlbmRwb2ludChlbmRwb2ludDogYW55KSB7IHRoaXMuX2VuZHBvaW50Q2hhbmdlLm5leHQoQXJyYXkuaXNBcnJheShlbmRwb2ludCkgPyBlbmRwb2ludC5qb2luKCcnKSA6IGVuZHBvaW50KTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBfcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3BhcmFtczogYW55ID0ge307XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBhcmFtczogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcGFyYW1zKCkgeyByZXR1cm4gdGhpcy5fcGFyYW1zOyB9XHJcblx0c2V0IHBhcmFtcyhxdWVyeTogYW55KSB7XHJcblx0XHR0aGlzLl9wYXJhbXMgPSBxdWVyeTtcclxuXHJcblx0XHQvKiBSZW1vdmUgZW1wdHkgcGFyYW1zICovXHJcblx0XHRPYmplY3Qua2V5cyh0aGlzLl9wYXJhbXMpLmZvckVhY2goKGtleSkgPT4ge1xyXG5cdFx0XHRpZiAoKHRoaXMuX3BhcmFtc1trZXldID09IG51bGwgfHwgdGhpcy5fcGFyYW1zW2tleV0gPT0gJycgfHwgdGhpcy5fcGFyYW1zW2tleV0gPT0gJ3VuZGVmaW5lZCcpKSB7XHJcblx0XHRcdFx0ZGVsZXRlIHRoaXMuX3BhcmFtc1trZXldO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBfcHJvamVjdGlvbjogYW55XHJcblx0ICovXHJcblx0cHVibGljIF9wcm9qZWN0aW9uOiBzdHJpbmc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHByb2plY3Rpb246IGFueVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHByb2plY3Rpb24oKSB7IHJldHVybiB0aGlzLl9wcm9qZWN0aW9uOyB9XHJcblx0c2V0IHByb2plY3Rpb24ocHJvamVjdGlvbjogc3RyaW5nKSB7XHJcblx0XHR0aGlzLl9wcm9qZWN0aW9uID0gcHJvamVjdGlvbjtcclxuXHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLm5leHQoW3RoaXMuZW5kcG9pbnQsIHRoaXMucGFyYW1zLCB0aGlzLnByb2plY3Rpb25dKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIHNvcnRCeT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBzb3J0Qnk6IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogU29ydHMgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdHB1YmxpYyBfc29ydGVkOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogU29ydHMgb3B0aW9uc1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0Z2V0IHNvcnRlZCgpIHsgcmV0dXJuIHRoaXMuX3NvcnRlZDsgfVxyXG5cdHNldCBzb3J0ZWQobXVsdGkpIHtcclxuXHRcdHRoaXMuX3NvcnRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eShtdWx0aSk7XHJcblx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5uZXh0KFt0aGlzLmVuZHBvaW50LCB0aGlzLnBhcmFtcywgdGhpcy5wcm9qZWN0aW9uXSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgbmFtZSBvZiB0aGUgZW5kcG9pbnRcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHByaXZhdGUgZW51bTogYW55O1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUga2V5XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMga2V5OiBhbnkgPSAnaWQnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgdGV4dFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHRleHQ6IGFueSA9ICduYW1lJztcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIHByZWZpeFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHByZWZpeDogYW55ID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIG11bHRpcGxlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIG11bHRpcGxlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0cHVibGljIF9vcHRpb25zOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIE9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgb3B0aW9ucygpIHsgcmV0dXJuIHRoaXMuX29wdGlvbnM7IH1cclxuXHRzZXQgb3B0aW9ucyh2YWx1ZSkge1xyXG5cdFx0dGhpcy5maWx0ZXJlZE9wdGlvbnMgPSB0aGlzLl9vcHRpb25zID0gdmFsdWU7XHJcblx0fVxyXG5cdC8qKlxyXG5cdCAqIGZpbHRlcmVkIG9wdGlvbiBsaXN0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyZWRPcHRpb25zOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGZpbHRlcmFibGU/XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgZmlsdGVyYWJsZTogYm9vbGVhbiA9IHRydWU7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEZpZWxkIG5hbWVcclxuXHQgKi9cclxuXHRASW5wdXQoKSBmaWVsZDogc3RyaW5nID0gJyc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIHBsYWNlaG9sZGVyPzogc3RyaW5nXHJcblx0ICogUGxhY2Vob2xkZXIgZm9yIHRoZSB1bmRlcmx5aW5nIGlucHV0IGNvbXBvbmVudC5cclxuXHQgKi9cclxuXHRASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJ0ZpbHRlci4uLic7XHJcblxyXG5cdC8qKlxyXG5cdCAqIGNhY2hlP1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIGNhY2hlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogVGhlIGh0dHAgc2VydmljZSBmcm9tIHRvIGdldCB0aGUgZGF0YVxyXG5cdCAqL1xyXG5cdHByb3RlY3RlZCBodHRwOiBIdHRwQ2xpZW50ID0gbnVsbDtcclxuXHJcblx0LyoqXHJcblx0ICogU2V0dGVycyBhbmQgZ2V0dGVycyBmb3IgdGhlIHNlbGVjdCB2YWx1ZVxyXG5cdCAqL1xyXG5cdGdldCB2YWx1ZSgpOiBhbnkgeyByZXR1cm4gdGhpcy50YWJsZS5kYXRhU291cmNlWydmaWVsZEZpbHRlcnMnXVt0aGlzLmZpZWxkXTsgfTtcclxuXHRzZXQgdmFsdWUodjogYW55KSB7XHJcblx0XHRpZiAodiAhPSB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdKSB7XHJcblx0XHRcdHRoaXMudGFibGUuZGF0YVNvdXJjZVsnZmllbGRGaWx0ZXJzJ11bdGhpcy5maWVsZF0gPSB2O1xyXG5cdFx0XHR0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ3BhZ2luYXRvciddWydwYWdlSW5kZXgnXSA9IDA7XHJcblx0XHRcdHRoaXMudGFibGUuZGF0YVNvdXJjZVsncmVsb2FkJ10oKTtcclxuXHRcdFx0dGhpcy5vbkNoYW5nZSh2KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIENvbnN0cnVjdG9yXHJcblx0ICogQHBhcmFtIGluamVjdG9yXHJcblx0ICogQHBhcmFtIHRhYmxlIFxyXG5cdCAqIEBwYXJhbSBjb2x1bW5cclxuXHQgKi9cclxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIGluamVjdG9yOiBJbmplY3RvciwgcHJpdmF0ZSB0YWJsZTogTWF0VGFibGU8YW55PiwgcHJpdmF0ZSBjb2x1bW46IENka0NvbHVtbkRlZikge1xyXG5cdFx0dGhpcy5maWVsZCA9IHRoaXMuY29sdW1uLm5hbWUucmVwbGFjZSgnZmlsdGVyLicsICcnKTtcclxuXHJcblx0XHRpZiAoIXRoaXMuZW51bSkge1xyXG5cdFx0XHR0aGlzLmh0dHAgPSBpbmplY3Rvci5nZXQoSHR0cENsaWVudCk7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBMaWZlY3ljbGUgaG9vayB0aGF0IGlzIGNhbGxlZCBhZnRlciBkYXRhLWJvdW5kIHByb3BlcnRpZXMgb2YgYSBkaXJlY3RpdmUgYXJlIGluaXRpYWxpemVkLlxyXG5cdCAqL1xyXG5cdG5nT25Jbml0KCkge1xyXG5cdFx0aWYgKHRoaXMuZW51bSkge1xyXG5cdFx0XHR0aGlzLm9wdGlvbnMgPSBFbnVtU2VydmljZS50b0FycmF5KHRoaXMuZW51bSwgdGhpcy5wcmVmaXgpO1xyXG5cdFx0XHR0aGlzLmZpbHRlcmFibGUgPSBmYWxzZTtcclxuXHRcdH0gZWxzZSBpZiAodGhpcy5lbmRwb2ludCkge1xyXG5cdFx0XHR0aGlzLl9lbmRwb2ludENoYW5nZS5zdWJzY3JpYmUoKGVuZHBvaW50OiBzdHJpbmcpID0+IHtcclxuXHRcdFx0XHRsZXQgaGVhZGVycyA9IG5ldyBIdHRwSGVhZGVycygpO1xyXG5cdFx0XHRcdGlmICh0aGlzLmNhY2hlKSB7XHJcblx0XHRcdFx0XHRoZWFkZXJzLnNldCgnQ2xpZW50LUNhY2hlJywgJ1llcycpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LyogSW5pdCBwYXJhbXMsIGlmIG51bGwgKi9cclxuXHRcdFx0XHR0aGlzLl9wYXJhbXMgfHw9IHt9O1xyXG5cclxuXHRcdFx0XHQvKiBBZGQgcHJvamVjdGlvbiwgaWYgYW55ICovXHJcblx0XHRcdFx0aWYgKHRoaXMucHJvamVjdGlvbikge1xyXG5cdFx0XHRcdFx0dGhpcy5fcGFyYW1zLnByb2plY3Rpb24gPSB0aGlzLnByb2plY3Rpb247XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBBZGQgc29ydGluZyAqL1xyXG5cdFx0XHRcdHZhciB1cmwgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHRoaXMuZW5kcG9pbnQpO1xyXG5cdFx0XHRcdGlmICghdGhpcy5fcGFyYW1zLnNvcnRCeSAmJiAhdXJsLmhhcygnc29ydEJ5JykgJiYgKHRoaXMuc29ydEJ5IHx8IHRoaXMuc29ydGVkKSkge1xyXG5cdFx0XHRcdFx0dGhpcy5fcGFyYW1zLnNvcnRCeSA9IHRoaXMuc29ydEJ5IHx8IHRoaXMudGV4dDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdHRoaXMuaHR0cC5nZXQodGhpcy5lbmRwb2ludCwgeyBwYXJhbXM6IHRoaXMuX3BhcmFtcywgaGVhZGVyczogaGVhZGVycyB9KS5zdWJzY3JpYmUoeCA9PiB7XHJcblx0XHRcdFx0XHR0aGlzLm9wdGlvbnMgPSB4O1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgaXMgaW52b2tlZCBpbW1lZGlhdGVseSBhZnRlclxyXG5cdCAqIEFuZ3VsYXIgaGFzIGNvbXBsZXRlZCBpbml0aWFsaXphdGlvbiBvZiBhIGNvbXBvbmVudCdzIHZpZXcuXHJcblx0ICogSXQgaXMgaW52b2tlZCBvbmx5IG9uY2Ugd2hlbiB0aGUgdmlldyBpcyBpbnN0YW50aWF0ZWQuXHJcblx0ICpcclxuXHQgKi9cclxuXHRuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcblx0XHR0aGlzLnNlbGVjdEVsPy5vcGVuZWRDaGFuZ2U/LnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0aWYgKHggJiYgdGhpcy5maWx0ZXJhYmxlKSB7XHJcblx0XHRcdFx0dGhpcy5maWx0ZXJJbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xyXG5cdFx0XHR9XHJcblx0XHR9KTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdyaXRlIGEgbmV3IHZhbHVlIHRvIHRoZSBlbGVtZW50LlxyXG5cdCAqL1xyXG5cdHdyaXRlVmFsdWUodmFsdWU6IGFueSkge1xyXG5cdFx0dGhpcy52YWx1ZSA9IHZhbHVlO1xyXG5cdFx0dGhpcy5vbkNoYW5nZSh2YWx1ZSk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBIYW5kZWxzIGZpbHRlciBldmVudFxyXG5cdCAqIEBwYXJhbSAkZXZlbnQgXHJcblx0ICovXHJcblx0cHVibGljIGhhbmRsZUZpbHRlcigkZXZlbnQ6IEV2ZW50KTogdm9pZCB7XHJcblx0XHRsZXQgc2VhcmNoVGV4dDogc3RyaW5nID0gKCgkZXZlbnQ/LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KT8udmFsdWUgPz8gJycpLnRvTG93ZXJDYXNlKCk7XHJcblx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHg6IGFueSkgPT4geFt0aGlzLnRleHRdPy50b0xvd2VyQ2FzZSgpLnNlYXJjaChzZWFyY2hUZXh0KSA+IC0xKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFNldCB0aGUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0cmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQgeyB0aGlzLm9uQ2hhbmdlID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25Ub3VjaGVkID0gZm47IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ2FsbGVkIHdoZW4gdGhlIGNvbnRyb2wgcmVjZWl2ZXMgYSBjaGFuZ2UgZXZlbnQuXHJcblx0ICovXHJcblx0b25DaGFuZ2UgPSAoXykgPT4geyB9O1xyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIHRvdWNoIGV2ZW50LlxyXG5cdCAqL1xyXG5cdG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcclxufSJdfQ==
339
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsdGVyLXNlbGVjdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi90YWJsZS9jb21wb25lbnRzL2ZpbHRlci1zZWxlY3QuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzlELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQzlELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLFdBQVcsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQy9ELE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFNBQVMsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFVLFdBQVcsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDNUssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSxTQUFTLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN2QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7Ozs7Ozs7Ozs7QUFHakUsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHVCQUF1QjtJQUNuRSxZQUFZLFdBQTZCLEVBQUUsZ0JBQWtDO1FBQzVFLEtBQUssQ0FBQyxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztJQUN0QyxDQUFDOzt1SUFIVyx1QkFBdUI7MkhBQXZCLHVCQUF1QjsyRkFB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bSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcclxuaW1wb3J0IHsgVGVtcGxhdGVQb3J0YWxEaXJlY3RpdmUgfSBmcm9tICdAYW5ndWxhci9jZGsvcG9ydGFsJztcclxuaW1wb3J0IHsgQ2RrQ29sdW1uRGVmIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3RhYmxlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGZvcndhcmRSZWYsIEhvc3RMaXN0ZW5lciwgSW5qZWN0b3IsIElucHV0LCBPbkluaXQsIFRlbXBsYXRlUmVmLCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRTZWxlY3QsIE1BVF9TRUxFQ1RfQ09ORklHIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvc2VsZWN0JztcclxuaW1wb3J0IHsgTWF0VGFibGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC90YWJsZSc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBFbnVtU2VydmljZSB9IGZyb20gJy4uLy4uL2NvbW1vbi9zZXJ2aWNlcy9lbnVtLnNlcnZpY2UnO1xyXG5cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWZpbHRlci1vcHRpb25dbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbHRlck9wdGlvbkRpcmVjdGl2ZSBleHRlbmRzIFRlbXBsYXRlUG9ydGFsRGlyZWN0aXZlIHtcclxuXHRjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG5cdFx0c3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG5cdH1cclxufVxyXG5cclxuQENvbXBvbmVudCh7XHJcblx0c2VsZWN0b3I6ICdtYXQtaGVhZGVyLWNlbGxbZmlsdGVyLXNlbGVjdF0sIFttYXQtaGVhZGVyLWNlbGxdW2ZpbHRlci1zZWxlY3RdLCBbZmlsdGVyLXNlbGVjdF0nLFxyXG5cdHRlbXBsYXRlOiBgXHJcblx0XHQ8bWF0LWZvcm0tZmllbGQgW25nQ2xhc3NdPVwieydmaWx0ZXItbm90LWVtcHR5JzogdmFsdWV9XCIgZmxleD5cclxuXHRcdFx0PHNwYW4gbWF0UHJlZml4ICpuZ0lmPVwiIXZhbHVlICYmIHZhbHVlIT0wICYmICFmb2N1c2VkXCI+PG1hdC1pY29uPm1hbmFnZV9zZWFyY2g8L21hdC1pY29uPjwvc3Bhbj5cclxuXHRcdFx0PG1hdC1zZWxlY3QgdHlwZT1cImlucHV0XCIgWyhuZ01vZGVsKV09XCJ2YWx1ZVwiIFttdWx0aXBsZV09XCJtdWx0aXBsZVwiPlxyXG5cdFx0XHRcdDxpbnB1dCAjZmlsdGVySW5wdXQgKm5nSWY9XCJmaWx0ZXJhYmxlXCIgdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIkZpbHRlci4uLlwiIGNsYXNzPVwidmQtc2VsZWN0LWZpbHRlclwiIChrZXl1cCk9XCJoYW5kbGVGaWx0ZXIoJGV2ZW50KVwiPlxyXG5cdFx0XHRcdDxtYXQtb3B0aW9uICpuZ0lmPVwiIW11bHRpcGxlXCIgY2xhc3M9XCJ0Yy1ncmV5LTUwMFwiPjwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHQ8bmctdGVtcGxhdGUgbGV0LW9wdGlvbiBsZXQtZmlyc3Q9XCJmaXJzdFwiIG5nRm9yIFtuZ0Zvck9mXT1cImZpbHRlcmVkT3B0aW9uc1wiPlxyXG5cdFx0XHRcdFx0PG1hdC1vcHRpb24gW3ZhbHVlXT1cIm9wdGlvbltrZXldXCI+XHJcblx0XHRcdFx0XHRcdDxzcGFuICpuZ0lmPVwiIW9wdGlvblRlbXBsYXRlPy50ZW1wbGF0ZVJlZlwiIGkxOG49XCJAQHNlbGVjdGlvblwiPntvcHRpb24ubmFtZSwgc2VsZWN0LCBvcHRpb24ge29wdGlvbn0gb3RoZXIge3t7b3B0aW9uW3RleHRdfX19fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0PG5nLXRlbXBsYXRlICpuZ0lmPVwib3B0aW9uVGVtcGxhdGU/LnRlbXBsYXRlUmVmXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwib3B0aW9uVGVtcGxhdGUudGVtcGxhdGVSZWZcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyBvcHRpb246IG9wdGlvbiB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuXHRcdFx0XHRcdDwvbWF0LW9wdGlvbj5cclxuXHRcdFx0XHQ8L25nLXRlbXBsYXRlPlxyXG5cdFx0XHQ8L21hdC1zZWxlY3Q+XHJcblx0XHQ8L21hdC1mb3JtLWZpZWxkPmAsXHJcblx0c3R5bGVzOiBbYFxyXG5cdFx0LnZkLXNlbGVjdC1maWx0ZXIge1xyXG5cdFx0XHRwb3NpdGlvbjogc3RpY2t5O1xyXG5cdFx0XHR0b3A6IDA7XHJcblx0XHRcdHotaW5kZXg6IDEwMDtcclxuXHRcdFx0Zm9udC1zaXplOiBpbmhlcml0O1xyXG5cdFx0XHRib3gtc2hhZG93OiBub25lO1xyXG5cdFx0XHRib3JkZXItcmFkaXVzOiAwO1xyXG5cdFx0XHRwYWRkaW5nOiAxMXB4IDE2cHg7XHJcblx0XHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0XHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkY2RjZGM7XHJcblx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0O1xyXG5cdFx0XHRjb2xvcjogaW5oZXJpdDtcclxuXHRcdFx0b3V0bGluZTogbm9uZTtcclxuXHRcdH1cclxuXHRcdG1hdC1pY29uIHtcclxuXHRcdFx0b3BhY2l0eTogMC43O1xyXG5cdFx0fVxyXG5cdFx0OjpuZy1kZWVwIC52ZC1zZWxlY3QtZmlsdGVyLW92ZXJsYXkge1xyXG5cdFx0XHRtaW4td2lkdGg6IDE1MHB4O1xyXG5cdFx0fVxyXG5cdGBdLFxyXG5cdHByb3ZpZGVyczogW1xyXG5cdFx0e1xyXG5cdFx0XHRwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcclxuXHRcdFx0dXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gRmlsdGVyU2VsZWN0Q29tcG9uZW50KSxcclxuXHRcdFx0bXVsdGk6IHRydWVcclxuXHRcdH0sXHJcblx0XHR7XHJcblx0XHRcdHByb3ZpZGU6IE1BVF9TRUxFQ1RfQ09ORklHLFxyXG5cdFx0XHR1c2VWYWx1ZTogeyBvdmVybGF5UGFuZWxDbGFzczogJ3ZkLXNlbGVjdC1maWx0ZXItb3ZlcmxheScgfVxyXG5cdFx0fVxyXG5cdF1cclxufSlcclxuZXhwb3J0IGNsYXNzIEZpbHRlclNlbGVjdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xyXG5cdC8qKlxyXG5cdCAqIFZkQ2hpcCB0ZW1wbGF0ZVxyXG5cdCAqL1xyXG5cdEBDb250ZW50Q2hpbGQoVmRGaWx0ZXJPcHRpb25EaXJlY3RpdmUpXHJcblx0cHVibGljIG9wdGlvblRlbXBsYXRlOiBWZEZpbHRlck9wdGlvbkRpcmVjdGl2ZTtcclxuXHJcblx0LyoqIFxyXG5cdCAqIFRoZSBzZWxlY3QgZWxlbWVudC5cclxuXHQgKi9cclxuXHRAVmlld0NoaWxkKE1hdFNlbGVjdCwgeyBzdGF0aWM6IGZhbHNlIH0pXHJcblx0cHVibGljIHNlbGVjdEVsOiBNYXRTZWxlY3Q7XHJcblxyXG5cdC8qKiBcclxuXHQgKiBUaGUgc2VsZWN0IGVsZW1lbnQuXHJcblx0ICovXHJcblx0QFZpZXdDaGlsZCgnZmlsdGVySW5wdXQnLCB7IHN0YXRpYzogZmFsc2UgfSlcclxuXHRwdWJsaWMgZmlsdGVySW5wdXQ6IEVsZW1lbnRSZWY7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFJlcHJlc2VudHMgYSB2YWx1ZSB0aGF0IGNoYW5nZXMgb3ZlciB0aW1lLiBcclxuXHQgKiBPYnNlcnZlcnMgY2FuIHN1YnNjcmliZSB0byB0aGUgc3ViamVjdCB0byByZWNlaXZlIHBkZiBmaWxlIGNoYW5nZXNcclxuXHQgKi9cclxuXHRwcml2YXRlIF9lbmRwb2ludENoYW5nZSA9IG5ldyBCZWhhdmlvclN1YmplY3QobnVsbCk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIEdldHMgcGRmIGVuZHBvaW50XHJcblx0ICovXHJcblx0Z2V0IGVuZHBvaW50KCk6IGFueSB7IHJldHVybiB0aGlzLl9lbmRwb2ludENoYW5nZS52YWx1ZTsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXRzIHBkZiBlbmRwb2ludFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0c2V0IGVuZHBvaW50KGVuZHBvaW50OiBhbnkpIHsgdGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChBcnJheS5pc0FycmF5KGVuZHBvaW50KSA/IGVuZHBvaW50LmpvaW4oJycpIDogZW5kcG9pbnQpOyB9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wYXJhbXM6IGFueVxyXG5cdCAqL1xyXG5cdHB1YmxpYyBfcGFyYW1zOiBhbnkgPSB7fTtcclxuXHJcblx0LyoqXHJcblx0ICogcGFyYW1zOiBhbnlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBwYXJhbXMoKSB7IHJldHVybiB0aGlzLl9wYXJhbXM7IH1cclxuXHRzZXQgcGFyYW1zKHF1ZXJ5OiBhbnkpIHtcclxuXHRcdHRoaXMuX3BhcmFtcyA9IHF1ZXJ5O1xyXG5cclxuXHRcdC8qIFJlbW92ZSBlbXB0eSBwYXJhbXMgKi9cclxuXHRcdE9iamVjdC5rZXlzKHRoaXMuX3BhcmFtcykuZm9yRWFjaCgoa2V5KSA9PiB7XHJcblx0XHRcdGlmICgodGhpcy5fcGFyYW1zW2tleV0gPT0gbnVsbCB8fCB0aGlzLl9wYXJhbXNba2V5XSA9PSAnJyB8fCB0aGlzLl9wYXJhbXNba2V5XSA9PSAndW5kZWZpbmVkJykpIHtcclxuXHRcdFx0XHRkZWxldGUgdGhpcy5fcGFyYW1zW2tleV07XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cclxuXHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLm5leHQoW3RoaXMuZW5kcG9pbnQsIHRoaXMucGFyYW1zLCB0aGlzLnByb2plY3Rpb25dKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIF9wcm9qZWN0aW9uOiBhbnlcclxuXHQgKi9cclxuXHRwdWJsaWMgX3Byb2plY3Rpb246IHN0cmluZztcclxuXHJcblx0LyoqXHJcblx0ICogcHJvamVjdGlvbjogYW55XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgcHJvamVjdGlvbigpIHsgcmV0dXJuIHRoaXMuX3Byb2plY3Rpb247IH1cclxuXHRzZXQgcHJvamVjdGlvbihwcm9qZWN0aW9uOiBzdHJpbmcpIHtcclxuXHRcdHRoaXMuX3Byb2plY3Rpb24gPSBwcm9qZWN0aW9uO1xyXG5cdFx0dGhpcy5fZW5kcG9pbnRDaGFuZ2UubmV4dChbdGhpcy5lbmRwb2ludCwgdGhpcy5wYXJhbXMsIHRoaXMucHJvamVjdGlvbl0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogc29ydEJ5P1xyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHVibGljIHNvcnRCeTogc3RyaW5nO1xyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0cHVibGljIF9zb3J0ZWQ6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBTb3J0cyBvcHRpb25zXHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRnZXQgc29ydGVkKCkgeyByZXR1cm4gdGhpcy5fc29ydGVkOyB9XHJcblx0c2V0IHNvcnRlZChtdWx0aSkge1xyXG5cdFx0dGhpcy5fc29ydGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KG11bHRpKTtcclxuXHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLm5leHQoW3RoaXMuZW5kcG9pbnQsIHRoaXMucGFyYW1zLCB0aGlzLnByb2plY3Rpb25dKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBuYW1lIG9mIHRoZSBlbmRwb2ludFxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpXHJcblx0cHJpdmF0ZSBlbnVtOiBhbnk7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSBrZXlcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBrZXk6IGFueSA9ICdpZCc7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFRoZSB0ZXh0XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgdGV4dDogYW55ID0gJ25hbWUnO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgcHJlZml4XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgcHJlZml4OiBhbnkgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogbXVsdGlwbGU/XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgbXVsdGlwbGU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblx0LyoqXHJcblx0ICogT3B0aW9uIGxpc3RcclxuXHQgKi9cclxuXHRwdWJsaWMgX29wdGlvbnM6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogT3B0aW9uIGxpc3RcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdGdldCBvcHRpb25zKCkgeyByZXR1cm4gdGhpcy5fb3B0aW9uczsgfVxyXG5cdHNldCBvcHRpb25zKHZhbHVlKSB7XHJcblx0XHR0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuX29wdGlvbnMgPSB2YWx1ZTtcclxuXHR9XHJcblx0LyoqXHJcblx0ICogZmlsdGVyZWQgb3B0aW9uIGxpc3RcclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmaWx0ZXJlZE9wdGlvbnM6IGFueTtcclxuXHJcblx0LyoqXHJcblx0ICogZmlsdGVyYWJsZT9cclxuXHQgKi9cclxuXHRASW5wdXQoKVxyXG5cdHB1YmxpYyBmaWx0ZXJhYmxlOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcblx0LyoqXHJcblx0ICogRmllbGQgbmFtZVxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIGZpZWxkOiBzdHJpbmcgPSAnJztcclxuXHJcblx0LyoqXHJcblx0ICogcGxhY2Vob2xkZXI/OiBzdHJpbmdcclxuXHQgKiBQbGFjZWhvbGRlciBmb3IgdGhlIHVuZGVybHlpbmcgaW5wdXQgY29tcG9uZW50LlxyXG5cdCAqL1xyXG5cdEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnRmlsdGVyLi4uJztcclxuXHJcblx0LyoqXHJcblx0ICogY2FjaGU/XHJcblx0ICovXHJcblx0QElucHV0KClcclxuXHRwdWJsaWMgY2FjaGU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuXHQvKipcclxuXHQgKiBUaGUgaHR0cCBzZXJ2aWNlIGZyb20gdG8gZ2V0IHRoZSBkYXRhXHJcblx0ICovXHJcblx0cHJvdGVjdGVkIGh0dHA6IEh0dHBDbGllbnQgPSBudWxsO1xyXG5cclxuXHQvKipcclxuXHQgKiBTZXR0ZXJzIGFuZCBnZXR0ZXJzIGZvciB0aGUgc2VsZWN0IHZhbHVlXHJcblx0ICovXHJcblx0Z2V0IHZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLnRhYmxlLmRhdGFTb3VyY2VbJ2ZpZWxkRmlsdGVycyddW3RoaXMuZmllbGRdOyB9O1xyXG5cdHNldCB2YWx1ZSh2OiBhbnkpIHtcclxuXHRcdGlmICh2ICE9IHRoaXMudGFibGUuZGF0YVNvdXJjZVsnZmllbGRGaWx0ZXJzJ11bdGhpcy5maWVsZF0pIHtcclxuXHRcdFx0dGhpcy50YWJsZS5kYXRhU291cmNlWydmaWVsZEZpbHRlcnMnXVt0aGlzLmZpZWxkXSA9IHY7XHJcblx0XHRcdHRoaXMudGFibGUuZGF0YVNvdXJjZVsncGFnaW5hdG9yJ11bJ3BhZ2VJbmRleCddID0gMDtcclxuXHRcdFx0dGhpcy50YWJsZS5kYXRhU291cmNlWydyZWxvYWQnXSgpO1xyXG5cdFx0XHR0aGlzLm9uQ2hhbmdlKHYpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV2hldGhlciB0aGUgY29udHJvbCBpcyBmb2N1c2VkLlxyXG5cdCAqL1xyXG5cdHB1YmxpYyBmb2N1c2VkID0gZmFsc2U7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFdoZXRoZXIgdGhlIGNvbnRyb2wgaXMgZm9jdXNlZC5cclxuXHQgKi9cclxuXHRASG9zdExpc3RlbmVyKFwiZm9jdXNpblwiKSBvbkZvY3VzSW4oKSB7IHRoaXMuZm9jdXNlZCA9IHRydWU7IH1cclxuXHRASG9zdExpc3RlbmVyKFwiZm9jdXNvdXRcIikgb25Gb2N1c091dCgpIHsgdGhpcy5mb2N1c2VkID0gZmFsc2U7IH1cclxuXHJcblx0LyoqXHJcblx0ICogQ29uc3RydWN0b3JcclxuXHQgKiBAcGFyYW0gaW5qZWN0b3JcclxuXHQgKiBAcGFyYW0gdGFibGUgXHJcblx0ICogQHBhcmFtIGNvbHVtblxyXG5cdCAqL1xyXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgaW5qZWN0b3I6IEluamVjdG9yLCBwcml2YXRlIHRhYmxlOiBNYXRUYWJsZTxhbnk+LCBwcml2YXRlIGNvbHVtbjogQ2RrQ29sdW1uRGVmKSB7XHJcblx0XHR0aGlzLmZpZWxkID0gdGhpcy5jb2x1bW4ubmFtZS5yZXBsYWNlKCdmaWx0ZXIuJywgJycpO1xyXG5cclxuXHRcdGlmICghdGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMuaHR0cCA9IGluamVjdG9yLmdldChIdHRwQ2xpZW50KTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIExpZmVjeWNsZSBob29rIHRoYXQgaXMgY2FsbGVkIGFmdGVyIGRhdGEtYm91bmQgcHJvcGVydGllcyBvZiBhIGRpcmVjdGl2ZSBhcmUgaW5pdGlhbGl6ZWQuXHJcblx0ICovXHJcblx0bmdPbkluaXQoKSB7XHJcblx0XHRpZiAodGhpcy5lbnVtKSB7XHJcblx0XHRcdHRoaXMub3B0aW9ucyA9IEVudW1TZXJ2aWNlLnRvQXJyYXkodGhpcy5lbnVtLCB0aGlzLnByZWZpeCk7XHJcblx0XHRcdHRoaXMuZmlsdGVyYWJsZSA9IGZhbHNlO1xyXG5cdFx0fSBlbHNlIGlmICh0aGlzLmVuZHBvaW50KSB7XHJcblx0XHRcdHRoaXMuX2VuZHBvaW50Q2hhbmdlLnN1YnNjcmliZSgoZW5kcG9pbnQ6IHN0cmluZykgPT4ge1xyXG5cdFx0XHRcdGxldCBoZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XHJcblx0XHRcdFx0aWYgKHRoaXMuY2FjaGUpIHtcclxuXHRcdFx0XHRcdGhlYWRlcnMuc2V0KCdDbGllbnQtQ2FjaGUnLCAnWWVzJyk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvKiBJbml0IHBhcmFtcywgaWYgbnVsbCAqL1xyXG5cdFx0XHRcdHRoaXMuX3BhcmFtcyB8fD0ge307XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBwcm9qZWN0aW9uLCBpZiBhbnkgKi9cclxuXHRcdFx0XHRpZiAodGhpcy5wcm9qZWN0aW9uKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9wYXJhbXMucHJvamVjdGlvbiA9IHRoaXMucHJvamVjdGlvbjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8qIEFkZCBzb3J0aW5nICovXHJcblx0XHRcdFx0dmFyIHVybCA9IG5ldyBVUkxTZWFyY2hQYXJhbXModGhpcy5lbmRwb2ludCk7XHJcblx0XHRcdFx0aWYgKCF0aGlzLl9wYXJhbXMuc29ydEJ5ICYmICF1cmwuaGFzKCdzb3J0QnknKSAmJiAodGhpcy5zb3J0QnkgfHwgdGhpcy5zb3J0ZWQpKSB7XHJcblx0XHRcdFx0XHR0aGlzLl9wYXJhbXMuc29ydEJ5ID0gdGhpcy5zb3J0QnkgfHwgdGhpcy50ZXh0O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0dGhpcy5odHRwLmdldCh0aGlzLmVuZHBvaW50LCB7IHBhcmFtczogdGhpcy5fcGFyYW1zLCBoZWFkZXJzOiBoZWFkZXJzIH0pLnN1YnNjcmliZSh4ID0+IHtcclxuXHRcdFx0XHRcdHRoaXMub3B0aW9ucyA9IHg7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyXHJcblx0ICogQW5ndWxhciBoYXMgY29tcGxldGVkIGluaXRpYWxpemF0aW9uIG9mIGEgY29tcG9uZW50J3Mgdmlldy5cclxuXHQgKiBJdCBpcyBpbnZva2VkIG9ubHkgb25jZSB3aGVuIHRoZSB2aWV3IGlzIGluc3RhbnRpYXRlZC5cclxuXHQgKlxyXG5cdCAqL1xyXG5cdG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuXHRcdHRoaXMuc2VsZWN0RWw/Lm9wZW5lZENoYW5nZT8uc3Vic2NyaWJlKHggPT4ge1xyXG5cdFx0XHRpZiAoeCAmJiB0aGlzLmZpbHRlcmFibGUpIHtcclxuXHRcdFx0XHR0aGlzLmZpbHRlcklucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblx0XHRcdH1cclxuXHRcdH0pO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogV3JpdGUgYSBuZXcgdmFsdWUgdG8gdGhlIGVsZW1lbnQuXHJcblx0ICovXHJcblx0d3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XHJcblx0XHR0aGlzLnZhbHVlID0gdmFsdWU7XHJcblx0XHR0aGlzLm9uQ2hhbmdlKHZhbHVlKTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEhhbmRlbHMgZmlsdGVyIGV2ZW50XHJcblx0ICogQHBhcmFtICRldmVudCBcclxuXHQgKi9cclxuXHRwdWJsaWMgaGFuZGxlRmlsdGVyKCRldmVudDogRXZlbnQpOiB2b2lkIHtcclxuXHRcdGxldCBzZWFyY2hUZXh0OiBzdHJpbmcgPSAoKCRldmVudD8udGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpPy52YWx1ZSA/PyAnJykudG9Mb3dlckNhc2UoKTtcclxuXHRcdHRoaXMuZmlsdGVyZWRPcHRpb25zID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeDogYW55KSA9PiB4W3RoaXMudGV4dF0/LnRvTG93ZXJDYXNlKCkuc2VhcmNoKHNlYXJjaFRleHQpID4gLTEpO1xyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogU2V0IHRoZSBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIGNoYW5nZSBldmVudC5cclxuXHQgKi9cclxuXHRyZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7IHRoaXMub25DaGFuZ2UgPSBmbjsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBTZXQgdGhlIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgdG91Y2ggZXZlbnQuXHJcblx0ICovXHJcblx0cmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHsgdGhpcy5vblRvdWNoZWQgPSBmbjsgfVxyXG5cclxuXHQvKipcclxuXHQgKiBDYWxsZWQgd2hlbiB0aGUgY29udHJvbCByZWNlaXZlcyBhIGNoYW5nZSBldmVudC5cclxuXHQgKi9cclxuXHRvbkNoYW5nZSA9IChfKSA9PiB7IH07XHJcblxyXG5cdC8qKlxyXG5cdCAqIENhbGxlZCB3aGVuIHRoZSBjb250cm9sIHJlY2VpdmVzIGEgdG91Y2ggZXZlbnQuXHJcblx0ICovXHJcblx0b25Ub3VjaGVkID0gKCkgPT4geyB9O1xyXG59Il19
@@ -30,9 +30,9 @@ export class DataSourceFilterDirective {
30
30
  });
31
31
  }
32
32
  }
33
- /** @nocollapse */ DataSourceFilterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DataSourceFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
34
- /** @nocollapse */ DataSourceFilterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.0.0", type: DataSourceFilterDirective, selector: "[dataSourceFilter]", inputs: { dataSource: "dataSource", dataSourceFilter: "dataSourceFilter" }, ngImport: i0 });
35
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0", ngImport: i0, type: DataSourceFilterDirective, decorators: [{
33
+ /** @nocollapse */ DataSourceFilterDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DataSourceFilterDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
34
+ /** @nocollapse */ DataSourceFilterDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.0.1", type: DataSourceFilterDirective, selector: "[dataSourceFilter]", inputs: { dataSource: "dataSource", dataSourceFilter: "dataSourceFilter" }, ngImport: i0 });
35
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.0.1", ngImport: i0, type: DataSourceFilterDirective, decorators: [{
36
36
  type: Directive,
37
37
  args: [{
38
38
  selector: '[dataSourceFilter]'