renderAuthorsAndGroups()

in src/app/work-items-edit-form.js [366:410]


  renderAuthorsAndGroups() {
    const selected = toUsers(filter.authors).concat(toGroups(filter.authorGroups));

    const placeholder = (selected || []).length
      ? i18n('Add user or group')
      : i18n('All authors');

    const toSelectItemShort = it => it && {
      key: it.id,
      label: it.name,
      model: it,
      description: it.description
    };

    const queryUsersAndGroups = this.queryUsersAndGroups;

    return (
      <div className="ring-form__group">
        <TagsInput
          tags={(selected || []).map(toSelectItemShort)}
          size={TagsInput}
          maxPopupHeight={150}
          dataSource={getWorkAuthorsOptions}
          onAddTag={this.onAddWorkAuthor}
          onRemoveTag={this.onRemoveWorkAuthor}
          filter={{
            fn: () => true // disable client filtering
          }}
          placeholder={placeholder}
          disabled={!this.props.editable}
        />
      </div>
    );

    async function getWorkAuthorsOptions(args) {
      const options = await queryUsersAndGroups(args);
      if ((selected || []).length) {
        options.unshift({
          rgItemType: List.ListProps.Type.SEPARATOR
        });
        options.unshift(WorkItemsEditForm.getAllAuthorsOption());
      }
      return options;
    }
  }