Loading css/app-sidebar.scss +903 −864 Original line number Diff line number Diff line Loading @@ -31,8 +31,14 @@ align-items: stretch !important; position:relative; textarea { border-right: 0px; padding-right:27px; &:not(:disabled) { &:active, &:hover, &:focus { border-color: var(--color-primary-element) !important; } } } .icon-externallink { background-image: var(--icon-calendar-openlink-0075E0); Loading @@ -48,8 +54,31 @@ text-align: center; cursor:pointer; } .icon-delete { background-image: var(--icon-calendar-close-0075E0); opacity: 1; position: absolute; top: 0; right: 34px; z-index: 2; display: block; width: 34px; height: 100%; line-height: 34px; text-align: center; cursor:pointer; } } .multiselect__tags{ &:active, &:hover, &:focus { border: 1px solid var(--color-primary-element) !important; border-radius: 3px; } } .app-sidebar-header__action { margin-top: 0 !important; max-height: none !important; Loading Loading @@ -621,11 +650,18 @@ &__input { flex-grow: 2; textarea, input, div.multiselect { width: 100%; .multiselect__tags{ &:active, &:hover, &:focus { border: 1px solid var(--color-primary-element); border-radius: 3px; } } } textarea { Loading Loading @@ -665,7 +701,6 @@ } } } .property-color { &__input { display: flex; Loading @@ -683,6 +718,13 @@ &__input { textarea { resize: none; &:not(:disabled) { &:active, &:hover, &:focus { border-color: var(--color-primary-element) !important; } } } } } Loading Loading @@ -760,9 +802,6 @@ .property-text-location { align-items: stretch !important; position: relative; textarea { border-right: 0px; } } .empty-content { Loading css/icons.scss +2 −1 Original line number Diff line number Diff line Loading @@ -46,3 +46,4 @@ @include icon-color('reminder', 'calendar', '#fffffe', 1); @include icon-color('reminder', 'calendar', '#000001', 1); @include icon-color('openlink', 'calendar', '#0075E0', 1); @include icon-color('close', 'calendar', '#0075E0', 1); No newline at end of file img/close.svg 0 → 100644 +3 −0 Original line number Diff line number Diff line <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M13.3 0.710001C12.91 0.320001 12.28 0.320001 11.89 0.710001L7 5.59L2.11 0.700001C1.72 0.310001 1.09 0.310001 0.700001 0.700001C0.310001 1.09 0.310001 1.72 0.700001 2.11L5.59 7L0.700001 11.89C0.310001 12.28 0.310001 12.91 0.700001 13.3C1.09 13.69 1.72 13.69 2.11 13.3L7 8.41L11.89 13.3C12.28 13.69 12.91 13.69 13.3 13.3C13.69 12.91 13.69 12.28 13.3 11.89L8.41 7L13.3 2.11C13.68 1.73 13.68 1.09 13.3 0.710001Z" fill="#3392FF"/> </svg> src/components/Editor/Invitees/InviteesList.vue +1 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,7 @@ export default { timezoneId, organizer: this.$store.getters.getCurrentUserPrincipal, }) this.$emit('newattendeeadded', 'added') }, removeAttendee(attendee) { this.$store.commit('removeAttendee', { Loading src/components/Editor/Properties/PropertyTextLocation.vue +78 −21 Original line number Diff line number Diff line <template> <div v-if="display" class="property-text-location"> <component :is="icon" v-show="vshow1" :size="20" :title="readableName" class="property-text__icon" :class="{ 'property-text__icon--hidden': !showIcon }" /> <component :is="iconOptional" v-show="vshow2" :size="20" :title="readableName" class="property-text__icon" Loading @@ -15,20 +22,20 @@ :title="readableName" :value="value" @input.prevent.stop="changeValue" /> <span v-if="!isReadOnly" v-visible="clearUrl" class="icon-delete" @click="removeValue" /> <span v-if="!isReadOnly" v-visible="visibleValue" :title="tagPlaceholder" class="icon-externallink" @click="goto" /> <!-- eslint-disable-next-line vue/singleline-html-element-content-newline --> <div v-else v-linkify="{ text: value, linkify: true }" /> <div v-else v-linkify="{ text: value, linkify: true }" /> </div> <div v-if="hasInfo" v-tooltip="info" class="property-select__info"> <InformationVariant :size="20" decorative /> <div v-if="hasInfo" v-tooltip="info" class="property-select__info"> <InformationVariant :size="20" decorative /> </div> </div> </template> Loading @@ -51,15 +58,36 @@ function isValidHttpUrl(string) { } return url.protocol === 'http:' || url.protocol === 'https:' } /** * * @param length * @param chars */ function generateRandomString(length, chars) { let result = '' for (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)] } const todaynow = new Date() result = result + todaynow.getDate() + todaynow.getMonth() + todaynow.getFullYear().toString().substr(-2) return result } /** * */ function JitsiUrlGenerator() { let url = 'https://meet.jit.si/' const charstr = '0123456789abcdefghijklmnopqrstuvwxyz' const randomString = generateRandomString(8, charstr) url = url + randomString return url } /** * @param el * @param binding */ function setVisibility(el, binding) { el.style.visibility = (binding.value === true) ? 'visible' : 'hidden' el.style.visibility = binding.value === true ? 'visible' : 'hidden' } export default { name: 'PropertyTextLocation', directives: { Loading @@ -79,14 +107,14 @@ export default { componentUpdated(el, binding) { setVisibility(el, binding) }, }, }, mixins: [ PropertyMixin, ], mixins: [PropertyMixin], data: () => ({ visibleValue: true, visibleValue: false, clearUrl: false, vshow1: true, vshow2: false, }), computed: { display() { Loading @@ -112,22 +140,51 @@ export default { }, }, mounted() { this.visibleValue = isValidHttpUrl(this.value) this.vshow2 = this.visibleValue = this.clearUrl = isValidHttpUrl(this.value) this.vshow1 = !this.vshow2 }, methods: { changeValue(event) { if (event.target.value.trim() === '') { this.visibleValue = false this.clearUrl = false this.$emit('update:value', null) } else { this.visibleValue = isValidHttpUrl(event.target.value.trim()) this.$emit('update:value', event.target.value) this.vshow2 = this.visibleValue = this.clearUrl = isValidHttpUrl( event.target.value.trim() ) this.vshow1 = !this.vshow2 this.$emit('update:value', event.target.value.trim()) } }, goto() { const urlval = this.value window.open(urlval, '_blank').focus() }, removeValue() { this.visibleValue = false this.clearUrl = false this.$emit('update:value', null) this.vshow2 = false this.vshow1 = true }, addJitsiUrl() { if (typeof this.value !== 'string') { this.$emit('update:value', JitsiUrlGenerator()) this.visibleValue = true this.clearUrl = true this.vshow2 = true this.vshow1 = false } else if (this.value === '') { this.$emit('update:value', JitsiUrlGenerator()) this.visibleValue = true this.clearUrl = true this.vshow2 = true this.vshow1 = false } else { this.visibleValue = this.clearUrl = isValidHttpUrl(this.value.trim()) } }, }, } </script> Loading
css/app-sidebar.scss +903 −864 Original line number Diff line number Diff line Loading @@ -31,8 +31,14 @@ align-items: stretch !important; position:relative; textarea { border-right: 0px; padding-right:27px; &:not(:disabled) { &:active, &:hover, &:focus { border-color: var(--color-primary-element) !important; } } } .icon-externallink { background-image: var(--icon-calendar-openlink-0075E0); Loading @@ -48,8 +54,31 @@ text-align: center; cursor:pointer; } .icon-delete { background-image: var(--icon-calendar-close-0075E0); opacity: 1; position: absolute; top: 0; right: 34px; z-index: 2; display: block; width: 34px; height: 100%; line-height: 34px; text-align: center; cursor:pointer; } } .multiselect__tags{ &:active, &:hover, &:focus { border: 1px solid var(--color-primary-element) !important; border-radius: 3px; } } .app-sidebar-header__action { margin-top: 0 !important; max-height: none !important; Loading Loading @@ -621,11 +650,18 @@ &__input { flex-grow: 2; textarea, input, div.multiselect { width: 100%; .multiselect__tags{ &:active, &:hover, &:focus { border: 1px solid var(--color-primary-element); border-radius: 3px; } } } textarea { Loading Loading @@ -665,7 +701,6 @@ } } } .property-color { &__input { display: flex; Loading @@ -683,6 +718,13 @@ &__input { textarea { resize: none; &:not(:disabled) { &:active, &:hover, &:focus { border-color: var(--color-primary-element) !important; } } } } } Loading Loading @@ -760,9 +802,6 @@ .property-text-location { align-items: stretch !important; position: relative; textarea { border-right: 0px; } } .empty-content { Loading
css/icons.scss +2 −1 Original line number Diff line number Diff line Loading @@ -46,3 +46,4 @@ @include icon-color('reminder', 'calendar', '#fffffe', 1); @include icon-color('reminder', 'calendar', '#000001', 1); @include icon-color('openlink', 'calendar', '#0075E0', 1); @include icon-color('close', 'calendar', '#0075E0', 1); No newline at end of file
img/close.svg 0 → 100644 +3 −0 Original line number Diff line number Diff line <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg"> <path d="M13.3 0.710001C12.91 0.320001 12.28 0.320001 11.89 0.710001L7 5.59L2.11 0.700001C1.72 0.310001 1.09 0.310001 0.700001 0.700001C0.310001 1.09 0.310001 1.72 0.700001 2.11L5.59 7L0.700001 11.89C0.310001 12.28 0.310001 12.91 0.700001 13.3C1.09 13.69 1.72 13.69 2.11 13.3L7 8.41L11.89 13.3C12.28 13.69 12.91 13.69 13.3 13.3C13.69 12.91 13.69 12.28 13.3 11.89L8.41 7L13.3 2.11C13.68 1.73 13.68 1.09 13.3 0.710001Z" fill="#3392FF"/> </svg>
src/components/Editor/Invitees/InviteesList.vue +1 −0 Original line number Diff line number Diff line Loading @@ -178,6 +178,7 @@ export default { timezoneId, organizer: this.$store.getters.getCurrentUserPrincipal, }) this.$emit('newattendeeadded', 'added') }, removeAttendee(attendee) { this.$store.commit('removeAttendee', { Loading
src/components/Editor/Properties/PropertyTextLocation.vue +78 −21 Original line number Diff line number Diff line <template> <div v-if="display" class="property-text-location"> <component :is="icon" v-show="vshow1" :size="20" :title="readableName" class="property-text__icon" :class="{ 'property-text__icon--hidden': !showIcon }" /> <component :is="iconOptional" v-show="vshow2" :size="20" :title="readableName" class="property-text__icon" Loading @@ -15,20 +22,20 @@ :title="readableName" :value="value" @input.prevent.stop="changeValue" /> <span v-if="!isReadOnly" v-visible="clearUrl" class="icon-delete" @click="removeValue" /> <span v-if="!isReadOnly" v-visible="visibleValue" :title="tagPlaceholder" class="icon-externallink" @click="goto" /> <!-- eslint-disable-next-line vue/singleline-html-element-content-newline --> <div v-else v-linkify="{ text: value, linkify: true }" /> <div v-else v-linkify="{ text: value, linkify: true }" /> </div> <div v-if="hasInfo" v-tooltip="info" class="property-select__info"> <InformationVariant :size="20" decorative /> <div v-if="hasInfo" v-tooltip="info" class="property-select__info"> <InformationVariant :size="20" decorative /> </div> </div> </template> Loading @@ -51,15 +58,36 @@ function isValidHttpUrl(string) { } return url.protocol === 'http:' || url.protocol === 'https:' } /** * * @param length * @param chars */ function generateRandomString(length, chars) { let result = '' for (let i = length; i > 0; --i) { result += chars[Math.floor(Math.random() * chars.length)] } const todaynow = new Date() result = result + todaynow.getDate() + todaynow.getMonth() + todaynow.getFullYear().toString().substr(-2) return result } /** * */ function JitsiUrlGenerator() { let url = 'https://meet.jit.si/' const charstr = '0123456789abcdefghijklmnopqrstuvwxyz' const randomString = generateRandomString(8, charstr) url = url + randomString return url } /** * @param el * @param binding */ function setVisibility(el, binding) { el.style.visibility = (binding.value === true) ? 'visible' : 'hidden' el.style.visibility = binding.value === true ? 'visible' : 'hidden' } export default { name: 'PropertyTextLocation', directives: { Loading @@ -79,14 +107,14 @@ export default { componentUpdated(el, binding) { setVisibility(el, binding) }, }, }, mixins: [ PropertyMixin, ], mixins: [PropertyMixin], data: () => ({ visibleValue: true, visibleValue: false, clearUrl: false, vshow1: true, vshow2: false, }), computed: { display() { Loading @@ -112,22 +140,51 @@ export default { }, }, mounted() { this.visibleValue = isValidHttpUrl(this.value) this.vshow2 = this.visibleValue = this.clearUrl = isValidHttpUrl(this.value) this.vshow1 = !this.vshow2 }, methods: { changeValue(event) { if (event.target.value.trim() === '') { this.visibleValue = false this.clearUrl = false this.$emit('update:value', null) } else { this.visibleValue = isValidHttpUrl(event.target.value.trim()) this.$emit('update:value', event.target.value) this.vshow2 = this.visibleValue = this.clearUrl = isValidHttpUrl( event.target.value.trim() ) this.vshow1 = !this.vshow2 this.$emit('update:value', event.target.value.trim()) } }, goto() { const urlval = this.value window.open(urlval, '_blank').focus() }, removeValue() { this.visibleValue = false this.clearUrl = false this.$emit('update:value', null) this.vshow2 = false this.vshow1 = true }, addJitsiUrl() { if (typeof this.value !== 'string') { this.$emit('update:value', JitsiUrlGenerator()) this.visibleValue = true this.clearUrl = true this.vshow2 = true this.vshow1 = false } else if (this.value === '') { this.$emit('update:value', JitsiUrlGenerator()) this.visibleValue = true this.clearUrl = true this.vshow2 = true this.vshow1 = false } else { this.visibleValue = this.clearUrl = isValidHttpUrl(this.value.trim()) } }, }, } </script>