1import { createApp } from 'vue'; 2 3import App from './App.vue'; 4import i18n from './i18n'; 5 6import router from './router'; 7 8//import { format } from 'date-fns-tz'; 9 10//Do not change store import. 11//Exact match alias set to support 12//dotenv customizations. 13import store from './store'; 14import eventBus from './eventBus'; 15 16import './assets/styles/bmc/helpers/_index.scss'; 17import './assets/styles/bootstrap/_helpers.scss'; 18 19import 'bootstrap/dist/css/bootstrap.css'; 20import 'bootstrap-vue/dist/bootstrap-vue.css'; 21 22import { 23 BootstrapVue, 24 AlertPlugin, 25 BadgePlugin, 26 ButtonPlugin, 27 BVConfigPlugin, 28 CardPlugin, 29 CollapsePlugin, 30 DropdownPlugin, 31 FormPlugin, 32 FormCheckboxPlugin, 33 FormDatepickerPlugin, 34 FormFilePlugin, 35 FormGroupPlugin, 36 FormInputPlugin, 37 FormRadioPlugin, 38 FormSelectPlugin, 39 FormTagsPlugin, 40 InputGroupPlugin, 41 LayoutPlugin, 42 LinkPlugin, 43 ListGroupPlugin, 44 ModalPlugin, 45 NavbarPlugin, 46 NavPlugin, 47 PaginationPlugin, 48 ProgressPlugin, 49 TablePlugin, 50 TabsPlugin, 51 ToastPlugin, 52 TooltipPlugin, 53} from 'bootstrap-vue'; 54 55// Filters 56/* 57Vue.filter('shortTimeZone', function (value) { 58 const longTZ = value 59 .toString() 60 .match(/\((.*)\)/) 61 .pop(); 62 const regexNotUpper = /[*a-z ]/g; 63 return longTZ.replace(regexNotUpper, ''); 64}); 65 66Vue.filter('formatDate', function (value) { 67 const isUtcDisplay = store.getters['global/isUtcDisplay']; 68 69 if (value instanceof Date) { 70 if (isUtcDisplay) { 71 return value.toISOString().substring(0, 10); 72 } 73 const pattern = `yyyy-MM-dd`; 74 const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; 75 return format(value, pattern, { timezone }); 76 } 77}); 78 79Vue.filter('formatTime', function (value) { 80 const isUtcDisplay = store.getters['global/isUtcDisplay']; 81 82 if (value instanceof Date) { 83 if (isUtcDisplay) { 84 let timeOptions = { 85 timeZone: 'UTC', 86 hourCycle: 'h23', 87 }; 88 return `${value.toLocaleTimeString('default', timeOptions)} UTC`; 89 } 90 const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone; 91 const shortTz = Vue.filter('shortTimeZone')(value); 92 const pattern = `HH:mm:ss ('${shortTz}' O)`; 93 return format(value, pattern, { timezone }).replace('GMT', 'UTC'); 94 } 95}); 96*/ 97 98const app = createApp({ 99 router, 100 store, 101 render: (h) => h(App), 102}); 103app.use(i18n); 104 105app.use(router); 106app.use(store); 107 108// Plugins 109app.use(BootstrapVue); 110app.use(AlertPlugin); 111app.use(BadgePlugin); 112app.use(ButtonPlugin); 113app.use(BVConfigPlugin, { 114 BFormText: { textVariant: 'secondary' }, 115 BTable: { 116 headVariant: 'light', 117 footVariant: 'light', 118 }, 119 BFormTags: { 120 tagVariant: 'primary', 121 addButtonVariant: 'link-primary', 122 }, 123 BBadge: { 124 variant: 'primary', 125 }, 126}); 127 128app.use(CardPlugin); 129app.use(CollapsePlugin); 130app.use(DropdownPlugin); 131app.use(FormPlugin); 132app.use(FormCheckboxPlugin); 133app.use(FormDatepickerPlugin); 134app.use(FormFilePlugin); 135app.use(FormGroupPlugin); 136app.use(FormInputPlugin); 137app.use(FormRadioPlugin); 138app.use(FormSelectPlugin); 139app.use(FormTagsPlugin); 140app.use(InputGroupPlugin); 141app.use(LayoutPlugin); 142app.use(LayoutPlugin); 143app.use(LinkPlugin); 144app.use(ListGroupPlugin); 145app.use(ModalPlugin); 146app.use(NavbarPlugin); 147app.use(NavPlugin); 148app.use(PaginationPlugin); 149app.use(ProgressPlugin); 150app.use(TablePlugin); 151app.use(TabsPlugin); 152app.use(ToastPlugin); 153app.use(TooltipPlugin); 154 155app.mount('#app'); 156app.prototype.$eventBus = eventBus; 157