+ {{#if $eq type 'action'}}
+ {{#if hasChanges section}}
+
+ {{/if}}
{{/if}}
{{#if $eq type 'asset'}}
- {{#if value.url}}
-
-
-
-
+ {{#if value.url}}
+
-
- {{else}}
-
-
-
-
- {{/if}}
+ {{/if}}
{{/if}}
{{#if $eq type 'roomPick'}}
-
- {{> inputAutocomplete settings=autocompleteRoom id=id name=id class="search autocomplete" autocomplete="off" disabled=isDisabled.disabled}}
-
- {{#each selectedRooms}}
- - {{name}}
- {{/each}}
-
-
+
+ {{> inputAutocomplete settings=autocompleteRoom id=id name=id class="search autocomplete" autocomplete="off" disabled=isDisabled.disabled}}
+
+ {{#each selectedRooms}}
+ - {{name}}
+ {{/each}}
+
+
{{/if}}
{{#if i18nDescription}}
-
{{{parseDescription i18nDescription}}}
- {{/if}}
- {{#if i18nAlert}}
-
{{{_ i18nAlert}}}
+
{{{parseDescription i18nDescription}}}
+ {{/if}}
+ {{#if i18nAlert}}
+
{{{_ i18nAlert}}}
{{/if}}
diff --git a/packages/rocketchat-apps/client/admin/appManage.js b/packages/rocketchat-apps/client/admin/appManage.js
index 3f156689862..41b35e99123 100644
--- a/packages/rocketchat-apps/client/admin/appManage.js
+++ b/packages/rocketchat-apps/client/admin/appManage.js
@@ -74,6 +74,33 @@ Template.apps.onDestroyed(function() {
});
Template.appManage.helpers({
+ languages() {
+ const languages = TAPi18n.getLanguages();
+
+ let result = Object.keys(languages).map(key => {
+ const language = languages[key];
+ return _.extend(language, { key });
+ });
+
+ result = _.sortBy(result, 'key');
+ result.unshift({
+ 'name': 'Default',
+ 'en': 'Default',
+ 'key': ''
+ });
+ return result;
+ },
+ appLanguage(key) {
+ const setting = RocketChat.settings.get('Language');
+ return setting && setting.split('-').shift().toLowerCase() === key;
+ },
+ selectedOption(_id, val) {
+ const settings = Template.instance().settings.get();
+ return settings[_id].value === val;
+ },
+ getColorVariable(color) {
+ return color.replace(/theme-color-/, '@');
+ },
disabled() {
const t = Template.instance();
const settings = t.settings.get();
@@ -240,7 +267,20 @@ Template.appManage.events({
}
},
- 'input input': _.throttle(function(e, t) {
+ 'change .rc-select__element' : (e, t) => {
+ const labelFor = $(e.currentTarget).attr('name');
+ const value = $(e.currentTarget).val();
+
+ const setting = t.settings.get()[labelFor];
+
+ if (setting) {
+ setting.value = value;
+ t.settings.get()[labelFor].hasChanged = setting.oldValue !== setting.value;
+ t.settings.set(t.settings.get());
+ }
+ },
+
+ 'input input, input textarea, change input[type="color"]': _.throttle(function(e, t) {
let value = s.trim($(e.target).val());
switch (this.type) {
case 'int':
diff --git a/packages/rocketchat-theme/client/imports/forms/input.css b/packages/rocketchat-theme/client/imports/forms/input.css
index 311df58cad2..30e6a5c1dd5 100644
--- a/packages/rocketchat-theme/client/imports/forms/input.css
+++ b/packages/rocketchat-theme/client/imports/forms/input.css
@@ -67,6 +67,10 @@
&::placeholder {
color: var(--input-placeholder-color);
}
+
+ &[type=color] {
+ height: 45px;
+ }
}
&__description {
diff --git a/packages/rocketchat-theme/client/imports/forms/select.css b/packages/rocketchat-theme/client/imports/forms/select.css
index 9a8d5efcf24..6606d3362f8 100644
--- a/packages/rocketchat-theme/client/imports/forms/select.css
+++ b/packages/rocketchat-theme/client/imports/forms/select.css
@@ -6,6 +6,8 @@
flex: 0 0 auto;
+ margin: 0.5rem 0;
+
color: var(--input-text-color);
border-width: var(--input-border-width);
@@ -17,6 +19,10 @@
align-items: center;
justify-content: flex-end;
+ &__option {
+ text-align: right;
+ }
+
&__arrow {
position: absolute;
z-index: -1;
@@ -37,6 +43,8 @@
appearance: none;
+ width: 100%;
+
&::-ms-expand {
display: none;
}
diff --git a/packages/rocketchat-theme/client/imports/general/apps.css b/packages/rocketchat-theme/client/imports/general/apps.css
index 6e824188493..983d5680a99 100644
--- a/packages/rocketchat-theme/client/imports/general/apps.css
+++ b/packages/rocketchat-theme/client/imports/general/apps.css
@@ -1,6 +1,5 @@
.rc-apps {
&-settings {
- padding: 25px;
flex-direction: column;
&__item {
@@ -10,6 +9,7 @@
}
&-container {
+ padding: 25px 0;
max-width: 705px;
margin: auto;
width: 100%;
@@ -73,6 +73,8 @@
@media (width <= 500px) {
.rc-apps {
&-container {
+ padding: 25px;
+
flex-direction: column;
align-items: center;
}
diff --git a/packages/rocketchat-ui-master/public/icons.svg b/packages/rocketchat-ui-master/public/icons.svg
index 99ac982a06b..f1b1d85eebc 100644
--- a/packages/rocketchat-ui-master/public/icons.svg
+++ b/packages/rocketchat-ui-master/public/icons.svg
@@ -103,4 +103,6 @@
+
+
diff --git a/packages/rocketchat-ui/client/views/app/directory.html b/packages/rocketchat-ui/client/views/app/directory.html
index febc8d077dc..ce988fc3f82 100644
--- a/packages/rocketchat-ui/client/views/app/directory.html
+++ b/packages/rocketchat-ui/client/views/app/directory.html
@@ -22,9 +22,9 @@
- | Name {{> icon icon="sort" }} |
- Users {{> icon icon="sort" }} |
- Created At {{> icon icon="sort" }} |
+ Name {{> icon icon=(sortIcon 'name')}} |
+ Users {{> icon icon=(sortIcon 'usernames') }} |
+ Created At {{> icon icon=(sortIcon 'createdAt') }} |
diff --git a/packages/rocketchat-ui/client/views/app/directory.js b/packages/rocketchat-ui/client/views/app/directory.js
index a8e67817e01..dc9f3da99ae 100644
--- a/packages/rocketchat-ui/client/views/app/directory.js
+++ b/packages/rocketchat-ui/client/views/app/directory.js
@@ -41,6 +41,14 @@ Template.directory.helpers({
},
searchType() {
return Template.instance().searchType.get();
+ },
+ sortIcon(key) {
+ const {
+ sortDirection,
+ searchSortBy
+ } = Template.instance();
+
+ return key === searchSortBy.get() && sortDirection.get() !== 'asc' ? 'sort-up' : 'sort-down';
}
});