{"version":3,"sources":["webpack:///./@core/components/AppSmartSelect.vue?af0b","webpack:///./@master/services/DateTime.ts","webpack:///./@core/components/AppDateInput.vue?8236","webpack:///./@core/components/AppDateInput.vue","webpack:///./@core/components/AppDateInput.vue?22ab","webpack:///./@core/components/AppDateInput.vue?480f","webpack:///./@core/components/AppSmartSelect.vue?40c7","webpack:///./@core/components/AppSmartSelect.vue","webpack:///./@core/components/AppSmartSelect.vue?17e2","webpack:///./@core/components/AppSmartSelect.vue?79ef"],"names":["DateTime","_date","timezone","date","Number","this","initService","res","tz","valueOf","Error","_time","extend","prototype","format","timeInServiceFormat","day","unix","amount","timeUnit","add","subtract","get","value","set","startOf","floatingValue","diff","toDate","utc","endOf","toCompareTime","isBefore","isAfter","isSame","render","_vm","_h","$createElement","_c","_self","attrs","inputType","minDate","maxDate","domProps","getDate","on","setDate","staticRenderFns","min","dateService","futureDate","Date","disabledFutureDate","e","dateString","target","validity","badInput","isInThePastOfDate","isValidDate","toString","time","default","component","staticClass","class","hasSelected","multiple","length","disabled","style","flexDisplay","boxMode","cycleMode","_l","option","index","_obj","key","findStyle","find","current","hasImg","img","$event","toggleCycleSelect","_v","_s","label","_e","selected","includes","toggleSelect","buttonName","$emit","displayDirection","display","cols","options","filter","opt","valuePointer","found","status","indexOf","val","Array","console","error","existedValue","currentValues","multiLimit","alert","push","currentStatusIndex","valu","map","log","undefined","concat"],"mappings":"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","file":"js/chunk-3c8afb29.0ebc79be.js","sourcesContent":["export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSmartSelect.vue?vue&type=style&index=0&id=6299c210&lang=scss&scoped=true&\"","import dayjs, { ManipulateType } from 'dayjs'\nimport customParseFormat from 'dayjs/plugin/customParseFormat'\nimport utc from 'dayjs/plugin/utc'\nimport timezonePlugin from 'dayjs/plugin/timezone'\nimport { format } from './DateService'\nimport { TimeUnit } from './IDateService'\n\nexport class DateTime {\n private _time: number\n private timezone: string\n\n private get timeInServiceFormat () {\n return dayjs(this._time).tz(this.timezone)\n }\n\n get time () {\n return this._time\n }\n\n constructor (_date?: string | number | Date | bigint, timezone?: string) {\n const date = typeof _date === 'bigint' ? Number(_date) : _date\n\n this.timezone = timezone || 'Asia/Singapore'\n\n this.initService()\n\n if (!date) {\n this._time = dayjs().tz(this.timezone).valueOf()\n return\n }\n\n const res = dayjs(date).tz(this.timezone).valueOf()\n if (!res) throw new Error('Invalid Date')\n this._time = res\n }\n\n private initService () {\n dayjs.extend(customParseFormat)\n dayjs.extend(utc)\n dayjs.extend(timezonePlugin)\n dayjs.prototype.format = format\n }\n\n format (format: string): string {\n return this.timeInServiceFormat.format(format)\n }\n\n /**\n *\n * @returns Return day of week, (0) Sunday - (6) Saturday\n */\n day () {\n return dayjs(this._time).day()\n }\n\n formatUnixToDate (unix: number | bigint, format: string): string {\n const date = typeof unix === 'bigint' ? Number(unix) : unix\n return dayjs(date).format(format)\n }\n\n add (amount: number, timeUnit: TimeUnit) {\n this._time = this.timeInServiceFormat.add(amount, timeUnit as ManipulateType).valueOf()\n return this\n }\n\n subtract (amount: number, timeUnit: TimeUnit) {\n this._time = this.timeInServiceFormat.subtract(amount, timeUnit as ManipulateType).valueOf()\n return this\n }\n\n get (timeUnit: Exclude) {\n return this.timeInServiceFormat.get(timeUnit)\n }\n\n set (value: number, timeUnit: Exclude) {\n this._time = this.timeInServiceFormat\n .set(timeUnit, value)\n .valueOf()\n return this\n }\n\n startOf (timeUnit: Exclude) {\n this._time = this.timeInServiceFormat.startOf(timeUnit).valueOf()\n return this\n }\n\n difference (date: DateTime, timeUnit: TimeUnit = 'millisecond', floatingValue = true) {\n return this.timeInServiceFormat.diff(date.timeInServiceFormat, timeUnit, floatingValue)\n }\n\n toDate (): Date {\n return this.timeInServiceFormat.toDate()\n }\n\n clone () {\n return new DateTime(this._time, this.timezone)\n }\n\n setTimezone (timezone: string) {\n this.timezone = timezone\n return this\n }\n\n getEndOfTheDay () {\n return this.timeInServiceFormat.utc().endOf('day').valueOf()\n }\n\n isBefore (toCompareTime: number) {\n return this.timeInServiceFormat.isBefore(toCompareTime)\n }\n\n isAfter (toCompareTime: number) {\n return this.timeInServiceFormat.isAfter(toCompareTime)\n }\n\n isSame (toCompareTime: number) {\n return this.timeInServiceFormat.isSame(toCompareTime)\n }\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',{attrs:{\"type\":_vm.inputType,\"min\":_vm.minDate,\"max\":_vm.maxDate},domProps:{\"value\":_vm.getDate()},on:{\"blur\":_vm.setDate}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\nimport { Component, Prop, Vue, Emit } from 'vue-property-decorator'\nimport { isNull, isUndefined } from 'lodash/fp'\nimport { inject } from 'inversify-props'\nimport { IDateService } from '@master/services/IDateService'\nimport { DateTime } from '@master/services/DateTime'\n\n@Component\nexport default class AppDateInput extends Vue {\n @Prop() readonly value!: number\n @Prop() readonly futureDate: boolean\n @Prop() readonly min: number\n @Prop({ default: 'date' }) readonly inputType: string\n @Prop({ default: false }) readonly disabledFutureDate: boolean\n\n @inject()\n private dateService: IDateService\n\n get minDate () {\n if (this.min) return this.dateService.format(this.min, 'YYYY-MM-DD')\n return this.futureDate ? this.dateService.format(new Date(), 'YYYY-MM-DD') : null\n }\n\n get maxDate () {\n return this.disabledFutureDate ? this.dateService.format(new Date(), 'YYYY-MM-DD') : null\n }\n\n getDate () {\n if (isUndefined(this.value) || isNull(this.value) || !this.value) return ''\n return this.dateService.format(Number(this.value), this.inputType === 'month' ? 'YYYY-MM' : 'YYYY-MM-DD')\n }\n\n @Emit('input')\n setDate (e) {\n const dateString = e.target.value\n if (!dateString && !e.target.validity.badInput) {\n return null\n }\n\n if ((this.min && this.dateService.isInThePastOfDate(dateString, this.min)) || !this.dateService.isValidDate(dateString, 'DD-MM-YYYY')) {\n e.target.value = null\n throw new Error('Please select a valid date!')\n }\n\n const date = new DateTime(dateString)\n return date.toDate().toString() === 'Invalid Date' ? null : date.time\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDateInput.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppDateInput.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppDateInput.vue?vue&type=template&id=56e4d28a&\"\nimport script from \"./AppDateInput.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppDateInput.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"smartSelect\"},[_c('div',{staticClass:\"smartSelectContainer\",class:{ hasSelected : _vm.multiple ? _vm.value.length > 0 : _vm.value, disabled : _vm.disabled },style:(_vm.flexDisplay())},[(_vm.boxMode && _vm.cycleMode)?_vm._l((_vm.blockOptions),function(option,index){\nvar _obj;\nreturn _c('div',{key:index,staticClass:\"selectBlock\",class:( _obj = {}, _obj['cycleSelected-'+ _vm.findStyle(option)] = _vm.multiple ? _vm.value.find(function (current) { return current.value === option.value; }) : option.value === _vm.value, _obj.hasImg = option.img, _obj ),on:{\"click\":function($event){return _vm.toggleCycleSelect(option)}}},[_c('div',{staticClass:\"selectLabel\"},[_vm._v(_vm._s(option.label))]),(option.img)?_c('img',{attrs:{\"src\":option.img}}):_vm._e()])}):(_vm.boxMode)?_vm._l((_vm.blockOptions),function(option,index){return _c('div',{key:index,staticClass:\"selectBlock\",class:{ selected: _vm.multiple ? _vm.value.includes(option.value) : option.value === _vm.value, hasImg: option.img },on:{\"click\":function($event){return _vm.toggleSelect(option.value)}}},[_c('div',{staticClass:\"selectLabel\"},[_vm._v(_vm._s(option.label))]),(option.img)?_c('img',{attrs:{\"src\":option.img}}):_vm._e()])}):_vm._l((_vm.options),function(option,index){return _c('div',{key:index,staticClass:\"selectOption\",class:{ selected: _vm.multiple ? _vm.value.includes(option.value) : option.value === _vm.value }},[_c('label',{staticClass:\"container\",attrs:{\"for\":_vm.buttonName + option.value}},[_c('span',{domProps:{\"innerHTML\":_vm._s(option.label)}},[_vm._v(_vm._s(option.label))]),_c('input',{attrs:{\"type\":\"radio\",\"id\":_vm.buttonName + option.value,\"name\":_vm.buttonName,\"disabled\":_vm.disabled},domProps:{\"value\":option.value,\"checked\":option.value == _vm.value},on:{\"blur\":function($event){return _vm.$emit('blur')},\"change\":function($event){return _vm.$emit('input', option.value)}}}),_c('div',{staticClass:\"checkmark\"})])])})],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Prop } from 'vue-property-decorator'\n\n@Component\nexport default class AppSmartSelect extends Vue {\n @Prop() readonly options!: { label: string; value: string | boolean }[]\n @Prop() readonly selected!: string\n @Prop() readonly buttonName!: string\n @Prop() readonly value: string | string[] | { value: string; status: string }[]\n @Prop({ default: () => { return false } }) readonly multiple: boolean\n @Prop() readonly multiLimit: number\n @Prop({ default: () => { return 3 } }) readonly cols: number\n @Prop({ default: () => { return true } }) readonly boxMode: boolean\n @Prop({ default: () => { return false } }) readonly cycleMode: boolean\n @Prop() readonly displayDirection: string\n @Prop({ default: () => { return false } }) readonly disabled: boolean\n\n flexDisplay () {\n if (this.displayDirection) {\n return {\n display: 'flex',\n 'flex-direction': this.displayDirection\n }\n } else if (this.cols > 0) {\n return {\n display: 'grid',\n 'grid-template-columns': `repeat(${this.cols}, 1fr)`,\n 'grid-gap': '0.2rem'\n }\n }\n return {\n display: 'flex',\n 'flex-direction': 'column'\n }\n }\n\n // empty block is excluded from block UI\n get blockOptions () {\n return this.options.filter(opt => opt.value !== '' && opt.label !== '')\n }\n\n /**\n * Very limited functionality here, we still have to define the classes at the\n * style of it before it is used.\n *\n * Some of the must have is that the options passed must have a status attribute.\n *\n */\n findStyle (option) {\n const valuePointer = this.value as { value: string; status: string}[]\n const found = valuePointer.find(current => current.value === option.value)\n if (found) {\n return option.status.indexOf(found.status)\n }\n return 0\n }\n\n /**\n * Very limited to do what it does. To note, the value structure must be\n * value: [\n * {\n * value: ,\n * status: // name of the attribute shall not be changed\n * }\n * ]\n * the option that were selected will have this format, the name of the attributes shall not be changed\n * option: {\n * label: ,\n * value: ,\n * status: ['STATUS', 'EXAMPLE'] // it must be an array of strings\n * }\n */\n toggleCycleSelect (option) {\n const val = option.value\n if (this.disabled) return\n if (this.multiple) {\n if (!(this.value instanceof Array)) {\n console.error(`Incompatible : Expected 'value' to be array type but is ${typeof this.value}`)\n return\n }\n // already include\n const valuePointer = this.value as { value: string; status: string}[]\n const existedValue = valuePointer.find(currentValues => {\n if (currentValues.value === option.value) return currentValues\n })\n\n if (!existedValue) {\n if (this.multiLimit && (this.value.length + 1) > this.multiLimit) {\n alert(`Maximum ${this.multiLimit} can be selected.`)\n return\n }\n // Position 0 should always be the primary color button\n valuePointer.push({ value: option.value, status: option.status[0] })\n this.$emit('input', valuePointer)\n return\n }\n\n // If it already exists, cycle through the status\n const currentStatusIndex = option.status.indexOf(existedValue.status)\n if ((currentStatusIndex + 1) % option.status.length === 0) {\n this.$emit('input', valuePointer.filter(valu => valu.value !== option.value))\n return\n }\n\n this.$emit('input', valuePointer.map(current => {\n if (current.value === option.value) {\n return { value: option.value, status: option.status[currentStatusIndex + 1] }\n }\n return current\n }))\n } else {\n // This is not properly done. Will need to fix if we need to have a single select cycle value\n console.log(this.value, val)\n if (this.value !== val) this.$emit('input', val)\n else this.$emit('input', undefined)\n }\n }\n\n toggleSelect (val) {\n if (this.disabled) return\n if (this.multiple) {\n if (!(this.value instanceof Array)) {\n console.error(`Incompatible : Expected 'value' to be array type but is ${typeof this.value}`)\n return\n }\n // already include\n const valuePointer = this.value as string[]\n if (valuePointer.includes(val)) {\n this.$emit('input', valuePointer.filter(valu => valu !== val))\n } else {\n if (this.multiLimit && valuePointer.concat(val).length > this.multiLimit) {\n alert(`Maximum ${this.multiLimit} can be selected.`)\n return\n }\n this.$emit('input', valuePointer.concat(val))\n }\n } else {\n console.log(this.value, val)\n if (this.value !== val) this.$emit('input', val)\n else this.$emit('input', undefined)\n }\n }\n}\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSmartSelect.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--14-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--14-3!../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./AppSmartSelect.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppSmartSelect.vue?vue&type=template&id=6299c210&scoped=true&\"\nimport script from \"./AppSmartSelect.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppSmartSelect.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppSmartSelect.vue?vue&type=style&index=0&id=6299c210&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6299c210\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}