diff --git a/package.json b/package.json
index 017ca8166..d4649c743 100644
--- a/package.json
+++ b/package.json
@@ -58,12 +58,12 @@
"new-release": "npm run release, note that yarn is not supported with release-it and will throw an error"
},
"dependencies": {
- "@slickgrid-universal/common": "~3.4.0",
- "@slickgrid-universal/custom-footer-component": "~3.4.0",
- "@slickgrid-universal/empty-warning-component": "~3.4.0",
+ "@slickgrid-universal/common": "~3.4.2",
+ "@slickgrid-universal/custom-footer-component": "~3.4.2",
+ "@slickgrid-universal/empty-warning-component": "~3.4.2",
"@slickgrid-universal/event-pub-sub": "~3.4.0",
- "@slickgrid-universal/pagination-component": "~3.4.0",
- "@slickgrid-universal/row-detail-view-plugin": "~3.4.0",
+ "@slickgrid-universal/pagination-component": "~3.4.2",
+ "@slickgrid-universal/row-detail-view-plugin": "~3.4.2",
"aurelia-event-aggregator": "^1.0.3",
"aurelia-framework": "^1.4.1",
"aurelia-i18n": "^4.0.4",
@@ -77,13 +77,13 @@
"@fnando/sparkline": "^0.3.10",
"@popperjs/core": "^2.11.8",
"@release-it/conventional-changelog": "^7.0.2",
- "@slickgrid-universal/composite-editor-component": "~3.4.0",
- "@slickgrid-universal/custom-tooltip-plugin": "~3.4.0",
- "@slickgrid-universal/excel-export": "~3.4.0",
- "@slickgrid-universal/graphql": "~3.4.0",
- "@slickgrid-universal/odata": "~3.4.0",
- "@slickgrid-universal/rxjs-observable": "~3.4.0",
- "@slickgrid-universal/text-export": "~3.4.0",
+ "@slickgrid-universal/composite-editor-component": "~3.4.2",
+ "@slickgrid-universal/custom-tooltip-plugin": "~3.4.2",
+ "@slickgrid-universal/excel-export": "~3.4.2",
+ "@slickgrid-universal/graphql": "~3.4.2",
+ "@slickgrid-universal/odata": "~3.4.2",
+ "@slickgrid-universal/rxjs-observable": "~3.4.2",
+ "@slickgrid-universal/text-export": "~3.4.2",
"@types/bluebird": "^3.5.41",
"@types/dompurify": "^3.0.4",
"@types/fnando__sparkline": "^0.3.6",
diff --git a/src/examples/slickgrid/example6.html b/src/examples/slickgrid/example6.html
index 0cc437efa..121513482 100644
--- a/src/examples/slickgrid/example6.html
+++ b/src/examples/slickgrid/example6.html
@@ -35,6 +35,10 @@
click.delegate="setSortingDynamically()">
Set Sorting Dynamically
+
@@ -52,6 +56,20 @@
${selectedLanguage + '.json'}
+
+
+
+
+
+
+
+
diff --git a/src/examples/slickgrid/example6.ts b/src/examples/slickgrid/example6.ts
index dce77efb0..c9db468e9 100644
--- a/src/examples/slickgrid/example6.ts
+++ b/src/examples/slickgrid/example6.ts
@@ -1,10 +1,11 @@
-import { GraphqlService, GraphqlPaginatedResult, GraphqlServiceApi, } from '@slickgrid-universal/graphql';
+import { GraphqlService, GraphqlPaginatedResult, GraphqlServiceApi, GraphqlServiceOption, } from '@slickgrid-universal/graphql';
import { autoinject } from 'aurelia-framework';
import { I18N } from 'aurelia-i18n';
import * as moment from 'moment-mini';
import {
AureliaGridInstance,
Column,
+ CursorPageInfo,
FieldType,
Filters,
Formatters,
@@ -36,7 +37,7 @@ export class Example6 {
You can also preload a grid with certain "presets" like Filters / Sorters / Pagination Wiki - Grid Preset
`;
-
+ isWithCursor = false;
aureliaGrid!: AureliaGridInstance;
columnDefinitions: Column[] = [];
gridOptions!: GridOption;
@@ -44,7 +45,6 @@ export class Example6 {
metrics!: Metrics;
graphqlService = new GraphqlService();
- isWithCursor = false;
graphqlQuery = '';
processing = false;
selectedLanguage: string;
@@ -168,7 +168,7 @@ export class Example6 {
{ columnId: 'name', direction: 'asc' },
{ columnId: 'company', direction: SortDirection.DESC }
],
- pagination: { pageNumber: 2, pageSize: 20 }
+ pagination: { pageNumber: this.isWithCursor ? 1 : 2, pageSize: 20 } // if cursor based, start at page 1
},
backendServiceApi: {
service: this.graphqlService,
@@ -179,6 +179,7 @@ export class Example6 {
field: 'userId',
value: 123
}],
+ isWithCursor: this.isWithCursor, // sets pagination strategy, if true requires a call to setPageInfo() when graphql call returns
// when dealing with complex objects, we want to keep our field name with double quotes
// example with gender: query { users (orderBy:[{field:"gender",direction:ASC}]) {}
keepArgumentFieldDoubleQuotes: true
@@ -215,6 +216,35 @@ export class Example6 {
*/
// eslint-disable-next-line @typescript-eslint/no-unused-vars
getCustomerApiCall(_query: string): Promise {
+ let pageInfo: CursorPageInfo;
+ if (this.aureliaGrid?.paginationService) {
+ const { paginationService } = this.aureliaGrid;
+ // there seems to a timing issue where when you click "cursor" it requests the data before the pagination-service is initialized...
+ const pageNumber = (paginationService as any)._initialized ? paginationService.getCurrentPageNumber() : 1;
+ // In the real world, each node item would be A,B,C...AA,AB,AC, etc and so each page would actually be something like A-T, T-AN
+ // but for this mock data it's easier to represent each page as
+ // Page1: A-B
+ // Page2: B-C
+ // Page3: C-D
+ // Page4: D-E
+ // Page5: E-F
+ const startCursor = String.fromCharCode('A'.charCodeAt(0) + pageNumber - 1);
+ const endCursor = String.fromCharCode(startCursor.charCodeAt(0) + 1);
+ pageInfo = {
+ hasPreviousPage: paginationService.dataFrom === 0,
+ hasNextPage: paginationService.dataTo === 100,
+ startCursor,
+ endCursor
+ };
+ } else {
+ pageInfo = {
+ hasPreviousPage: false,
+ hasNextPage: true,
+ startCursor: 'A',
+ endCursor: 'B'
+ };
+ }
+
// in your case, you will call your WebAPI function (wich needs to return a Promise)
// for the demo purpose, we will call a mock WebAPI function
const mockedResult = {
@@ -223,7 +253,8 @@ export class Example6 {
data: {
[GRAPHQL_QUERY_DATASET_NAME]: {
nodes: [],
- totalCount: 100
+ totalCount: 100,
+ pageInfo
}
}
};
@@ -231,6 +262,13 @@ export class Example6 {
return new Promise(resolve => {
setTimeout(() => {
this.graphqlQuery = this.graphqlService.buildQuery();
+ // this.graphqlQuery = this.gridOptions.backendServiceApi!.service.buildQuery();
+ if (this.isWithCursor) {
+ // When using cursor pagination, the pagination service needs to updated with the PageInfo data from the latest request
+ // This might be done automatically if using a framework specific slickgrid library
+ // Note because of this timeout, this may cause race conditions with rapid clicks!
+ this.aureliaGrid?.paginationService?.setCursorPageInfo(mockedResult.data[GRAPHQL_QUERY_DATASET_NAME].pageInfo);
+ }
resolve(mockedResult);
}, 150);
});
@@ -275,6 +313,44 @@ export class Example6 {
]);
}
+ resetToOriginalPresets() {
+ const presetLowestDay = moment().add(-2, 'days').format('YYYY-MM-DD');
+ const presetHighestDay = moment().add(20, 'days').format('YYYY-MM-DD');
+
+ this.aureliaGrid.filterService.updateFilters([
+ // you can use OperatorType or type them as string, e.g.: operator: 'EQ'
+ { columnId: 'gender', searchTerms: ['male'], operator: OperatorType.equal },
+ { columnId: 'name', searchTerms: ['John Doe'], operator: OperatorType.contains },
+ { columnId: 'company', searchTerms: ['xyz'], operator: 'IN' },
+
+ // use a date range with 2 searchTerms values
+ { columnId: 'finish', searchTerms: [presetLowestDay, presetHighestDay], operator: OperatorType.rangeInclusive },
+ ]);
+ this.aureliaGrid.sortService.updateSorting([
+ // direction can written as 'asc' (uppercase or lowercase) and/or use the SortDirection type
+ { columnId: 'name', direction: 'asc' },
+ { columnId: 'company', direction: SortDirection.DESC }
+ ]);
+ setTimeout(() => {
+ this.aureliaGrid.paginationService?.changeItemPerPage(20);
+ this.aureliaGrid.paginationService?.goToPageNumber(2);
+ });
+ }
+
+ setIsWithCursor(isWithCursor: boolean) {
+ this.isWithCursor = isWithCursor;
+ this.resetOptions({ isWithCursor: this.isWithCursor });
+ return true;
+ }
+
+ private resetOptions(options: Partial) {
+ const graphqlService = this.gridOptions.backendServiceApi!.service as GraphqlService;
+ this.aureliaGrid.paginationService!.setCursorBased(options.isWithCursor!);
+ this.aureliaGrid.paginationService?.goToFirstPage();
+ graphqlService.updateOptions(options);
+ this.gridOptions = { ...this.gridOptions };
+ }
+
async switchLanguage() {
const nextLanguage = (this.selectedLanguage === 'en') ? 'fr' : 'en';
await this.i18n.setLocale(nextLanguage);
diff --git a/test/cypress/e2e/example06.cy.ts b/test/cypress/e2e/example06.cy.ts
index 293cfda0e..cfb4385c0 100644
--- a/test/cypress/e2e/example06.cy.ts
+++ b/test/cypress/e2e/example06.cy.ts
@@ -4,7 +4,7 @@ import { removeWhitespaces } from '../plugins/utilities';
const presetLowestDay = moment().add(-2, 'days').format('YYYY-MM-DD');
const presetHighestDay = moment().add(20, 'days').format('YYYY-MM-DD');
-describe('Example 6 - GraphQL Grid', { retries: 1 }, () => {
+describe('Example 6 - GraphQL Grid', { retries: 0 }, () => {
it('should display Example title', () => {
cy.visit(`${Cypress.config('baseUrl')}/slickgrid/example6`);
cy.get('h2').should('contain', 'Example 6: Grid with Backend GraphQL Service');
@@ -654,6 +654,126 @@ describe('Example 6 - GraphQL Grid', { retries: 1 }, () => {
cy.get('.flatpickr-input')
.should('contain.value', 'au'); // date range will contains (y to z) or in French (y au z)
});
+
+ it('should switch locale to English', () => {
+ cy.get('[data-test=language-button]')
+ .click();
+
+ cy.get('[data-test=selected-locale]')
+ .should('contain', 'en.json');
+ });
+ });
+
+ describe('Cursor Pagination', () => {
+ it('should re-initialize grid for cursor pagination', () => {
+ cy.get('[data-test="reset-presets"]').click(); // reset to same original presets
+ cy.get('[data-test=cursor]').click();
+
+ // the page number input should be a label now
+ // cy.get('[data-test=page-number-label]').should('exist').should('have.text', '1');
+ cy.get('[data-test=page-number-input]')
+ .invoke('val')
+ .then(text => expect(text).to.eq('1'));
+ });
+
+ it('should change Pagination to the last page', () => {
+ // Go to first page (if not already there)
+ cy.get('[data-test=goto-first-page').click();
+
+ cy.get('.icon-seek-end').click();
+
+ // wait for the query to finish
+ cy.get('[data-test=status]').should('contain', 'finished');
+ cy.get('[data-test=graphql-query-result]')
+ .should(($span) => {
+ const text = removeWhitespaces($span.text()); // remove all white spaces
+ expect(text).to.eq(removeWhitespaces(`query{users(last:20,
+ orderBy:[{field:"name",direction:ASC},{field:"company",direction:DESC}],
+ filterBy:[
+ {field:"gender",operator:EQ,value:"male"},{field:"name",operator:Contains,value:"JohnDoe"},
+ {field:"company",operator:IN,value:"xyz"},{field:"finish",operator:GE,value:"${presetLowestDay}"},{field:"finish",operator:LE,value:"${presetHighestDay}"}
+ ],locale:"en",userId:123){totalCount,nodes{id,name,gender,company,billing{address{street,zip}},finish},pageInfo{hasNextPage,hasPreviousPage,endCursor,startCursor},edges{cursor}}}`));
+ });
+ });
+
+ it('should change Pagination to the first page', () => {
+ // Go to first page (if not already there)
+ cy.get('[data-test=goto-last-page').click();
+
+ cy.get('.icon-seek-first').click();
+
+ // wait for the query to finish
+ cy.get('[data-test=status]').should('contain', 'finished');
+ cy.get('[data-test=graphql-query-result]')
+ .should(($span) => {
+ const text = removeWhitespaces($span.text()); // remove all white spaces
+ expect(text).to.eq(removeWhitespaces(`query{users(first:20,
+ orderBy:[{field:"name",direction:ASC},{field:"company",direction:DESC}],
+ filterBy:[
+ {field:"gender",operator:EQ,value:"male"},{field:"name",operator:Contains,value:"JohnDoe"},
+ {field:"company",operator:IN,value:"xyz"},{field:"finish",operator:GE,value:"${presetLowestDay}"},{field:"finish",operator:LE,value:"${presetHighestDay}"}
+ ],locale:"en",userId:123){totalCount,nodes{id,name,gender,company,billing{address{street,zip}},finish},pageInfo{hasNextPage,hasPreviousPage,endCursor,startCursor},edges{cursor}}}`));
+ });
+ });
+
+ it('should change Pagination to next page and all the way to the last', () => {
+ // Go to first page (if not already there)
+ cy.get('[data-test=goto-first-page').click();
+ cy.get('[data-test=status]').should('contain', 'finished');
+
+ // on page 1, click 4 times to get to page 5 (the last page)
+ cy.wrap([0, 1, 2, 3]).each((el, i) => {
+ cy.wait(200); // Avoid clicking too fast and hitting race conditions because of the setTimeout in the example page (this timeout should be greater than in the page)
+ cy.get('.icon-seek-next').click().then(() => {
+ // wait for the query to finish
+ cy.get('[data-test=status]').should('contain', 'finished');
+ cy.get('[data-test=graphql-query-result]')
+ .should(($span) => {
+ // First page is A-B
+ // first click is to get page after A-B
+ // => get first 20 after 'B'
+ const afterCursor = String.fromCharCode('B'.charCodeAt(0) + i);
+
+ const text = removeWhitespaces($span.text()); // remove all white spaces
+ expect(text).to.eq(removeWhitespaces(`query{users(first:20,after:"${afterCursor}",
+ orderBy:[{field:"name",direction:ASC},{field:"company",direction:DESC}],
+ filterBy:[
+ {field:"gender",operator:EQ,value:"male"},{field:"name",operator:Contains,value:"JohnDoe"},
+ {field:"company",operator:IN,value:"xyz"},{field:"finish",operator:GE,value:"${presetLowestDay}"},{field:"finish",operator:LE,value:"${presetHighestDay}"}
+ ],locale:"en",userId:123){totalCount,nodes{id,name,gender,company,billing{address{street,zip}},finish},pageInfo{hasNextPage,hasPreviousPage,endCursor,startCursor},edges{cursor}}}`));
+ });
+ });
+ });
+ });
+
+ it('should change Pagination from the last page all the way to the first', () => {
+ // Go to last page (if not already there)
+ cy.get('[data-test=goto-last-page').click();
+
+ // on page 5 (last page), click 4 times to go to page 1
+ cy.wrap([0, 1, 2, 3]).each((el, i) => {
+ cy.wait(200); // Avoid clicking too fast and hitting race conditions because of the setTimeout in the example page (this timeout should be greater than in the page)
+ cy.get('.icon-seek-prev').click().then(() => {
+ // wait for the query to finish
+ cy.get('[data-test=status]').should('contain', 'finished');
+ cy.get('[data-test=graphql-query-result]')
+ .should(($span) => {
+ // Last page is E-F
+ // first click is to get page before E-F
+ // => get last 20 before 'E'
+ const beforeCursor = String.fromCharCode('E'.charCodeAt(0) - i);
+
+ const text = removeWhitespaces($span.text()); // remove all white spaces
+ expect(text).to.eq(removeWhitespaces(`query{users(last:20,before:"${beforeCursor}",
+ orderBy:[{field:"name",direction:ASC},{field:"company",direction:DESC}],
+ filterBy:[
+ {field:"gender",operator:EQ,value:"male"},{field:"name",operator:Contains,value:"JohnDoe"},
+ {field:"company",operator:IN,value:"xyz"},{field:"finish",operator:GE,value:"${presetLowestDay}"},{field:"finish",operator:LE,value:"${presetHighestDay}"}
+ ],locale:"en",userId:123){totalCount,nodes{id,name,gender,company,billing{address{street,zip}},finish},pageInfo{hasNextPage,hasPreviousPage,endCursor,startCursor},edges{cursor}}}`));
+ });
+ });
+ });
+ });
});
});
diff --git a/yarn.lock b/yarn.lock
index a08f042a7..4e374fe81 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1158,10 +1158,10 @@
resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-3.4.0.tgz#241207fd036fcd7dfc803e05352c4bd94078abba"
integrity sha512-tzyMdx/sGcDXrjIiC0W7e0eFRtTrlPPq14Q4ZSxK61tUJ26rySQ5dTJ7vYcGQNauUQ+maeRJms0aFJAMiHfK9w==
-"@slickgrid-universal/common@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-3.4.0.tgz#52b5534b6f81448e4198fe72cf2faeacc0572972"
- integrity sha512-P4LG+9SNQaubGfLDzl++Z8MTCNz1LZHpRqp0BOJv7wGRojFqqTQh8ufDyvRAT/wpBjK3SvmbxHGO++Zb6tBfcg==
+"@slickgrid-universal/common@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-3.4.2.tgz#f3e287f82396c34708add3a3c1f913fd31423243"
+ integrity sha512-v02Gd0b7CFHhEbSjJWFxCfEnFmE0DGaEGpzhRWhmDSk3xdKRx0EUR9+CqhUi96UuFWj37FT2ZwsmkgIHzhr/3Q==
dependencies:
"@slickgrid-universal/event-pub-sub" "~3.4.0"
"@slickgrid-universal/utils" "~3.4.0"
@@ -1171,41 +1171,41 @@
flatpickr "^4.6.13"
moment-mini "^2.29.4"
multiple-select-vanilla "^0.5.0"
- slickgrid "^4.1.2"
+ slickgrid "^4.1.3"
sortablejs "^1.15.0"
un-flatten-tree "^2.0.12"
-"@slickgrid-universal/composite-editor-component@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-3.4.0.tgz#3d440605f0b3d420ffe62f337dd93769bf982196"
- integrity sha512-rJooCc4XitSZ5oQoToH5+7HEY30qikTjbxBVEeiRdX0mYLRWU3JOv5M0tx5PItMRT6YLGIftPoTnvQwZ8qHWnA==
+"@slickgrid-universal/composite-editor-component@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-3.4.2.tgz#f0862b97a7eb743c1700e974a4d7386820f1c01a"
+ integrity sha512-6I8OUhR9TerfGCJqFjQ/B8F+3AbA2mcQakiLQrHPrd/eaNgcagkmsli+DRMYiJgM4DB9OqW/qSf3vLEqmiwiiQ==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
"@slickgrid-universal/utils" "~3.4.0"
-"@slickgrid-universal/custom-footer-component@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-3.4.0.tgz#5fac3fa24856dadd43e358960ab6cb297bf2d80c"
- integrity sha512-zQul8lDUVsz2AUhTwSYtCxbGt2cyHIPg4TorpZNgpz+6Yn+7Wy0fAneDUtodNmsph9TLrGiizF5gxUP1avjaJA==
+"@slickgrid-universal/custom-footer-component@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-3.4.2.tgz#5beca4b816dece58712e6c3c935c9c9c5ec570fe"
+ integrity sha512-wVUMEzz2DSJZU9uofEreSwxH3sweJEaUku8rduh4JaoECUwxZTM35Ic0NQ4v+UppNA7Axs06DNxiSHasDkxjjw==
dependencies:
"@slickgrid-universal/binding" "~3.4.0"
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
moment-mini "^2.29.4"
-"@slickgrid-universal/custom-tooltip-plugin@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-3.4.0.tgz#6ce33a5f2ee7bddd3d2831760f978f00760cf0fe"
- integrity sha512-XO7yQwMu6gCD0T/9lgaOdhU52schAmJSu3JEQRyUAN45umyIshDHfKRyKPBPhx/jkjJgd/xO5sd6h/zz2uHQwg==
+"@slickgrid-universal/custom-tooltip-plugin@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-3.4.2.tgz#801d5892d4fff81d1bbdc0d3d725244e910b5594"
+ integrity sha512-LQuzuX9xmD2WkAHxIQ7qtPfppB2DQwbCKYME0VTL9ZwLm4HKlFkKrOxSP1A0dAiUz2Si6Dw48bFkJEipK3sEmw==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
dompurify "^3.0.6"
-"@slickgrid-universal/empty-warning-component@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-3.4.0.tgz#f436ec68380a13093933a0220b30e11021d4bb4e"
- integrity sha512-TC5WNRrJQ4zLvnMSoV0jOXKDJQCVygq2yKf+QUV+5xcvtjICOfxFStkMo+KyVq9O7T0T+Zc43X7DCjMs/RqE3A==
+"@slickgrid-universal/empty-warning-component@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-3.4.2.tgz#8662f37a122e1c556667c64674afcea20349a6e8"
+ integrity sha512-6swScEGh2svmTDYm45W7+E4WEkbA9oJWD2/CIBtFjxaOY+JwW+2L/cEZbbveU/VYjszrlvZrr9eSSYei6gAsMw==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
"@slickgrid-universal/event-pub-sub@~3.4.0":
version "3.4.0"
@@ -1214,61 +1214,61 @@
dependencies:
"@slickgrid-universal/utils" "~3.4.0"
-"@slickgrid-universal/excel-export@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-3.4.0.tgz#34ca67e45423d511533b70637d2e3569fb779ced"
- integrity sha512-/5LviCJKT538Kl/AeUal2wmcewjdODQbl5I8pU9oBXHdsGxj+olZSVWXvlf+4PaaEbkJ2extytQuQg0VccLIXg==
+"@slickgrid-universal/excel-export@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-3.4.2.tgz#f832ca2e1f9949d9138ea37d532280d11297f95c"
+ integrity sha512-4558fjpGzsFh/ydvN4D4YDdtCwh6IVTjpKlY9NME86fU2MYF9WWKhLyp7KGPJB5VCsS13HYnx36aSsi5iKzFbQ==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
"@slickgrid-universal/utils" "~3.4.0"
excel-builder-webpacker "^2.1.8"
moment-mini "^2.29.4"
-"@slickgrid-universal/graphql@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-3.4.0.tgz#f6a8d8bec0df98519366a6b876714894ef30a75c"
- integrity sha512-qoqQhjN9IZJvRf2P2vgKsdQeKGmQtECH1QCgTgQytQoDVwfbwRBw8zr8RNrK4v/dsDP4G+ClGjOYSCLa0B0GrA==
+"@slickgrid-universal/graphql@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-3.4.2.tgz#d2a0a62ac922c795644c6ac7361fcfec55dc34e1"
+ integrity sha512-pJfInMvc0aAc1KfNA1fOjxJlNdIBkRpjSVjJjGXKfdL77GL+Pos7xjcVjyN/rvYj+9HBKB2ms3rgf/Aem2xgFw==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
-"@slickgrid-universal/odata@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-3.4.0.tgz#3eedcd40a131ac8b04c43eb3c8d4c223788716fb"
- integrity sha512-EPdfwLm7/WYeUqESMrNo+Z1IZkByu8KAFyCuMCx7ipntnPBm0y/Oipmh9TIYc+iQjm2bwMWyAzE3SK7sSYeD1Q==
+"@slickgrid-universal/odata@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-3.4.2.tgz#4568a5564d786fdbeb9a427abb1487f0cf8dc519"
+ integrity sha512-gZdplns2PhaB6cqig4V5YdOg84hNIbJ9QP7sKNMsbfCktoupfx6DKuBB/u/40tc6iXBHWLFqLeK4gkMFKxnmmQ==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
"@slickgrid-universal/utils" "~3.4.0"
-"@slickgrid-universal/pagination-component@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-3.4.0.tgz#cf543034cbc40036585f1dd81038e34069a940d2"
- integrity sha512-OfsC+yH/Vm6ujq8liFTL47m6NJT44xrhNeWYdSmOXR/zIvV/4M5WJLtt8heiIZrfXrJVntr+q01N3nXDYBER2A==
+"@slickgrid-universal/pagination-component@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-3.4.2.tgz#f81a24cd5a0f926dc83838d4958df0864d27bf6f"
+ integrity sha512-qoGkUYcATHh8fH91JfnTqkQO0uxG8RNBAgZeGcJ6i6fAUuAsSRzBfrim7eWXSP1xa4KPl1sC+jLtuVjTciKf2Q==
dependencies:
"@slickgrid-universal/binding" "~3.4.0"
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
-"@slickgrid-universal/row-detail-view-plugin@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/row-detail-view-plugin/-/row-detail-view-plugin-3.4.0.tgz#4d3da10b6e1a04eca47f813fa646211d70666b61"
- integrity sha512-VIcVNTeA/ZZB4fQVNLHc6Yf6CP8Ad2LH1TkwQl2AvHyhxGL9HIVkcku8HSdoD33p62LH6Fvh3OGMQYnEcSXAsQ==
+"@slickgrid-universal/row-detail-view-plugin@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/row-detail-view-plugin/-/row-detail-view-plugin-3.4.2.tgz#b765c9a2c7ae89ad85db98c9bd7821cd470a25c4"
+ integrity sha512-Ozm68omoncdvIfSbepQetYu3cGiwwV/xbh6j2g/T+zu671mJ3btDrnADAA9DbhMDBCClJQ2ntbsVuZgINPS6bg==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
"@slickgrid-universal/utils" "~3.4.0"
-"@slickgrid-universal/rxjs-observable@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-3.4.0.tgz#349d3686d38fd98ce61e4a98c04b2e33a6b47fef"
- integrity sha512-cLpAs9gqdNWLUiuKSk5eWJ0Hs9QiF8lUro33yyx9ZuJbBPLKvNJWcT1qVoPualvp2DBOrYaB/KC4mMs3T7NUdw==
+"@slickgrid-universal/rxjs-observable@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-3.4.2.tgz#f32e84d52504b3c900ea21050021e52ebbf994b1"
+ integrity sha512-GZ1g9R8DiwrxPFlj1jV8T5Dz68K+rQHzJzVWffLNCUL7fxa34hIJxAmQgqc4V+9X2GYs8IGEVG5p1JE9tbAhPQ==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
rxjs "^7.8.1"
-"@slickgrid-universal/text-export@~3.4.0":
- version "3.4.0"
- resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-3.4.0.tgz#8aacc9bb08d17c135c93e4aca6e936fcde2cf407"
- integrity sha512-Xg9Fc0Dz2micvag7eI6s+PKa0cPAgcnVpHbAMj6ym6kgpVoegi6VyNomnKWTr4GQUmVbg2hQ3l4iB3Rc8VHhIg==
+"@slickgrid-universal/text-export@~3.4.2":
+ version "3.4.2"
+ resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-3.4.2.tgz#9ce7c16135ae7cee42ec31b12897377b8a98ee8d"
+ integrity sha512-RjvoovoqJ5yEiLdXhJXSiFybB8zW/eg0xvFVpK1sSSJUPyYB/tdZnFCay02KFMMLP9sY+UrFIoFiuLBpqISqyw==
dependencies:
- "@slickgrid-universal/common" "~3.4.0"
+ "@slickgrid-universal/common" "~3.4.2"
"@slickgrid-universal/utils" "~3.4.0"
text-encoding-utf-8 "^1.0.2"
@@ -10494,10 +10494,10 @@ slash@^4.0.0:
resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7"
integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==
-slickgrid@^4.1.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/slickgrid/-/slickgrid-4.1.2.tgz#f8e60a4b9102118b2dd1ccc68686f0b5fc1ca104"
- integrity sha512-yXS/4k6SVpI4FacpzbAQ7GXFQGSKT3w8kn64y9YQ2by2D9kOqDigXub+LNurunPkh3BEOYxBx0kkPjy/I8BYPg==
+slickgrid@^4.1.3:
+ version "4.1.3"
+ resolved "https://registry.yarnpkg.com/slickgrid/-/slickgrid-4.1.3.tgz#fd49dbbceabf43628c7bea9865af4b2fdad2379e"
+ integrity sha512-mAJFYk4XNfGnNP3TQ/Rq/rEWRPaXOF7nqpQkgcTgOcz9RXXJ0jxgjx4L+iwLXJoZZnI9MxVZzdtp7NBHOu33gQ==
dependencies:
sortablejs "^1.15.0"