From e293a3f5e95d66e487e7a6950e242a30496e03a9 Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Sun, 2 Feb 2020 21:42:05 +1100 Subject: [PATCH 1/4] Update to select-kit-2 --- .../components/wizard-custom-field.js.es6 | 5 +- .../controllers/admin-wizards-api.js.es6 | 9 +- .../discourse/lib/custom-wizard.js.es6 | 5 + .../discourse/routes/admin-wizard.js.es6 | 8 +- .../discourse/templates/admin-wizard.hbs | 8 +- .../discourse/templates/admin-wizards-api.hbs | 34 ++++-- .../components/wizard-custom-action.hbs | 113 +++++++++++------- .../components/wizard-custom-field.hbs | 25 +++- assets/javascripts/wizard-custom.js | 4 + .../templates/components/wizard-editor.hbs | 8 +- 10 files changed, 154 insertions(+), 65 deletions(-) create mode 100644 assets/javascripts/discourse/lib/custom-wizard.js.es6 diff --git a/assets/javascripts/discourse/components/wizard-custom-field.js.es6 b/assets/javascripts/discourse/components/wizard-custom-field.js.es6 index 484b501a..abd9f459 100644 --- a/assets/javascripts/discourse/components/wizard-custom-field.js.es6 +++ b/assets/javascripts/discourse/components/wizard-custom-field.js.es6 @@ -1,4 +1,5 @@ import { default as computed, observes, on } from 'ember-addons/ember-computed-decorators'; +import { generateSelectKitContent } from '../lib/custom-wizard'; export default Ember.Component.extend({ classNames: 'wizard-custom-field', @@ -6,11 +7,11 @@ export default Ember.Component.extend({ isUpload: Ember.computed.equal('field.type', 'upload'), isCategory: Ember.computed.equal('field.type', 'category'), disableId: Ember.computed.not('field.isNew'), - choicesTypes: ['translation', 'preset', 'custom'], + choicesTypes: generateSelectKitContent(['translation', 'preset', 'custom']), choicesTranslation: Ember.computed.equal('field.choices_type', 'translation'), choicesPreset: Ember.computed.equal('field.choices_type', 'preset'), choicesCustom: Ember.computed.equal('field.choices_type', 'custom'), - categoryPropertyTypes: ['id', 'slug'], + categoryPropertyTypes: generateSelectKitContent(['id', 'slug']), @computed('field.type') isInput: (type) => type === 'text' || type === 'textarea', diff --git a/assets/javascripts/discourse/controllers/admin-wizards-api.js.es6 b/assets/javascripts/discourse/controllers/admin-wizards-api.js.es6 index 371ad14e..8f0972e6 100644 --- a/assets/javascripts/discourse/controllers/admin-wizards-api.js.es6 +++ b/assets/javascripts/discourse/controllers/admin-wizards-api.js.es6 @@ -2,17 +2,18 @@ import { ajax } from 'discourse/lib/ajax'; import { popupAjaxError } from 'discourse/lib/ajax-error'; import CustomWizardApi from '../models/custom-wizard-api'; import { default as computed } from 'ember-addons/ember-computed-decorators'; +import { generateSelectKitContent } from '../lib/custom-wizard'; export default Ember.Controller.extend({ queryParams: ['refresh_list'], loadingSubscriptions: false, notAuthorized: Ember.computed.not('api.authorized'), - endpointMethods: ['GET', 'PUT', 'POST', 'PATCH', 'DELETE'], + endpointMethods: generateSelectKitContent(['GET', 'PUT', 'POST', 'PATCH', 'DELETE']), showRemove: Ember.computed.not('isNew'), showRedirectUri: Ember.computed.and('threeLeggedOauth', 'api.name'), responseIcon: null, - contentTypes: ['application/json', 'application/x-www-form-urlencoded'], - successCodes: [100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 303, 304, 305, 306, 307, 308], + contentTypes: generateSelectKitContent(['application/json', 'application/x-www-form-urlencoded']), + successCodes: generateSelectKitContent([100, 101, 102, 200, 201, 202, 203, 204, 205, 206, 207, 208, 226, 300, 301, 302, 303, 303, 304, 305, 306, 307, 308]), @computed('saveDisabled', 'api.authType', 'api.authUrl', 'api.tokenUrl', 'api.clientId', 'api.clientSecret', 'threeLeggedOauth') authDisabled(saveDisabled, authType, authUrl, tokenUrl, clientId, clientSecret, threeLeggedOauth) { @@ -26,7 +27,7 @@ export default Ember.Controller.extend({ return !name || !authType; }, - authorizationTypes: ['none', 'basic', 'oauth_2', 'oauth_3'], + authorizationTypes: generateSelectKitContent(['none', 'basic', 'oauth_2', 'oauth_3']), isBasicAuth: Ember.computed.equal('api.authType', 'basic'), @computed('api.authType') diff --git a/assets/javascripts/discourse/lib/custom-wizard.js.es6 b/assets/javascripts/discourse/lib/custom-wizard.js.es6 new file mode 100644 index 00000000..16010372 --- /dev/null +++ b/assets/javascripts/discourse/lib/custom-wizard.js.es6 @@ -0,0 +1,5 @@ +function generateSelectKitContent(content) { + return content.map(i => ({id: i, name: i})) +} + +export { generateSelectKitContent }; \ No newline at end of file diff --git a/assets/javascripts/discourse/routes/admin-wizard.js.es6 b/assets/javascripts/discourse/routes/admin-wizard.js.es6 index a10f625e..383e6dc8 100644 --- a/assets/javascripts/discourse/routes/admin-wizard.js.es6 +++ b/assets/javascripts/discourse/routes/admin-wizard.js.es6 @@ -1,5 +1,6 @@ import CustomWizard from '../models/custom-wizard'; import { ajax } from 'discourse/lib/ajax'; +import { generateSelectKitContent } from '../lib/custom-wizard'; export default Discourse.Route.extend({ beforeModel() { @@ -40,7 +41,12 @@ export default Discourse.Route.extend({ _getFieldTypes(model) { return ajax('/admin/wizards/field-types') - .then((result) => model.set('fieldTypes', result.types)); + .then((result) => { + model.set( + 'fieldTypes', + generateSelectKitContent([...result.types]) + ) + }); }, _getThemes(model) { diff --git a/assets/javascripts/discourse/templates/admin-wizard.hbs b/assets/javascripts/discourse/templates/admin-wizard.hbs index 9b7a53ad..768e2c58 100644 --- a/assets/javascripts/discourse/templates/admin-wizard.hbs +++ b/assets/javascripts/discourse/templates/admin-wizard.hbs @@ -107,7 +107,13 @@

{{i18n 'admin.wizard.theme_id'}}

- {{combo-box content=model.themes valueAttribute='id' value=model.theme_id none='admin.wizard.no_theme'}} + {{combo-box + content=model.themes + valueProperty='id' + value=model.theme_id + options=(hash + none='admin.wizard.no_theme' + )}}
diff --git a/assets/javascripts/discourse/templates/admin-wizards-api.hbs b/assets/javascripts/discourse/templates/admin-wizards-api.hbs index 611876a0..cf4ddf9c 100644 --- a/assets/javascripts/discourse/templates/admin-wizards-api.hbs +++ b/assets/javascripts/discourse/templates/admin-wizards-api.hbs @@ -89,7 +89,12 @@
- {{combo-box value=api.authType content=authorizationTypes none='admin.wizard.api.auth.type_none'}} + {{combo-box + value=api.authType + content=authorizationTypes + options=(hash + none='admin.wizard.api.auth.type_none' + )}}
@@ -240,15 +245,24 @@ class='remove-endpoint'}}
- {{combo-box content=endpointMethods - value=endpoint.method - none="admin.wizard.api.endpoint.method"}} - {{combo-box content=contentTypes - value=endpoint.content_type - none="admin.wizard.api.endpoint.content_type"}} - {{multi-select content=successCodes - values=endpoint.success_codes - none="admin.wizard.api.endpoint.success_codes"}} + {{combo-box + content=endpointMethods + value=endpoint.method + options=(hash + none="admin.wizard.api.endpoint.method" + )}} + {{combo-box + content=contentTypes + value=endpoint.content_type + options=(hash + none="admin.wizard.api.endpoint.content_type" + )}} + {{multi-select + content=successCodes + values=endpoint.success_codes + options=(hash + none="admin.wizard.api.endpoint.success_codes" + )}}
diff --git a/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs b/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs index 63919ae3..4cffbb01 100644 --- a/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-custom-action.hbs @@ -12,7 +12,12 @@

{{i18n "admin.wizard.type"}}

- {{combo-box value=action.type content=types none="admin.wizard.field.type"}} + {{combo-box + value=action.type + content=types + options=(hash + none="admin.wizard.field.type" + )}}
@@ -22,11 +27,14 @@

{{i18n "admin.wizard.action.title"}}

- {{combo-box value=action.title - content=availableFields - nameProperty="label" - none='admin.wizard.select_field' - isDisabled=action.custom_title_enabled}} + {{combo-box + value=action.title + content=availableFields + nameProperty="label" + isDisabled=action.custom_title_enabled + options=(hash + none='admin.wizard.select_field' + )}}
{{input type='checkbox' checked=action.custom_title_enabled}} {{i18n 'admin.wizard.action.custom_title'}} @@ -42,10 +50,14 @@

{{i18n "admin.wizard.action.post"}}

- {{combo-box value=action.post content=availableFields - nameProperty='label' - none='admin.wizard.select_field' - isDisabled=action.post_builder}} + {{combo-box + value=action.post + content=availableFields + nameProperty='label' + isDisabled=action.post_builder + options=(hash + none='admin.wizard.select_field' + )}}
{{input type='checkbox' checked=action.post_builder}} {{i18n 'admin.wizard.action.post_builder.checkbox'}} @@ -77,7 +89,9 @@

{{i18n "admin.wizard.action.create_topic.category"}}

- {{category-chooser value=action.category_id isDisabled=action.custom_category_enabled}} + {{category-chooser + value=action.category_id + isDisabled=action.custom_category_enabled}}
{{input type='checkbox' checked=action.custom_category_enabled}} {{i18n 'admin.wizard.action.custom_category.label'}} @@ -87,10 +101,13 @@ {{input type='checkbox' checked=action.custom_category_wizard_field}} {{i18n 'admin.wizard.action.custom_category.wizard_field'}} {{#if action.custom_category_wizard_field}} - {{combo-box value=action.category_id - content=categoryFields - nameProperty="label" - none='admin.wizard.select_field'}} + {{combo-box + value=action.category_id + content=categoryFields + nameProperty="label" + options=(hash + none='admin.wizard.select_field' + )}} {{/if}}
@@ -111,19 +128,23 @@

{{i18n "admin.wizard.action.create_topic.tags"}}

- {{tag-chooser tags=action.tags - filterable=true - allowCreate=true - isDisabled=action.custom_tag_enabled}} + {{tag-chooser + tags=action.tags + filterable=true + allowCreate=true + isDisabled=action.custom_tag_enabled}}
{{input type='checkbox' checked=action.custom_tag_enabled}} {{i18n 'admin.wizard.action.custom_tag.label'}} {{#if action.custom_tag_enabled}}
- {{combo-box value=action.custom_tag_field - content=tagFields - nameProperty="label" - none='admin.wizard.select_field'}} + {{combo-box + value=action.custom_tag_field + content=tagFields + nameProperty="label" + options=(hash + none='admin.wizard.select_field' + )}}
{{/if}}
@@ -160,10 +181,13 @@

{{i18n 'admin.wizard.required'}}

- {{combo-box content=availableFields - nameProperty='label' - none='admin.wizard.select_field' - value=action.required}} + {{combo-box + value=action.required + content=availableFields + nameProperty='label' + options=(hash + none='admin.wizard.select_field' + )}}
@@ -204,10 +228,13 @@

{{i18n "admin.wizard.action.send_to_api.api"}}

- {{combo-box value=action.api - content=availableApis - none='admin.wizard.action.send_to_api.select_an_api' - isDisabled=action.custom_title_enabled}} + {{combo-box + value=action.api + content=availableApis + isDisabled=action.custom_title_enabled + options=(hash + none='admin.wizard.action.send_to_api.select_an_api' + )}}
@@ -216,10 +243,13 @@

{{i18n "admin.wizard.action.send_to_api.endpoint"}}

- {{combo-box value=action.api_endpoint - content=availableEndpoints - none='admin.wizard.action.send_to_api.select_an_endpoint' - isDisabled=apiEmpty}} + {{combo-box + value=action.api_endpoint + content=availableEndpoints + isDisabled=apiEmpty + options=(hash + none='admin.wizard.action.send_to_api.select_an_endpoint' + )}}
@@ -242,11 +272,14 @@

{{i18n "admin.wizard.action.add_to_group.group_selection"}}

- {{combo-box value=action.group_id - content=availableFields - nameProperty="label" - none='admin.wizard.select_field' - isDisabled=action.custom_group_enabled}} + {{combo-box + value=action.group_id + content=availableFields + isDisabled=action.custom_group_enabled + nameProperty="label" + options=(hash + none='admin.wizard.select_field' + )}}
{{input type='checkbox' checked=action.custom_group_enabled}} {{i18n 'admin.wizard.action.add_to_group.custom_group'}} diff --git a/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs b/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs index 31a0b387..bc073b26 100644 --- a/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs +++ b/assets/javascripts/discourse/templates/components/wizard-custom-field.hbs @@ -48,7 +48,12 @@

{{i18n 'admin.wizard.type'}}

- {{combo-box value=field.type content=types none="admin.wizard.field.type"}} + {{combo-box + value=field.type + content=types + options=(hash + none="admin.wizard.field.type" + )}}
@@ -79,7 +84,12 @@ {{i18n 'admin.wizard.field.choices_label'}} - {{combo-box value=field.choices_type content=choicesTypes none="admin.wizard.field.choices_type"}} + {{combo-box + value=field.choices_type + content=choicesTypes + options=(hash + none="admin.wizard.field.choices_type" + )}} {{#if choicesTranslation}}
@@ -92,7 +102,12 @@
{{i18n 'admin.wizard.field.choices_preset.label'}}
- {{combo-box value=field.choices_preset content=presetChoices none='admin.wizard.none'}} + {{combo-box + value=field.choices_preset + content=presetChoices + options=(hash + none='admin.wizard.none' + )}}
{{i18n 'admin.wizard.field.choices_preset.filter'}}
@@ -141,7 +156,9 @@

{{i18n 'admin.wizard.field.property'}}

- {{combo-box content=categoryPropertyTypes value=field.property}} + {{combo-box + content=categoryPropertyTypes + value=field.property}}
{{/if}} diff --git a/assets/javascripts/wizard-custom.js b/assets/javascripts/wizard-custom.js index 64e46725..d5b0c68f 100644 --- a/assets/javascripts/wizard-custom.js +++ b/assets/javascripts/wizard-custom.js @@ -64,6 +64,9 @@ //= require discourse/helpers/category-link //= require discourse/helpers/user-avatar //= require discourse/helpers/format-username +//= require discourse/helpers/component-for-collection +//= require discourse/helpers/component-for-row +//= require discourse/helpers/discourse-tag //= require discourse/services/app-events //= require discourse/services/emoji-store @@ -97,6 +100,7 @@ //= require jquery.putcursoratend.js //= require template_include.js //= require caret_position.js +//= require popper.js //= require ./wizard/custom-wizard //= require_tree ./wizard/components diff --git a/assets/javascripts/wizard/templates/components/wizard-editor.hbs b/assets/javascripts/wizard/templates/components/wizard-editor.hbs index 13fbcc3a..0033b34a 100644 --- a/assets/javascripts/wizard/templates/components/wizard-editor.hbs +++ b/assets/javascripts/wizard/templates/components/wizard-editor.hbs @@ -16,10 +16,12 @@ {{toolbar-popup-menu-options onPopupMenuAction=onPopupMenuAction onExpand=(action b.action b) - title=b.title - headerIcon=b.icon class=b.className - content=popupMenuOptions}} + content=popupMenuOptions + options=(hash + popupTitle=b.title + icon=b.icon + )}} {{else}}
{{d.icon}}