diff --git a/packages/pluggableWidgets/date-time-picker-web/.eslintrc.js b/packages/pluggableWidgets/date-time-picker-web/.eslintrc.js new file mode 100644 index 0000000000..a81cc74f08 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/.eslintrc.js @@ -0,0 +1,5 @@ +const base = require("@mendix/pluggable-widgets-tools/configs/eslint.ts.base.json"); + +module.exports = { + ...base +}; diff --git a/packages/pluggableWidgets/date-time-picker-web/.gitattributes b/packages/pluggableWidgets/date-time-picker-web/.gitattributes new file mode 100644 index 0000000000..ed8ea8651d --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/.gitattributes @@ -0,0 +1,21 @@ +# Set the default behavior, in case people don't have core.autocrlf set. +* text=auto + +# Explicitly declare text files you want to always be normalized and converted +# to native line endings on checkout. +*.ts text eol=lf +*.tsx text eol=lf +*.js text eol=lf +*.jsx text eol=lf +*.css text eol=lf +*.scss text eol=lf +*.json text eol=lf +*.xml text eol=lf +*.md text eol=lf +*.gitattributes eol=lf +*.gitignore eol=lf + +# Denote all files that are truly binary and should not be modified. +*.png binary +*.jpg binary +*.gif binary diff --git a/packages/pluggableWidgets/date-time-picker-web/.gitignore b/packages/pluggableWidgets/date-time-picker-web/.gitignore new file mode 100644 index 0000000000..6721739184 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/.gitignore @@ -0,0 +1,20 @@ +tests/testProject/ +.DS_Store +.idea +.vscode +dist +node_modules +.env +*.log +*.bak +*.launch +mxproject +coverage + +**/results +mendixProject +**/e2e/diffs +**/screenshot +**/screenshot-results +**/tests/testProject +**/artifacts diff --git a/packages/pluggableWidgets/date-time-picker-web/.prettierignore b/packages/pluggableWidgets/date-time-picker-web/.prettierignore new file mode 100644 index 0000000000..316da987ac --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/.prettierignore @@ -0,0 +1 @@ +tests/testProject/ diff --git a/packages/pluggableWidgets/date-time-picker-web/.prettierrc.js b/packages/pluggableWidgets/date-time-picker-web/.prettierrc.js new file mode 100644 index 0000000000..0892704ab0 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/.prettierrc.js @@ -0,0 +1 @@ +module.exports = require("@mendix/prettier-config-web-widgets"); diff --git a/packages/pluggableWidgets/date-time-picker-web/LICENSE b/packages/pluggableWidgets/date-time-picker-web/LICENSE new file mode 100644 index 0000000000..035fced0d9 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/LICENSE @@ -0,0 +1,15 @@ +The Apache License v2.0 + +Copyright © Mendix Technology BV 2022. All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/packages/pluggableWidgets/date-time-picker-web/README.md b/packages/pluggableWidgets/date-time-picker-web/README.md new file mode 100644 index 0000000000..765710f775 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/README.md @@ -0,0 +1,4 @@ + + +Please see [Date Time Picker](https://docs.mendix.com/appstore/widgets/combobox) in the Mendix documentation for +details. diff --git a/packages/pluggableWidgets/date-time-picker-web/package.json b/packages/pluggableWidgets/date-time-picker-web/package.json new file mode 100644 index 0000000000..ef67f8f1f2 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/package.json @@ -0,0 +1,61 @@ +{ + "name": "@mendix/date-time-picker-web", + "widgetName": "DateTimePicker", + "version": "1.0.0", + "description": "Date, time and range picker widget", + "copyright": "© Mendix Technology BV 2025. All rights reserved.", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/mendix/web-widgets.git" + }, + "config": { + "developmentPort": 3000, + "mendixHost": "http://localhost:8080" + }, + "mxpackage": { + "name": "DateTimePicker", + "type": "widget", + "mpkName": "com.mendix.widget.web.DateTimePicker.mpk" + }, + "packagePath": "com.mendix.widget.web", + "marketplace": { + "minimumMXVersion": "10.24.0", + "appNumber": 999999, + "appName": "Date Time Picker", + "reactReady": true + }, + "testProject": { + "githubUrl": "https://github.com/mendix/testProjects", + "branchName": "date-time-picker-web" + }, + "scripts": { + "prebuild": "rui-create-translation", + "build": "pluggable-widgets-tools build:web", + "create-gh-release": "rui-create-gh-release", + "create-translation": "rui-create-translation", + "dev": "pluggable-widgets-tools start:web", + "format": "prettier --ignore-path ./node_modules/@mendix/prettier-config-web-widgets/global-prettierignore --write .", + "lint": "pluggable-widgets-tools lint", + "lint:fix": "pluggable-widgets-tools lint:fix", + "publish-marketplace": "rui-publish-marketplace", + "prerelease": "npm run lint", + "release": "pluggable-widgets-tools release:web", + "start": "pluggable-widgets-tools start:server", + "test": "pluggable-widgets-tools test:unit:web:enzyme-free", + "update-changelog": "rui-update-changelog-widget", + "verify": "rui-verify-package-format" + }, + "dependencies": { + "classnames": "^2.5.1", + "react-datepicker": "^8.9.0" + }, + "devDependencies": { + "@mendix/automation-utils": "workspace:*", + "@mendix/eslint-config-web-widgets": "workspace:*", + "@mendix/pluggable-widgets-tools": "*", + "@mendix/prettier-config-web-widgets": "workspace:*", + "@mendix/rollup-web-widgets": "workspace:*", + "@mendix/widget-plugin-test-utils": "workspace:*" + } +} diff --git a/packages/pluggableWidgets/date-time-picker-web/rollup.config.mjs b/packages/pluggableWidgets/date-time-picker-web/rollup.config.mjs new file mode 100644 index 0000000000..688a1a7197 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/rollup.config.mjs @@ -0,0 +1,5 @@ +import copyFiles from "@mendix/rollup-web-widgets/copyFiles.mjs"; + +export default args => { + return copyFiles(args); +}; diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.dark.png b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.dark.png new file mode 100644 index 0000000000..57c8008c44 Binary files /dev/null and b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.dark.png differ diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.editorConfig.ts b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.editorConfig.ts new file mode 100644 index 0000000000..2f18c4da07 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.editorConfig.ts @@ -0,0 +1,80 @@ +import { hidePropertiesIn, Properties } from "@mendix/pluggable-widgets-tools"; +import { + container, + ContainerProps, + dropzone, + structurePreviewPalette, + StructurePreviewProps +} from "@mendix/widget-plugin-platform/preview/structure-preview-api"; +import { DateTimePickerPreviewProps } from "../typings/DateTimePickerProps"; + +export function getProperties(values: DateTimePickerPreviewProps, defaultProperties: Properties): Properties { + if (values.type !== "date" && values.type !== "range") { + hidePropertiesIn(defaultProperties, values, ["dateFormat"]); + } + + if (values.type !== "time") { + hidePropertiesIn(defaultProperties, values, ["timeFormat"]); + } + + if (values.type !== "datetime") { + hidePropertiesIn(defaultProperties, values, ["dateTimeFormat"]); + } + + if (values.type !== "range") { + hidePropertiesIn(defaultProperties, values, ["endDateAttribute"]); + } + + if (values.showLabel === false) { + hidePropertiesIn(defaultProperties, values, ["label"]); + } + + if (values.editable !== "conditionally") { + hidePropertiesIn(defaultProperties, values, ["editabilityCondition"]); + } + + if (values.validationType !== "custom") { + hidePropertiesIn(defaultProperties, values, ["customValidation"]); + } + + return defaultProperties; +} + +export function getPreview(values: DateTimePickerPreviewProps, isDarkMode: boolean): StructurePreviewProps { + const palette = structurePreviewPalette[isDarkMode ? "dark" : "light"]; + const structurePreviewChildren: StructurePreviewProps[] = []; + let dropdownPreviewChildren: StructurePreviewProps[] = []; + let readOnly = values.readOnly; + + if (structurePreviewChildren.length === 0) { + structurePreviewChildren.push({ + type: "Text", + content: values.dateAttribute ? `[${values.dateAttribute}]` : "[Date time picker]", + fontColor: palette.text.data + }); + } + + return { + type: "Container", + children: [ + { + type: "RowLayout", + columnSize: "grow", + borders: true, + borderWidth: 1, + borderRadius: 2, + backgroundColor: readOnly ? palette.background.containerDisabled : palette.background.container, + children: [ + { + type: "Container", + grow: 1, + padding: 4, + children: structurePreviewChildren + }, + container({ grow: 0, padding: 4 })() + ] + }, + ...dropdownPreviewChildren + ] + }; +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.editorPreview.tsx b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.editorPreview.tsx new file mode 100644 index 0000000000..cdddccf847 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.editorPreview.tsx @@ -0,0 +1,44 @@ +import { ReactElement } from "react"; +import { DateTimePickerPreviewProps } from "../typings/DateTimePickerProps"; +import "./ui/DateTimePicker.scss"; + +export function preview(props: DateTimePickerPreviewProps): ReactElement { + const label = props.showLabel ? props.label : null; + const portalId = `datepicker_` + Math.random(); + + return ( +
+ {label ? ( +
+
+ + +
+ ) : ( + + Date picker + + )} + +
+
+
+ +
+
+ + +
+
+ ); +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.icon.dark.png b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.icon.dark.png new file mode 100644 index 0000000000..57c8008c44 Binary files /dev/null and b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.icon.dark.png differ diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.icon.png b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.icon.png new file mode 100644 index 0000000000..3e0905098f Binary files /dev/null and b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.icon.png differ diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.png b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.png new file mode 100644 index 0000000000..bf2e00774c Binary files /dev/null and b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.png differ diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tile.dark.png b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tile.dark.png new file mode 100644 index 0000000000..a609dfde9a Binary files /dev/null and b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tile.dark.png differ diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tile.png b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tile.png new file mode 100644 index 0000000000..e758564f7c Binary files /dev/null and b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tile.png differ diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tsx b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tsx new file mode 100644 index 0000000000..d295e37d51 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.tsx @@ -0,0 +1,10 @@ +import { ReactElement } from "react"; +import { DateTimePickerContainerProps } from "../typings/DateTimePickerProps"; +import { DateTimePickerContainer } from "./components/DateTimePickerContainer"; + +import "react-datepicker/dist/react-datepicker.css"; +import "./ui/DateTimePicker.scss"; + +export function DateTimePicker(props: DateTimePickerContainerProps): ReactElement { + return ; +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.xml b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.xml new file mode 100644 index 0000000000..449efea5cb --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/DateTimePicker.xml @@ -0,0 +1,141 @@ + + + Date Time Picker + + Input elements + Display + https://docs.mendix.com/appstore/widgets/datetimepicker + + + + + Picker type + + + Date + Time + Range + Date and Time + + + + Date format + + + + Time format + + + + Date time format + + + + Placeholder + + + + + + + Value + + + + + + + + End value + + + + + + + + + Show label + + + + Label caption + + + + + + Editable + + + Default + Never + Conditionally + + + + Condition + + + + + Read-only style + + + Based on data view (Control) + Control + Text + + + + + + Visible + + + + + + + Validation + + + None + Required + Custom + + + + Custom condition + + + + + Message + + + + + + + Aria required + Used by assistive technologies to indicate that a field is required. + + + + + + On change + + + + On enter + + + + On leave + + + + + diff --git a/packages/pluggableWidgets/date-time-picker-web/src/components/DateTimePickerContainer.tsx b/packages/pluggableWidgets/date-time-picker-web/src/components/DateTimePickerContainer.tsx new file mode 100644 index 0000000000..b20b5b05d2 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/components/DateTimePickerContainer.tsx @@ -0,0 +1,71 @@ +import classNames from "classnames"; +import ReactDatePicker from "react-datepicker"; +import { DateTimePickerContainerProps } from "typings/DateTimePickerProps"; +import { useController } from "../hooks/useController"; +import { useSetupProps } from "../hooks/useSetupProps"; + +export function DateTimePickerContainer(props: DateTimePickerContainerProps) { + const controller = useController({ + endDate: props.endDateAttribute?.status === "available" ? (props.endDateAttribute.value as Date) : undefined, + startDate: props.dateAttribute.status === "available" ? (props.dateAttribute.value as Date) : undefined, + type: props.type, + onChange: props.onChange + }); + const pickerProps = useSetupProps(props, controller); + const label = props.showLabel && props.label?.status === "available" ? props.label.value : null; + const portalId = `datepicker_` + Math.random(); + + // still have to add validation for max and min time and validation message + console.info("unused props", { + name: props.name, + editabilityCondition: props.editabilityCondition, + readOnlyStyle: props.readOnlyStyle, + visible: props.visible, + validationType: props.validationType, + customValidation: props.customValidation, + validationMessage: props.validationMessage + }); + + const hasValidationMessage = + props.validationMessage?.status === "available" && props.validationMessage.value.length > 0; + + return ( +
+ {label ? ( +
+
+ + +
+ ) : ( + + Date picker + + )} + +
+ + + + {hasValidationMessage &&
{props.validationMessage?.value}
} +
+
+ ); +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/helpers/DatePickerController.ts b/packages/pluggableWidgets/date-time-picker-web/src/helpers/DatePickerController.ts new file mode 100644 index 0000000000..16e601e931 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/helpers/DatePickerController.ts @@ -0,0 +1,141 @@ +import { ActionValue } from "mendix"; +import { action, computed, makeObservable, observable } from "mobx"; +import { ClassAttributes, createRef, KeyboardEvent, KeyboardEventHandler, MouseEvent, MouseEventHandler } from "react"; +import ReactDatePicker, { DatePickerProps, DatePicker } from "react-datepicker"; + +type DatePickerBackendProps = DatePickerProps & ClassAttributes; + +interface PickerState { + startDate: Date | undefined; + endDate: Date | undefined; + expanded: boolean; + selectsRange: boolean; +} + +type Params = { + defaultStart?: Date; + defaultEnd?: Date; + onChange?: ActionValue<"none">; + type: "date" | "time" | "datetime" | "range"; +}; + +export class DatePickerController { + private _dates: Array; + private _timer = -1; + private _defaultState: Array; + private _type: "date" | "time" | "datetime" | "range"; + private _onChange?: ActionValue<"none">; + expanded = false; + pickerRef = createRef(); + + constructor(params: Params) { + this._dates = this.getDefaults(params); + this._defaultState = this.getDefaults(params); + this._type = params.type; + this._onChange = params.onChange; + + makeObservable(this, { + pickerState: computed, + expanded: observable, + handlePickerChange: action, + handleCalendarOpen: action, + handleCalendarClose: action, + handleKeyDown: action + }); + } + + get pickerState(): PickerState { + const isRange = this._type === "range"; + return { + endDate: this._selectsRange ? this._dates[1] : undefined, + expanded: this.expanded, + selectsRange: isRange, + startDate: this._dates[0] + }; + } + + private get _selectsRange(): boolean { + return this._type === "range"; + } + + handlePickerChange: DatePickerBackendProps["onChange"] = (value: Date | [Date | null, Date | null] | null) => { + if (this._selectsRange) { + const [start, end] = value as [Date | null, Date | null]; + this._dates[0] = start ?? undefined; + this._dates[1] = end ?? undefined; + + this._onChange?.canExecute && !this._onChange.isExecuting && this._onChange.execute(); + return; + } else { + this._dates[0] = value as Date; + + this._onChange?.canExecute && !this._onChange.isExecuting && this._onChange.execute(); + return; + } + }; + + handleCalendarOpen: DatePickerBackendProps["onCalendarOpen"] = () => { + this.expanded = true; + }; + + handleCalendarClose: DatePickerBackendProps["onCalendarOpen"] = () => { + this.expanded = false; + }; + + /** We use mouse down to avoid race condition with calendar "outside click" event. */ + handleButtonMouseDown: MouseEventHandler = () => { + if (this.expanded === false) { + this._setActive(); + } + }; + + handleButtonKeyDown: KeyboardEventHandler = e => { + if (e.code === "Enter" || e.code === "Space") { + e.preventDefault(); + e.stopPropagation(); + this._setActive(); + } + }; + + handleKeyDown: KeyboardEventHandler = event => { + // Clear value on "Backspace" in range mode. Works only when focused on input. + if ( + this._selectsRange && + (event.target as HTMLInputElement).nodeName === "INPUT" && + event.code === "Backspace" + ) { + this._dates = [undefined, undefined]; + } + }; + + /** + * Prevent any input changes in range selection mode. + * @remark + * Don't change this method unless there no other way to solve your problem. + * This method is just UX tweak that should prevent user confusion and have very low + * value in widget behavior. Feel free to remove this method if you refactoring code. + */ + UNSAFE_handleChangeRaw = (event?: MouseEvent | KeyboardEvent | undefined): void => { + if (event?.type === "change" && this._selectsRange) { + event.preventDefault(); + } + }; + + private _setActive(): void { + const picker = this.pickerRef.current; + clearTimeout(this._timer); + // Run setFocus on next tick to prevent calling focus on disabled element. + this._timer = window.setTimeout(() => { + picker?.setFocus(); + this._timer = -1; + }) as number; + } + + setup(): (() => void) | void { + this._dates = this._defaultState; + } + + private getDefaults(params: Params): Array { + return params.type === "range" ? [params.defaultStart, params.defaultEnd] : [params.defaultStart, undefined]; + } +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/hooks/useController.ts b/packages/pluggableWidgets/date-time-picker-web/src/hooks/useController.ts new file mode 100644 index 0000000000..c20f54403f --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/hooks/useController.ts @@ -0,0 +1,27 @@ +import { ActionValue } from "mendix"; +import { useEffect, useState } from "react"; +import { TypeEnum } from "typings/DateTimePickerProps"; +import { DatePickerController } from "../helpers/DatePickerController"; + +type UseControllerProps = { + endDate?: Date; + onChange?: ActionValue<"none">; + startDate?: Date; + type: TypeEnum; +}; + +export function useController({ endDate, startDate, type, onChange }: UseControllerProps): DatePickerController { + const [controller] = useState( + () => + new DatePickerController({ + defaultEnd: endDate, + defaultStart: startDate, + type, + onChange + }) + ); + + useEffect(() => controller.setup(), [controller]); + + return controller; +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/hooks/useSetupProps.ts b/packages/pluggableWidgets/date-time-picker-web/src/hooks/useSetupProps.ts new file mode 100644 index 0000000000..330add5b11 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/hooks/useSetupProps.ts @@ -0,0 +1,147 @@ +import { generateUUID } from "@mendix/widget-plugin-platform/framework/generate-uuid"; +import { DatePickerProps } from "react-datepicker"; +import { DateTimePickerContainerProps, TypeEnum } from "typings/DateTimePickerProps"; +import { MXSessionLocale } from "../../typings/global"; +import { DatePickerController } from "../helpers/DatePickerController"; +import { getLocale, pickerDateFormat, setupLocales } from "../utils/date-utils"; + +export type Day = 0 | 1 | 2 | 3 | 4 | 5 | 6; + +export function useSetupProps( + { + tabIndex, + type, + dateFormat, + timeFormat, + dateTimeFormat, + placeholder, + dateAttribute, + editable, + ariaRequired, + onEnter, + onLeave + }: DateTimePickerContainerProps, + controller: DatePickerController +): DatePickerProps { + const id = `DateFilter${generateUUID()}`; + const locale = getLocale(); + const calendarStartDay = locale.firstDayOfWeek as Day; + const calendarLocale = setupLocales(locale); + + const formatProps = formatPropsBuilder( + type, + dateFormat, + timeFormat, + dateTimeFormat, + dateAttribute.value ?? new Date(), + null, + locale + ); + + const popperProps: Pick< + DatePickerProps, + "popperPlacement" | "popperProps" | "showPopperArrow" | "popperModifiers" + > = { + popperPlacement: "bottom-start", + popperProps: { + strategy: "fixed", + transform: false + }, + showPopperArrow: false, + popperModifiers: [ + { + name: "computeStyles", + options: { + gpuAcceleration: false + }, + fn: () => ({}) + } + ] + }; + + return { + // Static props + allowSameDay: false, + autoFocus: false, + calendarClassName: "widget-datetimepicker-calendar", + className: "widget-datetimepicker-input", + dropdownMode: "select", + enableTabLoop: true, + shouldCloseOnSelect: false, + showMonthDropdown: true, + showYearDropdown: true, + strictParsing: true, + useWeekdaysShort: false, + + // Base props + ariaLabelledBy: `${id}-label`, + ariaRequired: ariaRequired.toString(), + disabled: editable === "never", + locale: calendarLocale, + placeholderText: placeholder?.status === "available" ? placeholder.value : "", + tabIndex: tabIndex ?? 0, + + // Formatting props + calendarStartDay, + ...formatProps, + + // Events props + onBlur: () => onLeave?.canExecute && !onLeave.isExecuting && onLeave.execute(), + onCalendarClose: controller.handleCalendarClose, + onCalendarOpen: controller.handleCalendarOpen, + onChange: controller.handlePickerChange, + onChangeRaw: controller.UNSAFE_handleChangeRaw, + onFocus: () => onEnter?.canExecute && !onEnter.isExecuting && onEnter.execute(), + onKeyDown: controller.handleKeyDown, + + // Popper props + ...popperProps + } as DatePickerProps; +} + +function formatPropsBuilder( + type: TypeEnum, + dateFormat: string, + timeFormat: string, + dateTimeFormat: string, + date: Date, + endDate: Date | null, + locale: MXSessionLocale +): Omit { + switch (type) { + case "date": + return { + dateFormat: dateFormat || pickerDateFormat(locale), + showTimeSelect: false, + showTimeSelectOnly: false, + selected: date + }; + case "time": + return { + dateFormat: timeFormat || "h:mm aa", + showTimeSelect: true, + showTimeSelectOnly: true, + timeIntervals: 15, + timeCaption: "Time", + selected: date + }; + case "datetime": + return { + dateFormat: dateTimeFormat || pickerDateFormat(locale), + showTimeSelect: true, + timeIntervals: 15, + timeCaption: "Time", + timeFormat: timeFormat || "h:mm aa", + selected: date + }; + case "range": + return { + dateFormat: dateFormat || pickerDateFormat(locale), + selected: date, + isClearable: true, + selectsRange: true, + startDate: date, + endDate: endDate + }; + } +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/package.xml b/packages/pluggableWidgets/date-time-picker-web/src/package.xml new file mode 100644 index 0000000000..bada44ee78 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/package.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/packages/pluggableWidgets/date-time-picker-web/src/ui/DateTimePicker.scss b/packages/pluggableWidgets/date-time-picker-web/src/ui/DateTimePicker.scss new file mode 100644 index 0000000000..f9603e2185 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/ui/DateTimePicker.scss @@ -0,0 +1,241 @@ +.widget-datetimepicker { + align-items: center; + color: var(--font-color-default); + display: flex; + font-size: var(--font-size-small); + margin: 0 -15px 16px -15px; + + &-label-wrapper { + flex: 0 0 25%; + max-width: 25%; + padding: 0 16px; + } + + &-label { + font-size: var(--font-size-default); + font-weight: 600; + text-align: right; + text-overflow: ellipsis; + width: 100%; + } + + &-wrapper { + align-items: center; + display: flex; + flex: 1; + padding: 0 16px; + } + + &-input { + background-color: var(--bg-color-secondary); + border: 1px solid var(--gray-primary); + border-radius: 4px; + display: flex; + flex: 1; + font-size: var(--font-size-default); + height: auto; + + min-width: 50px; + padding: var(--spacing-small); + transition: + border-color ease-in-out 0.15s, + box-shadow ease-in-out 0.15s; + + &:focus-within { + border-color: var(--link-color); + } + } + + &-input-button { + background: var(--bg-color-secondary); + border: 1px solid var(--gray-primary); + border-radius: 4px; + color: var(--link-color); + font-size: var(--font-size-default); + line-height: var(--line-height-base); + margin: 0; + margin-left: var(--spacing-small); + padding: 0.6em 1em; + + &[data-pressed] { + box-shadow: none; + background: var(--gray-primary); + } + + &[data-focus-visible] { + outline: 2px solid var(--link-color); + outline-offset: 2px; + } + + svg { + width: 14px; + height: 14px; + } + } + + &-calendar { + background-color: var(--bg-color); + border: 1px solid var(--gray-primary); + border-radius: var(--border-radius-default); + box-shadow: 0 2px 10px 0 rgba(0, 0, 0, 0.06); + font-size: var(--font-size-small); + padding: var(--spacing-small); + + .react-datepicker__current-month { + color: var(--font-color-default); + font-size: var(--font-size-default); + font-weight: 600; + } + + .react-datepicker__month-select, + .react-datepicker__year-select { + background-color: transparent; + border: none; + border-radius: 4px; + box-sizing: border-box; + color: var(--font-color-default); + cursor: pointer; + display: flex; + flex: 1; + justify-content: space-between; + align-items: center; + font-family: inherit; + font-size: inherit; + line-height: inherit; + margin: 0; + min-width: 50px; + padding: 0; + padding-inline: 4px; + transition: all 0.4s allow-discrete; + + &:focus-within { + outline: 2px solid var(--link-color); + outline-offset: 1px; + } + + &, + &::picker(select) { + appearance: base-select; + } + + &:hover, + &:focus { + background-color: var(--brand-default); + color: var(--link-color); + } + + &::picker(select) { + border: none; + border-radius: 4px; + min-width: 100px; + opacity: 0; + left: anchor(0%); + top: calc(anchor(bottom) + 4px); + transition: all 0.4s allow-discrete; + + &:popover-open { + height: calc-size(auto, size); + opacity: 1; + } + } + + &::picker-icon { + content: ""; + width: 14px; + height: 14px; + background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 24 24' stroke-width='2' stroke='%230a1325' class='size-6'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m19.5 8.25-7.5 7.5-7.5-7.5' /%3E%3C/svg%3E%0A"); + transition: rotate 0.2s ease-out; + } + + &:open::picker-icon { + rotate: 180deg; + } + + option { + background: white; + border: 1px solid #e7e7e9; + cursor: pointer; + padding: 8px; + transition-property: color, background; + transition-duration: 0.2s; + transition-timing-function: ease-out; + + &:first-of-type { + border-radius: 4px 4px 0 0; + } + + &:last-of-type { + border-radius: 0 0 4px 4px; + } + + &:not(&:last-of-type) { + border-bottom: none; + } + + &:hover, + &:focus { + background-color: #e7e7e9; + color: #264ae5; + } + + &:checked { + background-color: #264ae5; + color: #f8f8f8; + } + + &::checkmark { + display: none; + } + } + } + + .react-datepicker__day-name, + .react-datepicker__day { + display: flex; + align-items: center; + justify-content: center; + margin: 0; + height: 35px; + width: 35px; + } + + .react-datepicker__day-name { + color: var(--link-color); + font-weight: bold; + } + + .react-datepicker__month { + margin: 0; + } + + .react-datepicker__day-names, + .react-datepicker__week { + display: flex; + gap: 4px; + margin-bottom: 4px; + } + + .react-datepicker__day { + cursor: pointer; + + &:hover, + &[data-pressed] { + background-color: var(--brand-default); + border-radius: 50%; + color: var(--link-color); + } + + &:focus-within { + border-radius: 50%; + outline: 2px solid var(--link-color); + outline-offset: 1px; + } + + &--selected { + background-color: var(--link-color); + border-radius: 50%; + color: var(--bg-color); + } + } + } +} diff --git a/packages/pluggableWidgets/date-time-picker-web/src/utils/date-utils.ts b/packages/pluggableWidgets/date-time-picker-web/src/utils/date-utils.ts new file mode 100644 index 0000000000..f1bb0b14bf --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/src/utils/date-utils.ts @@ -0,0 +1,89 @@ +import * as locales from "date-fns/locale"; +import { registerLocale } from "react-datepicker"; +import { MXSessionLocale } from "../../typings/global"; + +/** + * This function takes format string and replace + * single "d" and "M" with their "double" equivalent + * Main purpose is to "fix" value formats accepted + * by DateFilter input. Idea is that if format string is + * uses short format (e.g d-M-yyyy) user should still + * be able to type value with leading zeros "09-02-2002". + * + * Example: + * "d/M/yyyy" -> "dd/MM/yyyy" + * + * @param formatString + */ +export function doubleMonthOrDayWhenSingle(formatString: string): string { + return formatString.replaceAll(/d+|M+/g, m => (m.length > 1 ? m : m + m)); +} + +/** + * Given a date formatter string replaces all uppercase 'E' to the lowercase 'e' + * this function returns the same string with the above characters replaced. + * Example: "YYww.E" returns "YYww.e" + * @function dayOfWeekWhenUpperCase + * @param {string} formatString The string used to find cases of uppercase E. + * @return {string} The same string but with 'E' in lowercase ('e'). + * + */ +export function dayOfWeekWhenUpperCase(formatString: string): string { + return formatString.replaceAll(/E/g, m => m.toLowerCase()); +} + +/** + * Map current app date format to date picker date format(s). + * @returns {string|string[]} + */ +export function pickerDateFormat(locale: MXSessionLocale): string | string[] { + const { + patterns: { date: appDateFormat } + } = locale; + let dateFormat: string | string[]; + // Replace with full patterns d -> dd, M -> MM + dateFormat = doubleMonthOrDayWhenSingle(appDateFormat); + // Replace Date format E to follow unicode standard (e...eeee) + dateFormat = dayOfWeekWhenUpperCase(dateFormat); + // Use multiple formats if formats are not equal + return dateFormat === appDateFormat ? dateFormat : [dateFormat, appDateFormat]; +} + +interface DateFilterLocale { + [key: string]: locales.Locale; +} + +/** + * Reg current locale in datepicker config. + * Later this locale can be passed to datepicker as locale prop. + * @returns {string} registered locale. + */ +export function setupLocales(locale: MXSessionLocale): string { + const { languageTag = "en-US" } = locale; + + const [language] = languageTag.split("-"); + const languageTagWithoutDash = languageTag.replace("-", ""); + + if (languageTagWithoutDash in locales) { + registerLocale(language, (locales as DateFilterLocale)[languageTagWithoutDash]); + } else if (language in locales) { + registerLocale(language, (locales as DateFilterLocale)[language]); + } + + return language; +} + +export function getLocale(): MXSessionLocale { + return window.mx + ? window.mx.session.getConfig().locale + : { + languageTag: "en-US", + code: "en_US", + firstDayOfWeek: 0, + patterns: { + date: "M/d/yyyy", + datetime: "M/d/yyyy, h:mm a", + time: "h:mm a" + } + }; +} diff --git a/packages/pluggableWidgets/date-time-picker-web/tsconfig.json b/packages/pluggableWidgets/date-time-picker-web/tsconfig.json new file mode 100644 index 0000000000..a3d2c5cce8 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/tsconfig.json @@ -0,0 +1,32 @@ +{ + "extends": "@mendix/pluggable-widgets-tools/configs/tsconfig.base", + "compilerOptions": { + "baseUrl": "./", + "noEmitOnError": true, + "sourceMap": true, + "module": "esnext", + "target": "es6", + "lib": ["esnext", "dom"], + "types": ["jest", "node"], + "moduleResolution": "node", + "declaration": false, + "noLib": false, + "forceConsistentCasingInFileNames": true, + "noFallthroughCasesInSwitch": true, + "strict": true, + "strictFunctionTypes": false, + "skipLibCheck": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "jsx": "react-jsx", + "jsxFactory": "", + "allowSyntheticDefaultImports": true, + "esModuleInterop": true, + "useUnknownInCatchVariables": false, + "exactOptionalPropertyTypes": false, + "paths": { + "react-hot-loader/root": ["./hot-typescript.ts"] + } + }, + "include": ["./src", "./typings"] +} diff --git a/packages/pluggableWidgets/date-time-picker-web/typings/DateTimePickerProps.d.ts b/packages/pluggableWidgets/date-time-picker-web/typings/DateTimePickerProps.d.ts new file mode 100644 index 0000000000..691dfc814b --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/typings/DateTimePickerProps.d.ts @@ -0,0 +1,75 @@ +/** + * This file was generated from DateTimePicker.xml + * WARNING: All changes made to this file will be overwritten + * @author Mendix Widgets Framework Team + */ +import { CSSProperties } from "react"; +import { ActionValue, DynamicValue, EditableValue } from "mendix"; + +export type TypeEnum = "date" | "time" | "range" | "datetime"; + +export type EditableEnum = "default" | "never" | "conditionally"; + +export type ReadOnlyStyleEnum = "default" | "control" | "text"; + +export type ValidationTypeEnum = "none" | "required" | "custom"; + +export interface DateTimePickerContainerProps { + name: string; + class: string; + style?: CSSProperties; + tabIndex?: number; + type: TypeEnum; + dateFormat: string; + timeFormat: string; + dateTimeFormat: string; + placeholder?: DynamicValue; + dateAttribute: EditableValue; + endDateAttribute?: EditableValue; + showLabel: boolean; + label?: DynamicValue; + editable: EditableEnum; + editabilityCondition?: DynamicValue; + readOnlyStyle: ReadOnlyStyleEnum; + visible?: DynamicValue; + validationType: ValidationTypeEnum; + customValidation?: DynamicValue; + validationMessage?: DynamicValue; + ariaRequired: boolean; + onChange?: ActionValue; + onEnter?: ActionValue; + onLeave?: ActionValue; +} + +export interface DateTimePickerPreviewProps { + /** + * @deprecated Deprecated since version 9.18.0. Please use class property instead. + */ + className: string; + class: string; + style: string; + styleObject?: CSSProperties; + readOnly: boolean; + renderMode: "design" | "xray" | "structure"; + translate: (text: string) => string; + type: TypeEnum; + dateFormat: string; + timeFormat: string; + dateTimeFormat: string; + placeholder: string; + dateAttribute: string; + endDateAttribute: string; + showLabel: boolean; + label: string; + editable: EditableEnum; + editabilityCondition: string; + readOnlyStyle: ReadOnlyStyleEnum; + visible: string; + validationType: ValidationTypeEnum; + customValidation: string; + validationMessage: string; + ariaRequired: boolean; + onChange: {} | null; + onEnter: {} | null; + onLeave: {} | null; +} diff --git a/packages/pluggableWidgets/date-time-picker-web/typings/global.d.ts b/packages/pluggableWidgets/date-time-picker-web/typings/global.d.ts new file mode 100644 index 0000000000..fb3a5bd3b8 --- /dev/null +++ b/packages/pluggableWidgets/date-time-picker-web/typings/global.d.ts @@ -0,0 +1,30 @@ +export interface MXLocalePatterns { + date: string; + datetime: string; + time: string; +} + +export interface MXSessionLocale { + code: string; + firstDayOfWeek: number; + languageTag: string; + patterns: MXLocalePatterns; +} + +export interface MXSessionConfig { + locale: MXSessionLocale; +} + +export interface MXSession { + getConfig(): MXSessionConfig; +} + +export interface MXGlobalObject { + session: MXSession; +} + +declare global { + interface Window { + mx?: MXGlobalObject; + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8c28eb42ef..0e3c2f4ec7 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -193,7 +193,7 @@ importers: version: 0.8.5 ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3) zod: specifier: ^3.25.67 version: 3.25.76 @@ -242,7 +242,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -275,13 +275,13 @@ importers: version: 9.5.4(typescript@5.9.3)(webpack@5.102.1) ts-node: specifier: 10.9.2 - version: 10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3) + version: 10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3) typescript: specifier: '>5.8.0' version: 5.9.3 webpack: specifier: ^5.75.0 - version: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + version: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) webpack-cli: specifier: ^5.0.1 version: 5.1.4(webpack@5.102.1) @@ -421,7 +421,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -446,7 +446,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -486,7 +486,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -514,7 +514,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -545,7 +545,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -585,7 +585,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -616,7 +616,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -656,7 +656,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -702,7 +702,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -733,7 +733,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -779,7 +779,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -828,7 +828,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -899,7 +899,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -945,7 +945,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -991,7 +991,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1025,7 +1025,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1080,7 +1080,7 @@ importers: version: 18.0.1 '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1117,7 +1117,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1163,7 +1163,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1203,7 +1203,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1261,7 +1261,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1328,7 +1328,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1339,6 +1339,34 @@ importers: specifier: workspace:* version: link:../../shared/widget-plugin-test-utils + packages/pluggableWidgets/date-time-picker-web: + dependencies: + classnames: + specifier: ^2.5.1 + version: 2.5.1 + react-datepicker: + specifier: ^8.9.0 + version: 8.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + devDependencies: + '@mendix/automation-utils': + specifier: workspace:* + version: link:../../../automation/utils + '@mendix/eslint-config-web-widgets': + specifier: workspace:* + version: link:../../shared/eslint-config-web-widgets + '@mendix/pluggable-widgets-tools': + specifier: 10.21.2 + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + '@mendix/prettier-config-web-widgets': + specifier: workspace:* + version: link:../../shared/prettier-config-web-widgets + '@mendix/rollup-web-widgets': + specifier: workspace:* + version: link:../../shared/rollup-web-widgets + '@mendix/widget-plugin-test-utils': + specifier: workspace:* + version: link:../../shared/widget-plugin-test-utils + packages/pluggableWidgets/document-viewer-web: dependencies: '@mendix/widget-plugin-component-kit': @@ -1374,7 +1402,7 @@ importers: version: 7.27.1(@babel/core@7.28.4) '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/rollup-web-widgets': specifier: workspace:* version: link:../../shared/rollup-web-widgets @@ -1396,7 +1424,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1426,7 +1454,7 @@ importers: version: 2.5.1 jest: specifier: ^29.7.0 - version: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + version: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) packages/pluggableWidgets/events-web: dependencies: @@ -1442,7 +1470,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1479,7 +1507,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1522,7 +1550,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1580,7 +1608,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1617,7 +1645,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1651,7 +1679,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1682,7 +1710,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1710,7 +1738,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1744,7 +1772,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1781,7 +1809,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1824,7 +1852,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1873,7 +1901,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1925,7 +1953,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1956,7 +1984,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -1987,7 +2015,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2021,7 +2049,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2061,7 +2089,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2098,7 +2126,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2174,7 +2202,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2231,7 +2259,7 @@ importers: version: 10.1.3(postcss@8.5.6) rollup-plugin-postcss: specifier: ^4.0.2 - version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + version: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) rollup-preserve-directives: specifier: ^1.1.3 version: 1.1.3(rollup@3.29.5) @@ -2250,7 +2278,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2290,7 +2318,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2321,7 +2349,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2367,7 +2395,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2398,7 +2426,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2432,7 +2460,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2463,7 +2491,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2491,7 +2519,7 @@ importers: version: link:../../shared/eslint-config-web-widgets '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) '@mendix/prettier-config-web-widgets': specifier: workspace:* version: link:../../shared/prettier-config-web-widgets @@ -2585,7 +2613,7 @@ importers: version: 5.2.0(eslint@9.37.0(jiti@2.6.1)) eslint-plugin-jest: specifier: ^29.0.1 - version: 29.0.1(@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3) + version: 29.0.1(@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3) eslint-plugin-package-json: specifier: ^0.56.1 version: 0.56.4(@types/estree@1.0.8)(eslint@9.37.0(jiti@2.6.1))(jsonc-eslint-parser@2.4.1) @@ -2634,7 +2662,7 @@ importers: version: link:../widget-plugin-test-utils '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) packages/shared/prettier-config-web-widgets: dependencies: @@ -2658,7 +2686,7 @@ importers: devDependencies: '@mendix/pluggable-widgets-tools': specifier: 10.21.2 - version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) + version: 10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1) rollup-plugin-copy: specifier: ^3.5.0 version: 3.5.0 @@ -2678,10 +2706,10 @@ importers: version: link:../tsconfig-web-widgets '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) classnames: specifier: ^2.5.1 version: 2.5.1 @@ -2746,10 +2774,10 @@ importers: version: link:../tsconfig-web-widgets '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) jest-environment-jsdom: specifier: ^29.7.0 version: 29.7.0 @@ -2807,10 +2835,10 @@ importers: version: link:../widget-plugin-test-utils '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) date-fns: specifier: ^3.6.0 version: 3.6.0 @@ -2844,10 +2872,10 @@ importers: version: link:../widget-plugin-test-utils '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) classnames: specifier: ^2.5.1 version: 2.5.1 @@ -2871,10 +2899,10 @@ importers: version: link:../widget-plugin-platform '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) classnames: specifier: ^2.5.1 version: 2.5.1 @@ -2905,10 +2933,10 @@ importers: version: link:../tsconfig-web-widgets '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) optionalDependencies: react: specifier: '>=18.0.0 <19.0.0' @@ -2927,10 +2955,10 @@ importers: version: link:../tsconfig-web-widgets '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) classnames: specifier: ^2.5.1 version: 2.5.1 @@ -2989,10 +3017,10 @@ importers: version: link:../tsconfig-web-widgets '@swc/core': specifier: ^1.7.26 - version: 1.13.5 + version: 1.13.5(@swc/helpers@0.5.17) '@swc/jest': specifier: ^0.2.36 - version: 0.2.39(@swc/core@1.13.5) + version: 0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17)) big.js: specifier: ^6.2.2 version: 6.2.2 @@ -3920,6 +3948,12 @@ packages: react: '>=18.0.0 <19.0.0' react-dom: '>=18.0.0 <19.0.0' + '@floating-ui/react@0.27.16': + resolution: {integrity: sha512-9O8N4SeG2z++TSM8QA/KTeKFBVCNEz/AGS7gWPJf6KFRzmRWixFRnCnkPHRDwSVZW6QPDO6uT0P2SpWNKCc9/g==} + peerDependencies: + react: '>=18.0.0 <19.0.0' + react-dom: '>=18.0.0 <19.0.0' + '@floating-ui/utils@0.2.10': resolution: {integrity: sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==} @@ -4689,6 +4723,9 @@ packages: '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/jest@0.2.39': resolution: {integrity: sha512-eyokjOwYd0Q8RnMHri+8/FS1HIrIUKK/sRrFp8c1dThUOfNeCWbLmBP1P5VsKdvmkd25JaH+OKYwEYiAYg9YAA==} engines: {npm: '>= 7.0.0'} @@ -9337,6 +9374,12 @@ packages: react: '>=18.0.0 <19.0.0' react-dom: '>=18.0.0 <19.0.0' + react-datepicker@8.9.0: + resolution: {integrity: sha512-yoRsGxjqVRjk8iUBssrW9jcinTeyP9mAfTpuzdKvlESOUjdrY0sfDTzIZWJAn38jvNcxW1dnDmW1CinjiFdxYQ==} + peerDependencies: + react: '>=18.0.0 <19.0.0' + react-dom: '>=18.0.0 <19.0.0' + react-devtools-core@6.1.5: resolution: {integrity: sha512-ePrwPfxAnB+7hgnEr8vpKxL9cmnp7F322t8oqcPshbIQQhDKgFDW4tjhF2wjVbdXF9O/nyuy3sQWd9JGpiLPvA==} @@ -12064,6 +12107,14 @@ snapshots: react-dom: 18.3.1(react@18.3.1) tabbable: 6.2.0 + '@floating-ui/react@0.27.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + dependencies: + '@floating-ui/react-dom': 2.1.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@floating-ui/utils': 0.2.10 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + tabbable: 6.2.0 + '@floating-ui/utils@0.2.10': {} '@googlemaps/jest-mocks@2.22.6': {} @@ -12140,7 +12191,7 @@ snapshots: jest-util: 29.7.0 slash: 3.0.0 - '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3))': + '@jest/core@29.7.0(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3))': dependencies: '@jest/console': 29.7.0 '@jest/reporters': 29.7.0 @@ -12154,7 +12205,7 @@ snapshots: exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 29.7.0 - jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) jest-haste-map: 29.7.0 jest-message-util: 29.7.0 jest-regex-util: 29.6.3 @@ -12434,7 +12485,7 @@ snapshots: '@melloware/coloris@0.25.0': {} - '@mendix/pluggable-widgets-tools@10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5)(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1)': + '@mendix/pluggable-widgets-tools@10.21.2(@jest/transform@29.7.0)(@jest/types@30.2.0)(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/babel__core@7.20.5)(@types/node@22.14.1)(jest-util@30.2.0)(picomatch@4.0.3)(react-dom@18.3.1(react@18.3.1))(react-native@0.82.0(@babel/core@7.28.4)(@types/react@19.2.2)(react@18.3.1))(react@18.3.1)(tslib@2.8.1)': dependencies: '@babel/core': 7.28.4 '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) @@ -12486,7 +12537,7 @@ snapshots: identity-obj-proxy: 3.0.0 jasmine: 3.99.0 jasmine-core: 3.99.1 - jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) jest-environment-jsdom: 29.7.0 jest-jasmine2: 29.7.0 jest-junit: 13.2.0 @@ -12508,14 +12559,14 @@ snapshots: rollup-plugin-command: 1.1.3 rollup-plugin-license: 3.6.0(picomatch@4.0.3)(rollup@3.29.5) rollup-plugin-livereload: 2.0.5 - rollup-plugin-postcss: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + rollup-plugin-postcss: 4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) rollup-plugin-re: 1.0.7 sass: 1.93.2 semver: 7.7.3 shelljs: 0.8.5 shx: 0.3.4 - ts-jest: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(jest-util@30.2.0)(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3) - ts-node: 10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3) + ts-jest: 29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(jest-util@30.2.0)(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3) typescript: 5.9.3 xml2js: 0.6.2 zip-a-folder: 0.0.12 @@ -13011,7 +13062,7 @@ snapshots: '@swc/core-win32-x64-msvc@1.13.5': optional: true - '@swc/core@1.13.5': + '@swc/core@1.13.5(@swc/helpers@0.5.17)': dependencies: '@swc/counter': 0.1.3 '@swc/types': 0.1.25 @@ -13026,13 +13077,19 @@ snapshots: '@swc/core-win32-arm64-msvc': 1.13.5 '@swc/core-win32-ia32-msvc': 1.13.5 '@swc/core-win32-x64-msvc': 1.13.5 + '@swc/helpers': 0.5.17 '@swc/counter@0.1.3': {} - '@swc/jest@0.2.39(@swc/core@1.13.5)': + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + optional: true + + '@swc/jest@0.2.39(@swc/core@1.13.5(@swc/helpers@0.5.17))': dependencies: '@jest/create-cache-key-function': 30.2.0 - '@swc/core': 1.13.5 + '@swc/core': 1.13.5(@swc/helpers@0.5.17) '@swc/counter': 0.1.3 jsonc-parser: 3.3.1 @@ -13708,17 +13765,17 @@ snapshots: '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.102.1)': dependencies: - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.102.1) '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.102.1)': dependencies: - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.102.1) '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack@5.102.1)': dependencies: - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) webpack-cli: 5.1.4(webpack@5.102.1) '@xml-tools/parser@1.0.11': @@ -14537,7 +14594,7 @@ snapshots: normalize-path: 3.0.0 schema-utils: 4.3.3 serialize-javascript: 6.0.2 - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) core-js-compat@3.46.0: dependencies: @@ -14576,13 +14633,13 @@ snapshots: dependencies: buffer: 5.7.1 - create-jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)): + create-jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)): dependencies: '@jest/types': 29.6.3 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) jest-util: 29.7.0 prompts: 2.4.2 transitivePeerDependencies: @@ -14649,7 +14706,7 @@ snapshots: postcss-value-parser: 4.2.0 semver: 7.7.3 optionalDependencies: - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) css-select@4.3.0: dependencies: @@ -15357,13 +15414,13 @@ snapshots: - supports-color - typescript - eslint-plugin-jest@29.0.1(@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3): + eslint-plugin-jest@29.0.1(@typescript-eslint/eslint-plugin@8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3): dependencies: '@typescript-eslint/utils': 8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) eslint: 9.37.0(jiti@2.6.1) optionalDependencies: '@typescript-eslint/eslint-plugin': 8.46.1(@typescript-eslint/parser@8.46.1(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3))(eslint@9.37.0(jiti@2.6.1))(typescript@5.9.3) - jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) transitivePeerDependencies: - supports-color - typescript @@ -16667,16 +16724,16 @@ snapshots: - babel-plugin-macros - supports-color - jest-cli@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)): + jest-cli@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) '@jest/test-result': 29.7.0 '@jest/types': 29.6.3 chalk: 4.1.2 - create-jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + create-jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) exit: 0.1.2 import-local: 3.2.0 - jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + jest-config: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) jest-util: 29.7.0 jest-validate: 29.7.0 yargs: 17.7.2 @@ -16686,7 +16743,7 @@ snapshots: - supports-color - ts-node - jest-config@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)): + jest-config@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)): dependencies: '@babel/core': 7.28.4 '@jest/test-sequencer': 29.7.0 @@ -16712,7 +16769,7 @@ snapshots: strip-json-comments: 3.1.1 optionalDependencies: '@types/node': 22.14.1 - ts-node: 10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3) transitivePeerDependencies: - babel-plugin-macros - supports-color @@ -17029,12 +17086,12 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)): + jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)): dependencies: - '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + '@jest/core': 29.7.0(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) '@jest/types': 29.6.3 import-local: 3.2.0 - jest-cli: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + jest-cli: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) transitivePeerDependencies: - '@types/node' - babel-plugin-macros @@ -17692,7 +17749,7 @@ snapshots: dependencies: schema-utils: 4.3.3 tapable: 2.3.0 - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) mini-svg-data-uri@1.4.4: {} @@ -18273,13 +18330,13 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.10 - postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)): + postcss-load-config@3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)): dependencies: lilconfig: 2.1.0 yaml: 1.10.2 optionalDependencies: postcss: 8.5.6 - ts-node: 10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3) + ts-node: 10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3) postcss-merge-longhand@5.1.7(postcss@8.5.6): dependencies: @@ -18753,6 +18810,14 @@ snapshots: react-dom: 18.3.1(react@18.3.1) react-onclickoutside: 6.13.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + react-datepicker@8.9.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + dependencies: + '@floating-ui/react': 0.27.16(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + clsx: 2.1.1 + date-fns: 4.1.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-devtools-core@6.1.5: dependencies: shell-quote: 1.8.3 @@ -19209,7 +19274,7 @@ snapshots: - bufferutil - utf-8-validate - rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)): + rollup-plugin-postcss@4.0.2(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)): dependencies: chalk: 4.1.2 concat-with-sourcemaps: 1.1.0 @@ -19218,7 +19283,7 @@ snapshots: p-queue: 6.6.2 pify: 5.0.0 postcss: 8.5.6 - postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + postcss-load-config: 3.1.4(postcss@8.5.6)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) postcss-modules: 4.3.1(postcss@8.5.6) promise.series: 0.2.0 resolve: 1.22.10 @@ -19291,7 +19356,7 @@ snapshots: sass-loader@13.3.3(sass@1.93.2)(webpack@5.102.1): dependencies: neo-async: 2.6.2 - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) optionalDependencies: sass: 1.93.2 @@ -19788,16 +19853,16 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - terser-webpack-plugin@5.3.14(@swc/core@1.13.5)(webpack@5.102.1): + terser-webpack-plugin@5.3.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.102.1): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 serialize-javascript: 6.0.2 terser: 5.44.0 - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) optionalDependencies: - '@swc/core': 1.13.5 + '@swc/core': 1.13.5(@swc/helpers@0.5.17) terser@5.44.0: dependencies: @@ -19890,12 +19955,12 @@ snapshots: ts-custom-error@3.3.1: {} - ts-jest@29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(jest-util@30.2.0)(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3): + ts-jest@29.4.5(@babel/core@7.28.4)(@jest/transform@29.7.0)(@jest/types@30.2.0)(babel-jest@29.7.0(@babel/core@7.28.4))(jest-util@30.2.0)(jest@29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)))(typescript@5.9.3): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 handlebars: 4.7.8 - jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3)) + jest: 29.7.0(@types/node@22.14.1)(ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3)) json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 @@ -19918,9 +19983,9 @@ snapshots: semver: 7.7.3 source-map: 0.7.6 typescript: 5.9.3 - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) - ts-node@10.9.2(@swc/core@1.13.5)(@types/node@22.14.1)(typescript@5.9.3): + ts-node@10.9.2(@swc/core@1.13.5(@swc/helpers@0.5.17))(@types/node@22.14.1)(typescript@5.9.3): dependencies: '@cspotcode/source-map-support': 0.8.1 '@tsconfig/node10': 1.0.11 @@ -19938,7 +20003,7 @@ snapshots: v8-compile-cache-lib: 3.0.1 yn: 3.1.1 optionalDependencies: - '@swc/core': 1.13.5 + '@swc/core': 1.13.5(@swc/helpers@0.5.17) tslib@1.14.1: {} @@ -20209,7 +20274,7 @@ snapshots: import-local: 3.2.0 interpret: 3.1.1 rechoir: 0.8.0 - webpack: 5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4) + webpack: 5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4) webpack-merge: 5.10.0 webpack-merge@5.10.0: @@ -20220,7 +20285,7 @@ snapshots: webpack-sources@3.3.3: {} - webpack@5.102.1(@swc/core@1.13.5)(webpack-cli@5.1.4): + webpack@5.102.1(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack-cli@5.1.4): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -20244,7 +20309,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.3.14(@swc/core@1.13.5)(webpack@5.102.1) + terser-webpack-plugin: 5.3.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.102.1) watchpack: 2.4.4 webpack-sources: 3.3.3 optionalDependencies: