diff --git a/app/assets/javascripts/repositories/index.js b/app/assets/javascripts/repositories/index.js
index 354dd74ea..2c56c38c0 100644
--- a/app/assets/javascripts/repositories/index.js
+++ b/app/assets/javascripts/repositories/index.js
@@ -105,6 +105,7 @@
}],
fnInitComplete: function(e) {
initActionToolbar();
+
window.actionToolbarComponent.setReloadCallback(() =>
initRepositoriesDataTable('#repositoriesList', archived));
window.actionToolbarComponent.setBottomOffset(68);
diff --git a/app/assets/javascripts/repositories/repository_datatable.js b/app/assets/javascripts/repositories/repository_datatable.js
index 6fcf35f30..61a74a3e0 100644
--- a/app/assets/javascripts/repositories/repository_datatable.js
+++ b/app/assets/javascripts/repositories/repository_datatable.js
@@ -791,6 +791,7 @@ var RepositoryDatatable = (function(global) {
fnInitComplete: function() {
window.initActionToolbar();
window.actionToolbarComponent.setBottomOffset(68);
+
initHeaderTooltip();
disableCheckboxToggleOnCheckboxPreview();
diff --git a/app/assets/stylesheets/shared/datetime_picker.scss b/app/assets/stylesheets/shared/datetime_picker.scss
index ed858e8ce..f72562316 100644
--- a/app/assets/stylesheets/shared/datetime_picker.scss
+++ b/app/assets/stylesheets/shared/datetime_picker.scss
@@ -3,9 +3,10 @@
.dp--menu-wrapper {
font-weight: normal;
- .dp__menu {
+ .dp__menu,
+ &.dp__menu {
border: 0;
- box-shadow: 0px 32px 64px -12px rgba(16, 24, 40, 0.14);
+ box-shadow: 0px 4px 16px rgba(35, 31, 32, 0.15)
}
.dp__action_buttons {
@@ -26,17 +27,34 @@
}
.dp__month_year_row {
- margin-bottom: 1rem;
+ margin-bottom: .5rem;
}
.dp__menu_inner {
- border-bottom: 1px solid var(--sn-light-grey);
- margin: 0 1rem 1rem;
+ margin: 0 1rem;
padding: 1rem 0;
}
+ .dp__time_picker_overlay_container {
+ padding-bottom: .5rem;
+ }
+
+ .dp__button_bottom {
+ background-color: var(--sn-white);
+ margin-bottom: .5rem;
+ }
+
.dp--tp-wrap {
- padding: 0 1rem 1rem;
+ border-top: 1px solid var(--sn-light-grey);
+ padding: .5rem 1rem;
+
+ .dp__time_display {
+ margin: .5rem 0;
+ }
+
+ .dp__button_bottom {
+ margin-bottom: 0;
+ }
}
.dp__action_cancel {
@@ -61,19 +79,14 @@
justify-content: center;
}
-
.dp__btn:hover {
.dp__tp_inline_btn_bar {
background-color: var(--sn-science-blue);
}
}
- .dp--overlay-absolute {
- padding: 1rem 1rem 0;
- }
-
- .dp__overlay_action {
- width: calc(100% - 2rem);
+ .dp__overlay_container {
+ padding-bottom: .5rem;
}
.dp--arrow-btn-nav {
@@ -102,6 +115,16 @@
}
}
+.dp__main.only-time {
+ .dp--tp-wrap {
+ border-top: none;
+ }
+
+ .dp__overlay_container {
+ padding-bottom: 0;
+ }
+}
+
.dp__theme_light {
--dp-background-color: var(--sn-white);
@@ -148,11 +171,11 @@
--dp-cell-padding: 0rem; /*Padding in the cell*/
--dp-common-padding: 1rem; /*Common padding used*/
--dp-input-padding: .3em 2rem .3rem 1rem; /*Padding in the input*/
- --dp-menu-min-width: 342px; /*Adjust the min width of the menu*/
+ --dp-menu-min-width: 276px; /*Adjust the min width of the menu*/
--dp-action-row-padding: 0 1rem 1rem; /*Adjust padding for the action row*/
--dp-action-buttons-padding: 0 .625rem; /*Adjust padding for the action buttons in action row*/
--dp-action-button-height: 1.875rem; /*Adjust height for the action buttons in action row*/
- --dp-row-margin: .25rem 0; /*Adjust the spacing between rows in the calendar*/
+ --dp-row-margin: 2px 0; /*Adjust the spacing between rows in the calendar*/
--dp-calendar-header-cell-padding: .5rem; /*Adjust padding in calendar header cells*/
--dp-two-calendars-spacing: .75rem; /*Space between multiple calendars*/
--dp-overlay-col-padding: .25rem; /*Padding in the overlay column*/
@@ -163,7 +186,7 @@
/*Font sizes*/
--dp-font-size: .875rem; /*Default font-size*/
--dp-preview-font-size: .75rem; /*Font size of the date preview in the action row*/
- --dp-time-font-size: 3rem; /*Font size in the time picker*/
+ --dp-time-font-size: 1.875rem; /*Font size in the time picker*/
/*Transitions*/
--dp-animation-duration: 0.1s; /*Transition duration*/
diff --git a/app/controllers/my_modules_controller.rb b/app/controllers/my_modules_controller.rb
index a5007aaaa..0d14b0e3e 100644
--- a/app/controllers/my_modules_controller.rb
+++ b/app/controllers/my_modules_controller.rb
@@ -488,6 +488,16 @@ class MyModulesController < ApplicationController
def my_module_params
permitted_params = params.require(:my_module).permit(:name, :description, :started_on, :due_date, :archived)
+
+ if permitted_params[:started_on].present?
+ permitted_params[:started_on] =
+ Time.zone.strptime(permitted_params[:started_on], '%Y/%m/%d %H:%M')
+ end
+ if permitted_params[:due_date].present?
+ permitted_params[:due_date] =
+ Time.zone.strptime(permitted_params[:due_date], '%Y/%m/%d %H:%M')
+ end
+
permitted_params
end
diff --git a/app/javascript/packs/vue/action_toolbar.js b/app/javascript/packs/vue/action_toolbar.js
index 1a85db360..68f2a382a 100644
--- a/app/javascript/packs/vue/action_toolbar.js
+++ b/app/javascript/packs/vue/action_toolbar.js
@@ -5,11 +5,14 @@ import ActionToolbar from '../../vue/components/action_toolbar.vue';
import { mountWithTurbolinks } from './helpers/turbolinks.js';
window.initActionToolbar = () => {
+ if (window.actionToolbarComponent) return;
if (notTurbolinksPreview()) {
const app = createApp({});
app.component('ActionToolbar', ActionToolbar);
app.config.globalProperties.i18n = window.I18n;
- mountWithTurbolinks(app, '#actionToolbar');
+ mountWithTurbolinks(app, '#actionToolbar', () => {
+ window.actionToolbarComponent = null
+ });
}
}
diff --git a/app/javascript/packs/vue/helpers/turbolinks.js b/app/javascript/packs/vue/helpers/turbolinks.js
index e55491baf..259ceb4c8 100644
--- a/app/javascript/packs/vue/helpers/turbolinks.js
+++ b/app/javascript/packs/vue/helpers/turbolinks.js
@@ -1,9 +1,12 @@
-function mountWithTurbolinks(app, target) {
+function mountWithTurbolinks(app, target, callback = null) {
const originalHtml = document.querySelector(target).innerHTML;
document.addEventListener('turbolinks:before-cache', () => {
app.unmount();
- document.querySelector(target).innerHTML = originalHtml;
+ if (document.querySelector(target)) {
+ document.querySelector(target).innerHTML = originalHtml;
+ }
+ if (callback) callback();
}, { once: true });
return app.mount(target);
diff --git a/app/javascript/packs/vue/legacy/datetime_picker.js b/app/javascript/packs/vue/legacy/datetime_picker.js
index 8acdfa231..490fec4f5 100644
--- a/app/javascript/packs/vue/legacy/datetime_picker.js
+++ b/app/javascript/packs/vue/legacy/datetime_picker.js
@@ -18,14 +18,15 @@ window.initDateTimePickerComponent = (id) => {
},
mounted() {
if (this.$refs.input.dataset.default) {
- const defaultDate = new Date(this.$refs.input.dataset.default.replace(/-/g, '/')); // Safari fix
+ const defaultDate = new Date(this.$refs.input.dataset.default.replace(/([^!\s])-/g, '$1/')); // Safari fix
this.date = this.formatDate(defaultDate);
+ this.$refs.vueDateTime.manualUpdate = true;
this.$refs.vueDateTime.datetime = defaultDate;
} else if (this.date) {
+ this.$refs.vueDateTime.manualUpdate = true;
this.$refs.vueDateTime.datetime = new Date(this.date);
}
-
$(this.$refs.input).data('dateTimePicker', this);
$(this.$el.parentElement).parent().trigger('dp:ready');
},
@@ -50,6 +51,7 @@ window.initDateTimePickerComponent = (id) => {
},
setDate(date) {
this.date = this.formatDate(date);
+ this.$refs.vueDateTime.manualUpdate = true;
this.$refs.vueDateTime.datetime = date;
this.$nextTick(() => {
if (this.onChange) this.onChange(date);
diff --git a/app/javascript/vue/shared/date_time_picker.vue b/app/javascript/vue/shared/date_time_picker.vue
index bddd44800..7af5a2ce7 100644
--- a/app/javascript/vue/shared/date_time_picker.vue
+++ b/app/javascript/vue/shared/date_time_picker.vue
@@ -1,6 +1,9 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+