From 0f280ee021bc3021efb96025b228c9431b00930a Mon Sep 17 00:00:00 2001 From: "Srirang.Kalantri" Date: Thu, 16 Jul 2026 10:43:00 +0530 Subject: [PATCH 1/2] chore: upgrade pluggable widget tools --- package.json | 8 +- .../__snapshots__/Accordion.spec.tsx.snap | 2 +- .../typings/AccordionProps.d.ts | 2 +- .../ActivityIndicator.spec.tsx.snap | 2 +- .../__snapshots__/Animation.spec.tsx.snap | 2 +- .../typings/AnimationProps.d.ts | 2 +- .../typings/AppEventsProps.d.ts | 2 +- .../backgroundGradient.spec.tsx.snap | 2 +- .../typings/BackgroundGradientProps.d.ts | 2 +- .../BackgroundImage.spec.tsx.snap | 2 +- .../typings/BackgroundImageProps.d.ts | 2 +- .../__snapshots__/Badge.spec.tsx.snap | 2 +- .../badge-native/typings/BadgeProps.d.ts | 2 +- .../__snapshots__/Legend.spec.tsx.snap | 2 +- .../typings/BarChartProps.d.ts | 4 +- .../BarcodeScanner.spec.tsx.snap | 2 +- .../typings/BarcodeScannerProps.d.ts | 2 +- .../src/__tests__/BottomSheet.spec.tsx | 19 +- .../__snapshots__/BottomSheet.spec.tsx.snap | 4 +- .../typings/BottomSheetProps.d.ts | 2 +- .../__snapshots__/Carousel.spec.tsx.snap | 2 +- .../typings/CarouselProps.d.ts | 2 +- .../__snapshots__/ColorPicker.spec.tsx.snap | 2 +- .../typings/ColorPickerProps.d.ts | 2 +- .../__snapshots__/Legend.spec.tsx.snap | 2 +- .../typings/ColumnChartProps.d.ts | 4 +- .../src/__tests__/Feedback.spec.tsx | 43 +- .../__snapshots__/Feedback.spec.tsx.snap | 2 +- .../typings/FeedbackProps.d.ts | 2 +- .../FloatingActionButton.spec.tsx.snap | 2 +- .../typings/FloatingActionButtonProps.d.ts | 2 +- .../src/components/__tests__/Gallery.spec.tsx | 3 - .../__snapshots__/Gallery.spec.tsx.snap | 2 +- .../gallery-native/typings/GalleryProps.d.ts | 2 +- .../FilterComponent.spec.tsx.snap | 2 +- .../GalleryTextFilter.spec.tsx.snap | 2 +- .../typings/GalleryTextFilterProps.d.ts | 2 +- .../__snapshots__/Image.spec.tsx.snap | 2 +- .../image-native/typings/ImageProps.d.ts | 2 +- .../IntroScreen.notch.spec.tsx.snap | 2 +- .../__snapshots__/IntroScreen.spec.tsx.snap | 2 +- .../typings/IntroScreenProps.d.ts | 2 +- .../__snapshots__/Legend.spec.tsx.snap | 2 +- .../typings/LineChartProps.d.ts | 4 +- .../__snapshots__/ListViewSwipe.spec.tsx.snap | 2 +- .../__snapshots__/Maps.spec.tsx.snap | 2 +- .../maps-native/typings/MapsProps.d.ts | 4 +- .../typings/NotificationsProps.d.ts | 2 +- .../PieDoughnutChart.spec.tsx.snap | 2 +- .../typings/PieDoughnutChartProps.d.ts | 4 +- .../__snapshots__/PopupMenu.spec.tsx.snap | 2 +- .../__snapshots__/ProgressBar.spec.tsx.snap | 2 +- .../typings/ProgressBarProps.d.ts | 4 +- .../ProgressCircle.spec.tsx.snap | 2 +- .../typings/ProgressCircleProps.d.ts | 4 +- .../__snapshots__/QRCode.spec.tsx.snap | 2 +- .../qr-code-native/typings/QRCodeProps.d.ts | 2 +- .../__snapshots__/RadioButtons.spec.tsx.snap | 2 +- .../typings/RadioButtonsProps.d.ts | 2 +- .../__snapshots__/RangeSlider.spec.tsx.snap | 2 +- .../typings/RangeSliderProps.d.ts | 2 +- .../src/__test__/Rating.spec.tsx | 3 - .../rating-native/typings/RatingProps.d.ts | 2 +- .../__snapshots__/Repeater.spec.tsx.snap | 2 +- .../typings/RepeaterProps.d.ts | 2 +- .../__snapshots__/SafeAreaView.spec.tsx.snap | 2 +- .../Signature.android.spec.tsx.snap | 2 +- .../__snapshots__/Signature.ios.spec.tsx.snap | 178 +- .../typings/SignatureProps.d.ts | 2 +- .../__snapshots__/Slider.spec.tsx.snap | 2 +- .../slider-native/typings/SliderProps.d.ts | 2 +- .../switch-native/typings/SwitchProps.d.ts | 2 +- .../__snapshots__/ToggleButtons.spec.tsx.snap | 2 +- .../typings/ToggleButtonsProps.d.ts | 2 +- .../__snapshots__/VideoPlayer.spec.tsx.snap | 2 +- .../typings/VideoPlayerProps.d.ts | 2 +- .../__snapshots__/WebView.spec.tsx.snap | 2 +- .../web-view-native/typings/WebViewProps.d.ts | 2 +- .../tools/piw-utils-internal/package.json | 2 +- ...endix+pluggable-widgets-tools+11.8.0.patch | 121 - .../@mendix__pluggable-widgets-tools.patch | 40 + pnpm-lock.yaml | 4953 ++++++++++------- 82 files changed, 3158 insertions(+), 2372 deletions(-) delete mode 100644 patches/@mendix+pluggable-widgets-tools+11.8.0.patch create mode 100644 patches/@mendix__pluggable-widgets-tools.patch diff --git a/package.json b/package.json index 51b09d52d..a54260b87 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ }, "pnpm": { "overrides": { - "@mendix/pluggable-widgets-tools": "11.8.0", + "@mendix/pluggable-widgets-tools": "11.12.0", "@rollup/plugin-typescript": "12.3.0", "mendix": "11.8.0", "react": "19.2.3", @@ -89,7 +89,7 @@ "@prettier/plugin-xml": "2.2.0", "cheerio": "1.0.0-rc.12", "typescript": "~5.9.3", - "rollup": "3.30.0", + "rollup": "4.30.1", "react-test-renderer": "19.2.3", "@xmldom/xmldom": ">=0.8.13", "flatted": ">=3.4.2", @@ -102,10 +102,10 @@ "lodash": ">=4.18.0" }, "patchedDependencies": { - "@mendix/pluggable-widgets-tools@11.8.0": "patches/@mendix+pluggable-widgets-tools+11.8.0.patch", "react-native-gesture-handler@2.31.2": "patches/react-native-gesture-handler+2.31.2.patch", "react-native-slider@0.11.0": "patches/react-native-slider+0.11.0.patch", - "react-native-snap-carousel@3.9.1": "patches/react-native-snap-carousel+3.9.1.patch" + "react-native-snap-carousel@3.9.1": "patches/react-native-snap-carousel+3.9.1.patch", + "@mendix/pluggable-widgets-tools": "patches/@mendix__pluggable-widgets-tools.patch" } }, "packageManager": "pnpm@10.32.0+sha512.9b2634bb3fed5601c33633f2d92593f506270a3963b8c51d2b2d6a828da615ce4e9deebef9614ccebbc13ac8d3c0f9c9ccceb583c69c8578436fa477dbb20d70" diff --git a/packages/pluggableWidgets/accordion-native/src/__tests__/__snapshots__/Accordion.spec.tsx.snap b/packages/pluggableWidgets/accordion-native/src/__tests__/__snapshots__/Accordion.spec.tsx.snap index 205ba4caa..8b57bcbaa 100644 --- a/packages/pluggableWidgets/accordion-native/src/__tests__/__snapshots__/Accordion.spec.tsx.snap +++ b/packages/pluggableWidgets/accordion-native/src/__tests__/__snapshots__/Accordion.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Accordion in collapsible & single expanded group mode renders correctly 1`] = ` { name: string; diff --git a/packages/pluggableWidgets/bar-chart-native/src/components/__tests__/__snapshots__/Legend.spec.tsx.snap b/packages/pluggableWidgets/bar-chart-native/src/components/__tests__/__snapshots__/Legend.spec.tsx.snap index be9f62d37..5bec0aae5 100644 --- a/packages/pluggableWidgets/bar-chart-native/src/components/__tests__/__snapshots__/Legend.spec.tsx.snap +++ b/packages/pluggableWidgets/bar-chart-native/src/components/__tests__/__snapshots__/Legend.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Legend doesn't render series when there is no series name 1`] = ` { name: string; diff --git a/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx b/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx index c999cc9a1..b761a5974 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx +++ b/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/BottomSheet.spec.tsx @@ -1,9 +1,9 @@ import { EditableValueBuilder } from "@mendix/piw-utils-internal"; -import { render } from "@testing-library/react-native"; +import { render, waitFor } from "@testing-library/react-native"; import { BottomSheet } from "../BottomSheet"; import { BottomSheetProps } from "../../typings/BottomSheetProps"; import { BottomSheetStyle } from "../ui/Styles"; -import { ActionSheetIOS, Text } from "react-native"; +import { ActionSheetIOS, Platform, Text } from "react-native"; jest.mock("react-native-worklets", () => jest.requireActual("react-native-worklets/lib/module/mock")); @@ -52,7 +52,13 @@ describe("Bottom sheet", () => { // RN 0.83 test renderer may serialize iOS SafeAreaView as a plain View, // so snapshots in this suite no longer prove iOS-specific rendering by host tag. // This test explicitly verifies our Platform.OS override by asserting the iOS native path. - it("uses iOS native action sheet when native implementation is enabled", () => { + it("uses iOS native action sheet when native implementation is enabled", async () => { + const platformOsDescriptor = Object.getOwnPropertyDescriptor(Platform, "OS"); + Object.defineProperty(Platform, "OS", { + configurable: true, + value: "ios" + }); + const actionSheetSpy = jest .spyOn(ActionSheetIOS, "showActionSheetWithOptions") .mockImplementation(() => undefined); @@ -63,7 +69,9 @@ describe("Bottom sheet", () => { render(); - expect(actionSheetSpy).toHaveBeenCalled(); + await waitFor(() => { + expect(actionSheetSpy).toHaveBeenCalled(); + }); expect(actionSheetSpy).toHaveBeenCalledWith( expect.objectContaining({ options: ["Item 1", "Item 2", "Cancel"], @@ -72,6 +80,9 @@ describe("Bottom sheet", () => { expect.any(Function) ); actionSheetSpy.mockRestore(); + if (platformOsDescriptor) { + Object.defineProperty(Platform, "OS", platformOsDescriptor); + } }); it("renders a native bottom action sheet for ios (Basic modal)", () => { diff --git a/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/__snapshots__/BottomSheet.spec.tsx.snap b/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/__snapshots__/BottomSheet.spec.tsx.snap index 512486a56..d19767eb0 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/__snapshots__/BottomSheet.spec.tsx.snap +++ b/packages/pluggableWidgets/bottom-sheet-native/src/__tests__/__snapshots__/BottomSheet.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Bottom sheet renders a custom bottom action sheet for ios (Basic modal) with custom style 1`] = `null`; @@ -158,4 +158,4 @@ exports[`Bottom sheet renders a expanding fullscreen with custom styles 1`] = ` `; -exports[`Bottom sheet renders a native bottom action sheet for ios (Basic modal) 1`] = ``; +exports[`Bottom sheet renders a native bottom action sheet for ios (Basic modal) 1`] = `null`; diff --git a/packages/pluggableWidgets/bottom-sheet-native/typings/BottomSheetProps.d.ts b/packages/pluggableWidgets/bottom-sheet-native/typings/BottomSheetProps.d.ts index e03719f62..99bb563a4 100644 --- a/packages/pluggableWidgets/bottom-sheet-native/typings/BottomSheetProps.d.ts +++ b/packages/pluggableWidgets/bottom-sheet-native/typings/BottomSheetProps.d.ts @@ -3,8 +3,8 @@ * WARNING: All changes made to this file will be overwritten * @author Mendix Widgets Framework Team */ -import { ComponentType, CSSProperties, ReactNode } from "react"; import { ActionValue, EditableValue } from "mendix"; +import { ComponentType, CSSProperties, ReactNode } from "react"; export type TypeEnum = "modal" | "expanding"; diff --git a/packages/pluggableWidgets/carousel-native/src/__tests__/__snapshots__/Carousel.spec.tsx.snap b/packages/pluggableWidgets/carousel-native/src/__tests__/__snapshots__/Carousel.spec.tsx.snap index dc5d3a1c6..c69df4b5c 100644 --- a/packages/pluggableWidgets/carousel-native/src/__tests__/__snapshots__/Carousel.spec.tsx.snap +++ b/packages/pluggableWidgets/carousel-native/src/__tests__/__snapshots__/Carousel.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Carousel renders loading 1`] = ` { fireEvent.press(component.getByTestId("feedback-test$send")); - await waitFor(() => - expect(fetch).toHaveBeenCalledWith( - "https://feedback-api.mendix.com/rest/v3/feedbackapi/projects/sprintr-app-id/issues", - { - body: '{"title":"unittest","description":"","issueType":"Issue","submitter":{"userId":"","email":"unknown@example.com","displayName":"Unknown Native User"},"metadata":{"userRoles":"","location":"","form":"","userAgent":"Native for ios","screenWidth":750,"screenHeight":1334},"imageAttachment":""}', - headers: { ClientIdentifier: "feedback-native-v2", "Content-Type": "application/json" }, - method: "POST", - mode: "no-cors", - referrer: "no-referrer" - } - ) - ); + await waitFor(() => expect(fetch).toHaveBeenCalledTimes(1)); + + const [url, request] = (fetch as jest.Mock).mock.calls[0]; + expect(url).toBe("https://feedback-api.mendix.com/rest/v3/feedbackapi/projects/sprintr-app-id/issues"); + expect(request).toMatchObject({ + headers: { ClientIdentifier: "feedback-native-v2", "Content-Type": "application/json" }, + method: "POST", + mode: "no-cors", + referrer: "no-referrer" + }); + + const body = JSON.parse(request.body as string); + expect(body).toMatchObject({ + title: "unittest", + description: "", + issueType: "Issue", + submitter: { + userId: "", + email: "unknown@example.com", + displayName: "Unknown Native User" + }, + metadata: { + userRoles: "", + location: "", + form: "" + }, + imageAttachment: "" + }); + expect(body.metadata.userAgent).toMatch(/^Native for (ios|android)$/); + expect(typeof body.metadata.screenWidth).toBe("number"); + expect(typeof body.metadata.screenHeight).toBe("number"); }, 15000); }); diff --git a/packages/pluggableWidgets/feedback-native/src/__tests__/__snapshots__/Feedback.spec.tsx.snap b/packages/pluggableWidgets/feedback-native/src/__tests__/__snapshots__/Feedback.spec.tsx.snap index e71aec090..eba289537 100644 --- a/packages/pluggableWidgets/feedback-native/src/__tests__/__snapshots__/Feedback.spec.tsx.snap +++ b/packages/pluggableWidgets/feedback-native/src/__tests__/__snapshots__/Feedback.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Feedback renders 1`] = ` { name: string; diff --git a/packages/pluggableWidgets/floating-action-button-native/src/__tests__/__snapshots__/FloatingActionButton.spec.tsx.snap b/packages/pluggableWidgets/floating-action-button-native/src/__tests__/__snapshots__/FloatingActionButton.spec.tsx.snap index 23cd874cf..c2492e5a7 100644 --- a/packages/pluggableWidgets/floating-action-button-native/src/__tests__/__snapshots__/FloatingActionButton.spec.tsx.snap +++ b/packages/pluggableWidgets/floating-action-button-native/src/__tests__/__snapshots__/FloatingActionButton.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`FloatingActionButton renders correct props with secondary buttons 1`] = ` renders 1`] = ` { name: string; diff --git a/packages/pluggableWidgets/progress-circle-native/src/__tests__/__snapshots__/ProgressCircle.spec.tsx.snap b/packages/pluggableWidgets/progress-circle-native/src/__tests__/__snapshots__/ProgressCircle.spec.tsx.snap index 299c183b3..066efa218 100644 --- a/packages/pluggableWidgets/progress-circle-native/src/__tests__/__snapshots__/ProgressCircle.spec.tsx.snap +++ b/packages/pluggableWidgets/progress-circle-native/src/__tests__/__snapshots__/ProgressCircle.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`ProgressCircle renders 1`] = ` { name: string; diff --git a/packages/pluggableWidgets/radio-buttons-native/src/__tests__/__snapshots__/RadioButtons.spec.tsx.snap b/packages/pluggableWidgets/radio-buttons-native/src/__tests__/__snapshots__/RadioButtons.spec.tsx.snap index 41cf8b951..43a8ec88c 100644 --- a/packages/pluggableWidgets/radio-buttons-native/src/__tests__/__snapshots__/RadioButtons.spec.tsx.snap +++ b/packages/pluggableWidgets/radio-buttons-native/src/__tests__/__snapshots__/RadioButtons.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Radio buttons render correctly with show label false 1`] = ` { name: string; diff --git a/packages/pluggableWidgets/safe-area-view-native/src/__tests__/__snapshots__/SafeAreaView.spec.tsx.snap b/packages/pluggableWidgets/safe-area-view-native/src/__tests__/__snapshots__/SafeAreaView.spec.tsx.snap index 0ece2f9ba..eda5881bf 100644 --- a/packages/pluggableWidgets/safe-area-view-native/src/__tests__/__snapshots__/SafeAreaView.spec.tsx.snap +++ b/packages/pluggableWidgets/safe-area-view-native/src/__tests__/__snapshots__/SafeAreaView.spec.tsx.snap @@ -1,4 +1,4 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing exports[`Safe area view renders with content 1`] = ` - - - Clear - - + Clear + - - - Save - - + Save + @@ -2070,8 +2066,15 @@ exports[`Signature iOS renders with default styles 1`] = ` } } accessible={false} - collapsable={false} focusable={true} + nativeForegroundAndroid={ + { + "borderless": false, + "color": 855638016, + "rippleRadius": undefined, + "type": "RippleAndroid", + } + } onClick={[Function]} onResponderGrant={[Function]} onResponderMove={[Function]} @@ -2081,44 +2084,35 @@ exports[`Signature iOS renders with default styles 1`] = ` onStartShouldSetResponder={[Function]} style={ { + "alignItems": "center", "backgroundColor": "transparent", "borderColor": "#0595DB", "borderRadius": 8, "borderStyle": "solid", "borderWidth": 1, "flex": 1, + "justifyContent": "center", "marginRight": 8, - "opacity": 1, + "overflow": "hidden", + "paddingHorizontal": 8, + "paddingVertical": 8, } } testID="signature-test$ClearButton$Touchable" > - - - Clear - - + Clear + - - - Save - - + Save + diff --git a/packages/pluggableWidgets/signature-native/typings/SignatureProps.d.ts b/packages/pluggableWidgets/signature-native/typings/SignatureProps.d.ts index ebc9afc79..1742ee217 100644 --- a/packages/pluggableWidgets/signature-native/typings/SignatureProps.d.ts +++ b/packages/pluggableWidgets/signature-native/typings/SignatureProps.d.ts @@ -3,8 +3,8 @@ * 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"; +import { CSSProperties } from "react"; export interface SignatureProps