handsontable 0.0.0-next-cd0001d-20241212 → 0.0.0-next-68edfa7-20241216
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.
Potentially problematic release.
This version of handsontable might be problematic. Click here for more details.
- package/CHANGELOG.md +36 -0
- package/README.md +223 -104
- package/base.js +2 -2
- package/base.mjs +2 -2
- package/dist/handsontable.css +2 -2
- package/dist/handsontable.full.css +2 -2
- package/dist/handsontable.full.js +6 -6
- package/dist/handsontable.full.min.css +2 -2
- package/dist/handsontable.full.min.js +4 -4
- package/dist/handsontable.js +6 -6
- package/dist/handsontable.min.css +2 -2
- package/dist/handsontable.min.js +4 -4
- package/helpers/mixed.js +2 -2
- package/helpers/mixed.mjs +2 -2
- package/package.json +2 -2
- package/styles/handsontable.css +4 -4
- package/styles/handsontable.min.css +3 -3
- package/styles/ht-theme-horizon.css +2 -2
- package/styles/ht-theme-horizon.min.css +2 -2
- package/styles/ht-theme-main.css +17 -17
- package/styles/ht-theme-main.min.css +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -9,6 +9,42 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
9
9
|
|
|
10
10
|
<!-- UNVERSIONED -->
|
|
11
11
|
|
|
12
|
+
## [15.0.0] - 2024-12-16
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
- Added support for row and column virtualization of merged cells. [#11162](https://github.com/handsontable/handsontable/pull/11162)
|
|
16
|
+
- Added missing typings for the language files. [#11236](https://github.com/handsontable/handsontable/pull/11236)
|
|
17
|
+
- React: Added `@handsontable/react-wrapper` to the monorepo. [#11212](https://github.com/handsontable/handsontable/pull/11212)
|
|
18
|
+
|
|
19
|
+
### Changed
|
|
20
|
+
- **Breaking change**: Updated the production dependencies (replaced `pikaday` with `@handsontable/pikaday`, updated `numbro` and `dompurify`) [#10929](https://github.com/handsontable/handsontable/pull/10929)
|
|
21
|
+
- Refactored the column stretching logic, moved it to a separate plugin and fixed bugs related to the columns widths misalignment. [#11210](https://github.com/handsontable/handsontable/pull/11210)
|
|
22
|
+
- Updated the typing for dropdown and context menu options. [#11237](https://github.com/handsontable/handsontable/pull/11237)
|
|
23
|
+
- Updated the monorepo to utilize Node 22. [#11265](https://github.com/handsontable/handsontable/pull/11265)
|
|
24
|
+
|
|
25
|
+
### Removed
|
|
26
|
+
- **Breaking change**: Removed check marks from the Context Menu's alignment submenu. [#11278](https://github.com/handsontable/handsontable/pull/11278)
|
|
27
|
+
- Removed `aria-hidden` from TextEditor's and PasswordEditor's `TEXTAREA` elements. [#11218](https://github.com/handsontable/handsontable/pull/11218)
|
|
28
|
+
|
|
29
|
+
### Fixed
|
|
30
|
+
- Fixed the Autocomplete and Dropdown editors' container size calculations. [#11201](https://github.com/handsontable/handsontable/pull/11201)
|
|
31
|
+
- Fixed the focus management for the Dropdown Menu after `updateSettings` calls. [#11205](https://github.com/handsontable/handsontable/pull/11205)
|
|
32
|
+
- Fixed the broken column selection when the column was being moved with the Nested Headers plugin enabled. [#11206](https://github.com/handsontable/handsontable/pull/11206)
|
|
33
|
+
- Fixed copying values when the Fast IME Edit option was enabled. [#11243](https://github.com/handsontable/handsontable/pull/11243)
|
|
34
|
+
- Fixed an issue with exporting of the common lib in `package.json`. [#11247](https://github.com/handsontable/handsontable/pull/11247)
|
|
35
|
+
- Fixed the checkbox switching in merged cells. [#11252](https://github.com/handsontable/handsontable/pull/11252)
|
|
36
|
+
- Fixed a problem with the missing "name" attribute of the Focus Catcher. [#11256](https://github.com/handsontable/handsontable/pull/11256)
|
|
37
|
+
- Fixed data deletion for the checkbox-typed cells. [#11263](https://github.com/handsontable/handsontable/pull/11263)
|
|
38
|
+
- Fixed the horizontal scrolling for Nested Headers. [#11269](https://github.com/handsontable/handsontable/pull/11269)
|
|
39
|
+
- Fixed a problem where the Filters' dropdown container did not match the dropdown content size. [#11273](https://github.com/handsontable/handsontable/pull/11273)
|
|
40
|
+
- Fixed an error thrown when hiding already selected columns. [#11277](https://github.com/handsontable/handsontable/pull/11277)
|
|
41
|
+
- Fixed the cell fast edit mode that did not work properly when a comment was displayed. [#11280](https://github.com/handsontable/handsontable/pull/11280)
|
|
42
|
+
- Fixed an error for cases where the keyboard event was triggered with `key` set as `undefined`. [#11281](https://github.com/handsontable/handsontable/pull/11281)
|
|
43
|
+
- Fixed the input width calculation for the password-typed cells. [#11283](https://github.com/handsontable/handsontable/pull/11283)
|
|
44
|
+
- Fixed the missing `source` argument for the `setDataAtCell` method. [#11287](https://github.com/handsontable/handsontable/pull/11287)
|
|
45
|
+
- Fixed the top overlay misalignment issue, visible after vertical scrollbar disappeared. [#11289](https://github.com/handsontable/handsontable/pull/11289)
|
|
46
|
+
- React: Made the build scripts of `@handsontable/react-wrapper` place the TS type definitions in the configured directory. [#11296](https://github.com/handsontable/handsontable/pull/11296)
|
|
47
|
+
|
|
12
48
|
## [14.6.1] - 2024-10-17
|
|
13
49
|
|
|
14
50
|
### Removed
|
package/README.md
CHANGED
|
@@ -1,140 +1,259 @@
|
|
|
1
1
|
<div align="center">
|
|
2
|
+
<br><br>
|
|
3
|
+
<picture>
|
|
4
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-logo-white.svg?raw=true"/>
|
|
5
|
+
<source media="(prefers-color-scheme: light)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-logo-black.svg?raw=true"/>
|
|
6
|
+
<img width="360" alt="Logo of Handsontable data grid" src="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-logo-black.svg?raw=true"/>
|
|
7
|
+
</picture>
|
|
8
|
+
<br><br>
|
|
9
|
+
<h3>Handsontable is a <a href="https://handsontable.com/docs" target="_blank">JavaScript Data Grid</a> with a spreadsheet-like look and feel.</h3>
|
|
10
|
+
<p>
|
|
11
|
+
Use it with JavaScript, TypeScript, or frameworks such as
|
|
12
|
+
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react-wrapper" target="_blank">React</a>,
|
|
13
|
+
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/angular" target="_blank">Angular</a>, and
|
|
14
|
+
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/vue" target="_blank">Vue</a>. With its spreadsheet-like editing features, it’s perfect for building data-rich internal apps. It allows users to enter, edit, validate, and process data from various sources. Common use cases include resource planning software (ERP), inventory management systems, digital platforms, and data modeling applications.
|
|
15
|
+
</p>
|
|
16
|
+
|
|
17
|
+
<a href="https://handsontable.com">Website</a> — <a href="https://handsontable.com/docs">Documentation</a> — <a href="https://handsontable.com/docs/themes">Themes</a> — <a href="https://handsontable.com/docs/api">API</a> — <a href="https://github.com/handsontable/handsontable/discussions">Community</a>
|
|
18
|
+
|
|
19
|
+
<br>
|
|
20
|
+
|
|
21
|
+
[](https://npmjs.com/package/handsontable)
|
|
22
|
+
[](https://npmjs.com/package/handsontable)
|
|
23
|
+
[](https://npmjs.com/package/handsontable)
|
|
24
|
+
[](https://github.com/handsontable/handsontable/graphs/contributors)
|
|
25
|
+
<br>
|
|
26
|
+
[](https://github.com/handsontable/handsontable/actions/workflows/test.yml?query=branch%3Amaster)
|
|
27
|
+
[](https://sonarcloud.io/dashboard?id=handsontable_handsontable)
|
|
28
|
+
[](https://app.fossa.io/projects/git%2Bgithub.com%2Fhandsontable%2Fhandsontable?ref=badge_shield)
|
|
2
29
|
|
|
3
|
-
<
|
|
30
|
+
<br>
|
|
4
31
|
|
|
5
|
-
|
|
6
|
-
|
|
32
|
+
<picture>
|
|
33
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-preview-dark-theme.png?raw=true"/>
|
|
34
|
+
<source media="(prefers-color-scheme: light)" srcset="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-preview-light-theme.png?raw=true"/>
|
|
35
|
+
<img width="780" alt="JavaScript data grid preview" src="https://github.com/handsontable/handsontable/blob/develop/resources/handsontable-preview-light-theme.png?raw=true"/>
|
|
36
|
+
</picture>
|
|
37
|
+
</div>
|
|
7
38
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
[
|
|
11
|
-
[
|
|
12
|
-
[
|
|
39
|
+
## ✨ Key Features
|
|
40
|
+
|
|
41
|
+
✅ [Built-in themes](https://handsontable.com/docs/themes/) <br>
|
|
42
|
+
✅ [Flexible API](https://handsontable.com/docs/api/) <br>
|
|
43
|
+
✅ [Virtualization](https://handsontable.com/docs/row-virtualization/) <br>
|
|
44
|
+
✅ [IME support](https://handsontable.com/docs/ime-support/) <br>
|
|
45
|
+
✅ [Internationalization](https://handsontable.com/docs/language/) <br>
|
|
46
|
+
✅ [RTL support](https://handsontable.com/docs/layout-direction/) <br>
|
|
47
|
+
✅ [Accessibility](https://handsontable.com/docs/accessibility/) <br>
|
|
48
|
+
✅ [Keyboard shortcuts](https://handsontable.com/docs/keyboard-shortcuts/) <br>
|
|
49
|
+
✅ [Sorting data](https://handsontable.com/docs/rows-sorting/) <br>
|
|
50
|
+
✅ [Filtering data](https://handsontable.com/docs/column-filter/) <br>
|
|
51
|
+
✅ [400 built-in formulas](https://handsontable.com/docs/formula-calculation/) <br>
|
|
52
|
+
✅ [Configurable selection](https://handsontable.com/docs/selection/) <br>
|
|
53
|
+
✅ [Data validation](https://handsontable.com/docs/cell-validator/) <br>
|
|
54
|
+
✅ [Conditional formatting](https://handsontable.com/docs/conditional-formatting/) <br>
|
|
55
|
+
✅ [Merged cells](https://handsontable.com/docs/merge-cells/) <br>
|
|
56
|
+
✅ [Frozen rows and columns](https://handsontable.com/docs/column-freezing/) <br>
|
|
57
|
+
✅ [Hiding rows and columns](https://handsontable.com/docs/column-hiding/) <br>
|
|
58
|
+
✅ [Right-click context menu](https://handsontable.com/docs/context-menu/) <br>
|
|
59
|
+
|
|
60
|
+
<div id="installation">
|
|
61
|
+
|
|
62
|
+
## 🪄 Installation
|
|
63
|
+
Below, you'll find the installation guide for the JavaScript component. If you're using a specific framework, refer to its dedicated wrapper for installation instructions:
|
|
64
|
+
|
|
65
|
+
- <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="12" height="12"><a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react-wrapper"> React functional component</a>
|
|
66
|
+
- <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="12" height="12" alt="React"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react"> React class component</a>
|
|
67
|
+
- <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/angular-icon.svg" width="12" height="12" alt="Angular"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/angular"> Angular</a>
|
|
68
|
+
- <img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/vue-icon.svg" width="12" height="12" alt="Vue"> <a href="https://github.com/handsontable/handsontable/tree/master/wrappers/vue3"> Vue</a>
|
|
13
69
|
|
|
14
70
|
---
|
|
15
|
-
#### Get Started with Handsontable
|
|
16
|
-
|
|
17
|
-
<table border="0">
|
|
18
|
-
<tr>
|
|
19
|
-
<td>
|
|
20
|
-
<img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/react-icon.svg" width="14" height="14">
|
|
21
|
-
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/react-wrapper"> <strong>React</strong></a>
|
|
22
|
-
</td>
|
|
23
|
-
<td>
|
|
24
|
-
<img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/angular-icon.svg" width="14" height="14">
|
|
25
|
-
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/angular"> <strong>Angular</strong></a>
|
|
26
|
-
</td>
|
|
27
|
-
<td>
|
|
28
|
-
<img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/vue-icon.svg" width="14" height="14">
|
|
29
|
-
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/vue"> <strong>Vue</strong></a>
|
|
30
|
-
</td>
|
|
31
|
-
<td>
|
|
32
|
-
<img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/vue-icon.svg" width="14" height="14">
|
|
33
|
-
<a href="https://github.com/handsontable/handsontable/tree/master/wrappers/vue3"> <strong>Vue 3</strong></a>
|
|
34
|
-
</td>
|
|
35
|
-
<td>
|
|
36
|
-
<img src="https://raw.githubusercontent.com/handsontable/handsontable/develop/resources/icons/javascript-icon.svg" width="14" height="14">
|
|
37
|
-
<a href="#installation"> <strong>JavaScript</strong></a>
|
|
38
|
-
</td>
|
|
39
|
-
</tr>
|
|
40
|
-
</table>
|
|
41
71
|
|
|
42
|
-
|
|
72
|
+
### Install with npm
|
|
43
73
|
|
|
44
|
-
|
|
74
|
+
You can also use [Yarn](https://yarnpkg.com/package/handsontable), [NuGet](https://www.nuget.org/packages/Handsontable) or load the package from [CDN](https://jsdelivr.com/package/npm/handsontable).
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
npm install handsontable
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### Provide an HTML container
|
|
81
|
+
|
|
82
|
+
```html
|
|
83
|
+
<!-- Set the container's ID and apply the desired theme -->
|
|
84
|
+
<div id="handsontable-example" class="ht-theme-main-dark-auto"></div>
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### Setup
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
import Handsontable from 'handsontable';
|
|
91
|
+
// Base CSS rules
|
|
92
|
+
import 'handsontable/styles/handsontable.min.css';
|
|
93
|
+
// Main theme variables
|
|
94
|
+
import 'handsontable/styles/ht-theme-main.min.css';
|
|
95
|
+
|
|
96
|
+
const element = document.getElementById('handsontable-grid');
|
|
97
|
+
|
|
98
|
+
new Handsontable(element, {
|
|
99
|
+
data: [
|
|
100
|
+
{ company: 'Tagcat', country: 'United Kingdom', rating: 4.4 },
|
|
101
|
+
{ company: 'Zoomzone', country: 'Japan', rating: 4.5 },
|
|
102
|
+
{ company: 'Meeveo', country: 'United States', rating: 4.6 },
|
|
103
|
+
],
|
|
104
|
+
columns: [
|
|
105
|
+
{ data: 'company', title: 'Company', width: 100 },
|
|
106
|
+
{ data: 'country', title: 'Country', width: 170, type: 'dropdown', source: ['United Kingdom', 'Japan', 'United States'] },
|
|
107
|
+
{ data: 'rating', title: 'Rating', width: 100, type: 'numeric' },
|
|
108
|
+
],
|
|
109
|
+
rowHeaders: true,
|
|
110
|
+
navigableHeaders: true,
|
|
111
|
+
tabNavigation: true,
|
|
112
|
+
multiColumnSorting: true,
|
|
113
|
+
headerClassName: 'htLeft',
|
|
114
|
+
licenseKey: 'non-commercial-and-evaluation',
|
|
115
|
+
});
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
[](https://handsontable.com/docs/demo/)
|
|
120
|
+
|
|
121
|
+
### CDN-based setup
|
|
122
|
+
|
|
123
|
+
<details close>
|
|
124
|
+
<summary> Show/Hide code</summary>
|
|
125
|
+
<br>
|
|
126
|
+
If your environment does not support imports, you can use the code below to quickly set up and run a data grid with basic configuration options.
|
|
127
|
+
<br><br>
|
|
128
|
+
|
|
129
|
+
```html
|
|
130
|
+
<!DOCTYPE html>
|
|
131
|
+
<html lang="en">
|
|
132
|
+
<head>
|
|
133
|
+
<meta charset="UTF-8" />
|
|
134
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
135
|
+
<title>Handsontable - JavaScript Data Grid Example</title>
|
|
136
|
+
<link
|
|
137
|
+
rel="stylesheet"
|
|
138
|
+
href="https://cdn.jsdelivr.net/npm/handsontable/styles/handsontable.min.css"
|
|
139
|
+
/>
|
|
140
|
+
<link
|
|
141
|
+
rel="stylesheet"
|
|
142
|
+
href="https://cdn.jsdelivr.net/npm/handsontable/styles/ht-theme-main.min.css"
|
|
143
|
+
/>
|
|
144
|
+
</head>
|
|
145
|
+
<body>
|
|
146
|
+
<div id="handsontable-grid" class="ht-theme-main"></div>
|
|
147
|
+
<script src="https://cdn.jsdelivr.net/gh/handsontable/handsontable/dist/handsontable.full.min.js"></script>
|
|
148
|
+
<script>
|
|
149
|
+
const element = document.getElementById("handsontable-grid");
|
|
150
|
+
|
|
151
|
+
new Handsontable(element, {
|
|
152
|
+
data: [
|
|
153
|
+
{ company: "Tagcat", country: "United Kingdom", rating: 4.4 },
|
|
154
|
+
{ company: "Zoomzone", country: "Japan", rating: 4.5 },
|
|
155
|
+
{ company: "Meeveo", country: "United States", rating: 4.6 },
|
|
156
|
+
],
|
|
157
|
+
columns: [
|
|
158
|
+
{ data: "company", title: "Company", width: 100 },
|
|
159
|
+
{ data: "country", title: "Country", width: 170, type: "dropdown", source: ["United Kingdom", "Japan", "United States"] },
|
|
160
|
+
{ data: "rating", title: "Rating", width: 100, type: "numeric" },
|
|
161
|
+
],
|
|
162
|
+
rowHeaders: true,
|
|
163
|
+
navigableHeaders: true,
|
|
164
|
+
tabNavigation: true,
|
|
165
|
+
multiColumnSorting: true,
|
|
166
|
+
headerClassName: "htLeft",
|
|
167
|
+
licenseKey: "non-commercial-and-evaluation",
|
|
168
|
+
});
|
|
169
|
+
</script>
|
|
170
|
+
</body>
|
|
171
|
+
</html>
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
</details>
|
|
45
175
|
|
|
46
176
|
</div>
|
|
47
177
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
✓ Non-contiguous selection <br>
|
|
54
|
-
✓ Filtering data <br>
|
|
55
|
-
✓ Export to file <br>
|
|
56
|
-
✓ Validating data <br>
|
|
57
|
-
✓ Conditional formatting <br>
|
|
58
|
-
✓ Merging cells <br>
|
|
59
|
-
✓ Freezing rows/columns <br>
|
|
60
|
-
✓ Moving rows/columns <br>
|
|
61
|
-
✓ Resizing rows/columns <br>
|
|
62
|
-
✓ Hiding rows/columns <br>
|
|
63
|
-
✓ Context menu <br>
|
|
64
|
-
✓ Comments <br>
|
|
65
|
-
|
|
66
|
-
## Documentation
|
|
67
|
-
|
|
68
|
-
- [Developer guides](https://handsontable.com/docs)
|
|
69
|
-
- [API Reference](https://handsontable.com/docs/api/core/)
|
|
70
|
-
- [Changelog](https://handsontable.com/docs/release-notes/)
|
|
178
|
+
<br>
|
|
179
|
+
|
|
180
|
+
## 🚀 Resources
|
|
181
|
+
|
|
182
|
+
- [Website](https://handsontable.com)
|
|
71
183
|
- [Demo](https://handsontable.com/demo)
|
|
184
|
+
- [Documentation](https://handsontable.com/docs)
|
|
185
|
+
- [npm](https://www.npmjs.com/package/handsontable)
|
|
186
|
+
- [CDN](https://www.jsdelivr.com/package/npm/handsontable)
|
|
187
|
+
- [Forum](https://forum.handsontable.com/)
|
|
188
|
+
- [Blog](https://handsontable.com/blog)
|
|
189
|
+
- [Contact support team](https://handsontable.com/contact?category=technical_support)
|
|
190
|
+
- [Get a quote](https://handsontable.com/get-a-quote)
|
|
72
191
|
|
|
73
|
-
<
|
|
192
|
+
<br>
|
|
74
193
|
|
|
75
|
-
##
|
|
76
|
-
### Install with npm
|
|
194
|
+
## 🤔 Is Handsontable a Data Grid or a Spreadsheet?
|
|
77
195
|
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
npm install handsontable
|
|
81
|
-
```
|
|
196
|
+
Handsontable is a data grid component written in JavaScript, not a spreadsheet. However, it brings in many features typically found in spreadsheet software. We designed it this way because spreadsheet-like patterns are often the most user-friendly when it comes to data entry and management.
|
|
82
197
|
|
|
83
|
-
|
|
198
|
+
### Spreadsheet-like features in Handsontable:
|
|
84
199
|
|
|
85
|
-
|
|
200
|
+
- Keyboard shortcuts compliant with either Google Sheets or Excel
|
|
201
|
+
- 400 spreadsheet formulas via native integration with [HyperFormula](https://github.com/handsontable/hyperformula)
|
|
202
|
+
- Keyboard navigation across headers that can be disabled, making only cells navigable
|
|
203
|
+
- TAB navigation across cells that can be disabled
|
|
204
|
+
- Built-in undo-redo functionality
|
|
205
|
+
- Powerful clipboard capabilities for copy-paste operations
|
|
206
|
+
- Ability to scroll the grid within the container (`div`) or window
|
|
207
|
+
- Data binding in the form of an array of objects or arrays of arrays
|
|
208
|
+
- Built-in cell editors like a date picker or dropdown list
|
|
86
209
|
|
|
87
|
-
|
|
210
|
+
At first glance, it might seem that a data table, spreadsheet, and data grid are just different names for the same thing - an interactive table displaying data. In reality, these tools serve different purposes and offer distinct functionalities, designed to meet specific needs. Handsontable sits comfortably in the data grid category while incorporating many of the best aspects of spreadsheet software.
|
|
88
211
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
212
|
+
<br>
|
|
213
|
+
|
|
214
|
+
## 🛟 Support
|
|
215
|
+
|
|
216
|
+
**We're here to help!**
|
|
92
217
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
```
|
|
218
|
+
If you're using Handsontable with a free, non-commercial license, you can:
|
|
219
|
+
- Join the conversation on [GitHub Discussions](https://github.com/handsontable/handsontable/discussions) to share ideas, suggest features, or discuss changes.
|
|
220
|
+
- Report any bugs you find on our [GitHub Issue Board](https://github.com/handsontable/handsontable/issues).
|
|
221
|
+
- Connect with other developers and find answers on our [Developer Forum](https://handsontable.com/forum).
|
|
98
222
|
|
|
99
|
-
|
|
223
|
+
If you have a commercial license, feel free to contact us directly at [support@handsontable.com](mailto:support@handsontable.com) or use our [contact form](https://handsontable.com/contact?category=technical_support).
|
|
224
|
+
|
|
225
|
+
<br>
|
|
100
226
|
|
|
101
|
-
|
|
102
|
-
```js
|
|
103
|
-
const data = [
|
|
104
|
-
['', 'Tesla', 'Volvo', 'Toyota', 'Ford'],
|
|
105
|
-
['2019', 10, 11, 12, 13],
|
|
106
|
-
['2020', 20, 11, 14, 13],
|
|
107
|
-
['2021', 30, 15, 12, 13]
|
|
108
|
-
];
|
|
227
|
+
## 📖 Licenses
|
|
109
228
|
|
|
110
|
-
|
|
111
|
-
const hot = new Handsontable(container, {
|
|
112
|
-
data: data,
|
|
113
|
-
rowHeaders: true,
|
|
114
|
-
colHeaders: true
|
|
115
|
-
});
|
|
116
|
-
```
|
|
229
|
+
Handsontable is available under two licensing options, allowing you to choose the one that best fits your needs. Each license comes with its own terms and conditions, as outlined below:
|
|
117
230
|
|
|
118
|
-
|
|
231
|
+
### ① Free license for non-commercial use, and evaluation purposes
|
|
232
|
+
This license is available for non-commercial purposes such as teaching, academic research, or evaluation. It allows you to use Handsontable free of charge under the terms specified in the non-commercial license agreement.
|
|
233
|
+
[Learn more here](https://github.com/handsontable/handsontable/blob/master/handsontable-non-commercial-license.pdf).
|
|
119
234
|
|
|
120
|
-
|
|
235
|
+
### ② Commercial license
|
|
236
|
+
For commercial use, a paid license is required. This license includes support and maintenance to ensure you get the most out of Handsontable. The commercial license can be purchased directly from Handsoncode or through an [authorized reseller](https://handsontable.com/resellers). See the [pricing page](https://handsontable.com/pricing) for details.
|
|
121
237
|
|
|
122
|
-
|
|
238
|
+
<br>
|
|
123
239
|
|
|
124
|
-
## License
|
|
240
|
+
## 🔑 License Key
|
|
125
241
|
|
|
126
|
-
|
|
242
|
+
For projects covered by the free non-commercial license, simply use the phrase `'non-commercial-and-evaluation'` as your license key.
|
|
127
243
|
|
|
128
|
-
|
|
129
|
-
- Commercial license with support and maintenance included. See [pricing plans](https://handsontable.com/pricing).
|
|
244
|
+
If you're using Handsontable in a project that supports commercial activities, you'll need to purchase a license key at [handsontable.com/pricing](https://handsontable.com/pricing). You can find more details in [our documentation](https://handsontable.com/docs/license-key/).
|
|
130
245
|
|
|
131
|
-
|
|
246
|
+
<br>
|
|
132
247
|
|
|
133
|
-
|
|
248
|
+
## 🙌 Contributing
|
|
134
249
|
|
|
135
|
-
|
|
250
|
+
Contributions are welcome, but before you make them, please read the [Contributing Guide](https://github.com/handsontable/handsontable/blob/develop/CONTRIBUTING.md) and accept the [Contributor License Agreement](https://goo.gl/forms/yuutGuN0RjsikVpM2).
|
|
136
251
|
|
|
137
252
|
<br>
|
|
138
253
|
<br>
|
|
139
254
|
|
|
140
|
-
|
|
255
|
+
Created and maintained by the [Handsontable Team](https://handsontable.com/team) 👋
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
© 2012 - 2024 Handsoncode
|
package/base.js
CHANGED
|
@@ -45,8 +45,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
|
|
|
45
45
|
Handsontable.CellCoords = _src.CellCoords;
|
|
46
46
|
Handsontable.CellRange = _src.CellRange;
|
|
47
47
|
Handsontable.packageName = 'handsontable';
|
|
48
|
-
Handsontable.buildDate = "
|
|
49
|
-
Handsontable.version = "0.0.0-next-
|
|
48
|
+
Handsontable.buildDate = "16/12/2024 12:36:17";
|
|
49
|
+
Handsontable.version = "0.0.0-next-68edfa7-20241216";
|
|
50
50
|
Handsontable.languages = {
|
|
51
51
|
dictionaryKeys: _registry.dictionaryKeys,
|
|
52
52
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
package/base.mjs
CHANGED
|
@@ -35,8 +35,8 @@ Handsontable.hooks = Hooks.getSingleton();
|
|
|
35
35
|
Handsontable.CellCoords = CellCoords;
|
|
36
36
|
Handsontable.CellRange = CellRange;
|
|
37
37
|
Handsontable.packageName = 'handsontable';
|
|
38
|
-
Handsontable.buildDate = "
|
|
39
|
-
Handsontable.version = "0.0.0-next-
|
|
38
|
+
Handsontable.buildDate = "16/12/2024 12:36:23";
|
|
39
|
+
Handsontable.version = "0.0.0-next-68edfa7-20241216";
|
|
40
40
|
Handsontable.languages = {
|
|
41
41
|
dictionaryKeys,
|
|
42
42
|
getLanguageDictionary,
|
package/dist/handsontable.css
CHANGED
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date:
|
|
28
|
+
* Version: 0.0.0-next-68edfa7-20241216
|
|
29
|
+
* Release date: 16/12/2024 (built at 16/12/2024 12:36:45)
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
32
|
* Fix for bootstrap styles
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date:
|
|
28
|
+
* Version: 0.0.0-next-68edfa7-20241216
|
|
29
|
+
* Release date: 16/12/2024 (built at 16/12/2024 12:36:45)
|
|
30
30
|
*/
|
|
31
31
|
/**
|
|
32
32
|
* Fix for bootstrap styles
|
|
@@ -25,8 +25,8 @@
|
|
|
25
25
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
26
26
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
27
27
|
*
|
|
28
|
-
* Version: 0.0.0-next-
|
|
29
|
-
* Release date:
|
|
28
|
+
* Version: 0.0.0-next-68edfa7-20241216
|
|
29
|
+
* Release date: 16/12/2024 (built at 16/12/2024 12:36:27)
|
|
30
30
|
*/
|
|
31
31
|
(function webpackUniversalModuleDefinition(root, factory) {
|
|
32
32
|
if(typeof exports === 'object' && typeof module === 'object')
|
|
@@ -42676,8 +42676,8 @@ Handsontable.hooks = _hooks.Hooks.getSingleton();
|
|
|
42676
42676
|
Handsontable.CellCoords = _src.CellCoords;
|
|
42677
42677
|
Handsontable.CellRange = _src.CellRange;
|
|
42678
42678
|
Handsontable.packageName = 'handsontable';
|
|
42679
|
-
Handsontable.buildDate = "
|
|
42680
|
-
Handsontable.version = "0.0.0-next-
|
|
42679
|
+
Handsontable.buildDate = "16/12/2024 12:36:27";
|
|
42680
|
+
Handsontable.version = "0.0.0-next-68edfa7-20241216";
|
|
42681
42681
|
Handsontable.languages = {
|
|
42682
42682
|
dictionaryKeys: _registry.dictionaryKeys,
|
|
42683
42683
|
getLanguageDictionary: _registry.getLanguageDictionary,
|
|
@@ -53962,7 +53962,7 @@ const domMessages = {
|
|
|
53962
53962
|
function _injectProductInfo(key, element) {
|
|
53963
53963
|
const hasValidType = !isEmpty(key);
|
|
53964
53964
|
const isNonCommercial = typeof key === 'string' && key.toLowerCase() === 'non-commercial-and-evaluation';
|
|
53965
|
-
const hotVersion = "0.0.0-next-
|
|
53965
|
+
const hotVersion = "0.0.0-next-68edfa7-20241216";
|
|
53966
53966
|
let keyValidityDate;
|
|
53967
53967
|
let consoleMessageState = 'invalid';
|
|
53968
53968
|
let domMessageState = 'invalid';
|
|
@@ -53970,7 +53970,7 @@ function _injectProductInfo(key, element) {
|
|
|
53970
53970
|
const schemaValidity = _checkKeySchema(key);
|
|
53971
53971
|
if (hasValidType || isNonCommercial || schemaValidity) {
|
|
53972
53972
|
if (schemaValidity) {
|
|
53973
|
-
const releaseDate = (0, _moment.default)("
|
|
53973
|
+
const releaseDate = (0, _moment.default)("16/12/2024", 'DD/MM/YYYY');
|
|
53974
53974
|
const releaseDays = Math.floor(releaseDate.toDate().getTime() / 8.64e7);
|
|
53975
53975
|
const keyValidityDays = _extractTime(key);
|
|
53976
53976
|
keyValidityDate = (0, _moment.default)((keyValidityDays + 1) * 8.64e7, 'x').format('MMMM DD, YYYY');
|
|
@@ -26,8 +26,8 @@
|
|
|
26
26
|
* INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER ARISING FROM
|
|
27
27
|
* USE OR INABILITY TO USE THIS SOFTWARE.
|
|
28
28
|
*
|
|
29
|
-
* Version: 0.0.0-next-
|
|
30
|
-
* Release date:
|
|
29
|
+
* Version: 0.0.0-next-68edfa7-20241216
|
|
30
|
+
* Release date: 16/12/2024 (built at 16/12/2024 12:37:19)
|
|
31
31
|
*/.handsontable .table td,.handsontable .table th{border-top:none}.handsontable tr{background:#fff}.handsontable td{background-color:inherit}.handsontable .table caption+thead tr:first-child td,.handsontable .table caption+thead tr:first-child th,.handsontable .table colgroup+thead tr:first-child td,.handsontable .table colgroup+thead tr:first-child th,.handsontable .table thead:first-child tr:first-child td,.handsontable .table thead:first-child tr:first-child th{border-top:1px solid #ccc}.handsontable .table-bordered{border:0;border-collapse:separate}.handsontable .table-bordered td,.handsontable .table-bordered th{border-left:none}.handsontable .table-bordered td:first-child,.handsontable .table-bordered th:first-child{border-left:1px solid #ccc}.handsontable .table>tbody>tr>td,.handsontable .table>tbody>tr>th,.handsontable .table>tfoot>tr>td,.handsontable .table>tfoot>tr>th,.handsontable .table>thead>tr>td,.handsontable .table>thead>tr>th{line-height:21px;padding:0}.col-lg-1.handsontable,.col-lg-10.handsontable,.col-lg-11.handsontable,.col-lg-12.handsontable,.col-lg-2.handsontable,.col-lg-3.handsontable,.col-lg-4.handsontable,.col-lg-5.handsontable,.col-lg-6.handsontable,.col-lg-7.handsontable,.col-lg-8.handsontable,.col-lg-9.handsontable,.col-md-1.handsontable,.col-md-10.handsontable,.col-md-11.handsontable,.col-md-12.handsontable,.col-md-2.handsontable,.col-md-3.handsontable,.col-md-4.handsontable,.col-md-5.handsontable,.col-md-6.handsontable,.col-md-7.handsontable,.col-md-8.handsontable,.col-md-9.handsontable .col-sm-1.handsontable,.col-sm-10.handsontable,.col-sm-11.handsontable,.col-sm-12.handsontable,.col-sm-2.handsontable,.col-sm-3.handsontable,.col-sm-4.handsontable,.col-sm-5.handsontable,.col-sm-6.handsontable,.col-sm-7.handsontable,.col-sm-8.handsontable,.col-sm-9.handsontable .col-xs-1.handsontable,.col-xs-10.handsontable,.col-xs-11.handsontable,.col-xs-12.handsontable,.col-xs-2.handsontable,.col-xs-3.handsontable,.col-xs-4.handsontable,.col-xs-5.handsontable,.col-xs-6.handsontable,.col-xs-7.handsontable,.col-xs-8.handsontable,.col-xs-9.handsontable{padding-left:0;padding-right:0}.handsontable .table-striped>tbody>tr:nth-of-type(2n){background-color:#fff}.handsontable .hide{display:none}.handsontable .relative{position:relative}.handsontable .wtHider{position:relative;width:0}.handsontable .wtSpreader{height:auto;position:relative;width:0}.handsontable div,.handsontable input,.handsontable table,.handsontable tbody,.handsontable td,.handsontable textarea,.handsontable th,.handsontable thead{box-sizing:content-box;-webkit-box-sizing:content-box;-moz-box-sizing:content-box}.handsontable input,.handsontable textarea{min-height:auto}.handsontable table.htCore{border-collapse:separate;border-spacing:0;border-width:0;cursor:default;margin:0;max-height:none;max-width:none;outline-width:0;table-layout:fixed;width:0}.handsontable col,.handsontable col.rowHeader{width:50px}.handsontable td,.handsontable th{background-color:#fff;border-bottom:1px solid #ccc;border-left-width:0;border-right:1px solid #ccc;border-top-width:0;empty-cells:show;height:22px;line-height:21px;outline:none;outline-width:0;overflow:hidden;padding:0 4px;vertical-align:top;white-space:pre-wrap}[dir=rtl].handsontable td,[dir=rtl].handsontable th{border-left:1px solid #ccc;border-right-width:0}.handsontable th:last-child{border-bottom:1px solid #ccc;border-left:none;border-right:1px solid #ccc}[dir=rtl].handsontable th:last-child{border-left:1px solid #ccc;border-right:none}.handsontable td:first-of-type,.handsontable th:first-child{border-left:1px solid #ccc}[dir=rtl].handsontable td:first-of-type,[dir=rtl].handsontable th:first-child{border-right:1px solid #ccc}.handsontable .ht_clone_top th:nth-child(2){border-left-width:0;border-right:1px solid #ccc}[dir=rtl].handsontable .ht_clone_top th:nth-child(2){border-left:1px solid #ccc;border-right-width:0}.handsontable.htRowHeaders thead tr th:nth-child(2){border-left:1px solid #ccc}[dir=rtl].handsontable.htRowHeaders thead tr th:nth-child(2){border-right:1px solid #ccc}.handsontable tr:first-child td,.handsontable tr:first-child th{border-top:1px solid #ccc}.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,.ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left:1px solid #ccc;border-right-width:0}[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns) thead tr th:first-child,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.htGhostTable) tbody tr th,[dir=rtl].ht_master:not(.innerBorderInlineStart):not(.emptyColumns)~.handsontable:not(.ht_clone_top):not(.htGhostTable) thead tr th:first-child{border-left-width:0;border-right:1px solid #ccc}.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom) thead tr:last-child th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr.lastChild th,.ht_master:not(.innerBorderTop):not(.innerBorderBottom)~.handsontable thead tr:last-child th{border-bottom-width:0}.handsontable th{background-color:#f0f0f0;color:#222;font-weight:400;text-align:center;white-space:nowrap}.handsontable thead th{padding:0}.handsontable th.active{background-color:#ccc}.handsontable thead th .relative{padding:2px 4px}.handsontable span.colHeader{display:inline-block;line-height:1.1}.handsontable .wtBorder{font-size:0;position:absolute}.handsontable .wtBorder.hidden{display:none!important}.handsontable .wtBorder.current{z-index:10}.handsontable .wtBorder.area{z-index:8}.handsontable .wtBorder.fill{z-index:6}.handsontable .wtBorder.corner{cursor:crosshair;font-size:0}.ht_clone_master{z-index:100}.ht_clone_inline_start{z-index:120}.ht_clone_bottom{z-index:130}.ht_clone_bottom_inline_start_corner{z-index:150}.ht_clone_top{z-index:160}.ht_clone_top_inline_start_corner{z-index:180}.handsontable col.hidden{width:0!important}.handsontable tr.hidden,.handsontable tr.hidden td,.handsontable tr.hidden th{display:none}.ht_clone_bottom,.ht_clone_inline_start,.ht_clone_top,.ht_master{overflow:hidden}.ht_master .wtHolder{overflow:auto}.handsontable .ht_clone_inline_start table.htCore>thead,.handsontable .ht_master table.htCore>tbody>tr>th,.handsontable .ht_master table.htCore>thead{visibility:hidden}.ht_clone_bottom .wtHolder,.ht_clone_inline_start .wtHolder,.ht_clone_top .wtHolder{overflow:hidden}.handsontable{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:13px;font-weight:400;position:relative;touch-action:manipulation}.handsontable a{color:#104acc}.handsontable.htAutoSize{left:-99000px;position:absolute;top:-99000px;visibility:hidden}.handsontable td.htInvalid{background-color:#ffbeba!important}.handsontable td.htNoWrap{white-space:nowrap}.handsontable td.invisibleSelection,.handsontable th.invisibleSelection{outline:none}.handsontable td.invisibleSelection::selection,.handsontable th.invisibleSelection::selection{background:hsla(0,0%,100%,0)}.hot-display-license-info{color:#373737;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Helvetica Neue,Arial,sans-serif;font-size:10px;font-weight:400;padding:5px 0 3px;text-align:left}.hot-display-license-info a{color:#104acc;font-size:10px}.handsontable .htFocusCatcher{border:0;height:0;margin:0;opacity:0;padding:0;position:absolute;width:0;z-index:-1}.handsontable .manualColumnResizer{cursor:col-resize;height:25px;position:absolute;top:0;width:5px;z-index:210}.handsontable .manualRowResizer{cursor:row-resize;height:5px;left:0;position:absolute;width:50px;z-index:210}.handsontable .manualColumnResizer.active,.handsontable .manualColumnResizer:hover,.handsontable .manualRowResizer.active,.handsontable .manualRowResizer:hover{background-color:#34a9db}.handsontable .manualColumnResizerGuide{background-color:#34a9db;border-left:none;border-right:1px dashed #777;display:none;margin-left:5px;margin-right:unset;position:absolute;right:unset;top:0;width:0}[dir=rtl].handsontable .manualColumnResizerGuide{border-left:1px dashed #777;border-right:none;left:unset;margin-left:unset;margin-right:5px}.handsontable .manualRowResizerGuide{background-color:#34a9db;border-bottom:1px dashed #777;bottom:0;display:none;height:0;left:0;margin-top:5px;position:absolute}.handsontable .manualColumnResizerGuide.active,.handsontable .manualRowResizerGuide.active{display:block;z-index:209}.handsontable td.area,.handsontable td.area-1,.handsontable td.area-2,.handsontable td.area-3,.handsontable td.area-4,.handsontable td.area-5,.handsontable td.area-6,.handsontable td.area-7{position:relative}.handsontable td.area-1:before,.handsontable td.area-2:before,.handsontable td.area-3:before,.handsontable td.area-4:before,.handsontable td.area-5:before,.handsontable td.area-6:before,.handsontable td.area-7:before,.handsontable td.area:before{background:#005eff;bottom:0;content:"";left:0;position:absolute;right:0;top:0}.handsontable td.area:before{opacity:.1}.handsontable td.area-1:before{opacity:.2}.handsontable td.area-2:before{opacity:.27}.handsontable td.area-3:before{opacity:.35}.handsontable td.area-4:before{opacity:.41}.handsontable td.area-5:before{opacity:.47}.handsontable td.area-6:before{opacity:.54}.handsontable td.area-7:before{opacity:.58}.handsontable tbody th.current,.handsontable thead th.current{box-shadow:inset 0 0 0 2px #4b89ff}.handsontable tbody th.ht__highlight,.handsontable thead th.ht__highlight{background-color:#dcdcdc}.handsontable tbody th.ht__active_highlight,.handsontable thead th.ht__active_highlight{background-color:#8eb0e7;color:#000}.handsontableInput{background-color:#fff;border:none;border-radius:0;box-shadow:inset 0 0 0 2px #5292f7;box-sizing:border-box!important;color:#000;display:block;font-family:inherit;font-size:inherit;line-height:21px;margin:0;outline-width:0;padding:1px 5px 0;resize:none}.handsontableInput:focus{outline:none}.handsontableInputHolder{left:0;position:absolute;top:0}.htSelectEditor{position:absolute;select{-webkit-appearance:menulist-button!important;border:2px solid #4b89ff;box-sizing:border-box!important;height:100%;width:100%}}.htSelectEditor select:focus{outline:none}.htSelectEditor .htAutocompleteArrow{display:none}.handsontable .htDimmed{color:#777}.handsontable .htSubmenu{position:relative}.handsontable .htSubmenu :after{color:#777;content:"▶";font-size:9px;position:absolute;right:5px}[dir=rtl].handsontable .htSubmenu :after{content:""}[dir=rtl].handsontable .htSubmenu :before{color:#777;content:"◀";font-size:9px;left:5px;position:absolute}.handsontable .htLeft{text-align:left}.handsontable .htCenter{text-align:center}.handsontable .htRight{text-align:right}.handsontable .htJustify{text-align:justify}.handsontable .htTop{vertical-align:top}.handsontable .htMiddle{vertical-align:middle}.handsontable .htBottom{vertical-align:bottom}.handsontable .htPlaceholder{color:#999}.handsontable.listbox{margin:0}.handsontable.listbox .ht_master table{background:#fff;border:1px solid #ccc;border-collapse:separate}.handsontable.listbox td,.handsontable.listbox th,.handsontable.listbox tr:first-child td,.handsontable.listbox tr:first-child th,.handsontable.listbox tr:last-child th{border-color:transparent!important}.handsontable.listbox td,.handsontable.listbox th{text-overflow:ellipsis;white-space:nowrap}.handsontable.listbox td.htDimmed{color:inherit;cursor:default;font-style:inherit}.handsontable.listbox .wtBorder{visibility:hidden}.handsontable.listbox tr td.current,.handsontable.listbox tr:hover td{background:#eee}.ht_editor_hidden{z-index:-1}.ht_editor_visible{z-index:200}.handsontable td.htSearchResult{background:#fcedd9;color:#583707}.handsontable.mobile,.handsontable.mobile .wtHolder{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:rgba(0,0,0,0);-webkit-overflow-scrolling:touch}.handsontable.mobile .handsontableInput:focus{-webkit-appearance:none;-webkit-box-shadow:inset 0 0 0 2px #5292f7;-moz-box-shadow:inset 0 0 0 2px #5292f7;box-shadow:inset 0 0 0 2px #5292f7}.handsontable .bottomSelectionHandle,.handsontable .bottomSelectionHandle-HitArea,.handsontable .topSelectionHandle,.handsontable .topSelectionHandle-HitArea{left:-10000px;right:unset;top:-10000px;z-index:9999}[dir=rtl].handsontable .bottomSelectionHandle,[dir=rtl].handsontable .bottomSelectionHandle-HitArea,[dir=rtl].handsontable .topSelectionHandle,[dir=rtl].handsontable .topSelectionHandle-HitArea{left:unset;right:-10000px}.handsontable.hide-tween{-webkit-animation:opacity-hide .3s;animation:opacity-hide .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable.show-tween{-webkit-animation:opacity-show .3s;animation:opacity-show .3s;animation-fill-mode:forwards;-webkit-animation-fill-mode:forwards}.handsontable .htAutocompleteArrow{color:#bbb;cursor:default;float:right;font-size:10px;text-align:center;width:16px}[dir=rtl].handsontable .htAutocompleteArrow{float:left}.handsontable td.htInvalid .htAutocompleteArrow{color:#555}.handsontable td.htInvalid .htAutocompleteArrow:hover{color:#1a1a1a}.handsontable td .htAutocompleteArrow:hover{color:#777}.handsontable td.area .htAutocompleteArrow{color:#d3d3d3}.handsontable .htCheckboxRendererInput.noValue{opacity:.5}.handsontable .htCheckboxRendererLabel{cursor:pointer;display:inline-block;font-size:inherit;vertical-align:middle}.handsontable .htCheckboxRendererLabel.fullWidth{width:100%}.handsontable .collapsibleIndicator{background:#eee;border:1px solid #a6a6a6;border-radius:10px;-webkit-box-shadow:0 0 0 6px #eee;-moz-box-shadow:0 0 0 6px #eee;box-shadow:0 0 0 3px #eee;color:#222;cursor:pointer;font-size:10px;height:10px;left:unset;line-height:8px;position:absolute;right:5px;text-align:center;top:50%;transform:translateY(-50%);width:10px}[dir=rtl].handsontable .collapsibleIndicator{left:5px;right:unset}.handsontable[dir=ltr] thead th:has(.collapsibleIndicator) div.htRight span.colHeader{margin-right:20px}.handsontable[dir=rtl] thead th:has(.collapsibleIndicator) div.htLeft span.colHeader{margin-left:20px}.handsontable .columnSorting{position:relative}.handsontable[dir=ltr] div.htRight span[class*=ascending],.handsontable[dir=ltr] div.htRight span[class*=descending]{margin-left:-10px;margin-right:10px}.handsontable[dir=rtl] div.htLeft span[class*=ascending],.handsontable[dir=rtl] div.htLeft span[class*=descending]{margin-left:10px;margin-right:-10px}.handsontable[dir=ltr] div.htRight span[class*=ascending]:only-child,.handsontable[dir=ltr] div.htRight span[class*=descending]:only-child{margin-left:-15px;margin-right:15px}.handsontable[dir=rtl] div.htLeft span[class*=ascending]:only-child,.handsontable[dir=rtl] div.htLeft span[class*=descending]:only-child{margin-left:15px;margin-right:-15px}.handsontable .columnSorting.sortAction:hover{cursor:pointer;text-decoration:underline}.handsontable span.colHeader.columnSorting:before{background-position-x:right;background-repeat:no-repeat;background-size:contain;content:"";height:10px;left:unset;margin-top:-6px;padding-left:8px;padding-right:0;position:absolute;right:-9px;top:50%;width:5px}[dir=rtl].handsontable span.colHeader.columnSorting:before{background-position-x:left;left:-9px;padding-left:0;padding-right:8px;right:unset}.handsontable span.colHeader.columnSorting.ascending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFNJREFUeAHtzjkSgCAUBNHPgsoy97+ulGXRqJE5L+xkxoYt2UdsLb5bqFINz+aLuuLn5rIu2RkO3fZpWENimNgiw6iBYRTPMLJjGFxQZ1hxxb/xBI1qC8k39CdKAAAAAElFTkSuQmCC)}.handsontable span.colHeader.columnSorting.descending:before{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAoCAMAAADJ7yrpAAAAKlBMVEUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKE86IAAAADXRSTlMABBEmRGprlJW72e77tTkTKwAAAFJJREFUeAHtzjkSgCAQRNFmQYUZ7n9dKUvru0TmvPAn3br0QfgdZ5xx6x+rQn23GqTYnq1FDcnuzZIO2WmedVqIRVxgGKEyjNgYRjKGkZ1hFIZ3I70LyM0VtU8AAAAASUVORK5CYII=)}.htGhostTable .htCore span.colHeader.columnSorting:not(.indicatorDisabled):before{content:"*";display:inline-block;padding-right:20px;position:relative}.handsontable.htGhostTable table thead th{border-bottom-width:0}.handsontable.htGhostTable table tbody tr td,.handsontable.htGhostTable table tbody tr th{border-top-width:0}.handsontable .htCommentCell{position:relative}.handsontable .htCommentCell:after{border-left:6px solid transparent;border-right:none;border-top:6px solid #000;content:"";left:unset;position:absolute;right:0;top:0}[dir=rtl].handsontable .htCommentCell:after{border-left:none;border-right:6px solid transparent;left:0;right:unset}.htCommentsContainer .htComments{display:none;position:absolute;z-index:1059}.htCommentsContainer .htCommentTextArea{-webkit-appearance:none;background-color:#fff;border:none;border-left:3px solid #ccc;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239);-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:12px;height:90px;outline:0!important;padding:5px;width:215px}[dir=rtl].htCommentsContainer .htCommentTextArea{border-left:none;border-right:3px solid #ccc}.htCommentsContainer .htCommentTextArea:focus{border-left:3px solid #5292f7;border-right:none;box-shadow:0 1px 3px rgba(0,0,0,.118),0 1px 2px rgba(0,0,0,.239),inset 0 0 0 1px #5292f7}[dir=rtl].htCommentsContainer .htCommentTextArea:focus{border-left:none;border-right:3px solid #5292f7}
|
|
32
32
|
/*!
|
|
33
33
|
* Handsontable ContextMenu
|