@firestitch/list 13.0.4 → 13.0.6

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 (193) hide show
  1. package/app/classes/actions-controller.d.ts +20 -20
  2. package/app/classes/columns-controller.d.ts +71 -71
  3. package/app/classes/data-controller.d.ts +91 -91
  4. package/app/classes/external-params-controller.d.ts +32 -32
  5. package/app/classes/index.d.ts +2 -2
  6. package/app/classes/list-controller.d.ts +191 -191
  7. package/app/classes/pagination-controller.d.ts +198 -198
  8. package/app/classes/persistance-controller.d.ts +10 -10
  9. package/app/classes/reorder-controller.d.ts +68 -68
  10. package/app/classes/selection-controller.d.ts +155 -155
  11. package/app/classes/sorting-controller.d.ts +65 -65
  12. package/app/components/body/body.component.d.ts +28 -28
  13. package/app/components/body/row/actions/actions.component.d.ts +36 -36
  14. package/app/components/body/row/cell/cell.component.d.ts +22 -22
  15. package/app/components/body/row/inline-action/inline-action.component.d.ts +13 -13
  16. package/app/components/body/row/menu-action/menu-action.component.d.ts +20 -20
  17. package/app/components/body/row/row.component.d.ts +85 -85
  18. package/app/components/customize-cols/customize-cols.component.d.ts +17 -17
  19. package/app/components/footer/footer-row/footer-cell/footer-cell.component.d.ts +7 -7
  20. package/app/components/footer/footer-row/footer-row.component.d.ts +14 -14
  21. package/app/components/footer/footer.component.d.ts +15 -15
  22. package/app/components/head/head-cell/head-cell.component.d.ts +14 -14
  23. package/app/components/head/head.component.d.ts +49 -49
  24. package/app/components/list/list.component.d.ts +128 -128
  25. package/app/components/loader/loader.component.d.ts +14 -14
  26. package/app/components/manage-saved-filters/manage-saved-filters.component.d.ts +13 -13
  27. package/app/components/pagination/pagination.component.d.ts +14 -14
  28. package/app/components/saved-filters/saved-filters.component.d.ts +15 -15
  29. package/app/components/status/status.component.d.ts +21 -21
  30. package/app/directives/cell/cell.directive.d.ts +8 -8
  31. package/app/directives/column/column.directive.d.ts +37 -33
  32. package/app/directives/content/content.directive.d.ts +5 -5
  33. package/app/directives/content-init/content-init.directive.d.ts +9 -9
  34. package/app/directives/draggable-list/draggable-list.directive.d.ts +95 -95
  35. package/app/directives/draggable-row/draggable-row.directive.d.ts +23 -23
  36. package/app/directives/empty-state/empty-state.directive.d.ts +5 -5
  37. package/app/directives/footer/footer.directive.d.ts +8 -8
  38. package/app/directives/group-expand-trigger/group-expand-trigger.directive.d.ts +10 -10
  39. package/app/directives/group-footer/group-footer.directive.d.ts +6 -6
  40. package/app/directives/group-header/group-header.directive.d.ts +6 -6
  41. package/app/directives/header/header.directive.d.ts +8 -8
  42. package/app/directives/heading/heading.directive.d.ts +5 -5
  43. package/app/directives/heading-container/heading-container.directive.d.ts +5 -5
  44. package/app/directives/index.d.ts +3 -3
  45. package/app/directives/subheading/subheading.directive.d.ts +5 -5
  46. package/app/enums/button-type.enum.d.ts +7 -7
  47. package/app/enums/page-change-type.enum.d.ts +4 -4
  48. package/app/enums/pagination-strategy.enum.d.ts +5 -5
  49. package/app/enums/row-type.enum.d.ts +6 -6
  50. package/app/enums/state.enum.d.ts +9 -9
  51. package/app/fs-list.module.d.ts +60 -60
  52. package/app/fs-list.providers.d.ts +3 -3
  53. package/app/interfaces/cellconfig.interface.d.ts +5 -5
  54. package/app/interfaces/column-config.interface.d.ts +2 -2
  55. package/app/interfaces/draggable-list.interface.d.ts +7 -7
  56. package/app/interfaces/external-params.interface.d.ts +13 -13
  57. package/app/interfaces/index.d.ts +4 -4
  58. package/app/interfaces/listconfig.interface.d.ts +247 -247
  59. package/app/interfaces/pagination-state.interface.d.ts +9 -9
  60. package/app/interfaces/pagination.interface.d.ts +13 -13
  61. package/app/interfaces/sorting-change-event.interface.d.ts +4 -4
  62. package/app/models/column-async-attribute.d.ts +5 -5
  63. package/app/models/column-attributes.d.ts +39 -39
  64. package/app/models/column.model.d.ts +61 -60
  65. package/app/models/row/base-row.d.ts +13 -13
  66. package/app/models/row/child-row.d.ts +12 -12
  67. package/app/models/row/group-footer-row.d.ts +10 -10
  68. package/app/models/row/group-row.d.ts +16 -16
  69. package/app/models/row/simple-row.d.ts +5 -5
  70. package/app/models/row-action.model.d.ts +29 -29
  71. package/app/models/row.d.ts +34 -34
  72. package/app/models/styleConfig.model.d.ts +31 -31
  73. package/app/pipes/action-label.d.ts +8 -8
  74. package/app/pipes/index.d.ts +1 -1
  75. package/app/services/group-expand-notifier.service.d.ts +11 -11
  76. package/{esm2015/app/classes/actions-controller.js → esm2020/app/classes/actions-controller.mjs} +55 -55
  77. package/{esm2015/app/classes/columns-controller.js → esm2020/app/classes/columns-controller.mjs} +205 -205
  78. package/esm2020/app/classes/data-controller.mjs +367 -0
  79. package/esm2020/app/classes/external-params-controller.mjs +147 -0
  80. package/{esm2015/app/classes/index.js → esm2020/app/classes/index.mjs} +3 -3
  81. package/esm2020/app/classes/list-controller.mjs +752 -0
  82. package/{esm2015/app/classes/pagination-controller.js → esm2020/app/classes/pagination-controller.mjs} +478 -479
  83. package/{esm2015/app/classes/persistance-controller.js → esm2020/app/classes/persistance-controller.mjs} +19 -19
  84. package/esm2020/app/classes/reorder-controller.mjs +182 -0
  85. package/esm2020/app/classes/selection-controller.mjs +468 -0
  86. package/{esm2015/app/classes/sorting-controller.js → esm2020/app/classes/sorting-controller.mjs} +183 -183
  87. package/esm2020/app/components/body/body.component.mjs +64 -0
  88. package/esm2020/app/components/body/row/actions/actions.component.mjs +97 -0
  89. package/esm2020/app/components/body/row/cell/cell.component.mjs +107 -0
  90. package/esm2020/app/components/body/row/inline-action/inline-action.component.mjs +33 -0
  91. package/esm2020/app/components/body/row/menu-action/menu-action.component.mjs +46 -0
  92. package/esm2020/app/components/body/row/row.component.mjs +323 -0
  93. package/esm2020/app/components/customize-cols/customize-cols.component.mjs +68 -0
  94. package/esm2020/app/components/footer/footer-row/footer-cell/footer-cell.component.mjs +16 -0
  95. package/esm2020/app/components/footer/footer-row/footer-row.component.mjs +28 -0
  96. package/esm2020/app/components/footer/footer.component.mjs +31 -0
  97. package/esm2020/app/components/head/head-cell/head-cell.component.mjs +29 -0
  98. package/esm2020/app/components/head/head.component.mjs +103 -0
  99. package/esm2020/app/components/list/list.component.mjs +391 -0
  100. package/esm2020/app/components/loader/loader.component.mjs +40 -0
  101. package/esm2020/app/components/manage-saved-filters/manage-saved-filters.component.mjs +76 -0
  102. package/esm2020/app/components/pagination/pagination.component.mjs +37 -0
  103. package/esm2020/app/components/saved-filters/saved-filters.component.mjs +29 -0
  104. package/esm2020/app/components/status/status.component.mjs +66 -0
  105. package/{esm2015/app/directives/cell/cell.directive.js → esm2020/app/directives/cell/cell.directive.mjs} +18 -18
  106. package/esm2020/app/directives/column/column.directive.mjs +121 -0
  107. package/{esm2015/app/directives/content/content.directive.js → esm2020/app/directives/content/content.directive.mjs} +13 -13
  108. package/{esm2015/app/directives/content-init/content-init.directive.js → esm2020/app/directives/content-init/content-init.directive.mjs} +22 -22
  109. package/esm2020/app/directives/draggable-list/draggable-list.directive.mjs +328 -0
  110. package/esm2020/app/directives/draggable-row/draggable-row.directive.mjs +78 -0
  111. package/{esm2015/app/directives/empty-state/empty-state.directive.js → esm2020/app/directives/empty-state/empty-state.directive.mjs} +13 -13
  112. package/{esm2015/app/directives/footer/footer.directive.js → esm2020/app/directives/footer/footer.directive.mjs} +18 -18
  113. package/{esm2015/app/directives/group-expand-trigger/group-expand-trigger.directive.js → esm2020/app/directives/group-expand-trigger/group-expand-trigger.directive.mjs} +26 -26
  114. package/{esm2015/app/directives/group-footer/group-footer.directive.js → esm2020/app/directives/group-footer/group-footer.directive.mjs} +14 -14
  115. package/{esm2015/app/directives/group-header/group-header.directive.js → esm2020/app/directives/group-header/group-header.directive.mjs} +14 -14
  116. package/{esm2015/app/directives/header/header.directive.js → esm2020/app/directives/header/header.directive.mjs} +18 -18
  117. package/{esm2015/app/directives/heading/heading.directive.js → esm2020/app/directives/heading/heading.directive.mjs} +13 -13
  118. package/{esm2015/app/directives/heading-container/heading-container.directive.js → esm2020/app/directives/heading-container/heading-container.directive.mjs} +13 -13
  119. package/{esm2015/app/directives/index.js → esm2020/app/directives/index.mjs} +4 -4
  120. package/{esm2015/app/directives/subheading/subheading.directive.js → esm2020/app/directives/subheading/subheading.directive.mjs} +13 -13
  121. package/{esm2015/app/enums/button-type.enum.js → esm2020/app/enums/button-type.enum.mjs} +9 -9
  122. package/{esm2015/app/enums/page-change-type.enum.js → esm2020/app/enums/page-change-type.enum.mjs} +6 -6
  123. package/{esm2015/app/enums/pagination-strategy.enum.js → esm2020/app/enums/pagination-strategy.enum.mjs} +7 -7
  124. package/{esm2015/app/enums/row-type.enum.js → esm2020/app/enums/row-type.enum.mjs} +7 -7
  125. package/{esm2015/app/enums/state.enum.js → esm2020/app/enums/state.enum.mjs} +11 -11
  126. package/{esm2015/app/fs-list.module.js → esm2020/app/fs-list.module.mjs} +246 -246
  127. package/{esm2015/app/fs-list.providers.js → esm2020/app/fs-list.providers.mjs} +4 -4
  128. package/{esm2015/app/interfaces/cellconfig.interface.js → esm2020/app/interfaces/cellconfig.interface.mjs} +2 -2
  129. package/{esm2015/app/interfaces/column-config.interface.js → esm2020/app/interfaces/column-config.interface.mjs} +1 -1
  130. package/{esm2015/app/interfaces/draggable-list.interface.js → esm2020/app/interfaces/draggable-list.interface.mjs} +2 -2
  131. package/esm2020/app/interfaces/external-params.interface.mjs +2 -0
  132. package/{esm2015/app/interfaces/index.js → esm2020/app/interfaces/index.mjs} +5 -5
  133. package/{esm2015/app/interfaces/listconfig.interface.js → esm2020/app/interfaces/listconfig.interface.mjs} +1 -1
  134. package/{esm2015/app/interfaces/pagination-state.interface.js → esm2020/app/interfaces/pagination-state.interface.mjs} +1 -1
  135. package/esm2020/app/interfaces/pagination.interface.mjs +2 -0
  136. package/{esm2015/app/interfaces/sorting-change-event.interface.js → esm2020/app/interfaces/sorting-change-event.interface.mjs} +2 -2
  137. package/{esm2015/app/models/column-async-attribute.js → esm2020/app/models/column-async-attribute.mjs} +13 -13
  138. package/esm2020/app/models/column-attributes.mjs +132 -0
  139. package/esm2020/app/models/column.model.mjs +164 -0
  140. package/{esm2015/app/models/row/base-row.js → esm2020/app/models/row/base-row.mjs} +23 -23
  141. package/{esm2015/app/models/row/child-row.js → esm2020/app/models/row/child-row.mjs} +28 -28
  142. package/{esm2015/app/models/row/group-footer-row.js → esm2020/app/models/row/group-footer-row.mjs} +20 -20
  143. package/{esm2015/app/models/row/group-row.js → esm2020/app/models/row/group-row.mjs} +44 -44
  144. package/{esm2015/app/models/row/simple-row.js → esm2020/app/models/row/simple-row.mjs} +10 -10
  145. package/esm2020/app/models/row-action.model.mjs +90 -0
  146. package/{esm2015/app/models/row.js → esm2020/app/models/row.mjs} +88 -88
  147. package/{esm2015/app/models/styleConfig.model.js → esm2020/app/models/styleConfig.model.mjs} +75 -75
  148. package/{esm2015/app/pipes/action-label.js → esm2020/app/pipes/action-label.mjs} +17 -17
  149. package/{esm2015/app/pipes/index.js → esm2020/app/pipes/index.mjs} +1 -1
  150. package/{esm2015/app/services/group-expand-notifier.service.js → esm2020/app/services/group-expand-notifier.service.mjs} +26 -26
  151. package/{esm2015/firestitch-list.js → esm2020/firestitch-list.mjs} +4 -4
  152. package/{esm2015/public_api.js → esm2020/public_api.mjs} +45 -45
  153. package/fesm2015/{firestitch-list.js → firestitch-list.mjs} +5739 -5805
  154. package/fesm2015/firestitch-list.mjs.map +1 -0
  155. package/fesm2020/firestitch-list.mjs +5871 -0
  156. package/fesm2020/firestitch-list.mjs.map +1 -0
  157. package/firestitch-list.d.ts +5 -5
  158. package/package.json +20 -7
  159. package/public_api.d.ts +41 -41
  160. package/bundles/firestitch-list.umd.js +0 -7222
  161. package/bundles/firestitch-list.umd.js.map +0 -1
  162. package/esm2015/app/classes/data-controller.js +0 -365
  163. package/esm2015/app/classes/external-params-controller.js +0 -147
  164. package/esm2015/app/classes/list-controller.js +0 -754
  165. package/esm2015/app/classes/reorder-controller.js +0 -183
  166. package/esm2015/app/classes/selection-controller.js +0 -468
  167. package/esm2015/app/components/body/body.component.js +0 -69
  168. package/esm2015/app/components/body/row/actions/actions.component.js +0 -102
  169. package/esm2015/app/components/body/row/cell/cell.component.js +0 -113
  170. package/esm2015/app/components/body/row/inline-action/inline-action.component.js +0 -37
  171. package/esm2015/app/components/body/row/menu-action/menu-action.component.js +0 -50
  172. package/esm2015/app/components/body/row/row.component.js +0 -330
  173. package/esm2015/app/components/customize-cols/customize-cols.component.js +0 -72
  174. package/esm2015/app/components/footer/footer-row/footer-cell/footer-cell.component.js +0 -20
  175. package/esm2015/app/components/footer/footer-row/footer-row.component.js +0 -33
  176. package/esm2015/app/components/footer/footer.component.js +0 -36
  177. package/esm2015/app/components/head/head-cell/head-cell.component.js +0 -34
  178. package/esm2015/app/components/head/head.component.js +0 -108
  179. package/esm2015/app/components/list/list.component.js +0 -397
  180. package/esm2015/app/components/loader/loader.component.js +0 -45
  181. package/esm2015/app/components/manage-saved-filters/manage-saved-filters.component.js +0 -79
  182. package/esm2015/app/components/pagination/pagination.component.js +0 -42
  183. package/esm2015/app/components/saved-filters/saved-filters.component.js +0 -32
  184. package/esm2015/app/components/status/status.component.js +0 -72
  185. package/esm2015/app/directives/column/column.directive.js +0 -112
  186. package/esm2015/app/directives/draggable-list/draggable-list.directive.js +0 -330
  187. package/esm2015/app/directives/draggable-row/draggable-row.directive.js +0 -79
  188. package/esm2015/app/interfaces/external-params.interface.js +0 -2
  189. package/esm2015/app/interfaces/pagination.interface.js +0 -2
  190. package/esm2015/app/models/column-attributes.js +0 -131
  191. package/esm2015/app/models/column.model.js +0 -163
  192. package/esm2015/app/models/row-action.model.js +0 -90
  193. package/fesm2015/firestitch-list.js.map +0 -1
@@ -1,163 +0,0 @@
1
- import { isBoolean, isObject } from 'lodash-es';
2
- import { StyleConfig } from './styleConfig.model';
3
- export var SortingDirection;
4
- (function (SortingDirection) {
5
- SortingDirection["asc"] = "asc";
6
- SortingDirection["desc"] = "desc";
7
- })(SortingDirection || (SortingDirection = {}));
8
- const ALLOWED_DEFAULTS = [
9
- 'title',
10
- 'sortable',
11
- 'align',
12
- 'class',
13
- ];
14
- export class Column {
15
- constructor(colConfig, colDefaults = false) {
16
- this.headerConfigs = new StyleConfig();
17
- this.groupHeaderConfigs = new StyleConfig();
18
- this.groupFooterConfigs = new StyleConfig();
19
- this.cellConfigs = new StyleConfig();
20
- this.footerConfigs = new StyleConfig();
21
- this.headerColspanned = false;
22
- this.groupHeaderColspanned = false;
23
- this.groupFooterColspanned = false;
24
- this.cellColspanned = false;
25
- this.footerColspanned = false;
26
- this._ordered = false;
27
- this._parseConfig(colConfig);
28
- this.colStyles = new StyleConfig({
29
- className: this._attributes.className,
30
- align: this._attributes.align,
31
- });
32
- this.mergeWithColumnDefaults(colDefaults);
33
- }
34
- set title(value) {
35
- this._attributes.title = value;
36
- }
37
- get title() {
38
- return this._attributes.title;
39
- }
40
- get name() {
41
- return this._attributes.name;
42
- }
43
- get customize() {
44
- return this._attributes.customize;
45
- }
46
- get width() {
47
- return this._attributes.width;
48
- }
49
- set sortable(value) {
50
- this._attributes.sortable = value;
51
- }
52
- get sortable() {
53
- return this._attributes.sortable;
54
- }
55
- get sortableDefault() {
56
- return this._attributes.sortableDefault;
57
- }
58
- set sortingDirection(value) {
59
- this._attributes.direction = value;
60
- }
61
- get sortingDirection() {
62
- return this._attributes.direction;
63
- }
64
- get sortingDirection$() {
65
- return this._attributes.direction$;
66
- }
67
- get visible() {
68
- return this._attributes.visible;
69
- }
70
- get visible$() {
71
- return this._attributes.visible$;
72
- }
73
- get direction() {
74
- return (this.sortingDirection === SortingDirection.asc) ? 'asc' : 'desc';
75
- }
76
- get fullNameDirection() {
77
- return (this.sortingDirection === SortingDirection.asc) ? 'Ascending' : 'Descending';
78
- }
79
- get ordered() {
80
- return this._ordered;
81
- }
82
- set ordered(value) {
83
- this._ordered = value;
84
- if (value && !this.sortingDirection) {
85
- this.sortingDirection = SortingDirection.asc;
86
- }
87
- }
88
- /**
89
- * Merge with defaults with existing config
90
- *
91
- * @param defaults
92
- */
93
- mergeWithColumnDefaults(defaults) {
94
- if (!isObject(defaults)) {
95
- defaults = {};
96
- }
97
- ALLOWED_DEFAULTS.forEach((key) => {
98
- switch (key) {
99
- case 'title':
100
- {
101
- this.title = this.title || defaults.title;
102
- }
103
- break;
104
- case 'sortable':
105
- {
106
- if (isBoolean(defaults.sortable)) {
107
- if (this.sortable === void 0) {
108
- this.sortable = defaults.sortable;
109
- }
110
- }
111
- }
112
- break;
113
- case 'class':
114
- {
115
- this.headerConfigs.mergeClassByPriority(this.colStyles, defaults.header);
116
- this.groupHeaderConfigs.mergeClassByPriority(this.colStyles, defaults.cell);
117
- this.groupFooterConfigs.mergeClassByPriority(this.colStyles, defaults.cell);
118
- this.cellConfigs.mergeClassByPriority(this.colStyles, defaults.cell);
119
- this.footerConfigs.mergeClassByPriority(this.colStyles, defaults.footer);
120
- }
121
- break;
122
- case 'align':
123
- {
124
- this.headerConfigs.mergeAlignByPriority(this.colStyles, defaults.header);
125
- this.groupHeaderConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);
126
- this.groupFooterConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);
127
- this.cellConfigs.mergeAlignByPriority(this.colStyles, defaults.cell);
128
- this.footerConfigs.mergeAlignByPriority(this.colStyles, defaults.footer);
129
- }
130
- break;
131
- }
132
- });
133
- this.headerConfigs.updateClasesArray();
134
- this.groupHeaderConfigs.updateClasesArray();
135
- this.groupFooterConfigs.updateClasesArray();
136
- this.cellConfigs.updateClasesArray();
137
- this.footerConfigs.updateClasesArray();
138
- }
139
- /**
140
- * Change sorting direction
141
- */
142
- changeDirection() {
143
- this.sortingDirection = this.sortingDirection === SortingDirection.asc ? SortingDirection.desc : SortingDirection.asc;
144
- }
145
- updateVisibility(value) {
146
- this._attributes.visible = value;
147
- }
148
- _parseConfig(config) {
149
- this._attributes = config.attributes;
150
- this.headerTemplate = config.headerTemplate;
151
- this.groupHeaderTemplate = config.groupHeaderTemplate;
152
- this.groupFooterTemplate = config.groupFooterTemplate;
153
- this.cellTemplate = config.cellTemplate;
154
- this.footerTemplate = config.footerTemplate;
155
- this.headerConfigs = new StyleConfig(config.headerConfigs);
156
- this.groupHeaderConfigs = new StyleConfig(config.groupHeaderConfigs);
157
- this.groupFooterConfigs = new StyleConfig(config.groupFooterConfigs);
158
- this.cellConfigs = new StyleConfig(config.cellConfigs);
159
- this.footerConfigs = new StyleConfig(config.footerConfigs);
160
- this.expandTrigger = config.expandTrigger;
161
- }
162
- }
163
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29sdW1uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcC9tb2RlbHMvY29sdW1uLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBTWhELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVsRCxNQUFNLENBQU4sSUFBWSxnQkFHWDtBQUhELFdBQVksZ0JBQWdCO0lBQzFCLCtCQUFXLENBQUE7SUFDWCxpQ0FBYSxDQUFBO0FBQ2YsQ0FBQyxFQUhXLGdCQUFnQixLQUFoQixnQkFBZ0IsUUFHM0I7QUFFRCxNQUFNLGdCQUFnQixHQUFHO0lBQ3ZCLE9BQU87SUFDUCxVQUFVO0lBQ1YsT0FBTztJQUNQLE9BQU87Q0FDUixDQUFDO0FBRUYsTUFBTSxPQUFPLE1BQU07SUE4QmpCLFlBQVksU0FBNkIsRUFBRSxjQUFtQixLQUFLO1FBckI1RCxrQkFBYSxHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRS9DLHVCQUFrQixHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ3BELHVCQUFrQixHQUFnQixJQUFJLFdBQVcsRUFBRSxDQUFDO1FBRXBELGdCQUFXLEdBQWdCLElBQUksV0FBVyxFQUFFLENBQUM7UUFFN0Msa0JBQWEsR0FBZ0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUkvQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsMEJBQXFCLEdBQUcsS0FBSyxDQUFDO1FBQzlCLDBCQUFxQixHQUFHLEtBQUssQ0FBQztRQUM5QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFJeEIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUd2QixJQUFJLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFB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QUksQ0FBQyxtQkFBbUIsR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUM7UUFDdEQsSUFBSSxDQUFDLG1CQUFtQixHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQztRQUN0RCxJQUFJLENBQUMsWUFBWSxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUM7UUFDeEMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUMsY0FBYyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzNELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDM0QsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDO0lBQzVDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFF1ZXJ5TGlzdCwgVGVtcGxhdGVSZWYgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBpc0Jvb2xlYW4sIGlzT2JqZWN0IH0gZnJvbSAnbG9kYXNoLWVzJztcblxuaW1wb3J0IHsgRnNMaXN0R3JvdXBFeHBhbmRUcmlnZ2VyRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9ncm91cC1leHBhbmQtdHJpZ2dlci9ncm91cC1leHBhbmQtdHJpZ2dlci5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgRnNMaXN0Q29sdW1uQ29uZmlnIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9jb2x1bW4tY29uZmlnLmludGVyZmFjZSc7XG5cbmltcG9ydCB7IENvbHVtbkF0dHJpYnV0ZXMgfSBmcm9tICcuL2NvbHVtbi1hdHRyaWJ1dGVzJztcbmltcG9ydCB7IFN0eWxlQ29uZmlnIH0gZnJvbSAnLi9zdHlsZUNvbmZpZy5tb2RlbCc7XG5cbmV4cG9ydCBlbnVtIFNvcnRpbmdEaXJlY3Rpb24ge1xuICBhc2MgPSAnYXNjJyxcbiAgZGVzYyA9ICdkZXNjJ1xufVxuXG5jb25zdCBBTExPV0VEX0RFRkFVTFRTID0gW1xuICAndGl0bGUnLFxuICAnc29ydGFibGUnLFxuICAnYWxpZ24nLFxuICAnY2xhc3MnLFxuXTtcblxuZXhwb3J0IGNsYXNzIENvbHVtbiB7XG5cbiAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwdWJsaWMgZ3JvdXBIZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHVibGljIGdyb3VwRm9vdGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHB1YmxpYyBjZWxsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgcHVibGljIGV4cGFuZFRyaWdnZXI6IFF1ZXJ5TGlzdDxGc0xpc3RHcm91cEV4cGFuZFRyaWdnZXJEaXJlY3RpdmU+O1xuXG4gIHB1YmxpYyBoZWFkZXJDb25maWdzOiBTdHlsZUNvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZygpO1xuXG4gIHB1YmxpYyBncm91cEhlYWRlckNvbmZpZ3M6IFN0eWxlQ29uZmlnID0gbmV3IFN0eWxlQ29uZmlnKCk7XG4gIHB1YmxpYyBncm91cEZvb3RlckNvbmZpZ3M6IFN0eWxlQ29uZmlnID0gbmV3IFN0eWxlQ29uZmlnKCk7XG5cbiAgcHVibGljIGNlbGxDb25maWdzOiBTdHlsZUNvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZygpO1xuXG4gIHB1YmxpYyBmb290ZXJDb25maWdzOiBTdHlsZUNvbmZpZyA9IG5ldyBTdHlsZUNvbmZpZygpO1xuXG4gIHB1YmxpYyBjb2xTdHlsZXM6IFN0eWxlQ29uZmlnO1xuXG4gIHB1YmxpYyBoZWFkZXJDb2xzcGFubmVkID0gZmFsc2U7XG4gIHB1YmxpYyBncm91cEhlYWRlckNvbHNwYW5uZWQgPSBmYWxzZTtcbiAgcHVibGljIGdyb3VwRm9vdGVyQ29sc3Bhbm5lZCA9IGZhbHNlO1xuICBwdWJsaWMgY2VsbENvbHNwYW5uZWQgPSBmYWxzZTtcbiAgcHVibGljIGZvb3RlckNvbHNwYW5uZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIF9hdHRyaWJ1dGVzOiBDb2x1bW5BdHRyaWJ1dGVzO1xuXG4gIHByaXZhdGUgX29yZGVyZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3Rvcihjb2xDb25maWc6IEZzTGlzdENvbHVtbkNvbmZpZywgY29sRGVmYXVsdHM6IGFueSA9IGZhbHNlKSB7XG4gICAgdGhpcy5fcGFyc2VDb25maWcoY29sQ29uZmlnKTtcblxuICAgIHRoaXMuY29sU3R5bGVzID0gbmV3IFN0eWxlQ29uZmlnKHtcbiAgICAgIGNsYXNzTmFtZTogdGhpcy5fYXR0cmlidXRlcy5jbGFzc05hbWUsXG4gICAgICBhbGlnbjogdGhpcy5fYXR0cmlidXRlcy5hbGlnbixcbiAgICB9KTtcblxuICAgIHRoaXMubWVyZ2VXaXRoQ29sdW1uRGVmYXVsdHMoY29sRGVmYXVsdHMpO1xuICB9XG5cbiAgcHVibGljIHNldCB0aXRsZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5fYXR0cmlidXRlcy50aXRsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCB0aXRsZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzLnRpdGxlO1xuICB9XG5cbiAgcHVibGljIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXMubmFtZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3VzdG9taXplKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzLmN1c3RvbWl6ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd2lkdGgoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYXR0cmlidXRlcy53aWR0aDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgc29ydGFibGUodmFsdWU6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9hdHRyaWJ1dGVzLnNvcnRhYmxlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNvcnRhYmxlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzLnNvcnRhYmxlO1xuICB9XG5cbiAgcHVibGljIGdldCBzb3J0YWJsZURlZmF1bHQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXMuc29ydGFibGVEZWZhdWx0O1xuICB9XG5cbiAgcHVibGljIHNldCBzb3J0aW5nRGlyZWN0aW9uKHZhbHVlOiAnYXNjJyB8ICdkZXNjJykge1xuICAgIHRoaXMuX2F0dHJpYnV0ZXMuZGlyZWN0aW9uID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNvcnRpbmdEaXJlY3Rpb24oKTogJ2FzYycgfCAnZGVzYycge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzLmRpcmVjdGlvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc29ydGluZ0RpcmVjdGlvbiQoKTogT2JzZXJ2YWJsZTwnYXNjJyB8ICdkZXNjJz4ge1xuICAgIHJldHVybiB0aGlzLl9hdHRyaWJ1dGVzLmRpcmVjdGlvbiQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHZpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXMudmlzaWJsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmlzaWJsZSQoKTogT2JzZXJ2YWJsZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIHRoaXMuX2F0dHJpYnV0ZXMudmlzaWJsZSQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpcmVjdGlvbigpIHtcbiAgICByZXR1cm4gKHRoaXMuc29ydGluZ0RpcmVjdGlvbiA9PT0gU29ydGluZ0RpcmVjdGlvbi5hc2MpID8gJ2FzYycgOiAnZGVzYyc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZ1bGxOYW1lRGlyZWN0aW9uKCkge1xuICAgIHJldHVybiAodGhpcy5zb3J0aW5nRGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLmFzYykgPyAnQXNjZW5kaW5nJyA6ICdEZXNjZW5kaW5nJztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3JkZXJlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fb3JkZXJlZDtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgb3JkZXJlZCh2YWx1ZSkge1xuICAgIHRoaXMuX29yZGVyZWQgPSB2YWx1ZTtcblxuICAgIGlmICh2YWx1ZSAmJiAhdGhpcy5zb3J0aW5nRGlyZWN0aW9uKSB7XG4gICAgICB0aGlzLnNvcnRpbmdEaXJlY3Rpb24gPSBTb3J0aW5nRGlyZWN0aW9uLmFzYztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2Ugd2l0aCBkZWZhdWx0cyB3aXRoIGV4aXN0aW5nIGNvbmZpZ1xuICAgKlxuICAgKiBAcGFyYW0gZGVmYXVsdHNcbiAgICovXG4gIHB1YmxpYyBtZXJnZVdpdGhDb2x1bW5EZWZhdWx0cyhkZWZhdWx0cykge1xuICAgIGlmICghaXNPYmplY3QoZGVmYXVsdHMpKSB7XG4gICAgICBkZWZhdWx0cyA9IHt9O1xuICAgIH1cblxuICAgIEFMTE9XRURfREVGQVVMVFMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBzd2l0Y2ggKGtleSkge1xuICAgICAgICBjYXNlICd0aXRsZSc6IHtcbiAgICAgICAgICB0aGlzLnRpdGxlID0gdGhpcy50aXRsZSB8fCBkZWZhdWx0cy50aXRsZTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlICdzb3J0YWJsZSc6IHtcbiAgICAgICAgICBpZiAoaXNCb29sZWFuKGRlZmF1bHRzLnNvcnRhYmxlKSkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc29ydGFibGUgPT09IHZvaWQgMCkge1xuICAgICAgICAgICAgICB0aGlzLnNvcnRhYmxlID0gZGVmYXVsdHMuc29ydGFibGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2NsYXNzJzoge1xuICAgICAgICAgIHRoaXMuaGVhZGVyQ29uZmlncy5tZXJnZUNsYXNzQnlQcmlvcml0eSh0aGlzLmNvbFN0eWxlcywgZGVmYXVsdHMuaGVhZGVyKTtcbiAgICAgICAgICB0aGlzLmdyb3VwSGVhZGVyQ29uZmlncy5tZXJnZUNsYXNzQnlQcmlvcml0eSh0aGlzLmNvbFN0eWxlcywgZGVmYXVsdHMuY2VsbCk7XG4gICAgICAgICAgdGhpcy5ncm91cEZvb3RlckNvbmZpZ3MubWVyZ2VDbGFzc0J5UHJpb3JpdHkodGhpcy5jb2xTdHlsZXMsIGRlZmF1bHRzLmNlbGwpO1xuICAgICAgICAgIHRoaXMuY2VsbENvbmZpZ3MubWVyZ2VDbGFzc0J5UHJpb3JpdHkodGhpcy5jb2xTdHlsZXMsIGRlZmF1bHRzLmNlbGwpO1xuICAgICAgICAgIHRoaXMuZm9vdGVyQ29uZmlncy5tZXJnZUNsYXNzQnlQcmlvcml0eSh0aGlzLmNvbFN0eWxlcywgZGVmYXVsdHMuZm9vdGVyKTtcbiAgICAgICAgfSBicmVhaztcblxuICAgICAgICBjYXNlICdhbGlnbic6IHtcbiAgICAgICAgICB0aGlzLmhlYWRlckNvbmZpZ3MubWVyZ2VBbGlnbkJ5UHJpb3JpdHkodGhpcy5jb2xTdHlsZXMsIGRlZmF1bHRzLmhlYWRlcik7XG4gICAgICAgICAgdGhpcy5ncm91cEhlYWRlckNvbmZpZ3MubWVyZ2VBbGlnbkJ5UHJpb3JpdHkodGhpcy5jb2xTdHlsZXMsIGRlZmF1bHRzLmNlbGwpO1xuICAgICAgICAgIHRoaXMuZ3JvdXBGb290ZXJDb25maWdzLm1lcmdlQWxpZ25CeVByaW9yaXR5KHRoaXMuY29sU3R5bGVzLCBkZWZhdWx0cy5jZWxsKTtcbiAgICAgICAgICB0aGlzLmNlbGxDb25maWdzLm1lcmdlQWxpZ25CeVByaW9yaXR5KHRoaXMuY29sU3R5bGVzLCBkZWZhdWx0cy5jZWxsKTtcbiAgICAgICAgICB0aGlzLmZvb3RlckNvbmZpZ3MubWVyZ2VBbGlnbkJ5UHJpb3JpdHkodGhpcy5jb2xTdHlsZXMsIGRlZmF1bHRzLmZvb3Rlcik7XG4gICAgICAgIH0gYnJlYWs7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmhlYWRlckNvbmZpZ3MudXBkYXRlQ2xhc2VzQXJyYXkoKTtcbiAgICB0aGlzLmdyb3VwSGVhZGVyQ29uZmlncy51cGRhdGVDbGFzZXNBcnJheSgpO1xuICAgIHRoaXMuZ3JvdXBGb290ZXJDb25maWdzLnVwZGF0ZUNsYXNlc0FycmF5KCk7XG4gICAgdGhpcy5jZWxsQ29uZmlncy51cGRhdGVDbGFzZXNBcnJheSgpO1xuICAgIHRoaXMuZm9vdGVyQ29uZmlncy51cGRhdGVDbGFzZXNBcnJheSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIENoYW5nZSBzb3J0aW5nIGRpcmVjdGlvblxuICAgKi9cbiAgcHVibGljIGNoYW5nZURpcmVjdGlvbigpIHtcbiAgICB0aGlzLnNvcnRpbmdEaXJlY3Rpb24gPSB0aGlzLnNvcnRpbmdEaXJlY3Rpb24gPT09IFNvcnRpbmdEaXJlY3Rpb24uYXNjID8gU29ydGluZ0RpcmVjdGlvbi5kZXNjIDogU29ydGluZ0RpcmVjdGlvbi5hc2M7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlVmlzaWJpbGl0eSh2YWx1ZTogYm9vbGVhbikge1xuICAgIHRoaXMuX2F0dHJpYnV0ZXMudmlzaWJsZSA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfcGFyc2VDb25maWcoY29uZmlnOiBGc0xpc3RDb2x1bW5Db25maWcpIHtcbiAgICB0aGlzLl9hdHRyaWJ1dGVzID0gY29uZmlnLmF0dHJpYnV0ZXM7XG5cbiAgICB0aGlzLmhlYWRlclRlbXBsYXRlID0gY29uZmlnLmhlYWRlclRlbXBsYXRlO1xuICAgIHRoaXMuZ3JvdXBIZWFkZXJUZW1wbGF0ZSA9IGNvbmZpZy5ncm91cEhlYWRlclRlbXBsYXRlO1xuICAgIHRoaXMuZ3JvdXBGb290ZXJUZW1wbGF0ZSA9IGNvbmZpZy5ncm91cEZvb3RlclRlbXBsYXRlO1xuICAgIHRoaXMuY2VsbFRlbXBsYXRlID0gY29uZmlnLmNlbGxUZW1wbGF0ZTtcbiAgICB0aGlzLmZvb3RlclRlbXBsYXRlID0gY29uZmlnLmZvb3RlclRlbXBsYXRlO1xuICAgIHRoaXMuaGVhZGVyQ29uZmlncyA9IG5ldyBTdHlsZUNvbmZpZyhjb25maWcuaGVhZGVyQ29uZmlncyk7XG4gICAgdGhpcy5ncm91cEhlYWRlckNvbmZpZ3MgPSBuZXcgU3R5bGVDb25maWcoY29uZmlnLmdyb3VwSGVhZGVyQ29uZmlncyk7XG4gICAgdGhpcy5ncm91cEZvb3RlckNvbmZpZ3MgPSBuZXcgU3R5bGVDb25maWcoY29uZmlnLmdyb3VwRm9vdGVyQ29uZmlncyk7XG4gICAgdGhpcy5jZWxsQ29uZmlncyA9IG5ldyBTdHlsZUNvbmZpZyhjb25maWcuY2VsbENvbmZpZ3MpO1xuICAgIHRoaXMuZm9vdGVyQ29uZmlncyA9IG5ldyBTdHlsZUNvbmZpZyhjb25maWcuZm9vdGVyQ29uZmlncyk7XG4gICAgdGhpcy5leHBhbmRUcmlnZ2VyID0gY29uZmlnLmV4cGFuZFRyaWdnZXI7XG4gIH1cbn1cbiJdfQ==
@@ -1,90 +0,0 @@
1
- import { ActionType } from '../enums/button-type.enum';
2
- export class RowAction {
3
- constructor(config = {}) {
4
- this.label = '';
5
- this.classArray = [];
6
- this.isShown = true;
7
- this._isGroup = false;
8
- this._init(config);
9
- if (Array.isArray(this.rowActions)) {
10
- this._isGroup = true;
11
- }
12
- }
13
- get isGroup() {
14
- return this._isGroup;
15
- }
16
- _init(value) {
17
- var _a, _b, _c;
18
- this.icon = value.icon;
19
- this.menu = (_a = value.menu) !== null && _a !== void 0 ? _a : true;
20
- this.remove = value.remove;
21
- this.className = value.className;
22
- this.type = this.menu && this.icon && !this.label && !value.type ? ActionType.Icon : (_b = value.type) !== null && _b !== void 0 ? _b : ActionType.Basic;
23
- this.show = value.show;
24
- this.restore = value.restore;
25
- this.rowActions = (_c = value.rowActions) === null || _c === void 0 ? void 0 : _c.map((action) => new RowAction(action));
26
- // Re-assign click function
27
- const clickFn = value.click;
28
- this.click = (row, event, index, rowActionsRef = null) => {
29
- return this._clickEvent(row, event, index, rowActionsRef, clickFn);
30
- };
31
- this._linkFn = value.link;
32
- if (value.file) {
33
- this.fileConfig = Object.assign({}, value.file);
34
- if (this.fileConfig.select) {
35
- const selectFn = this.fileConfig.select;
36
- this.fileConfig.select = (selection, row, index) => {
37
- selectFn(selection, row, index);
38
- };
39
- }
40
- }
41
- this.label = value.label;
42
- if (this.className) {
43
- this.classArray = this.className.split(' ').reduce((acc, elem) => {
44
- acc.push(elem);
45
- return acc;
46
- }, []);
47
- }
48
- }
49
- checkShowStatus(row, index) {
50
- if (this.isGroup) {
51
- this.rowActions.forEach((action) => {
52
- action.checkShowStatus(row, index);
53
- });
54
- const groupVisible = !this.show || this.show(row, index);
55
- this.isShown = groupVisible && this.rowActions.some((action) => action.isShown);
56
- }
57
- else if (this.show) {
58
- this.isShown = this.show(row, index);
59
- }
60
- }
61
- updateLink(row) {
62
- if (!this.isShown) {
63
- return;
64
- }
65
- if (this.isGroup) {
66
- this.rowActions.forEach((action) => {
67
- action.updateLink(row);
68
- });
69
- }
70
- else if (this._linkFn) {
71
- this.routerLink = this._linkFn(row);
72
- if (this.routerLink && !this.routerLink.target) {
73
- this.routerLink.target = null;
74
- }
75
- }
76
- }
77
- _clickEvent(row, event, index, rowActionsRef, clickFn) {
78
- // Stop event propagation for parent
79
- event.stopPropagation();
80
- // Close menu
81
- if (rowActionsRef) {
82
- rowActionsRef.closeMenu();
83
- }
84
- if (clickFn) {
85
- // Fire passed callback
86
- return clickFn(row, event, index);
87
- }
88
- }
89
- }
90
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm93LWFjdGlvbi5tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHAvbW9kZWxzL3Jvdy1hY3Rpb24ubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBUXZELE1BQU0sT0FBTyxTQUFTO0lBcUJwQixZQUFZLFNBQWMsRUFBRTtRQVhyQixVQUFLLEdBQUcsRUFBRSxDQUFDO1FBRVgsZUFBVSxHQUFhLEVBQUUsQ0FBQztRQUMxQixZQUFPLEdBQUcsSUFBSSxDQUFDO1FBTUwsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUd6QyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRW5CLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7U0FDdEI7SUFDSCxDQUFDO0lBRUQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRU0sS0FBSyxDQUFDLEtBQVU7O1FBQ3JCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQUEsS0FBSyxDQUFDLElBQUksbUNBQUksSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FB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TyxFQUFFO1lBQ2hCLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ2pDLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDSjthQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUN2QixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFcEMsSUFBSSxJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQzlDLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQzthQUMvQjtTQUNGO0lBQ0gsQ0FBQztJQUVPLFdBQVcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsT0FBTztRQUMzRCxvQ0FBb0M7UUFDcEMsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRXhCLGFBQWE7UUFDYixJQUFJLGFBQWEsRUFBRTtZQUNqQixhQUFhLENBQUMsU0FBUyxFQUFFLENBQUM7U0FDM0I7UUFFRCxJQUFJLE9BQU8sRUFBRTtZQUNYLHVCQUF1QjtZQUN2QixPQUFPLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWN0aW9uVHlwZSB9IGZyb20gJy4uL2VudW1zL2J1dHRvbi10eXBlLmVudW0nO1xuaW1wb3J0IHtcbiAgRnNMaXN0Um93QWN0aW9uRmlsZSxcbiAgRnNMaXN0Um93QWN0aW9uTGluayxcbiAgRnNMaXN0Um93QWN0aW9uTGlua0ZuLFxufSBmcm9tICcuLi9pbnRlcmZhY2VzJztcblxuXG5leHBvcnQgY2xhc3MgUm93QWN0aW9uIHtcblxuICBwdWJsaWMgaWNvbjogc3RyaW5nO1xuICBwdWJsaWMgbWVudTogYm9vbGVhbjtcbiAgcHVibGljIHJlbW92ZTogeyB0aXRsZTogc3RyaW5nOyB0ZW1wbGF0ZTogc3RyaW5nIH07XG4gIHB1YmxpYyBjbGFzc05hbWU6IHN0cmluZztcbiAgcHVibGljIHR5cGU6IEFjdGlvblR5cGU7XG4gIHB1YmxpYyBzaG93OiBGdW5jdGlvbjtcbiAgcHVibGljIHJlc3RvcmU6IGJvb2xlYW47XG4gIHB1YmxpYyByb3dBY3Rpb25zOiBSb3dBY3Rpb25bXTtcbiAgcHVibGljIGxhYmVsID0gJyc7XG4gIHB1YmxpYyByb3V0ZXJMaW5rOiBGc0xpc3RSb3dBY3Rpb25MaW5rO1xuICBwdWJsaWMgY2xhc3NBcnJheTogc3RyaW5nW10gPSBbXTtcbiAgcHVibGljIGlzU2hvd24gPSB0cnVlO1xuICBwdWJsaWMgY2xpY2s6IEZ1bmN0aW9uO1xuXG4gIHB1YmxpYyBmaWxlQ29uZmlnOiBGc0xpc3RSb3dBY3Rpb25GaWxlO1xuXG4gIHByaXZhdGUgX2xpbmtGbjogRnNMaXN0Um93QWN0aW9uTGlua0ZuO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pc0dyb3VwOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBhbnkgPSB7fSkge1xuICAgIHRoaXMuX2luaXQoY29uZmlnKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMucm93QWN0aW9ucykpIHtcbiAgICAgIHRoaXMuX2lzR3JvdXAgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgaXNHcm91cCgpIHtcbiAgICByZXR1cm4gdGhpcy5faXNHcm91cDtcbiAgfVxuXG4gIHB1YmxpYyBfaW5pdCh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy5pY29uID0gdmFsdWUuaWNvbjtcbiAgICB0aGlzLm1lbnUgPSB2YWx1ZS5tZW51ID8/IHRydWU7XG4gICAgdGhpcy5yZW1vdmUgPSB2YWx1ZS5yZW1vdmU7XG4gICAgdGhpcy5jbGFzc05hbWUgPSB2YWx1ZS5jbGFzc05hbWU7XG4gICAgdGhpcy50eXBlID0gdGhpcy5tZW51ICYmIHRoaXMuaWNvbiAmJiAhdGhpcy5sYWJlbCAmJiAhdmFsdWUudHlwZSA/IEFjdGlvblR5cGUuSWNvbiA6IHZhbHVlLnR5cGUgPz8gQWN0aW9uVHlwZS5CYXNpYztcbiAgICB0aGlzLnNob3cgPSB2YWx1ZS5zaG93O1xuICAgIHRoaXMucmVzdG9yZSA9IHZhbHVlLnJlc3RvcmU7XG4gICAgdGhpcy5yb3dBY3Rpb25zID0gdmFsdWUucm93QWN0aW9uc1xuICAgICAgPy5tYXAoKGFjdGlvbikgPT4gbmV3IFJvd0FjdGlvbihhY3Rpb24pKTtcblxuXG4gICAgLy8gUmUtYXNzaWduIGNsaWNrIGZ1bmN0aW9uXG4gICAgY29uc3QgY2xpY2tGbiA9IHZhbHVlLmNsaWNrO1xuICAgIHRoaXMuY2xpY2sgPSAocm93LCBldmVudCwgaW5kZXgsIHJvd0FjdGlvbnNSZWYgPSBudWxsKSA9PiB7XG4gICAgICByZXR1cm4gdGhpcy5fY2xpY2tFdmVudChyb3csIGV2ZW50LCBpbmRleCwgcm93QWN0aW9uc1JlZiwgY2xpY2tGbik7XG4gICAgfTtcblxuICAgIHRoaXMuX2xpbmtGbiA9IHZhbHVlLmxpbms7XG5cbiAgICBpZiAodmFsdWUuZmlsZSkge1xuICAgICAgdGhpcy5maWxlQ29uZmlnID0geyAuLi52YWx1ZS5maWxlIH07XG5cbiAgICAgIGlmICh0aGlzLmZpbGVDb25maWcuc2VsZWN0KSB7XG4gICAgICAgIGNvbnN0IHNlbGVjdEZuID0gdGhpcy5maWxlQ29uZmlnLnNlbGVjdDtcbiAgICAgICAgdGhpcy5maWxlQ29uZmlnLnNlbGVjdCA9IChzZWxlY3Rpb24sIHJvdywgaW5kZXgpID0+IHtcbiAgICAgICAgICBzZWxlY3RGbihzZWxlY3Rpb24sIHJvdywgaW5kZXgpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMubGFiZWwgPSB2YWx1ZS5sYWJlbDtcblxuICAgIGlmICh0aGlzLmNsYXNzTmFtZSkge1xuICAgICAgdGhpcy5jbGFzc0FycmF5ID0gdGhpcy5jbGFzc05hbWUuc3BsaXQoJyAnKS5yZWR1Y2UoKGFjYywgZWxlbSkgPT4ge1xuICAgICAgICBhY2MucHVzaChlbGVtKTtcblxuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBjaGVja1Nob3dTdGF0dXMocm93LCBpbmRleCkge1xuICAgIGlmICh0aGlzLmlzR3JvdXApIHtcbiAgICAgIHRoaXMucm93QWN0aW9ucy5mb3JFYWNoKChhY3Rpb24pID0+IHtcbiAgICAgICAgYWN0aW9uLmNoZWNrU2hvd1N0YXR1cyhyb3csIGluZGV4KTtcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBncm91cFZpc2libGUgPSAhdGhpcy5zaG93IHx8IHRoaXMuc2hvdyhyb3csIGluZGV4KTtcblxuICAgICAgdGhpcy5pc1Nob3duID0gZ3JvdXBWaXNpYmxlICYmIHRoaXMucm93QWN0aW9ucy5zb21lKChhY3Rpb24pID0+IGFjdGlvbi5pc1Nob3duKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2hvdykge1xuICAgICAgdGhpcy5pc1Nob3duID0gdGhpcy5zaG93KHJvdywgaW5kZXgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyB1cGRhdGVMaW5rKHJvdykge1xuICAgIGlmICghdGhpcy5pc1Nob3duKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNHcm91cCkge1xuICAgICAgdGhpcy5yb3dBY3Rpb25zLmZvckVhY2goKGFjdGlvbikgPT4ge1xuICAgICAgICBhY3Rpb24udXBkYXRlTGluayhyb3cpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9saW5rRm4pIHtcbiAgICAgIHRoaXMucm91dGVyTGluayA9IHRoaXMuX2xpbmtGbihyb3cpO1xuXG4gICAgICBpZiAodGhpcy5yb3V0ZXJMaW5rICYmICF0aGlzLnJvdXRlckxpbmsudGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucm91dGVyTGluay50YXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NsaWNrRXZlbnQocm93LCBldmVudCwgaW5kZXgsIHJvd0FjdGlvbnNSZWYsIGNsaWNrRm4pIHtcbiAgICAvLyBTdG9wIGV2ZW50IHByb3BhZ2F0aW9uIGZvciBwYXJlbnRcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgIC8vIENsb3NlIG1lbnVcbiAgICBpZiAocm93QWN0aW9uc1JlZikge1xuICAgICAgcm93QWN0aW9uc1JlZi5jbG9zZU1lbnUoKTtcbiAgICB9XG5cbiAgICBpZiAoY2xpY2tGbikge1xuICAgICAgLy8gRmlyZSBwYXNzZWQgY2FsbGJhY2tcbiAgICAgIHJldHVybiBjbGlja0ZuKHJvdywgZXZlbnQsIGluZGV4KTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==