diff options
| author | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-04-18 01:11:37 +0300 |
|---|---|---|
| committer | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-04-18 01:11:37 +0300 |
| commit | 2b6970d33afd75be5bfef951dc3691d492004d43 (patch) | |
| tree | 39eba4206ca0c4cd3fecd5ead95580a74e50f3f9 /public/assets/js/_dependency-control/forms/select.js | |
| parent | 68fc9e55e538e03f94509731ab41a0c8cf96710f (diff) | |
| download | classroom-2b6970d33afd75be5bfef951dc3691d492004d43.tar.gz classroom-2b6970d33afd75be5bfef951dc3691d492004d43.tar.bz2 classroom-2b6970d33afd75be5bfef951dc3691d492004d43.zip | |
admin back-office environment (skeleton); admin categories
Diffstat (limited to 'public/assets/js/_dependency-control/forms/select.js')
| -rw-r--r-- | public/assets/js/_dependency-control/forms/select.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/public/assets/js/_dependency-control/forms/select.js b/public/assets/js/_dependency-control/forms/select.js new file mode 100644 index 0000000..3ea5435 --- /dev/null +++ b/public/assets/js/_dependency-control/forms/select.js @@ -0,0 +1,52 @@ +$$plugins.define('select', ['domHelper'], function (element, options, $) {
+ var list = element.querySelector('.select__listWrap'),
+ selected = $('.select__button'),
+ selectedMob = element.querySelector('.select__button--mobile'),
+ input = element.querySelector('.select__input'),
+ options = $('.select__option');
+
+ function open() {
+ element.classList.add('select--open');
+ $(list).slideDown(250);
+ }
+
+ function close() {
+ $(list).slideUp(250, function () {
+ element.classList.remove('select--open');
+ });
+ }
+
+ document.addEventListener('click', function (event) {
+ if (!isOpen() || element == event.target || $(event.target).parents().contains(element)) {
+ return;
+ }
+ close();
+ });
+
+ selected.on("click", function (e) {
+ e.preventDefault();
+ if (element.classList.contains('select--open')) {
+ close();
+ } else {
+ open();
+ }
+ });
+
+ function isOpen() {
+ return element.classList.contains('select--open');
+ }
+
+ options.on('click', function (e) {
+ e.target.classList.add('selected');
+ prevActiveOption = Object.values(element.querySelectorAll('.selected')).filter(prevActive => prevActive !== e.target);
+ if (prevActiveOption.length != 0) {
+ prevActiveOption[0].classList.remove('selected');
+ }
+ selected.text(e.target.innerHTML);
+ if (selectedMob) {
+ selectedMob.innerHTML = e.target.innerHTML;
+ }
+ $(input).val(e.target.dataset.value).trigger('change');
+ close();
+ });
+});
|
