|
1 | 1 | import { Injectable, SimpleChanges } from '@angular/core'; |
2 | | - |
3 | | -const AVAILABLE_OPTIONS: string[] = ['activeHeaderClassName', 'allowEmpty', 'allowHtml', 'allowInsertColumn', 'allowInsertRow', |
4 | | -'allowInvalid', 'allowRemoveColumn', 'allowRemoveRow', 'autoColumnSize', 'autoComplete', 'autoRowSize', |
5 | | -'autoWrapCol', 'autoWrapRow', 'cell', 'cells', 'checkedTemplate', 'className', 'colHeaders', 'columnHeaderHeight', |
6 | | -'columns', 'columnSorting', 'colWidths', 'commentedCellClassName', 'comments', 'contextMenu', 'copyable', |
7 | | -'copyPaste', 'correctFormat', 'currentColClassName', 'currentHeaderClassName', 'currentRowClassName', |
8 | | -'customBorders', 'data', 'dataSchema', 'dateFormat', 'debug', 'defaultDate', 'disableVisualSelection', |
9 | | -'dragToScroll', 'editor', 'enterBeginsEditing', 'enterMoves', 'fillHandle', 'filter', 'filteringCaseSensitive', |
10 | | -'fixedColumnsLeft', 'fixedRowsTop', 'fragmentSelection', 'height', 'invalidCellClassName', 'label', |
11 | | -'language', 'manualColumnFreeze', 'manualColumnMove', 'manualColumnResize', 'manualRowMove', 'manualRowResize', |
12 | | -'maxCols', 'maxRows', 'mergeCells', 'minCols', 'minRows', 'minSpareCols', 'minSpareRows', 'multiSelect', |
13 | | -'noWordWrapClassName', 'numericFormat', 'observeChanges', 'observeDOMVisibility', 'outsideClickDeselects', |
14 | | -'persistentState', 'placeholder', 'placeholderCellClassName', 'preventOverflow', 'readOnly', |
15 | | -'readOnlyCellClassName', 'renderAllRows', 'renderer', 'rowHeaders', 'rowHeaderWidth', 'rowHeights', |
16 | | -'search', 'selectionMode', 'selectOptions', 'skipColumnOnPaste', 'sortByRelevance', 'sortFunction', 'sortIndicator', |
17 | | -'source', 'startCols', 'startRows', 'stretchH', 'strict', 'tableClassName', 'tabMoves', 'title', |
18 | | -'trimDropdown', 'trimWhitespace', 'type', 'uncheckedTemplate', 'undo', 'validator', |
19 | | -'viewportColumnRenderingOffset', 'viewportRowRenderingOffset', 'visibleRows', 'width', 'wordWrap']; |
20 | | - |
21 | | -const AVAILABLE_HOOKS: string[] = ['afterBeginEditing', 'afterCellMetaReset', 'afterChange', |
22 | | -'afterChangesObserved', 'afterColumnMove', 'afterColumnResize', 'afterColumnSort', |
23 | | -'afterContextMenuDefaultOptions', 'afterContextMenuHide', 'afterContextMenuShow', 'afterCopy', |
24 | | -'afterCopyLimit', 'afterCreateCol', 'afterCreateRow', 'afterCut', 'afterDeselect', 'afterDestroy', |
25 | | -'afterDocumentKeyDown', 'afterGetCellMeta', 'afterGetColHeader', 'afterGetColumnHeaderRenderers', |
26 | | -'afterGetRowHeader', 'afterGetRowHeaderRenderers', 'afterInit', 'afterLanguageChange', 'afterListen', |
27 | | -'afterLoadData', 'afterModifyTransformEnd', 'afterModifyTransformStart', 'afterMomentumScroll', |
28 | | -'afterOnCellCornerDblClick', 'afterOnCellCornerMouseDown', 'afterOnCellMouseDown', |
29 | | -'afterOnCellMouseOut', 'afterOnCellMouseOver', 'afterPaste', 'afterPluginsInitialized', 'afterRedo', |
30 | | -'afterRemoveCellMeta', 'afterRemoveCol', 'afterRemoveRow', 'afterRender', 'afterRenderer', |
31 | | -'afterRowMove', 'afterRowResize', 'afterScrollHorizontally', 'afterScrollVertically', 'afterSelection', |
32 | | -'afterSelectionByProp', 'afterSelectionEnd', 'afterSelectionEndByProp', 'afterSetCellMeta', |
33 | | -'afterSetDataAtCell', 'afterSetDataAtRowProp', 'afterUndo', 'afterUnlisten', 'afterUpdateSettings', |
34 | | -'afterValidate', 'afterViewportColumnCalculatorOverride', 'afterViewportRowCalculatorOverride', |
35 | | -'beforeAutofill', 'beforeAutofillInsidePopulate', 'beforeCellAlignment', 'beforeChange', 'beforeChangeRender', |
36 | | -'beforeColumnMove', 'beforeColumnResize', 'beforeColumnSort', 'beforeContextMenuSetItems', 'beforeCopy', |
37 | | -'beforeCreateCol', 'beforeCreateRow', 'beforeCut', 'beforeDrawBorders', 'beforeGetCellMeta', 'beforeInit', |
38 | | -'beforeInitWalkontable', 'beforeKeyDown', 'beforeLanguageChange', 'beforeOnCellMouseDown', 'beforeOnCellMouseOut', |
39 | | -'beforeOnCellMouseOver', 'beforePaste', 'beforeRedo', 'beforeRemoveCellMeta', 'beforeRemoveCol', |
40 | | -'beforeRemoveRow', 'beforeRender', 'beforeRenderer', 'beforeRowMove', 'beforeRowResize', 'beforeSetRangeEnd', |
41 | | -'beforeSetRangeStart', 'beforeStretchingColumnWidth', 'beforeTouchScroll', 'beforeUndo', 'beforeValidate', |
42 | | -'beforeValueRender', 'construct', 'init', 'manualRowHeights', 'modifyAutofillRange', 'modifyCol', |
43 | | -'modifyColHeader', 'modifyColumnHeaderHeight', 'modifyColWidth', 'modifyCopyableRange', 'modifyData', |
44 | | -'modifyRow', 'modifyRowData', 'modifyRowHeader', 'modifyRowHeaderWidth', 'modifyRowHeight', 'modifyTransformEnd', |
45 | | -'modifyTransformStart', 'persistentStateLoad', 'persistentStateReset', 'persistentStateSave', |
46 | | -'skipLengthCache', 'unmodifyCol', 'unmodifyRow']; |
| 2 | +import * as Handsontable from 'handsontable'; |
| 3 | +// @ts-ignore |
| 4 | +const AVAILABLE_OPTIONS: string[] = Object.keys(Handsontable.DefaultSettings.prototype); |
| 5 | +// @ts-ignore |
| 6 | +const AVAILABLE_HOOKS: string[] = Handsontable.hooks.getRegistered(); |
47 | 7 |
|
48 | 8 | @Injectable() |
49 | 9 | export class HotSettingsResolver { |
50 | | - |
51 | | - mergeSettings(component): object { |
52 | | - const mergedSettings: object = {}; |
| 10 | + mergeSettings(component): Handsontable.GridSettings { |
| 11 | + const mergedSettings: Handsontable.GridSettings = {}; |
53 | 12 | const options = AVAILABLE_HOOKS.concat(AVAILABLE_OPTIONS); |
54 | 13 |
|
55 | | - options.forEach((key) => { |
| 14 | + options.forEach(key => { |
56 | 15 | let option; |
57 | 16 |
|
58 | 17 | if (typeof component['settings'] === 'object') { |
@@ -81,8 +40,8 @@ export class HotSettingsResolver { |
81 | 40 | return mergedSettings; |
82 | 41 | } |
83 | 42 |
|
84 | | - prepareChanges(changes: SimpleChanges): object { |
85 | | - const result: object = {}; |
| 43 | + prepareChanges(changes: SimpleChanges): Handsontable.GridSettings { |
| 44 | + const result: Handsontable.GridSettings = {}; |
86 | 45 | const parameters: string[] = Object.keys(changes); |
87 | 46 |
|
88 | 47 | parameters.forEach((param) => { |
|
0 commit comments