clicked()

in app/assets/javascripts/users_select/index.js [488:592]


        clicked(options) {
          const { $el, e, isMarking } = options;
          const user = options.selectedObj;

          dispose($el);

          if ($dropdown.hasClass('js-multiselect')) {
            const isActive = $el.hasClass('is-active');
            const previouslySelected = $dropdown
              .closest('.selectbox')
              .find(`input[name='${$dropdown.data('fieldName')}'][value!=0]`);

            // Enables support for limiting the number of users selected
            // Automatically removes the first on the list if more users are selected
            checkMaxSelect();

            if (user.beforeDivider && user.name.toLowerCase() === 'unassigned') {
              // Unassigned selected
              previouslySelected.each((index, element) => {
                element.remove();
              });
              if ($dropdown.hasClass(elsClassName)) {
                emitSidebarEvent('sidebar.removeAllReviewers');
              } else {
                emitSidebarEvent('sidebar.removeAllAssignees');
              }
            } else if (isActive) {
              // user selected
              if ($dropdown.hasClass(elsClassName)) {
                emitSidebarEvent('sidebar.addReviewer', user);
              } else {
                emitSidebarEvent('sidebar.addAssignee', user);
              }

              // Remove unassigned selection (if it was previously selected)
              const unassignedSelected = $dropdown
                .closest('.selectbox')
                .find(`input[name='${$dropdown.data('fieldName')}'][value=0]`);

              if (unassignedSelected) {
                unassignedSelected.remove();
              }
            } else {
              if (previouslySelected.length === 0) {
                // Select unassigned because there is no more selected users
                this.addInput($dropdown.data('fieldName'), 0, {});
              }

              // User unselected
              if ($dropdown.hasClass(elsClassName)) {
                emitSidebarEvent('sidebar.removeReviewer', user);
              } else {
                emitSidebarEvent('sidebar.removeAssignee', user);
              }
            }

            if (getSelected().find((u) => u === gon.current_user_id)) {
              $assignToMeLink.hide();
            } else {
              $assignToMeLink.show();
            }
          }

          const page = $('body').attr('data-page');
          const isIssueIndex = page === 'projects:issues:index';
          const isMRIndex = page === page && page === 'projects:merge_requests:index';
          if (
            $dropdown.hasClass('js-filter-bulk-update') ||
            $dropdown.hasClass('js-issuable-form-dropdown')
          ) {
            e.preventDefault();

            const isSelecting = user.id !== selectedId;
            selectedId = isSelecting ? user.id : selectedIdDefault;

            if (selectedId === gon.current_user_id) {
              $('.assign-to-me-link').hide();
            } else {
              $('.assign-to-me-link').show();
            }
            return;
          }
          if (handleClick) {
            e.preventDefault();
            handleClick(user, isMarking);
          } else if ($dropdown.hasClass('js-filter-submit') && (isIssueIndex || isMRIndex)) {
            return Issuable.filterResults($dropdown.closest('form'));
          } else if ($dropdown.hasClass('js-filter-submit')) {
            return $dropdown.closest('form').submit();
          } else if (!$dropdown.hasClass('js-multiselect')) {
            const selected = $dropdown
              .closest('.selectbox')
              .find(`input[name='${$dropdown.data('fieldName')}']`)
              .val();
            return assignTo(selected);
          }

          // Automatically close dropdown after assignee is selected
          // since CE has no multiple assignees
          // EE does not have a max-select
          if ($dropdown.data('maxSelect') && getSelected().length === $dropdown.data('maxSelect')) {
            // Close the dropdown
            $dropdown.dropdown('toggle');
          }
        },