jsl-ui 9.18.3 → 9.19.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 (213) hide show
  1. package/lib/components/IntervalComponent.d.ts +17 -0
  2. package/lib/components/IntervalComponent.js +68 -0
  3. package/lib/components/auto-suggest/AutoSuggestComponent.d.ts +22 -0
  4. package/lib/components/auto-suggest/AutoSuggestComponent.js +49 -0
  5. package/lib/components/button/ButtonComponent.d.ts +18 -0
  6. package/lib/components/button/ButtonComponent.js +46 -0
  7. package/lib/components/checkbox/CheckBoxComponent.d.ts +28 -0
  8. package/lib/components/checkbox/CheckBoxComponent.js +94 -0
  9. package/lib/components/checkbox/CheckBoxStyle.scss +86 -0
  10. package/lib/components/date/DateComponent.d.ts +32 -0
  11. package/lib/components/date/DateComponent.js +106 -0
  12. package/lib/components/date-range/DateRangeComponent.d.ts +35 -0
  13. package/lib/components/date-range/DateRangeComponent.js +136 -0
  14. package/lib/components/date-range/DateRangeStyle.scss +12 -0
  15. package/lib/components/date-time/DateTimeComponent.d.ts +15 -0
  16. package/lib/components/date-time/DateTimeComponent.js +53 -0
  17. package/lib/components/date-time/DateTimeStyle.scss +7 -0
  18. package/lib/components/dialog/DialogComponent.d.ts +67 -0
  19. package/lib/components/dialog/DialogComponent.js +242 -0
  20. package/lib/components/drop-down/DropDownComponent.d.ts +27 -0
  21. package/lib/components/drop-down/DropDownComponent.js +74 -0
  22. package/lib/components/expander/ExpanderComponent.d.ts +27 -0
  23. package/lib/components/expander/ExpanderComponent.js +90 -0
  24. package/lib/components/expander/ExpanderStyle.scss +47 -0
  25. package/lib/components/expander/OldExpanderStyle.scss +37 -0
  26. package/lib/components/form-field/FormComponent.d.ts +12 -0
  27. package/lib/components/form-field/FormComponent.js +26 -0
  28. package/lib/components/form-field/FormFieldComponent.d.ts +38 -0
  29. package/lib/components/form-field/FormFieldComponent.js +139 -0
  30. package/lib/components/form-field/FormFieldStyle.scss +87 -0
  31. package/lib/components/grid/GridComponent.d.ts +26 -0
  32. package/lib/components/grid/GridComponent.js +116 -0
  33. package/lib/components/input/InputComponent.d.ts +33 -0
  34. package/lib/components/input/InputComponent.js +144 -0
  35. package/lib/components/loading/LoadingComponent.d.ts +8 -0
  36. package/lib/components/loading/LoadingComponent.js +22 -0
  37. package/lib/components/loading/LoadingStyle.css +29 -0
  38. package/lib/components/navigation/NavigationComponent.d.ts +34 -0
  39. package/lib/components/navigation/NavigationComponent.js +70 -0
  40. package/lib/components/navigation/NavigationStyle.scss +226 -0
  41. package/lib/components/notification/Notification.d.ts +17 -0
  42. package/lib/components/notification/Notification.js +56 -0
  43. package/lib/components/notification/Notification.scss +19 -0
  44. package/lib/components/number/NumberComponent.d.ts +25 -0
  45. package/lib/components/number/NumberComponent.js +87 -0
  46. package/lib/components/overlay/OverlayComponent.d.ts +27 -0
  47. package/lib/components/overlay/OverlayComponent.js +149 -0
  48. package/lib/components/overlay/overlay.css +57 -0
  49. package/lib/components/progress/ProgressComponent.d.ts +18 -0
  50. package/lib/components/progress/ProgressComponent.js +42 -0
  51. package/lib/components/progress/ProgressStyle.scss +15 -0
  52. package/lib/components/ribbon-menu/RibbonMenuComponent.d.ts +12 -0
  53. package/lib/components/ribbon-menu/RibbonMenuComponent.js +34 -0
  54. package/lib/components/ribbon-menu/RibbonMenuStyle.scss +76 -0
  55. package/lib/components/select/SelectComponent.d.ts +79 -0
  56. package/lib/components/select/SelectComponent.js +362 -0
  57. package/lib/components/select/SelectDDAreaComponent.d.ts +32 -0
  58. package/lib/components/select/SelectDDAreaComponent.js +317 -0
  59. package/lib/components/select/SelectStyle.scss +187 -0
  60. package/lib/components/slider/nouislider.css +310 -0
  61. package/lib/components/slider/nouislider.d.ts +44 -0
  62. package/lib/components/slider/nouislider.js +2158 -0
  63. package/lib/components/stack-panel/SplitterComponent.d.ts +21 -0
  64. package/lib/components/stack-panel/SplitterComponent.js +126 -0
  65. package/lib/components/stack-panel/SplitterStyle.scss +45 -0
  66. package/lib/components/stack-panel/StackPanelComponent.d.ts +20 -0
  67. package/lib/components/stack-panel/StackPanelComponent.js +64 -0
  68. package/lib/components/stack-panel/StackPanelStyle.scss +53 -0
  69. package/lib/components/tabs/TabsComponent.d.ts +39 -0
  70. package/lib/components/tabs/TabsComponent.js +177 -0
  71. package/lib/components/tabs/TabsStyle.scss +76 -0
  72. package/lib/components/time/TimeComponent.d.ts +29 -0
  73. package/lib/components/time/TimeComponent.js +113 -0
  74. package/lib/components/time/TimeComponent.scss +4 -0
  75. package/lib/components/tree-view/TreeViewComponent.d.ts +23 -0
  76. package/lib/components/tree-view/TreeViewComponent.js +45 -0
  77. package/lib/components/tree-view/TreeViewStyle.scss +96 -0
  78. package/lib/components/virtual-render/VirtualRenderComponent.d.ts +30 -0
  79. package/lib/components/virtual-render/VirtualRenderComponent.js +104 -0
  80. package/lib/components/virtual-render/VirtualRenderStyle.scss +9 -0
  81. package/lib/core/culture.d.ts +5 -0
  82. package/lib/core/culture.js +385 -0
  83. package/lib/core/date.d.ts +14 -0
  84. package/lib/core/date.js +350 -0
  85. package/lib/core/helper.d.ts +12 -0
  86. package/lib/core/helper.js +101 -0
  87. package/lib/core/jq.d.ts +37 -0
  88. package/lib/core/jq.js +371 -0
  89. package/lib/core/lang.d.ts +24 -0
  90. package/lib/core/lang.js +28 -0
  91. package/lib/core/numeric.d.ts +7 -0
  92. package/lib/core/numeric.js +143 -0
  93. package/lib/core/polyfills.d.ts +0 -0
  94. package/lib/core/polyfills.js +22 -0
  95. package/lib/core.d.ts +6 -0
  96. package/lib/core.js +6 -0
  97. package/lib/grid/controls/slick.columnpicker.css +46 -0
  98. package/lib/grid/controls/slick.draggablegrouping.css +52 -0
  99. package/lib/grid/controls/slick.gridmenu.css +127 -0
  100. package/lib/grid/controls/slick.pager.css +41 -0
  101. package/lib/grid/examples/examples.css +203 -0
  102. package/lib/grid/filterDialogs/dateRangeFilter.d.ts +7 -0
  103. package/lib/grid/filterDialogs/dateRangeFilter.js +156 -0
  104. package/lib/grid/filterDialogs/excelFilter.d.ts +9 -0
  105. package/lib/grid/filterDialogs/excelFilter.js +313 -0
  106. package/lib/grid/plugins/ext.overlay.css +28 -0
  107. package/lib/grid/plugins/ext.overlay.d.ts +2 -0
  108. package/lib/grid/plugins/ext.overlay.js +291 -0
  109. package/lib/grid/plugins/slick.cellrangedecorator.d.ts +12 -0
  110. package/lib/grid/plugins/slick.cellrangedecorator.js +68 -0
  111. package/lib/grid/plugins/slick.cellrangeselector.d.ts +1 -0
  112. package/lib/grid/plugins/slick.cellrangeselector.js +144 -0
  113. package/lib/grid/plugins/slick.cellselectionmodel.d.ts +1 -0
  114. package/lib/grid/plugins/slick.cellselectionmodel.js +194 -0
  115. package/lib/grid/plugins/slick.headerbuttons.css +40 -0
  116. package/lib/grid/plugins/slick.headerbuttons.d.ts +55 -0
  117. package/lib/grid/plugins/slick.headerbuttons.js +156 -0
  118. package/lib/grid/plugins/slick.headermenu.css +101 -0
  119. package/lib/grid/plugins/slick.headermenu.d.ts +74 -0
  120. package/lib/grid/plugins/slick.headermenu.js +260 -0
  121. package/lib/grid/plugins/slick.rowdetailview.css +37 -0
  122. package/lib/grid/plugins/slick.rowmovemanager.css +8 -0
  123. package/lib/grid/plugins/slick.rowmovemanager.d.ts +18 -0
  124. package/lib/grid/plugins/slick.rowmovemanager.js +249 -0
  125. package/lib/grid/plugins/slick.rowselectionmodel.d.ts +1 -0
  126. package/lib/grid/plugins/slick.rowselectionmodel.js +167 -0
  127. package/lib/grid/slick-default-theme.css +154 -0
  128. package/lib/grid/slick.core.d.ts +90 -0
  129. package/lib/grid/slick.core.js +574 -0
  130. package/lib/grid/slick.creator.d.ts +80 -0
  131. package/lib/grid/slick.creator.js +723 -0
  132. package/lib/grid/slick.dataview.d.ts +71 -0
  133. package/lib/grid/slick.dataview.js +1080 -0
  134. package/lib/grid/slick.editors.core.d.ts +4 -0
  135. package/lib/grid/slick.editors.core.js +232 -0
  136. package/lib/grid/slick.editors.date.d.ts +2 -0
  137. package/lib/grid/slick.editors.date.js +125 -0
  138. package/lib/grid/slick.editors.lookup.d.ts +14 -0
  139. package/lib/grid/slick.editors.lookup.js +353 -0
  140. package/lib/grid/slick.editors.nav.d.ts +6 -0
  141. package/lib/grid/slick.editors.nav.js +22 -0
  142. package/lib/grid/slick.formatters.d.ts +17 -0
  143. package/lib/grid/slick.formatters.js +137 -0
  144. package/lib/grid/slick.grid.css +325 -0
  145. package/lib/grid/slick.grid.d.ts +284 -0
  146. package/lib/grid/slick.grid.js +5395 -0
  147. package/lib/grid/slick.groupitemmetadataprovider.d.ts +39 -0
  148. package/lib/grid/slick.groupitemmetadataprovider.js +165 -0
  149. package/lib/grid/slick.tree.css +20 -0
  150. package/lib/grid/slick.tree.d.ts +33 -0
  151. package/lib/grid/slick.tree.js +220 -0
  152. package/lib/grid.d.ts +13 -0
  153. package/lib/grid.js +13 -0
  154. package/lib/index.css +2576 -0
  155. package/lib/index.css.map +1 -1
  156. package/lib/index.d.ts +56 -0
  157. package/lib/index.js +61 -10198
  158. package/lib/index.js.map +1 -1
  159. package/lib/interaction/dataconverter.d.ts +4 -0
  160. package/lib/interaction/dataconverter.js +1 -0
  161. package/lib/interaction/eventhandler.d.ts +13 -0
  162. package/lib/interaction/eventhandler.js +42 -0
  163. package/lib/interaction/moveable.css +0 -0
  164. package/lib/interaction/moveable.d.ts +39 -0
  165. package/lib/interaction/moveable.js +172 -0
  166. package/lib/interaction/resizable.css +33 -0
  167. package/lib/interaction/resizable.d.ts +37 -0
  168. package/lib/interaction/resizable.js +123 -0
  169. package/lib/ui/auto.suggest.css +14 -0
  170. package/lib/ui/auto.suggest.d.ts +18 -0
  171. package/lib/ui/auto.suggest.js +258 -0
  172. package/lib/ui/base.css +150 -0
  173. package/lib/ui/date.picker/css/date-range-picker.css +87 -0
  174. package/lib/ui/date.picker/css/tiny-date-picker.css +326 -0
  175. package/lib/ui/date.picker/date-picker-options.d.ts +11 -0
  176. package/lib/ui/date.picker/date-picker-options.js +76 -0
  177. package/lib/ui/date.picker/lib/date-manip.d.ts +74 -0
  178. package/lib/ui/date.picker/lib/date-manip.js +120 -0
  179. package/lib/ui/date.picker/lib/dom.d.ts +23 -0
  180. package/lib/ui/date.picker/lib/dom.js +28 -0
  181. package/lib/ui/date.picker/lib/emitter.d.ts +13 -0
  182. package/lib/ui/date.picker/lib/emitter.js +49 -0
  183. package/lib/ui/date.picker/lib/fns.d.ts +23 -0
  184. package/lib/ui/date.picker/lib/fns.js +43 -0
  185. package/lib/ui/date.picker/mode/base-mode.d.ts +26 -0
  186. package/lib/ui/date.picker/mode/base-mode.js +248 -0
  187. package/lib/ui/date.picker/mode/dropdown-mode.d.ts +28 -0
  188. package/lib/ui/date.picker/mode/dropdown-mode.js +50 -0
  189. package/lib/ui/date.picker/mode/index.d.ts +28 -0
  190. package/lib/ui/date.picker/mode/index.js +18 -0
  191. package/lib/ui/date.picker/mode/modal-mode.d.ts +25 -0
  192. package/lib/ui/date.picker/mode/modal-mode.js +17 -0
  193. package/lib/ui/date.picker/mode/permanent-mode.d.ts +29 -0
  194. package/lib/ui/date.picker/mode/permanent-mode.js +19 -0
  195. package/lib/ui/date.picker/views/day-picker.d.ts +40 -0
  196. package/lib/ui/date.picker/views/day-picker.js +155 -0
  197. package/lib/ui/date.picker/views/month-picker.d.ts +26 -0
  198. package/lib/ui/date.picker/views/month-picker.js +65 -0
  199. package/lib/ui/date.picker/views/year-picker.d.ts +20 -0
  200. package/lib/ui/date.picker/views/year-picker.js +66 -0
  201. package/lib/ui/date.picker.d.ts +66 -0
  202. package/lib/ui/date.picker.js +32 -0
  203. package/lib/ui/dialog.css +109 -0
  204. package/lib/ui/dialog.d.ts +22 -0
  205. package/lib/ui/dialog.js +113 -0
  206. package/lib/ui/drop.down.css +472 -0
  207. package/lib/ui/drop.down.d.ts +52 -0
  208. package/lib/ui/drop.down.js +2112 -0
  209. package/lib/ui/number.input.css +3 -0
  210. package/lib/ui/number.input.d.ts +12 -0
  211. package/lib/ui/number.input.js +64 -0
  212. package/lib/ui/tabs.css +53 -0
  213. package/package.json +1 -1
@@ -0,0 +1,39 @@
1
+ /***
2
+ * Provides item metadata for group (Slick.Group) and totals (Slick.Totals) rows produced by the DataView.
3
+ * This metadata overrides the default behavior and formatting of those rows so that they appear and function
4
+ * correctly when processed by the grid.
5
+ *
6
+ * This class also acts as a grid plugin providing event handlers to expand & collapse groups.
7
+ * If "grid.registerPlugin(...)" is not called, expand & collapse will not work.
8
+ *
9
+ * @class GroupItemMetadataProvider
10
+ * @module Data
11
+ * @namespace Slick.Data
12
+ * @constructor
13
+ * @param options
14
+ */
15
+ export declare function GroupItemMetadataProvider(options?: any): {
16
+ init: (grid: any) => void;
17
+ destroy: () => void;
18
+ getGroupRowMetadata: (item: any) => {
19
+ selectable: boolean;
20
+ focusable: any;
21
+ cssClasses: any;
22
+ columns: {
23
+ 0: {
24
+ colspan: string;
25
+ formatter: any;
26
+ editor: any;
27
+ };
28
+ };
29
+ height: any;
30
+ };
31
+ getTotalsRowMetadata: (item: any) => {
32
+ selectable: boolean;
33
+ focusable: any;
34
+ cssClasses: any;
35
+ formatter: any;
36
+ editor: any;
37
+ height: any;
38
+ };
39
+ };
@@ -0,0 +1,165 @@
1
+ import { jQueryReplacement } from "../core/jq";
2
+ import { Slick } from "./slick.core";
3
+ var $ = jQueryReplacement;
4
+ $.deepExtend(Slick, {
5
+ Data: {
6
+ GroupItemMetadataProvider: GroupItemMetadataProvider
7
+ }
8
+ });
9
+ /***
10
+ * Provides item metadata for group (Slick.Group) and totals (Slick.Totals) rows produced by the DataView.
11
+ * This metadata overrides the default behavior and formatting of those rows so that they appear and function
12
+ * correctly when processed by the grid.
13
+ *
14
+ * This class also acts as a grid plugin providing event handlers to expand & collapse groups.
15
+ * If "grid.registerPlugin(...)" is not called, expand & collapse will not work.
16
+ *
17
+ * @class GroupItemMetadataProvider
18
+ * @module Data
19
+ * @namespace Slick.Data
20
+ * @constructor
21
+ * @param options
22
+ */
23
+ export function GroupItemMetadataProvider(options) {
24
+ var _grid;
25
+ var _defaults = {
26
+ checkboxSelect: false,
27
+ checkboxSelectCssClass: "slick-group-select-checkbox",
28
+ checkboxSelectPlugin: null,
29
+ groupCssClass: "slick-group",
30
+ groupTitleCssClass: "slick-group-title",
31
+ totalsCssClass: "slick-group-totals",
32
+ groupFocusable: true,
33
+ totalsFocusable: false,
34
+ toggleCssClass: "slick-group-toggle",
35
+ toggleExpandedCssClass: "expanded",
36
+ toggleCollapsedCssClass: "collapsed",
37
+ enableExpandCollapse: true,
38
+ groupFormatter: defaultGroupCellFormatter,
39
+ totalsFormatter: defaultTotalsCellFormatter
40
+ };
41
+ options = $.deepExtend({}, _defaults, options);
42
+ function defaultGroupCellFormatter(row, cell, value, columnDef, item, grid) {
43
+ if (!options.enableExpandCollapse) {
44
+ return item.title;
45
+ }
46
+ var indentation = item.level * 15 + "px";
47
+ return (options.checkboxSelect ? '<span class="' + options.checkboxSelectCssClass +
48
+ ' ' + (item.selectChecked ? 'checked' : 'unchecked') + '"></span>' : '') +
49
+ "<span class='" + options.toggleCssClass + " " +
50
+ (item.collapsed ? options.toggleCollapsedCssClass : options.toggleExpandedCssClass) +
51
+ "' style='margin-left:" + indentation + "'>" +
52
+ "</span>" +
53
+ "<span class='" + options.groupTitleCssClass + "' level='" + item.level + "'>" +
54
+ item.title +
55
+ "</span>";
56
+ }
57
+ function defaultTotalsCellFormatter(row, cell, value, columnDef, item, grid) {
58
+ var formatter_res;
59
+ if (columnDef.groupTotalsFormatter) {
60
+ formatter_res = columnDef.groupTotalsFormatter(item, columnDef, grid) || "";
61
+ }
62
+ else {
63
+ var res = (item.avg && item.avg[columnDef.field])
64
+ || (item.sum && item.sum[columnDef.field])
65
+ || (item.max && item.max[columnDef.field])
66
+ || (item.min && item.min[columnDef.field]);
67
+ formatter_res = (columnDef.formatter ? columnDef.formatter(row, cell, res, columnDef, item) : "");
68
+ }
69
+ return formatter_res;
70
+ //return (Object.prototype.toString.call(formatter_res) !== '[object Object]' ? (<string>formatter_res) : (<ISlickFormatterResult>formatter_res).text);
71
+ }
72
+ function init(grid) {
73
+ _grid = grid;
74
+ _grid.onClick.subscribe(handleGridClick);
75
+ _grid.onKeyDown.subscribe(handleGridKeyDown);
76
+ }
77
+ function destroy() {
78
+ if (_grid) {
79
+ _grid.onClick.unsubscribe(handleGridClick);
80
+ _grid.onKeyDown.unsubscribe(handleGridKeyDown);
81
+ }
82
+ }
83
+ function handleGridClick(e, args) {
84
+ var $target = $(e.target);
85
+ var item = this.getDataItem(args.row);
86
+ if (item && item instanceof Slick.Group && $target.hasClass(options.toggleCssClass)) {
87
+ var range = _grid.getRenderedRange();
88
+ this.dataView.setRefreshHints({
89
+ ignoreDiffsBefore: range.top,
90
+ ignoreDiffsAfter: range.bottom + 1
91
+ });
92
+ if (item.collapsed) {
93
+ this.dataView.expandGroup(item.groupingKey);
94
+ }
95
+ else {
96
+ this.dataView.collapseGroup(item.groupingKey);
97
+ }
98
+ e.stopImmediatePropagation();
99
+ e.preventDefault();
100
+ }
101
+ if (item && item instanceof Slick.Group && $target.hasClass(options.checkboxSelectCssClass)) {
102
+ item.selectChecked = !item.selectChecked;
103
+ $target.removeClass((item.selectChecked ? "unchecked" : "checked"));
104
+ $target.addClass((item.selectChecked ? "checked" : "unchecked"));
105
+ // get rowIndexes array
106
+ var rowIndexes = _grid.dataView.mapItemsToRows(item.rows);
107
+ (item.selectChecked ? options.checkboxSelectPlugin.selectRows : options.checkboxSelectPlugin.deSelectRows)(rowIndexes);
108
+ }
109
+ }
110
+ // TODO: add -/+ handling
111
+ function handleGridKeyDown(e, args) {
112
+ if (options.enableExpandCollapse && (e.which == Slick.keyCode.SPACE)) {
113
+ var activeCell = this.getActiveCell();
114
+ if (activeCell) {
115
+ var item = this.getDataItem(activeCell.row);
116
+ if (item && item instanceof Slick.Group) {
117
+ var range = _grid.getRenderedRange();
118
+ this.dataView.setRefreshHints({
119
+ ignoreDiffsBefore: range.top,
120
+ ignoreDiffsAfter: range.bottom + 1
121
+ });
122
+ if (item.collapsed) {
123
+ this.dataView.expandGroup(item.groupingKey);
124
+ }
125
+ else {
126
+ this.dataView.collapseGroup(item.groupingKey);
127
+ }
128
+ e.stopImmediatePropagation();
129
+ e.preventDefault();
130
+ }
131
+ }
132
+ }
133
+ }
134
+ function getGroupRowMetadata(item) {
135
+ return {
136
+ selectable: false,
137
+ focusable: options.groupFocusable,
138
+ cssClasses: options.groupCssClass,
139
+ columns: {
140
+ 0: {
141
+ colspan: "*",
142
+ formatter: options.groupFormatter,
143
+ editor: null
144
+ }
145
+ },
146
+ height: options.calcGroupHeight ? options.calcGroupHeight(item) : undefined
147
+ };
148
+ }
149
+ function getTotalsRowMetadata(item) {
150
+ return {
151
+ selectable: false,
152
+ focusable: options.totalsFocusable,
153
+ cssClasses: options.totalsCssClass,
154
+ formatter: options.totalsFormatter,
155
+ editor: null,
156
+ height: options.calcTotalsHeight ? options.calcTotalsHeight(item) : undefined
157
+ };
158
+ }
159
+ return {
160
+ "init": init,
161
+ "destroy": destroy,
162
+ "getGroupRowMetadata": getGroupRowMetadata,
163
+ "getTotalsRowMetadata": getTotalsRowMetadata
164
+ };
165
+ }
@@ -0,0 +1,20 @@
1
+ .slick-cell .jsl-toggle {
2
+ color: #888888;
3
+ /* font-size: 0.8em; */
4
+ width: 1.2em;
5
+ box-sizing: border-box;
6
+ display: inline-block;
7
+ cursor: pointer;
8
+ height: 100%;
9
+ }
10
+
11
+ .slick-cell .jsl-toggle-spacer {
12
+ min-width: 1.2em;
13
+ display: inline-block;
14
+ box-sizing: border-box;
15
+ }
16
+
17
+ .slick-cell .jsl-indent {
18
+ display: inline-block;
19
+ position: relative;
20
+ }
@@ -0,0 +1,33 @@
1
+ import "./slick.tree.css";
2
+ import { IJSLGrid } from "./slick.creator";
3
+ import { ISlickFormatter } from "./slick.core";
4
+ export interface IGridTreeOptions {
5
+ parentColumn: string;
6
+ indentInRem?: number;
7
+ enableCollapsing?: boolean;
8
+ hiddenStateField?: string;
9
+ collapsedStateField?: string;
10
+ expandIconHTML?: string;
11
+ collapseIconHTML?: string;
12
+ }
13
+ export declare let IndentFormatter: ISlickFormatter;
14
+ export declare class GridTree<T> {
15
+ private grid;
16
+ private primaryKey;
17
+ private options;
18
+ constructor(grid: IJSLGrid<T>, o: IGridTreeOptions);
19
+ getOptions(): IGridTreeOptions;
20
+ getLevel(item: T): number;
21
+ getParent(item: T): T;
22
+ hasChildren(item: T): boolean;
23
+ getDirectChildren(item: T): T[];
24
+ getAllChildren(item: T): T[];
25
+ rowHasChildren(row: number): boolean;
26
+ toggleExpand(item: T): void;
27
+ expand(item: T): void;
28
+ indent(rows: T[]): void;
29
+ outdent(rows: T[]): void;
30
+ filterChildren(rows: T[]): T[];
31
+ collapse(item: T): void;
32
+ private initEvents;
33
+ }
@@ -0,0 +1,220 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import "./slick.tree.css";
13
+ export var IndentFormatter = function (row, cell, value, columnDef, dataContext, grid) {
14
+ var result = "";
15
+ var hierachy = grid._hierachy;
16
+ if (hierachy != null) {
17
+ var options = hierachy.getOptions();
18
+ var level = hierachy.getLevel(dataContext);
19
+ if (level > 0) {
20
+ result += "<span class='jsl-indent' style='min-width:" + (level * hierachy.getOptions().indentInRem) + "rem;'></span>";
21
+ }
22
+ if (options.enableCollapsing) {
23
+ var hasChildren = hierachy.hasChildren(dataContext);
24
+ if (hasChildren) {
25
+ if (dataContext[options.collapsedStateField]) {
26
+ result += "<span class='jsl-toggle'>" + options.expandIconHTML + "</span>";
27
+ }
28
+ else {
29
+ result += "<span class='jsl-toggle'>" + options.collapseIconHTML + "</span>";
30
+ }
31
+ }
32
+ else {
33
+ result += "<span class='jsl-toggle-spacer'></span>";
34
+ }
35
+ }
36
+ }
37
+ if (value != null) {
38
+ result += (value + "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
39
+ }
40
+ return result;
41
+ };
42
+ var GridTree = /** @class */ (function () {
43
+ function GridTree(grid, o) {
44
+ this.grid = grid;
45
+ this.options = __assign({
46
+ enableCollapsing: true,
47
+ indentInRem: 1,
48
+ hiddenStateField: "_hidden_by_h",
49
+ collapsedStateField: "_callapsed",
50
+ expandIconHTML: "▶",
51
+ collapseIconHTML: "▼" // "˅"
52
+ }, o);
53
+ this.primaryKey = this.grid.getOptions().primaryKey;
54
+ grid._hierachy = this;
55
+ grid.refresh();
56
+ this.initEvents();
57
+ }
58
+ GridTree.prototype.getOptions = function () {
59
+ return this.options;
60
+ };
61
+ GridTree.prototype.getLevel = function (item) {
62
+ var level = 0;
63
+ var parent = this.getParent(item);
64
+ while (parent != null) {
65
+ parent = this.getParent(parent);
66
+ level++;
67
+ }
68
+ return level;
69
+ };
70
+ GridTree.prototype.getParent = function (item) {
71
+ return this.grid.dataView.getItemById(item[this.options.parentColumn]);
72
+ };
73
+ GridTree.prototype.hasChildren = function (item) {
74
+ return this.rowHasChildren(this.grid.dataView.getIdxByItem(item));
75
+ };
76
+ GridTree.prototype.getDirectChildren = function (item) {
77
+ var id = item[this.primaryKey];
78
+ var result = [];
79
+ var data = this.grid.getData();
80
+ for (var i = 0; i < data.length; i++) {
81
+ var pid = data[i][this.options.parentColumn];
82
+ if (pid === id) {
83
+ result.push(data[i]);
84
+ }
85
+ }
86
+ return result;
87
+ };
88
+ GridTree.prototype.getAllChildren = function (item) {
89
+ var parentid = item[this.primaryKey];
90
+ var result = [];
91
+ var data = this.grid.getData();
92
+ for (var i = 0; i < data.length; i++) {
93
+ if (data[i][this.options.parentColumn] === parentid) {
94
+ result.push(data[i]);
95
+ result.push.apply(result, this.getAllChildren(data[i]));
96
+ }
97
+ }
98
+ return result;
99
+ };
100
+ GridTree.prototype.rowHasChildren = function (row) {
101
+ var data = this.grid.getData();
102
+ if (data.length > row + 1) {
103
+ return data[row + 1][this.options.parentColumn] === data[row][this.primaryKey];
104
+ }
105
+ return false;
106
+ };
107
+ GridTree.prototype.toggleExpand = function (item) {
108
+ if (item[this.options.collapsedStateField]) {
109
+ this.expand(item);
110
+ }
111
+ else {
112
+ this.collapse(item);
113
+ }
114
+ };
115
+ GridTree.prototype.expand = function (item) {
116
+ item[this.options.collapsedStateField] = false;
117
+ var data = this.grid.getData();
118
+ var i = this.grid.dataView.getIdxByItem(item);
119
+ while (i < data.length) {
120
+ data[i][this.options.hiddenStateField] = false;
121
+ if (this.rowHasChildren(i)) {
122
+ if (data[i][this.options.collapsedStateField]) {
123
+ //skip children
124
+ i += this.getAllChildren(data[i]).length;
125
+ }
126
+ }
127
+ i++;
128
+ }
129
+ this.grid.refreshData();
130
+ };
131
+ GridTree.prototype.indent = function (rows) {
132
+ var realRows = this.filterChildren(rows);
133
+ var data = this.grid.getData();
134
+ //get indexes of rows
135
+ var indexes = [];
136
+ for (var i = 0; i < realRows.length; i++) {
137
+ indexes.push(this.grid.dataView.getIdxByItem(realRows[i]));
138
+ }
139
+ //sort indexes
140
+ indexes.sort(function (a, b) { return a > b ? 1 : (a < b ? -1 : 0); });
141
+ //change parents to indent rows
142
+ for (var i = 0; i < indexes.length; i++) {
143
+ var rowIdx = indexes[i];
144
+ var parentID = data[rowIdx][this.options.parentColumn];
145
+ for (var tmp = rowIdx - 1; tmp >= 0; tmp--) {
146
+ if (data[tmp][this.options.parentColumn] === parentID) {
147
+ data[rowIdx][this.options.parentColumn] = data[tmp][this.primaryKey];
148
+ break;
149
+ }
150
+ }
151
+ }
152
+ this.grid.refreshData();
153
+ };
154
+ GridTree.prototype.outdent = function (rows) {
155
+ var rows2 = this.filterChildren(rows);
156
+ var data = this.grid.getData();
157
+ for (var i = 0; i < rows2.length; i++) {
158
+ var row = rows2[i];
159
+ var oldparent = row[this.options.parentColumn];
160
+ if (oldparent) {
161
+ var newparent = data[this.grid.dataView.getIdxById(oldparent)][this.options.parentColumn];
162
+ row[this.options.parentColumn] = newparent;
163
+ //make all subsequent items with same ParentID have current row as new parentid
164
+ var idx = this.grid.dataView.getIdxById(row[this.primaryKey]);
165
+ while (++idx < data.length) {
166
+ if (data[idx][this.options.parentColumn] === oldparent) {
167
+ data[idx][this.options.parentColumn] = row[this.primaryKey];
168
+ }
169
+ //TODO: optimize -> break sooner
170
+ }
171
+ }
172
+ }
173
+ this.grid.refreshData();
174
+ };
175
+ GridTree.prototype.filterChildren = function (rows) {
176
+ var result = [];
177
+ var dict = {};
178
+ for (var i = 0; i < rows.length; i++) {
179
+ dict[rows[i][this.primaryKey]] = true;
180
+ }
181
+ for (var i = 0; i < rows.length; i++) {
182
+ var row = rows[i];
183
+ var parentid = row[this.options.parentColumn];
184
+ if (!parentid || !dict[parentid]) {
185
+ result.push(row);
186
+ }
187
+ }
188
+ return result;
189
+ };
190
+ GridTree.prototype.collapse = function (item) {
191
+ item[this.options.collapsedStateField] = true;
192
+ var children = this.getAllChildren(item);
193
+ for (var i = 0; i < children.length; i++) {
194
+ children[i][this.options.hiddenStateField] = true;
195
+ }
196
+ this.grid.refreshData();
197
+ };
198
+ GridTree.prototype.initEvents = function () {
199
+ var _this = this;
200
+ // collapse / expand click events
201
+ if (this.options.enableCollapsing) {
202
+ this.grid.onClick.subscribe(function (e, args) {
203
+ if (e.target.classList.contains("jsl-toggle")) {
204
+ e.stopImmediatePropagation();
205
+ _this.toggleExpand(_this.grid.dataView.getItem(args.row));
206
+ }
207
+ });
208
+ }
209
+ // filters
210
+ var hiddenFilter = {
211
+ field: this.options.hiddenStateField,
212
+ match: function (itm, field) {
213
+ return !itm[_this.options.hiddenStateField];
214
+ }
215
+ };
216
+ this.grid.addFilter(hiddenFilter);
217
+ };
218
+ return GridTree;
219
+ }());
220
+ export { GridTree };
package/lib/grid.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ export * from "./grid/slick.core";
2
+ export * from "./grid/slick.creator";
3
+ export * from "./grid/slick.dataview";
4
+ export * from "./grid/slick.editors.core";
5
+ export * from "./grid/slick.formatters";
6
+ export * from "./grid/slick.grid";
7
+ export * from "./grid/slick.groupitemmetadataprovider";
8
+ export * from "./grid/slick.tree";
9
+ export * from "./grid/plugins/slick.cellrangedecorator";
10
+ export * from "./grid/plugins/slick.cellrangeselector";
11
+ export * from "./grid/plugins/slick.cellselectionmodel";
12
+ export * from "./grid/plugins/slick.headermenu";
13
+ export * from "./grid/plugins/slick.rowselectionmodel";
package/lib/grid.js ADDED
@@ -0,0 +1,13 @@
1
+ export * from "./grid/slick.core";
2
+ export * from "./grid/slick.creator";
3
+ export * from "./grid/slick.dataview";
4
+ export * from "./grid/slick.editors.core";
5
+ export * from "./grid/slick.formatters";
6
+ export * from "./grid/slick.grid";
7
+ export * from "./grid/slick.groupitemmetadataprovider";
8
+ export * from "./grid/slick.tree";
9
+ export * from "./grid/plugins/slick.cellrangedecorator";
10
+ export * from "./grid/plugins/slick.cellrangeselector";
11
+ export * from "./grid/plugins/slick.cellselectionmodel";
12
+ export * from "./grid/plugins/slick.headermenu";
13
+ export * from "./grid/plugins/slick.rowselectionmodel";