@progress/kendo-vue-grid 3.5.0 → 3.5.1-dev.202208100944

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 (231) hide show
  1. package/dist/cdn/js/kendo-vue-grid.js +1 -1
  2. package/dist/es/Grid.js +20 -24
  3. package/dist/es/ScrollMode.js +1 -0
  4. package/dist/es/columnMenu/ColumnMenu.js +2 -2
  5. package/dist/es/columnMenu/GridColumnMenuCheckboxFilter.js +9 -13
  6. package/dist/es/columnMenu/GridColumnMenuFilter.js +423 -107
  7. package/dist/es/columnMenu/GridColumnMenuFilterCell.js +74 -97
  8. package/dist/es/columnMenu/GridColumnMenuFilterOperators.d.ts +36 -0
  9. package/dist/es/columnMenu/GridColumnMenuFilterOperators.js +68 -0
  10. package/dist/es/columnMenu/GridColumnMenuItem.js +2 -2
  11. package/dist/es/filterCommon.d.ts +1 -1
  12. package/dist/es/footer/Footer.js +1 -1
  13. package/dist/es/footer/FooterRow.js +1 -1
  14. package/dist/es/header/FilterRow.js +1 -1
  15. package/dist/es/header/Header.js +1 -1
  16. package/dist/es/header/HeaderRow.js +1 -1
  17. package/dist/es/interfaces/ExtendedColumnProps.js +1 -0
  18. package/dist/es/interfaces/GridCellProps.js +1 -0
  19. package/dist/es/interfaces/GridColumnMenuColumnProps.js +1 -0
  20. package/dist/es/interfaces/GridColumnMenuExtendedFilterProps.js +1 -0
  21. package/dist/es/interfaces/GridColumnMenuFilterBaseProps.js +1 -0
  22. package/dist/es/interfaces/GridColumnMenuFilterProps.js +1 -0
  23. package/dist/es/interfaces/GridColumnMenuFilterUIProps.js +1 -0
  24. package/dist/es/interfaces/GridColumnMenuProps.js +1 -0
  25. package/dist/es/interfaces/GridColumnMenuSortBaseProps.js +1 -0
  26. package/dist/es/interfaces/GridColumnProps.js +1 -0
  27. package/dist/es/interfaces/GridDetailRowProps.js +1 -0
  28. package/dist/es/interfaces/GridFilterCellProps.js +1 -0
  29. package/dist/es/interfaces/GridFilterOperator.js +1 -0
  30. package/dist/es/interfaces/GridFilterOperators.js +1 -0
  31. package/dist/es/interfaces/GridFooterCellProps.js +1 -0
  32. package/dist/es/interfaces/GridGroupableSettings.js +1 -0
  33. package/dist/es/interfaces/GridHeaderCellProps.js +1 -0
  34. package/dist/es/interfaces/GridHeaderSelectionCellProps.js +1 -0
  35. package/dist/es/interfaces/GridNoRecordsProps.js +1 -0
  36. package/dist/es/interfaces/GridProps.js +1 -0
  37. package/dist/es/interfaces/GridRowProps.js +1 -0
  38. package/dist/es/interfaces/GridRowType.js +1 -0
  39. package/dist/es/interfaces/GridSortSettings.js +9 -7
  40. package/dist/es/interfaces/GridToolbarProps.js +1 -0
  41. package/dist/es/interfaces/events.js +1 -0
  42. package/dist/es/package-metadata.js +1 -1
  43. package/dist/es/rows/GridDetailRow.d.ts +2 -1
  44. package/dist/es/utils/index.js +4 -4
  45. package/dist/esm/Grid.d.ts +180 -0
  46. package/dist/esm/Grid.js +2086 -0
  47. package/dist/esm/GridNav.d.ts +46 -0
  48. package/dist/esm/GridNav.js +112 -0
  49. package/dist/esm/GridNoRecords.d.ts +51 -0
  50. package/dist/esm/GridNoRecords.js +83 -0
  51. package/dist/esm/GridToolbar.d.ts +58 -0
  52. package/dist/esm/GridToolbar.js +77 -0
  53. package/dist/esm/ScrollMode.d.ts +1 -0
  54. package/dist/esm/ScrollMode.js +1 -0
  55. package/dist/esm/VirtualScroll.d.ts +41 -0
  56. package/dist/esm/VirtualScroll.js +217 -0
  57. package/dist/esm/additionalTypes.ts +21 -0
  58. package/dist/esm/cells/GridCell.d.ts +30 -0
  59. package/dist/esm/cells/GridCell.js +161 -0
  60. package/dist/esm/cells/GridDetailCell.d.ts +29 -0
  61. package/dist/esm/cells/GridDetailCell.js +82 -0
  62. package/dist/esm/cells/GridDetailHierarchyCell.d.ts +24 -0
  63. package/dist/esm/cells/GridDetailHierarchyCell.js +53 -0
  64. package/dist/esm/cells/GridEditCell.d.ts +40 -0
  65. package/dist/esm/cells/GridEditCell.js +312 -0
  66. package/dist/esm/cells/GridFilterCell.d.ts +26 -0
  67. package/dist/esm/cells/GridFilterCell.js +259 -0
  68. package/dist/esm/cells/GridGroupCell.d.ts +23 -0
  69. package/dist/esm/cells/GridGroupCell.js +179 -0
  70. package/dist/esm/cells/GridHierarchyCell.d.ts +23 -0
  71. package/dist/esm/cells/GridHierarchyCell.js +162 -0
  72. package/dist/esm/cells/GridSelectionCell.d.ts +34 -0
  73. package/dist/esm/cells/GridSelectionCell.js +138 -0
  74. package/dist/esm/columnMenu/ColumnMenu.d.ts +56 -0
  75. package/dist/esm/columnMenu/ColumnMenu.js +252 -0
  76. package/dist/esm/columnMenu/ColumnMenuContent.d.ts +33 -0
  77. package/dist/esm/columnMenu/ColumnMenuContent.js +123 -0
  78. package/dist/esm/columnMenu/GridColumnMenuCheckboxFilter.d.ts +86 -0
  79. package/dist/esm/columnMenu/GridColumnMenuCheckboxFilter.js +709 -0
  80. package/dist/esm/columnMenu/GridColumnMenuFilter.d.ts +339 -0
  81. package/dist/esm/columnMenu/GridColumnMenuFilter.js +1079 -0
  82. package/dist/esm/columnMenu/GridColumnMenuFilterCell.d.ts +45 -0
  83. package/dist/esm/columnMenu/GridColumnMenuFilterCell.js +152 -0
  84. package/dist/esm/columnMenu/GridColumnMenuFilterOperators.d.ts +36 -0
  85. package/dist/esm/columnMenu/GridColumnMenuFilterOperators.js +68 -0
  86. package/dist/esm/columnMenu/GridColumnMenuFilterUI.d.ts +24 -0
  87. package/dist/esm/columnMenu/GridColumnMenuFilterUI.js +155 -0
  88. package/dist/esm/columnMenu/GridColumnMenuItem.d.ts +42 -0
  89. package/dist/esm/columnMenu/GridColumnMenuItem.js +63 -0
  90. package/dist/esm/columnMenu/GridColumnMenuItemContent.d.ts +34 -0
  91. package/dist/esm/columnMenu/GridColumnMenuItemContent.js +51 -0
  92. package/dist/esm/columnMenu/GridColumnMenuItemGroup.d.ts +19 -0
  93. package/dist/esm/columnMenu/GridColumnMenuItemGroup.js +33 -0
  94. package/dist/esm/columnMenu/GridColumnMenuSort.d.ts +283 -0
  95. package/dist/esm/columnMenu/GridColumnMenuSort.js +375 -0
  96. package/dist/esm/drag/ColumnDraggable.d.ts +43 -0
  97. package/dist/esm/drag/ColumnDraggable.js +73 -0
  98. package/dist/esm/drag/ColumnResize.d.ts +31 -0
  99. package/dist/esm/drag/ColumnResize.js +126 -0
  100. package/dist/esm/drag/ColumnResizer.d.ts +40 -0
  101. package/dist/esm/drag/ColumnResizer.js +89 -0
  102. package/dist/esm/drag/CommonDragLogic.d.ts +35 -0
  103. package/dist/esm/drag/CommonDragLogic.js +177 -0
  104. package/dist/esm/drag/DragClue.d.ts +25 -0
  105. package/dist/esm/drag/DragClue.js +52 -0
  106. package/dist/esm/drag/DropClue.d.ts +24 -0
  107. package/dist/esm/drag/DropClue.js +46 -0
  108. package/dist/esm/drag/GroupingIndicator.d.ts +51 -0
  109. package/dist/esm/drag/GroupingIndicator.js +153 -0
  110. package/dist/esm/filterCommon.d.ts +75 -0
  111. package/dist/esm/filterCommon.js +156 -0
  112. package/dist/esm/footer/Footer.d.ts +52 -0
  113. package/dist/esm/footer/Footer.js +103 -0
  114. package/dist/esm/footer/FooterRow.d.ts +30 -0
  115. package/dist/esm/footer/FooterRow.js +73 -0
  116. package/dist/esm/header/FilterRow.d.ts +36 -0
  117. package/dist/esm/header/FilterRow.js +203 -0
  118. package/dist/esm/header/GridHeaderCell.d.ts +21 -0
  119. package/dist/esm/header/GridHeaderCell.js +60 -0
  120. package/dist/esm/header/GridHeaderSelectionCell.d.ts +32 -0
  121. package/dist/esm/header/GridHeaderSelectionCell.js +81 -0
  122. package/dist/esm/header/GroupPanel.d.ts +38 -0
  123. package/dist/esm/header/GroupPanel.js +108 -0
  124. package/dist/esm/header/Header.d.ts +64 -0
  125. package/dist/esm/header/Header.js +123 -0
  126. package/dist/esm/header/HeaderRow.d.ts +86 -0
  127. package/dist/esm/header/HeaderRow.js +517 -0
  128. package/dist/esm/interfaces/ExtendedColumnProps.d.ts +20 -0
  129. package/dist/esm/interfaces/ExtendedColumnProps.js +1 -0
  130. package/dist/esm/interfaces/GridCellProps.d.ts +156 -0
  131. package/dist/esm/interfaces/GridCellProps.js +1 -0
  132. package/dist/esm/interfaces/GridColumnMenuColumnProps.d.ts +13 -0
  133. package/dist/esm/interfaces/GridColumnMenuColumnProps.js +1 -0
  134. package/dist/esm/interfaces/GridColumnMenuExtendedFilterProps.d.ts +42 -0
  135. package/dist/esm/interfaces/GridColumnMenuExtendedFilterProps.js +1 -0
  136. package/dist/esm/interfaces/GridColumnMenuFilterBaseProps.d.ts +49 -0
  137. package/dist/esm/interfaces/GridColumnMenuFilterBaseProps.js +1 -0
  138. package/dist/esm/interfaces/GridColumnMenuFilterProps.d.ts +27 -0
  139. package/dist/esm/interfaces/GridColumnMenuFilterProps.js +1 -0
  140. package/dist/esm/interfaces/GridColumnMenuFilterUIProps.d.ts +55 -0
  141. package/dist/esm/interfaces/GridColumnMenuFilterUIProps.js +1 -0
  142. package/dist/esm/interfaces/GridColumnMenuProps.d.ts +19 -0
  143. package/dist/esm/interfaces/GridColumnMenuProps.js +1 -0
  144. package/dist/esm/interfaces/GridColumnMenuSortBaseProps.d.ts +28 -0
  145. package/dist/esm/interfaces/GridColumnMenuSortBaseProps.js +1 -0
  146. package/dist/esm/interfaces/GridColumnProps.d.ts +147 -0
  147. package/dist/esm/interfaces/GridColumnProps.js +1 -0
  148. package/dist/esm/interfaces/GridDetailRowProps.d.ts +9 -0
  149. package/dist/esm/interfaces/GridDetailRowProps.js +1 -0
  150. package/dist/esm/interfaces/GridFilterCellProps.d.ts +64 -0
  151. package/dist/esm/interfaces/GridFilterCellProps.js +1 -0
  152. package/dist/esm/interfaces/GridFilterOperator.d.ts +7 -0
  153. package/dist/esm/interfaces/GridFilterOperator.js +1 -0
  154. package/dist/esm/interfaces/GridFilterOperators.d.ts +49 -0
  155. package/dist/esm/interfaces/GridFilterOperators.js +1 -0
  156. package/dist/esm/interfaces/GridFooterCellProps.d.ts +7 -0
  157. package/dist/esm/interfaces/GridFooterCellProps.js +1 -0
  158. package/dist/esm/interfaces/GridGroupableSettings.d.ts +15 -0
  159. package/dist/esm/interfaces/GridGroupableSettings.js +1 -0
  160. package/dist/esm/interfaces/GridHeaderCellProps.d.ts +37 -0
  161. package/dist/esm/interfaces/GridHeaderCellProps.js +1 -0
  162. package/dist/esm/interfaces/GridHeaderSelectionCellProps.d.ts +17 -0
  163. package/dist/esm/interfaces/GridHeaderSelectionCellProps.js +1 -0
  164. package/dist/esm/interfaces/GridNoRecordsProps.d.ts +9 -0
  165. package/dist/esm/interfaces/GridNoRecordsProps.js +1 -0
  166. package/dist/esm/interfaces/GridProps.d.ts +311 -0
  167. package/dist/esm/interfaces/GridProps.js +1 -0
  168. package/dist/esm/interfaces/GridRowProps.d.ts +55 -0
  169. package/dist/esm/interfaces/GridRowProps.js +1 -0
  170. package/dist/esm/interfaces/GridRowType.d.ts +9 -0
  171. package/dist/esm/interfaces/GridRowType.js +1 -0
  172. package/dist/esm/interfaces/GridSortSettings.d.ts +26 -0
  173. package/dist/esm/interfaces/GridSortSettings.js +20 -0
  174. package/dist/esm/interfaces/GridToolbarProps.d.ts +9 -0
  175. package/dist/esm/interfaces/GridToolbarProps.js +1 -0
  176. package/dist/esm/interfaces/events.d.ts +248 -0
  177. package/dist/esm/interfaces/events.js +1 -0
  178. package/dist/esm/main.d.ts +38 -0
  179. package/dist/esm/main.js +31 -0
  180. package/dist/esm/messages/index.d.ts +150 -0
  181. package/dist/esm/messages/index.js +151 -0
  182. package/dist/esm/package-metadata.d.ts +5 -0
  183. package/dist/esm/package-metadata.js +11 -0
  184. package/dist/esm/package.json +3 -0
  185. package/dist/esm/rows/GridDetailRow.d.ts +16 -0
  186. package/dist/esm/rows/GridDetailRow.js +29 -0
  187. package/dist/esm/rows/GridRow.d.ts +28 -0
  188. package/dist/esm/rows/GridRow.js +84 -0
  189. package/dist/esm/utils/browser-support.service.d.ts +7 -0
  190. package/dist/esm/utils/browser-support.service.js +26 -0
  191. package/dist/esm/utils/index.d.ts +91 -0
  192. package/dist/esm/utils/index.js +393 -0
  193. package/dist/npm/Grid.js +66 -70
  194. package/dist/npm/GridNav.js +1 -1
  195. package/dist/npm/GridNoRecords.js +2 -2
  196. package/dist/npm/GridToolbar.js +1 -1
  197. package/dist/npm/cells/GridCell.js +2 -2
  198. package/dist/npm/cells/GridEditCell.js +2 -2
  199. package/dist/npm/cells/GridFilterCell.js +4 -4
  200. package/dist/npm/cells/GridHierarchyCell.js +1 -1
  201. package/dist/npm/cells/GridSelectionCell.js +2 -2
  202. package/dist/npm/columnMenu/ColumnMenu.js +5 -5
  203. package/dist/npm/columnMenu/GridColumnMenuCheckboxFilter.js +14 -18
  204. package/dist/npm/columnMenu/GridColumnMenuFilter.js +445 -125
  205. package/dist/npm/columnMenu/GridColumnMenuFilterCell.js +79 -102
  206. package/dist/npm/columnMenu/GridColumnMenuFilterOperators.d.ts +36 -0
  207. package/dist/npm/columnMenu/GridColumnMenuFilterOperators.js +79 -0
  208. package/dist/npm/columnMenu/GridColumnMenuItem.js +2 -2
  209. package/dist/npm/columnMenu/GridColumnMenuItemContent.js +1 -1
  210. package/dist/npm/columnMenu/GridColumnMenuItemGroup.js +1 -1
  211. package/dist/npm/columnMenu/GridColumnMenuSort.js +5 -4
  212. package/dist/npm/drag/ColumnDraggable.js +1 -1
  213. package/dist/npm/drag/CommonDragLogic.js +2 -2
  214. package/dist/npm/drag/GroupingIndicator.js +3 -3
  215. package/dist/npm/filterCommon.d.ts +1 -1
  216. package/dist/npm/filterCommon.js +19 -12
  217. package/dist/npm/footer/Footer.js +6 -6
  218. package/dist/npm/footer/FooterRow.js +2 -2
  219. package/dist/npm/header/FilterRow.js +7 -7
  220. package/dist/npm/header/GridHeaderCell.js +1 -1
  221. package/dist/npm/header/GridHeaderSelectionCell.js +1 -1
  222. package/dist/npm/header/GroupPanel.js +1 -1
  223. package/dist/npm/header/Header.js +8 -8
  224. package/dist/npm/header/HeaderRow.js +2 -2
  225. package/dist/npm/interfaces/GridSortSettings.js +11 -8
  226. package/dist/npm/main.js +6 -2
  227. package/dist/npm/package-metadata.js +1 -1
  228. package/dist/npm/rows/GridDetailRow.d.ts +2 -1
  229. package/dist/npm/rows/GridRow.js +2 -2
  230. package/dist/npm/utils/index.js +6 -5
  231. package/package.json +14 -14
@@ -0,0 +1,33 @@
1
+ // @ts-ignore
2
+ import * as Vue from 'vue';
3
+ var allVue = Vue;
4
+ var gh = allVue.h;
5
+ var isV3 = allVue.version && allVue.version[0] === '3';
6
+ import { getDefaultSlots } from '@progress/kendo-vue-common';
7
+ /**
8
+ * @hidden
9
+ */
10
+
11
+ var GridColumnMenuItemGroupVue2 = {
12
+ // @ts-ignore
13
+ setup: !isV3 ? undefined : function () {
14
+ var v3 = !!isV3;
15
+ return {
16
+ v3: v3
17
+ };
18
+ },
19
+ // @ts-ignore
20
+ render: function render(createElement) {
21
+ var h = gh || createElement;
22
+ var defaultSlot = getDefaultSlots(this);
23
+ return h("div", {
24
+ "class": "k-columnmenu-item-wrapper"
25
+ }, [defaultSlot]);
26
+ }
27
+ };
28
+ /**
29
+ * @hidden
30
+ */
31
+
32
+ var GridColumnMenuItemGroup = GridColumnMenuItemGroupVue2;
33
+ export { GridColumnMenuItemGroup, GridColumnMenuItemGroupVue2 };
@@ -0,0 +1,283 @@
1
+ import { DefineComponent, RecordPropsDefinition, ComponentOptions, Vue2type } from '../additionalTypes';
2
+ declare type DefaultData<V> = object | ((this: V) => {});
3
+ declare type DefaultMethods<V> = {
4
+ [key: string]: (this: V, ...args: any[]) => any;
5
+ };
6
+ import { SortDescriptor } from '@progress/kendo-data-query';
7
+ import { GridColumnMenuSortBaseProps } from '../interfaces/GridColumnMenuSortBaseProps';
8
+ /**
9
+ * Can be used to check if sorting is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active sort indicators.
10
+ */
11
+ export declare const sortGroupByField: (field: string, sort?: SortDescriptor[]) => boolean;
12
+ /**
13
+ * The props of the GridColumnMenuSort component.
14
+ */
15
+ export interface GridColumnMenuSortProps extends GridColumnMenuSortBaseProps {
16
+ }
17
+ /**
18
+ * @example
19
+ * {% meta height:410 %}
20
+ * ```html-preview
21
+ * <div id="vueapp">
22
+ * <Grid :style="{height: '280px'}"
23
+ * :data-items="gridData"
24
+ * :sortable="true"
25
+ * :sort= "sort"
26
+ * :filter="filter"
27
+ * :expand-field="'Discontinued'"
28
+ * @dataStateChange="dataStateChange"
29
+ * @expandchange="expandChange"
30
+ * :columns="columns">
31
+ * </Grid>
32
+ * </div>
33
+ * ```
34
+ * ```js
35
+ * import { Grid, GridColumnMenuSort } from '@progress/kendo-vue-grid';
36
+ * import { process } from '@progress/kendo-data-query';
37
+ * const ColumnMenu = {
38
+ * props: {
39
+ * column: Object,
40
+ * sortable: [Boolean, Object],
41
+ * sort: {
42
+ * type: Array
43
+ * },
44
+ * filter: Object,
45
+ * filterable: Boolean
46
+ * },
47
+ * components: {
48
+ * GridColumnMenuSort
49
+ * },
50
+ * template: `<div>
51
+ * <GridColumnMenuSort
52
+ * :column="column"
53
+ * :filterable="filterable"
54
+ * :filter="filter"
55
+ * @closemenu ="closeMenu"
56
+ * @sortchange = "sortChange"
57
+ * />
58
+ * </div>`,
59
+ * methods: {
60
+ * closeMenu () {
61
+ * this.$emit('closemenu');
62
+ * },
63
+ * sortChange (newDescriptor, e) {
64
+ * this.$emit('filterchange', newDescriptor, e);
65
+ * }
66
+ * }
67
+ * };
68
+ *
69
+ * Vue.component('Grid', Grid);
70
+ * new Vue({
71
+ * el: '#vueapp',
72
+ * components: {
73
+ * Grid
74
+ * },
75
+ * created: function() {
76
+ * this.getData();
77
+ * },
78
+ * methods: {
79
+ * getData: function () {
80
+ * let dataState = {
81
+ * filter: this.filter,
82
+ * sort: this.sort
83
+ * };
84
+ * this.gridData = process([{
85
+ * "ProductID": 1,
86
+ * "ProductName": "Chai",
87
+ * "UnitsInStock": 39,
88
+ * "Discontinued": false,
89
+ * "FirstOrderedOn": new Date(1996, 8, 20)
90
+ * },{
91
+ * "ProductID": 2,
92
+ * "ProductName": "Chang",
93
+ * "UnitsInStock": 17,
94
+ * "Discontinued": false,
95
+ * "FirstOrderedOn": new Date(1996, 7, 12)
96
+ * },{
97
+ * "ProductID": 3,
98
+ * "ProductName": "Aniseed Syrup",
99
+ * "UnitsInStock": 13,
100
+ * "Discontinued": false,
101
+ * "FirstOrderedOn": new Date(1996, 8, 26)
102
+ * },{
103
+ * "ProductID": 4,
104
+ * "ProductName": "Chef Anton's Cajun Seasoning",
105
+ * "UnitsInStock": 53,
106
+ * "Discontinued": false,
107
+ * "FirstOrderedOn": new Date(1996, 9, 19)
108
+ * }], dataState);
109
+ * },
110
+ * createAppState: function(dataState) {
111
+ * this.sort = dataState.sort;
112
+ * this.filter = dataState.filter;
113
+ * this.getData();
114
+ * },
115
+ * dataStateChange: function (event) {
116
+ * this.createAppState(event.data);
117
+ * },
118
+ * expandChange: function (event) {
119
+ * Vue.set(event.dataItem, event.target.$props.expandField, event.value);
120
+ * }
121
+ * },
122
+ * data: function () {
123
+ * return {
124
+ * filter: null,
125
+ * sort: [],
126
+ * gridData: [],
127
+ * columns: [
128
+ * { field: 'ProductID'},
129
+ * { field: 'ProductName', title: 'Product Name' },
130
+ * { field: 'UnitsInStock', title: 'Units In Stock', columnMenu: ColumnMenu }
131
+ * ]
132
+ * };
133
+ * }
134
+ * } );
135
+ * ```
136
+ */
137
+ /**
138
+ * @hidden
139
+ */
140
+ export interface GridColumnMenuSortMethods extends Vue2type {
141
+ onAscClick: (e: any) => void;
142
+ onDescClick: (e: any) => void;
143
+ onSort: (e: any, selectedDir: 'asc' | 'desc') => void;
144
+ }
145
+ /**
146
+ * @hidden
147
+ */
148
+ declare let GridColumnMenuSortVue2: ComponentOptions<Vue2type, DefaultData<{}>, DefaultMethods<GridColumnMenuSortMethods>, {}, RecordPropsDefinition<GridColumnMenuSortProps>>;
149
+ /**
150
+ *
151
+ *
152
+ * {% meta height:410 %}
153
+ * ```html-preview
154
+ * <div id="vueapp">
155
+ * <Grid :style="{height: '280px'}"
156
+ * :data-items="gridData"
157
+ * :sortable="true"
158
+ * :sort= "sort"
159
+ * :filter="filter"
160
+ * :expand-field="'Discontinued'"
161
+ * @datastatechange="dataStateChange"
162
+ * @expandchange="expandChange"
163
+ * :columns="columns">
164
+ * </Grid>
165
+ * </div>
166
+ * ```
167
+ * ```js
168
+ * import { Grid, GridColumnMenuSort } from '@progress/kendo-vue-grid';
169
+ * import { process } from '@progress/kendo-data-query';
170
+ * const ColumnMenu = {
171
+ * props: {
172
+ * column: Object,
173
+ * sortable: [Boolean, Object],
174
+ * sort: {
175
+ * type: Array
176
+ * },
177
+ * filter: Object,
178
+ * filterable: Boolean
179
+ * },
180
+ * components: {
181
+ * GridColumnMenuSort
182
+ * },
183
+ * template: `<div>
184
+ * <GridColumnMenuSort
185
+ * :column="column"
186
+ * :filterable="filterable"
187
+ * :filter="filter"
188
+ * @closemenu ="closeMenu"
189
+ * @sortchange = "sortChange"
190
+ * />
191
+ * </div>`,
192
+ * methods: {
193
+ * closeMenu () {
194
+ * this.$emit('closemenu');
195
+ * },
196
+ * sortChange (newDescriptor, e) {
197
+ * this.$emit('filterchange', newDescriptor, e);
198
+ * }
199
+ * }
200
+ * };
201
+ *
202
+ * Vue.component('Grid', Grid);
203
+ * new Vue({
204
+ * el: '#vueapp',
205
+ * components: {
206
+ * Grid
207
+ * },
208
+ * created: function() {
209
+ * this.getData();
210
+ * },
211
+ * methods: {
212
+ * getData: function () {
213
+ * let dataState = {
214
+ * filter: this.filter,
215
+ * sort: this.sort
216
+ * };
217
+ * this.gridData = process([{
218
+ * "ProductID": 1,
219
+ * "ProductName": "Chai",
220
+ * "UnitsInStock": 39,
221
+ * "Discontinued": false,
222
+ * "FirstOrderedOn": new Date(1996, 8, 20)
223
+ * },{
224
+ * "ProductID": 2,
225
+ * "ProductName": "Chang",
226
+ * "UnitsInStock": 17,
227
+ * "Discontinued": false,
228
+ * "FirstOrderedOn": new Date(1996, 7, 12)
229
+ * },{
230
+ * "ProductID": 3,
231
+ * "ProductName": "Aniseed Syrup",
232
+ * "UnitsInStock": 13,
233
+ * "Discontinued": false,
234
+ * "FirstOrderedOn": new Date(1996, 8, 26)
235
+ * },{
236
+ * "ProductID": 4,
237
+ * "ProductName": "Chef Anton's Cajun Seasoning",
238
+ * "UnitsInStock": 53,
239
+ * "Discontinued": false,
240
+ * "FirstOrderedOn": new Date(1996, 9, 19)
241
+ * }], dataState);
242
+ * },
243
+ * createAppState: function(dataState) {
244
+ * this.sort = dataState.sort;
245
+ * this.filter = dataState.filter;
246
+ * this.getData();
247
+ * },
248
+ * dataStateChange: function (event) {
249
+ * this.createAppState(event.data);
250
+ * },
251
+ * expandChange: function (event) {
252
+ * event.dataItem[event.target.$props.expandField] = event.value;
253
+ * //
254
+ * // In Vue 2 context, instead of the above line, inside the expandChange method we should have the following:
255
+ * //
256
+ * // Vue.set(
257
+ * // event.dataItem,
258
+ * // event.target.$props.expandField,
259
+ * // event.dataItem.expanded === undefined ? false : !event.dataItem.expanded
260
+ * // );
261
+ * //
262
+ * }
263
+ * },
264
+ * data: function () {
265
+ * return {
266
+ * filter: null,
267
+ * sort: [],
268
+ * gridData: [],
269
+ * columns: [
270
+ * { field: 'ProductID'},
271
+ * { field: 'ProductName', title: 'Product Name' },
272
+ * { field: 'UnitsInStock', title: 'Units In Stock', columnMenu: ColumnMenu }
273
+ * ]
274
+ * };
275
+ * }
276
+ * } );
277
+ * ```
278
+ *
279
+ *
280
+ * ### props <span class='code'>[GridColumnMenuSortProps]({% slug api_grid_gridcolumnmenusortprops %})</span>
281
+ */
282
+ declare const GridColumnMenuSort: DefineComponent<GridColumnMenuSortProps, any, {}, {}, GridColumnMenuSortMethods, {}, {}, {}, string, GridColumnMenuSortProps, GridColumnMenuSortProps, {}>;
283
+ export { GridColumnMenuSort, GridColumnMenuSortVue2 };
@@ -0,0 +1,375 @@
1
+ // @ts-ignore
2
+ import * as Vue from 'vue';
3
+ var allVue = Vue;
4
+ var gh = allVue.h;
5
+ var isV3 = allVue.version && allVue.version[0] === '3';
6
+ var inject = allVue.inject;
7
+ import { GridColumnMenuItem } from './GridColumnMenuItem.js';
8
+ import { GridColumnMenuItemGroup } from './GridColumnMenuItemGroup.js';
9
+ import { normalize } from '../interfaces/GridSortSettings.js';
10
+ import { provideLocalizationService } from '@progress/kendo-vue-intl';
11
+ import { messages, sortAscending, sortDescending } from '../messages.js';
12
+ import { hasListener } from '@progress/kendo-vue-common';
13
+ /**
14
+ * @hidden
15
+ */
16
+
17
+ var ASC_DIR = 'asc';
18
+ /**
19
+ * @hidden
20
+ */
21
+
22
+ var DESC_DIR = 'desc';
23
+ /**
24
+ * @hidden
25
+ */
26
+
27
+ var sortSeqMap = {
28
+ true: {
29
+ 'asc': {
30
+ 'asc': '',
31
+ 'desc': 'desc'
32
+ },
33
+ 'desc': {
34
+ 'asc': 'asc',
35
+ 'desc': ''
36
+ },
37
+ '': {
38
+ 'asc': 'asc',
39
+ 'desc': 'desc'
40
+ }
41
+ },
42
+ false: {
43
+ 'asc': {
44
+ 'asc': 'asc',
45
+ 'desc': 'desc'
46
+ },
47
+ 'desc': {
48
+ 'asc': 'asc',
49
+ 'desc': 'desc'
50
+ },
51
+ '': {
52
+ 'asc': 'asc',
53
+ 'desc': 'desc'
54
+ }
55
+ }
56
+ };
57
+ /**
58
+ * @hidden
59
+ */
60
+
61
+ var sortIndex = function sortIndex(field, sort) {
62
+ if (!sort) {
63
+ return -1;
64
+ }
65
+
66
+ return sort.findIndex(function (s) {
67
+ return s.field === field;
68
+ });
69
+ };
70
+ /**
71
+ * @hidden
72
+ */
73
+
74
+
75
+ var sortedAsc = function sortedAsc(sortedIndex, sort) {
76
+ return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === ASC_DIR);
77
+ };
78
+ /**
79
+ * @hidden
80
+ */
81
+
82
+
83
+ var sortedDesc = function sortedDesc(sortedIndex, sort) {
84
+ return !!(sort && sortedIndex > -1 && sort[sortedIndex].dir === DESC_DIR);
85
+ }; // tslint:disable:max-line-length
86
+
87
+ /**
88
+ * Can be used to check if sorting is applied to a specific field ([see example]({% slug column_menu_grid %}#toc-styling-the-column-menu-icon)). Useful for creating active sort indicators.
89
+ */
90
+ // tslint:enable:max-line-length
91
+
92
+
93
+ export var sortGroupByField = function sortGroupByField(field, sort) {
94
+ var currentSortIndex = sortIndex(field, sort);
95
+ return sortedDesc(currentSortIndex, sort) || sortedAsc(currentSortIndex, sort);
96
+ };
97
+ /**
98
+ * @hidden
99
+ */
100
+
101
+ var GridColumnMenuSortVue2 = {
102
+ props: {
103
+ sortable: [Boolean, Object],
104
+ sort: {
105
+ type: Array
106
+ },
107
+ column: Object
108
+ },
109
+ inject: {
110
+ kendoLocalizationService: {
111
+ default: null
112
+ }
113
+ },
114
+ methods: {
115
+ onAscClick: function onAscClick(e) {
116
+ this.onSort(e, ASC_DIR);
117
+ this.$emit('closemenu');
118
+ },
119
+ onDescClick: function onDescClick(e) {
120
+ this.onSort(e, DESC_DIR);
121
+ this.$emit('closemenu');
122
+ },
123
+ onSort: function onSort(e, selectedDir) {
124
+ e.preventDefault();
125
+
126
+ if (!hasListener.call(this, 'sortchange')) {
127
+ return;
128
+ }
129
+
130
+ var _a = this.$props,
131
+ column = _a.column,
132
+ sortable = _a.sortable,
133
+ sort = _a.sort;
134
+
135
+ var _b = normalize(sortable || false, false),
136
+ allowUnsort = _b.allowUnsort,
137
+ mode = _b.mode;
138
+
139
+ var oldDescriptor = (sort || []).filter(function (d) {
140
+ return d.field === column.field;
141
+ })[0];
142
+ var dir = sortSeqMap[allowUnsort][oldDescriptor && oldDescriptor.dir || ''][selectedDir];
143
+ var newDescriptor = mode === 'single' ? [] : (this.$props.sort || []).filter(function (d) {
144
+ return d.field !== column.field;
145
+ });
146
+
147
+ if (dir !== '' && column.field) {
148
+ newDescriptor.push({
149
+ field: column.field,
150
+ dir: dir
151
+ });
152
+ }
153
+
154
+ this.$emit('sortchange', newDescriptor, {
155
+ event: e,
156
+ field: this.$props.column.field
157
+ });
158
+ }
159
+ },
160
+ // @ts-ignore
161
+ setup: !isV3 ? undefined : function () {
162
+ var v3 = !!isV3;
163
+ var kendoLocalizationService = inject('kendoLocalizationService', {});
164
+ return {
165
+ v3: v3,
166
+ kendoLocalizationService: kendoLocalizationService
167
+ };
168
+ },
169
+ // @ts-ignore
170
+ render: function render(createElement) {
171
+ var _this = this;
172
+
173
+ var h = gh || createElement;
174
+ var _a = this.$props,
175
+ sort = _a.sort,
176
+ column = _a.column;
177
+ var currentSortIndex = sortIndex(column.field, sort);
178
+ var localizationService = provideLocalizationService(this);
179
+ return (// @ts-ignore function children
180
+ h(GridColumnMenuItemGroup, this.v3 ? function () {
181
+ return [// @ts-ignore
182
+ h(GridColumnMenuItem, {
183
+ title: localizationService.toLanguageString(sortAscending, messages[sortAscending]),
184
+ attrs: _this.v3 ? undefined : {
185
+ title: localizationService.toLanguageString(sortAscending, messages[sortAscending]),
186
+ iconClass: 'k-i-sort-asc-sm',
187
+ selected: sortedAsc(currentSortIndex, sort)
188
+ },
189
+ iconClass: 'k-i-sort-asc-sm',
190
+ selected: sortedAsc(currentSortIndex, sort),
191
+ onMenuitemclick: _this.onAscClick,
192
+ on: _this.v3 ? undefined : {
193
+ "menuitemclick": _this.onAscClick
194
+ }
195
+ }), // @ts-ignore
196
+ h(GridColumnMenuItem, {
197
+ title: localizationService.toLanguageString(sortDescending, messages[sortDescending]),
198
+ attrs: _this.v3 ? undefined : {
199
+ title: localizationService.toLanguageString(sortDescending, messages[sortDescending]),
200
+ iconClass: 'k-i-sort-desc-sm',
201
+ selected: sortedDesc(currentSortIndex, sort)
202
+ },
203
+ iconClass: 'k-i-sort-desc-sm',
204
+ selected: sortedDesc(currentSortIndex, sort),
205
+ onMenuitemclick: _this.onDescClick,
206
+ on: _this.v3 ? undefined : {
207
+ "menuitemclick": _this.onDescClick
208
+ }
209
+ })];
210
+ } : [h(GridColumnMenuItem, {
211
+ title: localizationService.toLanguageString(sortAscending, messages[sortAscending]),
212
+ attrs: _this.v3 ? undefined : {
213
+ title: localizationService.toLanguageString(sortAscending, messages[sortAscending]),
214
+ iconClass: 'k-i-sort-asc-sm',
215
+ selected: sortedAsc(currentSortIndex, sort)
216
+ },
217
+ iconClass: 'k-i-sort-asc-sm',
218
+ selected: sortedAsc(currentSortIndex, sort),
219
+ onMenuitemclick: _this.onAscClick,
220
+ on: _this.v3 ? undefined : {
221
+ "menuitemclick": _this.onAscClick
222
+ }
223
+ }), h(GridColumnMenuItem, {
224
+ title: localizationService.toLanguageString(sortDescending, messages[sortDescending]),
225
+ attrs: _this.v3 ? undefined : {
226
+ title: localizationService.toLanguageString(sortDescending, messages[sortDescending]),
227
+ iconClass: 'k-i-sort-desc-sm',
228
+ selected: sortedDesc(currentSortIndex, sort)
229
+ },
230
+ iconClass: 'k-i-sort-desc-sm',
231
+ selected: sortedDesc(currentSortIndex, sort),
232
+ onMenuitemclick: _this.onDescClick,
233
+ on: _this.v3 ? undefined : {
234
+ "menuitemclick": _this.onDescClick
235
+ }
236
+ })])
237
+ );
238
+ }
239
+ };
240
+ /**
241
+ *
242
+ *
243
+ * {% meta height:410 %}
244
+ * ```html-preview
245
+ * <div id="vueapp">
246
+ * <Grid :style="{height: '280px'}"
247
+ * :data-items="gridData"
248
+ * :sortable="true"
249
+ * :sort= "sort"
250
+ * :filter="filter"
251
+ * :expand-field="'Discontinued'"
252
+ * @datastatechange="dataStateChange"
253
+ * @expandchange="expandChange"
254
+ * :columns="columns">
255
+ * </Grid>
256
+ * </div>
257
+ * ```
258
+ * ```js
259
+ * import { Grid, GridColumnMenuSort } from '@progress/kendo-vue-grid';
260
+ * import { process } from '@progress/kendo-data-query';
261
+ * const ColumnMenu = {
262
+ * props: {
263
+ * column: Object,
264
+ * sortable: [Boolean, Object],
265
+ * sort: {
266
+ * type: Array
267
+ * },
268
+ * filter: Object,
269
+ * filterable: Boolean
270
+ * },
271
+ * components: {
272
+ * GridColumnMenuSort
273
+ * },
274
+ * template: `<div>
275
+ * <GridColumnMenuSort
276
+ * :column="column"
277
+ * :filterable="filterable"
278
+ * :filter="filter"
279
+ * @closemenu ="closeMenu"
280
+ * @sortchange = "sortChange"
281
+ * />
282
+ * </div>`,
283
+ * methods: {
284
+ * closeMenu () {
285
+ * this.$emit('closemenu');
286
+ * },
287
+ * sortChange (newDescriptor, e) {
288
+ * this.$emit('filterchange', newDescriptor, e);
289
+ * }
290
+ * }
291
+ * };
292
+ *
293
+ * Vue.component('Grid', Grid);
294
+ * new Vue({
295
+ * el: '#vueapp',
296
+ * components: {
297
+ * Grid
298
+ * },
299
+ * created: function() {
300
+ * this.getData();
301
+ * },
302
+ * methods: {
303
+ * getData: function () {
304
+ * let dataState = {
305
+ * filter: this.filter,
306
+ * sort: this.sort
307
+ * };
308
+ * this.gridData = process([{
309
+ * "ProductID": 1,
310
+ * "ProductName": "Chai",
311
+ * "UnitsInStock": 39,
312
+ * "Discontinued": false,
313
+ * "FirstOrderedOn": new Date(1996, 8, 20)
314
+ * },{
315
+ * "ProductID": 2,
316
+ * "ProductName": "Chang",
317
+ * "UnitsInStock": 17,
318
+ * "Discontinued": false,
319
+ * "FirstOrderedOn": new Date(1996, 7, 12)
320
+ * },{
321
+ * "ProductID": 3,
322
+ * "ProductName": "Aniseed Syrup",
323
+ * "UnitsInStock": 13,
324
+ * "Discontinued": false,
325
+ * "FirstOrderedOn": new Date(1996, 8, 26)
326
+ * },{
327
+ * "ProductID": 4,
328
+ * "ProductName": "Chef Anton's Cajun Seasoning",
329
+ * "UnitsInStock": 53,
330
+ * "Discontinued": false,
331
+ * "FirstOrderedOn": new Date(1996, 9, 19)
332
+ * }], dataState);
333
+ * },
334
+ * createAppState: function(dataState) {
335
+ * this.sort = dataState.sort;
336
+ * this.filter = dataState.filter;
337
+ * this.getData();
338
+ * },
339
+ * dataStateChange: function (event) {
340
+ * this.createAppState(event.data);
341
+ * },
342
+ * expandChange: function (event) {
343
+ * event.dataItem[event.target.$props.expandField] = event.value;
344
+ * //
345
+ * // In Vue 2 context, instead of the above line, inside the expandChange method we should have the following:
346
+ * //
347
+ * // Vue.set(
348
+ * // event.dataItem,
349
+ * // event.target.$props.expandField,
350
+ * // event.dataItem.expanded === undefined ? false : !event.dataItem.expanded
351
+ * // );
352
+ * //
353
+ * }
354
+ * },
355
+ * data: function () {
356
+ * return {
357
+ * filter: null,
358
+ * sort: [],
359
+ * gridData: [],
360
+ * columns: [
361
+ * { field: 'ProductID'},
362
+ * { field: 'ProductName', title: 'Product Name' },
363
+ * { field: 'UnitsInStock', title: 'Units In Stock', columnMenu: ColumnMenu }
364
+ * ]
365
+ * };
366
+ * }
367
+ * } );
368
+ * ```
369
+ *
370
+ *
371
+ * ### props <span class='code'>[GridColumnMenuSortProps]({% slug api_grid_gridcolumnmenusortprops %})</span>
372
+ */
373
+
374
+ var GridColumnMenuSort = GridColumnMenuSortVue2;
375
+ export { GridColumnMenuSort, GridColumnMenuSortVue2 };