From 8687cacf02fa39b491964b545ba582c46e9c176f Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Thu, 2 May 2024 22:08:25 -0400 Subject: [PATCH 1/2] feat(common)!: migrate from Flatpickr to Vanilla-Calendar --- eslint.config.mjs | 2 -- package.json | 3 +- src/examples/slickgrid/Example23.tsx | 6 ---- src/examples/slickgrid/Example3.tsx | 6 ++-- src/examples/slickgrid/Example30.tsx | 19 +++++++------ src/examples/slickgrid/Example32.tsx | 3 +- src/examples/slickgrid/Example33.tsx | 3 +- src/examples/slickgrid/Example4.tsx | 6 ++-- src/index.tsx | 5 ---- test/cypress/e2e/example03.cy.ts | 23 +++++++++------- test/cypress/e2e/example06.cy.ts | 12 ++------ test/cypress/e2e/example23.cy.ts | 15 ++++++---- test/cypress/e2e/example30.cy.ts | 41 ++++++++++++++-------------- test/cypress/e2e/example33.cy.ts | 2 +- 14 files changed, 68 insertions(+), 78 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 9b661913..88b053dd 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -39,8 +39,6 @@ export default tsEslint.config( languageOptions: { globals: { // ...globals, - flatpickr: true, - Slick: true, Sortable: true, }, parser: tsParser, diff --git a/package.json b/package.json index 107515f2..c3c31884 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,6 @@ "@slickgrid-universal/rxjs-observable": "~4.7.0", "@slickgrid-universal/text-export": "~4.7.0", "@types/dompurify": "^3.0.5", - "@types/flatpickr": "^3.1.2", "@types/fnando__sparkline": "^0.3.7", "@types/i18next-xhr-backend": "^1.4.2", "@types/jest": "^29.5.12", @@ -181,4 +180,4 @@ "resolutions": { "caniuse-lite": "1.0.30001614" } -} +} \ No newline at end of file diff --git a/src/examples/slickgrid/Example23.tsx b/src/examples/slickgrid/Example23.tsx index bdcc1046..5012a24e 100644 --- a/src/examples/slickgrid/Example23.tsx +++ b/src/examples/slickgrid/Example23.tsx @@ -63,12 +63,6 @@ class Example23 extends React.Component {
  • For a numeric range defined in an input filter (must be of type text), you can use 2 dots (..) to represent a range
  • example: typing "10..90" will filter values between 10 and 90 (but excluding the number 10 and 90)
  • - -
  • Date Range with Flatpickr Date Picker, they will also use the locale, choose a start date then drag or click on the end date
  • `; diff --git a/src/examples/slickgrid/Example3.tsx b/src/examples/slickgrid/Example3.tsx index 988aa53d..0668afe8 100644 --- a/src/examples/slickgrid/Example3.tsx +++ b/src/examples/slickgrid/Example3.tsx @@ -11,7 +11,6 @@ import { EditorValidator, FieldType, Filters, - FlatpickrOption, Formatters, OnEventArgs, OperatorType, @@ -19,6 +18,7 @@ import { SlickGlobalEditorLock, SlickgridReact, GridOption, + type VanillaCalendarOption, } from '../../slickgrid-react'; import { CustomInputEditor } from './custom-inputEditor'; import { CustomInputFilter } from './custom-inputFilter'; @@ -302,9 +302,9 @@ export default class Example3 extends React.Component { saveOutputType: FieldType.dateUtc, // save output date format editor: { model: Editors.date, - // override any of the Flatpickr options through 'filterOptions' + // override any of the calendar options through 'filterOptions' // please note that there's no TSlint on this property since it's generic for any filter, so make sure you entered the correct filter option(s) - editorOptions: { minDate: 'today' } as FlatpickrOption, + editorOptions: { range: { min: 'today' } } as VanillaCalendarOption, }, }, { diff --git a/src/examples/slickgrid/Example30.tsx b/src/examples/slickgrid/Example30.tsx index 34b45609..136814f3 100644 --- a/src/examples/slickgrid/Example30.tsx +++ b/src/examples/slickgrid/Example30.tsx @@ -11,7 +11,6 @@ import { Editors, FieldType, Filters, - FlatpickrOption, formatNumber, Formatter, Formatters, @@ -24,6 +23,7 @@ import { SlickGrid, SlickgridReact, SortComparers, + type VanillaCalendarOption, } from '../../slickgrid-react'; import './example30.scss'; // provide custom CSS/SASS styling import BaseSlickGridState from './state-slick-grid-base'; @@ -256,16 +256,17 @@ export default class Example30 extends React.Component { editor: { model: Editors.date, editorOptions: { - minDate: 'today', + range: { min: '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, + // we could do it by assigning settings.seleted.dates + // NOTE: vanilla-calendar doesn't automatically focus the picker to the year/month and you need to do it yourself + // selected: { + // dates: ['2021-06-04'], + // month: 6 - 1, // Note: JS Date month (only) is zero index based, so June is 6-1 => 5 + // year: 2021 + // } + } as VanillaCalendarOption, massUpdate: true, validator: (value, args) => { const dataContext = args?.item; diff --git a/src/examples/slickgrid/Example32.tsx b/src/examples/slickgrid/Example32.tsx index 7f343e3d..6f061fe1 100644 --- a/src/examples/slickgrid/Example32.tsx +++ b/src/examples/slickgrid/Example32.tsx @@ -15,6 +15,7 @@ import { SlickgridReact, SlickGrid, SortComparers, + type VanillaCalendarOption, } from '../../slickgrid-react'; import { ExcelExportService } from '@slickgrid-universal/excel-export'; import React from 'react'; @@ -211,7 +212,7 @@ export default class Example32 extends React.Component { exportCustomFormatter: Formatters.dateUs, editor: { model: Editors.date, - editorOptions: { minDate: 'today' }, + editorOptions: { range: { min: 'today' } } as VanillaCalendarOption, validator: (value, args) => { const dataContext = args && args.item; if (dataContext && (dataContext.completed && !value)) { diff --git a/src/examples/slickgrid/Example33.tsx b/src/examples/slickgrid/Example33.tsx index 5a879fb6..c3e2ad90 100644 --- a/src/examples/slickgrid/Example33.tsx +++ b/src/examples/slickgrid/Example33.tsx @@ -12,6 +12,7 @@ import { SlickgridReactInstance, SlickgridReact, SlickGrid, + type VanillaCalendarOption, } from '../../slickgrid-react'; import { ExcelExportService } from '@slickgrid-universal/excel-export'; import { SlickCustomTooltip } from '@slickgrid-universal/custom-tooltip-plugin'; @@ -195,7 +196,7 @@ export default class Example32 extends React.Component { }, { id: 'finish', name: 'Finish', field: 'finish', sortable: true, - editor: { model: Editors.date, editorOptions: { minDate: 'today' }, }, + editor: { model: Editors.date, editorOptions: { range: { min: 'today' } } as VanillaCalendarOption, }, // formatter: Formatters.dateIso, type: FieldType.date, outputType: FieldType.dateIso, formatter: Formatters.dateIso, diff --git a/src/examples/slickgrid/Example4.tsx b/src/examples/slickgrid/Example4.tsx index 24617fe0..6fe50e86 100644 --- a/src/examples/slickgrid/Example4.tsx +++ b/src/examples/slickgrid/Example4.tsx @@ -7,7 +7,6 @@ import { Column, FieldType, Filters, - FlatpickrOption, Formatters, GridOption, GridStateChange, @@ -16,6 +15,7 @@ import { OperatorType, SlickgridReactInstance, SlickgridReact, + type VanillaCalendarOption, } from '../../slickgrid-react'; import BaseSlickGridState from './state-slick-grid-base'; @@ -176,9 +176,9 @@ export default class Example4 extends React.Component { filterable: true, filter: { model: Filters.compoundDate, - // override any of the Flatpickr options through "filterOptions" + // override any of the calendar options through "filterOptions" // please note that there's no TSlint on this property since it's generic for any filter, so make sure you entered the correct filter option(s) - filterOptions: { minDate: 'today' } as FlatpickrOption + filterOptions: { range: { min: 'today' } } as VanillaCalendarOption } }, { diff --git a/src/index.tsx b/src/index.tsx index ed787f9b..e038e8ed 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -2,7 +2,6 @@ import 'font-awesome/css/font-awesome.css'; import 'bootstrap/dist/css/bootstrap.min.css'; import 'bootstrap'; -import 'flatpickr/dist/flatpickr.min.css'; import i18n from 'i18next'; import Backend from 'i18next-http-backend'; import React from 'react'; @@ -46,7 +45,3 @@ root.render( ); - -// load necessary Flatpickr Locale(s), but make sure it's imported AFTER loading Slickgrid-React plugin -// delaying the import will work for our use case -setTimeout(() => import('flatpickr/dist/l10n/fr')); diff --git a/test/cypress/e2e/example03.cy.ts b/test/cypress/e2e/example03.cy.ts index ae2d3170..89960652 100644 --- a/test/cypress/e2e/example03.cy.ts +++ b/test/cypress/e2e/example03.cy.ts @@ -65,10 +65,11 @@ describe('Example 3 - Grid with Editors', () => { // change Finish date cy.get(`[style="top: ${GRID_ROW_HEIGHT * 2}px;"] > .slick-cell:nth(6)`).click(); - cy.get('.flatpickr-monthDropdown-months:visible') - .select('January', { force: true }); - cy.get('.numInput.cur-year:visible').type('2009'); - cy.get('.flatpickr-day:visible:nth(25)').click('bottom', { force: true }); + cy.get('.vanilla-calendar-month:visible').click(); + cy.get('.vanilla-calendar-months__month').contains('Jan').click(); + cy.get('.vanilla-calendar-year').click(); + cy.get('.vanilla-calendar-years__year').contains('2009').click(); + cy.get('.vanilla-calendar-day__btn').contains('22').click(); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 2}px;"] > .slick-cell:nth(6)`).should('contain', '2009-01-22'); // change City of Origin @@ -136,16 +137,18 @@ describe('Example 3 - Grid with Editors', () => { // change Finish date cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(6)`).click(); - cy.get('.flatpickr-monthDropdown-months:visible') - .select('January', { force: true }); - cy.get('.numInput.cur-year:visible').type('2009'); - cy.get('.flatpickr-day:visible:nth(25)').click('bottom', { force: true }); + cy.get('.vanilla-calendar-month:visible').click(); + cy.get('.vanilla-calendar-months__month').contains('Jan').click(); + cy.get('.vanilla-calendar-year').click(); + cy.get('.vanilla-calendar-years__year').contains('2009').click(); + cy.get('.vanilla-calendar-day__btn').contains('22').click(); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(6)`).should('contain', '2009-01-22'); // change Effort Driven cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(11)`).click(); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(11) > input.editor-checkbox.editor-effort-driven`).check().blur(); - cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(11)`).find('.fa-check.checkmark-icon'); + cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(10)`).click(); // the blur seems to not always work, so just click on another cell + cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(11)`).find('.mdi-check.checkmark-icon'); cy.get('.slick-viewport.slick-viewport-top.slick-viewport-left') .scrollTo('top'); @@ -210,7 +213,7 @@ describe('Example 3 - Grid with Editors', () => { // change Finish date cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(6)`).click(); - cy.get('.flatpickr-day:visible:nth(24)').click('bottom', { force: true }); + cy.get('.vanilla-calendar-day__btn').contains('21').click(); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(6)`).should('contain', '2009-01-21'); // // change Effort Driven diff --git a/test/cypress/e2e/example06.cy.ts b/test/cypress/e2e/example06.cy.ts index 525fc161..d4374743 100644 --- a/test/cypress/e2e/example06.cy.ts +++ b/test/cypress/e2e/example06.cy.ts @@ -22,9 +22,6 @@ describe('Example 6 - GraphQL Grid', () => { it('should have English Text inside some of the Filters', () => { cy.get('.search-filter.filter-gender .ms-choice > span') .contains('Male'); - - cy.get('.flatpickr-input') - .should('contain.value', 'to'); // date range will contains (y to z) or in French (y au z) }); it('should have GraphQL query with defined Grid Presets', () => { @@ -45,7 +42,7 @@ describe('Example 6 - GraphQL Grid', () => { cy.get('.search-filter.filter-finish') .find('input') .invoke('val') - .then(text => expect(text).to.eq(`${presetLowestDay} to ${presetHighestDay}`)); + .then(text => expect(text).to.eq(`${presetLowestDay} — ${presetHighestDay}`)); cy.get('[data-test=alert-graphql-query]').should('exist'); cy.get('[data-test=alert-graphql-query]').should('contain', 'GraphQL Query'); @@ -327,7 +324,7 @@ describe('Example 6 - GraphQL Grid', () => { cy.get('.search-filter.filter-finish') .find('input') .invoke('val') - .then(text => expect(text).to.eq(`${presetLowestDay} to ${presetHighestDay}`)); + .then(text => expect(text).to.eq(`${presetLowestDay} — ${presetHighestDay}`)); // wait for the query to finish cy.get('[data-test=status]').should('contain', 'finished'); @@ -647,7 +644,7 @@ describe('Example 6 - GraphQL Grid', () => { cy.get('.search-filter.filter-finish') .find('input') .invoke('val') - .then(text => expect(text).to.eq(`${presetLowestDay} au ${presetHighestDay}`)); + .then(text => expect(text).to.eq(`${presetLowestDay} — ${presetHighestDay}`)); // wait for the query to finish cy.get('[data-test=status]').should('contain', 'finished'); @@ -673,9 +670,6 @@ describe('Example 6 - GraphQL Grid', () => { cy.get('.search-filter.filter-gender .ms-choice > span') .contains('Masculin'); - - 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', () => { diff --git a/test/cypress/e2e/example23.cy.ts b/test/cypress/e2e/example23.cy.ts index dd8306fe..b3a490fc 100644 --- a/test/cypress/e2e/example23.cy.ts +++ b/test/cypress/e2e/example23.cy.ts @@ -117,14 +117,17 @@ describe('Example 23 - Range Filters', () => { }); it('should change the "Finish" date in the picker and expect all rows to be within new dates range', () => { - cy.get('.flatpickr.search-filter.filter-finish') + cy.get('.date-picker.search-filter.filter-finish') .click(); - cy.get('.flatpickr-day.inRange') + cy.get('.vanilla-calendar-day_selected-first') + .should('exist'); + + cy.get('.vanilla-calendar-day_selected-intermediate') .should('have.length.gte', 2); - // cy.get('.flatpickr-day.selected.endRange') - // .should('contain', moment().add(25, 'days').day() - 1); + cy.get('.vanilla-calendar-day_selected-last') + .should('exist'); }); it('should change the "Duration" input filter and expect all rows to be within new range', () => { @@ -206,7 +209,7 @@ describe('Example 23 - Range Filters', () => { cy.get('.search-filter.filter-finish') .find('input') .invoke('val') - .then(text => expect(text).to.eq(`${dynamicLowestDay} to ${dynamicHighestDay}`)); + .then(text => expect(text).to.eq(`${dynamicLowestDay} — ${dynamicHighestDay}`)); cy.get('#grid23') .find('.slick-row') @@ -227,7 +230,7 @@ describe('Example 23 - Range Filters', () => { cy.get('.search-filter.filter-finish') .find('input') .invoke('val') - .then(text => expect(text).to.eq(`${currentYear}-01-01 to ${currentYear}-12-31`)); + .then(text => expect(text).to.eq(`${currentYear}-01-01 — ${currentYear}-12-31`)); cy.get('.ms-parent.search-filter.filter-completed > button > span') .should('contain', 'True'); diff --git a/test/cypress/e2e/example30.cy.ts b/test/cypress/e2e/example30.cy.ts index 42700d3c..b719adf2 100644 --- a/test/cypress/e2e/example30.cy.ts +++ b/test/cypress/e2e/example30.cy.ts @@ -107,10 +107,10 @@ describe('Example 30 Composite Editor Modal', () => { it('should not be able to change the "Finish" dates on first 2 rows', () => { cy.get(`[style="top: ${GRID_ROW_HEIGHT * 1}px;"] > .slick-cell:nth(8)`).should('contain', '').click({ force: true }); // this date should also always be initially empty - cy.get(`.flatpickr-day.today:visible`).should('not.exist'); + cy.get(`.vanilla-calendar-day__btn_today:visible`).should('not.exist'); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(8)`).should('contain', '').click({ force: true }); // this date should also always be initially empty - cy.get(`.flatpickr-day.today:visible`).should('not.exist'); + cy.get(`.vanilla-calendar-day__btn_today:visible`).should('not.exist'); }); it('should be able to change "Completed" values of row indexes 2-4', () => { @@ -139,17 +139,17 @@ describe('Example 30 Composite Editor Modal', () => { // change Finish date to today's date cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(8)`).should('contain', '').click(); // this date should also always be initially empty - cy.get(`.flatpickr-day.today:visible`).click('bottom', { force: true }); + cy.get(`.vanilla-calendar-day__btn_today:visible`).click('bottom', { force: true }); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 0}px;"] > .slick-cell:nth(8)`).should('contain', `${zeroPadding(currentMonth)}/${zeroPadding(currentDate)}/${currentYear}`) .should('have.css', 'background-color').and('eq', UNSAVED_RGB_COLOR); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 1}px;"] > .slick-cell:nth(8)`).click(); - cy.get(`.flatpickr-day.today:visible`).click('bottom', { force: true }); + cy.get(`.vanilla-calendar-day__btn_today:visible`).click('bottom', { force: true }); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 1}px;"] > .slick-cell:nth(8)`).should('contain', `${zeroPadding(currentMonth)}/${zeroPadding(currentDate)}/${currentYear}`) .should('have.css', 'background-color').and('eq', UNSAVED_RGB_COLOR); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 2}px;"] > .slick-cell:nth(8)`).click(); - cy.get(`.flatpickr-day.today:visible`).click('bottom', { force: true }); + cy.get(`.vanilla-calendar-day__btn_today:visible`).click('bottom', { force: true }); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 2}px;"] > .slick-cell:nth(8)`).should('contain', `${zeroPadding(currentMonth)}/${zeroPadding(currentDate)}/${currentYear}`) .should('have.css', 'background-color').and('eq', UNSAVED_RGB_COLOR); @@ -160,7 +160,7 @@ describe('Example 30 Composite Editor Modal', () => { it('should undo last edit and expect the date editor to be opened as well when clicking the associated last undo with editor button', () => { cy.get('[data-test=undo-open-editor-btn]').click(); - cy.get('.flatpickr-calendar.open') + cy.get('.vanilla-calendar') .should('exist'); cy.get('.unsaved-editable-field') @@ -174,7 +174,7 @@ describe('Example 30 Composite Editor Modal', () => { it('should undo last edit and expect the date editor to NOT be opened when clicking undo last edit button', () => { cy.get('[data-test=undo-last-edit-btn]').click(); - cy.get('.flatpickr-calendar.open') + cy.get('.vanilla-calendar') .should('not.exist'); cy.get('.unsaved-editable-field') @@ -220,8 +220,9 @@ describe('Example 30 Composite Editor Modal', () => { cy.get('.editor-checkbox').should('be.not.checked'); cy.get('.item-details-container.editor-product .autocomplete').should('be.empty'); cy.get('.item-details-container.editor-duration .editor-text').should('be.empty'); - cy.get('.item-details-container.editor-start .flatpickr-alt-input').should('be.empty'); - cy.get('.item-details-container.editor-finish .flatpickr-alt-input').should('be.empty').should('be.disabled'); + cy.get('.item-details-container.editor-start input.date-picker').invoke('val').should('be.empty'); + cy.get('.item-details-container.editor-finish input.date-picker').invoke('val').should('be.empty'); + cy.get('.item-details-container.editor-finish input.date-picker').should('be.disabled'); cy.get('.item-details-container.editor-origin .autocomplete').should('be.empty'); }); @@ -259,8 +260,8 @@ describe('Example 30 Composite Editor Modal', () => { cy.get('.item-details-container.editor-duration .modified').should('have.length', 1); cy.get('.item-details-container.editor-finish > .item-details-validation').contains('* You must provide a "Finish" date when "Completed" is checked.'); - cy.get('.item-details-container.editor-finish .flatpickr-alt-input').click({ force: true }); - cy.get(`.flatpickr-day.today:visible`).click('bottom', { force: true }); + cy.get('.item-details-container.editor-finish input.date-picker').click(); + cy.get(`.vanilla-calendar-day__btn_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('c'); @@ -334,8 +335,8 @@ describe('Example 30 Composite Editor Modal', () => { cy.get('.item-details-container.editor-complexity .modified').should('have.length', 1); cy.get('.item-details-container.editor-finish > .item-details-validation').contains('* You must provide a "Finish" date when "Completed" is checked.'); - cy.get('.item-details-container.editor-finish .flatpickr').click().click(); - cy.get(`.flatpickr-day.today:visible`).click(); + cy.get('.item-details-container.editor-finish .date-picker').click().click(); + cy.get(`.vanilla-calendar-day__btn_today:visible`).click(); cy.get('.item-details-container.editor-finish .modified').should('have.length', 1); cy.get('.item-details-container.editor-origin .autocomplete').type('bel'); @@ -394,8 +395,8 @@ describe('Example 30 Composite Editor Modal', () => { cy.get('.item-details-container.editor-complexity .modified').should('have.length', 1); cy.get('.item-details-container.editor-finish > .item-details-validation').contains('* You must provide a "Finish" date when "Completed" is checked.'); - cy.get('.item-details-container.editor-finish .flatpickr').click().click(); - cy.get(`.flatpickr-day.today:visible`).click(); + cy.get('.item-details-container.editor-finish .date-picker').click().click(); + cy.get(`.vanilla-calendar-day__btn_today:visible`).click(); cy.get('.item-details-container.editor-finish .modified').should('have.length', 1); cy.get('.item-details-container.editor-origin .autocomplete').type('bel'); @@ -406,7 +407,7 @@ describe('Example 30 Composite Editor Modal', () => { it('should be able to clear the "Country of Origin" autocomplete field in the modal form via the Clear button from the editor', () => { cy.get('.item-details-container.editor-origin .modified').should('have.length', 1); - cy.get('.item-details-container.editor-origin .autocomplete-container button.icon-clear').click(); + cy.get('.item-details-container.editor-origin .autocomplete-container button.btn-clear').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('')); }); @@ -446,8 +447,8 @@ describe('Example 30 Composite Editor Modal', () => { cy.get('.item-details-container.editor-completed .modified').should('have.length', 1); cy.get('.item-details-container.editor-finish > .item-details-validation').contains('* You must provide a "Finish" date when "Completed" is checked.'); - cy.get('.item-details-container.editor-finish .flatpickr-alt-input').click({ force: true }); - cy.get(`.flatpickr-day.today:visible`).click('bottom', { force: true }); + cy.get('.item-details-container.editor-finish input.date-picker').click({ force: true }); + cy.get(`.vanilla-calendar-day__btn_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('ze'); @@ -516,7 +517,7 @@ describe('Example 30 Composite Editor Modal', () => { cy.get('.item-details-container.editor-completed input.editor-checkbox:checked').should('have.length', 1); cy.get('.item-details-container.editor-completed .modified').should('have.length', 1); - cy.get('.item-details-container.editor-finish .flatpickr-alt-input').should('contain.value', `${zeroPadding(currentMonth)}/${zeroPadding(currentDate)}/${currentYear}`); + cy.get('.item-details-container.editor-finish input.date-picker').should('contain.value', `${zeroPadding(currentMonth)}/${zeroPadding(currentDate)}/${currentYear}`); cy.get('.item-details-container.editor-finish .modified').should('have.length', 1); cy.get('.btn-cancel').click(); @@ -608,7 +609,7 @@ describe('Example 30 Composite Editor Modal', () => { // clear Country cy.get(`[style="top: ${GRID_ROW_HEIGHT * 1}px;"] > .slick-cell:nth(10)`).click(); - cy.get('.autocomplete-container button.icon-clear').click(); + cy.get('.autocomplete-container button.btn-clear').click(); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 1}px;"] > .slick-cell:nth(10)`).should('contain', ''); }); diff --git a/test/cypress/e2e/example33.cy.ts b/test/cypress/e2e/example33.cy.ts index b22a6adb..214634a9 100644 --- a/test/cypress/e2e/example33.cy.ts +++ b/test/cypress/e2e/example33.cy.ts @@ -68,10 +68,10 @@ describe('Example 33 - Regular & Custom Tooltips', () => { }); it('should mouse over Task 6 cell on "Start" column and expect a delayed tooltip opening via async process', () => { + cy.get('.slick-custom-tooltip').should('not.exist'); cy.get(`[style="top: ${GRID_ROW_HEIGHT * 2}px;"] > .slick-cell:nth(7)`).as('start6-cell'); cy.get('@start6-cell').contains(/\d{4}-\d{2}-\d{2}$/); // use regexp to make sure it's a number cy.get('@start6-cell').trigger('mouseover'); - cy.get('.slick-custom-tooltip').should('not.exist'); cy.wait(10); cy.get('.slick-custom-tooltip').should('be.visible'); From 1e86269e166e98c4d8103a84ad6ab9117c83057e Mon Sep 17 00:00:00 2001 From: ghiscoding Date: Mon, 6 May 2024 21:59:05 -0400 Subject: [PATCH 2/2] chore: upgrade Slickgrid-Universal to v5 --- package.json | 24 ++-- yarn.lock | 343 ++++++++++++++++----------------------------------- 2 files changed, 115 insertions(+), 252 deletions(-) diff --git a/package.json b/package.json index c3c31884..551cd7dd 100644 --- a/package.json +++ b/package.json @@ -89,11 +89,11 @@ "/src/slickgrid-react" ], "dependencies": { - "@slickgrid-universal/common": "~4.7.0", - "@slickgrid-universal/custom-footer-component": "~4.7.0", - "@slickgrid-universal/empty-warning-component": "~4.7.0", - "@slickgrid-universal/event-pub-sub": "~4.7.0", - "@slickgrid-universal/pagination-component": "~4.7.0", + "@slickgrid-universal/common": "~5.0.0-beta.1", + "@slickgrid-universal/custom-footer-component": "~5.0.0-beta.1", + "@slickgrid-universal/empty-warning-component": "~5.0.0-beta.1", + "@slickgrid-universal/event-pub-sub": "~5.0.0-beta.1", + "@slickgrid-universal/pagination-component": "~5.0.0-beta.1", "dequal": "^2.0.3", "font-awesome": "^4.7.0", "i18next": "^23.11.2", @@ -107,13 +107,13 @@ "@fnando/sparkline": "^0.3.10", "@popperjs/core": "^2.11.8", "@release-it/conventional-changelog": "^8.0.1", - "@slickgrid-universal/composite-editor-component": "~4.7.0", - "@slickgrid-universal/custom-tooltip-plugin": "~4.7.0", - "@slickgrid-universal/excel-export": "~4.7.0", - "@slickgrid-universal/graphql": "~4.7.0", - "@slickgrid-universal/odata": "~4.7.0", - "@slickgrid-universal/rxjs-observable": "~4.7.0", - "@slickgrid-universal/text-export": "~4.7.0", + "@slickgrid-universal/composite-editor-component": "~5.0.0-beta.1", + "@slickgrid-universal/custom-tooltip-plugin": "~5.0.0-beta.1", + "@slickgrid-universal/excel-export": "~5.0.0-beta.1", + "@slickgrid-universal/graphql": "~5.0.0-beta.1", + "@slickgrid-universal/odata": "~5.0.0-beta.1", + "@slickgrid-universal/rxjs-observable": "~5.0.0-beta.1", + "@slickgrid-universal/text-export": "~5.0.0-beta.1", "@types/dompurify": "^3.0.5", "@types/fnando__sparkline": "^0.3.7", "@types/i18next-xhr-backend": "^1.4.2", diff --git a/yarn.lock b/yarn.lock index fbfe81a8..adf906f0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -513,6 +513,11 @@ resolved "https://registry.yarnpkg.com/@fnando/sparkline/-/sparkline-0.3.10.tgz#0cb6549a232af0f19f75b33d38fddd4f5ed9f086" integrity sha512-Rwz2swatdSU5F4sCOvYG8EOWdjtLgq5d8nmnqlZ3PXdWJI9Zq9BRUvJ/9ygjajJG8qOyNpMFX3GEVFjZIuB1Jg== +"@formkit/tempo@^0.1.1": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@formkit/tempo/-/tempo-0.1.1.tgz#7371bb1aa0e18bf2edc94b271e998da0de80ea30" + integrity sha512-nepRwKnCIjukLkblqh339sSXYI6P3cqktF/T7ECj3vURW+Pd+YzTv/I/lwjRqPGmlQJG93LORodIAkvgoExIAg== + "@humanwhocodes/config-array@^0.13.0": version "0.13.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" @@ -1027,127 +1032,124 @@ dependencies: "@sinonjs/commons" "^3.0.0" -"@slickgrid-universal/binding@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-4.7.0.tgz#724805f51d9005aa6675c5b99bc260eac4768855" - integrity sha512-d2M8DHOzB8NzQr2d7ehiWYUF/BDmOXKzi7wa7MBwFaGD/nXz9Z59rISpQOL/12is0ahu1j3v1KFs/Gx4ktuI2w== +"@slickgrid-universal/binding@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/binding/-/binding-5.0.0-beta.1.tgz#cea5716333920c4e274f42858ad9a4913e01629e" + integrity sha512-SyrvOzi4tMHFkRi9MOXwhyAtZ9wy5kZmfWZ1tmgRwBZxX5sT78eu5PaTeketny5VQczMfSz0AGN7Yg3h0NqvEA== -"@slickgrid-universal/common@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-4.7.0.tgz#5da3a3c9412eac10c06aa9144782db26a3188a74" - integrity sha512-YB1FhMUWJtK07FIx1gWw+JIYG58BXtWOdaKFzFP6AAy7Il/AeHFM6cpxSqb8rF8IUEraAre4bYz0WbebYjtkXQ== +"@slickgrid-universal/common@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/common/-/common-5.0.0-beta.1.tgz#c7d7333ffeb361f6e04071ec353a798b08d3cb0d" + integrity sha512-BEpqSDRUQakmUh6sR77rPiAa4juQ5lYY+Oi7oRSOf9kMSEIdLMPQ63CuNGiXl/26rvym2YTB09i84KxmgcgSfw== dependencies: - "@slickgrid-universal/binding" "~4.7.0" - "@slickgrid-universal/event-pub-sub" "~4.7.0" - "@slickgrid-universal/utils" "~4.7.0" + "@formkit/tempo" "^0.1.1" + "@slickgrid-universal/binding" "~5.0.0-beta.1" + "@slickgrid-universal/event-pub-sub" "~5.0.0-beta.1" + "@slickgrid-universal/utils" "~5.0.0-beta.1" "@types/dompurify" "^3.0.5" "@types/sortablejs" "^1.15.8" autocompleter "^9.2.1" dequal "^2.0.3" excel-builder-vanilla "3.0.1" - flatpickr "^4.6.13" - isomorphic-dompurify "^2.7.0" - moment-mini "^2.29.4" - multiple-select-vanilla "^3.1.0" + multiple-select-vanilla "^3.1.3" sortablejs "^1.15.2" un-flatten-tree "^2.0.12" + vanilla-calendar-picker "^2.11.4" -"@slickgrid-universal/composite-editor-component@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-4.7.0.tgz#bc15031280fdb8c385dfe9cb53d5479d35ce8246" - integrity sha512-knqWkb05oAW6b8kZrRaLle3Cu9MAsCZm3orsHuuNtrrZ+Ti69VodlwzPw+kIbSsNmfG+YqSnZMJVuzWt9fA07g== +"@slickgrid-universal/composite-editor-component@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/composite-editor-component/-/composite-editor-component-5.0.0-beta.1.tgz#f28e4b3e6e543ed9b557fdb99ed4f40652be7824" + integrity sha512-L0AO0I4V/2RCLq8r+Bqh9RDUeO2BDyXnJYouXwruaL+2To/AFvm8oBsPpvd4zl4xrIZeUgD6crjYio/el3Q+fQ== dependencies: - "@slickgrid-universal/binding" "~4.7.0" - "@slickgrid-universal/common" "~4.7.0" - "@slickgrid-universal/utils" "~4.7.0" + "@slickgrid-universal/binding" "~5.0.0-beta.1" + "@slickgrid-universal/common" "~5.0.0-beta.1" + "@slickgrid-universal/utils" "~5.0.0-beta.1" -"@slickgrid-universal/custom-footer-component@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-4.7.0.tgz#2e115dce16ad37eb657c1c46362adf48bb934252" - integrity sha512-/af+tQb+gpkYRenDRequkOEL6uY7swoPtjWLc1WnMUzVvNpr9iOt1L21pnqJXKYZdrQwDkV82h2LOOyKI3NLRg== +"@slickgrid-universal/custom-footer-component@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-footer-component/-/custom-footer-component-5.0.0-beta.1.tgz#faa57add73267b6a0d532c5e57acfc12a8591f80" + integrity sha512-dHt3+ak4wheQsLj9u95eymycC2DpjriGQS9CvZ/8DiZ57B17KKZEg/JmluA+0r49RWKCbtmOgPuEuzM/QATJjQ== dependencies: - "@slickgrid-universal/binding" "~4.7.0" - "@slickgrid-universal/common" "~4.7.0" - moment-mini "^2.29.4" + "@formkit/tempo" "^0.1.1" + "@slickgrid-universal/binding" "~5.0.0-beta.1" + "@slickgrid-universal/common" "~5.0.0-beta.1" -"@slickgrid-universal/custom-tooltip-plugin@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-4.7.0.tgz#5eb39c802348a124694cd4d22afe0308acee9984" - integrity sha512-aIGrMd+mavwzd+0LXbg/PNUtFmHnzhFIWup1eV7eLkFNrpxaY2/Me/fsO3CAbda9HKNvJP/b+KErekoykJlwsA== +"@slickgrid-universal/custom-tooltip-plugin@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/custom-tooltip-plugin/-/custom-tooltip-plugin-5.0.0-beta.1.tgz#66ed85e789ebd1b0c246a9f4a58c6d622d21cd85" + integrity sha512-zKfp6JUttyH9FeKVESzpyuSkWODhD1UqzbU9IkG+pqZzTM/fCyj+1VxNWs7p7XJcAtrp6eQz0aVnsWDAHO8lZQ== dependencies: - "@slickgrid-universal/common" "~4.7.0" - "@slickgrid-universal/utils" "~4.7.0" - isomorphic-dompurify "^2.7.0" + "@slickgrid-universal/common" "~5.0.0-beta.1" + "@slickgrid-universal/utils" "~5.0.0-beta.1" -"@slickgrid-universal/empty-warning-component@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-4.7.0.tgz#060c3a57af9116f30d4172bfc09a8780adb7216a" - integrity sha512-C4KbYIgRtKqGAq1hNSqXJBVMBn2MMRbvtoLdZQ1lr2bOov98sxHfQBgExPt9/u6l34b/oU0wVy7IUrXAyhUurw== +"@slickgrid-universal/empty-warning-component@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/empty-warning-component/-/empty-warning-component-5.0.0-beta.1.tgz#84daf9177bf90ba9fc5d13ea5de80eb039380f1f" + integrity sha512-NUAkKNth6TxIY9wT00msxd8rCGPy1Zclrpb/eChyjn1xCKLlZhB5RkmDzFrvBXJ/3v4PnEfH3bxJS2Wh1isn4Q== dependencies: - "@slickgrid-universal/common" "~4.7.0" + "@slickgrid-universal/common" "~5.0.0-beta.1" -"@slickgrid-universal/event-pub-sub@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-4.7.0.tgz#b01ec3f58eaac8437f68518ad8aaa69263d499d9" - integrity sha512-6o7+6lJykAKG9rEiixWxpa+SvZz/sjr1owDcaIAM3Qa/daYrOuFJ+reC9T8MK/RGx7jLerVaJdHeQsfStI5V9w== +"@slickgrid-universal/event-pub-sub@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/event-pub-sub/-/event-pub-sub-5.0.0-beta.1.tgz#1fdd1d5019f9ad9d9fc48c6f90eade299a228fdc" + integrity sha512-OB8Z4jFUQ+QCU2qPahzQd51hDsy/fE7laNPbmswzfFA6xg7NdEVknQu3j0S25j0sBkyTPN5xGD/EwjdA6yYZwQ== dependencies: - "@slickgrid-universal/utils" "~4.7.0" + "@slickgrid-universal/utils" "~5.0.0-beta.1" -"@slickgrid-universal/excel-export@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-4.7.0.tgz#293d497843ad0bae9c12ddbeb78edadf6ef2fa5d" - integrity sha512-FeSZihooXGZvZRk6FSjgi5lVPvaG2FsectEYoepvJXLvI98kqvuBdG9dvyuSn8oGvybhENVQpiiGnIq2V6bvEQ== +"@slickgrid-universal/excel-export@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/excel-export/-/excel-export-5.0.0-beta.1.tgz#d6a36c505f113a31f80121a9feedac3af0405f5e" + integrity sha512-J31syjmcUamxEZ4Yae9nEcC7m7z5nG7l7U0D0jrM+KhwnIYKIXg0FWntfX0TK6ye499SgHr7l90iitPeADbNwQ== dependencies: - "@slickgrid-universal/common" "~4.7.0" - "@slickgrid-universal/utils" "~4.7.0" + "@slickgrid-universal/common" "~5.0.0-beta.1" + "@slickgrid-universal/utils" "~5.0.0-beta.1" excel-builder-vanilla "^3.0.1" - moment-mini "^2.29.4" -"@slickgrid-universal/graphql@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-4.7.0.tgz#bf92e08e87489b7af885618180dd35959f7803b4" - integrity sha512-xkdxHjGmVHB5PYC35oiHupTxHB206SlU16UMd7dqAzBoWnN6GIojBb+cp/OV0fIhAY+TwmROAF8y7slsInXhFA== +"@slickgrid-universal/graphql@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/graphql/-/graphql-5.0.0-beta.1.tgz#b31b3be42cd78bea5f5830139307d51fa0eb05b8" + integrity sha512-nPdVjqm3wNuLByENw/gsYw3afA3qqrq/lOIAGHdMXCdI/NBBENTv9WBm4eBJtjCJPjr0Ne7Fvzyfc6b6U5gi4Q== dependencies: - "@slickgrid-universal/common" "~4.7.0" - "@slickgrid-universal/utils" "~4.7.0" + "@slickgrid-universal/common" "~5.0.0-beta.1" + "@slickgrid-universal/utils" "~5.0.0-beta.1" -"@slickgrid-universal/odata@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-4.7.0.tgz#f8d7b8b0c1487ead42ca13b85276ef8263f1fe2b" - integrity sha512-AB+r+q/IHaVLrFznaZry7kJDA2e6mPnTb+q8+8et/YVpaFWgqJWaIOS1PKPEYVUbLILwWHpqPjiHnXLdnls4/A== +"@slickgrid-universal/odata@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/odata/-/odata-5.0.0-beta.1.tgz#77cabae8cc5feab0f2ab0b119ac7469393002389" + integrity sha512-AOWqjMQ2FNlZklrXCmbCnVzRrQoHVb35G9zPwpEK3qIa7mHVA6HrZD/F2qgiZ7uSpcwm9HJ4ARICTTWzQks1bA== dependencies: - "@slickgrid-universal/common" "~4.7.0" - "@slickgrid-universal/utils" "~4.7.0" + "@slickgrid-universal/common" "~5.0.0-beta.1" + "@slickgrid-universal/utils" "~5.0.0-beta.1" -"@slickgrid-universal/pagination-component@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-4.7.0.tgz#9274058f33ddacafc7813fa491e43d1fdf142f7f" - integrity sha512-yA9POJmBMh0eZuf/c8GpgGFNd2s3QLvahSCL+Rdg03oIkGnMWjvTSv6ptbsqLCC10gECPJtKRbwzvVMTjnUkhA== +"@slickgrid-universal/pagination-component@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/pagination-component/-/pagination-component-5.0.0-beta.1.tgz#65fb9548844b0439413a4a891e2e5c8fffd5d12b" + integrity sha512-C9EeDob1UfqqcG2xyXXFDhimltjSyoH6wAsM7tjndXWNrTTDxc7HnrB7XpoXQ2ffW/Kmzj4T/LDIuAwEJd/UVw== dependencies: - "@slickgrid-universal/binding" "~4.7.0" - "@slickgrid-universal/common" "~4.7.0" + "@slickgrid-universal/binding" "~5.0.0-beta.1" + "@slickgrid-universal/common" "~5.0.0-beta.1" -"@slickgrid-universal/rxjs-observable@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-4.7.0.tgz#4d5d813089c82b25f70b8e8763b83b25dc7ff3d3" - integrity sha512-qCUd7dp4xq/znd4hcTfoVEhwYVRoiMHN1o0XHI1jFpEm77mYodpAtKSaa+o/4b/gZH6vNUHIYqIOtHm0BZ3Gdg== +"@slickgrid-universal/rxjs-observable@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/rxjs-observable/-/rxjs-observable-5.0.0-beta.1.tgz#129052a78c816f71c82611960e9ae5926381deae" + integrity sha512-UBBgqI9BLunzwHLDsh/xnFTeHlym8HQbuzecA2M0WiXQPdj2R+r7WPX7yqmRpgoW9UwihpqjqKW8SVmunVU5HA== dependencies: - "@slickgrid-universal/common" "~4.7.0" + "@slickgrid-universal/common" "~5.0.0-beta.1" rxjs "^7.8.1" -"@slickgrid-universal/text-export@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-4.7.0.tgz#133bf7daf328d1dce85eeb6847d61313f710d443" - integrity sha512-3b+PPl50O+2zaOq8GutnOr2K2NJuIW02At/GKbX6hypFYO8mAPd7yIcfw0uGM6BDYk1MBPvmh6qaPWSLzN/M4w== +"@slickgrid-universal/text-export@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/text-export/-/text-export-5.0.0-beta.1.tgz#c6f458537be56b2e263edd8386fc31bee4a1b769" + integrity sha512-z4E3ocRAe8+PxBu2e1Pg+SQLhNuAWuLgFlJ93D9LxOGgzoSEE36jX+tTlUv+iWnpY0L+U5Uzbbuhzmr8n8KKeQ== dependencies: - "@slickgrid-universal/common" "~4.7.0" - "@slickgrid-universal/utils" "~4.7.0" + "@slickgrid-universal/common" "~5.0.0-beta.1" + "@slickgrid-universal/utils" "~5.0.0-beta.1" text-encoding-utf-8 "^1.0.2" -"@slickgrid-universal/utils@~4.7.0": - version "4.7.0" - resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-4.7.0.tgz#054bf61a48c13008c61dffa23e0a9fd2f0363bc8" - integrity sha512-2KBYuA3yI82HXIELbkrxW6Zts0roypqDiRFbiARN2ldhhjT6roWo8d+hI6c6WKauffeQ0aZCCYDkI7SWVai7SQ== +"@slickgrid-universal/utils@~5.0.0-beta.1": + version "5.0.0-beta.1" + resolved "https://registry.yarnpkg.com/@slickgrid-universal/utils/-/utils-5.0.0-beta.1.tgz#0c6f1c5740347cb2afaf3cc9ba1a20df1bff7ca1" + integrity sha512-MlyksV/5Vdj8/LsAWuSJYExxbCjEvIMO7ELs/NKQk/2a1VZ1EJt/yLBq2TpnJm84V1fYs1odolgGg+AX9UgLiQ== "@szmarczak/http-timer@^5.0.1": version "5.0.1" @@ -1277,13 +1279,6 @@ "@types/qs" "*" "@types/serve-static" "*" -"@types/flatpickr@^3.1.2": - version "3.1.2" - resolved "https://registry.yarnpkg.com/@types/flatpickr/-/flatpickr-3.1.2.tgz#767e04fea776ddb399007028bed1a885e26d6d52" - integrity sha512-vCEuLqfSlpPhLDOvxyYMIlX20Dwn3XSEeYf9rXfcldDQdLVrtxDdIzE82xhlEFVeHpERujCCQIqETNEUrGsVtA== - dependencies: - flatpickr "*" - "@types/fnando__sparkline@^0.3.7": version "0.3.7" resolved "https://registry.yarnpkg.com/@types/fnando__sparkline/-/fnando__sparkline-0.3.7.tgz#708d3c34a34c2388208217f777d05291f0e641dd" @@ -3243,13 +3238,6 @@ cssstyle@^2.3.0: dependencies: cssom "~0.3.6" -cssstyle@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-4.0.1.tgz#ef29c598a1e90125c870525490ea4f354db0660a" - integrity sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ== - dependencies: - rrweb-cssom "^0.6.0" - csstype@^3.0.2: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" @@ -3339,14 +3327,6 @@ data-urls@^3.0.2: whatwg-mimetype "^3.0.0" whatwg-url "^11.0.0" -data-urls@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-5.0.0.tgz#2f76906bce1824429ffecb6920f45a0b30f00dde" - integrity sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg== - dependencies: - whatwg-mimetype "^4.0.0" - whatwg-url "^14.0.0" - date-fns@^2.30.0: version "2.30.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.30.0.tgz#f367e644839ff57894ec6ac480de40cae4b0f4d0" @@ -3380,7 +3360,7 @@ debug@^3.1.0, debug@^3.2.7: dependencies: ms "^2.1.1" -decimal.js@^10.4.2, decimal.js@^10.4.3: +decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== @@ -3590,11 +3570,6 @@ domhandler@^4.0.0, domhandler@^4.2.0, domhandler@^4.3.1: dependencies: domelementtype "^2.2.0" -dompurify@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.1.0.tgz#8c6b9fe986969a33aa4686bd829cbe8e14dd9445" - integrity sha512-yoU4rhgPKCo+p5UrWWWNKiIq+ToGqmVVhk0PmMYBK4kRsR3/qhemNFL8f6CFmBd4gMwm3F4T7HBoydP5uY07fA== - domutils@^2.5.2, domutils@^2.8.0: version "2.8.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" @@ -4438,11 +4413,6 @@ flat@^5.0.2: resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== -flatpickr@*, flatpickr@^4.6.13: - version "4.6.13" - resolved "https://registry.yarnpkg.com/flatpickr/-/flatpickr-4.6.13.tgz#8a029548187fd6e0d670908471e43abe9ad18d94" - integrity sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw== - flatted@^3.2.9: version "3.3.1" resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.1.tgz#21db470729a6734d4997002f439cb308987f567a" @@ -4948,13 +4918,6 @@ html-encoding-sniffer@^3.0.0: dependencies: whatwg-encoding "^2.0.0" -html-encoding-sniffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz#696df529a7cfd82446369dc5193e590a3735b448" - integrity sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ== - dependencies: - whatwg-encoding "^3.1.1" - html-entities@^2.4.0: version "2.5.2" resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.5.2.tgz#201a3cf95d3a15be7099521620d19dfb4f65359f" @@ -5665,15 +5628,6 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== -isomorphic-dompurify@^2.7.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/isomorphic-dompurify/-/isomorphic-dompurify-2.7.0.tgz#8518ec082c2036a53c2e94871ff947f6f1feb2fd" - integrity sha512-0FTlXP/gEEWW+O/sXaO9yZ4bgegrHnOqzbdCNAMeO2KYIOVMAcqVIo+uTcWYd1+DmI+nV58vUmNW03nauoKn2w== - dependencies: - "@types/dompurify" "^3.0.5" - dompurify "^3.1.0" - jsdom "^24.0.0" - isomorphic-fetch@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-3.0.0.tgz#0267b005049046d2421207215d45d6a262b8b8b4" @@ -6229,33 +6183,6 @@ jsdom@^20.0.0: ws "^8.11.0" xml-name-validator "^4.0.0" -jsdom@^24.0.0: - version "24.0.0" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-24.0.0.tgz#e2dc04e4c79da368481659818ee2b0cd7c39007c" - integrity sha512-UDS2NayCvmXSXVP6mpTj+73JnNQadZlr9N68189xib2tx5Mls7swlTNao26IoHv46BZJFvXygyRtyXd1feAk1A== - dependencies: - cssstyle "^4.0.1" - data-urls "^5.0.0" - decimal.js "^10.4.3" - form-data "^4.0.0" - html-encoding-sniffer "^4.0.0" - http-proxy-agent "^7.0.0" - https-proxy-agent "^7.0.2" - is-potential-custom-element-name "^1.0.1" - nwsapi "^2.2.7" - parse5 "^7.1.2" - rrweb-cssom "^0.6.0" - saxes "^6.0.0" - symbol-tree "^3.2.4" - tough-cookie "^4.1.3" - w3c-xmlserializer "^5.0.0" - webidl-conversions "^7.0.0" - whatwg-encoding "^3.1.1" - whatwg-mimetype "^4.0.0" - whatwg-url "^14.0.0" - ws "^8.16.0" - xml-name-validator "^5.0.0" - jsesc@^2.5.1: version "2.5.2" resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" @@ -6760,10 +6687,10 @@ multicast-dns@^7.2.5: dns-packet "^5.2.2" thunky "^1.0.2" -multiple-select-vanilla@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/multiple-select-vanilla/-/multiple-select-vanilla-3.1.0.tgz#b71f96c10f7ebaac6961894be36a462e758e341f" - integrity sha512-2UtPlinsO+dYH6bLisLLlvcsMAd1A6LnWpbiPNBT+97xSYSPnipEqlAQTwkxg9MoekpvG2jMZrthAHuZwki+vA== +multiple-select-vanilla@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/multiple-select-vanilla/-/multiple-select-vanilla-3.1.3.tgz#549602850e2f48f4417ff105d41aa9b759c9ab5f" + integrity sha512-EcnBCgI/j5ilM3w+TcB3HhVixsN4yncXKi/Wv9EZnPy9PeLMasD0doyj/wxrlvmH0omaS0y9y1rdIZt2nbJaaw== dependencies: "@types/trusted-types" "^2.0.7" @@ -6915,7 +6842,7 @@ nth-check@^2.0.1: dependencies: boolbase "^1.0.0" -nwsapi@^2.2.2, nwsapi@^2.2.7: +nwsapi@^2.2.2: version "2.2.7" resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.7.tgz#738e0707d3128cb750dddcfe90e4610482df0f30" integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ== @@ -7566,7 +7493,7 @@ punycode@^1.3.2: resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== -punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: +punycode@^2.1.0, punycode@^2.1.1: version "2.3.1" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== @@ -7980,11 +7907,6 @@ rimraf@^5.0.5: dependencies: glob "^10.3.7" -rrweb-cssom@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz#ed298055b97cbddcdeb278f904857629dec5e0e1" - integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw== - run-applescript@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/run-applescript/-/run-applescript-7.0.0.tgz#e5a553c2bffd620e169d276c1cd8f1b64778fbeb" @@ -8515,16 +8437,7 @@ string-length@^4.0.1: char-regex "^1.0.2" strip-ansi "^6.0.0" -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -8597,14 +8510,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -8808,13 +8714,6 @@ tr46@^3.0.0: dependencies: punycode "^2.1.1" -tr46@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-5.0.0.tgz#3b46d583613ec7283020d79019f1335723801cec" - integrity sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g== - dependencies: - punycode "^2.3.1" - tr46@~0.0.3: version "0.0.3" resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" @@ -9155,6 +9054,11 @@ validate-npm-package-license@^3.0.4: spdx-correct "^3.0.0" spdx-expression-parse "^3.0.0" +vanilla-calendar-picker@^2.11.4: + version "2.11.4" + resolved "https://registry.yarnpkg.com/vanilla-calendar-picker/-/vanilla-calendar-picker-2.11.4.tgz#834a41185f1d847449e1bd690b1cc3f15ea94034" + integrity sha512-0FJixXnw7qIf1Uvr6FbhJP4OP+hnLPjuhVRj05Uy98Or5UiXTiLoGEolNH5BvEG/bOdyPIkGohOMIrizSthDnA== + vary@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -9181,13 +9085,6 @@ w3c-xmlserializer@^4.0.0: dependencies: xml-name-validator "^4.0.0" -w3c-xmlserializer@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz#f925ba26855158594d907313cedd1476c5967f6c" - integrity sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA== - dependencies: - xml-name-validator "^5.0.0" - walker@^1.0.8: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" @@ -9410,13 +9307,6 @@ whatwg-encoding@^2.0.0: dependencies: iconv-lite "0.6.3" -whatwg-encoding@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz#d0f4ef769905d426e1688f3e34381a99b60b76e5" - integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ== - dependencies: - iconv-lite "0.6.3" - whatwg-fetch@^3.4.1: version "3.6.20" resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.20.tgz#580ce6d791facec91d37c72890995a0b48d31c70" @@ -9427,11 +9317,6 @@ whatwg-mimetype@^3.0.0: resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== -whatwg-mimetype@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz#bc1bf94a985dc50388d54a9258ac405c3ca2fc0a" - integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg== - whatwg-url@^11.0.0: version "11.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" @@ -9440,14 +9325,6 @@ whatwg-url@^11.0.0: tr46 "^3.0.0" webidl-conversions "^7.0.0" -whatwg-url@^14.0.0: - version "14.0.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-14.0.0.tgz#00baaa7fd198744910c4b1ef68378f2200e4ceb6" - integrity sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw== - dependencies: - tr46 "^5.0.0" - webidl-conversions "^7.0.0" - whatwg-url@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" @@ -9514,7 +9391,7 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -9532,15 +9409,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.0.1, wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214" @@ -9588,11 +9456,6 @@ xml-name-validator@^4.0.0: resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== -xml-name-validator@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-5.0.0.tgz#82be9b957f7afdacf961e5980f1bf227c0bf7673" - integrity sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg== - xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb"