diff --git a/package.json b/package.json index aa516ad80..d2128633d 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "@sentry/tracing": "6.15.0", "@sentry/vue": "6.15.0", "@vue/compat": "3.2.22", - "@vueuse/core": "7.0.1", + "@vueuse/core": "7.0.3", "bulma-css-variables": "0.9.33", "camel-case": "4.1.2", "codemirror": "5.64.0", diff --git a/src/i18n/lang/vi-VN.json b/src/i18n/lang/vi-VN.json index 7bba63001..d86cc155d 100644 --- a/src/i18n/lang/vi-VN.json +++ b/src/i18n/lang/vi-VN.json @@ -114,12 +114,12 @@ "vikunja": "Vikunja" }, "appearance": { - "title": "Color Scheme", - "setSuccess": "Saved change of color scheme to {colorScheme}", + "title": "Phối màu", + "setSuccess": "Đã lưu phối màu vào {colorScheme}", "colorScheme": { - "light": "Light", - "system": "System", - "dark": "Dark" + "light": "Sáng", + "system": "Hệ thống", + "dark": "Tối" } } }, @@ -556,7 +556,7 @@ "text2": "Thao tác này cũng sẽ xóa tất cả tệp đính kèm, lời nhắc và liên kết đến công việc này. Nó không thể hoàn tác!" }, "actions": { - "assign": "Assign to a user", + "assign": "Chỉ định một người", "label": "Thêm nhãn", "priority": "Mức độ ưu tiên", "dueDate": "Đặt ngày đến hạn", @@ -775,7 +775,7 @@ "task": { "title": "Trang công việc", "done": "Đánh dấu hoàn thành", - "assign": "Assign to a user", + "assign": "Chỉ định một người", "labels": "Thêm nhãn cho công việc này", "dueDate": "Thay đổi ngày hết hạn của công việc này", "attachment": "Thêm tệp đính kèm cho công việc này", diff --git a/src/styles/custom-properties/colors.scss b/src/styles/custom-properties/colors.scss index 3b23f3eed..2fc3ba0d0 100644 --- a/src/styles/custom-properties/colors.scss +++ b/src/styles/custom-properties/colors.scss @@ -79,6 +79,8 @@ --link: var(--primary); --link-hover: hsla(var(--primary-h), var(--primary-s), var(--primary-l), .75); --border: var(--grey-200); + --input-disabled-background-color: var(--grey-100); + --input-disabled-border-color: var(--grey-300); &.dark { // Light mode colours reversed for dark mode diff --git a/src/styles/theme/_index.scss b/src/styles/theme/_index.scss index 2c1a5b44b..ef071916d 100644 --- a/src/styles/theme/_index.scss +++ b/src/styles/theme/_index.scss @@ -7,4 +7,5 @@ @import "form"; @import "link-share"; @import "loading"; -@import "notification"; \ No newline at end of file +@import "notification"; +@import "flatpickr"; \ No newline at end of file diff --git a/src/styles/theme/flatpickr.scss b/src/styles/theme/flatpickr.scss new file mode 100644 index 000000000..1a21ca1f9 --- /dev/null +++ b/src/styles/theme/flatpickr.scss @@ -0,0 +1,221 @@ +// Flatpickr overrides to use css custom properties and enable styling it + +.flatpickr-calendar { + background: var(--white); + box-shadow: 1px 0 0 var(--grey-200), -1px 0 0 var(--grey-200), 0 1px 0 var(--grey-200), 0 -1px 0 var(--grey-200), 0 3px 13px rgba(0, 0, 0, 0.08); +} + +.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) { + box-shadow: -2px 0 0 var(--grey-200), 5px 0 0 var(--grey-200); +} + +.flatpickr-calendar.hasTime .flatpickr-time { + border-top: 1px solid var(--grey-200); +} + +.flatpickr-calendar.arrowTop:before { + border-bottom-color: var(--grey-200); +} + +.flatpickr-calendar.arrowTop:after { + border-bottom-color: var(--white); +} + +.flatpickr-calendar.arrowBottom:before { + border-top-color: var(--grey-200); +} + +.flatpickr-calendar.arrowBottom:after { + border-top-color: var(--white); +} + +.flatpickr-months .flatpickr-month, +.flatpickr-months .flatpickr-prev-month, +.flatpickr-months .flatpickr-next-month { + color: var(--text); + fill: var(--grey-900); +} + +.flatpickr-months .flatpickr-prev-month:hover, +.flatpickr-months .flatpickr-next-month:hover { + color: var(--grey-400); +} + +.flatpickr-months .flatpickr-prev-month:hover svg, +.flatpickr-months .flatpickr-next-month:hover svg { + fill: var(--primary); +} + +.numInputWrapper span { + border: 1px solid var(--grey-200); +} + +.numInputWrapper span:hover { + background: var(--grey-800); +} + +.numInputWrapper span:active { + background: var(--grey-800); +} + +.numInputWrapper span.arrowUp:after { + border-bottom: 4px solid var(--grey-200); +} + +.numInputWrapper span.arrowDown:after { + border-top: 4px solid var(--grey-200); + top: 40%; +} + +.numInputWrapper span svg path { + fill: var(--grey-800); +} + +.numInputWrapper:hover { + background: var(--grey-100); +} + +.flatpickr-current-month span.cur-month:hover { + background: var(--grey-100); +} + +.flatpickr-current-month .numInputWrapper span.arrowUp:after { + border-bottom-color: var(--grey-900); +} + +.flatpickr-current-month .numInputWrapper span.arrowDown:after { + border-top-color: var(--grey-900); +} + +.flatpickr-current-month input.cur-year[disabled], +.flatpickr-current-month input.cur-year[disabled]:hover { + color: var(--grey-800); +} + +.flatpickr-current-month .flatpickr-monthDropdown-months:hover { + background: var(--grey-100); +} + +span.flatpickr-weekday { + color: var(--grey-600); +} + +.dayContainer + .dayContainer { + box-shadow: -1px 0 0 var(--grey-200); +} + +.flatpickr-day { + color: var(--grey-500); +} + +.flatpickr-day.inRange, +.flatpickr-day.prevMonthDay.inRange, +.flatpickr-day.nextMonthDay.inRange, +.flatpickr-day.today.inRange, +.flatpickr-day.prevMonthDay.today.inRange, +.flatpickr-day.nextMonthDay.today.inRange, +.flatpickr-day:hover, +.flatpickr-day.prevMonthDay:hover, +.flatpickr-day.nextMonthDay:hover, +.flatpickr-day:focus, +.flatpickr-day.prevMonthDay:focus, +.flatpickr-day.nextMonthDay:focus { + background: var(--grey-200); + border-color: var(--grey-200); +} + +.flatpickr-day.today { + border-color: var(--grey-400); +} + +.flatpickr-day.today:hover, +.flatpickr-day.today:focus { + border-color: var(--grey-400); + background: var(--grey-400); + color: var(--white); +} + +.flatpickr-day.selected, +.flatpickr-day.startRange, +.flatpickr-day.endRange, +.flatpickr-day.selected.inRange, +.flatpickr-day.startRange.inRange, +.flatpickr-day.endRange.inRange, +.flatpickr-day.selected:focus, +.flatpickr-day.startRange:focus, +.flatpickr-day.endRange:focus, +.flatpickr-day.selected:hover, +.flatpickr-day.startRange:hover, +.flatpickr-day.endRange:hover, +.flatpickr-day.selected.prevMonthDay, +.flatpickr-day.startRange.prevMonthDay, +.flatpickr-day.endRange.prevMonthDay, +.flatpickr-day.selected.nextMonthDay, +.flatpickr-day.startRange.nextMonthDay, +.flatpickr-day.endRange.nextMonthDay { + background: var(--primary); + color: var(--white); + border-color: var(--primary); +} + +.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)), +.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) { + box-shadow: -10px 0 0 var(--primary); +} + +.flatpickr-day.inRange { + box-shadow: -5px 0 0 var(--grey-200), 5px 0 0 var(--grey-200); +} + +.flatpickr-day.flatpickr-disabled, +.flatpickr-day.flatpickr-disabled:hover, +.flatpickr-day.prevMonthDay, +.flatpickr-day.nextMonthDay, +.flatpickr-day.notAllowed, +.flatpickr-day.notAllowed.prevMonthDay, +.flatpickr-day.notAllowed.nextMonthDay { + color: var(--grey-300); +} + +.flatpickr-day.flatpickr-disabled, +.flatpickr-day.flatpickr-disabled:hover { + color: var(--grey-800); +} + +.flatpickr-day.week.selected { + box-shadow: -5px 0 0 var(--primary), 5px 0 0 var(--primary); +} + +.flatpickr-weekwrapper .flatpickr-weeks { + box-shadow: 1px 0 0 var(--grey-200); +} + +.flatpickr-weekwrapper span.flatpickr-day, +.flatpickr-weekwrapper span.flatpickr-day:hover { + color: var(--grey-300); +} + +.flatpickr-time .numInputWrapper span.arrowUp:after { + border-bottom-color: var(--grey-500); +} + +.flatpickr-time .numInputWrapper span.arrowDown:after { + border-top-color: var(--grey-500); +} + +.flatpickr-time input { + color: var(--grey-500); +} + +.flatpickr-time .flatpickr-time-separator, +.flatpickr-time .flatpickr-am-pm { + color: var(--grey-500); +} + +.flatpickr-time input:hover, +.flatpickr-time .flatpickr-am-pm:hover, +.flatpickr-time input:focus, +.flatpickr-time .flatpickr-am-pm:focus { + background: var(--grey-100); +} diff --git a/yarn.lock b/yarn.lock index ae501e751..ebacb3325 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3732,18 +3732,18 @@ resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.2.22.tgz#26dcbe5e530f6c1f2de5ca9aeab92ab00f523b41" integrity sha512-qWVav014mpjEtbWbEgl0q9pEyrrIySKum8UVYjwhC6njrKzknLZPvfuYdQyVbApsqr94tf/3dP4pCuZmmjdCWQ== -"@vueuse/core@7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-7.0.1.tgz#8652c8657dc7c05cfbd74a1904eca214a10b13f8" - integrity sha512-xWA1o+pQK2uqm6yewjnP8JvrFCPKokTQfTzF/7f74iCgGwPmyPVgPLLGlKLE7NZz32DlWEiGvF43E14X4a19zQ== +"@vueuse/core@7.0.3": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-7.0.3.tgz#5c8290d4f4c232878f795067c094c3e7bda61332" + integrity sha512-iKm6H3oZHXvCLhvNTkIKekLTfwnFiUSmb1lNJbm2v6ZU26PrwXHZZ9kdeNolwtV1awPKHoi/5RS/FTIWt+nN5Q== dependencies: - "@vueuse/shared" "7.0.1" + "@vueuse/shared" "7.0.3" vue-demi "*" -"@vueuse/shared@7.0.1": - version "7.0.1" - resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-7.0.1.tgz#c5a4bf5277e5c5901b45dc4080488f005d1a60be" - integrity sha512-sZWV8Mq4R5oCO4Db/jN6OB3VS6enL7XieLbvKVggk73wFaVEMlEF140gOmp8u6K70ZbqPKwMuNntm1rjuPOrmg== +"@vueuse/shared@7.0.3": + version "7.0.3" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-7.0.3.tgz#865be595c28149f20029750f0706462750bc39f9" + integrity sha512-g3FX5PMK3MrWPFrU6EL9wDYyGlgjOiOroe1idKHezcvtZQ1pkjbpQyLBmjWQvVTEF67k0aGlRd+YTpg8GcfcJw== dependencies: vue-demi "*"