diff --git a/js/src/App.vue b/js/src/App.vue index f72541b0c..73839d96e 100644 --- a/js/src/App.vue +++ b/js/src/App.vue @@ -99,6 +99,7 @@ export default class App extends Vue { @import "~buefy/src/scss/components/taginput"; @import "~buefy/src/scss/components/upload"; @import "~buefy/src/scss/components/radio"; +@import "~buefy/src/scss/components/switch"; .router-enter-active, .router-leave-active { diff --git a/js/src/components/Editor.vue b/js/src/components/Editor.vue index 77ed7cbec..05fba20db 100644 --- a/js/src/components/Editor.vue +++ b/js/src/components/Editor.vue @@ -460,18 +460,6 @@ export default class CreateEvent extends Vue { margin-bottom: 1rem; transition: visibility 0.2s 0.4s, opacity 0.2s 0.4s; - &.bar-is-hidden { - visibility: hidden; - opacity: 0; - } - - &.is-focused { - visibility: visible; - opacity: 1; - height: auto; - transition: visibility 0.2s, opacity 0.2s; - } - &__button { font-weight: bold; display: inline-flex; @@ -510,10 +498,14 @@ export default class CreateEvent extends Vue { div.ProseMirror { min-height: 10rem; + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + background-color: white; + border-radius: 4px; + color: #363636; + border: 1px solid #dbdbdb; + &:focus { - border-color: #3273dc; - background: #fff; - box-shadow: 0 0 0 0.125em rgba(50, 115, 220, 0.25); + } } diff --git a/js/src/graphql/event.ts b/js/src/graphql/event.ts index 6f7c10d45..a2374bb15 100644 --- a/js/src/graphql/event.ts +++ b/js/src/graphql/event.ts @@ -146,6 +146,7 @@ export const CREATE_EVENT = gql` $beginsOn: DateTime!, $picture: PictureInput, $tags: [String], + $options: EventOptionsInput, $physicalAddress: AddressInput, $visibility: EventVisibility ) { @@ -155,6 +156,7 @@ export const CREATE_EVENT = gql` beginsOn: $beginsOn, organizerActorId: $organizerActorId, category: $category, + options: $options, picture: $picture, tags: $tags, physicalAddress: $physicalAddress, diff --git a/js/src/types/event.model.ts b/js/src/types/event.model.ts index 57f875bfe..d468b6299 100644 --- a/js/src/types/event.model.ts +++ b/js/src/types/event.model.ts @@ -22,6 +22,12 @@ export enum EventJoinOptions { INVITE, } +export enum EventVisibilityJoinOptions { + PUBLIC = 'PUBLIC', + LINK = 'LINK', + LIMITED = 'LIMITED', +} + export enum ParticipantRole { NOT_APPROVED = 'not_approved', PARTICIPANT = 'participant', @@ -44,6 +50,24 @@ export interface IParticipant { event: IEvent; } +export interface IOffer { + price: number; + priceCurrency: string; + url: string; +} + +export interface IParticipationCondition { + title: string; + content: string; + url: string; +} + +export enum CommentModeration { + ALLOW_ALL = 'ALLOW_ALL', + MODERATED = 'MODERATED', + CLOSED = 'CLOSED', +} + export interface IEvent { id?: number; uuid: string; @@ -77,6 +101,31 @@ export interface IEvent { physicalAddress?: IAddress; tags: ITag[]; + options: IEventOptions; +} + +export interface IEventOptions { + maximumAttendeeCapacity: number; + remainingAttendeeCapacity: number; + showRemainingAttendeeCapacity: boolean; + offers: IOffer[]; + participationConditions: IParticipationCondition[]; + attendees: string[]; + program: string; + commentModeration: CommentModeration; + showParticipationPrice: boolean; +} + +export class EventOptions implements IEventOptions { + maximumAttendeeCapacity: number = 0; + remainingAttendeeCapacity: number = 0; + showRemainingAttendeeCapacity: boolean = false; + offers: IOffer[] = []; + participationConditions: IParticipationCondition[] = []; + attendees: string[] = []; + program: string = ''; + commentModeration: CommentModeration = CommentModeration.ALLOW_ALL; + showParticipationPrice: boolean = false; } export class EventModel implements IEvent { @@ -113,6 +162,7 @@ export class EventModel implements IEvent { organizerActor = new Actor(); tags: ITag[] = []; + options: IEventOptions = new EventOptions(); constructor(hash?: IEvent) { if (!hash) return; @@ -150,5 +200,6 @@ export class EventModel implements IEvent { this.physicalAddress = hash.physicalAddress; this.tags = hash.tags; + this.options = hash.options; } } diff --git a/js/src/views/Account/children/EditIdentity.vue b/js/src/views/Account/children/EditIdentity.vue index ce13c540b..812951137 100644 --- a/js/src/views/Account/children/EditIdentity.vue +++ b/js/src/views/Account/children/EditIdentity.vue @@ -226,7 +226,7 @@ export default class EditIdentity extends Vue { } openDeleteIdentityConfirmation() { - this.$buefy.dialog.prompt({ + this.$dialog.prompt({ type: 'is-danger', title: this.$gettext('Delete your identity'), message: this.$gettextInterpolate( diff --git a/js/src/views/Event/Edit.vue b/js/src/views/Event/Edit.vue index b605936af..b8f24d3c0 100644 --- a/js/src/views/Event/Edit.vue +++ b/js/src/views/Event/Edit.vue @@ -32,6 +32,10 @@ + + + +