@gravity-ui/dashkit 10.4.3 → 10.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/README.md +3 -1
  2. package/build/cjs/components/ActionPanel/ActionPanel.css +53 -24
  3. package/build/cjs/components/ActionPanel/ActionPanel.js +27 -1
  4. package/build/cjs/components/ActionPanel/ActionPanel.js.map +1 -1
  5. package/build/cjs/components/DashKitDnDWrapper/DashKitDnDWrapper.js +4 -2
  6. package/build/cjs/components/DashKitDnDWrapper/DashKitDnDWrapper.js.map +1 -1
  7. package/build/cjs/components/GridItem/GridItem.css +4 -2
  8. package/build/cjs/components/GridLayout/ReactGridLayout.d.ts +2 -1
  9. package/build/cjs/components/GridLayout/ReactGridLayout.js +19 -15
  10. package/build/cjs/components/GridLayout/ReactGridLayout.js.map +1 -1
  11. package/build/cjs/components/GridLayout/__tests__/passive-resize.test.js +14 -25
  12. package/build/cjs/components/GridLayout/__tests__/passive-resize.test.js.map +1 -1
  13. package/build/cjs/context/DashKitDnDContext.d.ts +1 -1
  14. package/build/cjs/context/DashKitDnDContext.js.map +1 -1
  15. package/build/cjs/hooks/__tests__/useDnDItemProps.test.d.ts +2 -0
  16. package/build/cjs/hooks/__tests__/useDnDItemProps.test.js +45 -0
  17. package/build/cjs/hooks/__tests__/useDnDItemProps.test.js.map +1 -0
  18. package/build/cjs/hooks/useDnDItemProps.js +1 -1
  19. package/build/cjs/hooks/useDnDItemProps.js.map +1 -1
  20. package/build/cjs/package.json +1 -1
  21. package/build/docs/INDEX.md +3 -1
  22. package/build/esm/components/ActionPanel/ActionPanel.css +53 -24
  23. package/build/esm/components/ActionPanel/ActionPanel.js +27 -1
  24. package/build/esm/components/ActionPanel/ActionPanel.js.map +1 -1
  25. package/build/esm/components/DashKitDnDWrapper/DashKitDnDWrapper.js +4 -2
  26. package/build/esm/components/DashKitDnDWrapper/DashKitDnDWrapper.js.map +1 -1
  27. package/build/esm/components/GridItem/GridItem.css +4 -2
  28. package/build/esm/components/GridLayout/ReactGridLayout.d.ts +2 -1
  29. package/build/esm/components/GridLayout/ReactGridLayout.js +19 -15
  30. package/build/esm/components/GridLayout/ReactGridLayout.js.map +1 -1
  31. package/build/esm/components/GridLayout/__tests__/passive-resize.test.js +14 -25
  32. package/build/esm/components/GridLayout/__tests__/passive-resize.test.js.map +1 -1
  33. package/build/esm/context/DashKitDnDContext.d.ts +1 -1
  34. package/build/esm/context/DashKitDnDContext.js.map +1 -1
  35. package/build/esm/hooks/__tests__/useDnDItemProps.test.d.ts +2 -0
  36. package/build/esm/hooks/__tests__/useDnDItemProps.test.js +42 -0
  37. package/build/esm/hooks/__tests__/useDnDItemProps.test.js.map +1 -0
  38. package/build/esm/hooks/useDnDItemProps.js +1 -1
  39. package/build/esm/hooks/useDnDItemProps.js.map +1 -1
  40. package/build/esm/package.json +1 -1
  41. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"passive-resize.test.js","sourceRoot":"../../../../../src","sources":["components/GridLayout/__tests__/passive-resize.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jest-environment jsdom */\n\nimport React from 'react';\n\nimport {act, fireEvent, render} from '@testing-library/react';\nimport ReactGridLayout from 'react-grid-layout';\n\nimport type {ConfigItem} from '../../../shared';\nimport GridItem, {GridItem as GridItemComponent} from '../../GridItem/GridItem';\nimport {Layout} from '../ReactGridLayout';\n\njest.mock('../../Item/Item', () => ({\n __esModule: true,\n default: () => null,\n}));\n\ntype ResizeObserverCallback = (entries: ResizeObserverEntry[]) => void;\n\nconst resizeObservers: TestResizeObserver[] = [];\nconst mockPolyfillObservers: TestResizeObserver[] = [];\nconst animationFrameCallbacks = new Map<number, FrameRequestCallback>();\nlet animationFrameId = 0;\n\njest.mock('resize-observer-polyfill', () => ({\n __esModule: true,\n default: class {\n readonly callback: ResizeObserverCallback;\n disconnect = jest.fn();\n elements = new Set<Element>();\n\n constructor(callback: ResizeObserverCallback) {\n this.callback = callback;\n mockPolyfillObservers.push(this as unknown as TestResizeObserver);\n }\n\n observe = (element: Element) => {\n this.elements.add(element);\n };\n\n unobserve = (element: Element) => {\n this.elements.delete(element);\n };\n },\n}));\n\nclass TestResizeObserver {\n readonly callback: ResizeObserverCallback;\n disconnect = jest.fn();\n elements = new Set<Element>();\n\n unobserve = jest.fn((element: Element) => {\n this.elements.delete(element);\n });\n\n constructor(callback: ResizeObserverCallback) {\n this.callback = callback;\n resizeObservers.push(this);\n }\n\n observe(element: Element) {\n this.elements.add(element);\n }\n}\n\nconst emitResize = (width: number) => {\n resizeObservers.forEach((observer) => {\n observer.elements.forEach((element) => {\n observer.callback([{contentRect: {width}, target: element} as ResizeObserverEntry]);\n });\n });\n};\n\nconst emitResizeFor = (element: Element, width: number) => {\n resizeObservers\n .filter((observer) => observer.elements.has(element))\n .forEach((observer) => {\n observer.callback([{contentRect: {width}, target: element} as ResizeObserverEntry]);\n });\n};\n\nconst emitPolyfillResizeFor = (element: Element, width: number) => {\n mockPolyfillObservers\n .filter((observer) => observer.elements.has(element))\n .forEach((observer) => {\n observer.callback([{contentRect: {width}, target: element} as ResizeObserverEntry]);\n });\n};\n\nconst runAnimationFrame = () => {\n const callbacks = Array.from(animationFrameCallbacks.values());\n animationFrameCallbacks.clear();\n callbacks.forEach((callback) => callback(0));\n};\n\nconst gridItem = (\n <GridItem\n adjustWidgetLayout={jest.fn()}\n id=\"item\"\n item={{data: {}} as ConfigItem}\n key=\"item\"\n layout={[]}\n />\n);\n\ndescribe('Layout passive resize', () => {\n beforeEach(() => {\n resizeObservers.length = 0;\n mockPolyfillObservers.length = 0;\n animationFrameCallbacks.clear();\n animationFrameId = 0;\n global.ResizeObserver = TestResizeObserver as unknown as typeof ResizeObserver;\n window.requestAnimationFrame = jest.fn((callback) => {\n animationFrameId += 1;\n animationFrameCallbacks.set(animationFrameId, callback);\n return animationFrameId;\n });\n window.cancelAnimationFrame = jest.fn((frame) => {\n animationFrameCallbacks.delete(frame);\n });\n });\n\n test('does not render ReactGridLayout for passive container resize', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n\n const {container} = render(\n <Layout cols={12} layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]} rowHeight={100}>\n <div key=\"item\" />\n </Layout>,\n );\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResize(900);\n fireEvent.pointerDown(container.firstElementChild as HTMLElement);\n });\n\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n renderSpy.mockRestore();\n });\n\n test.each([undefined, null] as const)(\n 'uses polyfill when native ResizeObserver is %p',\n (resizeObserver) => {\n global.ResizeObserver = resizeObserver as unknown as typeof ResizeObserver;\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n\n expect(mockPolyfillObservers[0].elements.has(layout as HTMLElement)).toBe(true);\n act(() => {\n emitPolyfillResizeFor(layout as HTMLElement, 900);\n });\n\n expect(item?.style.width).toBe('213px');\n expect(item?.style.transform).toBe('translate(158px,10px)');\n },\n );\n\n test('commits only latest width after delivery between two quiet frames', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResize(900);\n runAnimationFrame();\n emitResize(1000);\n });\n\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n act(() => {\n runAnimationFrame();\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n act(() => {\n runAnimationFrame();\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize + 1);\n expect((renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout).props.width).toBe(\n 1000,\n );\n renderSpy.mockRestore();\n });\n\n test('cancels second quiet frame on unmount', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {unmount} = render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResize(900);\n runAnimationFrame();\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n\n unmount();\n expect(window.cancelAnimationFrame).toHaveBeenLastCalledWith(2);\n act(() => {\n runAnimationFrame();\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n renderSpy.mockRestore();\n });\n\n test('keeps distinct view item geometry after passive resize', () => {\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[\n {h: 1, i: 'first', w: 1, x: 0, y: 0},\n {h: 1, i: 'second', w: 3, x: 2, y: 0},\n ]}\n rowHeight={100}\n >\n <div key=\"first\" />\n <div key=\"second\" />\n </Layout>,\n );\n\n act(() => {\n emitResize(1000);\n });\n\n const first = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-x=\"0\"]',\n );\n const second = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-x=\"2\"]',\n );\n expect(first?.style.transform).toBe('translate(10px,10px)');\n expect(first?.style.width).toBe('73px');\n expect(second?.style.transform).toBe('translate(175px,10px)');\n expect(second?.style.width).toBe('238px');\n });\n\n test('forwards transform mode through GridItem and uses transforms by default', () => {\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n {gridItem}\n </Layout>,\n );\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n\n act(() => {\n emitResize(900);\n });\n\n expect(item?.style.width).toBe('213px');\n expect(item?.dataset.dashkitGridUseCssTransforms).toBe('true');\n expect(item?.style.transform).toBe('translate(158px,10px)');\n expect(item?.style.left).toBe('');\n expect(item?.style.top).toBe('');\n });\n\n test('switches to top and left without stale transform when CSS transforms are disabled', () => {\n const {container, rerender} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n {gridItem}\n </Layout>,\n );\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n\n act(() => {\n emitResize(900);\n });\n rerender(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n useCSSTransforms={false}\n >\n {gridItem}\n </Layout>,\n );\n act(() => {\n emitResize(1000);\n });\n\n expect(item?.dataset.dashkitGridUseCssTransforms).toBe('false');\n expect(item?.style.width).toBe('238px');\n expect(item?.style.left).toBe('175px');\n expect(item?.style.top).toBe('10px');\n expect(item?.style.transform).toBe('');\n });\n\n test('resizes only direct grid items when layouts are nested', () => {\n const {container, getByTestId} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'outer', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n <div data-testid=\"outer-item\" key=\"outer\">\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'inner', w: 2, x: 1, y: 0}]}\n rowHeight={100}\n >\n <div data-testid=\"inner-item\" key=\"inner\" />\n </Layout>\n </div>\n </Layout>,\n );\n const layouts = container.querySelectorAll('.react-grid-layout');\n const outerItem = getByTestId('outer-item');\n const innerItem = getByTestId('inner-item');\n\n act(() => {\n emitResizeFor(layouts[1], 500);\n });\n const innerWidth = innerItem.style.width;\n const innerTransform = innerItem.style.transform;\n expect(innerWidth).toBe('72px');\n expect(innerTransform).toBe('translate(51px,10px)');\n\n act(() => {\n emitResizeFor(layouts[0], 1000);\n });\n\n expect(outerItem.style.width).toBe('238px');\n expect(innerItem.style.width).toBe(innerWidth);\n expect(innerItem.style.transform).toBe(innerTransform);\n });\n\n test('updates editable idle geometry and refreshes RGL width before interaction', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={true}\n isResizable={true}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const item = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-cols]',\n );\n\n act(() => {\n emitResize(900);\n });\n\n expect(item?.style.width).toBe('213px');\n expect(item?.style.transform).toBe('translate(158px,10px)');\n\n item?.classList.add('react-draggable-dragging');\n act(() => {\n emitResize(1000);\n });\n expect(item?.style.width).toBe('213px');\n item?.classList.remove('react-draggable-dragging');\n\n act(() => {\n fireEvent.pointerDown(item as HTMLElement);\n });\n\n const lastRenderInstance = renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout;\n expect(lastRenderInstance.props.width).toBe(1000);\n renderSpy.mockRestore();\n });\n\n test('syncs RGL width before native and shared drag-over after passive resize', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const dragStateRef = {current: {isDragging: true, sourceGroup: 'source'}};\n const widths = [900, 1000];\n const onDropDragOver = jest.fn(() => {\n const instance = renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout;\n\n expect(instance.props.width).toBe(widths[onDropDragOver.mock.calls.length - 1]);\n return {};\n });\n const {container} = render(\n <Layout\n cols={12}\n dragStateRef={dragStateRef}\n group=\"target\"\n isDroppable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n onDropDragOver={onDropDragOver}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResizeFor(layout as HTMLElement, 900);\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n\n act(() => {\n fireEvent.dragOver(layout as HTMLElement, {clientX: 100, clientY: 100});\n });\n\n act(() => {\n emitResizeFor(layout as HTMLElement, 1000);\n });\n const rendersBeforeSharedDragOver = renderSpy.mock.calls.length;\n\n act(() => {\n fireEvent.mouseEnter(layout as HTMLElement);\n fireEvent.mouseMove(layout as HTMLElement, {clientX: 100, clientY: 100});\n });\n\n expect(renderSpy.mock.calls.length).toBeGreaterThan(rendersBeforeSharedDragOver);\n expect(onDropDragOver).toHaveBeenCalledTimes(2);\n renderSpy.mockRestore();\n });\n\n test('refreshes the outer-item cache when the layout children change', () => {\n const {container, rerender} = render(\n <Layout\n cols={12}\n isDraggable={true}\n isResizable={true}\n layout={[{h: 1, i: 'first', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"first\" />\n </Layout>,\n );\n\n act(() => {\n emitResize(900);\n });\n rerender(\n <Layout\n cols={12}\n isDraggable={true}\n isResizable={true}\n layout={[\n {h: 1, i: 'first', w: 1, x: 0, y: 0},\n {h: 1, i: 'second', w: 2, x: 1, y: 0},\n ]}\n rowHeight={100}\n >\n <div key=\"first\" />\n <div key=\"second\" />\n </Layout>,\n );\n\n const second = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-x=\"1\"]',\n );\n expect(second?.style.width).toBe('138px');\n expect(second?.style.transform).toBe('translate(84px,10px)');\n });\n\n test('measures after mount, accepts a visible width after zero and disconnects observer', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container, unmount} = render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n measureBeforeMount={true}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n\n const initialRender = renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout;\n expect(initialRender.props.width).toBe(0);\n act(() => {\n emitResize(900);\n });\n expect(\n container.querySelector<HTMLElement>('.react-grid-item[data-dashkit-grid-cols]')?.style\n .width,\n ).toBe('64px');\n\n unmount();\n expect(resizeObservers[0].disconnect).toHaveBeenCalledTimes(1);\n renderSpy.mockRestore();\n });\n\n test('keeps WidthProvider placeholder class names', () => {\n render(\n <Layout\n className=\"custom-layout\"\n cols={12}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n measureBeforeMount={true}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n\n expect(resizeObservers[0].unobserve.mock.calls[0][0].className).toBe(\n 'custom-layout react-grid-layout',\n );\n });\n\n test('moves observer and pointer listener from measurement placeholder to grid root', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n measureBeforeMount={true}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const placeholder = resizeObservers[0].unobserve.mock.calls[0][0] as HTMLElement;\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n const rendersBeforeSync = renderSpy.mock.calls.length;\n const widthBeforeOldTargetDelivery = item?.style.width;\n\n expect(resizeObservers[0].elements.has(placeholder)).toBe(false);\n expect(resizeObservers[0].elements.has(layout as HTMLElement)).toBe(true);\n act(() => {\n resizeObservers[0].callback([\n {contentRect: {width: 700}, target: placeholder} as unknown as ResizeObserverEntry,\n ]);\n });\n expect(item?.style.width).toBe(widthBeforeOldTargetDelivery);\n\n act(() => {\n emitResizeFor(layout as HTMLElement, 900);\n });\n expect(item?.style.width).toBe('213px');\n\n fireEvent.pointerDown(placeholder);\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeSync);\n fireEvent.pointerDown(layout as HTMLElement);\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeSync + 1);\n renderSpy.mockRestore();\n });\n\n test('installs and removes drag-over listeners on grid root', () => {\n const addEventListenerSpy = jest.spyOn(HTMLElement.prototype, 'addEventListener');\n const removeEventListenerSpy = jest.spyOn(HTMLElement.prototype, 'removeEventListener');\n const {container, unmount} = render(\n <Layout cols={12} layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]} rowHeight={100}>\n <div key=\"item\" />\n </Layout>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const dragEventNames = ['mouseup', 'mouseenter', 'mouseleave', 'mousemove'];\n const callsOnLayout = (spy: jest.SpyInstance) =>\n spy.mock.calls.filter(\n ([eventName], index) =>\n spy.mock.contexts[index] === layout && dragEventNames.includes(eventName),\n );\n\n expect(callsOnLayout(addEventListenerSpy)).toHaveLength(dragEventNames.length);\n\n unmount();\n\n expect(callsOnLayout(removeEventListenerSpy)).toHaveLength(dragEventNames.length);\n addEventListenerSpy.mockRestore();\n removeEventListenerSpy.mockRestore();\n });\n\n test('re-observes grid root and restores pointerdown after StrictMode remount', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container} = render(\n <React.StrictMode>\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>\n </React.StrictMode>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const currentObserver = resizeObservers.at(-1) as TestResizeObserver;\n\n expect(resizeObservers).toHaveLength(2);\n expect(currentObserver.elements.has(layout as HTMLElement)).toBe(true);\n act(() => {\n currentObserver.callback([\n {contentRect: {width: 900}, target: layout} as unknown as ResizeObserverEntry,\n ]);\n });\n const rendersBeforePointerDown = renderSpy.mock.calls.length;\n\n fireEvent.pointerDown(layout as HTMLElement);\n\n expect(renderSpy.mock.calls.length).toBeGreaterThan(rendersBeforePointerDown);\n renderSpy.mockRestore();\n });\n\n test('keeps unchanged GridItem child clone during another item layout update', () => {\n const renderSpy = jest.spyOn(GridItemComponent.prototype, 'render');\n const first = <GridItem {...gridItem.props} id=\"first\" key=\"first\" />;\n const second = <GridItem {...gridItem.props} id=\"second\" key=\"second\" />;\n const {container, rerender} = render(\n <Layout\n cols={12}\n layout={[\n {h: 1, i: 'first', w: 1, x: 0, y: 0},\n {h: 1, i: 'second', w: 1, x: 2, y: 0},\n ]}\n rowHeight={100}\n >\n {first}\n {second}\n </Layout>,\n );\n const secondRenders = renderSpy.mock.instances.filter(\n (instance) => instance.props.id === 'second',\n ).length;\n\n rerender(\n <Layout\n cols={12}\n layout={[\n {h: 1, i: 'first', w: 1, x: 1, y: 0},\n {h: 1, i: 'second', w: 1, x: 2, y: 0},\n ]}\n rowHeight={100}\n >\n {first}\n {second}\n </Layout>,\n );\n\n expect(\n renderSpy.mock.instances.filter((instance) => instance.props.id === 'second').length,\n ).toBe(secondRenders);\n expect(\n container.querySelector<HTMLElement>('.react-grid-item[data-dashkit-grid-x=\"1\"]'),\n ).not.toBeNull();\n renderSpy.mockRestore();\n });\n});\n"]}
1
+ {"version":3,"file":"passive-resize.test.js","sourceRoot":"../../../../../src","sources":["components/GridLayout/__tests__/passive-resize.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jest-environment jsdom */\n\nimport React from 'react';\n\nimport {act, fireEvent, render} from '@testing-library/react';\nimport ReactGridLayout from 'react-grid-layout';\n\nimport type {ConfigItem} from '../../../shared';\nimport GridItem, {GridItem as GridItemComponent} from '../../GridItem/GridItem';\nimport {Layout} from '../ReactGridLayout';\n\njest.mock('../../Item/Item', () => ({\n __esModule: true,\n default: () => null,\n}));\n\ntype ResizeObserverCallback = (entries: ResizeObserverEntry[]) => void;\n\nconst resizeObservers: TestResizeObserver[] = [];\nconst mockPolyfillObservers: TestResizeObserver[] = [];\n\njest.mock('resize-observer-polyfill', () => ({\n __esModule: true,\n default: class {\n readonly callback: ResizeObserverCallback;\n disconnect = jest.fn();\n elements = new Set<Element>();\n\n constructor(callback: ResizeObserverCallback) {\n this.callback = callback;\n mockPolyfillObservers.push(this as unknown as TestResizeObserver);\n }\n\n observe = (element: Element) => {\n this.elements.add(element);\n };\n\n unobserve = (element: Element) => {\n this.elements.delete(element);\n };\n },\n}));\n\nclass TestResizeObserver {\n readonly callback: ResizeObserverCallback;\n disconnect = jest.fn();\n elements = new Set<Element>();\n\n unobserve = jest.fn((element: Element) => {\n this.elements.delete(element);\n });\n\n constructor(callback: ResizeObserverCallback) {\n this.callback = callback;\n resizeObservers.push(this);\n }\n\n observe(element: Element) {\n this.elements.add(element);\n }\n}\n\nconst emitResize = (width: number) => {\n resizeObservers.forEach((observer) => {\n observer.elements.forEach((element) => {\n observer.callback([{contentRect: {width}, target: element} as ResizeObserverEntry]);\n });\n });\n};\n\nconst emitResizeFor = (element: Element, width: number) => {\n resizeObservers\n .filter((observer) => observer.elements.has(element))\n .forEach((observer) => {\n observer.callback([{contentRect: {width}, target: element} as ResizeObserverEntry]);\n });\n};\n\nconst emitPolyfillResizeFor = (element: Element, width: number) => {\n mockPolyfillObservers\n .filter((observer) => observer.elements.has(element))\n .forEach((observer) => {\n observer.callback([{contentRect: {width}, target: element} as ResizeObserverEntry]);\n });\n};\n\nconst gridItem = (\n <GridItem\n adjustWidgetLayout={jest.fn()}\n id=\"item\"\n item={{data: {}} as ConfigItem}\n key=\"item\"\n layout={[]}\n />\n);\n\ndescribe('Layout passive resize', () => {\n beforeEach(() => {\n resizeObservers.length = 0;\n mockPolyfillObservers.length = 0;\n global.ResizeObserver = TestResizeObserver as unknown as typeof ResizeObserver;\n });\n\n afterEach(() => {\n jest.useRealTimers();\n });\n\n test('does not render ReactGridLayout for passive container resize', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n\n const {container} = render(\n <Layout cols={12} layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]} rowHeight={100}>\n <div key=\"item\" />\n </Layout>,\n );\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResize(900);\n fireEvent.pointerDown(container.firstElementChild as HTMLElement);\n });\n\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n renderSpy.mockRestore();\n });\n\n test.each([undefined, null] as const)(\n 'uses polyfill when native ResizeObserver is %p',\n (resizeObserver) => {\n global.ResizeObserver = resizeObserver as unknown as typeof ResizeObserver;\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n\n expect(mockPolyfillObservers[0].elements.has(layout as HTMLElement)).toBe(true);\n act(() => {\n emitPolyfillResizeFor(layout as HTMLElement, 900);\n });\n\n expect(item?.style.width).toBe('213px');\n expect(item?.style.transform).toBe('translate(158px,10px)');\n },\n );\n\n test('commits only latest width after resize settles', () => {\n jest.useFakeTimers();\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResize(900);\n jest.advanceTimersByTime(100);\n emitResize(1000);\n });\n\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n act(() => {\n jest.advanceTimersByTime(149);\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n act(() => {\n jest.advanceTimersByTime(1);\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize + 1);\n expect((renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout).props.width).toBe(\n 1000,\n );\n renderSpy.mockRestore();\n });\n\n test('cancels settled width commit on unmount', () => {\n jest.useFakeTimers();\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {unmount} = render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResize(900);\n jest.advanceTimersByTime(100);\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n expect(jest.getTimerCount()).toBe(1);\n\n unmount();\n expect(jest.getTimerCount()).toBe(0);\n act(() => {\n jest.advanceTimersByTime(150);\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n renderSpy.mockRestore();\n });\n\n test('keeps distinct view item geometry after passive resize', () => {\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[\n {h: 1, i: 'first', w: 1, x: 0, y: 0},\n {h: 1, i: 'second', w: 3, x: 2, y: 0},\n ]}\n rowHeight={100}\n >\n <div key=\"first\" />\n <div key=\"second\" />\n </Layout>,\n );\n\n act(() => {\n emitResize(1000);\n });\n\n const first = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-x=\"0\"]',\n );\n const second = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-x=\"2\"]',\n );\n expect(first?.style.transform).toBe('translate(10px,10px)');\n expect(first?.style.width).toBe('73px');\n expect(second?.style.transform).toBe('translate(175px,10px)');\n expect(second?.style.width).toBe('238px');\n });\n\n test('forwards transform mode through GridItem and uses transforms by default', () => {\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n {gridItem}\n </Layout>,\n );\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n\n act(() => {\n emitResize(900);\n });\n\n expect(item?.style.width).toBe('213px');\n expect(item?.dataset.dashkitGridUseCssTransforms).toBe('true');\n expect(item?.style.transform).toBe('translate(158px,10px)');\n expect(item?.style.left).toBe('');\n expect(item?.style.top).toBe('');\n });\n\n test('switches to top and left without stale transform when CSS transforms are disabled', () => {\n const {container, rerender} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n {gridItem}\n </Layout>,\n );\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n\n act(() => {\n emitResize(900);\n });\n rerender(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n useCSSTransforms={false}\n >\n {gridItem}\n </Layout>,\n );\n act(() => {\n emitResize(1000);\n });\n\n expect(item?.dataset.dashkitGridUseCssTransforms).toBe('false');\n expect(item?.style.width).toBe('238px');\n expect(item?.style.left).toBe('175px');\n expect(item?.style.top).toBe('10px');\n expect(item?.style.transform).toBe('');\n });\n\n test('resizes only direct grid items when layouts are nested', () => {\n const {container, getByTestId} = render(\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'outer', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n <div data-testid=\"outer-item\" key=\"outer\">\n <Layout\n cols={12}\n isDraggable={false}\n isResizable={false}\n layout={[{h: 1, i: 'inner', w: 2, x: 1, y: 0}]}\n rowHeight={100}\n >\n <div data-testid=\"inner-item\" key=\"inner\" />\n </Layout>\n </div>\n </Layout>,\n );\n const layouts = container.querySelectorAll('.react-grid-layout');\n const outerItem = getByTestId('outer-item');\n const innerItem = getByTestId('inner-item');\n\n act(() => {\n emitResizeFor(layouts[1], 500);\n });\n const innerWidth = innerItem.style.width;\n const innerTransform = innerItem.style.transform;\n expect(innerWidth).toBe('72px');\n expect(innerTransform).toBe('translate(51px,10px)');\n\n act(() => {\n emitResizeFor(layouts[0], 1000);\n });\n\n expect(outerItem.style.width).toBe('238px');\n expect(innerItem.style.width).toBe(innerWidth);\n expect(innerItem.style.transform).toBe(innerTransform);\n });\n\n test('updates editable idle geometry and refreshes RGL width before interaction', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={true}\n isResizable={true}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const item = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-cols]',\n );\n\n act(() => {\n emitResize(900);\n });\n\n expect(item?.style.width).toBe('213px');\n expect(item?.style.transform).toBe('translate(158px,10px)');\n\n item?.classList.add('react-draggable-dragging');\n act(() => {\n emitResize(1000);\n });\n expect(item?.style.width).toBe('213px');\n item?.classList.remove('react-draggable-dragging');\n\n act(() => {\n fireEvent.pointerDown(item as HTMLElement);\n });\n\n const lastRenderInstance = renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout;\n expect(lastRenderInstance.props.width).toBe(1000);\n renderSpy.mockRestore();\n });\n\n test('syncs RGL width before native and shared drag-over after passive resize', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const dragStateRef = {current: {isDragging: true, sourceGroup: 'source'}};\n const widths = [900, 1000];\n const onDropDragOver = jest.fn(() => {\n const instance = renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout;\n\n expect(instance.props.width).toBe(widths[onDropDragOver.mock.calls.length - 1]);\n return {};\n });\n const {container} = render(\n <Layout\n cols={12}\n dragStateRef={dragStateRef}\n group=\"target\"\n isDroppable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n onDropDragOver={onDropDragOver}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const rendersBeforeResize = renderSpy.mock.calls.length;\n\n act(() => {\n emitResizeFor(layout as HTMLElement, 900);\n });\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeResize);\n\n act(() => {\n fireEvent.dragOver(layout as HTMLElement, {clientX: 100, clientY: 100});\n });\n\n act(() => {\n emitResizeFor(layout as HTMLElement, 1000);\n });\n const rendersBeforeSharedDragOver = renderSpy.mock.calls.length;\n\n act(() => {\n fireEvent.mouseEnter(layout as HTMLElement);\n fireEvent.mouseMove(layout as HTMLElement, {clientX: 100, clientY: 100});\n });\n\n expect(renderSpy.mock.calls.length).toBeGreaterThan(rendersBeforeSharedDragOver);\n expect(onDropDragOver).toHaveBeenCalledTimes(2);\n renderSpy.mockRestore();\n });\n\n test('refreshes the outer-item cache when the layout children change', () => {\n const {container, rerender} = render(\n <Layout\n cols={12}\n isDraggable={true}\n isResizable={true}\n layout={[{h: 1, i: 'first', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"first\" />\n </Layout>,\n );\n\n act(() => {\n emitResize(900);\n });\n rerender(\n <Layout\n cols={12}\n isDraggable={true}\n isResizable={true}\n layout={[\n {h: 1, i: 'first', w: 1, x: 0, y: 0},\n {h: 1, i: 'second', w: 2, x: 1, y: 0},\n ]}\n rowHeight={100}\n >\n <div key=\"first\" />\n <div key=\"second\" />\n </Layout>,\n );\n\n const second = container.querySelector<HTMLElement>(\n '.react-grid-item[data-dashkit-grid-x=\"1\"]',\n );\n expect(second?.style.width).toBe('138px');\n expect(second?.style.transform).toBe('translate(84px,10px)');\n });\n\n test('measures after mount, accepts a visible width after zero and disconnects observer', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container, unmount} = render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n measureBeforeMount={true}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n\n const initialRender = renderSpy.mock.instances.at(-1) as unknown as ReactGridLayout;\n expect(initialRender.props.width).toBe(0);\n act(() => {\n emitResize(900);\n });\n expect(\n container.querySelector<HTMLElement>('.react-grid-item[data-dashkit-grid-cols]')?.style\n .width,\n ).toBe('64px');\n\n unmount();\n expect(resizeObservers[0].disconnect).toHaveBeenCalledTimes(1);\n renderSpy.mockRestore();\n });\n\n test('keeps WidthProvider placeholder class names', () => {\n render(\n <Layout\n className=\"custom-layout\"\n cols={12}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n measureBeforeMount={true}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n\n expect(resizeObservers[0].unobserve.mock.calls[0][0].className).toBe(\n 'custom-layout react-grid-layout',\n );\n });\n\n test('moves observer and pointer listener from measurement placeholder to grid root', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container} = render(\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 3, x: 2, y: 0}]}\n measureBeforeMount={true}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>,\n );\n const placeholder = resizeObservers[0].unobserve.mock.calls[0][0] as HTMLElement;\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const item = container.querySelector<HTMLElement>('.react-grid-item');\n const rendersBeforeSync = renderSpy.mock.calls.length;\n const widthBeforeOldTargetDelivery = item?.style.width;\n\n expect(resizeObservers[0].elements.has(placeholder)).toBe(false);\n expect(resizeObservers[0].elements.has(layout as HTMLElement)).toBe(true);\n act(() => {\n resizeObservers[0].callback([\n {contentRect: {width: 700}, target: placeholder} as unknown as ResizeObserverEntry,\n ]);\n });\n expect(item?.style.width).toBe(widthBeforeOldTargetDelivery);\n\n act(() => {\n emitResizeFor(layout as HTMLElement, 900);\n });\n expect(item?.style.width).toBe('213px');\n\n fireEvent.pointerDown(placeholder);\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeSync);\n fireEvent.pointerDown(layout as HTMLElement);\n expect(renderSpy).toHaveBeenCalledTimes(rendersBeforeSync + 1);\n renderSpy.mockRestore();\n });\n\n test('installs and removes drag-over listeners on grid root', () => {\n const addEventListenerSpy = jest.spyOn(HTMLElement.prototype, 'addEventListener');\n const removeEventListenerSpy = jest.spyOn(HTMLElement.prototype, 'removeEventListener');\n const {container, unmount} = render(\n <Layout cols={12} layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]} rowHeight={100}>\n <div key=\"item\" />\n </Layout>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const dragEventNames = ['mouseup', 'mouseenter', 'mouseleave', 'mousemove'];\n const callsOnLayout = (spy: jest.SpyInstance) =>\n spy.mock.calls.filter(\n ([eventName], index) =>\n spy.mock.contexts[index] === layout && dragEventNames.includes(eventName),\n );\n\n expect(callsOnLayout(addEventListenerSpy)).toHaveLength(dragEventNames.length);\n\n unmount();\n\n expect(callsOnLayout(removeEventListenerSpy)).toHaveLength(dragEventNames.length);\n addEventListenerSpy.mockRestore();\n removeEventListenerSpy.mockRestore();\n });\n\n test('re-observes grid root and restores pointerdown after StrictMode remount', () => {\n const renderSpy = jest.spyOn(ReactGridLayout.prototype, 'render');\n const {container} = render(\n <React.StrictMode>\n <Layout\n cols={12}\n isDraggable={true}\n layout={[{h: 1, i: 'item', w: 1, x: 0, y: 0}]}\n rowHeight={100}\n >\n <div key=\"item\" />\n </Layout>\n </React.StrictMode>,\n );\n const layout = container.querySelector<HTMLElement>('.react-grid-layout');\n const currentObserver = resizeObservers.at(-1) as TestResizeObserver;\n\n expect(resizeObservers).toHaveLength(2);\n expect(currentObserver.elements.has(layout as HTMLElement)).toBe(true);\n act(() => {\n currentObserver.callback([\n {contentRect: {width: 900}, target: layout} as unknown as ResizeObserverEntry,\n ]);\n });\n const rendersBeforePointerDown = renderSpy.mock.calls.length;\n\n fireEvent.pointerDown(layout as HTMLElement);\n\n expect(renderSpy.mock.calls.length).toBeGreaterThan(rendersBeforePointerDown);\n renderSpy.mockRestore();\n });\n\n test('keeps unchanged GridItem child clone during another item layout update', () => {\n const renderSpy = jest.spyOn(GridItemComponent.prototype, 'render');\n const first = <GridItem {...gridItem.props} id=\"first\" key=\"first\" />;\n const second = <GridItem {...gridItem.props} id=\"second\" key=\"second\" />;\n const {container, rerender} = render(\n <Layout\n cols={12}\n layout={[\n {h: 1, i: 'first', w: 1, x: 0, y: 0},\n {h: 1, i: 'second', w: 1, x: 2, y: 0},\n ]}\n rowHeight={100}\n >\n {first}\n {second}\n </Layout>,\n );\n const secondRenders = renderSpy.mock.instances.filter(\n (instance) => instance.props.id === 'second',\n ).length;\n\n rerender(\n <Layout\n cols={12}\n layout={[\n {h: 1, i: 'first', w: 1, x: 1, y: 0},\n {h: 1, i: 'second', w: 1, x: 2, y: 0},\n ]}\n rowHeight={100}\n >\n {first}\n {second}\n </Layout>,\n );\n\n expect(\n renderSpy.mock.instances.filter((instance) => instance.props.id === 'second').length,\n ).toBe(secondRenders);\n expect(\n container.querySelector<HTMLElement>('.react-grid-item[data-dashkit-grid-x=\"1\"]'),\n ).not.toBeNull();\n renderSpy.mockRestore();\n });\n});\n"]}
@@ -2,7 +2,7 @@ import React from 'react';
2
2
  import type { DraggedOverItem, ItemDragProps } from "../shared/types/index.js";
3
3
  export type DashKitDnDCtxShape = {
4
4
  dragProps: ItemDragProps | null;
5
- dragImagePreview: HTMLImageElement;
5
+ dragImagePreview: HTMLImageElement | null;
6
6
  onDragStart: (e: React.DragEvent<Element>, itemDragProps: ItemDragProps) => void;
7
7
  onDragEnd: (e: React.DragEvent<Element>) => void;
8
8
  onDropDragOver?: (draggedItem: DraggedOverItem, sharedItem: DraggedOverItem | null) => void | boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"DashKitDnDContext.js","sourceRoot":"../../../src","sources":["context/DashKitDnDContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAA4B,SAAS,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport type {DraggedOverItem, ItemDragProps} from '../shared/types';\n\nexport type DashKitDnDCtxShape = {\n dragProps: ItemDragProps | null;\n dragImagePreview: HTMLImageElement;\n onDragStart: (e: React.DragEvent<Element>, itemDragProps: ItemDragProps) => void;\n onDragEnd: (e: React.DragEvent<Element>) => void;\n onDropDragOver?: (\n draggedItem: DraggedOverItem,\n sharedItem: DraggedOverItem | null,\n ) => void | boolean;\n};\n\nexport const DashKitDnDContext = React.createContext<DashKitDnDCtxShape | void>(undefined);\n"]}
1
+ {"version":3,"file":"DashKitDnDContext.js","sourceRoot":"../../../src","sources":["context/DashKitDnDContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAe1B,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAA4B,SAAS,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport type {DraggedOverItem, ItemDragProps} from '../shared/types';\n\nexport type DashKitDnDCtxShape = {\n dragProps: ItemDragProps | null;\n dragImagePreview: HTMLImageElement | null;\n onDragStart: (e: React.DragEvent<Element>, itemDragProps: ItemDragProps) => void;\n onDragEnd: (e: React.DragEvent<Element>) => void;\n onDropDragOver?: (\n draggedItem: DraggedOverItem,\n sharedItem: DraggedOverItem | null,\n ) => void | boolean;\n};\n\nexport const DashKitDnDContext = React.createContext<DashKitDnDCtxShape | void>(undefined);\n"]}
@@ -0,0 +1,2 @@
1
+ /** @jest-environment jsdom */
2
+ export {};
@@ -0,0 +1,42 @@
1
+ /** @jest-environment jsdom */
2
+ import React from 'react';
3
+ import { act, fireEvent, render, screen } from '@testing-library/react';
4
+ import { ActionPanel } from "../../components/ActionPanel/ActionPanel.js";
5
+ import { DashKitDnDWrapper } from "../../components/DashKitDnDWrapper/DashKitDnDWrapper.js";
6
+ const item = { id: 'chart', title: 'Chart', icon: 'icon', dragProps: { type: 'chart' } };
7
+ describe('ActionPanel drag preview', () => {
8
+ it('captures the solid item before disabling the panel source and restores it on drag end', () => {
9
+ jest.useFakeTimers();
10
+ const onDragStart = jest.fn();
11
+ const onDragEnd = jest.fn();
12
+ const setDragImage = jest.fn();
13
+ render(React.createElement(DashKitDnDWrapper, { onDragStart: onDragStart, onDragEnd: onDragEnd },
14
+ React.createElement(ActionPanel, { items: [item] })));
15
+ const source = screen.getByRole('button', { name: /Chart/ });
16
+ const disabledSourceClassName = 'dashkit-action-panel__item_dragging-source-disabled';
17
+ setDragImage.mockImplementation(() => {
18
+ expect(source.classList.contains('dashkit-action-panel__item_dragging')).toBe(true);
19
+ expect(source.classList.contains(disabledSourceClassName)).toBe(false);
20
+ });
21
+ fireEvent.dragStart(source, { dataTransfer: { setDragImage } });
22
+ expect(setDragImage).toHaveBeenCalledWith(source, 0, 0);
23
+ expect(onDragStart).toHaveBeenCalledWith(item.dragProps);
24
+ act(() => jest.runOnlyPendingTimers());
25
+ expect(source.classList.contains(disabledSourceClassName)).toBe(true);
26
+ fireEvent.dragEnd(source);
27
+ expect(source.classList.contains('dashkit-action-panel__item_dragging')).toBe(false);
28
+ expect(source.classList.contains(disabledSourceClassName)).toBe(false);
29
+ expect(onDragEnd).toHaveBeenCalledTimes(1);
30
+ jest.useRealTimers();
31
+ });
32
+ it('respects a custom drag image', () => {
33
+ const setDragImage = jest.fn();
34
+ render(React.createElement(DashKitDnDWrapper, { dragImageSrc: "data:image/png;base64,AAAA" },
35
+ React.createElement(ActionPanel, { items: [item] })));
36
+ fireEvent.dragStart(screen.getByRole('button', { name: /Chart/ }), {
37
+ dataTransfer: { setDragImage },
38
+ });
39
+ expect(setDragImage.mock.calls[0][0]).toBeInstanceOf(HTMLImageElement);
40
+ });
41
+ });
42
+ //# sourceMappingURL=useDnDItemProps.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDnDItemProps.test.js","sourceRoot":"../../../../src","sources":["hooks/__tests__/useDnDItemProps.test.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jest-environment jsdom */\n\nimport React from 'react';\n\nimport {act, fireEvent, render, screen} from '@testing-library/react';\n\nimport {ActionPanel} from '../../components/ActionPanel/ActionPanel';\nimport {DashKitDnDWrapper} from '../../components/DashKitDnDWrapper/DashKitDnDWrapper';\n\nconst item = {id: 'chart', title: 'Chart', icon: 'icon', dragProps: {type: 'chart'}};\n\ndescribe('ActionPanel drag preview', () => {\n it('captures the solid item before disabling the panel source and restores it on drag end', () => {\n jest.useFakeTimers();\n const onDragStart = jest.fn();\n const onDragEnd = jest.fn();\n const setDragImage = jest.fn();\n\n render(\n <DashKitDnDWrapper onDragStart={onDragStart} onDragEnd={onDragEnd}>\n <ActionPanel items={[item]} />\n </DashKitDnDWrapper>,\n );\n const source = screen.getByRole('button', {name: /Chart/});\n const disabledSourceClassName = 'dashkit-action-panel__item_dragging-source-disabled';\n\n setDragImage.mockImplementation(() => {\n expect(source.classList.contains('dashkit-action-panel__item_dragging')).toBe(true);\n expect(source.classList.contains(disabledSourceClassName)).toBe(false);\n });\n fireEvent.dragStart(source, {dataTransfer: {setDragImage}});\n expect(setDragImage).toHaveBeenCalledWith(source, 0, 0);\n expect(onDragStart).toHaveBeenCalledWith(item.dragProps);\n act(() => jest.runOnlyPendingTimers());\n expect(source.classList.contains(disabledSourceClassName)).toBe(true);\n\n fireEvent.dragEnd(source);\n expect(source.classList.contains('dashkit-action-panel__item_dragging')).toBe(false);\n expect(source.classList.contains(disabledSourceClassName)).toBe(false);\n expect(onDragEnd).toHaveBeenCalledTimes(1);\n jest.useRealTimers();\n });\n\n it('respects a custom drag image', () => {\n const setDragImage = jest.fn();\n render(\n <DashKitDnDWrapper dragImageSrc=\"data:image/png;base64,AAAA\">\n <ActionPanel items={[item]} />\n </DashKitDnDWrapper>,\n );\n\n fireEvent.dragStart(screen.getByRole('button', {name: /Chart/}), {\n dataTransfer: {setDragImage},\n });\n expect(setDragImage.mock.calls[0][0]).toBeInstanceOf(HTMLImageElement);\n });\n});\n"]}
@@ -5,7 +5,7 @@ export const useDnDItemProps = (item) => {
5
5
  const onDragStart = React.useCallback((e) => {
6
6
  if (dragContext && item.dragProps) {
7
7
  dragContext.onDragStart(e, item.dragProps);
8
- e.dataTransfer.setDragImage(dragContext.dragImagePreview, 0, 0);
8
+ e.dataTransfer.setDragImage(dragContext.dragImagePreview || e.currentTarget, 0, 0);
9
9
  }
10
10
  }, [dragContext, item.dragProps]);
11
11
  const onDragEnd = React.useCallback((e) => {
@@ -1 +1 @@
1
- {"version":3,"file":"useDnDItemProps.js","sourceRoot":"../../../src","sources":["hooks/useDnDItemProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,iBAAiB,EAAC,4BAAmB;AAS7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAqB,EAAY,EAAE;IAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,CAAkB,EAAE,EAAE;QACnB,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACpE,CAAC;IACL,CAAC,EACD,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAChC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAC/B,CAAC,CAAC,EAAE,EAAE;QACF,IAAI,WAAW,EAAE,CAAC;YACd,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC,EACD,CAAC,WAAW,CAAC,CAChB,CAAC;IAEF,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO;YACH,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;YAClB,WAAW;YACX,SAAS;SACZ,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport {ActionPanelItem} from '../components';\nimport {DashKitDnDContext} from '../context';\n\ntype DndProps = null | {\n draggable: true;\n unselectable: 'on';\n onDragStart: React.DragEventHandler<HTMLDivElement>;\n onDragEnd: React.DragEventHandler<HTMLDivElement>;\n};\n\nexport const useDnDItemProps = (item: ActionPanelItem): DndProps => {\n const dragContext = React.useContext(DashKitDnDContext);\n\n const onDragStart = React.useCallback(\n (e: React.DragEvent) => {\n if (dragContext && item.dragProps) {\n dragContext.onDragStart(e, item.dragProps);\n e.dataTransfer.setDragImage(dragContext.dragImagePreview, 0, 0);\n }\n },\n [dragContext, item.dragProps],\n );\n\n const onDragEnd = React.useCallback<React.DragEventHandler<HTMLDivElement>>(\n (e) => {\n if (dragContext) {\n dragContext.onDragEnd(e);\n }\n },\n [dragContext],\n );\n\n if (dragContext && item.dragProps) {\n return {\n draggable: true,\n unselectable: 'on',\n onDragStart,\n onDragEnd,\n };\n }\n\n return null;\n};\n"]}
1
+ {"version":3,"file":"useDnDItemProps.js","sourceRoot":"../../../src","sources":["hooks/useDnDItemProps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAC,iBAAiB,EAAC,4BAAmB;AAS7C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAqB,EAAY,EAAE;IAC/D,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAExD,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CACjC,CAAC,CAAkB,EAAE,EAAE;QACnB,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,WAAW,CAAC,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,CAAC,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC,gBAAgB,IAAI,CAAC,CAAC,aAAa,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,CAAC;IACL,CAAC,EACD,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAChC,CAAC;IAEF,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAC/B,CAAC,CAAC,EAAE,EAAE;QACF,IAAI,WAAW,EAAE,CAAC;YACd,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC,EACD,CAAC,WAAW,CAAC,CAChB,CAAC;IAEF,IAAI,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QAChC,OAAO;YACH,SAAS,EAAE,IAAI;YACf,YAAY,EAAE,IAAI;YAClB,WAAW;YACX,SAAS;SACZ,CAAC;IACN,CAAC;IAED,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC","sourcesContent":["import React from 'react';\n\nimport {ActionPanelItem} from '../components';\nimport {DashKitDnDContext} from '../context';\n\ntype DndProps = null | {\n draggable: true;\n unselectable: 'on';\n onDragStart: React.DragEventHandler<HTMLDivElement>;\n onDragEnd: React.DragEventHandler<HTMLDivElement>;\n};\n\nexport const useDnDItemProps = (item: ActionPanelItem): DndProps => {\n const dragContext = React.useContext(DashKitDnDContext);\n\n const onDragStart = React.useCallback(\n (e: React.DragEvent) => {\n if (dragContext && item.dragProps) {\n dragContext.onDragStart(e, item.dragProps);\n e.dataTransfer.setDragImage(dragContext.dragImagePreview || e.currentTarget, 0, 0);\n }\n },\n [dragContext, item.dragProps],\n );\n\n const onDragEnd = React.useCallback<React.DragEventHandler<HTMLDivElement>>(\n (e) => {\n if (dragContext) {\n dragContext.onDragEnd(e);\n }\n },\n [dragContext],\n );\n\n if (dragContext && item.dragProps) {\n return {\n draggable: true,\n unselectable: 'on',\n onDragStart,\n onDragEnd,\n };\n }\n\n return null;\n};\n"]}
@@ -1 +1 @@
1
- {"version":"10.4.3","type":"module","sideEffects":["*.scss","*.css"]}
1
+ {"version":"10.5.0","type":"module","sideEffects":["*.scss","*.css"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/dashkit",
3
- "version": "10.4.3",
3
+ "version": "10.5.0",
4
4
  "description": "Library for rendering dashboard grid layout",
5
5
  "license": "MIT",
6
6
  "repository": {