diff --git a/src/common/shared_vuejs.ts b/src/common/shared_vuejs.ts index 8ca0c13..49718ec 100644 --- a/src/common/shared_vuejs.ts +++ b/src/common/shared_vuejs.ts @@ -1,13 +1,30 @@ export const shared_consts = { Permissions: { - Normal: 0, - Admin: 1, - Manager: 2, + Admin: { + value: 1, + label: 'pages.Admin', + icon: 'fas fa-user-shield' + }, + Manager: { + value: 2, + label: 'otherpages.manage.manager', + icon: 'fas fa-tools' + }, + Teacher: { + value: 4, + label: 'event.teacher', + icon: 'fas fa-user-tie' + } + }, + + MessageOptions: { + Notify_ByEmail: 2, + Notify_ByPushNotification: 4 }, fieldsUserToChange() { - return ['username', 'email', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'img', 'ipaddr'] + return ['username', 'email', 'name', 'surname', 'perm', 'date_reg', 'verified_email', 'img', 'ipaddr', 'lasttimeonline'] } } diff --git a/src/components/CDateTime/CDateTime.scss b/src/components/CDateTime/CDateTime.scss new file mode 100644 index 0000000..7dfc793 --- /dev/null +++ b/src/components/CDateTime/CDateTime.scss @@ -0,0 +1,6 @@ +.calendar_comp{ + max-width: 170px; + @media (max-width: 400px) { + max-width: 400px; + } +} diff --git a/src/components/CDateTime/CDateTime.ts b/src/components/CDateTime/CDateTime.ts new file mode 100644 index 0000000..1da8a3e --- /dev/null +++ b/src/components/CDateTime/CDateTime.ts @@ -0,0 +1,83 @@ +import Vue from 'vue' +import { Component, Prop, Watch } from 'vue-property-decorator' +import { tools } from '@src/store/Modules/tools' +import { toolsext } from '@src/store/Modules/toolsext' + +import { date } from 'quasar' +import { CalendarStore } from '../../store/Modules' + +@Component({ + name: 'CDateTime' +}) + +export default class CDateTime extends Vue { + public $q + public $t + @Prop() public value!: Date + @Prop({ required: false, default: '' }) public label: string + @Prop({ required: false, default: '' }) public data_class!: string + @Prop({ required: false, default: false }) public readonly!: boolean + @Prop({ required: false, default: false }) public disable!: boolean + @Prop({ required: false, default: '' }) public bgcolor!: string + @Prop({ required: false, default: false }) public dense: boolean + + public mystyleicon: string = 'font-size: 1.5rem;' + public showDateTimeScroller: boolean = false + public saveit: boolean = false + public myvalue: Date = new Date() + public valueprec: Date = new Date() + + get getclass() { + return 'calendar_comp ' + this.data_class + } + + @Watch('showDateTimeScroller') + public Opening() { + if (this.showDateTimeScroller) { + this.saveit = false + this.valueprec = this.myvalue + this.$emit('show') + } else { + if (!this.saveit) { + if (this.myvalue !== this.valueprec) { + this.myvalue = this.valueprec + tools.showNeutralNotif(this.$q, this.$t('db.reccanceled')) + } + } + } + } + + public savetoclose() { + this.saveit = true + this.showDateTimeScroller = false + this.$emit('savetoclose', this.myvalue, this.valueprec) + } + + get scrollerPopupStyle280() { + if (this.$q.screen.lt.sm) { + return { + width: '100vw', + height: '100vh' + } + } else { + return { + maxHeight: '400px', + height: '400px', + width: '280px' + } + } + } + + get locale() { + return CalendarStore.state.locale + } + + public mounted() { + this.myvalue = this.value + } + + public changeval(newval) { + // console.log('changeval', newval) + this.$emit('update:value', newval) + } +} diff --git a/src/components/CDateTime/CDateTime.vue b/src/components/CDateTime/CDateTime.vue new file mode 100644 index 0000000..0238e01 --- /dev/null +++ b/src/components/CDateTime/CDateTime.vue @@ -0,0 +1,46 @@ + + + + + diff --git a/src/components/CDateTime/index.ts b/src/components/CDateTime/index.ts new file mode 100644 index 0000000..eaa621c --- /dev/null +++ b/src/components/CDateTime/index.ts @@ -0,0 +1 @@ +export {default as CDateTime} from './CDateTime.vue' diff --git a/src/components/CEventsCalendar/CEventsCalendar.scss b/src/components/CEventsCalendar/CEventsCalendar.scss index d3f47d1..2c4c783 100644 --- a/src/components/CEventsCalendar/CEventsCalendar.scss +++ b/src/components/CEventsCalendar/CEventsCalendar.scss @@ -247,13 +247,6 @@ $graytext: #555; color: white; } -.calendar_comp{ - max-width: 170px; - @media (max-width: 400px) { - max-width: 400px; - } -} - .myflex{ display: flex; flex: 1; diff --git a/src/components/CEventsCalendar/CEventsCalendar.ts b/src/components/CEventsCalendar/CEventsCalendar.ts index 92f32d9..8b93d46 100644 --- a/src/components/CEventsCalendar/CEventsCalendar.ts +++ b/src/components/CEventsCalendar/CEventsCalendar.ts @@ -28,12 +28,15 @@ import router from '@router' import { static_data } from '@src/db/static_data' import translate from '@src/globalroutines/util' import { lists } from '../../store/Modules/lists' -import { GlobalStore } from '../../store/Modules' -import { IMessagePage, IMessage, IIdentity } from '../../model' +import { GlobalStore, MessageStore } from '../../store/Modules' +import { IMessagePage, IMessage, IIdentity, MsgDefault } from '../../model' +import MixinUsers from '../../mixins/mixin-users' +import { CDateTime } from '../CDateTime' @Component({ + mixins: [MixinUsers], name: 'CEventsCalendar', - components: { Logo, Footer, CTitle, CImgText, QDateTimeScroller, QDateScroller, CMySelect, CMyEditor } + components: { Logo, Footer, CTitle, CImgText, QDateTimeScroller, QDateScroller, CMySelect, CMyEditor, CDateTime } }) export default class CEventsCalendar extends Vue { public $q @@ -108,9 +111,6 @@ export default class CEventsCalendar extends Vue { public dragging = false public draggedEvent = null public ignoreNextSwipe = false - public showDateScrollerAllDay = false - public showDateTimeScrollerStart = false - public showDateTimeScrollerEnd = false public resources = [ { @@ -317,21 +317,6 @@ export default class CEventsCalendar extends Vue { } } - get scrollerPopupStyle280() { - if (this.$q.screen.lt.sm) { - return { - width: '100vw', - height: '100vh' - } - } else { - return { - maxHeight: '400px', - height: '400px', - width: '280px' - } - } - } - get tools() { return tools } @@ -370,10 +355,6 @@ export default class CEventsCalendar extends Vue { } } - get mythis() { - return this - } - public $refs: { calendar: any } @@ -666,26 +647,17 @@ export default class CEventsCalendar extends Vue { const data: IMessage = { source: { - page: '', event_id: myevent._id, infoevent: tools.gettextevent(this, myevent) }, - idapp: process.env.APP_ID, - origin: { - idapp: process.env.APP_ID, - username: UserStore.state.username - }, dest: { idapp: process.env.APP_ID, username: myevent.teacher }, - read: false, - deleted: false, - message: this.askInfoForm.message, - datemsg: tools.getDateNow() + message: this.askInfoForm.message } - this.SendMsgEvent(data).then((ris) => { + MessageStore.actions.SendMsgEvent(data).then((ris) => { self.contextDay = null if (ris) tools.showPositiveNotif(self.$q, self.$t('cal.sendmsg_sent')) @@ -841,10 +813,6 @@ export default class CEventsCalendar extends Vue { return await CalendarStore.actions.BookEvent(eventparam) } - public async SendMsgEvent(param: IMessage) { - return await UserStore.actions.SendMsgEvent(param) - } - public isAlreadyBooked(eventparam: IEvents) { return CalendarStore.getters.findEventBooked(eventparam, true) } @@ -880,7 +848,7 @@ export default class CEventsCalendar extends Vue { public createContribType(value) { console.log('createContribType', value) tools.createNewRecord(this, 'contribtype', { label: value }).then((myrec) => { - console.log('myrec') + // console.log('myrec') CalendarStore.state.contribtype.push(myrec) }) } @@ -901,10 +869,6 @@ export default class CEventsCalendar extends Vue { return myprice } - public getTeacherName(teacherusername) { - return CalendarStore.getters.getTeacherName(teacherusername) - } - public getWhereIcon(where) { const whererec = CalendarStore.getters.getWhereRec(where) return (whererec) ? whererec.whereicon : '' @@ -915,11 +879,6 @@ export default class CEventsCalendar extends Vue { return (whererec) ? whererec.placename : '' } - public getTeacherImg(teacherusername) { - const teacher = CalendarStore.getters.getTeacher(teacherusername) - return (teacher) ? teacher.img : '' - } - public badgeClasses(eventparam, type) { const cssColor = tools.isCssColor(eventparam.bgcolor) const isHeader = type === 'header' diff --git a/src/components/CEventsCalendar/CEventsCalendar.vue b/src/components/CEventsCalendar/CEventsCalendar.vue index 84e40f4..abd4000 100644 --- a/src/components/CEventsCalendar/CEventsCalendar.vue +++ b/src/components/CEventsCalendar/CEventsCalendar.vue @@ -39,17 +39,17 @@ - + - {{getTeacherName(myevent.teacher)}} + {{getUserByUsername(myevent.teacher)}} - - + - + - {{getTeacherName(myevent.teacher2)}} + {{getUserByUsername(myevent.teacher2)}} @@ -75,7 +75,7 @@
{{$t('cal.when')}}: - +

@@ -121,58 +121,16 @@

- - - - - - + + + +
@@ -294,7 +252,7 @@
{{$t('cal.when')}}: - +
@@ -334,7 +292,7 @@ + @click="tools.CancelBookingEvent(mythis(), myevent, bookEventForm._id, true)">
{{$t('cal.when')}}: - +
@@ -560,7 +518,7 @@

- +
@@ -600,16 +558,16 @@ - + - {{getTeacherName(event.teacher)}} + {{getUserByUsername(event.teacher)}} - - + + - + - {{getTeacherName(event.teacher2)}} + {{getUserByUsername(event.teacher2)}} diff --git a/src/components/CGridTableRec/CGridTableRec.scss b/src/components/CGridTableRec/CGridTableRec.scss index 614fcef..4129ee2 100644 --- a/src/components/CGridTableRec/CGridTableRec.scss +++ b/src/components/CGridTableRec/CGridTableRec.scss @@ -1,3 +1,8 @@ .colmodif { cursor: pointer; } + +.coldate { + max-width: 250px; + min-width: 200px; +} diff --git a/src/components/CGridTableRec/CGridTableRec.ts b/src/components/CGridTableRec/CGridTableRec.ts index d44f9a4..a6bf10d 100644 --- a/src/components/CGridTableRec/CGridTableRec.ts +++ b/src/components/CGridTableRec/CGridTableRec.ts @@ -9,8 +9,15 @@ import { ICategory, IColGridTable, ITableRec } from '../../model' import { CTodo } from '../todos/CTodo' import { SingleProject } from '../projects/SingleProject' import { lists } from '../../store/Modules/lists' +import { IParamsQuery } from '../../model/GlobalStore' +import { fieldsTable } from '../../store/Modules/fieldsTable' +import { CDateTime } from '../CDateTime' +import { CMyToggleList } from '../CMyToggleList' +import { CMyChipList } from '../CMyChipList' -@Component({}) +@Component({ + components: { CDateTime, CMyToggleList, CMyChipList } +}) export default class CGridTableRec extends Vue { @Prop({ required: false }) public prop_mytable: string @Prop({ required: true }) public prop_mytitle: string @@ -24,6 +31,7 @@ export default class CGridTableRec extends Vue { public mytitle: string public mycolumns: any[] public colkey: string + public search: string = '' public tablesel: string = '' @@ -42,12 +50,12 @@ export default class CGridTableRec extends Vue { public spinner_visible: boolean = false public idsel: string = '' - public colsel: string = '' + public colsel: IColGridTable = {name: ''} public valPrec: string = '' public separator: 'horizontal' public filter: string = '' - public selected: any + public rowsel: any public dark: boolean = true public funcActivated = [] @@ -70,25 +78,24 @@ export default class CGridTableRec extends Vue { } } - public selItem(item, colsel) { + public selItem(item, col: IColGridTable) { // console.log('item', item) - this.selected = item + this.rowsel = item this.idsel = item._id - this.colsel = colsel - // console.log('this.idsel', this.idsel) + this.colsel = col } public undoVal() { - console.log('undoVal', 'colsel', this.colsel, 'valprec', this.valPrec, 'this.colkey', this.colkey, 'this.selected', this.selected) + console.log('undoVal', 'colsel', this.colsel, 'valprec', this.valPrec, 'this.colkey', this.colkey, 'this.selected', this.rowsel) console.table(this.serverData) if (this.colsel) - this.selected[this.colsel] = this.valPrec + this.rowsel[this.colsel.field] = this.valPrec // this.serverData[this.colsel] = this.valPrec } public SaveValue(newVal, valinitial) { - // console.log('SaveValue', newVal, 'selected', this.selected) + console.log('SaveValue', newVal, 'rowsel', this.rowsel) const mydata = { id: this.idsel, @@ -96,7 +103,7 @@ export default class CGridTableRec extends Vue { fieldsvalue: {} } - mydata.fieldsvalue[this.colsel] = newVal + mydata.fieldsvalue[this.colsel.field] = newVal this.valPrec = valinitial @@ -135,7 +142,7 @@ export default class CGridTableRec extends Vue { public onRequest(props) { const { page, rowsPerPage, rowsNumber, sortBy, descending } = props.pagination - const filter = props.filter + const filter = this.filter if (!this.mytable) return @@ -146,7 +153,7 @@ export default class CGridTableRec extends Vue { // update rowsCount with appropriate value - // get all rows if "All" (0) is selected + // get all rows if "All" (0) is rowsel const fetchCount = rowsPerPage === 0 ? rowsNumber : rowsPerPage // calculate starting row of data @@ -193,7 +200,7 @@ export default class CGridTableRec extends Vue { myobj[sortBy] = 1 } - const params = { + const params: IParamsQuery = { table: this.mytable, startRow, endRow, @@ -269,7 +276,10 @@ export default class CGridTableRec extends Vue { } public getclassCol(col) { - return (col.disable || !this.canEdit) ? '' : 'colmodif' + let mycl = (col.disable || !this.canEdit) ? '' : 'colmodif' + mycl += (col.fieldtype === tools.FieldType.date) ? ' coldate flex flex-container' : '' + + return mycl } public async createNewRecord() { @@ -279,6 +289,11 @@ export default class CGridTableRec extends Vue { table: this.mytable, data: {} } + + // const mykey = fieldsTable.getKeyByTable(this.mytable) + + // mydata.data[mykey] = '' + const data = await GlobalStore.actions.saveTable(mydata) this.serverData.push(data) @@ -307,9 +322,13 @@ export default class CGridTableRec extends Vue { } public refresh() { + if (this.search !== '') + this.filter = this.search + else + this.filter = '' + this.onRequest({ - pagination: this.pagination, - filter: undefined + pagination: this.pagination }) } @@ -319,6 +338,7 @@ export default class CGridTableRec extends Vue { } } + public ActionAfterYes(action, item, data) { if (action === lists.MenuAction.DELETE_RECTABLE) { if (this.serverData.length > 0) @@ -342,15 +362,20 @@ export default class CGridTableRec extends Vue { } } - public visuValByType(col, val) { - if (col.fieldtype === 'date') { + public visuValByType(col: IColGridTable, val) { + if (col.fieldtype === tools.FieldType.date) { if (val === undefined) { return '[]' } else { return tools.getstrDateTime(val) } - } else if (col.fieldtype === 'boolean') { + } else if (col.fieldtype === tools.FieldType.boolean) { return (val) ? this.$t('dialog.yes') : this.$t('dialog.no') + } else if (col.fieldtype === tools.FieldType.binary) { + if (val === undefined) + return '[---]' + else + return fieldsTable.getArrStrByValueBinary(this, col, val) } else { if (val === undefined) return '[]' @@ -395,4 +420,18 @@ export default class CGridTableRec extends Vue { this.updatedcol() this.refresh() } + + get tools() { + return tools + } + + get db_fieldsTable() { + return fieldsTable + } + + public doSearch() { + + this.refresh() + } + } diff --git a/src/components/CGridTableRec/CGridTableRec.vue b/src/components/CGridTableRec/CGridTableRec.vue index 5dbaaa4..7c0a924 100644 --- a/src/components/CGridTableRec/CGridTableRec.vue +++ b/src/components/CGridTableRec/CGridTableRec.vue @@ -35,11 +35,16 @@ + + + - - @@ -77,54 +82,33 @@ - + -
-
-
- - - - - - - - - -
- {{ visuValByType(col, props.row[col.name]) }} -
- - - - - - - - - - - -
+
+
+ +
-
+
{{ visuValByType(col, props.row[col.name]) }} + @save="SaveValue" @show="selItem(props.row, col)"> @@ -133,12 +117,40 @@
+
+
+ + + + + + + + + + +
+
{{ visuValByType(col, props.row[col.name]) }} + @save="SaveValue" @show="selItem(props.row, col)"> diff --git a/src/components/CMyChipList/CMyChipList.scss b/src/components/CMyChipList/CMyChipList.scss new file mode 100644 index 0000000..2e84f39 --- /dev/null +++ b/src/components/CMyChipList/CMyChipList.scss @@ -0,0 +1,5 @@ +.clchip{ + display: flex; + //flex: 1; + //flex-direction: column; +} diff --git a/src/components/CMyChipList/CMyChipList.ts b/src/components/CMyChipList/CMyChipList.ts new file mode 100644 index 0000000..91f57ad --- /dev/null +++ b/src/components/CMyChipList/CMyChipList.ts @@ -0,0 +1,57 @@ +import Vue from 'vue' +import { Component, Prop, Watch } from 'vue-property-decorator' + +import { tools } from '../../store/Modules/tools' +import { toolsext } from '@src/store/Modules/toolsext' + +@Component({ + name: 'CMyChipList' +}) + +export default class CMyChipList extends Vue { + public $t + @Prop({ required: true }) public options: [] + @Prop({ required: true }) public value + @Prop({ required: true, default: '' }) public optlab + @Prop({ required: true, default: '' }) public optval + @Prop({ required: false, default: '' }) public myclass + @Prop({ required: false, default: '' }) public opticon + @Prop({ required: false, default: '' }) public optcolor + + public myvalue = '' + public myarrvalues = [] + + get tools() { + return tools + } + + public mounted() { + this.myarrvalues = [] + + console.table(this.options) + this.options.forEach((rec, index) => { + if (tools.isBitActive(this.value, rec[this.optval])) { + const mydata = { + label: this.$t(rec[this.optlab]), + value: rec[this.optval], + valbool: tools.isBitActive(this.value, rec[this.optval]), + icon: '', + color: tools.getColorByIndexBest(index) + } + + if (this.opticon) + mydata.icon = rec[this.opticon] + if (this.optcolor) + mydata.color = rec[this.optcolor] + + this.myarrvalues.push(mydata) + } + }) + + if (this.myarrvalues.length === 0) + this.myarrvalues.push({ label: this.$t('otherpages.manage.nessuno'), color: 'gray' }) + + console.log('arrvalues=', this.myarrvalues) + + } +} diff --git a/src/components/CMyChipList/CMyChipList.vue b/src/components/CMyChipList/CMyChipList.vue new file mode 100644 index 0000000..5e65090 --- /dev/null +++ b/src/components/CMyChipList/CMyChipList.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/src/components/CMyChipList/index.ts b/src/components/CMyChipList/index.ts new file mode 100644 index 0000000..df961e8 --- /dev/null +++ b/src/components/CMyChipList/index.ts @@ -0,0 +1 @@ +export {default as CMyChipList} from './CMyChipList.vue' diff --git a/src/components/CMySelect/CMySelect.ts b/src/components/CMySelect/CMySelect.ts index 1edd9ae..e11cbdc 100644 --- a/src/components/CMySelect/CMySelect.ts +++ b/src/components/CMySelect/CMySelect.ts @@ -31,7 +31,7 @@ export default class CMySelect extends Vue { } public changeval(newval) { - console.log('changeval', newval) + // console.log('changeval', newval) // const newvallab = newval[`${this.optval}`] // this.myvalue = newvallab this.$emit('update:value', newval) @@ -39,7 +39,7 @@ export default class CMySelect extends Vue { public mounted() { const rec = this.options.find((myrec) => myrec[`${this.optval}`] === this.value) - console.log('rec', rec) + // console.log('rec', rec) if (!this.useinput) { this.myvalue = this.value } else { @@ -49,7 +49,7 @@ export default class CMySelect extends Vue { else this.myvalue = rec[`${this.optlab}`] - console.log('this.myvalue', this.myvalue, 'this.optval', this.optval, 'rec', rec[`${this.optval}`]) + // console.log('this.myvalue', this.myvalue, 'this.optval', this.optval, 'rec', rec[`${this.optval}`]) } } } diff --git a/src/components/CMyToggleList/CMyToggleList.scss b/src/components/CMyToggleList/CMyToggleList.scss new file mode 100644 index 0000000..21fe223 --- /dev/null +++ b/src/components/CMyToggleList/CMyToggleList.scss @@ -0,0 +1,5 @@ +.cltoggle{ + display: flex; + flex: 1; + flex-direction: column; +} diff --git a/src/components/CMyToggleList/CMyToggleList.ts b/src/components/CMyToggleList/CMyToggleList.ts new file mode 100644 index 0000000..fed5bbf --- /dev/null +++ b/src/components/CMyToggleList/CMyToggleList.ts @@ -0,0 +1,50 @@ +import Vue from 'vue' +import { Component, Prop, Watch } from 'vue-property-decorator' + +import { tools } from '../../store/Modules/tools' +import { toolsext } from '@src/store/Modules/toolsext' + +@Component({ + name: 'CMyToggleList' +}) + +export default class CMyToggleList extends Vue { + public $t + @Prop({ required: true }) public options: [] + @Prop({ required: true }) public value + @Prop({ required: true, default: '' }) public label + @Prop({ required: false, default: '' }) public myclass + @Prop({ required: true, default: '' }) public optlab + @Prop({ required: true, default: '' }) public optval + + public myvalue = '' + public myarrvalues = [] + + get tools() { + return tools + } + + public changeval(newval) { + // Update value + const totale = this.myarrvalues.filter((rec) => rec.valbool).reduce((sum, rec) => sum + rec.value, 0) + this.myvalue = totale + + // Refresh value + this.$emit('update:value', this.myvalue) + } + + public mounted() { + this.myarrvalues = [] + + console.table(this.options) + this.options.forEach((rec) => { + const mydata = { + label: this.$t(rec[this.optlab]), + value: rec[this.optval], + valbool: tools.isBitActive(this.value, rec[this.optval]) + } + this.myarrvalues.push(mydata) + }) + + } +} diff --git a/src/components/CMyToggleList/CMyToggleList.vue b/src/components/CMyToggleList/CMyToggleList.vue new file mode 100644 index 0000000..f926eae --- /dev/null +++ b/src/components/CMyToggleList/CMyToggleList.vue @@ -0,0 +1,20 @@ + + + + + diff --git a/src/components/CMyToggleList/index.ts b/src/components/CMyToggleList/index.ts new file mode 100644 index 0000000..3add23e --- /dev/null +++ b/src/components/CMyToggleList/index.ts @@ -0,0 +1 @@ +export {default as CMyToggleList} from './CMyToggleList.vue' diff --git a/src/components/index.ts b/src/components/index.ts index 7fe6b03..f52577b 100644 --- a/src/components/index.ts +++ b/src/components/index.ts @@ -7,6 +7,8 @@ export * from './CBook' export * from './CMyPage' export * from './CTitle' export * from './CMySelect' +export * from './CMyToggleList' +export * from './CMyChipList' export * from './CMyEditor' export * from './CImgText' export * from './CImgTitle' @@ -15,6 +17,7 @@ export * from './CSignIn' export * from './CSignUp' export * from './CEventsCalendar' export * from './CDate' +export * from './CDateTime' export * from './BannerCookies' export * from './PagePolicy' export * from './FormNewsletter' diff --git a/src/components/projects/SingleProject/SingleProject.vue b/src/components/projects/SingleProject/SingleProject.vue index 6dae3ff..654e83e 100644 --- a/src/components/projects/SingleProject/SingleProject.vue +++ b/src/components/projects/SingleProject/SingleProject.vue @@ -9,6 +9,7 @@ v-model.trim="precDescr" autogrow borderless + debounce="1000" :label="getlabeltext" dense @focus="getFocus($event)" diff --git a/src/components/todos/CTodo/CTodo.vue b/src/components/todos/CTodo/CTodo.vue index 6f9c3db..eddfee8 100644 --- a/src/components/todos/CTodo/CTodo.vue +++ b/src/components/todos/CTodo/CTodo.vue @@ -54,6 +54,7 @@