@impartner/design-components 1.2.0 → 2.0.0

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 (291) hide show
  1. package/README.md +5 -4
  2. package/constants/fontawesome-icons.d.ts +2 -2
  3. package/{esm2020 → esm2022}/constants/fontawesome-icons.mjs +1 -1
  4. package/{esm2020 → esm2022}/lib/alert/alert.component.mjs +4 -4
  5. package/{esm2020 → esm2022}/lib/alert/alert.module.mjs +5 -5
  6. package/{esm2020 → esm2022}/lib/avatar/avatar.component.mjs +4 -4
  7. package/{esm2020 → esm2022}/lib/avatar/avatar.module.mjs +5 -5
  8. package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.component.mjs +4 -4
  9. package/{esm2020 → esm2022}/lib/avatar-group/avatar-group.module.mjs +5 -5
  10. package/esm2022/lib/backdrop/backdrop.component.mjs +52 -0
  11. package/{esm2020 → esm2022}/lib/backdrop/backdrop.module.mjs +6 -6
  12. package/esm2022/lib/badge/badge.component.mjs +105 -0
  13. package/{esm2020 → esm2022}/lib/badge/badge.module.mjs +6 -6
  14. package/{esm2020 → esm2022}/lib/badge/types/badge-size.mjs +1 -1
  15. package/{esm2020 → esm2022}/lib/branding/branded.directive.mjs +4 -4
  16. package/{esm2020 → esm2022}/lib/branding/branding.module.mjs +6 -6
  17. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb-item.component.mjs +6 -6
  18. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.component.mjs +5 -5
  19. package/{esm2020 → esm2022}/lib/breadcrumb/breadcrumb.module.mjs +5 -5
  20. package/{esm2020 → esm2022}/lib/button/button.component.mjs +4 -4
  21. package/{esm2020 → esm2022}/lib/button/button.module.mjs +6 -6
  22. package/{esm2020 → esm2022}/lib/button-group/button-group.component.mjs +4 -4
  23. package/{esm2020 → esm2022}/lib/button-group/button-group.module.mjs +6 -6
  24. package/{esm2020 → esm2022}/lib/card-heading/card-heading.component.mjs +5 -5
  25. package/{esm2020 → esm2022}/lib/card-heading/card-heading.module.mjs +6 -6
  26. package/esm2022/lib/data-card/data-card.component.mjs +123 -0
  27. package/esm2022/lib/data-card/data-card.module.mjs +21 -0
  28. package/{esm2020 → esm2022}/lib/design-components.module.mjs +61 -61
  29. package/{esm2020 → esm2022}/lib/dropdown/components/dropdown-item/dropdown-item.component.mjs +4 -4
  30. package/esm2022/lib/dropdown/dropdown.component.mjs +143 -0
  31. package/{esm2020 → esm2022}/lib/dropdown/dropdown.module.mjs +6 -6
  32. package/{esm2020 → esm2022}/lib/file-upload/directives/file-drop.directive.mjs +4 -4
  33. package/{esm2020 → esm2022}/lib/file-upload/file-upload.component.mjs +30 -30
  34. package/{esm2020 → esm2022}/lib/file-upload/file-upload.module.mjs +8 -8
  35. package/{esm2020 → esm2022}/lib/file-upload/pipes/human-readable-byte-size.pipe.mjs +4 -4
  36. package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.component.mjs +49 -49
  37. package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/checkbox.module.mjs +5 -5
  38. package/esm2022/lib/form-field/controls/input/input.directive.mjs +233 -0
  39. package/esm2022/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +260 -0
  40. package/esm2022/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +289 -0
  41. package/{esm2020 → esm2022}/lib/form-field/controls/radio/radio.module.mjs +5 -5
  42. package/esm2022/lib/form-field/controls/select/option/select-option.component.mjs +139 -0
  43. package/esm2022/lib/form-field/controls/select/select-model.mjs +150 -0
  44. package/esm2022/lib/form-field/controls/select/select.component.mjs +522 -0
  45. package/{esm2020 → esm2022}/lib/form-field/controls/select/select.module.mjs +9 -9
  46. package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.mjs +4 -4
  47. package/esm2022/lib/form-field/controls/shared/toggle/toggle.component.mjs +96 -0
  48. package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/toggle.module.mjs +6 -6
  49. package/{esm2020 → esm2022}/lib/form-field/directives/corner-hint.directive.mjs +4 -4
  50. package/{esm2020 → esm2022}/lib/form-field/directives/error.directive.mjs +4 -4
  51. package/esm2022/lib/form-field/directives/form-root.directive.mjs +91 -0
  52. package/{esm2020 → esm2022}/lib/form-field/directives/hint.directive.mjs +4 -4
  53. package/{esm2020 → esm2022}/lib/form-field/directives/label.directive.mjs +4 -4
  54. package/{esm2020 → esm2022}/lib/form-field/directives/prefix.directive.mjs +4 -4
  55. package/{esm2020 → esm2022}/lib/form-field/directives/suffix.directive.mjs +4 -4
  56. package/{esm2020 → esm2022}/lib/form-field/form-field.component.mjs +11 -11
  57. package/{esm2020 → esm2022}/lib/form-field/impdc-forms.module.mjs +28 -28
  58. package/{esm2020 → esm2022}/lib/form-field/services/error-state-matcher.service.mjs +7 -7
  59. package/{esm2020 → esm2022}/lib/form-field/services/unique-selection-dispatcher.service.mjs +4 -4
  60. package/{esm2020 → esm2022}/lib/form-field/shared/disabled.mixin.mjs +5 -5
  61. package/esm2022/lib/form-field/shared/error-state.mixin.mjs +24 -0
  62. package/{esm2020 → esm2022}/lib/form-field/shared/form-field-control.mjs +4 -4
  63. package/{esm2020 → esm2022}/lib/form-field/shared/tab-index.mixin.mjs +6 -6
  64. package/{esm2020 → esm2022}/lib/icon/icon.component.mjs +5 -5
  65. package/{esm2020 → esm2022}/lib/icon/icon.module.mjs +6 -6
  66. package/esm2022/lib/modal/modal.component.mjs +260 -0
  67. package/{esm2020 → esm2022}/lib/modal/modal.module.mjs +14 -14
  68. package/{esm2020 → esm2022}/lib/modal/types/modal-component-sizes.mjs +1 -1
  69. package/{esm2020 → esm2022}/lib/modal/types/modal-theme.mjs +1 -1
  70. package/esm2022/lib/pagination/pagination.component.mjs +176 -0
  71. package/{esm2020 → esm2022}/lib/pagination/pagination.module.mjs +16 -16
  72. package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.component.mjs +5 -5
  73. package/{esm2020 → esm2022}/lib/progress-bar/progress-bar.module.mjs +5 -5
  74. package/esm2022/lib/scrollable/scrollable.component.mjs +186 -0
  75. package/{esm2020 → esm2022}/lib/scrollable/scrollable.module.mjs +6 -6
  76. package/esm2022/lib/select-icon/select-icon.component.mjs +308 -0
  77. package/{esm2020 → esm2022}/lib/select-icon/select-icon.module.mjs +13 -13
  78. package/{esm2020 → esm2022}/lib/size-detection/directive/size-detector.directive.mjs +5 -5
  79. package/{esm2020 → esm2022}/lib/size-detection/size-detection.module.mjs +5 -5
  80. package/{esm2020 → esm2022}/lib/spinner/spinner.component.mjs +4 -4
  81. package/{esm2020 → esm2022}/lib/spinner/spinner.module.mjs +5 -5
  82. package/{esm2020 → esm2022}/lib/table/components/bulk-actions/bulk-actions.component.mjs +4 -4
  83. package/{esm2020 → esm2022}/lib/table/components/column-heading/column-heading.component.mjs +4 -4
  84. package/{esm2020 → esm2022}/lib/table/components/index.mjs +2 -1
  85. package/esm2022/lib/table/components/row-actions/row-actions.component.mjs +61 -0
  86. package/esm2022/lib/table/containers/table.component.mjs +403 -0
  87. package/esm2022/lib/table/directives/table-inject-component.directive.mjs +46 -0
  88. package/{esm2020 → esm2022}/lib/table/directives/table.directive.mjs +4 -4
  89. package/{esm2020 → esm2022}/lib/table/enumerations/table-column-type.mjs +2 -1
  90. package/{esm2020 → esm2022}/lib/table/helpers/table-theme.helper.mjs +3 -3
  91. package/esm2022/lib/table/interfaces/index.mjs +11 -0
  92. package/esm2022/lib/table/interfaces/table-column-defs.type.mjs +2 -0
  93. package/esm2022/lib/table/interfaces/table-row-action-payload.interface.mjs +2 -0
  94. package/esm2022/lib/table/interfaces/table-row-action.interface.mjs +2 -0
  95. package/esm2022/lib/table/table.module.mjs +96 -0
  96. package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.component.mjs +6 -6
  97. package/{esm2020 → esm2022}/lib/text-highlight/text-highlight.module.mjs +6 -6
  98. package/{esm2020 → esm2022}/services/index.mjs +1 -1
  99. package/esm2022/services/interaction.service.mjs +88 -0
  100. package/{esm2020 → esm2022}/types/component-theme.mjs +1 -1
  101. package/{fesm2020 → fesm2022}/impartner-design-components.mjs +1197 -1032
  102. package/fesm2022/impartner-design-components.mjs.map +1 -0
  103. package/lib/alert/alert.component.d.ts +1 -1
  104. package/lib/alert/theme/alert-theme.d.ts +1 -1
  105. package/lib/avatar/avatar.component.d.ts +1 -1
  106. package/lib/avatar-group/avatar-group.component.d.ts +1 -1
  107. package/lib/backdrop/backdrop.component.d.ts +9 -6
  108. package/lib/badge/badge.component.d.ts +3 -2
  109. package/lib/badge/types/badge-icon.d.ts +1 -1
  110. package/lib/badge/types/badge-size.d.ts +1 -1
  111. package/lib/branding/branded.directive.d.ts +1 -1
  112. package/lib/breadcrumb/breadcrumb-item.component.d.ts +1 -1
  113. package/lib/breadcrumb/breadcrumb.component.d.ts +1 -1
  114. package/lib/button/button.component.d.ts +1 -1
  115. package/lib/button/themes/button-theme.d.ts +1 -1
  116. package/lib/button-group/button-group.component.d.ts +1 -1
  117. package/lib/card-heading/card-heading.component.d.ts +1 -1
  118. package/lib/data-card/data-card.component.d.ts +14 -18
  119. package/lib/data-card/data-card.module.d.ts +2 -1
  120. package/lib/dropdown/components/dropdown-item/dropdown-item.component.d.ts +1 -1
  121. package/lib/dropdown/dropdown.component.d.ts +6 -5
  122. package/lib/dropdown/types/dropdown-position.d.ts +1 -1
  123. package/lib/file-upload/directives/file-drop.directive.d.ts +1 -1
  124. package/lib/file-upload/file-upload.component.d.ts +1 -1
  125. package/lib/form-field/controls/checkbox/checkbox.component.d.ts +1 -1
  126. package/lib/form-field/controls/input/input.directive.d.ts +1 -1
  127. package/lib/form-field/controls/radio/radio-button/radio-button.component.d.ts +1 -1
  128. package/lib/form-field/controls/radio/radio-group/radio-group.directive.d.ts +1 -1
  129. package/lib/form-field/controls/select/option/select-option.component.d.ts +4 -4
  130. package/lib/form-field/controls/select/select.component.d.ts +1 -1
  131. package/lib/form-field/controls/shared/toggle/components/toggle-input/toggle-input.component.d.ts +1 -1
  132. package/lib/form-field/controls/shared/toggle/toggle.component.d.ts +1 -1
  133. package/lib/form-field/directives/corner-hint.directive.d.ts +1 -1
  134. package/lib/form-field/directives/error.directive.d.ts +1 -1
  135. package/lib/form-field/directives/form-root.directive.d.ts +2 -2
  136. package/lib/form-field/directives/hint.directive.d.ts +1 -1
  137. package/lib/form-field/directives/label.directive.d.ts +1 -1
  138. package/lib/form-field/directives/prefix.directive.d.ts +1 -1
  139. package/lib/form-field/directives/suffix.directive.d.ts +1 -1
  140. package/lib/form-field/form-field.component.d.ts +1 -1
  141. package/lib/form-field/services/unique-selection-dispatcher.service.d.ts +1 -1
  142. package/lib/form-field/shared/constructors.type.d.ts +2 -2
  143. package/lib/form-field/shared/disabled.mixin.d.ts +1 -1
  144. package/lib/form-field/shared/error-state.mixin.d.ts +1 -1
  145. package/lib/form-field/shared/form-field-control.d.ts +1 -1
  146. package/lib/form-field/shared/tab-index.mixin.d.ts +1 -1
  147. package/lib/icon/icon.component.d.ts +1 -1
  148. package/lib/modal/modal.component.d.ts +17 -10
  149. package/lib/modal/types/modal-component-sizes.d.ts +1 -1
  150. package/lib/modal/types/modal-theme.d.ts +1 -1
  151. package/lib/pagination/pagination.component.d.ts +1 -1
  152. package/lib/progress-bar/progress-bar.component.d.ts +1 -1
  153. package/lib/scrollable/scrollable.component.d.ts +1 -1
  154. package/lib/select-icon/select-icon.component.d.ts +1 -1
  155. package/lib/size-detection/directive/size-detector.directive.d.ts +1 -1
  156. package/lib/spinner/spinner.component.d.ts +1 -1
  157. package/lib/table/components/bulk-actions/bulk-actions.component.d.ts +1 -1
  158. package/lib/table/components/column-heading/column-heading.component.d.ts +1 -1
  159. package/lib/table/components/index.d.ts +1 -0
  160. package/lib/table/components/row-actions/row-actions.component.d.ts +21 -0
  161. package/lib/table/containers/table.component.d.ts +12 -6
  162. package/lib/table/directives/table-inject-component.directive.d.ts +3 -3
  163. package/lib/table/directives/table.directive.d.ts +1 -1
  164. package/lib/table/enumerations/table-column-type.d.ts +2 -1
  165. package/lib/table/helpers/table-theme.helper.d.ts +4 -4
  166. package/lib/table/interfaces/custom-cell-renderer-components.type.d.ts +1 -1
  167. package/lib/table/interfaces/index.d.ts +3 -1
  168. package/lib/table/interfaces/{table-column-def.interface.d.ts → table-column-defs.type.d.ts} +8 -1
  169. package/lib/table/interfaces/table-row-action-payload.interface.d.ts +6 -0
  170. package/lib/table/interfaces/table-row-action.interface.d.ts +9 -0
  171. package/lib/table/interfaces/table-row-item.interface.d.ts +3 -3
  172. package/lib/table/table.module.d.ts +12 -10
  173. package/lib/text-highlight/text-highlight.component.d.ts +1 -1
  174. package/package.json +16 -22
  175. package/services/index.d.ts +1 -1
  176. package/services/interaction.service.d.ts +20 -10
  177. package/types/component-size.d.ts +2 -2
  178. package/types/component-theme.d.ts +1 -1
  179. package/utilities/boolean-props.d.ts +1 -1
  180. package/utilities/number-props.d.ts +1 -1
  181. package/esm2020/lib/backdrop/backdrop.component.mjs +0 -40
  182. package/esm2020/lib/badge/badge.component.mjs +0 -99
  183. package/esm2020/lib/data-card/data-card.component.mjs +0 -128
  184. package/esm2020/lib/data-card/data-card.module.mjs +0 -20
  185. package/esm2020/lib/dropdown/dropdown.component.mjs +0 -142
  186. package/esm2020/lib/form-field/controls/input/input.directive.mjs +0 -233
  187. package/esm2020/lib/form-field/controls/radio/radio-button/radio-button.component.mjs +0 -260
  188. package/esm2020/lib/form-field/controls/radio/radio-group/radio-group.directive.mjs +0 -289
  189. package/esm2020/lib/form-field/controls/select/option/select-option.component.mjs +0 -139
  190. package/esm2020/lib/form-field/controls/select/select-model.mjs +0 -150
  191. package/esm2020/lib/form-field/controls/select/select.component.mjs +0 -522
  192. package/esm2020/lib/form-field/controls/shared/toggle/toggle.component.mjs +0 -96
  193. package/esm2020/lib/form-field/directives/form-root.directive.mjs +0 -91
  194. package/esm2020/lib/form-field/shared/error-state.mixin.mjs +0 -24
  195. package/esm2020/lib/modal/modal.component.mjs +0 -187
  196. package/esm2020/lib/pagination/pagination.component.mjs +0 -176
  197. package/esm2020/lib/scrollable/scrollable.component.mjs +0 -186
  198. package/esm2020/lib/select-icon/select-icon.component.mjs +0 -308
  199. package/esm2020/lib/table/containers/table.component.mjs +0 -386
  200. package/esm2020/lib/table/directives/table-inject-component.directive.mjs +0 -46
  201. package/esm2020/lib/table/interfaces/index.mjs +0 -9
  202. package/esm2020/lib/table/interfaces/table-column-def.interface.mjs +0 -2
  203. package/esm2020/lib/table/table.module.mjs +0 -88
  204. package/esm2020/services/interaction.service.mjs +0 -81
  205. package/fesm2015/impartner-design-components.mjs +0 -9214
  206. package/fesm2015/impartner-design-components.mjs.map +0 -1
  207. package/fesm2020/impartner-design-components.mjs.map +0 -1
  208. /package/{esm2020 → esm2022}/constants/index.mjs +0 -0
  209. /package/{esm2020 → esm2022}/impartner-design-components.mjs +0 -0
  210. /package/{esm2020 → esm2022}/lib/alert/index.mjs +0 -0
  211. /package/{esm2020 → esm2022}/lib/alert/theme/alert-theme.mjs +0 -0
  212. /package/{esm2020 → esm2022}/lib/alert/theme/index.mjs +0 -0
  213. /package/{esm2020 → esm2022}/lib/avatar/index.mjs +0 -0
  214. /package/{esm2020 → esm2022}/lib/avatar-group/index.mjs +0 -0
  215. /package/{esm2020 → esm2022}/lib/backdrop/index.mjs +0 -0
  216. /package/{esm2020 → esm2022}/lib/badge/index.mjs +0 -0
  217. /package/{esm2020 → esm2022}/lib/badge/types/badge-icon.mjs +0 -0
  218. /package/{esm2020 → esm2022}/lib/badge/types/index.mjs +0 -0
  219. /package/{esm2020 → esm2022}/lib/branding/index.mjs +0 -0
  220. /package/{esm2020 → esm2022}/lib/breadcrumb/index.mjs +0 -0
  221. /package/{esm2020 → esm2022}/lib/button/index.mjs +0 -0
  222. /package/{esm2020 → esm2022}/lib/button/themes/button-theme.mjs +0 -0
  223. /package/{esm2020 → esm2022}/lib/button/themes/index.mjs +0 -0
  224. /package/{esm2020 → esm2022}/lib/button-group/index.mjs +0 -0
  225. /package/{esm2020 → esm2022}/lib/card-heading/index.mjs +0 -0
  226. /package/{esm2020 → esm2022}/lib/data-card/index.mjs +0 -0
  227. /package/{esm2020 → esm2022}/lib/dropdown/components/index.mjs +0 -0
  228. /package/{esm2020 → esm2022}/lib/dropdown/index.mjs +0 -0
  229. /package/{esm2020 → esm2022}/lib/dropdown/types/dropdown-position.mjs +0 -0
  230. /package/{esm2020 → esm2022}/lib/dropdown/types/index.mjs +0 -0
  231. /package/{esm2020 → esm2022}/lib/file-upload/directives/index.mjs +0 -0
  232. /package/{esm2020 → esm2022}/lib/file-upload/index.mjs +0 -0
  233. /package/{esm2020 → esm2022}/lib/file-upload/pipes/index.mjs +0 -0
  234. /package/{esm2020 → esm2022}/lib/form-field/controls/checkbox/index.mjs +0 -0
  235. /package/{esm2020 → esm2022}/lib/form-field/controls/index.mjs +0 -0
  236. /package/{esm2020 → esm2022}/lib/form-field/controls/input/index.mjs +0 -0
  237. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/index.mjs +0 -0
  238. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/injection-tokens.mjs +0 -0
  239. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/index.mjs +0 -0
  240. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-button.interface.mjs +0 -0
  241. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-change-event.interface.mjs +0 -0
  242. /package/{esm2020 → esm2022}/lib/form-field/controls/radio/interfaces/radio-group.interface.mjs +0 -0
  243. /package/{esm2020 → esm2022}/lib/form-field/controls/select/index.mjs +0 -0
  244. /package/{esm2020 → esm2022}/lib/form-field/controls/select/option/index.mjs +0 -0
  245. /package/{esm2020 → esm2022}/lib/form-field/controls/select/option-parent.mjs +0 -0
  246. /package/{esm2020 → esm2022}/lib/form-field/controls/shared/index.mjs +0 -0
  247. /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/components/index.mjs +0 -0
  248. /package/{esm2020 → esm2022}/lib/form-field/controls/shared/toggle/index.mjs +0 -0
  249. /package/{esm2020 → esm2022}/lib/form-field/directives/index.mjs +0 -0
  250. /package/{esm2020 → esm2022}/lib/form-field/form-field-errors.mjs +0 -0
  251. /package/{esm2020 → esm2022}/lib/form-field/impdc-forms.mjs +0 -0
  252. /package/{esm2020 → esm2022}/lib/form-field/index.mjs +0 -0
  253. /package/{esm2020 → esm2022}/lib/form-field/services/index.mjs +0 -0
  254. /package/{esm2020 → esm2022}/lib/form-field/shared/constructors.type.mjs +0 -0
  255. /package/{esm2020 → esm2022}/lib/form-field/shared/index.mjs +0 -0
  256. /package/{esm2020 → esm2022}/lib/icon/index.mjs +0 -0
  257. /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
  258. /package/{esm2020 → esm2022}/lib/modal/index.mjs +0 -0
  259. /package/{esm2020 → esm2022}/lib/modal/types/index.mjs +0 -0
  260. /package/{esm2020 → esm2022}/lib/pagination/index.mjs +0 -0
  261. /package/{esm2020 → esm2022}/lib/progress-bar/index.mjs +0 -0
  262. /package/{esm2020 → esm2022}/lib/scrollable/index.mjs +0 -0
  263. /package/{esm2020 → esm2022}/lib/select-icon/index.mjs +0 -0
  264. /package/{esm2020 → esm2022}/lib/size-detection/directive/element-size.interface.mjs +0 -0
  265. /package/{esm2020 → esm2022}/lib/size-detection/directive/index.mjs +0 -0
  266. /package/{esm2020 → esm2022}/lib/size-detection/index.mjs +0 -0
  267. /package/{esm2020 → esm2022}/lib/spinner/index.mjs +0 -0
  268. /package/{esm2020 → esm2022}/lib/table/constants/index.mjs +0 -0
  269. /package/{esm2020 → esm2022}/lib/table/constants/public-table.constants.mjs +0 -0
  270. /package/{esm2020 → esm2022}/lib/table/constants/table.constants.mjs +0 -0
  271. /package/{esm2020 → esm2022}/lib/table/containers/index.mjs +0 -0
  272. /package/{esm2020 → esm2022}/lib/table/directives/index.mjs +0 -0
  273. /package/{esm2020 → esm2022}/lib/table/enumerations/index.mjs +0 -0
  274. /package/{esm2020 → esm2022}/lib/table/helpers/index.mjs +0 -0
  275. /package/{esm2020 → esm2022}/lib/table/index.mjs +0 -0
  276. /package/{esm2020 → esm2022}/lib/table/interfaces/cell-renderer.interface.mjs +0 -0
  277. /package/{esm2020 → esm2022}/lib/table/interfaces/custom-cell-renderer-components.type.mjs +0 -0
  278. /package/{esm2020 → esm2022}/lib/table/interfaces/sort-by-payload.interface.mjs +0 -0
  279. /package/{esm2020 → esm2022}/lib/table/interfaces/table-cell-option.interface.mjs +0 -0
  280. /package/{esm2020 → esm2022}/lib/table/interfaces/table-event-payload.interface.mjs +0 -0
  281. /package/{esm2020 → esm2022}/lib/table/interfaces/table-row-item.interface.mjs +0 -0
  282. /package/{esm2020 → esm2022}/lib/text-highlight/index.mjs +0 -0
  283. /package/{esm2020 → esm2022}/public-api.mjs +0 -0
  284. /package/{esm2020 → esm2022}/types/component-size.mjs +0 -0
  285. /package/{esm2020 → esm2022}/types/index.mjs +0 -0
  286. /package/{esm2020 → esm2022}/utilities/boolean-props.mjs +0 -0
  287. /package/{esm2020 → esm2022}/utilities/dc.mjs +0 -0
  288. /package/{esm2020 → esm2022}/utilities/index.mjs +0 -0
  289. /package/{esm2020 → esm2022}/utilities/lc.mjs +0 -0
  290. /package/{esm2020 → esm2022}/utilities/number-props.mjs +0 -0
  291. /package/{esm2020 → esm2022}/utilities/sanitize.mjs +0 -0
@@ -5,11 +5,11 @@ import { RadioButtonComponent } from './radio-button/radio-button.component';
5
5
  import { RadioGroupDirective } from './radio-group/radio-group.directive';
6
6
  import * as i0 from "@angular/core";
7
7
  export class RadioModule {
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: RadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
9
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.0.1", ngImport: i0, type: RadioModule, declarations: [RadioButtonComponent, RadioGroupDirective], imports: [ReactiveFormsModule, ToggleModule], exports: [RadioButtonComponent, RadioGroupDirective] }); }
10
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: RadioModule, imports: [ReactiveFormsModule, ToggleModule] }); }
8
11
  }
9
- RadioModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RadioModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- RadioModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.12", ngImport: i0, type: RadioModule, declarations: [RadioButtonComponent, RadioGroupDirective], imports: [ReactiveFormsModule, ToggleModule], exports: [RadioButtonComponent, RadioGroupDirective] });
11
- RadioModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RadioModule, imports: [ReactiveFormsModule, ToggleModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: RadioModule, decorators: [{
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: RadioModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  declarations: [RadioButtonComponent, RadioGroupDirective],
@@ -17,4 +17,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
17
17
  exports: [RadioButtonComponent, RadioGroupDirective]
18
18
  }]
19
19
  }] });
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL3JhZGlvL3JhZGlvLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBTzFFLE1BQU0sT0FBTyxXQUFXOzt5R0FBWCxXQUFXOzBHQUFYLFdBQVcsaUJBSlAsb0JBQW9CLEVBQUUsbUJBQW1CLGFBQzlDLG1CQUFtQixFQUFFLFlBQVksYUFDakMsb0JBQW9CLEVBQUUsbUJBQW1COzBHQUV4QyxXQUFXLFlBSFosbUJBQW1CLEVBQUUsWUFBWTs0RkFHaEMsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDekQsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDO29CQUM1QyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQztpQkFDckQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRvZ2dsZU1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmFkaW9Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4vcmFkaW8tZ3JvdXAvcmFkaW8tZ3JvdXAuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUmFkaW9CdXR0b25Db21wb25lbnQsIFJhZGlvR3JvdXBEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgVG9nZ2xlTW9kdWxlXSxcbiAgZXhwb3J0czogW1JhZGlvQnV0dG9uQ29tcG9uZW50LCBSYWRpb0dyb3VwRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb01vZHVsZSB7fVxuIl19
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8ubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL3JhZGlvL3JhZGlvLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDekMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDN0UsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0scUNBQXFDLENBQUM7O0FBTzFFLE1BQU0sT0FBTyxXQUFXOzhHQUFYLFdBQVc7K0dBQVgsV0FBVyxpQkFKUCxvQkFBb0IsRUFBRSxtQkFBbUIsYUFDOUMsbUJBQW1CLEVBQUUsWUFBWSxhQUNqQyxvQkFBb0IsRUFBRSxtQkFBbUI7K0dBRXhDLFdBQVcsWUFIWixtQkFBbUIsRUFBRSxZQUFZOzsyRkFHaEMsV0FBVztrQkFMdkIsUUFBUTttQkFBQztvQkFDUixZQUFZLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQztvQkFDekQsT0FBTyxFQUFFLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDO29CQUM1QyxPQUFPLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQztpQkFDckQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFRvZ2dsZU1vZHVsZSB9IGZyb20gJy4uL3NoYXJlZCc7XG5pbXBvcnQgeyBSYWRpb0J1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4vcmFkaW8tYnV0dG9uL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgUmFkaW9Hcm91cERpcmVjdGl2ZSB9IGZyb20gJy4vcmFkaW8tZ3JvdXAvcmFkaW8tZ3JvdXAuZGlyZWN0aXZlJztcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBbUmFkaW9CdXR0b25Db21wb25lbnQsIFJhZGlvR3JvdXBEaXJlY3RpdmVdLFxuICBpbXBvcnRzOiBbUmVhY3RpdmVGb3Jtc01vZHVsZSwgVG9nZ2xlTW9kdWxlXSxcbiAgZXhwb3J0czogW1JhZGlvQnV0dG9uQ29tcG9uZW50LCBSYWRpb0dyb3VwRGlyZWN0aXZlXVxufSlcbmV4cG9ydCBjbGFzcyBSYWRpb01vZHVsZSB7fVxuIl19
@@ -0,0 +1,139 @@
1
+ import { ChangeDetectionStrategy, Component, EventEmitter, Inject, Input, Optional, Output } from '@angular/core';
2
+ import { NgbDropdownItem } from '@ng-bootstrap/ng-bootstrap';
3
+ import { nanoid } from 'nanoid';
4
+ import { coerceBooleanPropertyValue } from '../../../../../utilities';
5
+ import { Subject } from 'rxjs';
6
+ import { IMPDC_SELECT_OPTION_PARENT_COMPONENT } from '../option-parent';
7
+ import * as i0 from "@angular/core";
8
+ import * as i1 from "@angular/common";
9
+ import * as i2 from "../../../../icon/icon.component";
10
+ export class SelectOptionSelectionChangeEvent {
11
+ constructor(source, isUserInput = false) {
12
+ this.source = source;
13
+ this.isUserInput = isUserInput;
14
+ }
15
+ }
16
+ export class SelectOptionComponent extends NgbDropdownItem {
17
+ /** @ignore */
18
+ get multiple() {
19
+ return this._parent && !!this._parent.multiple;
20
+ }
21
+ /** @ignore */
22
+ get selected() {
23
+ return this._selected;
24
+ }
25
+ /**
26
+ * Label text describing the select option.
27
+ */
28
+ get label() {
29
+ return this._label;
30
+ }
31
+ set label(label) {
32
+ this._label = label;
33
+ this._emitSelectionChangeEvent();
34
+ }
35
+ /**
36
+ * Used to enable or disable the specific select option.
37
+ */
38
+ get disabled() {
39
+ return this.__disabled;
40
+ }
41
+ set disabled(value) {
42
+ this.__disabled = coerceBooleanPropertyValue(value);
43
+ }
44
+ constructor(_parent, _changeDetector) {
45
+ super();
46
+ this._parent = _parent;
47
+ this._changeDetector = _changeDetector;
48
+ /** @ignore */
49
+ this.stateChanges = new Subject();
50
+ this._selected = false;
51
+ this.__disabled = false;
52
+ this._label = '';
53
+ /** @ignore */
54
+ this.id = `impdc-option-${nanoid()}`;
55
+ /** @ignore */
56
+ this.onSelectionChange = new EventEmitter();
57
+ }
58
+ /** @ignore */
59
+ select() {
60
+ if (!this._selected) {
61
+ this._selected = true;
62
+ this._changeDetector.markForCheck();
63
+ this._emitSelectionChangeEvent();
64
+ }
65
+ }
66
+ /** @ignore */
67
+ deselect() {
68
+ if (this._selected) {
69
+ this._selected = false;
70
+ this._changeDetector.markForCheck();
71
+ this._emitSelectionChangeEvent();
72
+ }
73
+ }
74
+ /** @ignore */
75
+ ngOnDestroy() {
76
+ this.stateChanges.complete();
77
+ }
78
+ /** Ensures the option is selected when activated from the keyboard. */
79
+ _handleKeydown(event) {
80
+ if (this._isInteractionKeyEvent(event)) {
81
+ this._selectViaInteraction();
82
+ // Prevent the page from scrolling down and form submits.
83
+ event.preventDefault();
84
+ }
85
+ }
86
+ /**
87
+ * `Selects the option while indicating the selection came from the user. Used to
88
+ * determine if the select's view -> model callback should be invoked.`
89
+ */
90
+ _selectViaInteraction() {
91
+ if (!this.disabled) {
92
+ this._selected = this.multiple ? !this._selected : true;
93
+ this._changeDetector.markForCheck();
94
+ this._emitSelectionChangeEvent(true);
95
+ }
96
+ }
97
+ _emitSelectionChangeEvent(isUserInput = false) {
98
+ this.onSelectionChange.emit(new SelectOptionSelectionChangeEvent(this, isUserInput));
99
+ }
100
+ _isInteractionKeyEvent(event) {
101
+ // Bail if key isn't "enter" or "space"
102
+ if (event.keyCode !== 13 && event.keyCode !== 32) {
103
+ return false;
104
+ }
105
+ // Bail if keypress has any modifers
106
+ if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {
107
+ return false;
108
+ }
109
+ return true;
110
+ }
111
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectOptionComponent, deps: [{ token: IMPDC_SELECT_OPTION_PARENT_COMPONENT, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
112
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.0.1", type: SelectOptionComponent, selector: "impdc-select-option", inputs: { value: "value", label: "label", id: "id", disabled: "disabled" }, outputs: { onSelectionChange: "onSelectionChange" }, host: { listeners: { "click": "_selectViaInteraction()", "keydown": "_handleKeydown($event)" }, properties: { "class.impdc-select-option--single": "!multiple", "class.impdc-select-option--multiple": "multiple", "class.impdc-select-option--selected": "selected" } }, usesInheritance: true, ngImport: i0, template: "<ng-template #singleSelectTemplate>\n <span>{{ label || '&nbsp;' }}</span>\n <span\n *ngIf=\"selected\"\n impdc-icon\n name=\"check\"\n class=\"selected-check ms-auto\"></span>\n</ng-template>\n\n<ng-template #multipleSelectTemplate>\n <div class=\"d-flex align-items-center gap-5\">\n <span>\n <input\n class=\"form-check-input opacity-100\"\n type=\"checkbox\"\n disabled\n readonly=\"readonly\"\n [attr.checked]=\"selected ? 'checked' : null\" />\n </span>\n <span>\n {{ label }}\n </span>\n </div>\n</ng-template>\n\n<ng-template\n [ngTemplateOutlet]=\"\n multiple ? multipleSelectTemplate : singleSelectTemplate\n \"></ng-template>\n", styles: [":host{background-color:var(--impd-color-white);color:var(--impd-color-gray-600);padding:var(--impd-size-2) var(--impd-size-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:flex!important;align-items:center;column-gap:var(--impd-size-2);cursor:pointer}:host:hover,:host:focus{background-color:var(--impd-color-gray-100);border:0;outline:0}:host.impdc-select-option--selected{font-weight:var(--impd-font-weight-semibold)}:host.impdc-select-option--single .selected-check{display:none}:host.impdc-select-option--single.impdc-select-option--selected{background-color:var(--impd-color-motion-blue-600);color:var(--impd-color-white)}:host.impdc-select-option--single.impdc-select-option--selected:hover,:host.impdc-select-option--single.impdc-select-option--selected:focus{background:linear-gradient(to top,rgba(0,0,0,.1),rgba(0,0,0,.1)) var(--impd-color-motion-blue-600);color:var(--impd-color-white);border:0;outline:0}:host.impdc-select-option--single.impdc-select-option--selected .selected-check{display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: i2.IconComponent, selector: "impdc-icon, [impdc-icon]", inputs: ["name", "theme", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
113
+ }
114
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.0.1", ngImport: i0, type: SelectOptionComponent, decorators: [{
115
+ type: Component,
116
+ args: [{ selector: 'impdc-select-option', changeDetection: ChangeDetectionStrategy.OnPush, host: {
117
+ '[class.impdc-select-option--single]': '!multiple',
118
+ '[class.impdc-select-option--multiple]': 'multiple',
119
+ '[class.impdc-select-option--selected]': 'selected',
120
+ '(click)': '_selectViaInteraction()',
121
+ '(keydown)': '_handleKeydown($event)'
122
+ }, template: "<ng-template #singleSelectTemplate>\n <span>{{ label || '&nbsp;' }}</span>\n <span\n *ngIf=\"selected\"\n impdc-icon\n name=\"check\"\n class=\"selected-check ms-auto\"></span>\n</ng-template>\n\n<ng-template #multipleSelectTemplate>\n <div class=\"d-flex align-items-center gap-5\">\n <span>\n <input\n class=\"form-check-input opacity-100\"\n type=\"checkbox\"\n disabled\n readonly=\"readonly\"\n [attr.checked]=\"selected ? 'checked' : null\" />\n </span>\n <span>\n {{ label }}\n </span>\n </div>\n</ng-template>\n\n<ng-template\n [ngTemplateOutlet]=\"\n multiple ? multipleSelectTemplate : singleSelectTemplate\n \"></ng-template>\n", styles: [":host{background-color:var(--impd-color-white);color:var(--impd-color-gray-600);padding:var(--impd-size-2) var(--impd-size-3);white-space:nowrap;text-overflow:ellipsis;overflow:hidden;display:flex!important;align-items:center;column-gap:var(--impd-size-2);cursor:pointer}:host:hover,:host:focus{background-color:var(--impd-color-gray-100);border:0;outline:0}:host.impdc-select-option--selected{font-weight:var(--impd-font-weight-semibold)}:host.impdc-select-option--single .selected-check{display:none}:host.impdc-select-option--single.impdc-select-option--selected{background-color:var(--impd-color-motion-blue-600);color:var(--impd-color-white)}:host.impdc-select-option--single.impdc-select-option--selected:hover,:host.impdc-select-option--single.impdc-select-option--selected:focus{background:linear-gradient(to top,rgba(0,0,0,.1),rgba(0,0,0,.1)) var(--impd-color-motion-blue-600);color:var(--impd-color-white);border:0;outline:0}:host.impdc-select-option--single.impdc-select-option--selected .selected-check{display:inline-block}\n"] }]
123
+ }], ctorParameters: () => [{ type: undefined, decorators: [{
124
+ type: Optional
125
+ }, {
126
+ type: Inject,
127
+ args: [IMPDC_SELECT_OPTION_PARENT_COMPONENT]
128
+ }] }, { type: i0.ChangeDetectorRef }], propDecorators: { value: [{
129
+ type: Input
130
+ }], label: [{
131
+ type: Input
132
+ }], id: [{
133
+ type: Input
134
+ }], disabled: [{
135
+ type: Input
136
+ }], onSelectionChange: [{
137
+ type: Output
138
+ }] } });
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW9wdGlvbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9kZXNpZ24tY29tcG9uZW50cy9zcmMvbGliL2Zvcm0tZmllbGQvY29udHJvbHMvc2VsZWN0L29wdGlvbi9zZWxlY3Qtb3B0aW9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Rlc2lnbi1jb21wb25lbnRzL3NyYy9saWIvZm9ybS1maWVsZC9jb250cm9scy9zZWxlY3Qvb3B0aW9uL3NlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLHVCQUF1QixFQUV2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsUUFBUSxFQUNSLE1BQU0sRUFDUCxNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNoQyxPQUFPLEVBRUwsMEJBQTBCLEVBQzNCLE1BQU0sMEJBQTBCLENBQUM7QUFDbEMsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBRUwsb0NBQW9DLEVBQ3JDLE1BQU0sa0JBQWtCLENBQUM7Ozs7QUFFMUIsTUFBTSxPQUFPLGdDQUFnQztJQUMzQyxZQUNTLE1BQTZCLEVBQzdCLGNBQWMsS0FBSztRQURuQixXQUFNLEdBQU4sTUFBTSxDQUF1QjtRQUM3QixnQkFBVyxHQUFYLFdBQVcsQ0FBUTtJQUN6QixDQUFDO0NBQ0w7QUFnQkQsTUFBTSxPQUFPLHFCQUNYLFNBQVEsZUFBZTtJQVF2QixjQUFjO0lBQ2QsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxJ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Q2pELHVDQUF1QztRQUN2QyxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxPQUFPLEtBQUssRUFBRSxFQUFFO1lBQ2hELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxvQ0FBb0M7UUFDcEMsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsT0FBTyxFQUFFO1lBQ3BFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7OEdBcElVLHFCQUFxQixrQkE4RHRCLG9DQUFvQztrR0E5RG5DLHFCQUFxQiw2ZEM1Q2xDLDhzQkE2QkE7OzJGRGVhLHFCQUFxQjtrQkFkakMsU0FBUzsrQkFDRSxxQkFBcUIsbUJBR2QsdUJBQXVCLENBQUMsTUFBTSxRQUV6Qzt3QkFDSixxQ0FBcUMsRUFBRSxXQUFXO3dCQUNsRCx1Q0FBdUMsRUFBRSxVQUFVO3dCQUNuRCx1Q0FBdUMsRUFBRSxVQUFVO3dCQUNuRCxTQUFTLEVBQUUseUJBQXlCO3dCQUNwQyxXQUFXLEVBQUUsd0JBQXdCO3FCQUN0Qzs7MEJBK0RFLFFBQVE7OzBCQUNSLE1BQU07MkJBQUMsb0NBQW9DO3lFQXZDdkMsS0FBSztzQkFEWCxLQUFLO2dCQU9LLEtBQUs7c0JBRGYsS0FBSztnQkFZQyxFQUFFO3NCQURSLEtBQUs7Z0JBT2MsUUFBUTtzQkFEM0IsS0FBSztnQkFXVSxpQkFBaUI7c0JBRmhDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBJbmplY3QsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ2JEcm9wZG93bkl0ZW0gfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tICduYW5vaWQnO1xuaW1wb3J0IHtcbiAgQm9vbGVhbklucHV0LFxuICBjb2VyY2VCb29sZWFuUHJvcGVydHlWYWx1ZVxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi91dGlsaXRpZXMnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHtcbiAgSVNlbGVjdE9wdGlvblBhcmVudENvbXBvbmVudCxcbiAgSU1QRENfU0VMRUNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UXG59IGZyb20gJy4uL29wdGlvbi1wYXJlbnQnO1xuXG5leHBvcnQgY2xhc3MgU2VsZWN0T3B0aW9uU2VsZWN0aW9uQ2hhbmdlRXZlbnQ8VCA9IGFueT4ge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc291cmNlOiBTZWxlY3RPcHRpb25Db21wb25lbnQsXG4gICAgcHVibGljIGlzVXNlcklucHV0ID0gZmFsc2VcbiAgKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbXBkYy1zZWxlY3Qtb3B0aW9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3NlbGVjdC1vcHRpb24uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnc2VsZWN0LW9wdGlvbi5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1ob3N0LW1ldGFkYXRhLXByb3BlcnR5XG4gIGhvc3Q6IHtcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC1vcHRpb24tLXNpbmdsZV0nOiAnIW11bHRpcGxlJyxcbiAgICAnW2NsYXNzLmltcGRjLXNlbGVjdC1vcHRpb24tLW11bHRpcGxlXSc6ICdtdWx0aXBsZScsXG4gICAgJ1tjbGFzcy5pbXBkYy1zZWxlY3Qtb3B0aW9uLS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQnLFxuICAgICcoY2xpY2spJzogJ19zZWxlY3RWaWFJbnRlcmFjdGlvbigpJyxcbiAgICAnKGtleWRvd24pJzogJ19oYW5kbGVLZXlkb3duKCRldmVudCknXG4gIH1cbn0pXG5leHBvcnQgY2xhc3MgU2VsZWN0T3B0aW9uQ29tcG9uZW50PFQgPSBhbnk+XG4gIGV4dGVuZHMgTmdiRHJvcGRvd25JdGVtXG4gIGltcGxlbWVudHMgT25EZXN0cm95XG57XG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyByZWFkb25seSBzdGF0ZUNoYW5nZXMgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9zZWxlY3RlZCA9IGZhbHNlO1xuICBwcml2YXRlIF9fZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKiogQGlnbm9yZSAqL1xuICBnZXQgbXVsdGlwbGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BhcmVudCAmJiAhIXRoaXMuX3BhcmVudC5tdWx0aXBsZTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIGdldCBzZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHNwZWNpZmljIHZhbHVlIHJlcHJlc2VudGVkIGJ5IHRoZSBzZWxlY3Qgb3B0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHZhbHVlPzogVDtcblxuICAvKipcbiAgICogTGFiZWwgdGV4dCBkZXNjcmliaW5nIHRoZSBzZWxlY3Qgb3B0aW9uLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGdldCBsYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbDtcbiAgfVxuICBwdWJsaWMgc2V0IGxhYmVsKGxhYmVsOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9sYWJlbCA9IGxhYmVsO1xuICAgIHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCgpO1xuICB9XG4gIHByaXZhdGUgX2xhYmVsID0gJyc7XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkID0gYGltcGRjLW9wdGlvbi0ke25hbm9pZCgpfWA7XG5cbiAgLyoqXG4gICAqIFVzZWQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIHNwZWNpZmljIHNlbGVjdCBvcHRpb24uXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgb3ZlcnJpZGUgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9fZGlzYWJsZWQ7XG4gIH1cbiAgcHVibGljIG92ZXJyaWRlIHNldCBkaXNhYmxlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5fX2Rpc2FibGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5VmFsdWUodmFsdWUpO1xuICB9XG5cbiAgLyoqIEBpZ25vcmUgKi9cbiAgQE91dHB1dCgpXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvbm8tb3V0cHV0LW9uLXByZWZpeFxuICBwdWJsaWMgcmVhZG9ubHkgb25TZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFxuICAgIFNlbGVjdE9wdGlvblNlbGVjdGlvbkNoYW5nZUV2ZW50PFQ+XG4gID4oKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBAT3B0aW9uYWwoKVxuICAgIEBJbmplY3QoSU1QRENfU0VMRUNUX09QVElPTl9QQVJFTlRfQ09NUE9ORU5UKVxuICAgIHByaXZhdGUgcmVhZG9ubHkgX3BhcmVudDogSVNlbGVjdE9wdGlvblBhcmVudENvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IF9jaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWZcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKiBAaWdub3JlICovXG4gIHB1YmxpYyBzZWxlY3QoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLl9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgZGVzZWxlY3QoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLl9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGlnbm9yZSAqL1xuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5zdGF0ZUNoYW5nZXMuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKiBFbnN1cmVzIHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgd2hlbiBhY3RpdmF0ZWQgZnJvbSB0aGUga2V5Ym9hcmQuICovXG4gIHByb3RlY3RlZCBfaGFuZGxlS2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9pc0ludGVyYWN0aW9uS2V5RXZlbnQoZXZlbnQpKSB7XG4gICAgICB0aGlzLl9zZWxlY3RWaWFJbnRlcmFjdGlvbigpO1xuXG4gICAgICAvLyBQcmV2ZW50IHRoZSBwYWdlIGZyb20gc2Nyb2xsaW5nIGRvd24gYW5kIGZvcm0gc3VibWl0cy5cbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGBTZWxlY3RzIHRoZSBvcHRpb24gd2hpbGUgaW5kaWNhdGluZyB0aGUgc2VsZWN0aW9uIGNhbWUgZnJvbSB0aGUgdXNlci4gVXNlZCB0b1xuICAgKiBkZXRlcm1pbmUgaWYgdGhlIHNlbGVjdCdzIHZpZXcgLT4gbW9kZWwgY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQuYFxuICAgKi9cbiAgcHJvdGVjdGVkIF9zZWxlY3RWaWFJbnRlcmFjdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkID0gdGhpcy5tdWx0aXBsZSA/ICF0aGlzLl9zZWxlY3RlZCA6IHRydWU7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIHRoaXMuX2VtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudCh0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9lbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoaXNVc2VySW5wdXQgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMub25TZWxlY3Rpb25DaGFuZ2UuZW1pdChcbiAgICAgIG5ldyBTZWxlY3RPcHRpb25TZWxlY3Rpb25DaGFuZ2VFdmVudCh0aGlzLCBpc1VzZXJJbnB1dClcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBfaXNJbnRlcmFjdGlvbktleUV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgLy8gQmFpbCBpZiBrZXkgaXNuJ3QgXCJlbnRlclwiIG9yIFwic3BhY2VcIlxuICAgIGlmIChldmVudC5rZXlDb2RlICE9PSAxMyAmJiBldmVudC5rZXlDb2RlICE9PSAzMikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIEJhaWwgaWYga2V5cHJlc3MgaGFzIGFueSBtb2RpZmVyc1xuICAgIGlmIChldmVudC5hbHRLZXkgfHwgZXZlbnQuc2hpZnRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5tZXRhS2V5KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjc2luZ2xlU2VsZWN0VGVtcGxhdGU+XG4gIDxzcGFuPnt7IGxhYmVsIHx8ICcmbmJzcDsnIH19PC9zcGFuPlxuICA8c3BhblxuICAgICpuZ0lmPVwic2VsZWN0ZWRcIlxuICAgIGltcGRjLWljb25cbiAgICBuYW1lPVwiY2hlY2tcIlxuICAgIGNsYXNzPVwic2VsZWN0ZWQtY2hlY2sgbXMtYXV0b1wiPjwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbXVsdGlwbGVTZWxlY3RUZW1wbGF0ZT5cbiAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTVcIj5cbiAgICA8c3Bhbj5cbiAgICAgIDxpbnB1dFxuICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgb3BhY2l0eS0xMDBcIlxuICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICBkaXNhYmxlZFxuICAgICAgICByZWFkb25seT1cInJlYWRvbmx5XCJcbiAgICAgICAgW2F0dHIuY2hlY2tlZF09XCJzZWxlY3RlZCA/ICdjaGVja2VkJyA6IG51bGxcIiAvPlxuICAgIDwvc3Bhbj5cbiAgICA8c3Bhbj5cbiAgICAgIHt7IGxhYmVsIH19XG4gICAgPC9zcGFuPlxuICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZVxuICBbbmdUZW1wbGF0ZU91dGxldF09XCJcbiAgICBtdWx0aXBsZSA/IG11bHRpcGxlU2VsZWN0VGVtcGxhdGUgOiBzaW5nbGVTZWxlY3RUZW1wbGF0ZVxuICBcIj48L25nLXRlbXBsYXRlPlxuIl19
@@ -0,0 +1,150 @@
1
+ import { Subject } from 'rxjs';
2
+ export function getMultipleValuesInSingleSelectError() {
3
+ return Error('Cannot pass multiple values into SelectModel in single-value mode.');
4
+ }
5
+ export class SelectModel {
6
+ get selected() {
7
+ if (!this._selected) {
8
+ this._selected = Array.from(this._selection.values());
9
+ }
10
+ return this._selected;
11
+ }
12
+ constructor(_multiple = false, initialSelectedValues, _emitChanges = true, compareFunc) {
13
+ this._multiple = _multiple;
14
+ this._emitChanges = _emitChanges;
15
+ this.compareFunc = compareFunc;
16
+ this._selection = new Set();
17
+ this._pendingDeselectionsToEmit = [];
18
+ this._pendingSelectionsToEmit = [];
19
+ this._selected = null;
20
+ this.changed$ = new Subject();
21
+ if (initialSelectedValues && initialSelectedValues.length) {
22
+ if (_multiple) {
23
+ initialSelectedValues.forEach(value => {
24
+ this._markSelected(value);
25
+ });
26
+ }
27
+ else {
28
+ this._markSelected(initialSelectedValues[0]);
29
+ }
30
+ this._pendingSelectionsToEmit.length = 0;
31
+ }
32
+ }
33
+ select(...values) {
34
+ this._verifyValueAssignment(values);
35
+ values.forEach(value => this._markSelected(value));
36
+ const changed = this._hasQueuedChanges();
37
+ this._emitChangeEvent();
38
+ return changed;
39
+ }
40
+ deselect(...values) {
41
+ this._verifyValueAssignment(values);
42
+ values.forEach(value => this._unmarkSelected(value));
43
+ const changed = this._hasQueuedChanges();
44
+ this._emitChangeEvent();
45
+ return changed;
46
+ }
47
+ setSelection(...values) {
48
+ this._verifyValueAssignment(values);
49
+ const oldValues = this.selected;
50
+ const newSelectedSet = new Set(values);
51
+ values.forEach(value => this._markSelected(value));
52
+ oldValues
53
+ .filter(value => !newSelectedSet.has(value))
54
+ .forEach(value => this._unmarkSelected(value));
55
+ const changed = this._hasQueuedChanges();
56
+ this._emitChangeEvent();
57
+ return changed;
58
+ }
59
+ toggle(value) {
60
+ return this.isSelected(value) ? this.deselect(value) : this.select(value);
61
+ }
62
+ clear(flushEvent = true) {
63
+ this._unmarkAll();
64
+ const changed = this._hasQueuedChanges();
65
+ if (flushEvent) {
66
+ this._emitChangeEvent();
67
+ }
68
+ return changed;
69
+ }
70
+ isSelected(value) {
71
+ return this._selection.has(this._getConcreteValue(value));
72
+ }
73
+ isEmpty() {
74
+ return this._selection.size === 0;
75
+ }
76
+ hasValue() {
77
+ return !this.isEmpty();
78
+ }
79
+ sort(predicateFunc) {
80
+ if (this._multiple && this.selected) {
81
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
82
+ this._selected.sort(predicateFunc);
83
+ }
84
+ }
85
+ isMultipleSelection() {
86
+ return this._multiple;
87
+ }
88
+ _emitChangeEvent() {
89
+ this._selected = null;
90
+ if (this._pendingSelectionsToEmit.length ||
91
+ this._pendingDeselectionsToEmit.length) {
92
+ this.changed$.next({
93
+ source: this,
94
+ added: this._pendingSelectionsToEmit,
95
+ removed: this._pendingDeselectionsToEmit
96
+ });
97
+ this._pendingDeselectionsToEmit = [];
98
+ this._pendingSelectionsToEmit = [];
99
+ }
100
+ }
101
+ _markSelected(value) {
102
+ value = this._getConcreteValue(value);
103
+ if (!this.isSelected(value)) {
104
+ if (!this._multiple) {
105
+ this._unmarkAll();
106
+ }
107
+ if (!this.isSelected(value)) {
108
+ this._selection.add(value);
109
+ }
110
+ if (this._emitChanges) {
111
+ this._pendingSelectionsToEmit.push(value);
112
+ }
113
+ }
114
+ }
115
+ _unmarkSelected(value) {
116
+ value = this._getConcreteValue(value);
117
+ if (this.isSelected(value)) {
118
+ this._selection.delete(value);
119
+ if (this._emitChanges) {
120
+ this._pendingDeselectionsToEmit.push(value);
121
+ }
122
+ }
123
+ }
124
+ _unmarkAll() {
125
+ if (!this.isEmpty()) {
126
+ this._selection.forEach(value => this._unmarkSelected(value));
127
+ }
128
+ }
129
+ _verifyValueAssignment(values) {
130
+ if (values.length > 1 && !this._multiple) {
131
+ throw getMultipleValuesInSingleSelectError();
132
+ }
133
+ }
134
+ _hasQueuedChanges() {
135
+ return !!(this._pendingDeselectionsToEmit.length ||
136
+ this._pendingSelectionsToEmit.length);
137
+ }
138
+ _getConcreteValue(inputVal) {
139
+ if (!this.compareFunc) {
140
+ return inputVal;
141
+ }
142
+ for (let selectedVal of this._selection) {
143
+ if (this.compareFunc(inputVal, selectedVal)) {
144
+ return selectedVal;
145
+ }
146
+ }
147
+ return inputVal;
148
+ }
149
+ }
150
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZGVzaWduLWNvbXBvbmVudHMvc3JjL2xpYi9mb3JtLWZpZWxkL2NvbnRyb2xzL3NlbGVjdC9zZWxlY3QtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVEvQixNQUFNLFVBQVUsb0NBQW9DO0lBQ2xELE9BQU8sS0FBSyxDQUNWLG9FQUFvRSxDQUNyRSxDQUFDO0FBQ0osQ0FBQztBQUVELE1BQU0sT0FBTyxXQUFXO0lBT3RCLElBQVcsUUFBUTtRQUNqQixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBRUQsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFJRCxZQUNtQixZQUFZLEtBQUssRUFDbEMscUJBQTJCLEVBQ1YsZUFBZSxJQUFJLEVBQzdCLFdBQXFDO1FBSDNCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFFakIsaUJBQVksR0FBWixZQUFZLENBQU87UUFDN0IsZ0JBQVcsR0FBWCxXQUFXLENBQTBCO1FBcEJ0QyxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQUssQ0FBQztRQUUxQiwrQkFBMEIsR0FBUSxFQUFFLENBQUM7UUFDckMsNkJBQXdCLEdBQVEsRUFBRSxDQUFDO1FBQ25DLGNBQVMsR0FBZSxJQUFJLENBQUM7UUFVckIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO1FBUXhELElBQUkscUJBQXFCLElBQUkscUJBQXFCLENBQUMsTUFBTSxFQUFFO1lBQ3pELElBQUksU0FBUyxFQUFFO2dCQUNiLHFCQUFxQixDQUFDLE9BQU8sQ0FB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VyxFQUFFO1lBQ3JCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBRUQsS0FBSyxJQUFJLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ3ZDLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLEVBQUU7Z0JBQzNDLE9BQU8sV0FBVyxDQUFDO2FBQ3BCO1NBQ0Y7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUNsQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0Q2hhbmdlPFQ+IHtcbiAgc291cmNlOiBTZWxlY3RNb2RlbDxUPjtcbiAgYWRkZWQ6IFRbXTtcbiAgcmVtb3ZlZDogVFtdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TXVsdGlwbGVWYWx1ZXNJblNpbmdsZVNlbGVjdEVycm9yKCkge1xuICByZXR1cm4gRXJyb3IoXG4gICAgJ0Nhbm5vdCBwYXNzIG11bHRpcGxlIHZhbHVlcyBpbnRvIFNlbGVjdE1vZGVsIGluIHNpbmdsZS12YWx1ZSBtb2RlLidcbiAgKTtcbn1cblxuZXhwb3J0IGNsYXNzIFNlbGVjdE1vZGVsPFQ+IHtcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uID0gbmV3IFNldDxUPigpO1xuXG4gIHByaXZhdGUgX3BlbmRpbmdEZXNlbGVjdGlvbnNUb0VtaXQ6IFRbXSA9IFtdO1xuICBwcml2YXRlIF9wZW5kaW5nU2VsZWN0aW9uc1RvRW1pdDogVFtdID0gW107XG4gIHByaXZhdGUgX3NlbGVjdGVkOiBUW10gfCBudWxsID0gbnVsbDtcblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IFRbXSB7XG4gICAgaWYgKCF0aGlzLl9zZWxlY3RlZCkge1xuICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBBcnJheS5mcm9tKHRoaXMuX3NlbGVjdGlvbi52YWx1ZXMoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGNoYW5nZWQkID0gbmV3IFN1YmplY3Q8U2VsZWN0Q2hhbmdlPFQ+PigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX211bHRpcGxlID0gZmFsc2UsXG4gICAgaW5pdGlhbFNlbGVjdGVkVmFsdWVzPzogVFtdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VtaXRDaGFuZ2VzID0gdHJ1ZSxcbiAgICBwdWJsaWMgY29tcGFyZUZ1bmM/OiAoYTogVCwgYjogVCkgPT4gYm9vbGVhblxuICApIHtcbiAgICBpZiAoaW5pdGlhbFNlbGVjdGVkVmFsdWVzICYmIGluaXRpYWxTZWxlY3RlZFZhbHVlcy5sZW5ndGgpIHtcbiAgICAgIGlmIChfbXVsdGlwbGUpIHtcbiAgICAgICAgaW5pdGlhbFNlbGVjdGVkVmFsdWVzLmZvckVhY2godmFsdWUgPT4ge1xuICAgICAgICAgIHRoaXMuX21hcmtTZWxlY3RlZCh2YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fbWFya1NlbGVjdGVkKGluaXRpYWxTZWxlY3RlZFZhbHVlc1swXSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3BlbmRpbmdTZWxlY3Rpb25zVG9FbWl0Lmxlbmd0aCA9IDA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdCguLi52YWx1ZXM6IFRbXSk6IGJvb2xlYW4gfCB2b2lkIHtcbiAgICB0aGlzLl92ZXJpZnlWYWx1ZUFzc2lnbm1lbnQodmFsdWVzKTtcbiAgICB2YWx1ZXMuZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLl9tYXJrU2VsZWN0ZWQodmFsdWUpKTtcbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5faGFzUXVldWVkQ2hhbmdlcygpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xuICAgIHJldHVybiBjaGFuZ2VkO1xuICB9XG5cbiAgcHVibGljIGRlc2VsZWN0KC4uLnZhbHVlczogVFtdKTogYm9vbGVhbiB8IHZvaWQge1xuICAgIHRoaXMuX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh2YWx1ZXMpO1xuICAgIHZhbHVlcy5mb3JFYWNoKHZhbHVlID0+IHRoaXMuX3VubWFya1NlbGVjdGVkKHZhbHVlKSk7XG4gICAgY29uc3QgY2hhbmdlZCA9IHRoaXMuX2hhc1F1ZXVlZENoYW5nZXMoKTtcbiAgICB0aGlzLl9lbWl0Q2hhbmdlRXZlbnQoKTtcbiAgICByZXR1cm4gY2hhbmdlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZWxlY3Rpb24oLi4udmFsdWVzOiBUW10pOiBib29sZWFuIHwgdm9pZCB7XG4gICAgdGhpcy5fdmVyaWZ5VmFsdWVBc3NpZ25tZW50KHZhbHVlcyk7XG4gICAgY29uc3Qgb2xkVmFsdWVzID0gdGhpcy5zZWxlY3RlZDtcbiAgICBjb25zdCBuZXdTZWxlY3RlZFNldCA9IG5ldyBTZXQodmFsdWVzKTtcblxuICAgIHZhbHVlcy5mb3JFYWNoKHZhbHVlID0+IHRoaXMuX21hcmtTZWxlY3RlZCh2YWx1ZSkpO1xuICAgIG9sZFZhbHVlc1xuICAgICAgLmZpbHRlcih2YWx1ZSA9PiAhbmV3U2VsZWN0ZWRTZXQuaGFzKHZhbHVlKSlcbiAgICAgIC5mb3JFYWNoKHZhbHVlID0+IHRoaXMuX3VubWFya1NlbGVjdGVkKHZhbHVlKSk7XG5cbiAgICBjb25zdCBjaGFuZ2VkID0gdGhpcy5faGFzUXVldWVkQ2hhbmdlcygpO1xuICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xuICAgIHJldHVybiBjaGFuZ2VkO1xuICB9XG5cbiAgcHVibGljIHRvZ2dsZSh2YWx1ZTogVCk6IGJvb2xlYW4gfCB2b2lkIHtcbiAgICByZXR1cm4gdGhpcy5pc1NlbGVjdGVkKHZhbHVlKSA/IHRoaXMuZGVzZWxlY3QodmFsdWUpIDogdGhpcy5zZWxlY3QodmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyKGZsdXNoRXZlbnQgPSB0cnVlKTogYm9vbGVhbiB8IHZvaWQge1xuICAgIHRoaXMuX3VubWFya0FsbCgpO1xuICAgIGNvbnN0IGNoYW5nZWQgPSB0aGlzLl9oYXNRdWV1ZWRDaGFuZ2VzKCk7XG4gICAgaWYgKGZsdXNoRXZlbnQpIHtcbiAgICAgIHRoaXMuX2VtaXRDaGFuZ2VFdmVudCgpO1xuICAgIH1cbiAgICByZXR1cm4gY2hhbmdlZDtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlbGVjdGVkKHZhbHVlOiBUKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbi5oYXModGhpcy5fZ2V0Q29uY3JldGVWYWx1ZSh2YWx1ZSkpO1xuICB9XG5cbiAgcHVibGljIGlzRW1wdHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbi5zaXplID09PSAwO1xuICB9XG5cbiAgcHVibGljIGhhc1ZhbHVlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5pc0VtcHR5KCk7XG4gIH1cblxuICBwdWJsaWMgc29ydChwcmVkaWNhdGVGdW5jPzogKGE6IFQsIGI6IFQpID0+IG51bWJlcik6IHZvaWQge1xuICAgIGlmICh0aGlzLl9tdWx0aXBsZSAmJiB0aGlzLnNlbGVjdGVkKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGlvblxuICAgICAgdGhpcy5fc2VsZWN0ZWQhLnNvcnQocHJlZGljYXRlRnVuYyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGlzTXVsdGlwbGVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX211bHRpcGxlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZW1pdENoYW5nZUV2ZW50KCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gbnVsbDtcblxuICAgIGlmIChcbiAgICAgIHRoaXMuX3BlbmRpbmdTZWxlY3Rpb25zVG9FbWl0Lmxlbmd0aCB8fFxuICAgICAgdGhpcy5fcGVuZGluZ0Rlc2VsZWN0aW9uc1RvRW1pdC5sZW5ndGhcbiAgICApIHtcbiAgICAgIHRoaXMuY2hhbmdlZCQubmV4dCh7XG4gICAgICAgIHNvdXJjZTogdGhpcyxcbiAgICAgICAgYWRkZWQ6IHRoaXMuX3BlbmRpbmdTZWxlY3Rpb25zVG9FbWl0LFxuICAgICAgICByZW1vdmVkOiB0aGlzLl9wZW5kaW5nRGVzZWxlY3Rpb25zVG9FbWl0XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5fcGVuZGluZ0Rlc2VsZWN0aW9uc1RvRW1pdCA9IFtdO1xuICAgICAgdGhpcy5fcGVuZGluZ1NlbGVjdGlvbnNUb0VtaXQgPSBbXTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9tYXJrU2VsZWN0ZWQodmFsdWU6IFQpOiB2b2lkIHtcbiAgICB2YWx1ZSA9IHRoaXMuX2dldENvbmNyZXRlVmFsdWUodmFsdWUpO1xuXG4gICAgaWYgKCF0aGlzLmlzU2VsZWN0ZWQodmFsdWUpKSB7XG4gICAgICBpZiAoIXRoaXMuX211bHRpcGxlKSB7XG4gICAgICAgIHRoaXMuX3VubWFya0FsbCgpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuaXNTZWxlY3RlZCh2YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5fc2VsZWN0aW9uLmFkZCh2YWx1ZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9lbWl0Q2hhbmdlcykge1xuICAgICAgICB0aGlzLl9wZW5kaW5nU2VsZWN0aW9uc1RvRW1pdC5wdXNoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91bm1hcmtTZWxlY3RlZCh2YWx1ZTogVCk6IHZvaWQge1xuICAgIHZhbHVlID0gdGhpcy5fZ2V0Q29uY3JldGVWYWx1ZSh2YWx1ZSk7XG5cbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHZhbHVlKSkge1xuICAgICAgdGhpcy5fc2VsZWN0aW9uLmRlbGV0ZSh2YWx1ZSk7XG5cbiAgICAgIGlmICh0aGlzLl9lbWl0Q2hhbmdlcykge1xuICAgICAgICB0aGlzLl9wZW5kaW5nRGVzZWxlY3Rpb25zVG9FbWl0LnB1c2godmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3VubWFya0FsbCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaXNFbXB0eSgpKSB7XG4gICAgICB0aGlzLl9zZWxlY3Rpb24uZm9yRWFjaCh2YWx1ZSA9PiB0aGlzLl91bm1hcmtTZWxlY3RlZCh2YWx1ZSkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX3ZlcmlmeVZhbHVlQXNzaWdubWVudCh2YWx1ZXM6IFRbXSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID4gMSAmJiAhdGhpcy5fbXVsdGlwbGUpIHtcbiAgICAgIHRocm93IGdldE11bHRpcGxlVmFsdWVzSW5TaW5nbGVTZWxlY3RFcnJvcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2hhc1F1ZXVlZENoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhKFxuICAgICAgdGhpcy5fcGVuZGluZ0Rlc2VsZWN0aW9uc1RvRW1pdC5sZW5ndGggfHxcbiAgICAgIHRoaXMuX3BlbmRpbmdTZWxlY3Rpb25zVG9FbWl0Lmxlbmd0aFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIF9nZXRDb25jcmV0ZVZhbHVlKGlucHV0VmFsOiBUKTogVCB7XG4gICAgaWYgKCF0aGlzLmNvbXBhcmVGdW5jKSB7XG4gICAgICByZXR1cm4gaW5wdXRWYWw7XG4gICAgfVxuXG4gICAgZm9yIChsZXQgc2VsZWN0ZWRWYWwgb2YgdGhpcy5fc2VsZWN0aW9uKSB7XG4gICAgICBpZiAodGhpcy5jb21wYXJlRnVuYyhpbnB1dFZhbCwgc2VsZWN0ZWRWYWwpKSB7XG4gICAgICAgIHJldHVybiBzZWxlY3RlZFZhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaW5wdXRWYWw7XG4gIH1cbn1cbiJdfQ==