Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Checkbox display issue with CSP enabled #102

Closed
vhscom opened this issue Feb 9, 2022 · 2 comments
Closed

Checkbox display issue with CSP enabled #102

vhscom opened this issue Feb 9, 2022 · 2 comments

Comments

@vhscom
Copy link

vhscom commented Feb 9, 2022

What version of @tailwindcss/forms are you using?

v0.4.0

What version of Node.js are you using?

v17.3.0

What browser are you using?

Ungoogled Chromium

What operating system are you using?

Arch Linux

Reproduction repository

https://github.com/vhscom/repro-tailwind-forms-checkbox-issue

Describe your issue

Dependent on CSP settings checkboxes do not display correctly due to use of data scheme.

Here's what the checkbox looks like with strict CSP enabled:

repro

Issue occurs because tailwindcss-forms checkbox uses a base64-encoded SVG background image. To validate this is the case simply build the repro with pnpm i && pnpm dev -- --open then open svelte.config.js and remove the CSP setting (browser will auto-reload showing the checkbox).

Is it possible to add a fallback experience for apps blocking unsafe evaluation of data attributes?

@vhscom
Copy link
Author

vhscom commented Feb 9, 2022

I found a reasonable workaround for the display issue which is to save the SVG graphic to a file and add a style rule to use the image as the background (allowed under strict CSP) as opposed to attempting to inline a data uri . Doing so causes the browser to skip attempting to use data:.

@vhscom vhscom closed this as completed Feb 9, 2022
@theonelucas
Copy link

I found a reasonable workaround for the display issue which is to save the SVG graphic to a file and add a style rule to use the image as the background (allowed under strict CSP) as opposed to attempting to inline a data uri . Doing so causes the browser to skip attempting to use data:.

The SVG file:

<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='white'><path d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z' /></svg>

The rule:

.form-checkbox:checked {
    background-image: url("/site/assets/icons/checkbox.svg");
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants