-(window.webpackJsonpUserStatus=window.webpackJsonpUserStatus||[]).push([[2],{365:function(t,e,s){var a=s(377);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("174642e6",a,!0,{})},366:function(t,e,s){var a=s(379);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("9bd18a2a",a,!0,{})},367:function(t,e,s){var a=s(381);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("6fa59d7a",a,!0,{})},368:function(t,e,s){var a=s(394);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("69246a14",a,!0,{})},369:function(t,e,s){var a=s(396);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("4bbc091f",a,!0,{})},370:function(t,e,s){var a=s(398);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("5bd52728",a,!0,{})},376:function(t,e,s){"use strict";var a=s(365);s.n(a).a},377:function(t,e,s){(e=s(258)(!1)).push([t.i,".predefined-status[data-v-2af0cabf]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-2af0cabf]:hover,.predefined-status[data-v-2af0cabf]:focus{background-color:var(--color-background-hover)}.predefined-status__icon[data-v-2af0cabf]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-2af0cabf]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-2af0cabf]{opacity:.7}.predefined-status__clear-at[data-v-2af0cabf]::before{content:' - '}\n",""]),t.exports=e},378:function(t,e,s){"use strict";var a=s(366);s.n(a).a},379:function(t,e,s){(e=s(258)(!1)).push([t.i,".predefined-statuses-list[data-v-3b99f880]{display:flex;flex-direction:column;margin-bottom:10px}\n",""]),t.exports=e},380:function(t,e,s){"use strict";var a=s(367);s.n(a).a},381:function(t,e,s){(e=s(258)(!1)).push([t.i,".custom-input__form[data-v-67479d68]{flex-grow:1}.custom-input__form input[data-v-67479d68]{width:100%;border-radius:0 var(--border-radius) var(--border-radius) 0}\n",""]),t.exports=e},393:function(t,e,s){"use strict";var a=s(368);s.n(a).a},394:function(t,e,s){(e=s(258)(!1)).push([t.i,".clear-at-select[data-v-44cd4ace]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-44cd4ace]{margin-right:10px}.clear-at-select .multiselect[data-v-44cd4ace]{flex-grow:1}\n",""]),t.exports=e},395:function(t,e,s){"use strict";var a=s(369);s.n(a).a},396:function(t,e,s){(e=s(258)(!1)).push([t.i,".user-status-online-select__input[data-v-24baf5da]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-24baf5da]{display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__label[data-v-24baf5da]:hover{border-color:var(--color-primary)}\n",""]),t.exports=e},397:function(t,e,s){"use strict";var a=s(370);s.n(a).a},398:function(t,e,s){(e=s(258)(!1)).push([t.i,".set-status-modal[data-v-54bd1093]{min-width:500px;min-height:200px;padding:8px 20px 20px 20px}.set-status-modal__header[data-v-54bd1093]{text-align:center;font-weight:bold}.set-status-modal__online-status[data-v-54bd1093]{display:grid;margin-bottom:40px;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-54bd1093]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__custom-input .custom-input__emoji-button[data-v-54bd1093]{flex-basis:40px;flex-grow:0;width:40px;height:34px;margin-right:0;border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.set-status-modal .status-buttons[data-v-54bd1093]{display:flex}.set-status-modal .status-buttons button[data-v-54bd1093]{flex-basis:50%}\n",""]),t.exports=e},399:function(t,e,s){"use strict";s.r(e);var a=s(326),n=s(371),r=s.n(n),i=s(374),u=s.n(i),l=s(238),o=s(325),c=s(79),d=s.n(c),p=s(327),f=function(t){if(null===t)return Object(l.translate)("user_status","Don't clear");if("end-of"===t.type)switch(t.time){case"day":return Object(l.translate)("user_status","Today");case"week":return Object(l.translate)("user_status","This week");default:return null}if("period"===t.type)return d.a.duration(1e3*t.time).humanize();if("_time"===t.type){var e=d()(Object(p.a)()),s=d()(t.time,"X");return d.a.duration(e.diff(s)).humanize()}return null},b={name:"PredefinedStatus",filters:{clearAtFilter:f},props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null}},methods:{select:function(){this.$emit("select")}}},m=(s(376),s(80)),h=Object(m.a)(b,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"predefined-status",attrs:{"tabindex":"0"},on:{"keyup":[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.select(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:t.select(e)}],"click":t.select}},[s("span",{staticClass:"predefined-status__icon"},[t._v("\n\t\t"+t._s(t.icon)+"\n\t")]),t._v(" "),s("span",{staticClass:"predefined-status__message"},[t._v("\n\t\t"+t._s(t.message)+"\n\t")]),t._v(" "),s("span",{staticClass:"predefined-status__clear-at"},[t._v("\n\t\t"+t._s(t._f("clearAtFilter")(t.clearAt))+"\n\t")])])}),[],!1,null,"2af0cabf",null).exports,_=s(235);function v(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),s.push.apply(s,a)}return s}function g(t){for(var e=1;e<arguments.length;e++){var s=null!=arguments[e]?arguments[e]:{};e%2?v(Object(s),!0).forEach((function(e){y(t,e,s[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(s)):v(Object(s)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(s,e))}))}return t}function y(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}var x={name:"PredefinedStatusesList",components:{PredefinedStatus:h},computed:g(g({},Object(_.b)({predefinedStatuses:function(t){return t.predefinedStatuses.predefinedStatuses}})),{},{hasLoaded:function(){return this.predefinedStatuses.length>0}}),mounted:function(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{selectStatus:function(t){this.$emit("selectStatus",t)}}},S=(s(378),Object(m.a)(x,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.hasLoaded?s("div",{staticClass:"predefined-statuses-list"},t._l(t.predefinedStatuses,(function(e){return s("PredefinedStatus",{key:e.id,attrs:{"message-id":e.id,"icon":e.icon,"message":e.message,"clear-at":e.clearAt},on:{"select":function(s){return t.selectStatus(e)}}})})),1):s("div",{staticClass:"predefined-statuses-list"},[s("div",{staticClass:"icon icon-loading-small"})])}),[],!1,null,"3b99f880",null).exports),O={name:"CustomMessageInput",props:{message:{type:String,required:!0,default:function(){return""}}},methods:{change:function(t){this.$emit("change",t.target.value)}}},j=(s(380),Object(m.a)(O,(function(){var t=this.$createElement,e=this._self._c||t;return e("form",{staticClass:"custom-input__form",on:{"submit":function(t){t.preventDefault()}}},[e("input",{attrs:{"maxlength":"80","placeholder":this.$t("user_status","What's your status?"),"type":"text"},domProps:{"value":this.message},on:{"change":this.change}})])}),[],!1,null,"67479d68",null).exports),k=s(382),w={name:"ClearAtSelect",components:{Multiselect:s.n(k).a},props:{clearAt:{type:Object,default:null}},data:function(){return{options:[{label:Object(l.translate)("user_status","Don't clear"),clearAt:null},{label:Object(l.translate)("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:Object(l.translate)("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:Object(l.translate)("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:Object(l.translate)("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:Object(l.translate)("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}},computed:{option:function(){return{clearAt:this.clearAt,label:f(this.clearAt)}}},methods:{select:function(t){t&&this.$emit("selectClearAt",t.clearAt)}}},C=(s(393),Object(m.a)(w,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"clear-at-select"},[e("span",{staticClass:"clear-at-select__label"},[this._v("\n\t\t"+this._s(this.$t("user_status","Clear status message after"))+"\n\t")]),this._v(" "),e("Multiselect",{attrs:{"label":"label","value":this.option,"options":this.options,"open-direction":"top"},on:{"select":this.select}})],1)}),[],!1,null,"44cd4ace",null).exports),A={name:"OnlineStatusSelect",props:{checked:{type:Boolean,default:!1},icon:{type:String,required:!0},type:{type:String,required:!0}},computed:{id:function(){return"user-status-online-status-".concat(this.type)}},methods:{onChange:function(){this.$emit("select",this.type)}}},$=(s(395),Object(m.a)(A,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"user-status-online-select"},[e("input",{staticClass:"user-status-online-select__input",attrs:{"id":this.id,"type":"radio","name":"user-status-online"},domProps:{"checked":this.checked},on:{"change":this.onChange}}),this._v(" "),e("label",{staticClass:"user-status-online-select__label",class:this.icon,attrs:{"for":this.id}},[this._t("default")],2)])}),[],!1,null,"24baf5da",null).exports);function P(t,e,s,a,n,r,i){try{var u=t[r](i),l=u.value}catch(t){return void s(t)}u.done?e(l):Promise.resolve(l).then(a,n)}function M(t){return function(){var e=this,s=arguments;return new Promise((function(a,n){var r=t.apply(e,s);function i(t){P(r,a,n,i,u,"next",t)}function u(t){P(r,a,n,i,u,"throw",t)}i(void 0)}))}}var I={name:"SetStatusModal",components:{ClearAtSelect:C,CustomMessageInput:j,EmojiPicker:r.a,Modal:u.a,OnlineStatusSelect:$,PredefinedStatusesList:S},mixins:[o.a],data:function(){return{clearAt:null,icon:null,message:null,statuses:[{type:"online",label:Object(l.translate)("user_status","Online"),icon:"icon-user-status-online"},{type:"away",label:Object(l.translate)("user_status","Away"),icon:"icon-user-status-away"},{type:"dnd",label:Object(l.translate)("user_status","Do not disturb"),subline:Object(l.translate)("user_status","Mute all notifications"),icon:"icon-user-status-dnd"},{type:"invisible",label:Object(l.translate)("user_status","Invisible"),icon:"icon-user-status-invisible"}]}},computed:{visibleIcon:function(){return this.icon||"😀"}},mounted:function(){this.messageId=this.$store.state.userStatus.messageId,this.icon=this.$store.state.userStatus.icon,this.message=this.$store.state.userStatus.message,null!==this.$store.state.userStatus.clearAt&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{closeModal:function(){this.$emit("close")},setIcon:function(t){this.messageId=null,this.icon=t},setMessage:function(t){this.messageId=null,this.message=t},setClearAt:function(t){this.clearAt=t},selectPredefinedMessage:function(t){this.messageId=t.id,this.clearAt=t.clearAt,this.icon=t.icon,this.message=t.message},saveStatus:function(){var t=this;return M(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,t.isSavingStatus=!0,null===t.messageId){e.next=7;break}return e.next=5,t.$store.dispatch("setPredefinedMessage",{messageId:t.messageId,clearAt:t.clearAt});case 5:e.next=9;break;case 7:return e.next=9,t.$store.dispatch("setCustomMessage",{message:t.message,icon:t.icon,clearAt:t.clearAt});case 9:e.next=17;break;case 11:return e.prev=11,e.t0=e.catch(0),Object(a.a)(t.$t("user_status","There was an error saving the status")),console.debug(e.t0),t.isSavingStatus=!1,e.abrupt("return");case 17:t.isSavingStatus=!1,t.closeModal();case 19:case"end":return e.stop()}}),e,null,[[0,11]])})))()},clearStatus:function(){var t=this;return M(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,t.isSavingStatus=!0,e.next=4,t.$store.dispatch("clearMessage");case 4:e.next=12;break;case 6:return e.prev=6,e.t0=e.catch(0),Object(a.a)(t.$t("user_status","There was an error clearing the status")),console.debug(e.t0),t.isSavingStatus=!1,e.abrupt("return");case 12:t.isSavingStatus=!1,t.closeModal();case 14:case"end":return e.stop()}}),e,null,[[0,6]])})))()}}},E=(s(397),Object(m.a)(I,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("Modal",{attrs:{"size":"normal","title":t.$t("user_status","Set status")},on:{"close":t.closeModal}},[s("div",{staticClass:"set-status-modal"},[s("div",{staticClass:"set-status-modal__header"},[s("h3",[t._v(t._s(t.$t("user_status","Online status")))])]),t._v(" "),s("div",{staticClass:"set-status-modal__online-status"},t._l(t.statuses,(function(e){return s("OnlineStatusSelect",t._b({key:e.type,attrs:{"checked":e.type===t.statusType},on:{"select":t.changeStatus}},"OnlineStatusSelect",e,!1),[t._v("\n\t\t\t\t"+t._s(e.label)+"\n\t\t\t")])})),1),t._v(" "),s("div",{staticClass:"set-status-modal__header"},[s("h3",[t._v(t._s(t.$t("user_status","Status message")))])]),t._v(" "),s("div",{staticClass:"set-status-modal__custom-input"},[s("EmojiPicker",{on:{"select":t.setIcon}},[s("button",{staticClass:"custom-input__emoji-button"},[t._v("\n\t\t\t\t\t"+t._s(t.visibleIcon)+"\n\t\t\t\t")])]),t._v(" "),s("CustomMessageInput",{attrs:{"message":t.message},on:{"change":t.setMessage}})],1),t._v(" "),s("PredefinedStatusesList",{on:{"selectStatus":t.selectPredefinedMessage}}),t._v(" "),s("ClearAtSelect",{attrs:{"clear-at":t.clearAt},on:{"selectClearAt":t.setClearAt}}),t._v(" "),s("div",{staticClass:"status-buttons"},[s("button",{staticClass:"status-buttons__select",on:{"click":t.clearStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Clear status message"))+"\n\t\t\t")]),t._v(" "),s("button",{staticClass:"status-buttons__primary primary",on:{"click":t.saveStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Set status message"))+"\n\t\t\t")])])],1)])}),[],!1,null,"54bd1093",null));e.default=E.exports}}]);
-//# sourceMappingURL=user-status-modal.js.map?v=dd13e60959c9e0d5d9b2
\ No newline at end of file
+(window.webpackJsonpUserStatus=window.webpackJsonpUserStatus||[]).push([[2],{365:function(t,e,s){var a=s(377);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("174642e6",a,!0,{})},366:function(t,e,s){var a=s(379);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("9bd18a2a",a,!0,{})},367:function(t,e,s){var a=s(381);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("6fa59d7a",a,!0,{})},368:function(t,e,s){var a=s(394);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("69246a14",a,!0,{})},369:function(t,e,s){var a=s(396);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("4bbc091f",a,!0,{})},370:function(t,e,s){var a=s(398);"string"==typeof a&&(a=[[t.i,a,""]]),a.locals&&(t.exports=a.locals);(0,s(259).default)("284109cb",a,!0,{})},376:function(t,e,s){"use strict";var a=s(365);s.n(a).a},377:function(t,e,s){(e=s(258)(!1)).push([t.i,".predefined-status[data-v-2af0cabf]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-2af0cabf]:hover,.predefined-status[data-v-2af0cabf]:focus{background-color:var(--color-background-hover)}.predefined-status__icon[data-v-2af0cabf]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-2af0cabf]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-2af0cabf]{opacity:.7}.predefined-status__clear-at[data-v-2af0cabf]::before{content:' - '}\n",""]),t.exports=e},378:function(t,e,s){"use strict";var a=s(366);s.n(a).a},379:function(t,e,s){(e=s(258)(!1)).push([t.i,".predefined-statuses-list[data-v-3b99f880]{display:flex;flex-direction:column;margin-bottom:10px}\n",""]),t.exports=e},380:function(t,e,s){"use strict";var a=s(367);s.n(a).a},381:function(t,e,s){(e=s(258)(!1)).push([t.i,".custom-input__form[data-v-67479d68]{flex-grow:1}.custom-input__form input[data-v-67479d68]{width:100%;border-radius:0 var(--border-radius) var(--border-radius) 0}\n",""]),t.exports=e},393:function(t,e,s){"use strict";var a=s(368);s.n(a).a},394:function(t,e,s){(e=s(258)(!1)).push([t.i,".clear-at-select[data-v-44cd4ace]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-44cd4ace]{margin-right:10px}.clear-at-select .multiselect[data-v-44cd4ace]{flex-grow:1}\n",""]),t.exports=e},395:function(t,e,s){"use strict";var a=s(369);s.n(a).a},396:function(t,e,s){(e=s(258)(!1)).push([t.i,".user-status-online-select__input[data-v-24baf5da]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-24baf5da]{display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__label[data-v-24baf5da]:hover{border-color:var(--color-primary)}\n",""]),t.exports=e},397:function(t,e,s){"use strict";var a=s(370);s.n(a).a},398:function(t,e,s){(e=s(258)(!1)).push([t.i,".set-status-modal[data-v-3fd3b108]{min-width:500px;min-height:200px;padding:8px 20px 20px 20px;max-height:70vh;overflow:auto}.set-status-modal__header[data-v-3fd3b108]{text-align:center;font-weight:bold}.set-status-modal__online-status[data-v-3fd3b108]{display:grid;margin-bottom:40px;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-3fd3b108]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__custom-input .custom-input__emoji-button[data-v-3fd3b108]{flex-basis:40px;flex-grow:0;width:40px;height:34px;margin-right:0;border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.set-status-modal .status-buttons[data-v-3fd3b108]{display:flex}.set-status-modal .status-buttons button[data-v-3fd3b108]{flex-basis:50%}\n",""]),t.exports=e},399:function(t,e,s){"use strict";s.r(e);var a=s(326),n=s(371),r=s.n(n),i=s(374),u=s.n(i),l=s(238),o=s(325),c=s(79),d=s.n(c),p=s(327),f=function(t){if(null===t)return Object(l.translate)("user_status","Don't clear");if("end-of"===t.type)switch(t.time){case"day":return Object(l.translate)("user_status","Today");case"week":return Object(l.translate)("user_status","This week");default:return null}if("period"===t.type)return d.a.duration(1e3*t.time).humanize();if("_time"===t.type){var e=d()(Object(p.a)()),s=d()(t.time,"X");return d.a.duration(e.diff(s)).humanize()}return null},b={name:"PredefinedStatus",filters:{clearAtFilter:f},props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null}},methods:{select:function(){this.$emit("select")}}},m=(s(376),s(80)),h=Object(m.a)(b,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("div",{staticClass:"predefined-status",attrs:{"tabindex":"0"},on:{"keyup":[function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"enter",13,e.key,"Enter")?null:t.select(e)},function(e){return!e.type.indexOf("key")&&t._k(e.keyCode,"space",32,e.key,[" ","Spacebar"])?null:t.select(e)}],"click":t.select}},[s("span",{staticClass:"predefined-status__icon"},[t._v("\n\t\t"+t._s(t.icon)+"\n\t")]),t._v(" "),s("span",{staticClass:"predefined-status__message"},[t._v("\n\t\t"+t._s(t.message)+"\n\t")]),t._v(" "),s("span",{staticClass:"predefined-status__clear-at"},[t._v("\n\t\t"+t._s(t._f("clearAtFilter")(t.clearAt))+"\n\t")])])}),[],!1,null,"2af0cabf",null).exports,_=s(235);function v(t,e){var s=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),s.push.apply(s,a)}return s}function g(t){for(var e=1;e<arguments.length;e++){var s=null!=arguments[e]?arguments[e]:{};e%2?v(Object(s),!0).forEach((function(e){y(t,e,s[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(s)):v(Object(s)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(s,e))}))}return t}function y(t,e,s){return e in t?Object.defineProperty(t,e,{value:s,enumerable:!0,configurable:!0,writable:!0}):t[e]=s,t}var x={name:"PredefinedStatusesList",components:{PredefinedStatus:h},computed:g(g({},Object(_.b)({predefinedStatuses:function(t){return t.predefinedStatuses.predefinedStatuses}})),{},{hasLoaded:function(){return this.predefinedStatuses.length>0}}),mounted:function(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{selectStatus:function(t){this.$emit("selectStatus",t)}}},S=(s(378),Object(m.a)(x,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return t.hasLoaded?s("div",{staticClass:"predefined-statuses-list"},t._l(t.predefinedStatuses,(function(e){return s("PredefinedStatus",{key:e.id,attrs:{"message-id":e.id,"icon":e.icon,"message":e.message,"clear-at":e.clearAt},on:{"select":function(s){return t.selectStatus(e)}}})})),1):s("div",{staticClass:"predefined-statuses-list"},[s("div",{staticClass:"icon icon-loading-small"})])}),[],!1,null,"3b99f880",null).exports),O={name:"CustomMessageInput",props:{message:{type:String,required:!0,default:function(){return""}}},methods:{change:function(t){this.$emit("change",t.target.value)}}},j=(s(380),Object(m.a)(O,(function(){var t=this.$createElement,e=this._self._c||t;return e("form",{staticClass:"custom-input__form",on:{"submit":function(t){t.preventDefault()}}},[e("input",{attrs:{"maxlength":"80","placeholder":this.$t("user_status","What's your status?"),"type":"text"},domProps:{"value":this.message},on:{"change":this.change}})])}),[],!1,null,"67479d68",null).exports),w=s(382),k={name:"ClearAtSelect",components:{Multiselect:s.n(w).a},props:{clearAt:{type:Object,default:null}},data:function(){return{options:[{label:Object(l.translate)("user_status","Don't clear"),clearAt:null},{label:Object(l.translate)("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:Object(l.translate)("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:Object(l.translate)("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:Object(l.translate)("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:Object(l.translate)("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}},computed:{option:function(){return{clearAt:this.clearAt,label:f(this.clearAt)}}},methods:{select:function(t){t&&this.$emit("selectClearAt",t.clearAt)}}},C=(s(393),Object(m.a)(k,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"clear-at-select"},[e("span",{staticClass:"clear-at-select__label"},[this._v("\n\t\t"+this._s(this.$t("user_status","Clear status message after"))+"\n\t")]),this._v(" "),e("Multiselect",{attrs:{"label":"label","value":this.option,"options":this.options,"open-direction":"top"},on:{"select":this.select}})],1)}),[],!1,null,"44cd4ace",null).exports),A={name:"OnlineStatusSelect",props:{checked:{type:Boolean,default:!1},icon:{type:String,required:!0},type:{type:String,required:!0}},computed:{id:function(){return"user-status-online-status-".concat(this.type)}},methods:{onChange:function(){this.$emit("select",this.type)}}},$=(s(395),Object(m.a)(A,(function(){var t=this.$createElement,e=this._self._c||t;return e("div",{staticClass:"user-status-online-select"},[e("input",{staticClass:"user-status-online-select__input",attrs:{"id":this.id,"type":"radio","name":"user-status-online"},domProps:{"checked":this.checked},on:{"change":this.onChange}}),this._v(" "),e("label",{staticClass:"user-status-online-select__label",class:this.icon,attrs:{"for":this.id}},[this._t("default")],2)])}),[],!1,null,"24baf5da",null).exports);function P(t,e,s,a,n,r,i){try{var u=t[r](i),l=u.value}catch(t){return void s(t)}u.done?e(l):Promise.resolve(l).then(a,n)}function M(t){return function(){var e=this,s=arguments;return new Promise((function(a,n){var r=t.apply(e,s);function i(t){P(r,a,n,i,u,"next",t)}function u(t){P(r,a,n,i,u,"throw",t)}i(void 0)}))}}var I={name:"SetStatusModal",components:{ClearAtSelect:C,CustomMessageInput:j,EmojiPicker:r.a,Modal:u.a,OnlineStatusSelect:$,PredefinedStatusesList:S},mixins:[o.a],data:function(){return{clearAt:null,icon:null,message:null,statuses:[{type:"online",label:Object(l.translate)("user_status","Online"),icon:"icon-user-status-online"},{type:"away",label:Object(l.translate)("user_status","Away"),icon:"icon-user-status-away"},{type:"dnd",label:Object(l.translate)("user_status","Do not disturb"),subline:Object(l.translate)("user_status","Mute all notifications"),icon:"icon-user-status-dnd"},{type:"invisible",label:Object(l.translate)("user_status","Invisible"),icon:"icon-user-status-invisible"}]}},computed:{visibleIcon:function(){return this.icon||"😀"}},mounted:function(){this.messageId=this.$store.state.userStatus.messageId,this.icon=this.$store.state.userStatus.icon,this.message=this.$store.state.userStatus.message,null!==this.$store.state.userStatus.clearAt&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{closeModal:function(){this.$emit("close")},setIcon:function(t){this.messageId=null,this.icon=t},setMessage:function(t){this.messageId=null,this.message=t},setClearAt:function(t){this.clearAt=t},selectPredefinedMessage:function(t){this.messageId=t.id,this.clearAt=t.clearAt,this.icon=t.icon,this.message=t.message},saveStatus:function(){var t=this;return M(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(e.prev=0,t.isSavingStatus=!0,null===t.messageId){e.next=7;break}return e.next=5,t.$store.dispatch("setPredefinedMessage",{messageId:t.messageId,clearAt:t.clearAt});case 5:e.next=9;break;case 7:return e.next=9,t.$store.dispatch("setCustomMessage",{message:t.message,icon:t.icon,clearAt:t.clearAt});case 9:e.next=17;break;case 11:return e.prev=11,e.t0=e.catch(0),Object(a.a)(t.$t("user_status","There was an error saving the status")),console.debug(e.t0),t.isSavingStatus=!1,e.abrupt("return");case 17:t.isSavingStatus=!1,t.closeModal();case 19:case"end":return e.stop()}}),e,null,[[0,11]])})))()},clearStatus:function(){var t=this;return M(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,t.isSavingStatus=!0,e.next=4,t.$store.dispatch("clearMessage");case 4:e.next=12;break;case 6:return e.prev=6,e.t0=e.catch(0),Object(a.a)(t.$t("user_status","There was an error clearing the status")),console.debug(e.t0),t.isSavingStatus=!1,e.abrupt("return");case 12:t.isSavingStatus=!1,t.closeModal();case 14:case"end":return e.stop()}}),e,null,[[0,6]])})))()}}},E=(s(397),Object(m.a)(I,(function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("Modal",{attrs:{"size":"normal","title":t.$t("user_status","Set status")},on:{"close":t.closeModal}},[s("div",{staticClass:"set-status-modal"},[s("div",{staticClass:"set-status-modal__header"},[s("h3",[t._v(t._s(t.$t("user_status","Online status")))])]),t._v(" "),s("div",{staticClass:"set-status-modal__online-status"},t._l(t.statuses,(function(e){return s("OnlineStatusSelect",t._b({key:e.type,attrs:{"checked":e.type===t.statusType},on:{"select":t.changeStatus}},"OnlineStatusSelect",e,!1),[t._v("\n\t\t\t\t"+t._s(e.label)+"\n\t\t\t")])})),1),t._v(" "),s("div",{staticClass:"set-status-modal__header"},[s("h3",[t._v(t._s(t.$t("user_status","Status message")))])]),t._v(" "),s("div",{staticClass:"set-status-modal__custom-input"},[s("EmojiPicker",{on:{"select":t.setIcon}},[s("button",{staticClass:"custom-input__emoji-button"},[t._v("\n\t\t\t\t\t"+t._s(t.visibleIcon)+"\n\t\t\t\t")])]),t._v(" "),s("CustomMessageInput",{attrs:{"message":t.message},on:{"change":t.setMessage}})],1),t._v(" "),s("PredefinedStatusesList",{on:{"selectStatus":t.selectPredefinedMessage}}),t._v(" "),s("ClearAtSelect",{attrs:{"clear-at":t.clearAt},on:{"selectClearAt":t.setClearAt}}),t._v(" "),s("div",{staticClass:"status-buttons"},[s("button",{staticClass:"status-buttons__select",on:{"click":t.clearStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Clear status message"))+"\n\t\t\t")]),t._v(" "),s("button",{staticClass:"status-buttons__primary primary",on:{"click":t.saveStatus}},[t._v("\n\t\t\t\t"+t._s(t.$t("user_status","Set status message"))+"\n\t\t\t")])])],1)])}),[],!1,null,"3fd3b108",null));e.default=E.exports}}]);
+//# sourceMappingURL=user-status-modal.js.map?v=e741887d980de2b0fa6f
\ No newline at end of file
-{"version":3,"sources":["webpack:///./apps/user_status/src/components/PredefinedStatus.vue?1a6d","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?59bc","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?0902","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?4fd3","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?fd60","webpack:///./apps/user_status/src/components/SetStatusModal.vue?6de1","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?5922","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?3206","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?a8a6","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?2ba4","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?26ae","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?3737","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?b018","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?edf2","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?1f8d","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?213f","webpack:///./apps/user_status/src/components/SetStatusModal.vue?760e","webpack:///./apps/user_status/src/components/SetStatusModal.vue?e8cd","webpack:///./apps/user_status/src/components/SetStatusModal.vue?d841","webpack:///./apps/user_status/src/filters/clearAtFilter.js","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?5871","webpack:///apps/user_status/src/components/PredefinedStatus.vue","webpack:///./apps/user_status/src/components/PredefinedStatus.vue","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?20d4","webpack:///apps/user_status/src/components/PredefinedStatusesList.vue","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?9690","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?6286","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?2b42","webpack:///apps/user_status/src/components/CustomMessageInput.vue","webpack:///./apps/user_status/src/components/CustomMessageInput.vue","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?13c0","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?d093","webpack:///apps/user_status/src/components/ClearAtSelect.vue","webpack:///./apps/user_status/src/services/clearAtOptionsService.js","webpack:///./apps/user_status/src/components/ClearAtSelect.vue","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?0858","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?1de7","webpack:///apps/user_status/src/components/OnlineStatusSelect.vue","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?48a4","webpack:///apps/user_status/src/components/SetStatusModal.vue","webpack:///./apps/user_status/src/components/SetStatusModal.vue?b0c6","webpack:///./apps/user_status/src/services/statusOptionsService.js","webpack:///./apps/user_status/src/components/SetStatusModal.vue"],"names":["content","module","i","locals","exports","add","default","___CSS_LOADER_API_IMPORT___","push","clearAtFilter","clearAt","t","type","time","moment","duration","humanize","momentNow","dateFactory","momentClearAt","diff","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","on","$event","indexOf","_k","keyCode","key","select","_v","_s","icon","message","_f","_l","status","id","selectStatus","preventDefault","$t","domProps","change","label","option","options","checked","onChange","class","_t","subline","closeModal","_b","statusType","changeStatus","setIcon","visibleIcon","setMessage","selectPredefinedMessage","setClearAt","clearStatus","saveStatus"],"mappings":"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","file":"user-status-modal.js?v=dd13e60959c9e0d5d9b2","sourcesContent":["// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"174642e6\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"9bd18a2a\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6fa59d7a\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"69246a14\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4bbc091f\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=54bd1093&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"5bd52728\", content, true, {});","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".predefined-status[data-v-2af0cabf]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-2af0cabf]:hover,.predefined-status[data-v-2af0cabf]:focus{background-color:var(--color-background-hover)}.predefined-status__icon[data-v-2af0cabf]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-2af0cabf]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-2af0cabf]{opacity:.7}.predefined-status__clear-at[data-v-2af0cabf]::before{content:' - '}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".predefined-statuses-list[data-v-3b99f880]{display:flex;flex-direction:column;margin-bottom:10px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".custom-input__form[data-v-67479d68]{flex-grow:1}.custom-input__form input[data-v-67479d68]{width:100%;border-radius:0 var(--border-radius) var(--border-radius) 0}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".clear-at-select[data-v-44cd4ace]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-44cd4ace]{margin-right:10px}.clear-at-select .multiselect[data-v-44cd4ace]{flex-grow:1}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".user-status-online-select__input[data-v-24baf5da]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-24baf5da]{display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__label[data-v-24baf5da]:hover{border-color:var(--color-primary)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=54bd1093&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=54bd1093&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".set-status-modal[data-v-54bd1093]{min-width:500px;min-height:200px;padding:8px 20px 20px 20px}.set-status-modal__header[data-v-54bd1093]{text-align:center;font-weight:bold}.set-status-modal__online-status[data-v-54bd1093]{display:grid;margin-bottom:40px;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-54bd1093]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__custom-input .custom-input__emoji-button[data-v-54bd1093]{flex-basis:40px;flex-grow:0;width:40px;height:34px;margin-right:0;border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.set-status-modal .status-buttons[data-v-54bd1093]{display:flex}.set-status-modal .status-buttons button[data-v-54bd1093]{flex-basis:50%}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"size\":\"normal\",\"title\":_vm.$t('user_status', 'Set status')},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"set-status-modal\"},[_c('div',{staticClass:\"set-status-modal__header\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('user_status', 'Online status')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__online-status\"},_vm._l((_vm.statuses),function(status){return _c('OnlineStatusSelect',_vm._b({key:status.type,attrs:{\"checked\":status.type === _vm.statusType},on:{\"select\":_vm.changeStatus}},'OnlineStatusSelect',status,false),[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(status.label)+\"\\n\\t\\t\\t\")])}),1),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__header\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('user_status', 'Status message')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__custom-input\"},[_c('EmojiPicker',{on:{\"select\":_vm.setIcon}},[_c('button',{staticClass:\"custom-input__emoji-button\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.visibleIcon)+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('CustomMessageInput',{attrs:{\"message\":_vm.message},on:{\"change\":_vm.setMessage}})],1),_vm._v(\" \"),_c('PredefinedStatusesList',{on:{\"selectStatus\":_vm.selectPredefinedMessage}}),_vm._v(\" \"),_c('ClearAtSelect',{attrs:{\"clear-at\":_vm.clearAt},on:{\"selectClearAt\":_vm.setClearAt}}),_vm._v(\" \"),_c('div',{staticClass:\"status-buttons\"},[_c('button',{staticClass:\"status-buttons__select\",on:{\"click\":_vm.clearStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status message'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"status-buttons__primary primary\",on:{\"click\":_vm.saveStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Set status message'))+\"\\n\\t\\t\\t\")])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n'\nimport moment from '@nextcloud/moment'\nimport { dateFactory } from '../services/dateService'\n\n/**\n * Formats a clearAt object to be human readable\n *\n * @param {Object} clearAt The clearAt object\n * @returns {string|null}\n */\nconst clearAtFilter = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn t('user_status', 'Don\\'t clear')\n\t}\n\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\t\treturn t('user_status', 'Today')\n\t\tcase 'week':\n\t\t\treturn t('user_status', 'This week')\n\n\t\tdefault:\n\t\t\treturn null\n\t\t}\n\t}\n\n\tif (clearAt.type === 'period') {\n\t\treturn moment.duration(clearAt.time * 1000).humanize()\n\t}\n\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\tconst momentNow = moment(dateFactory())\n\t\tconst momentClearAt = moment(clearAt.time, 'X')\n\n\t\treturn moment.duration(momentNow.diff(momentClearAt)).humanize()\n\t}\n\n\treturn null\n}\n\nexport {\n\tclearAtFilter,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div\n\t\tclass=\"predefined-status\"\n\t\ttabindex=\"0\"\n\t\t@keyup.enter=\"select\"\n\t\t@keyup.space=\"select\"\n\t\t@click=\"select\">\n\t\t<span class=\"predefined-status__icon\">\n\t\t\t{{ icon }}\n\t\t</span>\n\t\t<span class=\"predefined-status__message\">\n\t\t\t{{ message }}\n\t\t</span>\n\t\t<span class=\"predefined-status__clear-at\">\n\t\t\t{{ clearAt | clearAtFilter }}\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { clearAtFilter } from '../filters/clearAtFilter'\n\nexport default {\n\tname: 'PredefinedStatus',\n\tfilters: {\n\t\tclearAtFilter,\n\t},\n\tprops: {\n\t\tmessageId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user clicks the row\n\t\t */\n\t\tselect() {\n\t\t\tthis.$emit('select')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\topacity: .7;\n\n\t\t&::before {\n\t\t\tcontent: ' - ';\n\t\t}\n\t}\n}\n</style>\n","import { render, staticRenderFns } from \"./PredefinedStatus.vue?vue&type=template&id=2af0cabf&scoped=true&\"\nimport script from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&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 \"2af0cabf\",\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:\"predefined-status\",attrs:{\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.select($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.select($event)}],\"click\":_vm.select}},[_c('span',{staticClass:\"predefined-status__icon\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.icon)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__message\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__clear-at\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm._f(\"clearAtFilter\")(_vm.clearAt))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div\n\t\tv-if=\"hasLoaded\"\n\t\tclass=\"predefined-statuses-list\">\n\t\t<PredefinedStatus\n\t\t\tv-for=\"status in predefinedStatuses\"\n\t\t\t:key=\"status.id\"\n\t\t\t:message-id=\"status.id\"\n\t\t\t:icon=\"status.icon\"\n\t\t\t:message=\"status.message\"\n\t\t\t:clear-at=\"status.clearAt\"\n\t\t\t@select=\"selectStatus(status)\" />\n\t</div>\n\t<div\n\t\tv-else\n\t\tclass=\"predefined-statuses-list\">\n\t\t<div class=\"icon icon-loading-small\" />\n\t</div>\n</template>\n\n<script>\nimport PredefinedStatus from './PredefinedStatus'\nimport { mapState } from 'vuex'\n\nexport default {\n\tname: 'PredefinedStatusesList',\n\tcomponents: {\n\t\tPredefinedStatus,\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tpredefinedStatuses: state => state.predefinedStatuses.predefinedStatuses,\n\t\t}),\n\t\t/**\n\t\t * Indicator whether the predefined statuses have already been loaded\n\t\t *\n\t\t * @returns {boolean}\n\t\t */\n\t\thasLoaded() {\n\t\t\treturn this.predefinedStatuses.length > 0\n\t\t},\n\t},\n\t/**\n\t * Loads all predefined statuses from the server\n\t * when this component is mounted\n\t */\n\tmounted() {\n\t\tthis.$store.dispatch('loadAllPredefinedStatuses')\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user selects a status\n\t\t *\n\t\t * @param {Object} status The selected status\n\t\t */\n\t\tselectStatus(status) {\n\t\t\tthis.$emit('selectStatus', status)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-statuses-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 10px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PredefinedStatusesList.vue?vue&type=template&id=3b99f880&scoped=true&\"\nimport script from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&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 \"3b99f880\",\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 (_vm.hasLoaded)?_c('div',{staticClass:\"predefined-statuses-list\"},_vm._l((_vm.predefinedStatuses),function(status){return _c('PredefinedStatus',{key:status.id,attrs:{\"message-id\":status.id,\"icon\":status.icon,\"message\":status.message,\"clear-at\":status.clearAt},on:{\"select\":function($event){return _vm.selectStatus(status)}}})}),1):_c('div',{staticClass:\"predefined-statuses-list\"},[_c('div',{staticClass:\"icon icon-loading-small\"})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<form\n\t\tclass=\"custom-input__form\"\n\t\t@submit.prevent>\n\t\t<input\n\t\t\tmaxlength=\"80\"\n\t\t\t:placeholder=\"$t('user_status', 'What\\'s your status?')\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"message\"\n\t\t\t@change=\"change\">\n\t</form>\n</template>\n\n<script>\nexport default {\n\tname: 'CustomMessageInput',\n\tprops: {\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tdefault: () => '',\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Notifies the parent component about a changed input\n\t\t *\n\t\t * @param {Event} event The Change Event\n\t\t */\n\t\tchange(event) {\n\t\t\tthis.$emit('change', event.target.value)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.custom-input__form {\n\tflex-grow: 1;\n\n\tinput {\n\t\twidth: 100%;\n\t\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\n\t}\n}\n</style>\n","import { render, staticRenderFns } from \"./CustomMessageInput.vue?vue&type=template&id=67479d68&scoped=true&\"\nimport script from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&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 \"67479d68\",\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('form',{staticClass:\"custom-input__form\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('input',{attrs:{\"maxlength\":\"80\",\"placeholder\":_vm.$t('user_status', 'What\\'s your status?'),\"type\":\"text\"},domProps:{\"value\":_vm.message},on:{\"change\":_vm.change}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"clear-at-select\">\n\t\t<span\n\t\t\tclass=\"clear-at-select__label\">\n\t\t\t{{ $t('user_status', 'Clear status message after') }}\n\t\t</span>\n\t\t<Multiselect\n\t\t\tlabel=\"label\"\n\t\t\t:value=\"option\"\n\t\t\t:options=\"options\"\n\t\t\topen-direction=\"top\"\n\t\t\t@select=\"select\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { getAllClearAtOptions } from '../services/clearAtOptionsService'\nimport { clearAtFilter } from '../filters/clearAtFilter'\n\nexport default {\n\tname: 'ClearAtSelect',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\toptions: getAllClearAtOptions(),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Returns an object of the currently selected option\n\t\t *\n\t\t * @returns {Object}\n\t\t */\n\t\toption() {\n\t\t\treturn {\n\t\t\t\tclearAt: this.clearAt,\n\t\t\t\tlabel: clearAtFilter(this.clearAt),\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Triggered when the user selects a new option.\n\t\t *\n\t\t * @param {Object=} option The new selected option\n\t\t */\n\t\tselect(option) {\n\t\t\tif (!option) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('selectClearAt', option.clearAt)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.clear-at-select {\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\talign-items: center;\n\n\t&__label {\n\t\tmargin-right: 10px;\n\t}\n\n\t.multiselect {\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @returns {Object[]}\n */\nconst getAllClearAtOptions = () => {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","import { render, staticRenderFns } from \"./ClearAtSelect.vue?vue&type=template&id=44cd4ace&scoped=true&\"\nimport script from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&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 \"44cd4ace\",\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:\"clear-at-select\"},[_c('span',{staticClass:\"clear-at-select__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status message after'))+\"\\n\\t\")]),_vm._v(\" \"),_c('Multiselect',{attrs:{\"label\":\"label\",\"value\":_vm.option,\"options\":_vm.options,\"open-direction\":\"top\"},on:{\"select\":_vm.select}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"user-status-online-select\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\tclass=\"user-status-online-select__input\"\n\t\t\ttype=\"radio\"\n\t\t\tname=\"user-status-online\"\n\t\t\t@change=\"onChange\">\n\t\t<label :for=\"id\" :class=\"icon\" class=\"user-status-online-select__label\">\n\t\t\t<slot />\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'OnlineStatusSelect',\n\n\tprops: {\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `user-status-online-status-${this.type}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonChange() {\n\t\t\tthis.$emit('select', this.type)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$icon-size: 24px;\n$label-padding: 8px;\n\n.user-status-online-select {\n\t// Inputs are here for keyboard navigation, they are not visually visible\n\t&__input {\n\t\tposition: absolute;\n\t\ttop: auto;\n\t\tleft: -10000px;\n\t\toverflow: hidden;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tmargin: $label-padding;\n\t\tpadding: $label-padding;\n\t\tpadding-left: $icon-size + $label-padding * 2;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-background-hover);\n\t\tbackground-position: $label-padding center;\n\t\tbackground-size: $icon-size;\n\t}\n\n\t&__input:checked + &__label,\n\t&__input:focus + &__label,\n\t&__label:hover {\n\t\tborder-color: var(--color-primary);\n\t}\n}\n\n</style>\n","import { render, staticRenderFns } from \"./OnlineStatusSelect.vue?vue&type=template&id=24baf5da&scoped=true&\"\nimport script from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&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 \"24baf5da\",\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:\"user-status-online-select\"},[_c('input',{staticClass:\"user-status-online-select__input\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"user-status-online\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onChange}}),_vm._v(\" \"),_c('label',{staticClass:\"user-status-online-select__label\",class:_vm.icon,attrs:{\"for\":_vm.id}},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Modal\n\t\tsize=\"normal\"\n\t\t:title=\"$t('user_status', 'Set status')\"\n\t\t@close=\"closeModal\">\n\t\t<div class=\"set-status-modal\">\n\t\t\t<!-- Status selector -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h3>{{ $t('user_status', 'Online status') }}</h3>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__online-status\">\n\t\t\t\t<OnlineStatusSelect v-for=\"status in statuses\"\n\t\t\t\t\t:key=\"status.type\"\n\t\t\t\t\tv-bind=\"status\"\n\t\t\t\t\t:checked=\"status.type === statusType\"\n\t\t\t\t\t@select=\"changeStatus\">\n\t\t\t\t\t{{ status.label }}\n\t\t\t\t</OnlineStatusSelect>\n\t\t\t</div>\n\n\t\t\t<!-- Status message -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h3>{{ $t('user_status', 'Status message') }}</h3>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__custom-input\">\n\t\t\t\t<EmojiPicker @select=\"setIcon\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"custom-input__emoji-button\">\n\t\t\t\t\t\t{{ visibleIcon }}\n\t\t\t\t\t</button>\n\t\t\t\t</EmojiPicker>\n\t\t\t\t<CustomMessageInput\n\t\t\t\t\t:message=\"message\"\n\t\t\t\t\t@change=\"setMessage\" />\n\t\t\t</div>\n\t\t\t<PredefinedStatusesList\n\t\t\t\t@selectStatus=\"selectPredefinedMessage\" />\n\t\t\t<ClearAtSelect\n\t\t\t\t:clear-at=\"clearAt\"\n\t\t\t\t@selectClearAt=\"setClearAt\" />\n\t\t\t<div class=\"status-buttons\">\n\t\t\t\t<button class=\"status-buttons__select\" @click=\"clearStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Clear status message') }}\n\t\t\t\t</button>\n\t\t\t\t<button class=\"status-buttons__primary primary\" @click=\"saveStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Set status message') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</Modal>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport EmojiPicker from '@nextcloud/vue/dist/Components/EmojiPicker'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\n\nimport { getAllStatusOptions } from '../services/statusOptionsService'\nimport OnlineStatusMixin from '../mixins/OnlineStatusMixin'\nimport PredefinedStatusesList from './PredefinedStatusesList'\nimport CustomMessageInput from './CustomMessageInput'\nimport ClearAtSelect from './ClearAtSelect'\nimport OnlineStatusSelect from './OnlineStatusSelect'\n\nexport default {\n\tname: 'SetStatusModal',\n\n\tcomponents: {\n\t\tClearAtSelect,\n\t\tCustomMessageInput,\n\t\tEmojiPicker,\n\t\tModal,\n\t\tOnlineStatusSelect,\n\t\tPredefinedStatusesList,\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tclearAt: null,\n\t\t\ticon: null,\n\t\t\tmessage: null,\n\t\t\tstatuses: getAllStatusOptions(),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Returns the user-set icon or a smiley in case no icon is set\n\t\t *\n\t\t * @returns {String}\n\t\t */\n\t\tvisibleIcon() {\n\t\t\treturn this.icon || '😀'\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current status when a user opens dialog\n\t */\n\tmounted() {\n\t\tthis.messageId = this.$store.state.userStatus.messageId\n\t\tthis.icon = this.$store.state.userStatus.icon\n\t\tthis.message = this.$store.state.userStatus.message\n\n\t\tif (this.$store.state.userStatus.clearAt !== null) {\n\t\t\tthis.clearAt = {\n\t\t\t\ttype: '_time',\n\t\t\t\ttime: this.$store.state.userStatus.clearAt,\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Closes the Set Status modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.$emit('close')\n\t\t},\n\t\t/**\n\t\t * Sets a new icon\n\t\t *\n\t\t * @param {String} icon The new icon\n\t\t */\n\t\tsetIcon(icon) {\n\t\t\tthis.messageId = null\n\t\t\tthis.icon = icon\n\t\t},\n\t\t/**\n\t\t * Sets a new message\n\t\t *\n\t\t * @param {String} message The new message\n\t\t */\n\t\tsetMessage(message) {\n\t\t\tthis.messageId = null\n\t\t\tthis.message = message\n\t\t},\n\t\t/**\n\t\t * Sets a new clearAt value\n\t\t *\n\t\t * @param {Object} clearAt The new clearAt object\n\t\t */\n\t\tsetClearAt(clearAt) {\n\t\t\tthis.clearAt = clearAt\n\t\t},\n\t\t/**\n\t\t * Sets new icon/message/clearAt based on a predefined message\n\t\t *\n\t\t * @param {Object} status The predefined status object\n\t\t */\n\t\tselectPredefinedMessage(status) {\n\t\t\tthis.messageId = status.id\n\t\t\tthis.clearAt = status.clearAt\n\t\t\tthis.icon = status.icon\n\t\t\tthis.message = status.message\n\t\t},\n\t\t/**\n\t\t * Saves the status and closes the\n\t\t *\n\t\t * @returns {Promise<void>}\n\t\t */\n\t\tasync saveStatus() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tif (this.messageId !== null) {\n\t\t\t\t\tawait this.$store.dispatch('setPredefinedMessage', {\n\t\t\t\t\t\tmessageId: this.messageId,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('setCustomMessage', {\n\t\t\t\t\t\tmessage: this.message,\n\t\t\t\t\t\ticon: this.icon,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @returns {Promise<void>}\n\t\t */\n\t\tasync clearStatus() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tawait this.$store.dispatch('clearMessage')\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error clearing the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.set-status-modal {\n\tmin-width: 500px;\n\tmin-height: 200px;\n\tpadding: 8px 20px 20px 20px;\n\n\t&__header {\n\t\ttext-align: center;\n\t\tfont-weight: bold;\n\t}\n\n\t&__online-status {\n\t\tdisplay: grid;\n\t\t// Space between the two sections\n\t\tmargin-bottom: 40px;\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n\n\t&__custom-input {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\n\t\t.custom-input__emoji-button {\n\t\t\tflex-basis: 40px;\n\t\t\tflex-grow: 0;\n\t\t\twidth: 40px;\n\t\t\theight: 34px;\n\t\t\tmargin-right: 0;\n\t\t\tborder-right: none;\n\t\t\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\n\t\t}\n\t}\n\n\t.status-buttons {\n\t\tdisplay: flex;\n\n\t\tbutton {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @returns {Object[]}\n */\nconst getAllStatusOptions = () => {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t\ticon: 'icon-user-status-online',\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t\ticon: 'icon-user-status-away',\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t\ticon: 'icon-user-status-dnd',\n\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\ticon: 'icon-user-status-invisible',\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","import { render, staticRenderFns } from \"./SetStatusModal.vue?vue&type=template&id=54bd1093&scoped=true&\"\nimport script from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SetStatusModal.vue?vue&type=style&index=0&id=54bd1093&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 \"54bd1093\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///./apps/user_status/src/components/PredefinedStatus.vue?1a6d","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?59bc","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?0902","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?4fd3","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?fd60","webpack:///./apps/user_status/src/components/SetStatusModal.vue?b616","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?5922","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?3206","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?a8a6","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?2ba4","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?26ae","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?3737","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?b018","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?edf2","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?1f8d","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?213f","webpack:///./apps/user_status/src/components/SetStatusModal.vue?1cf5","webpack:///./apps/user_status/src/components/SetStatusModal.vue?dd2e","webpack:///./apps/user_status/src/components/SetStatusModal.vue?d0c3","webpack:///./apps/user_status/src/filters/clearAtFilter.js","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?5871","webpack:///apps/user_status/src/components/PredefinedStatus.vue","webpack:///./apps/user_status/src/components/PredefinedStatus.vue","webpack:///./apps/user_status/src/components/PredefinedStatus.vue?20d4","webpack:///apps/user_status/src/components/PredefinedStatusesList.vue","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?9690","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue","webpack:///./apps/user_status/src/components/PredefinedStatusesList.vue?6286","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?2b42","webpack:///apps/user_status/src/components/CustomMessageInput.vue","webpack:///./apps/user_status/src/components/CustomMessageInput.vue","webpack:///./apps/user_status/src/components/CustomMessageInput.vue?13c0","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?d093","webpack:///apps/user_status/src/components/ClearAtSelect.vue","webpack:///./apps/user_status/src/services/clearAtOptionsService.js","webpack:///./apps/user_status/src/components/ClearAtSelect.vue","webpack:///./apps/user_status/src/components/ClearAtSelect.vue?0858","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?1de7","webpack:///apps/user_status/src/components/OnlineStatusSelect.vue","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue","webpack:///./apps/user_status/src/components/OnlineStatusSelect.vue?48a4","webpack:///apps/user_status/src/components/SetStatusModal.vue","webpack:///./apps/user_status/src/components/SetStatusModal.vue?b0c6","webpack:///./apps/user_status/src/services/statusOptionsService.js","webpack:///./apps/user_status/src/components/SetStatusModal.vue"],"names":["content","module","i","locals","exports","add","default","___CSS_LOADER_API_IMPORT___","push","clearAtFilter","clearAt","t","type","time","moment","duration","humanize","momentNow","dateFactory","momentClearAt","diff","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","on","$event","indexOf","_k","keyCode","key","select","_v","_s","icon","message","_f","_l","status","id","selectStatus","preventDefault","$t","domProps","change","label","option","options","checked","onChange","class","_t","subline","closeModal","_b","statusType","changeStatus","setIcon","visibleIcon","setMessage","selectPredefinedMessage","setClearAt","clearStatus","saveStatus"],"mappings":"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","file":"user-status-modal.js?v=e741887d980de2b0fa6f","sourcesContent":["// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"174642e6\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"9bd18a2a\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"6fa59d7a\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"69246a14\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"4bbc091f\", content, true, {});","// style-loader: Adds some css to the DOM by adding a <style> tag\n\n// load the styles\nvar content = require(\"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=3fd3b108&lang=scss&scoped=true&\");\nif(typeof content === 'string') content = [[module.id, content, '']];\nif(content.locals) module.exports = content.locals;\n// add the styles to the DOM\nvar add = require(\"!../../../../node_modules/vue-style-loader/lib/addStylesClient.js\").default\nvar update = add(\"284109cb\", content, true, {});","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".predefined-status[data-v-2af0cabf]{display:flex;flex-wrap:nowrap;justify-content:flex-start;flex-basis:100%;border-radius:var(--border-radius);align-items:center;min-height:44px}.predefined-status[data-v-2af0cabf]:hover,.predefined-status[data-v-2af0cabf]:focus{background-color:var(--color-background-hover)}.predefined-status__icon[data-v-2af0cabf]{flex-basis:40px;text-align:center}.predefined-status__message[data-v-2af0cabf]{font-weight:bold;padding:0 6px}.predefined-status__clear-at[data-v-2af0cabf]{opacity:.7}.predefined-status__clear-at[data-v-2af0cabf]::before{content:' - '}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".predefined-statuses-list[data-v-3b99f880]{display:flex;flex-direction:column;margin-bottom:10px}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".custom-input__form[data-v-67479d68]{flex-grow:1}.custom-input__form input[data-v-67479d68]{width:100%;border-radius:0 var(--border-radius) var(--border-radius) 0}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".clear-at-select[data-v-44cd4ace]{display:flex;margin-bottom:10px;align-items:center}.clear-at-select__label[data-v-44cd4ace]{margin-right:10px}.clear-at-select .multiselect[data-v-44cd4ace]{flex-grow:1}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".user-status-online-select__input[data-v-24baf5da]{position:absolute;top:auto;left:-10000px;overflow:hidden;width:1px;height:1px}.user-status-online-select__label[data-v-24baf5da]{display:block;margin:8px;padding:8px;padding-left:40px;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-color:var(--color-background-hover);background-position:8px center;background-size:24px}.user-status-online-select__input:checked+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__input:focus+.user-status-online-select__label[data-v-24baf5da],.user-status-online-select__label[data-v-24baf5da]:hover{border-color:var(--color-primary)}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","import mod from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=3fd3b108&lang=scss&scoped=true&\"; export default mod; export * from \"-!../../../../node_modules/vue-style-loader/index.js!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=style&index=0&id=3fd3b108&lang=scss&scoped=true&\"","// Imports\nvar ___CSS_LOADER_API_IMPORT___ = require(\"../../../../node_modules/css-loader/dist/runtime/api.js\");\nexports = ___CSS_LOADER_API_IMPORT___(false);\n// Module\nexports.push([module.id, \".set-status-modal[data-v-3fd3b108]{min-width:500px;min-height:200px;padding:8px 20px 20px 20px;max-height:70vh;overflow:auto}.set-status-modal__header[data-v-3fd3b108]{text-align:center;font-weight:bold}.set-status-modal__online-status[data-v-3fd3b108]{display:grid;margin-bottom:40px;grid-template-columns:1fr 1fr}.set-status-modal__custom-input[data-v-3fd3b108]{display:flex;width:100%;margin-bottom:10px}.set-status-modal__custom-input .custom-input__emoji-button[data-v-3fd3b108]{flex-basis:40px;flex-grow:0;width:40px;height:34px;margin-right:0;border-right:none;border-radius:var(--border-radius) 0 0 var(--border-radius)}.set-status-modal .status-buttons[data-v-3fd3b108]{display:flex}.set-status-modal .status-buttons button[data-v-3fd3b108]{flex-basis:50%}\\n\", \"\"]);\n// Exports\nmodule.exports = exports;\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('Modal',{attrs:{\"size\":\"normal\",\"title\":_vm.$t('user_status', 'Set status')},on:{\"close\":_vm.closeModal}},[_c('div',{staticClass:\"set-status-modal\"},[_c('div',{staticClass:\"set-status-modal__header\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('user_status', 'Online status')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__online-status\"},_vm._l((_vm.statuses),function(status){return _c('OnlineStatusSelect',_vm._b({key:status.type,attrs:{\"checked\":status.type === _vm.statusType},on:{\"select\":_vm.changeStatus}},'OnlineStatusSelect',status,false),[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(status.label)+\"\\n\\t\\t\\t\")])}),1),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__header\"},[_c('h3',[_vm._v(_vm._s(_vm.$t('user_status', 'Status message')))])]),_vm._v(\" \"),_c('div',{staticClass:\"set-status-modal__custom-input\"},[_c('EmojiPicker',{on:{\"select\":_vm.setIcon}},[_c('button',{staticClass:\"custom-input__emoji-button\"},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_vm.visibleIcon)+\"\\n\\t\\t\\t\\t\")])]),_vm._v(\" \"),_c('CustomMessageInput',{attrs:{\"message\":_vm.message},on:{\"change\":_vm.setMessage}})],1),_vm._v(\" \"),_c('PredefinedStatusesList',{on:{\"selectStatus\":_vm.selectPredefinedMessage}}),_vm._v(\" \"),_c('ClearAtSelect',{attrs:{\"clear-at\":_vm.clearAt},on:{\"selectClearAt\":_vm.setClearAt}}),_vm._v(\" \"),_c('div',{staticClass:\"status-buttons\"},[_c('button',{staticClass:\"status-buttons__select\",on:{\"click\":_vm.clearStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status message'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"status-buttons__primary primary\",on:{\"click\":_vm.saveStatus}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.$t('user_status', 'Set status message'))+\"\\n\\t\\t\\t\")])])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n'\nimport moment from '@nextcloud/moment'\nimport { dateFactory } from '../services/dateService'\n\n/**\n * Formats a clearAt object to be human readable\n *\n * @param {Object} clearAt The clearAt object\n * @returns {string|null}\n */\nconst clearAtFilter = (clearAt) => {\n\tif (clearAt === null) {\n\t\treturn t('user_status', 'Don\\'t clear')\n\t}\n\n\tif (clearAt.type === 'end-of') {\n\t\tswitch (clearAt.time) {\n\t\tcase 'day':\n\t\t\treturn t('user_status', 'Today')\n\t\tcase 'week':\n\t\t\treturn t('user_status', 'This week')\n\n\t\tdefault:\n\t\t\treturn null\n\t\t}\n\t}\n\n\tif (clearAt.type === 'period') {\n\t\treturn moment.duration(clearAt.time * 1000).humanize()\n\t}\n\n\t// This is not an officially supported type\n\t// but only used internally to show the remaining time\n\t// in the Set Status Modal\n\tif (clearAt.type === '_time') {\n\t\tconst momentNow = moment(dateFactory())\n\t\tconst momentClearAt = moment(clearAt.time, 'X')\n\n\t\treturn moment.duration(momentNow.diff(momentClearAt)).humanize()\n\t}\n\n\treturn null\n}\n\nexport {\n\tclearAtFilter,\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatus.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div\n\t\tclass=\"predefined-status\"\n\t\ttabindex=\"0\"\n\t\t@keyup.enter=\"select\"\n\t\t@keyup.space=\"select\"\n\t\t@click=\"select\">\n\t\t<span class=\"predefined-status__icon\">\n\t\t\t{{ icon }}\n\t\t</span>\n\t\t<span class=\"predefined-status__message\">\n\t\t\t{{ message }}\n\t\t</span>\n\t\t<span class=\"predefined-status__clear-at\">\n\t\t\t{{ clearAt | clearAtFilter }}\n\t\t</span>\n\t</div>\n</template>\n\n<script>\nimport { clearAtFilter } from '../filters/clearAtFilter'\n\nexport default {\n\tname: 'PredefinedStatus',\n\tfilters: {\n\t\tclearAtFilter,\n\t},\n\tprops: {\n\t\tmessageId: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\trequired: false,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user clicks the row\n\t\t */\n\t\tselect() {\n\t\t\tthis.$emit('select')\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-status {\n\tdisplay: flex;\n\tflex-wrap: nowrap;\n\tjustify-content: flex-start;\n\tflex-basis: 100%;\n\tborder-radius: var(--border-radius);\n\talign-items: center;\n\tmin-height: 44px;\n\n\t&:hover,\n\t&:focus {\n\t\tbackground-color: var(--color-background-hover);\n\t}\n\n\t&__icon {\n\t\tflex-basis: 40px;\n\t\ttext-align: center;\n\t}\n\n\t&__message {\n\t\tfont-weight: bold;\n\t\tpadding: 0 6px;\n\t}\n\n\t&__clear-at {\n\t\topacity: .7;\n\n\t\t&::before {\n\t\t\tcontent: ' - ';\n\t\t}\n\t}\n}\n</style>\n","import { render, staticRenderFns } from \"./PredefinedStatus.vue?vue&type=template&id=2af0cabf&scoped=true&\"\nimport script from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatus.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatus.vue?vue&type=style&index=0&id=2af0cabf&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 \"2af0cabf\",\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:\"predefined-status\",attrs:{\"tabindex\":\"0\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\")){ return null; }return _vm.select($event)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"space\",32,$event.key,[\" \",\"Spacebar\"])){ return null; }return _vm.select($event)}],\"click\":_vm.select}},[_c('span',{staticClass:\"predefined-status__icon\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.icon)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__message\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.message)+\"\\n\\t\")]),_vm._v(\" \"),_c('span',{staticClass:\"predefined-status__clear-at\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm._f(\"clearAtFilter\")(_vm.clearAt))+\"\\n\\t\")])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div\n\t\tv-if=\"hasLoaded\"\n\t\tclass=\"predefined-statuses-list\">\n\t\t<PredefinedStatus\n\t\t\tv-for=\"status in predefinedStatuses\"\n\t\t\t:key=\"status.id\"\n\t\t\t:message-id=\"status.id\"\n\t\t\t:icon=\"status.icon\"\n\t\t\t:message=\"status.message\"\n\t\t\t:clear-at=\"status.clearAt\"\n\t\t\t@select=\"selectStatus(status)\" />\n\t</div>\n\t<div\n\t\tv-else\n\t\tclass=\"predefined-statuses-list\">\n\t\t<div class=\"icon icon-loading-small\" />\n\t</div>\n</template>\n\n<script>\nimport PredefinedStatus from './PredefinedStatus'\nimport { mapState } from 'vuex'\n\nexport default {\n\tname: 'PredefinedStatusesList',\n\tcomponents: {\n\t\tPredefinedStatus,\n\t},\n\tcomputed: {\n\t\t...mapState({\n\t\t\tpredefinedStatuses: state => state.predefinedStatuses.predefinedStatuses,\n\t\t}),\n\t\t/**\n\t\t * Indicator whether the predefined statuses have already been loaded\n\t\t *\n\t\t * @returns {boolean}\n\t\t */\n\t\thasLoaded() {\n\t\t\treturn this.predefinedStatuses.length > 0\n\t\t},\n\t},\n\t/**\n\t * Loads all predefined statuses from the server\n\t * when this component is mounted\n\t */\n\tmounted() {\n\t\tthis.$store.dispatch('loadAllPredefinedStatuses')\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Emits an event when the user selects a status\n\t\t *\n\t\t * @param {Object} status The selected status\n\t\t */\n\t\tselectStatus(status) {\n\t\t\tthis.$emit('selectStatus', status)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.predefined-statuses-list {\n\tdisplay: flex;\n\tflex-direction: column;\n\tmargin-bottom: 10px;\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PredefinedStatusesList.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./PredefinedStatusesList.vue?vue&type=template&id=3b99f880&scoped=true&\"\nimport script from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nexport * from \"./PredefinedStatusesList.vue?vue&type=script&lang=js&\"\nimport style0 from \"./PredefinedStatusesList.vue?vue&type=style&index=0&id=3b99f880&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 \"3b99f880\",\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 (_vm.hasLoaded)?_c('div',{staticClass:\"predefined-statuses-list\"},_vm._l((_vm.predefinedStatuses),function(status){return _c('PredefinedStatus',{key:status.id,attrs:{\"message-id\":status.id,\"icon\":status.icon,\"message\":status.message,\"clear-at\":status.clearAt},on:{\"select\":function($event){return _vm.selectStatus(status)}}})}),1):_c('div',{staticClass:\"predefined-statuses-list\"},[_c('div',{staticClass:\"icon icon-loading-small\"})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomMessageInput.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<form\n\t\tclass=\"custom-input__form\"\n\t\t@submit.prevent>\n\t\t<input\n\t\t\tmaxlength=\"80\"\n\t\t\t:placeholder=\"$t('user_status', 'What\\'s your status?')\"\n\t\t\ttype=\"text\"\n\t\t\t:value=\"message\"\n\t\t\t@change=\"change\">\n\t</form>\n</template>\n\n<script>\nexport default {\n\tname: 'CustomMessageInput',\n\tprops: {\n\t\tmessage: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t\tdefault: () => '',\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Notifies the parent component about a changed input\n\t\t *\n\t\t * @param {Event} event The Change Event\n\t\t */\n\t\tchange(event) {\n\t\t\tthis.$emit('change', event.target.value)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.custom-input__form {\n\tflex-grow: 1;\n\n\tinput {\n\t\twidth: 100%;\n\t\tborder-radius: 0 var(--border-radius) var(--border-radius) 0;\n\t}\n}\n</style>\n","import { render, staticRenderFns } from \"./CustomMessageInput.vue?vue&type=template&id=67479d68&scoped=true&\"\nimport script from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nexport * from \"./CustomMessageInput.vue?vue&type=script&lang=js&\"\nimport style0 from \"./CustomMessageInput.vue?vue&type=style&index=0&id=67479d68&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 \"67479d68\",\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('form',{staticClass:\"custom-input__form\",on:{\"submit\":function($event){$event.preventDefault();}}},[_c('input',{attrs:{\"maxlength\":\"80\",\"placeholder\":_vm.$t('user_status', 'What\\'s your status?'),\"type\":\"text\"},domProps:{\"value\":_vm.message},on:{\"change\":_vm.change}})])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ClearAtSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"clear-at-select\">\n\t\t<span\n\t\t\tclass=\"clear-at-select__label\">\n\t\t\t{{ $t('user_status', 'Clear status message after') }}\n\t\t</span>\n\t\t<Multiselect\n\t\t\tlabel=\"label\"\n\t\t\t:value=\"option\"\n\t\t\t:options=\"options\"\n\t\t\topen-direction=\"top\"\n\t\t\t@select=\"select\" />\n\t</div>\n</template>\n\n<script>\nimport Multiselect from '@nextcloud/vue/dist/Components/Multiselect'\nimport { getAllClearAtOptions } from '../services/clearAtOptionsService'\nimport { clearAtFilter } from '../filters/clearAtFilter'\n\nexport default {\n\tname: 'ClearAtSelect',\n\tcomponents: {\n\t\tMultiselect,\n\t},\n\tprops: {\n\t\tclearAt: {\n\t\t\ttype: Object,\n\t\t\tdefault: null,\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\toptions: getAllClearAtOptions(),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Returns an object of the currently selected option\n\t\t *\n\t\t * @returns {Object}\n\t\t */\n\t\toption() {\n\t\t\treturn {\n\t\t\t\tclearAt: this.clearAt,\n\t\t\t\tlabel: clearAtFilter(this.clearAt),\n\t\t\t}\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Triggered when the user selects a new option.\n\t\t *\n\t\t * @param {Object=} option The new selected option\n\t\t */\n\t\tselect(option) {\n\t\t\tif (!option) {\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.$emit('selectClearAt', option.clearAt)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.clear-at-select {\n\tdisplay: flex;\n\tmargin-bottom: 10px;\n\talign-items: center;\n\n\t&__label {\n\t\tmargin-right: 10px;\n\t}\n\n\t.multiselect {\n\t\tflex-grow: 1;\n\t}\n}\n</style>\n","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @returns {Object[]}\n */\nconst getAllClearAtOptions = () => {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","import { render, staticRenderFns } from \"./ClearAtSelect.vue?vue&type=template&id=44cd4ace&scoped=true&\"\nimport script from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./ClearAtSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ClearAtSelect.vue?vue&type=style&index=0&id=44cd4ace&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 \"44cd4ace\",\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:\"clear-at-select\"},[_c('span',{staticClass:\"clear-at-select__label\"},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.$t('user_status', 'Clear status message after'))+\"\\n\\t\")]),_vm._v(\" \"),_c('Multiselect',{attrs:{\"label\":\"label\",\"value\":_vm.option,\"options\":_vm.options,\"open-direction\":\"top\"},on:{\"select\":_vm.select}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./OnlineStatusSelect.vue?vue&type=script&lang=js&\"","<!--\n - @copyright Copyright (c) 2020 John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @author John Molakvoæ <skjnldsv@protonmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n<template>\n\t<div class=\"user-status-online-select\">\n\t\t<input :id=\"id\"\n\t\t\t:checked=\"checked\"\n\t\t\tclass=\"user-status-online-select__input\"\n\t\t\ttype=\"radio\"\n\t\t\tname=\"user-status-online\"\n\t\t\t@change=\"onChange\">\n\t\t<label :for=\"id\" :class=\"icon\" class=\"user-status-online-select__label\">\n\t\t\t<slot />\n\t\t</label>\n\t</div>\n</template>\n\n<script>\nexport default {\n\tname: 'OnlineStatusSelect',\n\n\tprops: {\n\t\tchecked: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ticon: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t},\n\n\tcomputed: {\n\t\tid() {\n\t\t\treturn `user-status-online-status-${this.type}`\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonChange() {\n\t\t\tthis.$emit('select', this.type)\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n$icon-size: 24px;\n$label-padding: 8px;\n\n.user-status-online-select {\n\t// Inputs are here for keyboard navigation, they are not visually visible\n\t&__input {\n\t\tposition: absolute;\n\t\ttop: auto;\n\t\tleft: -10000px;\n\t\toverflow: hidden;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t}\n\n\t&__label {\n\t\tdisplay: block;\n\t\tmargin: $label-padding;\n\t\tpadding: $label-padding;\n\t\tpadding-left: $icon-size + $label-padding * 2;\n\t\tborder: 2px solid var(--color-main-background);\n\t\tborder-radius: var(--border-radius-large);\n\t\tbackground-color: var(--color-background-hover);\n\t\tbackground-position: $label-padding center;\n\t\tbackground-size: $icon-size;\n\t}\n\n\t&__input:checked + &__label,\n\t&__input:focus + &__label,\n\t&__label:hover {\n\t\tborder-color: var(--color-primary);\n\t}\n}\n\n</style>\n","import { render, staticRenderFns } from \"./OnlineStatusSelect.vue?vue&type=template&id=24baf5da&scoped=true&\"\nimport script from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nexport * from \"./OnlineStatusSelect.vue?vue&type=script&lang=js&\"\nimport style0 from \"./OnlineStatusSelect.vue?vue&type=style&index=0&id=24baf5da&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 \"24baf5da\",\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:\"user-status-online-select\"},[_c('input',{staticClass:\"user-status-online-select__input\",attrs:{\"id\":_vm.id,\"type\":\"radio\",\"name\":\"user-status-online\"},domProps:{\"checked\":_vm.checked},on:{\"change\":_vm.onChange}}),_vm._v(\" \"),_c('label',{staticClass:\"user-status-online-select__label\",class:_vm.icon,attrs:{\"for\":_vm.id}},[_vm._t(\"default\")],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Georg Ehrke <oc.list@georgehrke.com>\n - @author Georg Ehrke <oc.list@georgehrke.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<Modal\n\t\tsize=\"normal\"\n\t\t:title=\"$t('user_status', 'Set status')\"\n\t\t@close=\"closeModal\">\n\t\t<div class=\"set-status-modal\">\n\t\t\t<!-- Status selector -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h3>{{ $t('user_status', 'Online status') }}</h3>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__online-status\">\n\t\t\t\t<OnlineStatusSelect v-for=\"status in statuses\"\n\t\t\t\t\t:key=\"status.type\"\n\t\t\t\t\tv-bind=\"status\"\n\t\t\t\t\t:checked=\"status.type === statusType\"\n\t\t\t\t\t@select=\"changeStatus\">\n\t\t\t\t\t{{ status.label }}\n\t\t\t\t</OnlineStatusSelect>\n\t\t\t</div>\n\n\t\t\t<!-- Status message -->\n\t\t\t<div class=\"set-status-modal__header\">\n\t\t\t\t<h3>{{ $t('user_status', 'Status message') }}</h3>\n\t\t\t</div>\n\t\t\t<div class=\"set-status-modal__custom-input\">\n\t\t\t\t<EmojiPicker @select=\"setIcon\">\n\t\t\t\t\t<button\n\t\t\t\t\t\tclass=\"custom-input__emoji-button\">\n\t\t\t\t\t\t{{ visibleIcon }}\n\t\t\t\t\t</button>\n\t\t\t\t</EmojiPicker>\n\t\t\t\t<CustomMessageInput\n\t\t\t\t\t:message=\"message\"\n\t\t\t\t\t@change=\"setMessage\" />\n\t\t\t</div>\n\t\t\t<PredefinedStatusesList\n\t\t\t\t@selectStatus=\"selectPredefinedMessage\" />\n\t\t\t<ClearAtSelect\n\t\t\t\t:clear-at=\"clearAt\"\n\t\t\t\t@selectClearAt=\"setClearAt\" />\n\t\t\t<div class=\"status-buttons\">\n\t\t\t\t<button class=\"status-buttons__select\" @click=\"clearStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Clear status message') }}\n\t\t\t\t</button>\n\t\t\t\t<button class=\"status-buttons__primary primary\" @click=\"saveStatus\">\n\t\t\t\t\t{{ $t('user_status', 'Set status message') }}\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t</div>\n\t</Modal>\n</template>\n\n<script>\nimport { showError } from '@nextcloud/dialogs'\nimport EmojiPicker from '@nextcloud/vue/dist/Components/EmojiPicker'\nimport Modal from '@nextcloud/vue/dist/Components/Modal'\n\nimport { getAllStatusOptions } from '../services/statusOptionsService'\nimport OnlineStatusMixin from '../mixins/OnlineStatusMixin'\nimport PredefinedStatusesList from './PredefinedStatusesList'\nimport CustomMessageInput from './CustomMessageInput'\nimport ClearAtSelect from './ClearAtSelect'\nimport OnlineStatusSelect from './OnlineStatusSelect'\n\nexport default {\n\tname: 'SetStatusModal',\n\n\tcomponents: {\n\t\tClearAtSelect,\n\t\tCustomMessageInput,\n\t\tEmojiPicker,\n\t\tModal,\n\t\tOnlineStatusSelect,\n\t\tPredefinedStatusesList,\n\t},\n\tmixins: [OnlineStatusMixin],\n\n\tdata() {\n\t\treturn {\n\t\t\tclearAt: null,\n\t\t\ticon: null,\n\t\t\tmessage: null,\n\t\t\tstatuses: getAllStatusOptions(),\n\t\t}\n\t},\n\tcomputed: {\n\t\t/**\n\t\t * Returns the user-set icon or a smiley in case no icon is set\n\t\t *\n\t\t * @returns {String}\n\t\t */\n\t\tvisibleIcon() {\n\t\t\treturn this.icon || '😀'\n\t\t},\n\t},\n\n\t/**\n\t * Loads the current status when a user opens dialog\n\t */\n\tmounted() {\n\t\tthis.messageId = this.$store.state.userStatus.messageId\n\t\tthis.icon = this.$store.state.userStatus.icon\n\t\tthis.message = this.$store.state.userStatus.message\n\n\t\tif (this.$store.state.userStatus.clearAt !== null) {\n\t\t\tthis.clearAt = {\n\t\t\t\ttype: '_time',\n\t\t\t\ttime: this.$store.state.userStatus.clearAt,\n\t\t\t}\n\t\t}\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Closes the Set Status modal\n\t\t */\n\t\tcloseModal() {\n\t\t\tthis.$emit('close')\n\t\t},\n\t\t/**\n\t\t * Sets a new icon\n\t\t *\n\t\t * @param {String} icon The new icon\n\t\t */\n\t\tsetIcon(icon) {\n\t\t\tthis.messageId = null\n\t\t\tthis.icon = icon\n\t\t},\n\t\t/**\n\t\t * Sets a new message\n\t\t *\n\t\t * @param {String} message The new message\n\t\t */\n\t\tsetMessage(message) {\n\t\t\tthis.messageId = null\n\t\t\tthis.message = message\n\t\t},\n\t\t/**\n\t\t * Sets a new clearAt value\n\t\t *\n\t\t * @param {Object} clearAt The new clearAt object\n\t\t */\n\t\tsetClearAt(clearAt) {\n\t\t\tthis.clearAt = clearAt\n\t\t},\n\t\t/**\n\t\t * Sets new icon/message/clearAt based on a predefined message\n\t\t *\n\t\t * @param {Object} status The predefined status object\n\t\t */\n\t\tselectPredefinedMessage(status) {\n\t\t\tthis.messageId = status.id\n\t\t\tthis.clearAt = status.clearAt\n\t\t\tthis.icon = status.icon\n\t\t\tthis.message = status.message\n\t\t},\n\t\t/**\n\t\t * Saves the status and closes the\n\t\t *\n\t\t * @returns {Promise<void>}\n\t\t */\n\t\tasync saveStatus() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tif (this.messageId !== null) {\n\t\t\t\t\tawait this.$store.dispatch('setPredefinedMessage', {\n\t\t\t\t\t\tmessageId: this.messageId,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait this.$store.dispatch('setCustomMessage', {\n\t\t\t\t\t\tmessage: this.message,\n\t\t\t\t\t\ticon: this.icon,\n\t\t\t\t\t\tclearAt: this.clearAt,\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error saving the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t\t/**\n\t\t *\n\t\t * @returns {Promise<void>}\n\t\t */\n\t\tasync clearStatus() {\n\t\t\ttry {\n\t\t\t\tthis.isSavingStatus = true\n\n\t\t\t\tawait this.$store.dispatch('clearMessage')\n\t\t\t} catch (err) {\n\t\t\t\tshowError(this.$t('user_status', 'There was an error clearing the status'))\n\t\t\t\tconsole.debug(err)\n\t\t\t\tthis.isSavingStatus = false\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\tthis.isSavingStatus = false\n\t\t\tthis.closeModal()\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.set-status-modal {\n\tmin-width: 500px;\n\tmin-height: 200px;\n\tpadding: 8px 20px 20px 20px;\n\t// Enable scrollbar for too long content, same way as in Dashboard customize\n\tmax-height: 70vh;\n\toverflow: auto;\n\n\t&__header {\n\t\ttext-align: center;\n\t\tfont-weight: bold;\n\t}\n\n\t&__online-status {\n\t\tdisplay: grid;\n\t\t// Space between the two sections\n\t\tmargin-bottom: 40px;\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n\n\t&__custom-input {\n\t\tdisplay: flex;\n\t\twidth: 100%;\n\t\tmargin-bottom: 10px;\n\n\t\t.custom-input__emoji-button {\n\t\t\tflex-basis: 40px;\n\t\t\tflex-grow: 0;\n\t\t\twidth: 40px;\n\t\t\theight: 34px;\n\t\t\tmargin-right: 0;\n\t\t\tborder-right: none;\n\t\t\tborder-radius: var(--border-radius) 0 0 var(--border-radius);\n\t\t}\n\t}\n\n\t.status-buttons {\n\t\tdisplay: flex;\n\n\t\tbutton {\n\t\t\tflex-basis: 50%;\n\t\t}\n\t}\n}\n\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SetStatusModal.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2020 Georg Ehrke\n *\n * @author Georg Ehrke <oc.list@georgehrke.com>\n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\nimport { translate as t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @returns {Object[]}\n */\nconst getAllStatusOptions = () => {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t\ticon: 'icon-user-status-online',\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t\ticon: 'icon-user-status-away',\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t\ticon: 'icon-user-status-dnd',\n\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\ticon: 'icon-user-status-invisible',\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","import { render, staticRenderFns } from \"./SetStatusModal.vue?vue&type=template&id=3fd3b108&scoped=true&\"\nimport script from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nexport * from \"./SetStatusModal.vue?vue&type=script&lang=js&\"\nimport style0 from \"./SetStatusModal.vue?vue&type=style&index=0&id=3fd3b108&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 \"3fd3b108\",\n null\n \n)\n\nexport default component.exports"],"sourceRoot":""}
\ No newline at end of file