Skip to content

Commit 9390f2a

Browse files
committed
♻️ Refactor Bootstrap to ES module import and fix related bugs
1 parent 2738c84 commit 9390f2a

5 files changed

Lines changed: 20 additions & 18 deletions

File tree

.eslintrc.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,5 @@
3030
],
3131
"no-unused-vars": "warn",
3232
"no-console": "off"
33-
},
34-
"globals": {
35-
"bootstrap": "readonly"
3633
}
3734
}

config.html

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,7 @@
77
<meta name="viewport" content="width=device-width, initial-scale=1.0">
88

99
<link rel="icon" href="img/android-launchericon-72-72.png" type="image/png">
10-
11-
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
1210
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
13-
1411
<link href="/css/config.css" rel="stylesheet">
1512

1613
<!-- i18n初期化スクリプト(同期実行でDOM構築前に翻訳) -->

index.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
<meta property="og:description" content="Time-stamped work notes PWA">
1818
<meta property="og:image" content="https://fast-logbook.netlify.app/img/android-launchericon-512-512.png">
1919

20-
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
2120
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
2221
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.1/font/bootstrap-icons.css">
2322

js/config.js

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,6 @@ document.addEventListener('DOMContentLoaded', async () => {
99
// Set the theme automatically
1010
autoSetTheme();
1111

12-
// 翻訳はi18n-init.jsで既に完了しているため、ここでは不要
13-
// Multilingualization.translateAll();
14-
1512
// Get the version number from manifest.json.
1613
fetch('/manifest.json')
1714
.then(response => response.json())
@@ -26,7 +23,13 @@ document.addEventListener('DOMContentLoaded', async () => {
2623

2724
// Save the input when focus is removed or changed
2825
node.addEventListener('change', e => {
29-
localStorage.setItem(e.target.dataset.translate, e.target.value.trim());
26+
try {
27+
localStorage.setItem(e.target.dataset.translate, e.target.value.trim());
28+
} catch (e) {
29+
if (e.name === 'QuotaExceededError') {
30+
alert('ストレージ容量が不足しています');
31+
}
32+
}
3033
});
3134
});
3235

@@ -35,15 +38,14 @@ document.addEventListener('DOMContentLoaded', async () => {
3538
$$one('select').value = getRoundingUnit(min);
3639

3740
// Save the value when the rounding unit is changed
38-
$$one('select').addEventListener('change', () => {
39-
localStorage.setItem(ROUNDING_UNIT_MINUTE_KEY, this.value);
41+
$$one('select').addEventListener('change', e => {
42+
localStorage.setItem(ROUNDING_UNIT_MINUTE_KEY, e.target.value);
4043
});
4144

4245
// Synchronize when the setting changes
4346
window.addEventListener('storage', (event) => {
44-
const $ = bootstrap.$;
4547
if (event.storageArea === localStorage) {
46-
const target = event.key === ROUNDING_UNIT_MINUTE_KEY ? $('select') : $(`[data-translate='${event.key}']`);
48+
const target = event.key === ROUNDING_UNIT_MINUTE_KEY ? $$one('select') : $$one(`[data-translate='${event.key}']`);
4749
if (target) {
4850
target.value = event.newValue;
4951
}

js/main.js

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import { $$one, $$all, $$disableConsole } from './lib/indolence.min.js';
22
import { LOG_DATA_KEY, ROUNDING_UNIT_MINUTE_KEY, trimNewLine, appendTime, installPWA, autoSetTheme } from './lib/utils.js';
33
import Multilingualization from './lib/multilingualization.js';
44
import { downloadLog, generateFormattedLog } from './lib/download.js';
5+
import * as bootstrap from 'https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js';
56

67
/**
78
* Add one log entry
@@ -41,7 +42,13 @@ async function loadLogs() {
4142
* @return {Promise}
4243
*/
4344
function saveLogs() {
44-
localStorage.setItem(LOG_DATA_KEY, trimNewLine($$one('textarea').value));
45+
try {
46+
localStorage.setItem(LOG_DATA_KEY, trimNewLine($$one('textarea').value));
47+
} catch (e) {
48+
if (e.name === 'QuotaExceededError') {
49+
alert('ストレージ容量が不足しています');
50+
}
51+
}
4552
$$one('.navbar-save-status').classList.toggle('saved', true);
4653
}
4754

@@ -131,7 +138,7 @@ document.addEventListener('DOMContentLoaded', async () => {
131138
// When input to the 0th element is confirmed, stamp the entered log for PC
132139
$$one('input').addEventListener('keydown', async e => {
133140
// Ignore events processed by IME
134-
if ('Enter' === e.key && (e.keyCode === 229 || !e.isComposing)) {
141+
if (!e.isComposing && e.keyCode !== 229) {
135142
processInput(e.target);
136143
}
137144
});
@@ -144,7 +151,7 @@ document.addEventListener('DOMContentLoaded', async () => {
144151
$$one('textarea').addEventListener('keydown', async e => {
145152
if ('Enter' == e.code) {
146153
// Ignore events processed by IME
147-
if (e.isComposing || e.keyCode === 229) {
154+
if (!e.isComposing && e.keyCode !== 229) {
148155
return;
149156
}
150157
await saveLogs();

0 commit comments

Comments
 (0)