info m-nav-dropdown
<div class="position-relative"> Parent Item <ul class="m-nav-dropdown jq_dropdown">
		<li class="m-nav-dropdown__item">
			<a href="#" class="m-nav-dropdown__link">Menu 01</a>
		</li>
		<li class="m-nav-dropdown__item m-nav-dropdown__item--parent">
			<a href="#" class="m-nav-dropdown__link">Menu 02</a>
			<ul class="m-nav-dropdown jq_dropdown">
				<li class="m-nav-dropdown__item">
					<a href="#" class="m-nav-dropdown__link">Menu 03</a>
				</li>
				<li class="m-nav-dropdown__item">
					<a href="#" class="m-nav-dropdown__link">Menu 04</a>
				</li>
			</ul>
		</li>
	</ul>
</div>

<hr>

<div class="float-right position-relative"> Parent Item <ul class="m-nav-dropdown jq_dropdown">
		<li class="m-nav-dropdown__item">
			<a href="#" class="m-nav-dropdown__link">Menu 01</a>
		</li>
		<li class="m-nav-dropdown__item m-nav-dropdown__item--parent">
			<a href="#" class="m-nav-dropdown__link">Menu 02</a>
			<ul class="m-nav-dropdown jq_dropdown">
				<li class="m-nav-dropdown__item">
					<a href="#" class="m-nav-dropdown__link">Menu 03</a>
				</li>
				<li class="m-nav-dropdown__item">
					<a href="#" class="m-nav-dropdown__link">Menu 04</a>
				</li>
			</ul>
		</li>
	</ul>
</div>
.m-nav-dropdown {

    $self: &;

    border-right: 1px solid;
    color: color('gray');
    display: block;
    list-style: none;
    margin: space(1) 0 0;
    padding: 0 space(2) 0 0;

    & & {

        margin-top: space(1);
    }

    &__link {

        @include text-underline(none, underline);
        color: color('black');
        display: block;

        &:hover,
        &:focus,
        &--active {

            color: color('black');

        }

    }

    @media(min-width: breakpoint-min($menu-breakpoint)) {

        border: 0;
        left: 0;
        margin: 0;
        opacity: 0;
        padding: space(2) 0 0;
        position: absolute;
        text-align: left;
        top: 100%;
        transition: opacity $base-transition;
        visibility: hidden;
        width: 20rem;
        z-index: -1;

        :hover > & {

            opacity: 1;
            visibility: visible;
            z-index: 1;

        }

        @at-root {

            .no-js {

                #{$self} {

                    left: auto;
                    right: 0;

                    #{$self} {

                        left: auto;
                        right: 100%;

                    }

                }

            }

        }

        &[data-align="right"] {

            left: auto;
            right: 0;

            #{$self} & {

                left: auto;
                right: 100%;

            }

        }

        &__item {

            background: color('white');
            border: 1px solid;
            border-bottom: 0;
            border-top: 0;
            line-height: line-height(normal);
            margin: 0;
            padding: 0;

            &:last-child {

                border-bottom: 1px solid;

                #{$self}__link {

                    padding-bottom: em(20px);

                }

            }

            &--parent {

                position: relative;

                > #{$self}__link {

                    @include caret(3px, right);

                    &:after {

                        vertical-align: middle;
                    }

                }

            }

        }

        &__link {

            padding: em(15px 20px);

        }

        #{$self} {

            left: 100%;
            padding-top: 0;
            top: 0;

            #{$self}__item {

                &:first-child {

                    border-top: 1px solid;

                }

            }

            #{$self} {

                display: none;

            }

        }

    }

}
import $ from 'jquery';

export default class DropDown {
	constructor() {
		if (this.test()) {
			this.align();

			$(window).resize(this.align);
		}
	}

	test() {
		return $('.jq_dropdown').length ? true : false;
	}

	align() {
		var maxWidth = $(window).width();

		$('.jq_dropdown').each(function() {
			var $el = $(this);

			$el.removeAttr('data-align');

			if ($el.offset().left + $el.outerWidth() >= maxWidth) {
				$el.attr('data-align', 'right');
			}
		});
	}
}

$(window).on('load', () => new DropDown());

Menu