gridstack 12.3.1 → 12.3.3
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/angular/esm2020/lib/base-widget.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack-item.component.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack.component.mjs +2 -2
- package/dist/angular/esm2020/lib/gridstack.module.mjs +2 -2
- package/dist/angular/esm2020/lib/types.mjs +2 -2
- package/dist/angular/fesm2015/gridstack-angular.mjs +4 -4
- package/dist/angular/fesm2015/gridstack-angular.mjs.map +1 -1
- package/dist/angular/fesm2020/gridstack-angular.mjs +5 -5
- package/dist/angular/fesm2020/gridstack-angular.mjs.map +1 -1
- package/dist/angular/lib/gridstack-item.component.d.ts +1 -1
- package/dist/angular/lib/gridstack.component.d.ts +1 -1
- package/dist/angular/lib/types.d.ts +1 -1
- package/dist/angular/package.json +1 -1
- package/dist/angular/src/base-widget.ts +1 -1
- package/dist/angular/src/gridstack-item.component.ts +1 -1
- package/dist/angular/src/gridstack.component.ts +1 -1
- package/dist/angular/src/gridstack.module.ts +1 -1
- package/dist/angular/src/types.ts +1 -1
- package/dist/dd-base-impl.d.ts +1 -1
- package/dist/dd-base-impl.js +1 -1
- package/dist/dd-base-impl.js.map +1 -1
- package/dist/dd-draggable.d.ts +1 -1
- package/dist/dd-draggable.js +1 -1
- package/dist/dd-draggable.js.map +1 -1
- package/dist/dd-droppable.d.ts +1 -1
- package/dist/dd-droppable.js +1 -1
- package/dist/dd-droppable.js.map +1 -1
- package/dist/dd-element.d.ts +1 -1
- package/dist/dd-element.js +1 -1
- package/dist/dd-element.js.map +1 -1
- package/dist/dd-gridstack.d.ts +1 -1
- package/dist/dd-gridstack.js +1 -1
- package/dist/dd-gridstack.js.map +1 -1
- package/dist/dd-manager.d.ts +1 -1
- package/dist/dd-manager.js +1 -1
- package/dist/dd-manager.js.map +1 -1
- package/dist/dd-resizable-handle.d.ts +1 -1
- package/dist/dd-resizable-handle.js +1 -1
- package/dist/dd-resizable-handle.js.map +1 -1
- package/dist/dd-resizable.d.ts +1 -1
- package/dist/dd-resizable.js +1 -1
- package/dist/dd-resizable.js.map +1 -1
- package/dist/dd-touch.d.ts +1 -1
- package/dist/dd-touch.js +1 -1
- package/dist/dd-touch.js.map +1 -1
- package/dist/gridstack-all.js +1 -1
- package/dist/gridstack-all.js.LICENSE.txt +1 -1
- package/dist/gridstack-all.js.map +1 -1
- package/dist/gridstack-engine.d.ts +8 -7
- package/dist/gridstack-engine.js +20 -10
- package/dist/gridstack-engine.js.map +1 -1
- package/dist/gridstack.css +1 -1
- package/dist/gridstack.d.ts +5 -4
- package/dist/gridstack.js +9 -7
- package/dist/gridstack.js.map +1 -1
- package/dist/spec/gridstack-engine-spec.d.ts +1 -0
- package/dist/spec/gridstack-engine-spec.js +358 -0
- package/dist/spec/gridstack-engine-spec.js.map +1 -0
- package/dist/spec/gridstack-spec.d.ts +1 -0
- package/dist/spec/gridstack-spec.js +1780 -0
- package/dist/spec/gridstack-spec.js.map +1 -0
- package/dist/spec/integration/gridstack-integration.spec.d.ts +1 -0
- package/dist/spec/integration/gridstack-integration.spec.js +171 -0
- package/dist/spec/integration/gridstack-integration.spec.js.map +1 -0
- package/dist/spec/regression-spec.d.ts +1 -0
- package/dist/spec/regression-spec.js +100 -0
- package/dist/spec/regression-spec.js.map +1 -0
- package/dist/spec/utils-spec.d.ts +1 -0
- package/dist/spec/utils-spec.js +243 -0
- package/dist/spec/utils-spec.js.map +1 -0
- package/dist/src/dd-base-impl.d.ts +69 -0
- package/dist/src/dd-base-impl.js +70 -0
- package/dist/src/dd-base-impl.js.map +1 -0
- package/dist/src/dd-draggable.d.ts +20 -0
- package/dist/src/dd-draggable.js +364 -0
- package/dist/src/dd-draggable.js.map +1 -0
- package/dist/src/dd-droppable.d.ts +26 -0
- package/dist/src/dd-droppable.js +149 -0
- package/dist/src/dd-droppable.js.map +1 -0
- package/dist/src/dd-element.d.ts +27 -0
- package/dist/src/dd-element.js +91 -0
- package/dist/src/dd-element.js.map +1 -0
- package/dist/src/dd-gridstack.d.ts +82 -0
- package/dist/src/dd-gridstack.js +165 -0
- package/dist/src/dd-gridstack.js.map +1 -0
- package/dist/src/dd-manager.d.ts +43 -0
- package/dist/src/dd-manager.js +14 -0
- package/dist/src/dd-manager.js.map +1 -0
- package/dist/src/dd-resizable-handle.d.ts +18 -0
- package/dist/src/dd-resizable-handle.js +113 -0
- package/dist/src/dd-resizable-handle.js.map +1 -0
- package/dist/src/dd-resizable.d.ts +30 -0
- package/dist/src/dd-resizable.js +304 -0
- package/dist/src/dd-resizable.js.map +1 -0
- package/dist/src/dd-touch.d.ts +33 -0
- package/dist/src/dd-touch.js +145 -0
- package/dist/src/dd-touch.js.map +1 -0
- package/dist/src/gridstack-engine.d.ts +321 -0
- package/dist/src/gridstack-engine.js +1272 -0
- package/dist/src/gridstack-engine.js.map +1 -0
- package/dist/src/gridstack.d.ts +802 -0
- package/dist/src/gridstack.js +2872 -0
- package/dist/src/gridstack.js.map +1 -0
- package/dist/src/gridstack.scss +1 -1
- package/dist/src/types.d.ts +427 -0
- package/dist/src/types.js +38 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils.d.ts +283 -0
- package/dist/src/utils.js +790 -0
- package/dist/src/utils.js.map +1 -0
- package/dist/types.d.ts +1 -1
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +1 -1
- package/dist/utils.js +5 -4
- package/dist/utils.js.map +1 -1
- package/dist/vitest.config.d.ts +2 -0
- package/dist/vitest.config.js +74 -0
- package/dist/vitest.config.js.map +1 -0
- package/dist/vitest.setup.d.ts +1 -0
- package/dist/vitest.setup.js +90 -0
- package/dist/vitest.setup.js.map +1 -0
- package/doc/API.md +87 -87
- package/package.json +21 -9
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/// <reference types="vitest" />
|
|
2
|
+
import { defineConfig } from 'vitest/config';
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
test: {
|
|
5
|
+
// Enable globals (describe, it, expect, etc.) without imports
|
|
6
|
+
globals: true,
|
|
7
|
+
// Use jsdom for DOM simulation (required for testing DOM-related code)
|
|
8
|
+
environment: 'jsdom',
|
|
9
|
+
// Setup files to run before tests
|
|
10
|
+
setupFiles: ['./vitest.setup.ts'],
|
|
11
|
+
// Test file patterns
|
|
12
|
+
include: [
|
|
13
|
+
'spec/**/*-spec.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
|
|
14
|
+
'spec/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',
|
|
15
|
+
'src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'
|
|
16
|
+
],
|
|
17
|
+
// Exclude patterns
|
|
18
|
+
exclude: [
|
|
19
|
+
'**/node_modules/**',
|
|
20
|
+
'**/dist/**',
|
|
21
|
+
'**/angular/**',
|
|
22
|
+
'**/react/**',
|
|
23
|
+
'**/demo/**',
|
|
24
|
+
'**/spec/e2e/**' // Exclude old Protractor E2E tests
|
|
25
|
+
],
|
|
26
|
+
// Coverage configuration
|
|
27
|
+
coverage: {
|
|
28
|
+
provider: 'v8',
|
|
29
|
+
reporter: ['text', 'json', 'html', 'lcov'],
|
|
30
|
+
exclude: [
|
|
31
|
+
'coverage/**',
|
|
32
|
+
'dist/**',
|
|
33
|
+
'node_modules/**',
|
|
34
|
+
'demo/**',
|
|
35
|
+
'angular/**',
|
|
36
|
+
'react/**',
|
|
37
|
+
'**/*.d.ts',
|
|
38
|
+
'**/*.config.{js,ts}',
|
|
39
|
+
'**/karma.conf.js',
|
|
40
|
+
'scripts/**',
|
|
41
|
+
'spec/e2e/**' // Exclude e2e tests from coverage
|
|
42
|
+
],
|
|
43
|
+
// Coverage thresholds (optional - set to your desired levels)
|
|
44
|
+
thresholds: {
|
|
45
|
+
global: {
|
|
46
|
+
branches: 80,
|
|
47
|
+
functions: 80,
|
|
48
|
+
lines: 80,
|
|
49
|
+
statements: 80
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
// Include source files for coverage even if not tested
|
|
53
|
+
all: true,
|
|
54
|
+
include: ['src/**/*.{js,ts}']
|
|
55
|
+
},
|
|
56
|
+
// Test timeout (in milliseconds)
|
|
57
|
+
testTimeout: 10000,
|
|
58
|
+
// Hook timeout (in milliseconds)
|
|
59
|
+
hookTimeout: 10000,
|
|
60
|
+
// Reporter configuration
|
|
61
|
+
reporters: ['verbose', 'html'],
|
|
62
|
+
// Output directory for test results
|
|
63
|
+
outputFile: {
|
|
64
|
+
html: './coverage/test-results.html'
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
// Resolve configuration for imports
|
|
68
|
+
resolve: {
|
|
69
|
+
alias: {
|
|
70
|
+
'@': '/src'
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=vitest.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.config.js","sourceRoot":"","sources":["../vitest.config.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,eAAe,YAAY,CAAC;IAC1B,IAAI,EAAE;QACJ,8DAA8D;QAC9D,OAAO,EAAE,IAAI;QAEb,uEAAuE;QACvE,WAAW,EAAE,OAAO;QAEpB,kCAAkC;QAClC,UAAU,EAAE,CAAC,mBAAmB,CAAC;QAEjC,qBAAqB;QACrB,OAAO,EAAE;YACP,gDAAgD;YAChD,uDAAuD;YACvD,sDAAsD;SACvD;QAED,mBAAmB;QACnB,OAAO,EAAE;YACP,oBAAoB;YACpB,YAAY;YACZ,eAAe;YACf,aAAa;YACb,YAAY;YACZ,gBAAgB,CAAC,mCAAmC;SACrD;QAED,yBAAyB;QACzB,QAAQ,EAAE;YACR,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC1C,OAAO,EAAE;gBACP,aAAa;gBACb,SAAS;gBACT,iBAAiB;gBACjB,SAAS;gBACT,YAAY;gBACZ,UAAU;gBACV,WAAW;gBACX,qBAAqB;gBACrB,kBAAkB;gBAClB,YAAY;gBACZ,aAAa,CAAC,kCAAkC;aACjD;YACD,8DAA8D;YAC9D,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,QAAQ,EAAE,EAAE;oBACZ,SAAS,EAAE,EAAE;oBACb,KAAK,EAAE,EAAE;oBACT,UAAU,EAAE,EAAE;iBACf;aACF;YACD,uDAAuD;YACvD,GAAG,EAAE,IAAI;YACT,OAAO,EAAE,CAAC,kBAAkB,CAAC;SAC9B;QAED,iCAAiC;QACjC,WAAW,EAAE,KAAK;QAElB,kCAAkC;QAClC,WAAW,EAAE,KAAK;QAElB,yBAAyB;QACzB,SAAS,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;QAE9B,oCAAoC;QACpC,UAAU,EAAE;YACV,IAAI,EAAE,8BAA8B;SACrC;KACF;IAED,oCAAoC;IACpC,OAAO,EAAE;QACP,KAAK,EAAE;YACL,GAAG,EAAE,MAAM;SACZ;KACF;CACF,CAAC,CAAA","sourcesContent":["/// <reference types=\"vitest\" />\nimport { defineConfig } from 'vitest/config'\n\nexport default defineConfig({\n test: {\n // Enable globals (describe, it, expect, etc.) without imports\n globals: true,\n \n // Use jsdom for DOM simulation (required for testing DOM-related code)\n environment: 'jsdom',\n \n // Setup files to run before tests\n setupFiles: ['./vitest.setup.ts'],\n \n // Test file patterns\n include: [\n 'spec/**/*-spec.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',\n 'spec/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}',\n 'src/**/*.{test,spec}.{js,mjs,cjs,ts,mts,cts,jsx,tsx}'\n ],\n \n // Exclude patterns\n exclude: [\n '**/node_modules/**',\n '**/dist/**',\n '**/angular/**',\n '**/react/**',\n '**/demo/**',\n '**/spec/e2e/**' // Exclude old Protractor E2E tests\n ],\n\n // Coverage configuration\n coverage: {\n provider: 'v8', // Use V8's built-in coverage (faster and more accurate)\n reporter: ['text', 'json', 'html', 'lcov'],\n exclude: [\n 'coverage/**',\n 'dist/**',\n 'node_modules/**',\n 'demo/**',\n 'angular/**',\n 'react/**',\n '**/*.d.ts',\n '**/*.config.{js,ts}',\n '**/karma.conf.js',\n 'scripts/**',\n 'spec/e2e/**' // Exclude e2e tests from coverage\n ],\n // Coverage thresholds (optional - set to your desired levels)\n thresholds: {\n global: {\n branches: 80,\n functions: 80,\n lines: 80,\n statements: 80\n }\n },\n // Include source files for coverage even if not tested\n all: true,\n include: ['src/**/*.{js,ts}']\n },\n\n // Test timeout (in milliseconds)\n testTimeout: 10000,\n\n // Hook timeout (in milliseconds) \n hookTimeout: 10000,\n\n // Reporter configuration\n reporters: ['verbose', 'html'],\n\n // Output directory for test results\n outputFile: {\n html: './coverage/test-results.html'\n }\n },\n\n // Resolve configuration for imports\n resolve: {\n alias: {\n '@': '/src'\n }\n }\n})\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import '@testing-library/jest-dom';
|
|
2
|
+
// Global test setup
|
|
3
|
+
// This file runs before each test file
|
|
4
|
+
// Mock DOM APIs that might not be available in jsdom
|
|
5
|
+
Object.defineProperty(window, 'matchMedia', {
|
|
6
|
+
writable: true,
|
|
7
|
+
value: vi.fn().mockImplementation(query => ({
|
|
8
|
+
matches: false,
|
|
9
|
+
media: query,
|
|
10
|
+
onchange: null,
|
|
11
|
+
addListener: vi.fn(),
|
|
12
|
+
removeListener: vi.fn(),
|
|
13
|
+
addEventListener: vi.fn(),
|
|
14
|
+
removeEventListener: vi.fn(),
|
|
15
|
+
dispatchEvent: vi.fn(),
|
|
16
|
+
})),
|
|
17
|
+
});
|
|
18
|
+
// Mock ResizeObserver
|
|
19
|
+
globalThis.ResizeObserver = vi.fn().mockImplementation(() => ({
|
|
20
|
+
observe: vi.fn(),
|
|
21
|
+
unobserve: vi.fn(),
|
|
22
|
+
disconnect: vi.fn(),
|
|
23
|
+
}));
|
|
24
|
+
// Mock IntersectionObserver
|
|
25
|
+
globalThis.IntersectionObserver = vi.fn().mockImplementation(() => ({
|
|
26
|
+
observe: vi.fn(),
|
|
27
|
+
unobserve: vi.fn(),
|
|
28
|
+
disconnect: vi.fn(),
|
|
29
|
+
}));
|
|
30
|
+
// Mock requestAnimationFrame
|
|
31
|
+
globalThis.requestAnimationFrame = vi.fn().mockImplementation((cb) => {
|
|
32
|
+
return setTimeout(cb, 0);
|
|
33
|
+
});
|
|
34
|
+
globalThis.cancelAnimationFrame = vi.fn().mockImplementation((id) => {
|
|
35
|
+
clearTimeout(id);
|
|
36
|
+
});
|
|
37
|
+
// Mock performance.now for timing-related tests
|
|
38
|
+
Object.defineProperty(window, 'performance', {
|
|
39
|
+
writable: true,
|
|
40
|
+
value: {
|
|
41
|
+
now: vi.fn(() => Date.now())
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
// Mock CSS properties that might be used by gridstack
|
|
45
|
+
Object.defineProperty(window, 'getComputedStyle', {
|
|
46
|
+
value: () => ({
|
|
47
|
+
getPropertyValue: () => '',
|
|
48
|
+
width: '100px',
|
|
49
|
+
height: '100px',
|
|
50
|
+
marginTop: '0px',
|
|
51
|
+
marginBottom: '0px',
|
|
52
|
+
marginLeft: '0px',
|
|
53
|
+
marginRight: '0px'
|
|
54
|
+
})
|
|
55
|
+
});
|
|
56
|
+
// Mock scrollTo for tests that might trigger scrolling
|
|
57
|
+
window.scrollTo = vi.fn();
|
|
58
|
+
// Setup DOM environment
|
|
59
|
+
Object.defineProperty(window, 'location', {
|
|
60
|
+
value: {
|
|
61
|
+
href: 'http://localhost:3000',
|
|
62
|
+
origin: 'http://localhost:3000',
|
|
63
|
+
pathname: '/',
|
|
64
|
+
search: '',
|
|
65
|
+
hash: ''
|
|
66
|
+
},
|
|
67
|
+
writable: true
|
|
68
|
+
});
|
|
69
|
+
// Global test utilities
|
|
70
|
+
globalThis.createMockElement = (tagName = 'div', attributes = {}) => {
|
|
71
|
+
const element = document.createElement(tagName);
|
|
72
|
+
Object.entries(attributes).forEach(([key, value]) => {
|
|
73
|
+
element.setAttribute(key, value);
|
|
74
|
+
});
|
|
75
|
+
return element;
|
|
76
|
+
};
|
|
77
|
+
// Console error/warning suppression for expected errors in tests
|
|
78
|
+
const originalError = console.error;
|
|
79
|
+
const originalWarn = console.warn;
|
|
80
|
+
beforeEach(() => {
|
|
81
|
+
// Reset console methods for each test
|
|
82
|
+
console.error = originalError;
|
|
83
|
+
console.warn = originalWarn;
|
|
84
|
+
});
|
|
85
|
+
// Helper to suppress expected console errors/warnings
|
|
86
|
+
globalThis.suppressConsoleErrors = () => {
|
|
87
|
+
console.error = vi.fn();
|
|
88
|
+
console.warn = vi.fn();
|
|
89
|
+
};
|
|
90
|
+
//# sourceMappingURL=vitest.setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vitest.setup.js","sourceRoot":"","sources":["../vitest.setup.ts"],"names":[],"mappings":"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","sourcesContent":["import '@testing-library/jest-dom'\n\n// Global test setup\n// This file runs before each test file\n\n// Mock DOM APIs that might not be available in jsdom\nObject.defineProperty(window, 'matchMedia', {\n writable: true,\n value: vi.fn().mockImplementation(query => ({\n matches: false,\n media: query,\n onchange: null,\n addListener: vi.fn(), // deprecated\n removeListener: vi.fn(), // deprecated\n addEventListener: vi.fn(),\n removeEventListener: vi.fn(),\n dispatchEvent: vi.fn(),\n })),\n});\n\n// Mock ResizeObserver\n(globalThis as any).ResizeObserver = vi.fn().mockImplementation(() => ({\n observe: vi.fn(),\n unobserve: vi.fn(),\n disconnect: vi.fn(),\n}));\n\n// Mock IntersectionObserver \n(globalThis as any).IntersectionObserver = vi.fn().mockImplementation(() => ({\n observe: vi.fn(),\n unobserve: vi.fn(),\n disconnect: vi.fn(),\n}));\n\n// Mock requestAnimationFrame\n(globalThis as any).requestAnimationFrame = vi.fn().mockImplementation((cb: Function) => {\n return setTimeout(cb, 0);\n});\n\n(globalThis as any).cancelAnimationFrame = vi.fn().mockImplementation((id: number) => {\n clearTimeout(id);\n});\n\n// Mock performance.now for timing-related tests\nObject.defineProperty(window, 'performance', {\n writable: true,\n value: {\n now: vi.fn(() => Date.now())\n }\n});\n\n// Mock CSS properties that might be used by gridstack\nObject.defineProperty(window, 'getComputedStyle', {\n value: () => ({\n getPropertyValue: () => '',\n width: '100px',\n height: '100px',\n marginTop: '0px',\n marginBottom: '0px',\n marginLeft: '0px',\n marginRight: '0px'\n })\n});\n\n// Mock scrollTo for tests that might trigger scrolling\nwindow.scrollTo = vi.fn();\n\n// Setup DOM environment\nObject.defineProperty(window, 'location', {\n value: {\n href: 'http://localhost:3000',\n origin: 'http://localhost:3000',\n pathname: '/',\n search: '',\n hash: ''\n },\n writable: true\n});\n\n// Global test utilities\n(globalThis as any).createMockElement = (tagName: string = 'div', attributes: Record<string, string> = {}) => {\n const element = document.createElement(tagName);\n Object.entries(attributes).forEach(([key, value]) => {\n element.setAttribute(key, value);\n });\n return element;\n};\n\n// Console error/warning suppression for expected errors in tests\nconst originalError = console.error;\nconst originalWarn = console.warn;\n\nbeforeEach(() => {\n // Reset console methods for each test\n console.error = originalError;\n console.warn = originalWarn;\n});\n\n// Helper to suppress expected console errors/warnings\n(globalThis as any).suppressConsoleErrors = () => {\n console.error = vi.fn();\n console.warn = vi.fn();\n};\n"]}
|