returns the list of selected component names.

        if no component selected return the one marked as default.
        If the block is required and no component where indicated as default,
        then the first component is selected.

def selected(self):
        """ returns the list of selected component names.

        if no component selected return the one marked as default.
        If the block is required and no component where indicated as default,
        then the first component is selected.
        """
        selected = self._selected
        if len(self._selected) == 0 and self.required:
            # nothing has been selected yet BUT the component is required
            selected = self.defaults
        return selected