tabulator-tables 6.5.0 → 6.5.1
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.
- package/dist/js/tabulator.js +1 -1
- package/dist/js/tabulator.min.js +1 -1
- package/dist/js/tabulator_esm.js +1 -1
- package/dist/js/tabulator_esm.min.js +1 -1
- package/dist/js/tabulator_esm.min.mjs +1 -1
- package/dist/js/tabulator_esm.mjs +1 -1
- package/package.json +2 -1
- package/src/js/builds/esm.js +16 -0
- package/src/js/builds/jquery_wrapper.js +63 -0
- package/src/js/builds/usd.js +1 -0
- package/src/js/core/ColumnManager.js +789 -0
- package/src/js/core/CoreFeature.js +140 -0
- package/src/js/core/FooterManager.js +102 -0
- package/src/js/core/Module.js +140 -0
- package/src/js/core/RowManager.js +1140 -0
- package/src/js/core/Tabulator.js +928 -0
- package/src/js/core/TabulatorFull.js +21 -0
- package/src/js/core/cell/Cell.js +299 -0
- package/src/js/core/cell/CellComponent.js +79 -0
- package/src/js/core/column/Column.js +978 -0
- package/src/js/core/column/ColumnComponent.js +151 -0
- package/src/js/core/column/defaults/options.js +18 -0
- package/src/js/core/defaults/options.js +66 -0
- package/src/js/core/modules/core.js +3 -0
- package/src/js/core/modules/optional.js +37 -0
- package/src/js/core/rendering/Renderer.js +204 -0
- package/src/js/core/rendering/renderers/BasicHorizontal.js +27 -0
- package/src/js/core/rendering/renderers/BasicVertical.js +103 -0
- package/src/js/core/rendering/renderers/VirtualDomHorizontal.js +587 -0
- package/src/js/core/rendering/renderers/VirtualDomVertical.js +642 -0
- package/src/js/core/row/PseudoRow.js +47 -0
- package/src/js/core/row/Row.js +487 -0
- package/src/js/core/row/RowComponent.js +94 -0
- package/src/js/core/tools/Alert.js +66 -0
- package/src/js/core/tools/ComponentFunctionBinder.js +32 -0
- package/src/js/core/tools/DataLoader.js +128 -0
- package/src/js/core/tools/DependencyRegistry.js +82 -0
- package/src/js/core/tools/DeprecationAdvisor.js +51 -0
- package/src/js/core/tools/ExternalEventBus.js +105 -0
- package/src/js/core/tools/Helpers.js +66 -0
- package/src/js/core/tools/InteractionMonitor.js +329 -0
- package/src/js/core/tools/InternalEventBus.js +162 -0
- package/src/js/core/tools/ModuleBinder.js +153 -0
- package/src/js/core/tools/OptionsList.js +45 -0
- package/src/js/core/tools/Popup.js +317 -0
- package/src/js/core/tools/TableRegistry.js +65 -0
- package/src/js/modules/Accessor/Accessor.js +115 -0
- package/src/js/modules/Accessor/defaults/accessors.js +5 -0
- package/src/js/modules/Ajax/Ajax.js +142 -0
- package/src/js/modules/Ajax/defaults/config.js +3 -0
- package/src/js/modules/Ajax/defaults/contentTypeFormatters.js +45 -0
- package/src/js/modules/Ajax/defaults/loaderPromise.js +87 -0
- package/src/js/modules/Ajax/defaults/urlGenerator.js +44 -0
- package/src/js/modules/Clipboard/Clipboard.js +282 -0
- package/src/js/modules/Clipboard/defaults/pasteActions.js +11 -0
- package/src/js/modules/Clipboard/defaults/pasteParsers.js +75 -0
- package/src/js/modules/Clipboard/extensions/extensions.js +9 -0
- package/src/js/modules/Clipboard/extensions/keybindings/actions.js +9 -0
- package/src/js/modules/Clipboard/extensions/keybindings/bindings.js +3 -0
- package/src/js/modules/ColumnCalcs/CalcComponent.js +46 -0
- package/src/js/modules/ColumnCalcs/ColumnCalcs.js +586 -0
- package/src/js/modules/ColumnCalcs/defaults/calculations.js +93 -0
- package/src/js/modules/Comms/Comms.js +49 -0
- package/src/js/modules/DataTree/DataTree.js +620 -0
- package/src/js/modules/Download/Download.js +146 -0
- package/src/js/modules/Download/defaults/downloaders/csv.js +61 -0
- package/src/js/modules/Download/defaults/downloaders/html.js +5 -0
- package/src/js/modules/Download/defaults/downloaders/json.js +34 -0
- package/src/js/modules/Download/defaults/downloaders/jsonLines.js +32 -0
- package/src/js/modules/Download/defaults/downloaders/pdf.js +113 -0
- package/src/js/modules/Download/defaults/downloaders/xlsx.js +103 -0
- package/src/js/modules/Download/defaults/downloaders.js +15 -0
- package/src/js/modules/Edit/Edit.js +845 -0
- package/src/js/modules/Edit/List.js +1060 -0
- package/src/js/modules/Edit/defaults/editors/adaptable.js +37 -0
- package/src/js/modules/Edit/defaults/editors/date.js +144 -0
- package/src/js/modules/Edit/defaults/editors/datetime.js +131 -0
- package/src/js/modules/Edit/defaults/editors/input.js +77 -0
- package/src/js/modules/Edit/defaults/editors/list.js +7 -0
- package/src/js/modules/Edit/defaults/editors/number.js +110 -0
- package/src/js/modules/Edit/defaults/editors/progress.js +127 -0
- package/src/js/modules/Edit/defaults/editors/range.js +81 -0
- package/src/js/modules/Edit/defaults/editors/star.js +146 -0
- package/src/js/modules/Edit/defaults/editors/textarea.js +123 -0
- package/src/js/modules/Edit/defaults/editors/tickCross.js +95 -0
- package/src/js/modules/Edit/defaults/editors/time.js +132 -0
- package/src/js/modules/Edit/defaults/editors.js +27 -0
- package/src/js/modules/Edit/inputMask.js +74 -0
- package/src/js/modules/Export/Export.js +654 -0
- package/src/js/modules/Export/ExportColumn.js +9 -0
- package/src/js/modules/Export/ExportRow.js +8 -0
- package/src/js/modules/Export/defaults/columnLookups.js +3 -0
- package/src/js/modules/Export/defaults/rowLookups.js +18 -0
- package/src/js/modules/Filter/Filter.js +902 -0
- package/src/js/modules/Filter/defaults/filters.js +215 -0
- package/src/js/modules/Format/Format.js +200 -0
- package/src/js/modules/Format/defaults/formatters/adaptable.js +32 -0
- package/src/js/modules/Format/defaults/formatters/array.js +30 -0
- package/src/js/modules/Format/defaults/formatters/buttonCross.js +3 -0
- package/src/js/modules/Format/defaults/formatters/buttonTick.js +3 -0
- package/src/js/modules/Format/defaults/formatters/color.js +4 -0
- package/src/js/modules/Format/defaults/formatters/datetime.js +39 -0
- package/src/js/modules/Format/defaults/formatters/datetimediff.js +43 -0
- package/src/js/modules/Format/defaults/formatters/handle.js +4 -0
- package/src/js/modules/Format/defaults/formatters/html.js +3 -0
- package/src/js/modules/Format/defaults/formatters/image.js +40 -0
- package/src/js/modules/Format/defaults/formatters/json.js +12 -0
- package/src/js/modules/Format/defaults/formatters/link.js +82 -0
- package/src/js/modules/Format/defaults/formatters/lookup.js +10 -0
- package/src/js/modules/Format/defaults/formatters/money.js +44 -0
- package/src/js/modules/Format/defaults/formatters/plaintext.js +3 -0
- package/src/js/modules/Format/defaults/formatters/progress.js +133 -0
- package/src/js/modules/Format/defaults/formatters/rownum.js +14 -0
- package/src/js/modules/Format/defaults/formatters/star.js +38 -0
- package/src/js/modules/Format/defaults/formatters/textarea.js +4 -0
- package/src/js/modules/Format/defaults/formatters/tickCross.js +22 -0
- package/src/js/modules/Format/defaults/formatters/toggle.js +48 -0
- package/src/js/modules/Format/defaults/formatters/traffic.js +47 -0
- package/src/js/modules/Format/defaults/formatters.js +47 -0
- package/src/js/modules/FrozenColumns/FrozenColumns.js +302 -0
- package/src/js/modules/FrozenRows/FrozenRows.js +175 -0
- package/src/js/modules/GroupRows/Group.js +615 -0
- package/src/js/modules/GroupRows/GroupComponent.js +69 -0
- package/src/js/modules/GroupRows/GroupRows.js +636 -0
- package/src/js/modules/History/History.js +172 -0
- package/src/js/modules/History/defaults/redoers.js +31 -0
- package/src/js/modules/History/defaults/undoers.js +33 -0
- package/src/js/modules/History/extensions/extensions.js +9 -0
- package/src/js/modules/History/extensions/keybindings/actions.js +27 -0
- package/src/js/modules/History/extensions/keybindings/bindings.js +4 -0
- package/src/js/modules/HtmlTableImport/HtmlTableImport.js +180 -0
- package/src/js/modules/Import/Import.js +303 -0
- package/src/js/modules/Import/defaults/importers/array.js +3 -0
- package/src/js/modules/Import/defaults/importers/csv.js +61 -0
- package/src/js/modules/Import/defaults/importers/json.js +8 -0
- package/src/js/modules/Import/defaults/importers/xlsx.js +7 -0
- package/src/js/modules/Import/defaults/importers.js +11 -0
- package/src/js/modules/Interaction/Interaction.js +339 -0
- package/src/js/modules/Keybindings/Keybindings.js +198 -0
- package/src/js/modules/Keybindings/defaults/actions.js +90 -0
- package/src/js/modules/Keybindings/defaults/bindings.js +12 -0
- package/src/js/modules/Layout/Layout.js +66 -0
- package/src/js/modules/Layout/defaults/modes/fitColumns.js +171 -0
- package/src/js/modules/Layout/defaults/modes/fitData.js +10 -0
- package/src/js/modules/Layout/defaults/modes/fitDataGeneral.js +10 -0
- package/src/js/modules/Layout/defaults/modes/fitDataStretch.js +40 -0
- package/src/js/modules/Layout/defaults/modes.js +12 -0
- package/src/js/modules/Localize/Localize.js +184 -0
- package/src/js/modules/Localize/defaults/langs.js +37 -0
- package/src/js/modules/Menu/Menu.js +302 -0
- package/src/js/modules/MoveColumns/MoveColumns.js +311 -0
- package/src/js/modules/MoveRows/MoveRows.js +604 -0
- package/src/js/modules/MoveRows/defaults/receivers.js +30 -0
- package/src/js/modules/MoveRows/defaults/senders.js +5 -0
- package/src/js/modules/Mutator/Mutator.js +164 -0
- package/src/js/modules/Mutator/defaults/mutators.js +1 -0
- package/src/js/modules/Page/Page.js +891 -0
- package/src/js/modules/Page/defaults/pageCounters/pages.js +33 -0
- package/src/js/modules/Page/defaults/pageCounters/rows.js +40 -0
- package/src/js/modules/Page/defaults/pageCounters.js +8 -0
- package/src/js/modules/Persistence/Persistence.js +473 -0
- package/src/js/modules/Persistence/defaults/readers.js +29 -0
- package/src/js/modules/Persistence/defaults/writers.js +13 -0
- package/src/js/modules/Popup/Popup.js +227 -0
- package/src/js/modules/Print/Print.js +136 -0
- package/src/js/modules/ReactiveData/ReactiveData.js +416 -0
- package/src/js/modules/ResizeColumns/ResizeColumns.js +365 -0
- package/src/js/modules/ResizeRows/ResizeRows.js +145 -0
- package/src/js/modules/ResizeTable/ResizeTable.js +158 -0
- package/src/js/modules/ResponsiveLayout/ResponsiveLayout.js +354 -0
- package/src/js/modules/ResponsiveLayout/extensions/extensions.js +9 -0
- package/src/js/modules/ResponsiveLayout/extensions/formatters/responsiveCollapse.js +44 -0
- package/src/js/modules/SelectRange/Range.js +366 -0
- package/src/js/modules/SelectRange/RangeComponent.js +91 -0
- package/src/js/modules/SelectRange/SelectRange.js +993 -0
- package/src/js/modules/SelectRange/extensions/clipboard/pasteActions.js +45 -0
- package/src/js/modules/SelectRange/extensions/clipboard/pasteParsers.js +57 -0
- package/src/js/modules/SelectRange/extensions/export/columnLookups.js +11 -0
- package/src/js/modules/SelectRange/extensions/export/rowLookups.js +5 -0
- package/src/js/modules/SelectRange/extensions/extensions.js +21 -0
- package/src/js/modules/SelectRange/extensions/keybindings/actions.js +38 -0
- package/src/js/modules/SelectRange/extensions/keybindings/bindings.js +14 -0
- package/src/js/modules/SelectRow/SelectRow.js +499 -0
- package/src/js/modules/SelectRow/extensions/extensions.js +9 -0
- package/src/js/modules/SelectRow/extensions/formatters/rowSelection.js +60 -0
- package/src/js/modules/Sort/Sort.js +480 -0
- package/src/js/modules/Sort/defaults/sorters/alphanum.js +44 -0
- package/src/js/modules/Sort/defaults/sorters/array.js +82 -0
- package/src/js/modules/Sort/defaults/sorters/boolean.js +7 -0
- package/src/js/modules/Sort/defaults/sorters/date.js +10 -0
- package/src/js/modules/Sort/defaults/sorters/datetime.js +48 -0
- package/src/js/modules/Sort/defaults/sorters/exists.js +7 -0
- package/src/js/modules/Sort/defaults/sorters/number.js +40 -0
- package/src/js/modules/Sort/defaults/sorters/string.js +34 -0
- package/src/js/modules/Sort/defaults/sorters/time.js +10 -0
- package/src/js/modules/Sort/defaults/sorters.js +21 -0
- package/src/js/modules/Spreadsheet/GridCalculator.js +64 -0
- package/src/js/modules/Spreadsheet/Sheet.js +243 -0
- package/src/js/modules/Spreadsheet/SheetComponent.js +59 -0
- package/src/js/modules/Spreadsheet/Spreadsheet.js +309 -0
- package/src/js/modules/Tooltip/Tooltip.js +128 -0
- package/src/js/modules/Validate/Validate.js +303 -0
- package/src/js/modules/Validate/defaults/validators.js +150 -0
- package/src/scss/tabulator.scss +1693 -0
- package/src/scss/themes/bootstrap/tabulator_bootstrap3.scss +302 -0
- package/src/scss/themes/bootstrap/tabulator_bootstrap4.scss +589 -0
- package/src/scss/themes/bootstrap/tabulator_bootstrap5.scss +979 -0
- package/src/scss/themes/bootstrap/variables3.scss +872 -0
- package/src/scss/themes/bootstrap/variables4.scss +1059 -0
- package/src/scss/themes/bootstrap/variables5.scss +1967 -0
- package/src/scss/themes/bulma/tabulator_bulma.scss +316 -0
- package/src/scss/themes/bulma/variables.scss +198 -0
- package/src/scss/themes/materialize/tabulator_materialize.scss +318 -0
- package/src/scss/themes/materialize/variables.scss +71 -0
- package/src/scss/themes/semanticui/tabulator_semanticui.scss +623 -0
- package/src/scss/themes/semanticui/variables.scss +843 -0
- package/src/scss/themes/semanticui/variables_table.scss +248 -0
- package/src/scss/themes/tabulator_midnight.scss +235 -0
- package/src/scss/themes/tabulator_modern.scss +308 -0
- package/src/scss/themes/tabulator_simple.scss +143 -0
- package/src/scss/themes/tabulator_site.scss +267 -0
- package/src/scss/themes/tabulator_site_dark.scss +496 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
//resize columns to fit
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
var totalWidth = this.table.rowManager.element.getBoundingClientRect().width; //table element width
|
|
4
|
+
var fixedWidth = 0; //total width of columns with a defined width
|
|
5
|
+
var flexWidth = 0; //total width available to flexible columns
|
|
6
|
+
var flexGrowUnits = 0; //total number of widthGrow blocks across all columns
|
|
7
|
+
var flexColWidth = 0; //desired width of flexible columns
|
|
8
|
+
var flexColumns = []; //array of flexible width columns
|
|
9
|
+
var fixedShrinkColumns = []; //array of fixed width columns that can shrink
|
|
10
|
+
var flexShrinkUnits = 0; //total number of widthShrink blocks across all columns
|
|
11
|
+
var overflowWidth = 0; //horizontal overflow width
|
|
12
|
+
var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
|
|
13
|
+
|
|
14
|
+
function calcWidth(width){
|
|
15
|
+
var colWidth;
|
|
16
|
+
|
|
17
|
+
if(typeof(width) == "string"){
|
|
18
|
+
if(width.indexOf("%") > -1){
|
|
19
|
+
colWidth = (totalWidth / 100) * parseInt(width);
|
|
20
|
+
}else{
|
|
21
|
+
colWidth = parseInt(width);
|
|
22
|
+
}
|
|
23
|
+
}else{
|
|
24
|
+
colWidth = width;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
return colWidth;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
//ensure columns resize to take up the correct amount of space
|
|
31
|
+
function scaleColumns(columns, freeSpace, colWidth, shrinkCols){
|
|
32
|
+
var oversizeCols = [],
|
|
33
|
+
oversizeSpace = 0,
|
|
34
|
+
remainingSpace = 0,
|
|
35
|
+
nextColWidth = 0,
|
|
36
|
+
remainingFlexGrowUnits = flexGrowUnits,
|
|
37
|
+
gap = 0,
|
|
38
|
+
changeUnits = 0,
|
|
39
|
+
undersizeCols = [];
|
|
40
|
+
|
|
41
|
+
function calcGrow(col){
|
|
42
|
+
return (colWidth * (col.column.definition.widthGrow || 1));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
function calcShrink(col){
|
|
46
|
+
return (calcWidth(col.width) - (colWidth * (col.column.definition.widthShrink || 0)));
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
columns.forEach(function(col, i){
|
|
50
|
+
var width = shrinkCols ? calcShrink(col) : calcGrow(col);
|
|
51
|
+
if(col.column.minWidth >= width){
|
|
52
|
+
oversizeCols.push(col);
|
|
53
|
+
}else{
|
|
54
|
+
if(col.column.maxWidth && col.column.maxWidth < width){
|
|
55
|
+
col.width = col.column.maxWidth;
|
|
56
|
+
freeSpace -= col.column.maxWidth;
|
|
57
|
+
|
|
58
|
+
remainingFlexGrowUnits -= shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
|
|
59
|
+
|
|
60
|
+
if(remainingFlexGrowUnits){
|
|
61
|
+
colWidth = Math.floor(freeSpace/remainingFlexGrowUnits);
|
|
62
|
+
}
|
|
63
|
+
}else{
|
|
64
|
+
undersizeCols.push(col);
|
|
65
|
+
changeUnits += shrinkCols ? (col.column.definition.widthShrink || 1) : (col.column.definition.widthGrow || 1);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
if(oversizeCols.length){
|
|
71
|
+
oversizeCols.forEach(function(col){
|
|
72
|
+
oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
|
|
73
|
+
col.width = col.column.minWidth;
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
remainingSpace = freeSpace - oversizeSpace;
|
|
77
|
+
|
|
78
|
+
nextColWidth = changeUnits ? Math.floor(remainingSpace/changeUnits) : remainingSpace;
|
|
79
|
+
|
|
80
|
+
gap = scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
|
|
81
|
+
}else{
|
|
82
|
+
gap = changeUnits ? freeSpace - (Math.floor(freeSpace/changeUnits) * changeUnits) : freeSpace;
|
|
83
|
+
|
|
84
|
+
undersizeCols.forEach(function(column){
|
|
85
|
+
column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return gap;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
93
|
+
this.table.modules.responsiveLayout.update();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
//adjust for vertical scrollbar if present
|
|
97
|
+
if(this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight){
|
|
98
|
+
totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
columns.forEach(function(column){
|
|
102
|
+
var width, minWidth, colWidth;
|
|
103
|
+
|
|
104
|
+
if(column.visible){
|
|
105
|
+
|
|
106
|
+
width = column.definition.width;
|
|
107
|
+
minWidth = parseInt(column.minWidth);
|
|
108
|
+
|
|
109
|
+
if(width){
|
|
110
|
+
|
|
111
|
+
colWidth = calcWidth(width);
|
|
112
|
+
|
|
113
|
+
fixedWidth += colWidth > minWidth ? colWidth : minWidth;
|
|
114
|
+
|
|
115
|
+
if(column.definition.widthShrink){
|
|
116
|
+
fixedShrinkColumns.push({
|
|
117
|
+
column:column,
|
|
118
|
+
width:colWidth > minWidth ? colWidth : minWidth
|
|
119
|
+
});
|
|
120
|
+
flexShrinkUnits += column.definition.widthShrink;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
}else{
|
|
124
|
+
flexColumns.push({
|
|
125
|
+
column:column,
|
|
126
|
+
width:0,
|
|
127
|
+
});
|
|
128
|
+
flexGrowUnits += column.definition.widthGrow || 1;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
//calculate available space
|
|
134
|
+
flexWidth = totalWidth - fixedWidth;
|
|
135
|
+
|
|
136
|
+
//calculate correct column size
|
|
137
|
+
flexColWidth = Math.floor(flexWidth / flexGrowUnits);
|
|
138
|
+
|
|
139
|
+
//generate column widths
|
|
140
|
+
gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
|
|
141
|
+
|
|
142
|
+
//increase width of last column to account for rounding errors
|
|
143
|
+
if(flexColumns.length && gapFill > 0){
|
|
144
|
+
flexColumns[flexColumns.length-1].width += gapFill;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
//calculate space for columns to be shrunk into
|
|
148
|
+
flexColumns.forEach(function(col){
|
|
149
|
+
flexWidth -= col.width;
|
|
150
|
+
});
|
|
151
|
+
|
|
152
|
+
overflowWidth = Math.abs(gapFill) + flexWidth;
|
|
153
|
+
|
|
154
|
+
//shrink oversize columns if there is no available space
|
|
155
|
+
if(overflowWidth > 0 && flexShrinkUnits){
|
|
156
|
+
gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
//decrease width of last column to account for rounding errors
|
|
160
|
+
if(gapFill && fixedShrinkColumns.length){
|
|
161
|
+
fixedShrinkColumns[fixedShrinkColumns.length-1].width -= gapFill;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
flexColumns.forEach(function(col){
|
|
165
|
+
col.column.setWidth(col.width);
|
|
166
|
+
});
|
|
167
|
+
|
|
168
|
+
fixedShrinkColumns.forEach(function(col){
|
|
169
|
+
col.column.setWidth(col.width);
|
|
170
|
+
});
|
|
171
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//resize columns to fit data they contain
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
if(forced){
|
|
4
|
+
this.table.columnManager.renderer.reinitializeColumnWidths(columns);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
8
|
+
this.table.modules.responsiveLayout.update();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
//resize columns to fit data they contain and stretch row to fill table, also used for fitDataTable
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
columns.forEach(function(column){
|
|
4
|
+
column.reinitializeWidth();
|
|
5
|
+
});
|
|
6
|
+
|
|
7
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
8
|
+
this.table.modules.responsiveLayout.update();
|
|
9
|
+
}
|
|
10
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
//resize columns to fit data the contain and stretch last column to fill table
|
|
2
|
+
export default function(columns, forced){
|
|
3
|
+
var colsWidth = 0,
|
|
4
|
+
tableWidth = this.table.rowManager.element.clientWidth,
|
|
5
|
+
gap = 0,
|
|
6
|
+
lastCol = false;
|
|
7
|
+
|
|
8
|
+
columns.forEach((column, i) => {
|
|
9
|
+
if(!column.widthFixed){
|
|
10
|
+
column.reinitializeWidth();
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
if(this.table.options.responsiveLayout ? column.modules.responsive.visible : column.visible){
|
|
14
|
+
lastCol = column;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
if(column.visible){
|
|
18
|
+
colsWidth += column.getWidth();
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
if(lastCol){
|
|
23
|
+
gap = tableWidth - colsWidth + lastCol.getWidth();
|
|
24
|
+
|
|
25
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
26
|
+
lastCol.setWidth(0);
|
|
27
|
+
this.table.modules.responsiveLayout.update();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
if(gap > 0){
|
|
31
|
+
lastCol.setWidth(gap);
|
|
32
|
+
}else{
|
|
33
|
+
lastCol.reinitializeWidth();
|
|
34
|
+
}
|
|
35
|
+
}else{
|
|
36
|
+
if(this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)){
|
|
37
|
+
this.table.modules.responsiveLayout.update();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import fitData from './modes/fitData.js';
|
|
2
|
+
import fitDataGeneral from './modes/fitDataGeneral.js';
|
|
3
|
+
import fitDataStretch from './modes/fitDataStretch.js';
|
|
4
|
+
import fitColumns from './modes/fitColumns.js';
|
|
5
|
+
|
|
6
|
+
export default {
|
|
7
|
+
fitData:fitData,
|
|
8
|
+
fitDataFill:fitDataGeneral,
|
|
9
|
+
fitDataTable:fitDataGeneral,
|
|
10
|
+
fitDataStretch:fitDataStretch,
|
|
11
|
+
fitColumns:fitColumns ,
|
|
12
|
+
};
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import Module from '../../core/Module.js';
|
|
2
|
+
|
|
3
|
+
import Helpers from '../../core/tools/Helpers.js';
|
|
4
|
+
|
|
5
|
+
import defaultLangs from './defaults/langs.js';
|
|
6
|
+
|
|
7
|
+
export default class Localize extends Module{
|
|
8
|
+
|
|
9
|
+
static moduleName = "localize";
|
|
10
|
+
|
|
11
|
+
//load defaults
|
|
12
|
+
static langs = defaultLangs;
|
|
13
|
+
|
|
14
|
+
constructor(table){
|
|
15
|
+
super(table);
|
|
16
|
+
|
|
17
|
+
this.locale = "default"; //current locale
|
|
18
|
+
this.lang = false; //current language
|
|
19
|
+
this.bindings = {}; //update events to call when locale is changed
|
|
20
|
+
this.langList = {};
|
|
21
|
+
|
|
22
|
+
this.registerTableOption("locale", false); //current system language
|
|
23
|
+
this.registerTableOption("langs", {});
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
initialize(){
|
|
27
|
+
this.langList = Helpers.deepClone(Localize.langs);
|
|
28
|
+
|
|
29
|
+
if(this.table.options.columnDefaults.headerFilterPlaceholder !== false){
|
|
30
|
+
this.setHeaderFilterPlaceholder(this.table.options.columnDefaults.headerFilterPlaceholder);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
for(let locale in this.table.options.langs){
|
|
34
|
+
this.installLang(locale, this.table.options.langs[locale]);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
this.setLocale(this.table.options.locale);
|
|
38
|
+
|
|
39
|
+
this.registerTableFunction("setLocale", this.setLocale.bind(this));
|
|
40
|
+
this.registerTableFunction("getLocale", this.getLocale.bind(this));
|
|
41
|
+
this.registerTableFunction("getLang", this.getLang.bind(this));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
//set header placeholder
|
|
45
|
+
setHeaderFilterPlaceholder(placeholder){
|
|
46
|
+
this.langList.default.headerFilters.default = placeholder;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//setup a lang description object
|
|
50
|
+
installLang(locale, lang){
|
|
51
|
+
if(this.langList[locale]){
|
|
52
|
+
this._setLangProp(this.langList[locale], lang);
|
|
53
|
+
}else{
|
|
54
|
+
this.langList[locale] = lang;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
_setLangProp(lang, values){
|
|
59
|
+
for(let key in values){
|
|
60
|
+
if(lang[key] && typeof lang[key] == "object"){
|
|
61
|
+
this._setLangProp(lang[key], values[key]);
|
|
62
|
+
}else{
|
|
63
|
+
lang[key] = values[key];
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
//set current locale
|
|
69
|
+
setLocale(desiredLocale){
|
|
70
|
+
desiredLocale = desiredLocale || "default";
|
|
71
|
+
|
|
72
|
+
//fill in any matching language values
|
|
73
|
+
function traverseLang(trans, path){
|
|
74
|
+
for(var prop in trans){
|
|
75
|
+
if(typeof trans[prop] == "object"){
|
|
76
|
+
if(!path[prop]){
|
|
77
|
+
path[prop] = {};
|
|
78
|
+
}
|
|
79
|
+
traverseLang(trans[prop], path[prop]);
|
|
80
|
+
}else{
|
|
81
|
+
path[prop] = trans[prop];
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
//determining correct locale to load
|
|
87
|
+
if(desiredLocale === true && navigator.language){
|
|
88
|
+
//get local from system
|
|
89
|
+
desiredLocale = navigator.language.toLowerCase();
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if(desiredLocale){
|
|
93
|
+
//if locale is not set, check for matching top level locale else use default
|
|
94
|
+
if(!this.langList[desiredLocale]){
|
|
95
|
+
let prefix = desiredLocale.split("-")[0];
|
|
96
|
+
|
|
97
|
+
if(this.langList[prefix]){
|
|
98
|
+
console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
|
|
99
|
+
desiredLocale = prefix;
|
|
100
|
+
}else{
|
|
101
|
+
console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
|
|
102
|
+
desiredLocale = "default";
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
this.locale = desiredLocale;
|
|
108
|
+
|
|
109
|
+
//load default lang template
|
|
110
|
+
this.lang = Helpers.deepClone(this.langList.default || {});
|
|
111
|
+
|
|
112
|
+
if(desiredLocale != "default"){
|
|
113
|
+
traverseLang(this.langList[desiredLocale], this.lang);
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
this.dispatchExternal("localized", this.locale, this.lang);
|
|
117
|
+
|
|
118
|
+
this._executeBindings();
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
//get current locale
|
|
122
|
+
getLocale(locale){
|
|
123
|
+
return this.locale;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
//get lang object for given local or current if none provided
|
|
127
|
+
getLang(locale){
|
|
128
|
+
return locale ? this.langList[locale] : this.lang;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
//get text for current locale
|
|
132
|
+
getText(path, value){
|
|
133
|
+
var fillPath = value ? path + "|" + value : path,
|
|
134
|
+
pathArray = fillPath.split("|"),
|
|
135
|
+
text = this._getLangElement(pathArray, this.locale);
|
|
136
|
+
|
|
137
|
+
// if(text === false){
|
|
138
|
+
// console.warn("Localization Error - Matching localized text not found for given path: ", path);
|
|
139
|
+
// }
|
|
140
|
+
|
|
141
|
+
return text || "";
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
//traverse langs object and find localized copy
|
|
145
|
+
_getLangElement(path, locale){
|
|
146
|
+
var root = this.lang;
|
|
147
|
+
|
|
148
|
+
path.forEach(function(level){
|
|
149
|
+
var rootPath;
|
|
150
|
+
|
|
151
|
+
if(root){
|
|
152
|
+
rootPath = root[level];
|
|
153
|
+
|
|
154
|
+
if(typeof rootPath != "undefined"){
|
|
155
|
+
root = rootPath;
|
|
156
|
+
}else{
|
|
157
|
+
root = false;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
return root;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
//set update binding
|
|
166
|
+
bind(path, callback){
|
|
167
|
+
if(!this.bindings[path]){
|
|
168
|
+
this.bindings[path] = [];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
this.bindings[path].push(callback);
|
|
172
|
+
|
|
173
|
+
callback(this.getText(path), this.lang);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
//iterate through bindings and trigger updates
|
|
177
|
+
_executeBindings(){
|
|
178
|
+
for(let path in this.bindings){
|
|
179
|
+
this.bindings[path].forEach((binding) => {
|
|
180
|
+
binding(this.getText(path), this.lang);
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export default {
|
|
2
|
+
"default":{ //hold default locale text
|
|
3
|
+
"groups":{
|
|
4
|
+
"item":"item",
|
|
5
|
+
"items":"items",
|
|
6
|
+
},
|
|
7
|
+
"columns":{
|
|
8
|
+
},
|
|
9
|
+
"data":{
|
|
10
|
+
"loading":"Loading",
|
|
11
|
+
"error":"Error",
|
|
12
|
+
},
|
|
13
|
+
"pagination":{
|
|
14
|
+
"page_size":"Page Size",
|
|
15
|
+
"page_title":"Show Page",
|
|
16
|
+
"first":"First",
|
|
17
|
+
"first_title":"First Page",
|
|
18
|
+
"last":"Last",
|
|
19
|
+
"last_title":"Last Page",
|
|
20
|
+
"prev":"Prev",
|
|
21
|
+
"prev_title":"Prev Page",
|
|
22
|
+
"next":"Next",
|
|
23
|
+
"next_title":"Next Page",
|
|
24
|
+
"all":"All",
|
|
25
|
+
"counter":{
|
|
26
|
+
"showing": "Showing",
|
|
27
|
+
"of": "of",
|
|
28
|
+
"rows": "rows",
|
|
29
|
+
"pages": "pages",
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"headerFilters":{
|
|
33
|
+
"default":"filter column...",
|
|
34
|
+
"columns":{}
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
};
|