Skip to content

Commit 99c7dbc

Browse files
authored
Merge pull request #317 from cloud-gov/remove-inline-css-field-array
chore: remove inline css
2 parents 6cd2ba8 + 06478a0 commit 99c7dbc

23 files changed

Lines changed: 3152 additions & 1 deletion

File tree

package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,9 @@
134134
"js-cookie": "3.0.7",
135135
"postcss": "^8.5.15",
136136
"esbuild": "0.28.0",
137-
"@eslint/plugin-kit": "^0.3.4"
137+
"@eslint/plugin-kit": "^0.3.4",
138+
"@img/sharp-linux-x64": "0.34.5",
139+
"@img/sharp-libvips-linux-x64": "1.2.4"
138140
},
139141
"optionalDependencies": {
140142
"@esbuild/darwin-arm64": "^0.25.2",

src/app/(payload)/admin/importMap.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ import { FixedToolbarFeatureClient as FixedToolbarFeatureClient_e70f5e05f09f93e0
2828
import { SlugComponent as SlugComponent_92cc057d0a2abb4f6cf0307edf59f986 } from '@/fields/slug/SlugComponent'
2929
import { default as default_ad353b06f24a8b84aa5b713b301b2c62 } from 'src/components/UpdatedByCellData/'
3030
import { RelationshipField as RelationshipField_25000ababc07f3d3a330f7afaf35f496 } from '@/components/fields/RelationshipField'
31+
import { FileUploadField as FileUploadField_89975e5460f876d1cd61ed8c059aae35 } from '@/components/FileUploadField'
32+
import { FilesField as FilesField_38e938fec57b6cbc3acc8934574dc824 } from '@/components/FilesField'
3133
import { UswdsColorSelect as UswdsColorSelect_c5ee67a32f6c03c5e346f5f1b5ad0635 } from '@/fields/styles/UswdsColorSelect'
3234
import { default as default_9c394c8955c2623071876ecbca9cadca } from '@/components/PreFooter/ContactCenterRowLabel'
3335
import { default as default_8bfd6f3f91a8dc4d92146132e8cad3de } from '@/components/PreFooter/FacebookLinkRowLabel'
@@ -86,6 +88,8 @@ export const importMap = {
8688
"@/fields/slug/SlugComponent#SlugComponent": SlugComponent_92cc057d0a2abb4f6cf0307edf59f986,
8789
"src/components/UpdatedByCellData/#default": default_ad353b06f24a8b84aa5b713b301b2c62,
8890
"@/components/fields/RelationshipField#RelationshipField": RelationshipField_25000ababc07f3d3a330f7afaf35f496,
91+
"@/components/FileUploadField#FileUploadField": FileUploadField_89975e5460f876d1cd61ed8c059aae35,
92+
"@/components/FilesField#FilesField": FilesField_38e938fec57b6cbc3acc8934574dc824,
8993
"@/fields/styles/UswdsColorSelect#UswdsColorSelect": UswdsColorSelect_c5ee67a32f6c03c5e346f5f1b5ad0635,
9094
"@/components/PreFooter/ContactCenterRowLabel#default": default_9c394c8955c2623071876ecbca9cadca,
9195
"@/components/PreFooter/FacebookLinkRowLabel#default": default_8bfd6f3f91a8dc4d92146132e8cad3de,
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
.files-draggable {
2+
display: flex;
3+
flex-direction: column;
4+
gap: calc(var(--base) / 2);
5+
6+
&__item {
7+
position: relative;
8+
9+
&--is-dragging {
10+
z-index: 2;
11+
cursor: grabbing;
12+
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
13+
}
14+
}
15+
}
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
import { describe, it, expect, vi } from 'vitest'
2+
import { render, screen, within } from '@testing-library/react'
3+
4+
import { DragDropCustomList, DragDropCustomItem } from './index'
5+
6+
const renderList = (ids: string[], onDragEnd = vi.fn()) =>
7+
render(
8+
<DragDropCustomList ids={ids} onDragEnd={onDragEnd}>
9+
{ids.map((id) => (
10+
<DragDropCustomItem id={id} key={id}>
11+
{({ attributes, isDragging, listeners }) => (
12+
<div
13+
data-dragging={isDragging}
14+
data-testid={`item-${id}`}
15+
{...attributes}
16+
{...listeners}
17+
>
18+
{id}
19+
</div>
20+
)}
21+
</DragDropCustomItem>
22+
))}
23+
</DragDropCustomList>,
24+
)
25+
26+
describe('DragDropCustom', () => {
27+
it('renders the list wrapper and all items', () => {
28+
const { container } = renderList(['a', 'b', 'c'])
29+
30+
expect(container.querySelector('.files-draggable')).toBeInTheDocument()
31+
expect(screen.getByTestId('item-a')).toHaveTextContent('a')
32+
expect(screen.getByTestId('item-b')).toHaveTextContent('b')
33+
expect(screen.getByTestId('item-c')).toHaveTextContent('c')
34+
})
35+
36+
it('wraps each child in a draggable item element', () => {
37+
const { container } = renderList(['a', 'b'])
38+
39+
const items = container.querySelectorAll('.files-draggable__item')
40+
expect(items).toHaveLength(2)
41+
})
42+
43+
it('exposes a render-prop API with attributes, isDragging and listeners', () => {
44+
const child = vi.fn((_props: unknown) => <div data-testid="rp">x</div>)
45+
46+
render(
47+
<DragDropCustomList ids={['only']} onDragEnd={vi.fn()}>
48+
<DragDropCustomItem id="only">{child}</DragDropCustomItem>
49+
</DragDropCustomList>,
50+
)
51+
52+
expect(child).toHaveBeenCalled()
53+
const args = child.mock.calls[0]![0] as {
54+
attributes: Record<string, unknown>
55+
isDragging: boolean
56+
listeners: { onPointerDown?: unknown }
57+
}
58+
expect(args).toHaveProperty('attributes')
59+
expect(args.isDragging).toBe(false)
60+
expect(typeof args.listeners.onPointerDown).toBe('function')
61+
})
62+
63+
it('starts each item in a non-dragging state', () => {
64+
renderList(['a', 'b'])
65+
expect(screen.getByTestId('item-a')).toHaveAttribute('data-dragging', 'false')
66+
expect(screen.getByTestId('item-b')).toHaveAttribute('data-dragging', 'false')
67+
})
68+
69+
it('renders a list wrapper for an empty set of ids', () => {
70+
const { container } = render(
71+
<DragDropCustomList ids={[]} onDragEnd={vi.fn()}>
72+
{null}
73+
</DragDropCustomList>,
74+
)
75+
const list = container.querySelector('.files-draggable')
76+
expect(list).toBeInTheDocument()
77+
expect(within(list as HTMLElement).queryByTestId(/item-/)).toBeNull()
78+
})
79+
})

0 commit comments

Comments
 (0)