docbrown/app/javascript/packs/articleForm.jsx
Ben Halpern ec7adf56fe
Allow admins to set cover image height configs (#19936)
* Initial basic work

* Bulk of related work, including find/replace on the inputs

* Adjust some tests

* Adjust some specs

* Fix a few more tests

* Clean up tests

* Adjust tests

* Test fiddle

* Adjust crop back to be a param

* Update tests

* Set proper defaults

* Fix some styling

* Adjust enrichment logic and tests

* Adjust form JS

* Update test snapshot

* Clean up formatting

* Fix spec name

* Adjust some css and defaults

* Adjust translation for image provider options

* Switch from fill to fill-down

* Proper fallback image

* Fix tests

* Update app/services/images/optimizer.rb

Co-authored-by: Mac Siri <mac@forem.com>

---------

Co-authored-by: Mac Siri <mac@forem.com>
2023-08-21 13:25:16 -04:00

52 lines
1.5 KiB
JavaScript

import { h, render } from 'preact';
import { ArticleForm } from '../article-form/articleForm';
import { Snackbar } from '../Snackbar';
import { createRootFragment } from '../shared/preact/preact-root-fragment';
import { getUserDataAndCsrfToken } from '@utilities/getUserDataAndCsrfToken';
HTMLDocument.prototype.ready = new Promise((resolve) => {
if (document.readyState !== 'loading') {
return resolve();
}
document.addEventListener('DOMContentLoaded', () => resolve());
return null;
});
function loadForm() {
// The Snackbar for the article page
const snackZone = document.getElementById('snack-zone');
if (snackZone) {
render(<Snackbar lifespan={3} />, snackZone);
}
getUserDataAndCsrfToken().then(({ currentUser, csrfToken }) => {
window.currentUser = currentUser;
window.csrfToken = csrfToken;
const root = document.querySelector('main');
const { article, organizations, version, siteLogo, schedulingEnabled, coverImageHeight, coverImageCrop } =
root.dataset;
render(
<ArticleForm
article={article}
organizations={organizations}
version={version}
siteLogo={siteLogo}
coverImageHeight={coverImageHeight}
coverImageCrop={coverImageCrop}
schedulingEnabled={schedulingEnabled == 'true'}
/>,
createRootFragment(root, root.firstElementChild),
);
});
}
document.ready.then(() => {
loadForm();
window.InstantClick.on('change', () => {
if (document.getElementById('article-form')) {
loadForm();
}
});
});