@coolon/angular-ui-powerups 1.12.0 → 1.13.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 (169) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/assets/table.scss +32 -1
  3. package/bundles/coolon-angular-ui-powerups.umd.js +760 -426
  4. package/bundles/coolon-angular-ui-powerups.umd.js.map +1 -1
  5. package/bundles/coolon-angular-ui-powerups.umd.min.js +2 -2
  6. package/bundles/coolon-angular-ui-powerups.umd.min.js.map +1 -1
  7. package/coolon-angular-ui-powerups.d.ts +58 -55
  8. package/coolon-angular-ui-powerups.metadata.json +1 -1
  9. package/esm2015/coolon-angular-ui-powerups.js +56 -53
  10. package/esm2015/coolon-angular-ui-powerups.js.map +1 -1
  11. package/esm2015/coolon-angular-ui-powerups.metadata.json +1 -1
  12. package/esm2015/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  13. package/esm2015/lib/components/card-container/card-container.component.js +1 -1
  14. package/esm2015/lib/components/card-container/card-container.component.metadata.json +1 -1
  15. package/esm2015/lib/components/components.module.js +9 -2
  16. package/esm2015/lib/components/components.module.js.map +1 -1
  17. package/esm2015/lib/components/components.module.metadata.json +1 -1
  18. package/esm2015/lib/components/components.module.ngfactory.js.map +1 -1
  19. package/esm2015/lib/components/forms/abstract-input.component.js +10 -15
  20. package/esm2015/lib/components/forms/abstract-input.component.js.map +1 -1
  21. package/esm2015/lib/components/forms/abstract-input.component.metadata.json +1 -1
  22. package/esm2015/lib/components/forms/abstract-list-input.component.js +27 -0
  23. package/esm2015/lib/components/forms/abstract-list-input.component.js.map +1 -0
  24. package/esm2015/lib/components/forms/abstract-list-input.component.metadata.json +1 -0
  25. package/esm2015/lib/components/forms/abstract-list-input.component.ngfactory.js.map +1 -0
  26. package/esm2015/lib/components/forms/abstract-value-input.component.js +27 -0
  27. package/esm2015/lib/components/forms/abstract-value-input.component.js.map +1 -0
  28. package/esm2015/lib/components/forms/abstract-value-input.component.metadata.json +1 -0
  29. package/esm2015/lib/components/forms/abstract-value-input.component.ngfactory.js.map +1 -0
  30. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js +3 -3
  31. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  32. package/esm2015/lib/components/forms/checkbox-input/checkbox-input.component.metadata.json +1 -1
  33. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js +54 -0
  34. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -0
  35. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.metadata.json +1 -0
  36. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.ngfactory.js.map +1 -0
  37. package/esm2015/lib/components/forms/multiple-select-input/multiple-select-input.component.scss.shim.ngstyle.js.map +1 -0
  38. package/esm2015/lib/components/forms/number-input/number-input.component.js +4 -4
  39. package/esm2015/lib/components/forms/number-input/number-input.component.js.map +1 -1
  40. package/esm2015/lib/components/forms/number-input/number-input.component.metadata.json +1 -1
  41. package/esm2015/lib/components/forms/password-input/password-input.component.js +4 -4
  42. package/esm2015/lib/components/forms/password-input/password-input.component.js.map +1 -1
  43. package/esm2015/lib/components/forms/password-input/password-input.component.metadata.json +1 -1
  44. package/esm2015/lib/components/forms/select-input/select-input.component.js +4 -4
  45. package/esm2015/lib/components/forms/select-input/select-input.component.js.map +1 -1
  46. package/esm2015/lib/components/forms/select-input/select-input.component.metadata.json +1 -1
  47. package/esm2015/lib/components/forms/string-input/string-input.component.js +4 -4
  48. package/esm2015/lib/components/forms/string-input/string-input.component.js.map +1 -1
  49. package/esm2015/lib/components/forms/string-input/string-input.component.metadata.json +1 -1
  50. package/esm2015/lib/components/forms/text-input/text-input.component.js +4 -4
  51. package/esm2015/lib/components/forms/text-input/text-input.component.js.map +1 -1
  52. package/esm2015/lib/components/forms/text-input/text-input.component.metadata.json +1 -1
  53. package/esm2015/lib/components/index.js +3 -0
  54. package/esm2015/lib/components/index.js.map +1 -1
  55. package/esm2015/lib/components/index.metadata.json +1 -1
  56. package/esm2015/lib/components/table/cell-editors.js +1 -0
  57. package/esm2015/lib/components/table/cell-editors.js.map +1 -0
  58. package/esm2015/lib/components/table/cell-editors.metadata.json +1 -0
  59. package/esm2015/lib/components/table/column-model.js +205 -60
  60. package/esm2015/lib/components/table/column-model.js.map +1 -1
  61. package/esm2015/lib/components/table/column-model.metadata.json +1 -1
  62. package/esm2015/lib/components/table/column-template/column-template.directive.js +26 -1
  63. package/esm2015/lib/components/table/column-template/column-template.directive.js.map +1 -1
  64. package/esm2015/lib/components/table/column-template/column-template.directive.metadata.json +1 -1
  65. package/esm2015/lib/components/table/edit-session.js +10 -7
  66. package/esm2015/lib/components/table/edit-session.js.map +1 -1
  67. package/esm2015/lib/components/table/edit-session.metadata.json +1 -1
  68. package/esm2015/lib/components/table/select-cell-renderer/select-cell-renderer.component.js +1 -12
  69. package/esm2015/lib/components/table/select-cell-renderer/select-cell-renderer.component.js.map +1 -1
  70. package/esm2015/lib/components/table/select-cell-renderer/select-cell-renderer.component.metadata.json +1 -1
  71. package/esm2015/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js +6 -8
  72. package/esm2015/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js.map +1 -1
  73. package/esm2015/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.metadata.json +1 -1
  74. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +43 -19
  75. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  76. package/esm2015/lib/components/table/table-cell-renderer/table-cell-renderer.component.metadata.json +1 -1
  77. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +12 -8
  78. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  79. package/esm2015/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.metadata.json +1 -1
  80. package/esm2015/lib/components/table/table-model.js +15 -4
  81. package/esm2015/lib/components/table/table-model.js.map +1 -1
  82. package/esm2015/lib/components/table/table-model.metadata.json +1 -1
  83. package/esm2015/lib/components/table/table.component.js +8 -0
  84. package/esm2015/lib/components/table/table.component.js.map +1 -1
  85. package/esm2015/lib/components/table/table.component.metadata.json +1 -1
  86. package/esm5/coolon-angular-ui-powerups.js +56 -53
  87. package/esm5/coolon-angular-ui-powerups.js.map +1 -1
  88. package/esm5/lib/angular-ui-powerups.module.ngfactory.js.map +1 -1
  89. package/esm5/lib/components/card-container/card-container.component.js +1 -1
  90. package/esm5/lib/components/components.module.js +9 -2
  91. package/esm5/lib/components/components.module.js.map +1 -1
  92. package/esm5/lib/components/components.module.ngfactory.js.map +1 -1
  93. package/esm5/lib/components/forms/abstract-input.component.js +18 -15
  94. package/esm5/lib/components/forms/abstract-input.component.js.map +1 -1
  95. package/esm5/lib/components/forms/abstract-list-input.component.js +30 -0
  96. package/esm5/lib/components/forms/abstract-list-input.component.js.map +1 -0
  97. package/esm5/lib/components/forms/abstract-list-input.component.ngfactory.js.map +1 -0
  98. package/esm5/lib/components/forms/abstract-value-input.component.js +30 -0
  99. package/esm5/lib/components/forms/abstract-value-input.component.js.map +1 -0
  100. package/esm5/lib/components/forms/abstract-value-input.component.ngfactory.js.map +1 -0
  101. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js +3 -3
  102. package/esm5/lib/components/forms/checkbox-input/checkbox-input.component.js.map +1 -1
  103. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js +57 -0
  104. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.js.map +1 -0
  105. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.ngfactory.js.map +1 -0
  106. package/esm5/lib/components/forms/multiple-select-input/multiple-select-input.component.scss.shim.ngstyle.js.map +1 -0
  107. package/esm5/lib/components/forms/number-input/number-input.component.js +4 -4
  108. package/esm5/lib/components/forms/number-input/number-input.component.js.map +1 -1
  109. package/esm5/lib/components/forms/password-input/password-input.component.js +4 -4
  110. package/esm5/lib/components/forms/password-input/password-input.component.js.map +1 -1
  111. package/esm5/lib/components/forms/select-input/select-input.component.js +4 -4
  112. package/esm5/lib/components/forms/select-input/select-input.component.js.map +1 -1
  113. package/esm5/lib/components/forms/string-input/string-input.component.js +4 -4
  114. package/esm5/lib/components/forms/string-input/string-input.component.js.map +1 -1
  115. package/esm5/lib/components/forms/text-input/text-input.component.js +4 -4
  116. package/esm5/lib/components/forms/text-input/text-input.component.js.map +1 -1
  117. package/esm5/lib/components/index.js +3 -0
  118. package/esm5/lib/components/index.js.map +1 -1
  119. package/esm5/lib/components/table/cell-editors.js +1 -0
  120. package/esm5/lib/components/table/cell-editors.js.map +1 -0
  121. package/esm5/lib/components/table/column-model.js +243 -80
  122. package/esm5/lib/components/table/column-model.js.map +1 -1
  123. package/esm5/lib/components/table/column-template/column-template.directive.js +26 -1
  124. package/esm5/lib/components/table/column-template/column-template.directive.js.map +1 -1
  125. package/esm5/lib/components/table/edit-session.js +10 -7
  126. package/esm5/lib/components/table/edit-session.js.map +1 -1
  127. package/esm5/lib/components/table/select-cell-renderer/select-cell-renderer.component.js +1 -16
  128. package/esm5/lib/components/table/select-cell-renderer/select-cell-renderer.component.js.map +1 -1
  129. package/esm5/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js +6 -8
  130. package/esm5/lib/components/table/select-header-cell-renderer/select-header-cell-renderer.component.js.map +1 -1
  131. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js +43 -19
  132. package/esm5/lib/components/table/table-cell-renderer/table-cell-renderer.component.js.map +1 -1
  133. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js +12 -8
  134. package/esm5/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.js.map +1 -1
  135. package/esm5/lib/components/table/table-model.js +15 -4
  136. package/esm5/lib/components/table/table-model.js.map +1 -1
  137. package/esm5/lib/components/table/table.component.js +8 -0
  138. package/esm5/lib/components/table/table.component.js.map +1 -1
  139. package/fesm2015/coolon-angular-ui-powerups.js +579 -288
  140. package/fesm2015/coolon-angular-ui-powerups.js.map +1 -1
  141. package/fesm5/coolon-angular-ui-powerups.js +673 -358
  142. package/fesm5/coolon-angular-ui-powerups.js.map +1 -1
  143. package/lib/components/forms/abstract-input.component.d.ts +10 -12
  144. package/lib/components/forms/abstract-list-input.component.d.ts +16 -0
  145. package/lib/components/forms/abstract-value-input.component.d.ts +16 -0
  146. package/lib/components/forms/checkbox-input/checkbox-input.component.d.ts +4 -4
  147. package/lib/components/forms/multiple-select-input/multiple-select-input.component.d.ts +15 -0
  148. package/lib/components/forms/number-input/number-input.component.d.ts +4 -4
  149. package/lib/components/forms/password-input/password-input.component.d.ts +4 -4
  150. package/lib/components/forms/select-input/select-input.component.d.ts +4 -4
  151. package/lib/components/forms/string-input/string-input.component.d.ts +4 -4
  152. package/lib/components/forms/text-input/text-input.component.d.ts +4 -4
  153. package/lib/components/index.d.ts +4 -1
  154. package/lib/components/table/cell-editors.d.ts +9 -0
  155. package/lib/components/table/column-model.d.ts +85 -33
  156. package/lib/components/table/column-template/column-template.directive.d.ts +8 -2
  157. package/lib/components/table/edit-session.d.ts +4 -4
  158. package/lib/components/table/select-cell-renderer/select-cell-renderer.component.d.ts +1 -3
  159. package/lib/components/table/table-cell-renderer/table-cell-renderer.component.d.ts +13 -6
  160. package/lib/components/table/table-header-cell-renderer/table-header-cell-renderer.component.d.ts +8 -4
  161. package/lib/components/table/table-model.d.ts +5 -1
  162. package/lib/components/table/table.component.d.ts +3 -1
  163. package/package.json +1 -1
  164. package/esm2015/lib/components/table/cell-editor.component.js +0 -1
  165. package/esm2015/lib/components/table/cell-editor.component.js.map +0 -1
  166. package/esm2015/lib/components/table/cell-editor.component.metadata.json +0 -1
  167. package/esm5/lib/components/table/cell-editor.component.js +0 -1
  168. package/esm5/lib/components/table/cell-editor.component.js.map +0 -1
  169. package/lib/components/table/cell-editor.component.d.ts +0 -5
@@ -1,19 +1,15 @@
1
1
  import { EventEmitter, OnInit } from '@angular/core';
2
2
  import { ErrorStateMatcher } from '@angular/material/core';
3
- import { Command, DelegatingFormValueModel, ListModel, ValueModel } from '@coolon/pectin';
3
+ import { Command, FocusManager, ListModel, ValueModel } from '@coolon/pectin';
4
4
  import { DisposableComponent } from '../disposable-component';
5
+ interface InputModel<T> {
6
+ value: T;
7
+ enabled: ValueModel<boolean>;
8
+ errorList: ListModel<string>;
9
+ focusContext: FocusManager.Context;
10
+ }
5
11
  export declare class AbstractInputComponent<T> extends DisposableComponent implements OnInit {
6
- /**
7
- * A backing model for all our @Input() valueModel properties which should be defined as follows.
8
- *
9
- * @Input() @TrackExternal({useExisting: "delegatingFormValueModel"})
10
- * valueModel: FormValueModel<string> | MutableValueModel<string>;
11
- *
12
- * This approach allows the input to accept plain or form models but all backed by a form
13
- * friendly delegate. We have to use an existing delegate for union types as pectin just
14
- * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
15
- */
16
- readonly delegatingFormValueModel: DelegatingFormValueModel<T>;
12
+ protected get inputModel(): InputModel<T>;
17
13
  label: string;
18
14
  floatLabel: 'auto' | 'always' | 'never';
19
15
  hint: string;
@@ -42,4 +38,6 @@ export declare class AbstractInputComponent<T> extends DisposableComponent imple
42
38
  hasErrors(): boolean;
43
39
  get errorList(): ListModel<string>;
44
40
  get firstError(): string;
41
+ get focusContext(): FocusManager.Context;
45
42
  }
43
+ export {};
@@ -0,0 +1,16 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { DelegatingFormListModel } from '@coolon/pectin';
3
+ import { AbstractInputComponent } from './abstract-input.component';
4
+ export declare class AbstractListInputComponent<T> extends AbstractInputComponent<T[]> implements OnInit {
5
+ /**
6
+ * A backing model for all our @Input() valueModel properties which should be defined as follows.
7
+ *
8
+ * @Input() @TrackExternal({useExisting: "inputModel"})
9
+ * valueModel: FormListModel<string> | IMutableListModel<string>;
10
+ *
11
+ * This approach allows the input to accept plain or form models but all backed by a form
12
+ * friendly delegate. We have to use an existing delegate for union types as pectin just
13
+ * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
14
+ */
15
+ readonly inputModel: DelegatingFormListModel<T>;
16
+ }
@@ -0,0 +1,16 @@
1
+ import { OnInit } from '@angular/core';
2
+ import { DelegatingFormValueModel } from '@coolon/pectin';
3
+ import { AbstractInputComponent } from './abstract-input.component';
4
+ export declare class AbstractValueInputComponent<T> extends AbstractInputComponent<T> implements OnInit {
5
+ /**
6
+ * A backing model for all our @Input() valueModel properties which should be defined as follows.
7
+ *
8
+ * @Input() @TrackExternal({useExisting: "inputModel"})
9
+ * valueModel: FormValueModel<string> | IMutableValueModel<string>;
10
+ *
11
+ * This approach allows the input to accept plain or form models but all backed by a form
12
+ * friendly delegate. We have to use an existing delegate for union types as pectin just
13
+ * gets told it's an Object and can't scan for a base type annotated with @DelegateUsing(..).
14
+ */
15
+ readonly inputModel: DelegatingFormValueModel<T>;
16
+ }
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { FormValueModel, MutableValueModel } from '@coolon/pectin';
3
- import { AbstractInputComponent } from '../abstract-input.component';
4
- export declare class CheckboxInputComponent extends AbstractInputComponent<boolean> implements OnInit {
5
- valueModel: FormValueModel<boolean> | MutableValueModel<boolean>;
2
+ import { FormValueModel, IMutableValueModel } from '@coolon/pectin';
3
+ import { AbstractValueInputComponent } from '../abstract-value-input.component';
4
+ export declare class CheckboxInputComponent extends AbstractValueInputComponent<boolean> implements OnInit {
5
+ valueModel: FormValueModel<boolean> | IMutableValueModel<boolean>;
6
6
  color: 'primary' | 'warn' | 'accent';
7
7
  labelPosition: 'before' | 'after';
8
8
  constructor();
@@ -0,0 +1,15 @@
1
+ import { OnInit, TemplateRef } from '@angular/core';
2
+ import { FormListModel, IMutableListModel, ListModel } from '@coolon/pectin';
3
+ import { AbstractListInputComponent } from '../abstract-list-input.component';
4
+ export declare class MultipleSelectInputComponent<T = any> extends AbstractListInputComponent<T> implements OnInit {
5
+ listModel: FormListModel<T> | IMutableListModel<T>;
6
+ optionsModel: ListModel<T>;
7
+ options: T[];
8
+ optionLabel: keyof T;
9
+ allowNil: boolean;
10
+ optionTemplateRef: TemplateRef<any>;
11
+ nilOptionTemplateRef: TemplateRef<any>;
12
+ optionLabelFormat: (option: T) => any;
13
+ constructor();
14
+ ngOnInit(): void;
15
+ }
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { FormValueModel, MutableValueModel } from '@coolon/pectin';
3
- import { AbstractInputComponent } from '../abstract-input.component';
4
- export declare class NumberInputComponent extends AbstractInputComponent<number> implements OnInit {
5
- valueModel: FormValueModel<number> | MutableValueModel<number>;
2
+ import { FormValueModel, IMutableValueModel } from '@coolon/pectin';
3
+ import { AbstractValueInputComponent } from '../abstract-value-input.component';
4
+ export declare class NumberInputComponent extends AbstractValueInputComponent<number> implements OnInit {
5
+ valueModel: FormValueModel<number> | IMutableValueModel<number>;
6
6
  min: number;
7
7
  max: number;
8
8
  constructor();
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { FormValueModel, MutableValueModel } from '@coolon/pectin';
3
- import { AbstractInputComponent } from '../abstract-input.component';
4
- export declare class PasswordInputComponent extends AbstractInputComponent<string> implements OnInit {
5
- valueModel: FormValueModel<string> | MutableValueModel<string>;
2
+ import { FormValueModel, IMutableValueModel } from '@coolon/pectin';
3
+ import { AbstractValueInputComponent } from '../abstract-value-input.component';
4
+ export declare class PasswordInputComponent extends AbstractValueInputComponent<string> implements OnInit {
5
+ valueModel: FormValueModel<string> | IMutableValueModel<string>;
6
6
  constructor();
7
7
  ngOnInit(): void;
8
8
  }
@@ -1,8 +1,8 @@
1
1
  import { OnInit, TemplateRef } from '@angular/core';
2
- import { FormValueModel, ListModel, MutableValueModel } from '@coolon/pectin';
3
- import { AbstractInputComponent } from '../abstract-input.component';
4
- export declare class SelectInputComponent<T = any> extends AbstractInputComponent<T> implements OnInit {
5
- valueModel: FormValueModel<T> | MutableValueModel<T>;
2
+ import { FormValueModel, IMutableValueModel, ListModel } from '@coolon/pectin';
3
+ import { AbstractValueInputComponent } from '../abstract-value-input.component';
4
+ export declare class SelectInputComponent<T = any> extends AbstractValueInputComponent<T> implements OnInit {
5
+ valueModel: FormValueModel<T> | IMutableValueModel<T>;
6
6
  optionsModel: ListModel<T>;
7
7
  options: T[];
8
8
  optionLabel: keyof T;
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { Command, FormValueModel, MutableValueModel, ValueModel } from '@coolon/pectin';
3
- import { AbstractInputComponent } from '../abstract-input.component';
4
- export declare class StringInputComponent extends AbstractInputComponent<string> implements OnInit {
5
- valueModel: FormValueModel<string> | MutableValueModel<string>;
2
+ import { Command, FormValueModel, IMutableValueModel, ValueModel } from '@coolon/pectin';
3
+ import { AbstractValueInputComponent } from '../abstract-value-input.component';
4
+ export declare class StringInputComponent extends AbstractValueInputComponent<string> implements OnInit {
5
+ valueModel: FormValueModel<string> | IMutableValueModel<string>;
6
6
  enableClearModel: ValueModel<boolean>;
7
7
  enableClear: boolean;
8
8
  readonly clearCommand: Command<void>;
@@ -1,8 +1,8 @@
1
1
  import { OnInit } from '@angular/core';
2
- import { FormValueModel, MutableValueModel } from '@coolon/pectin';
3
- import { AbstractInputComponent } from '../abstract-input.component';
4
- export declare class TextInputComponent extends AbstractInputComponent<string> implements OnInit {
5
- valueModel: FormValueModel<string> | MutableValueModel<string>;
2
+ import { FormValueModel, IMutableValueModel } from '@coolon/pectin';
3
+ import { AbstractValueInputComponent } from '../abstract-value-input.component';
4
+ export declare class TextInputComponent extends AbstractValueInputComponent<string> implements OnInit {
5
+ valueModel: FormValueModel<string> | IMutableValueModel<string>;
6
6
  rows: number;
7
7
  cols: number;
8
8
  constructor();
@@ -9,7 +9,10 @@ export * from "./card-container/card-container.component";
9
9
  export * from "./focus-container/focus-container.component";
10
10
  export * from "./forms/abstract-input-activity";
11
11
  export * from "./forms/abstract-input.component";
12
+ export * from "./forms/abstract-list-input.component";
13
+ export * from "./forms/abstract-value-input.component";
12
14
  export * from "./forms/checkbox-input/checkbox-input.component";
15
+ export * from "./forms/multiple-select-input/multiple-select-input.component";
13
16
  export * from "./forms/number-input/number-input.component";
14
17
  export * from "./forms/password-input/password-input.component";
15
18
  export * from "./forms/select-input/select-input.component";
@@ -19,7 +22,7 @@ export * from "./forms/text-input/text-input.component";
19
22
  export * from "./noop/noop.component";
20
23
  export * from "./scroll-container/scroll-container.component";
21
24
  export * from "./switch-case/switch-case.component";
22
- export * from "./table/cell-editor.component";
25
+ export * from "./table/cell-editors";
23
26
  export * from "./table/cell-renderer";
24
27
  export * from "./table/column-model";
25
28
  export * from "./table/column-text-properties";
@@ -0,0 +1,9 @@
1
+ import { FormListModel, FormValueModel, ListModel, ValueModel } from '@coolon/pectin';
2
+ export interface CellEditorComponent<T> {
3
+ valueModel: ValueModel<T> | FormValueModel<T>;
4
+ requestFocus?(): any;
5
+ }
6
+ export interface CellListEditorComponent<T> {
7
+ listModel: ListModel<T> | FormListModel<T>;
8
+ requestFocus?(): any;
9
+ }
@@ -1,53 +1,95 @@
1
1
  import { ComponentType } from '@angular/cdk/overlay';
2
- import { Portal } from '@angular/cdk/portal';
2
+ import { TemplateRef, ViewContainerRef } from '@angular/core';
3
3
  import { Command, Form, SelectionModel, Types, UnaryCommand, Validator } from '@coolon/pectin';
4
- import { AbstractInputComponent } from '../forms/abstract-input.component';
5
- import { CellEditorComponent } from './cell-editor.component';
4
+ import { CellEditorComponent, CellListEditorComponent } from './cell-editors';
6
5
  import { ColumnTextProperties } from './column-text-properties';
7
6
  import { EditSession } from './edit-session';
8
- export interface ColumnHeaderConfig<Row, C extends any> {
9
- portal: Portal<C>;
10
- initialiseComponent?: (component: C, column: ColumnModel<Row>) => void;
7
+ import { TableCellRendererComponent } from './table-cell-renderer/table-cell-renderer.component';
8
+ import { TableHeaderCellRendererComponent } from './table-header-cell-renderer/table-header-cell-renderer.component';
9
+ export declare const HEADER_CELL_RENDERER_PORTAL: unique symbol;
10
+ export declare const CELL_RENDERER_PORTAL: unique symbol;
11
+ export declare const CELL_EDITOR_PORTAL: unique symbol;
12
+ export declare const PORTAL_RENDERER_COMPONENT: unique symbol;
13
+ export declare const PORTAL_EDITOR_COMPONENT: unique symbol;
14
+ export interface RowData<Row> {
15
+ row: Row;
16
+ editSession?: EditSession<Row>;
17
+ editRowCommand: Command<void>;
11
18
  }
12
- export interface CellRendererConfig<Row, C extends any> {
13
- portal: Portal<C>;
14
- pushState?: (component: C, row: Row, editRowCommand: Command<void>, editSession: EditSession<Row>) => void;
19
+ export declare abstract class CellPortalRef<Row, Host, Portal> {
20
+ constructor();
21
+ abstract initialiseHost(host: Host, columnModel: ColumnModel<Row>): any;
22
+ abstract onPortalAttached(host: Host, portalComponent: Portal): any;
15
23
  }
16
- export interface CellEditorConfig<Row, V, C extends AbstractInputComponent<V>> {
17
- portal: Portal<C>;
18
- initialiseComponent?: (component: C, editSession: EditSession<Row>) => void;
24
+ export declare class CellHeaderPortalRef<Row, C> extends CellPortalRef<Row, TableHeaderCellRendererComponent, C> {
25
+ readonly componentType: ComponentType<C>;
26
+ readonly initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void;
27
+ constructor(componentType: ComponentType<C>, initialiseHeader: (component: C, columnModel: ColumnModel<Row>) => void);
28
+ initialiseHost(host: TableHeaderCellRendererComponent, columnModel: ColumnModel<Row>): void;
29
+ onPortalAttached(host: TableHeaderCellRendererComponent, portalComponent: C): void;
30
+ }
31
+ export declare abstract class CellRendererPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellRendererComponent<Row>, Portal> {
32
+ abstract pushState(host: TableCellRendererComponent<Row>): void;
33
+ }
34
+ export declare class ComponentCellRendererPortalRef<Row, Portal> extends CellRendererPortalRef<Row, Portal> {
35
+ readonly componentType: ComponentType<Portal>;
36
+ readonly updateComponent: (component: Portal, rowData: RowData<Row>) => void;
37
+ constructor(componentType: ComponentType<Portal>, updateComponent: (component: Portal, rowData: RowData<Row>) => void);
38
+ initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>): void;
39
+ onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: Portal): void;
40
+ pushState(host: TableCellRendererComponent<Row>): void;
41
+ }
42
+ export declare class CellEditorPortalRef<Row, Portal> extends CellPortalRef<Row, TableCellRendererComponent<Row>, Portal> {
43
+ readonly componentType: ComponentType<Portal>;
44
+ readonly initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void;
45
+ constructor(componentType: ComponentType<Portal>, initialiseEditorSession: (component: Portal, editSession: EditSession<Row>) => void);
46
+ initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>): void;
47
+ onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: Portal): void;
48
+ }
49
+ export declare class TemplateCellRendererPortalRef<Row> extends CellRendererPortalRef<Row, undefined> {
50
+ private templateRef;
51
+ private viewContainer;
52
+ private fillCell;
53
+ private padChild;
54
+ constructor();
55
+ registerPortal(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean): void;
56
+ initialiseHost(host: TableCellRendererComponent<Row>, columnModel: ColumnModel<Row>): void;
57
+ onPortalAttached(host: TableCellRendererComponent<Row>, portalComponent: undefined): void;
58
+ pushState(host: TableCellRendererComponent<Row>): void;
59
+ private createPortal;
19
60
  }
20
61
  export declare class ColumnModel<Row> {
21
62
  readonly columnId: string;
22
63
  private defaults;
23
64
  private _columnTextProperties;
24
- private _columnHeaderConfig;
25
- private _cellRendererConfig;
26
- private _cellEditorConfig;
65
+ private _columnHeaderPortalRef;
66
+ private _cellRendererPortalRef;
67
+ private _cellEditorPortalRef;
27
68
  constructor(columnId: string, defaults: ColumnModel.Defaults);
28
69
  getHeaderText(): string;
29
70
  protected getDefaultHeaderText(): string;
30
71
  getColumnTextProperties(): ColumnTextProperties;
31
72
  textProperties(columnTextProperties: ColumnTextProperties): this;
32
- protected setCellRenderer<C>(cellRenderer: ComponentType<C>, initialiser: (component: C, row: Row, editRowCommand: Command<void>, editSession: EditSession<Row>) => void): void;
33
- cellHeaderRenderer<C>(cellRenderer: ComponentType<C>, initialiser: (component: C, column: ColumnModel<Row>) => void): this;
34
- protected setCellEditor<E extends AbstractInputComponent<any>>(cellEditor: CellEditorConfig<any, any, any>): void;
35
- get cellRendererPortal(): Portal<any>;
36
- get columnHeaderCellRendererPortal(): Portal<any>;
37
- get cellEditorPortal(): Portal<any>;
38
- hasEditor(): boolean;
39
- updateCellRenderer(component: any, row: Row, editRowCommand: Command<void>, editSession: EditSession<Row>): void;
40
- initialiseHeader(component: any): void;
41
- initialiseEditor(component: any, editSession: EditSession<Row>): void;
73
+ protected configureHeaderRenderer<C>(config: CellPortalRef<Row, any, any>): void;
74
+ protected configureCellRenderer<C>(config: CellRendererPortalRef<Row, any>): void;
75
+ protected configureCellEditor<E>(cellEditor: CellEditorPortalRef<Row, E>): void;
76
+ cellHeaderRenderer<C>(componentType: ComponentType<C>, initialiser: (component: C, column: ColumnModel<Row>) => void): this;
77
+ hasEditorPortal(): boolean;
78
+ attachHeaderCell(host: any): void;
79
+ attachCell(host: any): void;
80
+ onHeaderAttached(host: TableHeaderCellRendererComponent, component: any): void;
81
+ onRendererAttached(host: TableCellRendererComponent<Row>, component: any): void;
82
+ onEditorAttached(host: TableCellRendererComponent<Row>, component: any): void;
83
+ updatePortalContent(host: TableCellRendererComponent<Row>): void;
42
84
  }
43
85
  export declare namespace ColumnModel {
44
86
  interface Defaults {
45
87
  getColumnTextProperties(columnModel: ColumnModel<any>): ColumnTextProperties;
46
88
  }
47
89
  }
48
- export interface CellEditorOptions<V, E extends CellEditorComponent<V>> {
90
+ export interface CellEditorOptions<V, C> {
49
91
  validators?: Validator<V>[];
50
- initialiseComponent?(component: E): any;
92
+ initialiseComponent?(component: C): any;
51
93
  }
52
94
  export declare class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<Row>> extends ColumnModel<Row> {
53
95
  readonly property: P;
@@ -56,9 +98,21 @@ export declare class PropertyColumnModel<Row, P extends Types.ValuePropertiesOf<
56
98
  cellRenderer(componentType: ComponentType<{
57
99
  value: Row[P];
58
100
  }>): this;
59
- cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, options?: CellEditorOptions<Row[P], E>): this;
101
+ cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, validators?: Validator<Row[P]>[], initialiseComponent?: (component: E) => void): this;
102
+ cellEditor<E extends CellEditorComponent<Row[P]>>(editor: ComponentType<E>, initialiseComponent?: (component: E) => void): this;
60
103
  format(formatter: (value: Row[P]) => any): this;
61
104
  }
105
+ export declare class ListPropertyColumnModel<Row, P extends Types.ArrayPropertiesOf<Row>> extends ColumnModel<Row> {
106
+ readonly property: P;
107
+ private _format;
108
+ constructor(property: P, defaults: ColumnModel.Defaults);
109
+ cellRenderer(componentType: ComponentType<{
110
+ value: Types.ArrayElementType<Row, P>[];
111
+ }>): this;
112
+ cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, validators?: Validator<Types.ArrayElementType<Row, P>[]>[], initialiseComponent?: (component: C) => void): this;
113
+ cellEditor<C extends CellListEditorComponent<Types.ArrayElementType<Row, P>>>(editor: ComponentType<C>, initialiseComponent?: (component: C) => void): this;
114
+ format(formatter: (value: Types.ArrayElementType<Row, P>[]) => any): this;
115
+ }
62
116
  export declare class CustomValueColumnModel<Row, V> extends ColumnModel<Row> {
63
117
  private getValue;
64
118
  constructor(columnId: string, defaults: ColumnModel.Defaults, getValue: (row: Row) => V);
@@ -76,11 +130,9 @@ export declare class EditorControlColumnModel<Row> extends ColumnModel<Row> {
76
130
  protected getDefaultHeaderText(): string;
77
131
  }
78
132
  export declare class CustomTemplateColumnModel<Row> extends ColumnModel<Row> {
79
- constructor(columnId: string, defaults: ColumnModel.Defaults, component: ComponentType<{
80
- editCommand: Command<void>;
81
- saveCommand: Command<void>;
82
- cancelCommand: Command<void>;
83
- }>);
133
+ private readonly config;
134
+ constructor(columnId: string, defaults: ColumnModel.Defaults);
135
+ setTemplate(templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean): void;
84
136
  }
85
137
  export declare class SelectionColumnModel<Row> extends ColumnModel<Row> {
86
138
  constructor(columnId: string, defaults: ColumnModel.Defaults, selectionModel: SelectionModel<Row>);
@@ -1,7 +1,13 @@
1
- import { TemplateRef, ViewContainerRef } from '@angular/core';
1
+ import { OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import { TableComponent } from '../table.component';
3
- export declare class ColumnTemplateDirective {
3
+ export declare class ColumnTemplateDirective implements OnInit {
4
+ readonly host: TableComponent<any>;
4
5
  private templateRef;
5
6
  private viewContainer;
7
+ aupColumnTemplate: string;
8
+ aupColumnTemplateColumnId: string;
9
+ aupColumnTemplateFillCell: boolean;
10
+ aupColumnTemplateAutoPadChild: any;
6
11
  constructor(host: TableComponent<any>, templateRef: TemplateRef<any>, viewContainer: ViewContainerRef);
12
+ ngOnInit(): void;
7
13
  }
@@ -1,9 +1,9 @@
1
1
  import { Form, GarbageCollector, UnaryCommand } from '@coolon/pectin';
2
2
  export declare class EditSession<Row> extends GarbageCollector {
3
3
  readonly rowId: any;
4
- readonly saveCommand: UnaryCommand<Form<Row>, boolean>;
5
4
  readonly form: Form<Row>;
6
- private _editorValue;
7
- readonly rowValueModel: import("@coolon/pectin").ValueModel<Row>;
8
- constructor(rowId: any, row: Row, saveCommand: UnaryCommand<Form<Row>, boolean>);
5
+ readonly saveCommand: UnaryCommand<Form<Row>, boolean>;
6
+ private _liveRowValue;
7
+ readonly liveRowValue: import("@coolon/pectin").ValueModel<Row>;
8
+ constructor(rowId: any, row: Row, form: Form<Row>, saveCommand: UnaryCommand<Form<Row>, boolean>);
9
9
  }
@@ -1,10 +1,8 @@
1
1
  import { Command, SelectionModel } from '@coolon/pectin';
2
2
  import { DisposableComponent } from '../../disposable-component';
3
3
  export declare class SelectCellRendererComponent<Row> extends DisposableComponent {
4
- private _row;
5
4
  readonly selectCommand: Command<void>;
6
- set row(value: Row);
7
- get row(): Row;
5
+ row: Row;
8
6
  selectionModel: SelectionModel<Row>;
9
7
  constructor();
10
8
  isSelected(): boolean;
@@ -1,19 +1,26 @@
1
- import { OnChanges, SimpleChanges } from '@angular/core';
2
- import { ColumnModel } from '../column-model';
1
+ import { Portal } from '@angular/cdk/portal';
2
+ import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
3
+ import { CELL_EDITOR_PORTAL, CELL_RENDERER_PORTAL, ColumnModel, RowData } from '../column-model';
3
4
  import { EditSession } from '../edit-session';
4
5
  import { TableModel } from '../table-model';
5
- export declare class TableCellRendererComponent<Row> implements OnChanges {
6
+ export declare class TableCellRendererComponent<Row> implements OnInit, OnChanges {
6
7
  row: Row;
7
8
  column: ColumnModel<Row>;
8
9
  editSession: EditSession<Row>;
9
10
  tableModel: TableModel<Row>;
10
- private renderer;
11
- private editor;
12
11
  private editRowCommand;
12
+ [CELL_RENDERER_PORTAL]: Portal<any>;
13
+ [CELL_EDITOR_PORTAL]: Portal<any>;
13
14
  defaultClassNames: string;
15
+ fillCell: boolean;
16
+ padChild: boolean;
14
17
  constructor();
18
+ ngOnInit(): void;
19
+ hasActiveEditor(): boolean;
15
20
  initialiseRenderer(instance: any): void;
16
21
  initialiseEditor(instance: any): void;
17
22
  ngOnChanges(changes: SimpleChanges): void;
18
- hasActiveEditor(): boolean;
23
+ getRendererPortal(): Portal<any>;
24
+ getEditorPortal(): Portal<any>;
25
+ getRowData(): RowData<Row>;
19
26
  }
@@ -1,8 +1,12 @@
1
- import { ColumnModel } from '../column-model';
2
- export declare class TableHeaderCellRendererComponent<Row> {
3
- column: ColumnModel<Row>;
4
- private renderer;
1
+ import { Portal } from '@angular/cdk/portal';
2
+ import { OnInit } from '@angular/core';
3
+ import { ColumnModel, HEADER_CELL_RENDERER_PORTAL } from '../column-model';
4
+ export declare class TableHeaderCellRendererComponent implements OnInit {
5
+ column: ColumnModel<any>;
5
6
  defaultClassNames: string;
7
+ [HEADER_CELL_RENDERER_PORTAL]: Portal<any>;
6
8
  constructor();
9
+ ngOnInit(): void;
7
10
  initialiseHeader(instance: any): void;
11
+ getPortal(): Portal<any>;
8
12
  }
@@ -1,5 +1,5 @@
1
1
  import { BooleanValueModelChain, CanIdentify, Form, ListModel, ListModelChain, SelectionModel, Types, UnaryCommand } from '@coolon/pectin';
2
- import { ColumnModel, CustomValueColumnModel, EditorControlColumnModel, PropertyColumnModel, SelectionColumnModel } from './column-model';
2
+ import { ColumnModel, CustomTemplateColumnModel, CustomValueColumnModel, EditorControlColumnModel, ListPropertyColumnModel, PropertyColumnModel, SelectionColumnModel } from './column-model';
3
3
  import { ColumnTextProperties } from './column-text-properties';
4
4
  import { EditSession } from './edit-session';
5
5
  /**
@@ -86,14 +86,18 @@ export declare class TableModel<Row> {
86
86
  readonly editing: BooleanValueModelChain;
87
87
  readonly dataSource: ListModelChain<Row>;
88
88
  static fromList<Row>(sourceOfTruth: ListModel<Row>, builder?: (tableModel: TableModel<Row>) => void): TableModel<Row>;
89
+ private _createForm;
89
90
  protected constructor(sourceOfTruth: ListModel<Row>);
90
91
  get rowsBeingEdited(): ListModel<Row>;
91
92
  getTrackByFunction(): (index: number, item: Row) => any;
92
93
  get columns(): ListModel<ColumnModel<Row>>;
93
94
  pluck<P extends Types.ValuePropertiesOf<Row>>(property: P): PropertyColumnModel<Row, P>;
95
+ pluckList<P extends Types.ArrayPropertiesOf<Row>>(property: P): ListPropertyColumnModel<Row, P>;
94
96
  addSelectionColumn(selectionModel: SelectionModel<Row>): SelectionColumnModel<Row>;
95
97
  addEditControls(saveCommand: UnaryCommand<Form<Row>, boolean>): EditorControlColumnModel<Row>;
96
98
  addCustomColumn<V>(columnId: string, dataAccessor: (row: Row) => V): CustomValueColumnModel<Row, V>;
99
+ addTemplateColumn<V>(columnId: string): CustomTemplateColumnModel<Row>;
100
+ useFormFactory(factory: (row: Row) => Form<Row>): this;
97
101
  protected addColumn<C extends ColumnModel<Row>>(column: C): C;
98
102
  columnTextProperties(columnTextProperties: {
99
103
  [columnName: string]: () => ColumnTextProperties;
@@ -1,4 +1,4 @@
1
- import { OnInit } from '@angular/core';
1
+ import { OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
2
2
  import { ListModelChain } from '@coolon/pectin';
3
3
  import { DisposableComponent } from '../disposable-component';
4
4
  import { ColumnModel } from './column-model';
@@ -34,7 +34,9 @@ export declare class TableComponent<T> extends DisposableComponent implements On
34
34
  tableModel: TableModel<T>;
35
35
  columns: ListModelChain<ColumnModel<T>>;
36
36
  columnIds: ListModelChain<string>;
37
+ private columnsById;
37
38
  constructor();
38
39
  ngOnInit(): void;
39
40
  isEditing(row: T): boolean;
41
+ registerColumnTemplate(columnId: string, templateRef: TemplateRef<any>, viewContainer: ViewContainerRef, fillCell: boolean, padChild: boolean): void;
40
42
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@coolon/angular-ui-powerups",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "schematics": "./schematics/collection.json",
5
5
  "dependencies": {
6
6
  "ts-morph": "^7.0.3",
@@ -1 +0,0 @@
1
- //# sourceMappingURL=cell-editor.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cell-editor.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/cell-editor.component.ts"],"names":[],"mappings":"","sourcesContent":["import { FormValueModel, ValueModel } from '@coolon/pectin';\n\nexport interface CellEditorComponent<T> {\n valueModel: ValueModel<T> | FormValueModel<T>\n requestFocus?();\n}\n"]}
@@ -1 +0,0 @@
1
- [{"__symbolic":"module","version":4,"metadata":{"CellEditorComponent":{"__symbolic":"interface"}}}]
@@ -1 +0,0 @@
1
- //# sourceMappingURL=cell-editor.component.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cell-editor.component.js","sourceRoot":"ng://@coolon/angular-ui-powerups/","sources":["lib/components/table/cell-editor.component.ts"],"names":[],"mappings":"","sourcesContent":["import { FormValueModel, ValueModel } from '@coolon/pectin';\n\nexport interface CellEditorComponent<T> {\n valueModel: ValueModel<T> | FormValueModel<T>\n requestFocus?();\n}\n"]}
@@ -1,5 +0,0 @@
1
- import { FormValueModel, ValueModel } from '@coolon/pectin';
2
- export interface CellEditorComponent<T> {
3
- valueModel: ValueModel<T> | FormValueModel<T>;
4
- requestFocus?(): any;
5
- }