diff --git a/CHANGELOG.md b/CHANGELOG.md
index 7eef5062b..7c2a38c12 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,19 @@
+# Change Log
+
+All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
+
+# [5.0.0-alpha.0](https://github.com/ghiscoding/aurelia-slickgrid/compare/v4.3.0...v5.0.0-alpha.0) (2022-10-16)
+
+
+### Bug Fixes
+
+* **demo:** edit outline should follow on filter/pagination changed ([#857](https://github.com/ghiscoding/aurelia-slickgrid/issues/857)) ([7a484d6](https://github.com/ghiscoding/aurelia-slickgrid/commit/7a484d6f54fe5254f0a26e7d51e5d34f13c8b62f))
+
+
+### Features
+
+* **deps:** BREAKING CHANGE upgrade `aurelia-i18n` to major v4 ([#828](https://github.com/ghiscoding/aurelia-slickgrid/issues/828)) ([d992286](https://github.com/ghiscoding/aurelia-slickgrid/commit/d99228628ee037266265fd3f07a6462131057b16))
+
# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
@@ -1732,4 +1748,4 @@ All notable changes to this project will be documented in this file. See [standa
* **grid:** add Pagination page number input ([8a89c58](https://github.com/ghiscoding/aurelia-slickgrid/commit/8a89c58))
* **query:** add `excludeFromQuery` prop and use it for Row Selection ([cda0e39](https://github.com/ghiscoding/aurelia-slickgrid/commit/cda0e39))
* **queryFilter:** add new "queryFieldFilter" and "queryFieldSorter" ([9d2aae1](https://github.com/ghiscoding/aurelia-slickgrid/commit/9d2aae1))
-* **selectEditors:** add select grid editors ([#22](https://github.com/ghiscoding/aurelia-slickgrid/issues/22)) ([5bd7215](https://github.com/ghiscoding/aurelia-slickgrid/commit/5bd7215))
+* **selectEditors:** add select grid editors ([#22](https://github.com/ghiscoding/aurelia-slickgrid/issues/22)) ([5bd7215](https://github.com/ghiscoding/aurelia-slickgrid/commit/5bd7215))
\ No newline at end of file
diff --git a/package.json b/package.json
index 715886e21..ed2411c19 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "aurelia-slickgrid",
- "version": "4.3.0",
+ "version": "5.0.0-alpha.0",
"description": "Slickgrid components made available in Aurelia",
"keywords": [
"aurelia",
@@ -54,18 +54,19 @@
"release": "release-it"
},
"dependencies": {
- "@slickgrid-universal/common": "~1.4.0",
- "@slickgrid-universal/custom-footer-component": "~1.4.0",
- "@slickgrid-universal/empty-warning-component": "~1.4.0",
- "@slickgrid-universal/event-pub-sub": "~1.4.0",
- "@slickgrid-universal/pagination-component": "~1.4.0",
- "@slickgrid-universal/row-detail-view-plugin": "~1.4.0",
+ "@slickgrid-universal/common": "2.0.0-alpha.0",
+ "@slickgrid-universal/custom-footer-component": "2.0.0-alpha.0",
+ "@slickgrid-universal/empty-warning-component": "2.0.0-alpha.0",
+ "@slickgrid-universal/event-pub-sub": "2.0.0-alpha.0",
+ "@slickgrid-universal/pagination-component": "2.0.0-alpha.0",
+ "@slickgrid-universal/row-detail-view-plugin": "2.0.0-alpha.0",
"aurelia-event-aggregator": "^1.0.3",
"aurelia-framework": "^1.4.1",
"aurelia-i18n": "^4.0.3",
"aurelia-pal": "^1.8.2",
"dompurify": "^2.4.0",
- "jquery": "^3.6.1"
+ "jquery": "^3.6.1",
+ "sortablejs": "^1.15.0"
},
"peerDependencies": {
"i18next": ">=21.0.0"
@@ -75,20 +76,21 @@
"@fnando/sparkline": "^0.3.10",
"@popperjs/core": "^2.11.6",
"@release-it/conventional-changelog": "^5.1.1",
- "@slickgrid-universal/composite-editor-component": "~1.4.0",
- "@slickgrid-universal/custom-tooltip-plugin": "~1.4.0",
- "@slickgrid-universal/excel-export": "~1.4.0",
- "@slickgrid-universal/graphql": "~1.4.0",
- "@slickgrid-universal/odata": "~1.4.0",
- "@slickgrid-universal/rxjs-observable": "~1.4.0",
- "@slickgrid-universal/text-export": "~1.4.0",
- "@types/bluebird": "^3.5.37",
+ "@slickgrid-universal/composite-editor-component": "2.0.0-alpha.0",
+ "@slickgrid-universal/custom-tooltip-plugin": "2.0.0-alpha.0",
+ "@slickgrid-universal/excel-export": "2.0.0-alpha.0",
+ "@slickgrid-universal/graphql": "2.0.0-alpha.0",
+ "@slickgrid-universal/odata": "2.0.0-alpha.0",
+ "@slickgrid-universal/rxjs-observable": "2.0.0-alpha.0",
+ "@slickgrid-universal/text-export": "2.0.0-alpha.0",
+ "@types/bluebird": "^3.5.36",
"@types/dompurify": "^2.3.4",
"@types/fnando__sparkline": "^0.3.4",
"@types/i18next-xhr-backend": "^1.4.2",
"@types/jest": "^29.1.2",
"@types/jquery": "^3.5.14",
"@types/node": "^18.7.16",
+ "@types/sortablejs": "^1.13.0",
"@types/webpack": "^5.28.0",
"@typescript-eslint/eslint-plugin": "^5.40.0",
"@typescript-eslint/parser": "^5.40.0",
diff --git a/src/assets/i18n/en/aurelia-slickgrid.json b/src/assets/i18n/en/aurelia-slickgrid.json
index 75ebc9a5e..521c17617 100644
--- a/src/assets/i18n/en/aurelia-slickgrid.json
+++ b/src/assets/i18n/en/aurelia-slickgrid.json
@@ -36,6 +36,7 @@
"ITEMS": "items",
"ITEMS_PER_PAGE": "items per page",
"ITEMS_SELECTED": "items selected",
+ "NO_ELEMENTS_FOUND": "No elements found",
"LAST_UPDATE": "Last Update",
"LESS_THAN": "Less than",
"LESS_THAN_OR_EQUAL_TO": "Less than or equal to",
diff --git a/src/assets/i18n/fr/aurelia-slickgrid.json b/src/assets/i18n/fr/aurelia-slickgrid.json
index 41618956f..1384b1ba7 100644
--- a/src/assets/i18n/fr/aurelia-slickgrid.json
+++ b/src/assets/i18n/fr/aurelia-slickgrid.json
@@ -39,6 +39,7 @@
"LAST_UPDATE": "Dernière mise à jour",
"LESS_THAN": "Plus petit que",
"LESS_THAN_OR_EQUAL_TO": "Plus petit ou égal à",
+ "NO_ELEMENTS_FOUND": "Aucun élément trouvé",
"NOT_CONTAINS": "Ne contient pas",
"NOT_EQUAL_TO": "Non égal à",
"NOT_IN_COLLECTION_SEPERATED_BY_COMMA": "Recherche excluant certain éléments d'une collection, doit être séparé par une virgule (a,b)",
diff --git a/src/aurelia-slickgrid/constants.ts b/src/aurelia-slickgrid/constants.ts
index 17c2857a1..89fb2b045 100644
--- a/src/aurelia-slickgrid/constants.ts
+++ b/src/aurelia-slickgrid/constants.ts
@@ -48,6 +48,7 @@ export class Constants {
TEXT_LAST_UPDATE: 'Last Update',
TEXT_LESS_THAN: 'Less than',
TEXT_LESS_THAN_OR_EQUAL_TO: 'Less than or equal to',
+ TEXT_NO_ELEMENTS_FOUND: 'Aucun élément trouvé',
TEXT_NOT_CONTAINS: 'Not contains',
TEXT_NOT_EQUAL_TO: 'Not equal to',
TEXT_PAGE: 'Page',
diff --git a/src/aurelia-slickgrid/custom-elements/__tests__/aurelia-slickgrid.spec.ts b/src/aurelia-slickgrid/custom-elements/__tests__/aurelia-slickgrid.spec.ts
index b6cbe39bf..c0857e9dc 100644
--- a/src/aurelia-slickgrid/custom-elements/__tests__/aurelia-slickgrid.spec.ts
+++ b/src/aurelia-slickgrid/custom-elements/__tests__/aurelia-slickgrid.spec.ts
@@ -734,7 +734,7 @@ describe('Aurelia-Slickgrid Component instantiated via Constructor', () => {
http.returnKey = 'date';
http.returnValue = '6/24/1984';
http.responseHeaders = { accept: 'json' };
- const collectionAsync = http.fetch('http://locahost/api', { method: 'GET' });
+ const collectionAsync = http.fetch('http://localhost/api', { method: 'GET' });
const mockColDefs = [{ id: 'gender', field: 'gender', editor: { model: Editors.text, collectionAsync } }] as Column[];
customElement.columnDefinitions = mockColDefs;
@@ -777,7 +777,7 @@ describe('Aurelia-Slickgrid Component instantiated via Constructor', () => {
http.returnKey = 'date';
http.returnValue = '6/24/1984';
http.responseHeaders = { accept: 'json' };
- const collectionAsync = http.fetch('http://locahost/invalid-url', { method: 'GET' });
+ const collectionAsync = http.fetch('http://localhost/invalid-url', { method: 'GET' });
const mockColDefs = [{ id: 'gender', field: 'gender', editor: { model: Editors.text, collectionAsync } }] as Column[];
jest.spyOn(mockGrid, 'getColumns').mockReturnValue(mockColDefs);
@@ -786,7 +786,7 @@ describe('Aurelia-Slickgrid Component instantiated via Constructor', () => {
customElement.initialization(slickEventHandler);
setTimeout(() => {
- expect(consoleSpy).toHaveBeenCalledWith(expect.toInclude('[Aurelia-SlickGrid] The response body passed to collectionAsync was already read.Either pass the dataset from the Response or clone the response first using response.clone()'));
+ expect(consoleSpy).toHaveBeenCalledWith(expect.toInclude('[Aurelia-SlickGrid] The response body passed to collectionAsync was already read. Either pass the dataset from the Response or clone the response first using response.clone()'));
done();
});
});
diff --git a/src/aurelia-slickgrid/custom-elements/aurelia-slickgrid.ts b/src/aurelia-slickgrid/custom-elements/aurelia-slickgrid.ts
index 982e2e2b3..6bf4c3d29 100644
--- a/src/aurelia-slickgrid/custom-elements/aurelia-slickgrid.ts
+++ b/src/aurelia-slickgrid/custom-elements/aurelia-slickgrid.ts
@@ -1,18 +1,15 @@
// import 3rd party vendor libs
-// also only import jQueryUI necessary widget (note autocomplete & slider are imported in their respective editors/filters)
import * as $ from 'jquery';
-import 'jquery-ui/ui/widgets/draggable';
-import 'jquery-ui/ui/widgets/droppable';
-import 'jquery-ui/ui/widgets/sortable';
-import 'slickgrid/lib/jquery.event.drag-2.3.0';
-import 'slickgrid/lib/jquery.mousewheel';
-import 'slickgrid/slick.core';
-import 'slickgrid/slick.dataview';
-import 'slickgrid/slick.grid';
+import 'slickgrid/dist/slick.core.min';
+import 'slickgrid/dist/slick.interactions.min';
+import 'slickgrid/dist/slick.grid.min';
+import 'slickgrid/dist/slick.dataview.min';
+import * as Sortable_ from 'sortablejs';
+const Sortable = ((Sortable_ as any)?.['default'] ?? Sortable_); // patch for rollup
import {
// interfaces/types
- AutoCompleteEditor,
+ AutocompleterEditor,
BackendServiceApi,
BackendServiceOption,
Column,
@@ -82,6 +79,9 @@ import { SlickRowDetailView } from '../extensions/slickRowDetailView';
// using external non-typed js libraries
declare const Slick: SlickNamespace;
+// add Sortable to the window object so that SlickGrid lib can use globally
+(window as any).Sortable = Sortable;
+
// Aurelia doesn't support well TypeScript @autoinject in a Plugin so we'll do it the manual way
@inject(
AureliaUtilService,
@@ -1135,14 +1135,14 @@ export class AureliaSlickgridCustomElement {
this.updateEditorCollection(column, response); // from Promise
} else if (response instanceof Response && typeof response.json === 'function') {
if (response.bodyUsed) {
- console.warn(`[Aurelia-SlickGrid] The response body passed to collectionAsync was already read.`
+ console.warn(`[Aurelia-SlickGrid] The response body passed to collectionAsync was already read. `
+ `Either pass the dataset from the Response or clone the response first using response.clone()`);
} else {
// from Fetch
(response as Response).json().then(data => this.updateEditorCollection(column, data));
}
- } else if (response && response['content']) {
- this.updateEditorCollection(column, response['content']); // from http-client
+ } else if (response?.content) {
+ this.updateEditorCollection(column, response.content); // from http-client
}
});
} else if (this.rxjs?.isObservable(collectionAsync)) {
@@ -1460,7 +1460,7 @@ export class AureliaSlickgridCustomElement {
}
// get current Editor, remove it from the DOM then re-enable it and re-render it with the new collection.
- const currentEditor = this.grid.getCellEditor() as AutoCompleteEditor | SelectEditor;
+ const currentEditor = this.grid.getCellEditor() as AutocompleterEditor | SelectEditor;
if (currentEditor?.disable && currentEditor?.renderDomElement) {
currentEditor.destroy();
currentEditor.disable(false);
diff --git a/src/aurelia-slickgrid/extensions/__tests__/slickRowDetailView.spec.ts b/src/aurelia-slickgrid/extensions/__tests__/slickRowDetailView.spec.ts
index e6f341e49..85eb8326d 100644
--- a/src/aurelia-slickgrid/extensions/__tests__/slickRowDetailView.spec.ts
+++ b/src/aurelia-slickgrid/extensions/__tests__/slickRowDetailView.spec.ts
@@ -548,7 +548,7 @@ describe('SlickRowDetailView', () => {
http.returnKey = 'date';
http.returnValue = '6/24/1984';
http.responseHeaders = { accept: 'json' };
- gridOptionsMock.rowDetailView!.process = () => http.fetch('http://locahost/api', { method: 'GET' });
+ gridOptionsMock.rowDetailView!.process = () => http.fetch('http://localhost/api', { method: 'GET' });
plugin.init(gridStub);
plugin.onAsyncResponse = new Slick.Event();
plugin.onAsyncResponse.subscribe((_e, response) => {
diff --git a/src/examples/slickgrid/example23.ts b/src/examples/slickgrid/example23.ts
index c9e4a3232..0ecb3a96d 100644
--- a/src/examples/slickgrid/example23.ts
+++ b/src/examples/slickgrid/example23.ts
@@ -14,7 +14,6 @@ import {
Formatters,
GridOption,
GridStateChange,
- JQueryUiSliderOption,
Metrics,
MultipleSelectOption,
OperatorType,
@@ -114,11 +113,12 @@ export class Example23 {
type: FieldType.number,
filterable: true,
filter: {
- model: Filters.sliderRange,
+ // model: Filters.sliderRange,
+ model: Filters.slider,
maxValue: 100, // or you can use the filterOptions as well
operator: OperatorType.rangeInclusive, // defaults to exclusive
params: { hideSliderNumbers: false }, // you can hide/show the slider numbers on both side
- filterOptions: { min: 0, step: 5 } as JQueryUiSliderOption // you can also optionally pass any option of the jQuery UI Slider
+ filterOptions: { min: 0, step: 5 }
}
},
{
diff --git a/src/examples/slickgrid/example3.ts b/src/examples/slickgrid/example3.ts
index e0f2b6bd5..8b8241812 100644
--- a/src/examples/slickgrid/example3.ts
+++ b/src/examples/slickgrid/example3.ts
@@ -4,7 +4,7 @@ import { HttpClient } from 'aurelia-http-client';
import { I18N } from 'aurelia-i18n';
import {
AureliaGridInstance,
- AutocompleteOption,
+ AutocompleterOption,
Column,
EditCommand,
Editors,
@@ -271,7 +271,7 @@ export class Example3 {
sortable: true,
minWidth: 100,
editor: {
- model: Editors.autoComplete,
+ model: Editors.autocompleter,
placeholder: '🔎︎ search city',
// We can use the autocomplete through 3 ways "collection", "collectionAsync" or with your own autocomplete options
@@ -280,7 +280,7 @@ export class Example3 {
editorOptions: {
minLength: 3,
forceUserInput: true,
- source: (request, response) => {
+ fetch: (searchText: string, updateCallback: (items: false | any[]) => void) => {
/** with FETCH, note this demo won't work because of CORS */
// this.httpFetch.fetch(`http://gd.geobytes.com/AutoCompleteCity?q=${request.term}`)
// .then(response => response.json())
@@ -292,17 +292,18 @@ export class Example3 {
url: 'http://gd.geobytes.com/AutoCompleteCity',
dataType: 'jsonp',
data: {
- q: request.term
+ q: searchText
},
success: (data) => {
- response(data);
+ const finalData = (data.length === 1 && data[0] === '') ? [] : data; // invalid result should be [] instead of [''] to show empty msg
+ updateCallback(finalData);
}
});
}
- } as AutocompleteOption,
+ } as AutocompleterOption,
},
filter: {
- model: Filters.autoComplete,
+ model: Filters.autocompleter,
// placeholder: '🔎︎ search city',
// We can use the autocomplete through 3 ways "collection", "collectionAsync" or with your own autocomplete options
@@ -312,19 +313,20 @@ export class Example3 {
// here we use $.ajax just because I'm not sure how to configure Aurelia HttpClient with JSONP and CORS
filterOptions: {
minLength: 3,
- source: (request, response) => {
+ fetch: (searchText: string, updateCallback: (items: false | any[]) => void) => {
$.ajax({
url: 'http://gd.geobytes.com/AutoCompleteCity',
dataType: 'jsonp',
data: {
- q: request.term
+ q: searchText
},
success: (data) => {
- response(data);
+ const finalData = (data.length === 1 && data[0] === '') ? [] : data; // invalid result should be [] instead of [''] to show empty msg
+ updateCallback(finalData);
}
});
}
- } as AutocompleteOption,
+ } as AutocompleterOption,
}
}, {
id: 'countryOfOrigin', name: 'Country of Origin', field: 'countryOfOrigin',
@@ -337,12 +339,12 @@ export class Example3 {
sortable: true,
minWidth: 100,
editor: {
- model: Editors.autoComplete,
+ model: Editors.autocompleter,
customStructure: { label: 'name', value: 'code' },
collectionAsync: this.httpFetch.fetch(URL_COUNTRIES_COLLECTION),
},
filter: {
- model: Filters.autoComplete,
+ model: Filters.autocompleter,
customStructure: { label: 'name', value: 'code' },
collectionAsync: this.httpFetch.fetch(URL_COUNTRIES_COLLECTION),
}
@@ -352,11 +354,11 @@ export class Example3 {
sortable: true,
minWidth: 100,
editor: {
- model: Editors.autoComplete,
+ model: Editors.autocompleter,
collectionAsync: this.httpFetch.fetch(URL_COUNTRY_NAMES),
},
filter: {
- model: Filters.autoComplete,
+ model: Filters.autocompleter,
collectionAsync: this.httpFetch.fetch(URL_COUNTRY_NAMES),
}
}, {
diff --git a/src/examples/slickgrid/example30.ts b/src/examples/slickgrid/example30.ts
index 4c8b3fff6..ee279c86d 100644
--- a/src/examples/slickgrid/example30.ts
+++ b/src/examples/slickgrid/example30.ts
@@ -1,4 +1,3 @@
-import { EditCommand, SlickGrid } from '@slickgrid-universal/common';
import { SlickCompositeEditorComponent } from '@slickgrid-universal/composite-editor-component';
import { ExcelExportService } from '@slickgrid-universal/excel-export';
import { HttpClient as FetchClient } from 'aurelia-fetch-client';
@@ -6,12 +5,14 @@ import { autoinject } from 'aurelia-framework';
import {
AureliaGridInstance,
- AutocompleteOption,
+ AutocompleterOption,
Column,
CompositeEditorModalType,
+ EditCommand,
Editors,
FieldType,
Filters,
+ FlatpickrOption,
formatNumber,
Formatter,
Formatters,
@@ -19,6 +20,7 @@ import {
GridStateChange,
LongTextEditorOption,
OnCompositeEditorChangeEventArgs,
+ SlickGrid,
SlickNamespace,
SortComparers,
} from '../../aurelia-slickgrid';
@@ -235,7 +237,17 @@ export class Example30 {
exportCustomFormatter: Formatters.dateUs,
editor: {
model: Editors.date,
- editorOptions: { minDate: 'today' },
+ editorOptions: {
+ minDate: 'today',
+
+ // if we want to preload the date picker with a different date,
+ // we could toggle the `closeOnSelect: false`, set the date in the picker and re-toggle `closeOnSelect: true`
+ // closeOnSelect: false,
+ // onOpen: (selectedDates: Date[] | Date, dateStr: string, instance: FlatpickrInstance) => {
+ // instance.setDate('2021-06-04', true);
+ // instance.set('closeOnSelect', true);
+ // },
+ } as FlatpickrOption,
massUpdate: true,
validator: (value, args) => {
const dataContext = args && args.item;
@@ -258,17 +270,16 @@ export class Example30 {
type: FieldType.object,
sortComparer: SortComparers.objectString,
editor: {
- model: Editors.autoComplete,
+ model: Editors.autocompleter,
alwaysSaveOnEnterKey: true,
massUpdate: true,
// example with a Remote API call
editorOptions: {
minLength: 1,
- source: (request, response) => {
- // const items = require('c://TEMP/items.json');
+ fetch: (searchTerm: string, callback: (items: false | any[]) => void) => {
const products = this.mockProducts();
- response(products.filter(product => product.itemName.toLowerCase().includes(request.term.toLowerCase())));
+ callback(products.filter(product => product.itemName.toLowerCase().includes(searchTerm.toLowerCase())));
},
renderItem: {
// layout: 'twoRows',
@@ -277,11 +288,11 @@ export class Example30 {
layout: 'fourCorners',
templateCallback: (item: any) => this.renderItemCallbackWith4Corners(item),
},
- } as AutocompleteOption,
+ } as AutocompleterOption,
},
filter: {
model: Filters.inputText,
- // placeholder: '🔎︎ search city',
+ // placeholder: '🔎︎ search product',
type: FieldType.string,
queryField: 'product.itemName',
}
@@ -298,10 +309,11 @@ export class Example30 {
sortable: true,
minWidth: 100,
editor: {
- model: Editors.autoComplete,
+ model: Editors.autocompleter,
massUpdate: true,
customStructure: { label: 'name', value: 'code' },
collectionAsync: this.httpFetch.fetch(URL_COUNTRIES_COLLECTION),
+ editorOptions: { minLength: 0 }
},
filter: {
model: Filters.inputText,
@@ -404,7 +416,7 @@ export class Example30 {
const prevSerializedValue = prevSerializedValues[index];
const serializedValue = serializedValues[index];
- if (prevSerializedValue !== serializedValue) {
+ if (prevSerializedValue !== serializedValue || serializedValue === '') {
const finalColumn = Array.isArray(editCommand.prevSerializedValue) ? editorColumns[index] : column;
this.editedItems[this.gridOptions.datasetIdPropertyName || 'id'] = item; // keep items by their row indexes, if the row got edited twice then we'll keep only the last change
this.aureliaGrid.slickGrid.invalidate();
@@ -749,7 +761,7 @@ export class Example30 {
listPrice: 2100.23,
itemTypeName: 'I',
image: 'http://i.stack.imgur.com/pC1Tv.jpg',
- icon: `fa ${this.getRandomIcon(0)}`,
+ icon: this.getRandomIcon(0)
},
{
id: 1,
@@ -758,7 +770,7 @@ export class Example30 {
listPrice: 3200.12,
itemTypeName: 'I',
image: 'https://i.imgur.com/Fnm7j6h.jpg',
- icon: `fa ${this.getRandomIcon(1)}`,
+ icon: this.getRandomIcon(1)
},
{
id: 2,
@@ -767,7 +779,7 @@ export class Example30 {
listPrice: 15.00,
itemTypeName: 'I',
image: 'https://i.imgur.com/RaVJuLr.jpg',
- icon: `fa ${this.getRandomIcon(2)}`,
+ icon: this.getRandomIcon(2)
},
{
id: 3,
@@ -776,7 +788,7 @@ export class Example30 {
listPrice: 25.76,
itemTypeName: 'I',
image: 'http://i.stack.imgur.com/pC1Tv.jpg',
- icon: `fa ${this.getRandomIcon(3)}`,
+ icon: this.getRandomIcon(3)
},
{
id: 4,
@@ -785,7 +797,7 @@ export class Example30 {
listPrice: 13.35,
itemTypeName: 'I',
image: 'https://i.imgur.com/Fnm7j6h.jpg',
- icon: `fa ${this.getRandomIcon(4)}`,
+ icon: this.getRandomIcon(4)
},
{
id: 5,
@@ -794,7 +806,7 @@ export class Example30 {
listPrice: 23.33,
itemTypeName: 'I',
image: 'https://i.imgur.com/RaVJuLr.jpg',
- icon: `fa ${this.getRandomIcon(5)}`,
+ icon: this.getRandomIcon(5)
},
{
id: 6,
@@ -803,7 +815,7 @@ export class Example30 {
listPrice: 71.21,
itemTypeName: 'I',
image: 'http://i.stack.imgur.com/pC1Tv.jpg',
- icon: `fa ${this.getRandomIcon(6)}`,
+ icon: this.getRandomIcon(6)
},
{
id: 7,
@@ -812,7 +824,7 @@ export class Example30 {
listPrice: 2.43,
itemTypeName: 'I',
image: 'https://i.imgur.com/Fnm7j6h.jpg',
- icon: `fa ${this.getRandomIcon(7)}`,
+ icon: this.getRandomIcon(7)
},
{
id: 8,
@@ -821,7 +833,7 @@ export class Example30 {
listPrice: 31288.39,
itemTypeName: 'I',
image: 'https://i.imgur.com/RaVJuLr.jpg',
- icon: `fa ${this.getRandomIcon(8)}`,
+ icon: this.getRandomIcon(8)
},
];
}
@@ -917,13 +929,13 @@ export class Example30 {
-
${item.itemNameTranslated}
+
${item.itemNameTranslated}
`;
}
diff --git a/src/examples/slickgrid/example32.html b/src/examples/slickgrid/example32.html
index e8ef99719..303be9bbe 100644
--- a/src/examples/slickgrid/example32.html
+++ b/src/examples/slickgrid/example32.html
@@ -57,8 +57,7 @@ Container Width (950px)
grid-options.bind="gridOptions"
dataset.bind="dataset"
pagination-options.bind="paginationOptions"
- on-aurelia-grid-created.delegate="aureliaGridReady($event.detail)"
- on-grid-state-changed.delegate="gridStateChanged($event.detail)">
+ on-aurelia-grid-created.delegate="aureliaGridReady($event.detail)">
diff --git a/src/examples/slickgrid/example32.ts b/src/examples/slickgrid/example32.ts
index b84ffc341..cfb196afd 100644
--- a/src/examples/slickgrid/example32.ts
+++ b/src/examples/slickgrid/example32.ts
@@ -1,5 +1,5 @@
import {
- AutocompleteOption,
+ AutocompleterOption,
Column,
EditCommand,
Editors,
@@ -232,17 +232,17 @@ export class Example32 {
type: FieldType.object,
sortComparer: SortComparers.objectString,
editor: {
- model: Editors.autoComplete,
+ model: Editors.autocompleter,
alwaysSaveOnEnterKey: true,
massUpdate: true,
// example with a Remote API call
editorOptions: {
minLength: 1,
- source: (request, response) => {
+ fetch: (searchTerm: string, callback: (items: false | any[]) => void) => {
// const items = require('c://TEMP/items.json');
const products = this.mockProducts();
- response(products.filter(product => product.itemName.toLowerCase().includes(request.term.toLowerCase())));
+ callback(products.filter(product => product.itemName.toLowerCase().includes(searchTerm.toLowerCase())));
},
renderItem: {
// layout: 'twoRows',
@@ -251,7 +251,7 @@ export class Example32 {
layout: 'fourCorners',
templateCallback: (item: any) => this.renderItemCallbackWith4Corners(item),
},
- } as AutocompleteOption,
+ } as AutocompleterOption,
},
filter: {
model: Filters.inputText,
@@ -272,7 +272,7 @@ export class Example32 {
sortable: true,
minWidth: 100,
editor: {
- model: Editors.autoComplete,
+ model: Editors.autocompleter,
massUpdate: true,
customStructure: { label: 'name', value: 'code' },
collectionAsync: this.httpFetch.fetch(URL_COUNTRIES_COLLECTION),
diff --git a/test/cypress/e2e/example15.cy.js b/test/cypress/e2e/example15.cy.js
index b49639d2f..265d92dd6 100644
--- a/test/cypress/e2e/example15.cy.js
+++ b/test/cypress/e2e/example15.cy.js
@@ -62,14 +62,10 @@ describe('Example 15: Grid State & Presets using Local Storage', { retries: 1 },
cy.get('.slick-header-columns')
.children('.slick-header-column:nth(1)')
- .should('contain', 'Title')
- .trigger('mousedown', 'bottom', { which: 1 });
+ .contains('Title')
+ .drag('.slick-header-column:nth(3)');
- cy.get('.slick-header-columns')
- .children('.slick-header-column:nth(3)')
- .should('contain', 'Duration')
- .trigger('mousemove', 'bottomRight')
- .trigger('mouseup', 'bottomRight', { which: 1, force: true });
+ cy.get('.slick-header-column:nth(3)').contains('Title');
cy.get('#grid15')
.find('.slick-header-columns')
@@ -80,6 +76,10 @@ describe('Example 15: Grid State & Presets using Local Storage', { retries: 1 },
// --
// Cypress does not yet implement the .hover() method and this test won't work until then
xit('should resize "Title" column and make it wider', () => {
+ cy.get('#grid15 .slick-viewport-top.slick-viewport-left')
+ .scrollTo('left')
+ .wait(50);
+
cy.get('.slick-header-columns')
.children('.slick-header-column:nth(3)')
.should('contain', 'Title');
diff --git a/test/cypress/e2e/example16.cy.js b/test/cypress/e2e/example16.cy.js
index 0b1cfa3a0..22118695b 100644
--- a/test/cypress/e2e/example16.cy.js
+++ b/test/cypress/e2e/example16.cy.js
@@ -111,14 +111,10 @@ describe('Example 16 - Row Move & Checkbox Selector Selector Plugins', { retries
cy.get('.slick-header-columns')
.children('.slick-header-column:nth(3)')
- .should('contain', 'Duration')
- .trigger('mousedown', 'center', { which: 1 });
+ .contains('Duration')
+ .drag('.slick-header-column:nth(6)');
- cy.get('.slick-header-columns')
- .children('.slick-header-column:nth(6)')
- .should('contain', 'Finish')
- .trigger('mousemove', 'bottomRight')
- .trigger('mouseup', 'bottomRight', { which: 1, force: true });
+ cy.get('.slick-header-column:nth(6)').contains('Duration');
cy.get('#grid16')
.find('.slick-header-columns')
diff --git a/test/cypress/e2e/example18.cy.js b/test/cypress/e2e/example18.cy.js
index 3301b7aa0..57d3a23c8 100644
--- a/test/cypress/e2e/example18.cy.js
+++ b/test/cypress/e2e/example18.cy.js
@@ -68,12 +68,10 @@ describe('Example 18 - Draggable Grouping & Aggregators', { retries: 1 }, () =>
it('should be able to drag and swap grouped column titles inside the pre-header', () => {
cy.get('.slick-dropped-grouping:nth(0) div')
.contains('Duration')
- .trigger('mousedown', 'center', { which: 1 });
+ .drag('.slick-dropped-grouping:nth(1) div');
- cy.get('.slick-dropped-grouping:nth(1) div')
- .contains('Effort-Driven')
- .trigger('mousemove', 'bottomRight')
- .trigger('mouseup', 'bottomRight', { which: 1, force: true });
+ cy.get('.slick-dropped-grouping:nth(0) div').contains('Effort-Driven');
+ cy.get('.slick-dropped-grouping:nth(1) div').contains('Duration');
});
it('should expect the grouping to be swapped as well in the grid', () => {
@@ -169,7 +167,7 @@ describe('Example 18 - Draggable Grouping & Aggregators', { retries: 1 }, () =>
.should('be.hidden');
cy.get('#grid18')
- .find('.slick-draggable-dropbox-toggle-placeholder')
+ .find('.slick-draggable-dropzone-placeholder')
.should('be.visible')
.should('have.text', 'Drop a column header here to group by the column');
});
diff --git a/test/cypress/e2e/example23.cy.js b/test/cypress/e2e/example23.cy.js
index 2e4084ccb..719310543 100644
--- a/test/cypress/e2e/example23.cy.js
+++ b/test/cypress/e2e/example23.cy.js
@@ -75,7 +75,7 @@ describe('Example 23 - Range Filters', { retries: 1 }, () => {
});
});
- it('should change "% Complete" filter range by using the slider left handle (min value) to make it a higher min value and expect all rows to be within new range', () => {
+ xit('should change "% Complete" filter range by using the slider left handle (min value) to make it a higher min value and expect all rows to be within new range', () => {
let newLowest = presetMinComplete;
let newHighest = presetMaxComplete;
diff --git a/test/cypress/e2e/example30.cy.js b/test/cypress/e2e/example30.cy.js
index 14e5a95fd..7d487cf86 100644
--- a/test/cypress/e2e/example30.cy.js
+++ b/test/cypress/e2e/example30.cy.js
@@ -233,8 +233,8 @@ describe('Example 30 Composite Editor Modal', { retries: 1 }, () => {
cy.get('.item-details-container.editor-completed .modified').should('have.length', 1);
cy.get('.item-details-container.editor-product .autocomplete').type('granite');
- cy.get('.ui-menu.ui-autocomplete.autocomplete-custom-four-corners').should('be.visible');
- cy.get('.ui-menu.ui-autocomplete.autocomplete-custom-four-corners').find('li.ui-menu-item:nth(0)').click();
+ cy.get('.slick-autocomplete.autocomplete-custom-four-corners').should('be.visible');
+ cy.get('.slick-autocomplete.autocomplete-custom-four-corners').find('div:nth(0)').click();
cy.get('.item-details-container.editor-product .modified').should('have.length', 1);
cy.get('.item-details-container.editor-duration .editor-text').type('22');
@@ -245,8 +245,8 @@ describe('Example 30 Composite Editor Modal', { retries: 1 }, () => {
cy.get(`.flatpickr-day.today:visible`).click('bottom', { force: true });
cy.get('.item-details-container.editor-finish .modified').should('have.length', 1);
- cy.get('.item-details-container.editor-origin .autocomplete').type('antar');
- cy.get('.ui-menu.ui-autocomplete:visible').find('li.ui-menu-item:nth(0)').click();
+ cy.get('.item-details-container.editor-origin .autocomplete').type('c');
+ cy.get('.slick-autocomplete:visible').find('div:nth(1)').click();
cy.get('.item-details-container.editor-origin .autocomplete').invoke('val').then(text => expect(text).to.eq('Antarctica'));
cy.get('.item-details-container.editor-origin .modified').should('have.length', 1);
@@ -321,7 +321,7 @@ describe('Example 30 Composite Editor Modal', { retries: 1 }, () => {
cy.get('.item-details-container.editor-finish .modified').should('have.length', 1);
cy.get('.item-details-container.editor-origin .autocomplete').type('bel');
- cy.get('.ui-menu.ui-autocomplete:visible').find('li.ui-menu-item:nth(1)').click();
+ cy.get('.slick-autocomplete:visible').find('div:nth(1)').click();
cy.get('.item-details-container.editor-origin .modified').should('have.length', 1);
cy.get('.item-details-container.editor-origin .autocomplete').invoke('val').then(text => expect(text).to.eq('Belgium'));
@@ -381,7 +381,7 @@ describe('Example 30 Composite Editor Modal', { retries: 1 }, () => {
cy.get('.item-details-container.editor-finish .modified').should('have.length', 1);
cy.get('.item-details-container.editor-origin .autocomplete').type('bel');
- cy.get('.ui-menu.ui-autocomplete:visible').find('li.ui-menu-item:nth(1)').click();
+ cy.get('.slick-autocomplete:visible').find('div:nth(1)').click();
cy.get('.item-details-container.editor-origin .modified').should('have.length', 1);
cy.get('.item-details-container.editor-origin .autocomplete').invoke('val').then(text => expect(text).to.eq('Belgium'));
});
@@ -433,7 +433,7 @@ describe('Example 30 Composite Editor Modal', { retries: 1 }, () => {
cy.get('.item-details-container.editor-finish .modified').should('have.length', 1);
cy.get('.item-details-container.editor-origin .autocomplete').type('ze');
- cy.get('.ui-menu.ui-autocomplete:visible').find('li.ui-menu-item:nth(1)').click();
+ cy.get('.slick-autocomplete:visible').find('div:nth(1)').click();
cy.get('.item-details-container.editor-origin .modified').should('have.length', 1);
cy.get('.item-details-container.editor-origin .autocomplete').invoke('val').then(text => expect(text).to.eq('Belize'));
diff --git a/test/cypress/e2e/example34.cy.js b/test/cypress/e2e/example34.cy.js
index 65a512054..776230a84 100644
--- a/test/cypress/e2e/example34.cy.js
+++ b/test/cypress/e2e/example34.cy.js
@@ -47,13 +47,9 @@ describe('Example 34 - Real-Time Trading Platform', { retries: 1 }, () => {
});
it('should Group by 1st column "Currency" and expect 2 groups with Totals when collapsed', () => {
- cy.get('.slick-column-name')
- .first()
- .trigger('mousedown', { which: 1, force: true })
-
- cy.get('.slick-draggable-dropbox-toggle-placeholder')
- .trigger('mousemove', 'center')
- .trigger('mouseup', 'center', { which: 1, force: true });
+ cy.get('.slick-header-column:nth(0)')
+ .contains('Currency')
+ .drag('.slick-dropzone', { force: true });
cy.get('.slick-group-toggle-all')
.click();
diff --git a/test/cypress/package.json b/test/cypress/package.json
index d72ee00ef..588edab97 100644
--- a/test/cypress/package.json
+++ b/test/cypress/package.json
@@ -10,6 +10,7 @@
"author": "Ghislain B.",
"license": "MIT",
"devDependencies": {
+ "@4tw/cypress-drag-drop": "^2.2.1",
"cypress": "^10.10.0"
}
}
diff --git a/test/cypress/support/commands.js b/test/cypress/support/commands.js
index 9345567a7..34e002ccf 100644
--- a/test/cypress/support/commands.js
+++ b/test/cypress/support/commands.js
@@ -22,6 +22,8 @@
//
//
// -- This is will overwrite an existing command --
+import '@4tw/cypress-drag-drop';
+
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
Cypress.Commands.add('triggerHover', (elements) => {
console.log(elements)
diff --git a/test/cypress/support/drag.js b/test/cypress/support/drag.js
new file mode 100644
index 000000000..b107728f4
--- /dev/null
+++ b/test/cypress/support/drag.js
@@ -0,0 +1,67 @@
+import { convertPosition } from './common';
+
+Cypress.Commands.add("dragStart", { prevSubject: true }, (subject, { cellWidth = 90, cellHeight = 35 } = {}) => {
+ return cy.wrap(subject).click({ force: true })
+ .trigger('mousedown', { which: 1 }, { force: true })
+ .trigger('mousemove', cellWidth / 3, cellHeight / 3);
+});
+
+// use a different command name than "drag" so that it doesn't conflict with the "@4tw/cypress-drag-drop" lib
+Cypress.Commands.add("dragCell", { prevSubject: true }, (subject, addRow, addCell, { cellWidth = 90, cellHeight = 35 } = {}) => {
+ return cy.wrap(subject).trigger('mousemove', cellWidth * (addCell + 0.5), cellHeight * (addRow + 0.5), { force: true });
+});
+
+Cypress.Commands.add("dragOutside", (viewport = 'topLeft', ms = 0, px = 0, { parentSelector = 'div[class^="slickgrid_"]', scrollbarDimension = 17 } = {}) => {
+ const $parent = cy.$$(parentSelector);
+ const gridWidth = $parent.width();
+ const gridHeight = $parent.height();
+ var x = gridWidth / 2;
+ var y = gridHeight / 2;
+ const position = convertPosition(viewport);
+ if (position.x === "left") {
+ x = -px;
+ } else if (position.x === "right") {
+ x = gridWidth - scrollbarDimension + 3 + px;
+ }
+ if (position.y === "top") {
+ y = -px;
+ } else if (position.y === "bottom") {
+ y = gridHeight - scrollbarDimension + 3 + px;
+ }
+
+ cy.get(parentSelector).trigger('mousemove', x, y, { force: true });
+ if (ms) {
+ cy.wait(ms);
+ }
+ return;
+});
+
+Cypress.Commands.add("dragEnd", { prevSubject: 'optional' }, (_subject, gridSelector = 'div[class^="slickgrid_"]') => {
+ cy.get(gridSelector).trigger('mouseup', { force: true });
+ return;
+});
+
+export function getScrollDistanceWhenDragOutsideGrid(selector, viewport, dragDirection, fromRow, fromCol, px = 140) {
+ return cy.convertPosition(viewport).then(_viewportPosition => {
+ const viewportSelector = `${selector} .slick-viewport-${_viewportPosition.x}.slick-viewport-${_viewportPosition.y}`
+ cy.getCell(fromRow, fromCol, viewport, { parentSelector: selector })
+ .dragStart();
+ return cy.get(viewportSelector).then($viewport => {
+ const scrollTopBefore = $viewport.scrollTop();
+ const scrollLeftBefore = $viewport.scrollLeft();
+ cy.dragOutside(dragDirection, 300, px, { parentSelector: selector });
+ return cy.get(viewportSelector).then($viewportAfter => {
+ cy.dragEnd(selector);
+ const scrollTopAfter = $viewportAfter.scrollTop();
+ const scrollLeftAfter = $viewportAfter.scrollLeft();
+ cy.get(viewportSelector).scrollTo(0, 0, { ensureScrollable: false });
+ return cy.wrap({
+ scrollTopBefore,
+ scrollLeftBefore,
+ scrollTopAfter,
+ scrollLeftAfter
+ });
+ });
+ });
+ });
+}
\ No newline at end of file
diff --git a/test/cypress/yarn.lock b/test/cypress/yarn.lock
index 93a63ea25..7cd8fe6b5 100644
--- a/test/cypress/yarn.lock
+++ b/test/cypress/yarn.lock
@@ -2,6 +2,11 @@
# yarn lockfile v1
+"@4tw/cypress-drag-drop@^2.2.1":
+ version "2.2.1"
+ resolved "https://registry.yarnpkg.com/@4tw/cypress-drag-drop/-/cypress-drag-drop-2.2.1.tgz#bfacd45269ec3a5cbdb776cb05b7803d346f0792"
+ integrity sha512-+ioJSnEwx70IiMyb4pLEjOS5u6AMWRIVCV20toCY7lb0YcvA0ipbjQBa9DdxEI7Zg2E2jtcIj7Rx0e3WNUbk/w==
+
"@cypress/request@^2.88.10":
version "2.88.10"
resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce"
diff --git a/test/jest-pretest.ts b/test/jest-pretest.ts
index 6ac8f0c65..16cf9b896 100644
--- a/test/jest-pretest.ts
+++ b/test/jest-pretest.ts
@@ -2,6 +2,7 @@ import 'aurelia-polyfills';
import 'isomorphic-fetch';
import 'jsdom-global/register';
import { globalize } from 'aurelia-pal-nodejs';
+import Sortable from 'sortablejs';
globalize();
// import jQuery AFTER globalize() is the only way to get the test working
@@ -11,9 +12,9 @@ import * as jQuery from 'jquery';
(window as any).$ = (window as any).jQuery = jQuery;
(global as any).navigator = { userAgent: 'node.js' };
(global as any).Slick = (window as any).Slick = {};
+(global as any).Sortable = (window as any).Sortable = Sortable;
-require('jquery-ui/dist/jquery-ui.js');
-require('slickgrid/lib/jquery.event.drag-2.3.0');
require('slickgrid/slick.core');
require('slickgrid/slick.dataview');
+require('slickgrid/slick.interactions');
require('slickgrid/slick.grid');
diff --git a/yarn.lock b/yarn.lock
index dd3a078e7..5058fd6e9 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1285,130 +1285,131 @@
dependencies:
"@sinonjs/commons" "^1.7.0"
-"@slickgrid-universal/binding@~1.3.5":
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-1.3.5.tgz#79bf586ab5bba666c8dc931ece5f0d72eb832f90"
- integrity sha512-x8dkzIx3LQGxNqzHHXQN6dmAfL5lhX7Tx8435OuRNtln5VSg7myrsM0si0rgykgwEq5fZtSkb0TJi6ZZ51xSJA==
+"@slickgrid-universal/binding@~2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-2.0.0-alpha.0.tgz#3e27585a52b9e8f65c92fc08860e05a7ce0a655a"
+ integrity sha512-OtOO89AzEmLRpneq15iN3Bsw7I9wbNzJw3kK0l8IGBqZwyXmsvRvl0mOjX8lSg4e3tgl4cvAzqYbN3f4vEZOrw==
dependencies:
- dompurify "^2.3.10"
+ dompurify "^2.4.0"
-"@slickgrid-universal/common@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-1.4.0.tgz#f1ce33ba046153a3f6c887855b8dd6a081a42f3d"
- integrity sha512-yQ8yBeHeVjpBYCbzOW2jVwO8RLBH1HA19iaOu92zChUhl9TucoBKjy6obIo5H2vB8IyBXD9ZupUpuKUHdXvbXA==
+"@slickgrid-universal/common@2.0.0-alpha.0", "@slickgrid-universal/common@~2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-2.0.0-alpha.0.tgz#c6829f81a311b1839a7bae00051cd251b9276e8e"
+ integrity sha512-YxMMnYTjVbXOXSFsmD0UCuOM1gukLX/nWmsO9+ys3l4eyRQIghKRb9FG6/5l+0DXxSNITAu6WYgkftkQ9gSYiQ==
dependencies:
- "@slickgrid-universal/event-pub-sub" "~1.4.0"
- "@slickgrid-universal/utils" "~1.4.0"
+ "@slickgrid-universal/event-pub-sub" "~2.0.0-alpha.0"
+ "@slickgrid-universal/utils" "~2.0.0-alpha.0"
+ autocompleter "^6.1.3"
dequal "^2.0.3"
- dompurify "^2.3.10"
+ dompurify "^2.4.0"
flatpickr "^4.6.13"
- jquery "^3.6.0"
- jquery-ui "^1.13.2"
+ jquery "^3.6.1"
moment-mini "^2.29.4"
multiple-select-modified "^1.3.17"
- slickgrid "^2.4.45"
+ slickgrid "^3.0.0"
+ sortablejs "^1.15.0"
un-flatten-tree "^2.0.12"
-"@slickgrid-universal/composite-editor-component@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-1.4.0.tgz#762a49e183fac2fe8ae5937666b2b59ec3574a64"
- integrity sha512-VpvPOCB+mMqI8W2YZ8KJWjFE1PQWf9/32nF2IzzKIaZVdIgFuky9eguYLyLST1Q8B0nCdJR7hpUHYUvFwQqJQw==
+"@slickgrid-universal/composite-editor-component@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-2.0.0-alpha.0.tgz#3cb681def6762456367de18f3fceed33329a119b"
+ integrity sha512-R3+fUKxdkftJ+f5FgylanJ1IKx4nxVIlzbR4V8KYcBChtaKBy/+/2lFWIl9/8jqDXs/TPnveYlMZvVD4h7gwhw==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
- "@slickgrid-universal/utils" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
+ "@slickgrid-universal/utils" "~2.0.0-alpha.0"
-"@slickgrid-universal/custom-footer-component@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-1.4.0.tgz#e85c187a9bec024ece9764ee0124a6312f798977"
- integrity sha512-HtTHvP6ZBEh8Jb7ytwMKVTiMAcxxcoA81yJKUwLQiYnJYe6tBqz/qrInOzsgX5I9gk39dNg4TK9fhv0ChgPa+A==
+"@slickgrid-universal/custom-footer-component@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-2.0.0-alpha.0.tgz#505393d3196bbe4cc15acfd38fa3da0771ee894c"
+ integrity sha512-tHF6VZkbh4sPbGVGRSZ1UvQHIcxW6Qk20Fg7GlGjewxuF6aSwaloIcnG24MTU9DXaN7ZBIXs1mPLk14GdPC98g==
dependencies:
- "@slickgrid-universal/binding" "~1.3.5"
- "@slickgrid-universal/common" "~1.4.0"
+ "@slickgrid-universal/binding" "~2.0.0-alpha.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
moment-mini "^2.29.4"
-"@slickgrid-universal/custom-tooltip-plugin@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-1.4.0.tgz#fbdf65ca4deb5af975de44302858acbb5a6a547c"
- integrity sha512-kjNeFGjs3TzIeaWpwxjtieFOZ85ZcAC54gSVdovo3NI83lnuJqmPImFnR/cXz5+Gb5vepmpKFokRMdQkrSAevQ==
+"@slickgrid-universal/custom-tooltip-plugin@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-2.0.0-alpha.0.tgz#97e56991addc20e3f1b36ed06ea9ccfffd40aa9d"
+ integrity sha512-SvZAvguMsC7galumZecnt0RZVeJb66ILfvxodRhoN6bNFpukyDpiwAiYbLbeg6VTLQp5TlDzEHVPztKW9Kzs2Q==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
- dompurify "^2.3.10"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
+ dompurify "^2.4.0"
-"@slickgrid-universal/empty-warning-component@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-1.4.0.tgz#6de1cbfc517f7326efcef007d8ec3b14fb61f985"
- integrity sha512-C35SzfarjtgzMsZMby9haZi4DtZiYg1CW7pq7N6YWbe2WHrSnedilnTbsIHZqUbRzLt2uBXcfujYSVNAFs5UWg==
+"@slickgrid-universal/empty-warning-component@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-2.0.0-alpha.0.tgz#5ded616d53249f0fdff97cd401e191cf6785d264"
+ integrity sha512-i5JCkFvuj/hubRKV9UsOLPjd7rOOivTMRPTLLx1QdvrE7DmJ7quYniLE7cckxKO/y8+OVBbe5mNnpTLfZvXkbw==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
-"@slickgrid-universal/event-pub-sub@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-1.4.0.tgz#f7769bbf86b65226cb7680a38bc036700b1ec6c5"
- integrity sha512-+jc3LyVjm2QyZE1OVOiuP5Bm7JozRZgJXaODb3gLsA0KJlZEXpHvoAxQ0CCCPfuJakbtbkwqI1cWSO9skp2djQ==
+"@slickgrid-universal/event-pub-sub@2.0.0-alpha.0", "@slickgrid-universal/event-pub-sub@~2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-2.0.0-alpha.0.tgz#6c771968c01d06f979c124acd9a1130f805fc777"
+ integrity sha512-Ou9weKbTmt5qztYiqyUlCBNeKW9gsGWKKsBoJv8I2uImevo7tDMBGJIv7Fac1gn0eQ/lkdi7weMMKCVz6jTzLQ==
dependencies:
- "@slickgrid-universal/utils" "~1.4.0"
+ "@slickgrid-universal/utils" "~2.0.0-alpha.0"
-"@slickgrid-universal/excel-export@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-1.4.0.tgz#fa85fb5a54475e276ff195618caf918a58a08f4a"
- integrity sha512-tYN1pGpAby5ORCpEyFf1MJyqHoFuyaMEmFZyNcsnnAUo7iJb8hYKiqKwzfvk7+Wn/k3w33YBcgFJbd2MmBIWew==
+"@slickgrid-universal/excel-export@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-2.0.0-alpha.0.tgz#5133b165fdcaf9c324a88b1b5cd3b2b27752f0ad"
+ integrity sha512-6CdKsSTElp5XcppxWesYrpaJMkDqGzIoa4qFn61MwKdjpPX5A5we4gsiAQpV+M3VAbdK6v3vhuIhSkZX3yKGeg==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
- "@slickgrid-universal/utils" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
+ "@slickgrid-universal/utils" "~2.0.0-alpha.0"
excel-builder-webpacker "^2.1.7"
moment-mini "^2.29.4"
-"@slickgrid-universal/graphql@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-1.4.0.tgz#5bef18988d79cdff556f6354e8e1ba83d5757783"
- integrity sha512-0vm385SdwEPa46MJKRDe+xxx4XhLnAcI3IZk2PUVW8HLoofunCBNCf6AsJfrCtu8KhWR5cl80tn+7wCghRQFHg==
+"@slickgrid-universal/graphql@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-2.0.0-alpha.0.tgz#7fff63ffb73f9ce17ed672725d94bb85e45a5d67"
+ integrity sha512-goa3JZhbGj1D8kxG2Vm4aXpzx3LGsMjHxIgslal/hXvZQ1Gl5DqdOMwUycLr86hpE1WnMx576yKBTkDtQ1Dp5w==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
-"@slickgrid-universal/odata@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-1.4.0.tgz#518fa90f62f10ec93bb28e2e11bf43191c60df42"
- integrity sha512-9evUhjHf1Fb1Hdw9RcK9ksOKAGhC4yimGMeGSCvAVz0Nt0CgpCHwg3m9U4vtQ+bbMuSlJU2CL+nolQJjac6zbA==
+"@slickgrid-universal/odata@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-2.0.0-alpha.0.tgz#093cf05846d4197770ce7453af08e62b6a745608"
+ integrity sha512-dMgtph+zKieHPfZDVeGa2SCunblbwWOmdjqY8MeHxbd3alrfVUkE9agEQ7KoCxxf0k3rci5mU574KXSdUg+39w==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
- "@slickgrid-universal/utils" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
+ "@slickgrid-universal/utils" "~2.0.0-alpha.0"
-"@slickgrid-universal/pagination-component@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-1.4.0.tgz#3bbfc4d59b7d91e2c53a44997cc78f007601fe4b"
- integrity sha512-Y7aOnnjX0qTSNhtCivfwK+7pJ/2lV1HNKYI+erajz8Yuzf4KwNKfG2rMZsGGBYW3ACUrsxuKmDjvUOCDherCeA==
+"@slickgrid-universal/pagination-component@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-2.0.0-alpha.0.tgz#597e711930416417410f2c8f8dbdc7c0aa33ca5a"
+ integrity sha512-QiAPxxT33wA7UqEKt0ne8/a+NrA1eFukSI9+wLpbdnpm+JDTSh7wuJxhpBE/WyyOtkKOB5ocV7A/17DH1ry7/w==
dependencies:
- "@slickgrid-universal/binding" "~1.3.5"
- "@slickgrid-universal/common" "~1.4.0"
+ "@slickgrid-universal/binding" "~2.0.0-alpha.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
-"@slickgrid-universal/row-detail-view-plugin@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/row-detail-view-plugin/-/row-detail-view-plugin-1.4.0.tgz#92eca8c32d3512c460f09843fe9322c4a1994f25"
- integrity sha512-G1M6RJDWIQw486lY0Ly3Fpsw7WHTuULyfQZEP9sbMckdBTNGLoE26giQuAbnJrPYpJlaf8HYt9Podxyxc4gfBg==
+"@slickgrid-universal/row-detail-view-plugin@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/row-detail-view-plugin/-/row-detail-view-plugin-2.0.0-alpha.0.tgz#12024740560e988a2a7a977ace946e67af6cf6d2"
+ integrity sha512-npdgGoB8qAj1G1uwHAny7WDpEGau70ZxOStLv7zFulFMtDwGvXdkC0BjzuqRJLR80/6zOJAA+CrgFpT+IZJnXQ==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
-"@slickgrid-universal/rxjs-observable@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-1.4.0.tgz#05516298d91178a887c5ba5747d11d941fd0e686"
- integrity sha512-xS5nh2KLgEzmJrtXQTfxp8g4ItWSRVOilBZ9mOhdcpn5MGMe6TufY2NiadWGiVf3KlCMBC815RQFuiYlpD5Vvg==
+"@slickgrid-universal/rxjs-observable@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-2.0.0-alpha.0.tgz#d9b8e558c56f327bdc444edcb96a16baeca589c4"
+ integrity sha512-3PGp/Gl/QQMjb+2QYHUpowmd6Y2oydw7kr9xYtOSJSKz35rUjd7p1qWgBrJH3VUSoUJu/SMS9Qm4FGcO196GmQ==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
rxjs ">=7.5.0"
-"@slickgrid-universal/text-export@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-1.4.0.tgz#0f471340e9ac97879ff34baad3f44fe63b767ec1"
- integrity sha512-SkhrvCH4dZldfncDBLEJmZ4ogExvE4fdOTOITgDZ7111tFWnRgddRf147/9cLZN12G+VPTKKofrUyry7ZjhQ6w==
+"@slickgrid-universal/text-export@2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-2.0.0-alpha.0.tgz#55409fb5aee273622bbac751248a13222b12eeec"
+ integrity sha512-vbLzxrFtNNSLTtn1TpalHj+nOkpt+uMhEyg4lPrdhLwgd83sTkiuYyHlTR42snc3S9dekBXLrMfESNcey2KpbA==
dependencies:
- "@slickgrid-universal/common" "~1.4.0"
- "@slickgrid-universal/utils" "~1.4.0"
+ "@slickgrid-universal/common" "~2.0.0-alpha.0"
+ "@slickgrid-universal/utils" "~2.0.0-alpha.0"
text-encoding-utf-8 "^1.0.2"
-"@slickgrid-universal/utils@~1.4.0":
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-1.4.0.tgz#ff42b51ad5cddf65356d2c151257f071b61aafd7"
- integrity sha512-OlvxHElFJBQAMdSNiRhhBxTGe3gsK98mxLGsLXp6aA3IycW+79KZ8W6QZWRLtR00l/g4ZvuLvqCu0Ky8g2MRAQ==
+"@slickgrid-universal/utils@~2.0.0-alpha.0":
+ version "2.0.0-alpha.0"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-2.0.0-alpha.0.tgz#0dbe7e1d3776def74a24696794d1db1a3e552a0f"
+ integrity sha512-WHug6SRkv4Sb7kl3NcQ7bNBaToljHElkar8ZBRp7TlW+O5L5BJuvzj7k7enY04RL7RTjdHI2QxsFjd62qL/Z0w==
"@szmarczak/http-timer@^5.0.1":
version "5.0.1"
@@ -1480,7 +1481,7 @@
dependencies:
"@babel/types" "^7.3.0"
-"@types/bluebird@^3.5.37":
+"@types/bluebird@^3.5.36":
version "3.5.37"
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.37.tgz#b99e5c7fe382c2c6d5252dc99d9fba6810fedbeb"
integrity sha512-g2qEd+zkfkTEudA2SrMAeAvY7CrFqtbsLILm2dT2VIeKTqMqVzcdfURlvu6FU3srRgbmXN1Srm94pg34EIehww==
@@ -1751,6 +1752,11 @@
dependencies:
"@types/node" "*"
+"@types/sortablejs@^1.13.0":
+ version "1.13.0"
+ resolved "https://registry.yarnpkg.com/@types/sortablejs/-/sortablejs-1.13.0.tgz#870223438f8f2cd81157b128a4c0261adbcaa946"
+ integrity sha512-C3064MH72iEfeGCYEGCt7FCxXoAXaMPG0QPnstcxvPmbl54erpISu06d++FY37Smja64iWy5L8wOyHHBghWbJQ==
+
"@types/stack-utils@^2.0.0":
version "2.0.1"
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.1.tgz#20f18294f797f2209b5f65c8e3b5c8e8261d127c"
@@ -2919,6 +2925,11 @@ aurelia-webpack-plugin@^5.0.4:
minimatch "^3.0.4"
parse5 "^5.1.1"
+autocompleter@^6.1.3:
+ version "6.1.3"
+ resolved "https://registry.yarnpkg.com/autocompleter/-/autocompleter-6.1.3.tgz#856e24acf3df320e6cb7f71222bf506f71d7993a"
+ integrity sha512-Pjb5R5r+S0/zDFudLP9a8CW7/xMc7O/uVCtaTf3f+RdNLAQQ5oUG018c3IRdDJMRVvT+OeZ1NYQoUH5GHlORKQ==
+
available-typed-arrays@^1.0.2:
version "1.0.4"
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9"
@@ -4660,11 +4671,6 @@ domhandler@^5.0.1, domhandler@^5.0.2:
dependencies:
domelementtype "^2.3.0"
-dompurify@^2.3.10:
- version "2.3.10"
- resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.3.10.tgz#901f7390ffe16a91a5a556b94043314cd4850385"
- integrity sha512-o7Fg/AgC7p/XpKjf/+RC3Ok6k4St5F7Q6q6+Nnm3p2zGWioAY6dh0CbbuwOhH2UcSzKsdniE/YnE2/92JcsA+g==
-
dompurify@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-2.4.0.tgz#c9c88390f024c2823332615c9e20a453cf3825dd"
@@ -7743,23 +7749,16 @@ jest@^29.1.2:
import-local "^3.0.2"
jest-cli "^29.1.2"
-jquery-ui@>=1.8.0, jquery-ui@^1.13.2:
- version "1.13.2"
- resolved "https://registry.yarnpkg.com/jquery-ui/-/jquery-ui-1.13.2.tgz#de03580ae6604773602f8d786ad1abfb75232034"
- integrity sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==
- dependencies:
- jquery ">=1.8.0 <4.0.0"
+jquery@>=3.0.0, jquery@^3.6.1:
+ version "3.6.1"
+ resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16"
+ integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==
-jquery@>=1.8.0, "jquery@>=1.8.0 <4.0.0", jquery@^3.5.1, jquery@^3.6.0:
+jquery@^3.5.1:
version "3.6.0"
resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.0.tgz#c72a09f15c1bdce142f49dbf1170bdf8adac2470"
integrity sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==
-jquery@^3.6.1:
- version "3.6.1"
- resolved "https://registry.yarnpkg.com/jquery/-/jquery-3.6.1.tgz#fab0408f8b45fc19f956205773b62b292c147a16"
- integrity sha512-opJeO4nCucVnsjiXOE+/PcCgYw9Gwpvs/a6B1LL/lQhwWwpbVEVYDZ1FokFr8PRc7ghYlrFPuyHuiiDNTQxmcw==
-
js-sdsl@^4.1.4:
version "4.1.4"
resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.1.4.tgz#78793c90f80e8430b7d8dc94515b6c77d98a26a6"
@@ -10525,13 +10524,13 @@ slash@^4.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
-slickgrid@^2.4.45:
- version "2.4.45"
- resolved "https://registry.yarnpkg.com/slickgrid/-/slickgrid-2.4.45.tgz#98012820ad2c782b3e51b66d5b793c0ad710e87c"
- integrity sha512-WvygGTaLU9LnMWZSxqW1agwq8IcDGeCZ289vP1E07eh3ffyLm5TGQsYHXvTwWCHtriZBw+L9RFK/h7TsIMcoLQ==
+slickgrid@^3.0.0:
+ version "3.0.0"
+ resolved "https://registry.yarnpkg.com/slickgrid/-/slickgrid-3.0.0.tgz#8a1640ad2836731ab5a18b428e25ae8bc2dff81c"
+ integrity sha512-6uhXqGitOYy2pheO7E77tqpf/DZ9stXjkyltcsbxg2GYZp+daDSh89dmlkvYlStO3gA8EmcG0WmxrAXDBFMSvA==
dependencies:
- jquery ">=1.8.0"
- jquery-ui ">=1.8.0"
+ jquery ">=3.0.0"
+ sortablejs "^1.15.0"
smart-buffer@^4.2.0:
version "4.2.0"
@@ -10577,6 +10576,11 @@ sockjs@^0.3.24:
uuid "^8.3.2"
websocket-driver "^0.7.4"
+sortablejs@^1.15.0:
+ version "1.15.0"
+ resolved "https://registry.yarnpkg.com/sortablejs/-/sortablejs-1.15.0.tgz#53230b8aa3502bb77a29e2005808ffdb4a5f7e2a"
+ integrity sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==
+
socks-proxy-agent@5, socks-proxy-agent@^5.0.0:
version "5.0.1"
resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e"