diff --git a/packages/rocketchat-channel-settings/client/stylesheets/channel-settings.less b/packages/rocketchat-channel-settings/client/stylesheets/channel-settings.less index 25e4087e08805e8e59727030c7a998809eb8aef0..dc888dc952c0d58bd57eddcae504f1676c247d50 100644 --- a/packages/rocketchat-channel-settings/client/stylesheets/channel-settings.less +++ b/packages/rocketchat-channel-settings/client/stylesheets/channel-settings.less @@ -24,6 +24,12 @@ display: inline-block; vertical-align: middle; min-height: 20px; + cursor: pointer; + margin-top: 3px; + &[data-edit="false"] { + cursor: inherit; + user-select: initial; + } } .editing { padding-right: 80px; @@ -52,10 +58,6 @@ margin-top: 30px; text-align: center; } - [data-edit] { - cursor: pointer; - margin-top: 3px; - } .boolean { font-size: 0; > label { diff --git a/packages/rocketchat-channel-settings/client/views/channelSettings.coffee b/packages/rocketchat-channel-settings/client/views/channelSettings.coffee index 51bb8412a7d0f6d312460de5e9caaa7e9d519bcf..183a41958325f91cd0a6470e784ee98a5e84dc9c 100644 --- a/packages/rocketchat-channel-settings/client/views/channelSettings.coffee +++ b/packages/rocketchat-channel-settings/client/views/channelSettings.coffee @@ -25,6 +25,9 @@ Template.channelSettings.helpers editing: (field) -> return Template.instance().editing.get() is field + isDisabled: (field, room) -> + return Template.instance().settings[field].processing.get() or !RocketChat.authz.hasAllPermission('edit-room', room._id) + channelSettings: -> return RocketChat.ChannelSettings.getOptions() @@ -81,8 +84,9 @@ Template.channelSettings.events 'click [data-edit]': (e, t) -> e.preventDefault() - t.editing.set($(e.currentTarget).data('edit')) - setTimeout (-> t.$('input.editing').focus().select()), 100 + if $(e.currentTarget).data('edit') + t.editing.set($(e.currentTarget).data('edit')) + setTimeout (-> t.$('input.editing').focus().select()), 100 'change [type="radio"]': (e, t) -> t.editing.set($(e.currentTarget).attr('name')) @@ -187,6 +191,7 @@ Template.channelSettings.onCreated -> type: 'boolean' label: 'Room_archivation_state_true' isToggle: true, + processing: new ReactiveVar(false) canView: (room) => room.t isnt 'd' canEdit: (room) => RocketChat.authz.hasAtLeastOnePermission(['archive-room', 'unarchive-room'], room._id) save: (value, room) => diff --git a/packages/rocketchat-channel-settings/client/views/channelSettings.html b/packages/rocketchat-channel-settings/client/views/channelSettings.html index 90ad773e4116f46c03e36e8a4cf2ef3eeae51ce5..9de38968f6093075519ac0a30ec53c047920084c 100644 --- a/packages/rocketchat-channel-settings/client/views/channelSettings.html +++ b/packages/rocketchat-channel-settings/client/views/channelSettings.html @@ -15,33 +15,29 @@ <label>{{_ $value.label}}</label> <div class="setting-block"> {{#if $eq $value.type 'text'}} - {{#if $value.canEdit room}} - {{#if editing $key}} + {{#if editing $key}} + {{#if $value.canEdit room}} <input type="text" name="{{$key}}" value="{{value}}" class="editing" /> - {{else}} - <span class='current-setting' data-edit="{{$key}}">{{value}}</span> {{/if}} {{else}} - <span class='current-setting'>{{value}}</span> + <span class='current-setting' data-edit="{{#if $value.canEdit room}}{{$key}}{{else}}false{{/if}}">{{value}}</span> {{/if}} {{/if}} {{#if $eq $value.type 'markdown'}} - {{#if $value.canEdit room}} - {{#if editing $key}} + {{#if editing $key}} + {{#if $value.canEdit room}} <input type="text" name="{{$key}}" value="{{unscape value}}" class="editing" /> - {{else}} - <span class='current-setting' data-edit="{{$key}}">{{{RocketChatMarkdown value}}}</span> {{/if}} {{else}} - <span class='current-setting'>{{{RocketChatMarkdown value}}}</span> + <span class='current-setting' data-edit="{{#if $value.canEdit room}}{{$key}}{{else}}false{{/if}}">{{{RocketChatMarkdown value}}}</span> {{/if}} {{/if}} {{#if $eq $value.type 'select'}} {{#each toArray $value.options}} <div class="input radio"> - <input type="radio" id="{{$key}}" name="{{../$key}}" value="{{$key}}" checked="{{$eq value $key}}" /> + <input type="radio" id="{{$key}}" name="{{../$key}}" value="{{$key}}" checked="{{$eq value $key}}" disabled="{{isDisabled $key room}}" /> <label for="{{$key}}">{{_ $value}}</label> </div> {{/each}} @@ -49,11 +45,7 @@ {{#if $eq $value.type 'boolean'}} <div class="input checkbox toggle"> - {{#if $value.canEdit room}} - <input type="checkbox" id="{{$key}}" name="{{$key}}" value="{{value}}" checked="{{$eq value true}}" disabled="{{$value.processing.get}}" /> - {{else}} - <input type="checkbox" id="{{$key}}" name="{{$key}}" value="{{value}}" checked="{{$eq value true}}" disabled /> - {{/if}} + <input type="checkbox" id="{{$key}}" name="{{$key}}" value="{{value}}" checked="{{$eq value true}}" disabled="{{isDisabled $key room}}" /> <label for="{{$key}}"></label> </div> {{#if $value.canEdit room}} diff --git a/packages/rocketchat-theme/assets/stylesheets/base.less b/packages/rocketchat-theme/assets/stylesheets/base.less index cc3993ac9fdcf569343919ce2b27bbfefbe33a9f..1df1bdc0c82b49c2142207e1f70c5d8402c30c2c 100644 --- a/packages/rocketchat-theme/assets/stylesheets/base.less +++ b/packages/rocketchat-theme/assets/stylesheets/base.less @@ -1087,6 +1087,26 @@ label.required:after { display: inline-block; } } + &.toggle { + font-size: 0; + > label { + display: inline-block; + width: calc(~"100% - 40px"); + font-size: 14px; + } + > div { + width: 40px; + display: inline-block; + } + } + &.label-top { + position: relative; + i { + position: absolute; + left: 7px; + top: 26px; + } + } } .input-submit { margin: 35px 0 0 -4px; diff --git a/packages/rocketchat-ui-sidenav/side-nav/createCombinedFlex.html b/packages/rocketchat-ui-sidenav/side-nav/createCombinedFlex.html index 3a82adc6f82f23ef28bfd4f7059cac66abb52319..de5b532d46f0fd80722c7fc8ce74e679ad8d3481 100644 --- a/packages/rocketchat-ui-sidenav/side-nav/createCombinedFlex.html +++ b/packages/rocketchat-ui-sidenav/side-nav/createCombinedFlex.html @@ -7,27 +7,29 @@ <div class="content"> <div class="wrapper"> <h4>{{_ "Create_new" }}</h4> - <div class="input-line"> + <div class="input-line label-top"> <label for="channel-name">{{_ "Name"}}</label> <input type="text" id="channel-name" class="required" dir="auto" placeholder="{{_ 'Enter_name_here'}}"> + <i class="icon-hash"></i> </div> - <div class="input-line"> + <div class="input-line toggle"> <label for="channel-type">{{_ "Private"}}</label> <div class="input checkbox toggle"> <input type="checkbox" id="channel-type" {{privateSwitchDisabled}} {{privateSwitchChecked}}> <label for="channel-type"></label> </div> </div> - <div class="input-line"> + <div class="input-line toggle"> <label for="channel-ro">{{_ "Read_only_channel"}}</label> <div class="input checkbox toggle"> <input type="checkbox" id="channel-ro"> <label for="channel-ro"></label> </div> </div> - <div class="input-line"> + <div class="input-line label-top"> <label for="channel-members">{{_ "Select_users"}}</label> {{> inputAutocomplete settings=autocompleteSettings id="channel-members" class="search" placeholder=(_ "Search_by_username") autocomplete="off"}} + <i class="icon-search"></i> <ul class="selected-users"> {{#each selectedUsers}} <li>{{.}} <i class="icon-cancel remove-room-member"></i></li>