diff --git a/.eslintrc.yaml b/.eslintrc.yaml index bf0390dc3f..4e3da6cab4 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -33,6 +33,7 @@ overrides: - files: ["web_src/**/*"] globals: __webpack_public_path__: true + htmx: true process: false # https://github.com/webpack/webpack/issues/15833 - files: ["web_src/**/*", "docs/**/*"] env: diff --git a/package-lock.json b/package-lock.json index 60d970dcfc..2f7a200ed2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,7 +29,7 @@ "esbuild-loader": "4.2.0", "escape-goat": "4.0.0", "fast-glob": "3.3.2", - "htmx.org": "1.9.12", + "htmx.org": "2.0.0", "idiomorph": "0.3.0", "jquery": "3.7.1", "katex": "0.16.10", @@ -6891,9 +6891,9 @@ } }, "node_modules/htmx.org": { - "version": "1.9.12", - "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-1.9.12.tgz", - "integrity": "sha512-VZAohXyF7xPGS52IM8d1T1283y+X4D+Owf3qY1NZ9RuBypyu9l8cGsxUMAG5fEAb/DhT7rDoJ9Hpu5/HxFD3cw==" + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/htmx.org/-/htmx.org-2.0.0.tgz", + "integrity": "sha512-N0r1VjrqeCpig0mTi2/sooDZBeQlp1RBohnWQ/ufqc7ICaI0yjs04fNGhawm6+/HWhJFlcXn8MqOjWI9QGG2lQ==" }, "node_modules/human-signals": { "version": "5.0.0", diff --git a/package.json b/package.json index fa2145f1fa..2efebb8df8 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "esbuild-loader": "4.2.0", "escape-goat": "4.0.0", "fast-glob": "3.3.2", - "htmx.org": "1.9.12", + "htmx.org": "2.0.0", "idiomorph": "0.3.0", "jquery": "3.7.1", "katex": "0.16.10", diff --git a/web_src/js/features/common-global.js b/web_src/js/features/common-global.js index 1ab2a55699..34992c1f5b 100644 --- a/web_src/js/features/common-global.js +++ b/web_src/js/features/common-global.js @@ -11,7 +11,6 @@ import {showTemporaryTooltip} from '../modules/tippy.js'; import {confirmModal} from './comp/ConfirmModal.js'; import {showErrorToast} from '../modules/toast.js'; import {request, POST, GET} from '../modules/fetch.js'; -import '../htmx.js'; const {appUrl, appSubUrl, csrfToken, i18n} = window.config; diff --git a/web_src/js/globals.js b/web_src/js/globals.js new file mode 100644 index 0000000000..24974da90e --- /dev/null +++ b/web_src/js/globals.js @@ -0,0 +1,5 @@ +import jquery from 'jquery'; +import htmx from 'htmx.org/dist/htmx.esm.js'; + +window.$ = window.jQuery = jquery; +window.htmx = htmx; diff --git a/web_src/js/htmx.js b/web_src/js/htmx.js index 5ca3018308..6169d2f82f 100644 --- a/web_src/js/htmx.js +++ b/web_src/js/htmx.js @@ -1,4 +1,3 @@ -import * as htmx from 'htmx.org'; import {showErrorToast} from './modules/toast.js'; // https://github.com/bigskysoftware/idiomorph#htmx diff --git a/web_src/js/index.js b/web_src/js/index.js index 12cd0ee15a..99352727dd 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -1,5 +1,6 @@ // bootstrap module must be the first one to be imported, it handles webpack lazy-loading and global errors import './bootstrap.js'; +import './htmx.js'; import {initRepoActivityTopAuthorsChart} from './components/RepoActivityTopAuthors.vue'; import {initScopedAccessTokenCategories} from './components/ScopedAccessTokenSelector.vue'; diff --git a/web_src/js/jquery.js b/web_src/js/jquery.js deleted file mode 100644 index 6b2199896c..0000000000 --- a/web_src/js/jquery.js +++ /dev/null @@ -1,3 +0,0 @@ -import $ from 'jquery'; - -window.$ = window.jQuery = $; // eslint-disable-line no-jquery/variable-pattern diff --git a/webpack.config.js b/webpack.config.js index fdf80a5313..80703c7448 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -76,7 +76,7 @@ export default { mode: isProduction ? 'production' : 'development', entry: { index: [ - fileURLToPath(new URL('web_src/js/jquery.js', import.meta.url)), + fileURLToPath(new URL('web_src/js/globals.js', import.meta.url)), fileURLToPath(new URL('web_src/fomantic/build/semantic.js', import.meta.url)), fileURLToPath(new URL('web_src/js/index.js', import.meta.url)), fileURLToPath(new URL('node_modules/easymde/dist/easymde.min.css', import.meta.url)), @@ -195,9 +195,6 @@ export default { ], }, plugins: [ - new webpack.ProvidePlugin({ // for htmx extensions - htmx: 'htmx.org', - }), new DefinePlugin({ __VUE_OPTIONS_API__: true, // at the moment, many Vue components still use the Vue Options API __VUE_PROD_DEVTOOLS__: false, // do not enable devtools support in production