vrembem 1.38.0 → 1.40.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -351,14 +351,6 @@ var closeTransition = function closeTransition(el, settings) {
351
351
  });
352
352
  };
353
353
 
354
- var breakpoints = {
355
- xs: '480px',
356
- sm: '620px',
357
- md: '760px',
358
- lg: '990px',
359
- xl: '1380px'
360
- };
361
-
362
354
  var index = {
363
355
  __proto__: null,
364
356
  setInert: setInert,
@@ -376,8 +368,7 @@ var index = {
376
368
  removeClass: removeClass,
377
369
  toggleClass: toggleClass,
378
370
  openTransition: openTransition,
379
- closeTransition: closeTransition,
380
- breakpoints: breakpoints
371
+ closeTransition: closeTransition
381
372
  };
382
373
 
383
374
  function _extends() {
@@ -495,7 +486,7 @@ var defaults$2 = {
495
486
  selectorInert: null,
496
487
  selectorOverflow: null,
497
488
  // Feature toggles
498
- breakpoints: breakpoints,
489
+ breakpoints: null,
499
490
  customEventPrefix: 'drawer:',
500
491
  eventListeners: true,
501
492
  stateSave: true,
@@ -504,59 +495,11 @@ var defaults$2 = {
504
495
  transition: true
505
496
  };
506
497
 
507
- var switchToDefault = function switchToDefault(drawerKey, obj) {
508
- try {
509
- // Initial guards
510
- var drawer = obj.getDrawer(drawerKey);
511
- if (!drawer) return Promise.resolve(obj.drawerNotFound(drawerKey));
512
- if (!hasClass(drawer, obj.settings.classModal)) return Promise.resolve(); // Tear down modal state
513
-
514
- setInert(false, obj.settings.selectorInert);
515
- setOverflowHidden(false, obj.settings.selectorOverflow);
516
- removeClass(drawer, obj.settings.classModal);
517
- obj.focusTrap.destroy(); // Restore drawers saved state
518
-
519
- drawerKey = drawer.getAttribute("data-" + obj.settings.dataDrawer);
520
- var drawerState = obj.state[drawerKey];
521
-
522
- if (drawerState == obj.settings.stateOpened) {
523
- addClass(drawer, obj.settings.stateOpened);
524
- removeClass(drawer, obj.settings.stateClosed);
525
- } // Dispatch custom event
526
-
527
-
528
- drawer.dispatchEvent(new CustomEvent(obj.settings.customEventPrefix + 'toDefault', {
529
- bubbles: true
530
- }));
531
- return Promise.resolve(drawer);
532
- } catch (e) {
533
- return Promise.reject(e);
534
- }
535
- };
536
- var switchToModal = function switchToModal(drawerKey, obj) {
537
- try {
538
- // Initial guards
539
- var drawer = obj.getDrawer(drawerKey);
540
- if (!drawer) return Promise.resolve(obj.drawerNotFound(drawerKey));
541
- if (hasClass(drawer, obj.settings.classModal)) return Promise.resolve(); // Enable modal state
542
-
543
- addClass(drawer, obj.settings.classModal);
544
- addClass(drawer, obj.settings.stateClosed);
545
- removeClass(drawer, obj.settings.stateOpened); // Dispatch custom event
546
-
547
- drawer.dispatchEvent(new CustomEvent(obj.settings.customEventPrefix + 'toModal', {
548
- bubbles: true
549
- }));
550
- return Promise.resolve(drawer);
551
- } catch (e) {
552
- return Promise.reject(e);
553
- }
554
- };
555
-
556
498
  var Breakpoint = /*#__PURE__*/function () {
557
499
  function Breakpoint(parent) {
558
500
  this.mediaQueryLists = [];
559
501
  this.parent = parent;
502
+ this.prefix = this.getVariablePrefix();
560
503
  this.__check = this.check.bind(this);
561
504
  }
562
505
 
@@ -569,7 +512,9 @@ var Breakpoint = /*#__PURE__*/function () {
569
512
  drawers.forEach(function (drawer) {
570
513
  var id = drawer.getAttribute("data-" + _this.parent.settings.dataDrawer);
571
514
  var key = drawer.getAttribute("data-" + _this.parent.settings.dataBreakpoint);
572
- var bp = _this.parent.settings.breakpoints[key] ? _this.parent.settings.breakpoints[key] : key;
515
+
516
+ var bp = _this.getBreakpoint(key);
517
+
573
518
  var mql = window.matchMedia('(min-width:' + bp + ')');
574
519
 
575
520
  _this.match(mql, drawer);
@@ -619,15 +564,80 @@ var Breakpoint = /*#__PURE__*/function () {
619
564
 
620
565
  _proto.match = function match(mql, drawer) {
621
566
  if (mql.matches) {
622
- switchToDefault(drawer, this.parent);
567
+ this.parent.switchToDefault(drawer);
623
568
  } else {
624
- switchToModal(drawer, this.parent);
569
+ this.parent.switchToModal(drawer);
625
570
  }
626
571
  };
627
572
 
573
+ _proto.getBreakpoint = function getBreakpoint(key) {
574
+ var breakpoint = key;
575
+
576
+ if (this.parent.settings.breakpoints && this.parent.settings.breakpoints[key]) {
577
+ breakpoint = this.parent.settings.breakpoints[key];
578
+ } else if (getComputedStyle(document.body).getPropertyValue(this.prefix + key)) {
579
+ breakpoint = getComputedStyle(document.body).getPropertyValue(this.prefix + key);
580
+ }
581
+
582
+ return breakpoint;
583
+ };
584
+
585
+ _proto.getVariablePrefix = function getVariablePrefix() {
586
+ var prefix = '--';
587
+ prefix += getComputedStyle(document.body).getPropertyValue('--vrembem-variable-prefix');
588
+ prefix += 'breakpoint-';
589
+ return prefix;
590
+ };
591
+
628
592
  return Breakpoint;
629
593
  }();
630
594
 
595
+ function getDrawer(drawerKey) {
596
+ if (typeof drawerKey !== 'string') return drawerKey;
597
+ return document.querySelector("[data-" + this.settings.dataDrawer + "=\"" + drawerKey + "\"]");
598
+ }
599
+ function drawerNotFound(key) {
600
+ return Promise.reject(new Error("Did not find drawer with key: \"" + key + "\""));
601
+ }
602
+
603
+ var close$2 = function close(drawerKey) {
604
+ try {
605
+ var _this2 = this;
606
+
607
+ var drawer = _this2.getDrawer(drawerKey);
608
+
609
+ if (!drawer) return Promise.resolve(drawerNotFound(drawerKey));
610
+
611
+ if (hasClass(drawer, _this2.settings.stateOpened)) {
612
+ _this2.working = true;
613
+
614
+ if (hasClass(drawer, _this2.settings.classModal)) {
615
+ setInert(false, _this2.settings.selectorInert);
616
+ setOverflowHidden(false, _this2.settings.selectorOverflow);
617
+ }
618
+
619
+ return Promise.resolve(closeTransition(drawer, _this2.settings)).then(function () {
620
+ _this2.stateSave(drawer);
621
+
622
+ focusTrigger(_this2);
623
+
624
+ _this2.focusTrap.destroy();
625
+
626
+ drawer.dispatchEvent(new CustomEvent(_this2.settings.customEventPrefix + 'closed', {
627
+ detail: _this2,
628
+ bubbles: true
629
+ }));
630
+ _this2.working = false;
631
+ return drawer;
632
+ });
633
+ } else {
634
+ return Promise.resolve(drawer);
635
+ }
636
+ } catch (e) {
637
+ return Promise.reject(e);
638
+ }
639
+ };
640
+
631
641
  function handlerClick$2(event) {
632
642
  // Working catch
633
643
  if (this.working) return; // Toggle data trigger
@@ -691,6 +701,48 @@ function handlerKeydown$2(event) {
691
701
  }
692
702
  }
693
703
 
704
+ var open$2 = function open(drawerKey) {
705
+ try {
706
+ var _this2 = this;
707
+
708
+ var drawer = _this2.getDrawer(drawerKey);
709
+
710
+ if (!drawer) return Promise.resolve(drawerNotFound(drawerKey));
711
+
712
+ if (!hasClass(drawer, _this2.settings.stateOpened)) {
713
+ _this2.working = true;
714
+ var isModal = hasClass(drawer, _this2.settings.classModal);
715
+
716
+ if (isModal) {
717
+ setOverflowHidden(true, _this2.settings.selectorOverflow);
718
+ }
719
+
720
+ return Promise.resolve(openTransition(drawer, _this2.settings)).then(function () {
721
+ _this2.stateSave(drawer);
722
+
723
+ if (isModal) {
724
+ _this2.focusTrap.init(drawer);
725
+
726
+ setInert(true, _this2.settings.selectorInert);
727
+ }
728
+
729
+ focusTarget(drawer, _this2.settings);
730
+ drawer.dispatchEvent(new CustomEvent(_this2.settings.customEventPrefix + 'opened', {
731
+ detail: _this2,
732
+ bubbles: true
733
+ }));
734
+ _this2.working = false;
735
+ return drawer;
736
+ });
737
+ } else {
738
+ focusTarget(drawer, _this2.settings);
739
+ return Promise.resolve(drawer);
740
+ }
741
+ } catch (e) {
742
+ return Promise.reject(e);
743
+ }
744
+ };
745
+
694
746
  function stateSet(settings) {
695
747
  // If save state is disabled
696
748
  if (!settings.stateSave) return stateClear(settings); // If there isn't an existing state to set
@@ -735,6 +787,82 @@ function stateClear(settings) {
735
787
  return {};
736
788
  }
737
789
 
790
+ var switchToDefault = function switchToDefault(drawerKey) {
791
+ try {
792
+ var _this4 = this;
793
+
794
+ // Initial guards
795
+ var drawer = _this4.getDrawer(drawerKey);
796
+
797
+ if (!drawer) return Promise.resolve(drawerNotFound(drawerKey));
798
+ if (!hasClass(drawer, _this4.settings.classModal)) return Promise.resolve(); // Tear down modal state
799
+
800
+ setInert(false, _this4.settings.selectorInert);
801
+ setOverflowHidden(false, _this4.settings.selectorOverflow);
802
+ removeClass(drawer, _this4.settings.classModal);
803
+
804
+ _this4.focusTrap.destroy(); // Restore drawers saved state
805
+
806
+
807
+ drawerKey = drawer.getAttribute("data-" + _this4.settings.dataDrawer);
808
+ var drawerState = _this4.state[drawerKey];
809
+
810
+ if (drawerState == _this4.settings.stateOpened) {
811
+ addClass(drawer, _this4.settings.stateOpened);
812
+ removeClass(drawer, _this4.settings.stateClosed);
813
+ } // Dispatch custom event
814
+
815
+
816
+ drawer.dispatchEvent(new CustomEvent(_this4.settings.customEventPrefix + 'toDefault', {
817
+ bubbles: true
818
+ }));
819
+ return Promise.resolve(drawer);
820
+ } catch (e) {
821
+ return Promise.reject(e);
822
+ }
823
+ };
824
+ var switchToModal = function switchToModal(drawerKey) {
825
+ try {
826
+ var _this2 = this;
827
+
828
+ // Initial guards
829
+ var drawer = _this2.getDrawer(drawerKey);
830
+
831
+ if (!drawer) return Promise.resolve(drawerNotFound(drawerKey));
832
+ if (hasClass(drawer, _this2.settings.classModal)) return Promise.resolve(); // Enable modal state
833
+
834
+ addClass(drawer, _this2.settings.classModal);
835
+ addClass(drawer, _this2.settings.stateClosed);
836
+ removeClass(drawer, _this2.settings.stateOpened); // Dispatch custom event
837
+
838
+ drawer.dispatchEvent(new CustomEvent(_this2.settings.customEventPrefix + 'toModal', {
839
+ bubbles: true
840
+ }));
841
+ return Promise.resolve(drawer);
842
+ } catch (e) {
843
+ return Promise.reject(e);
844
+ }
845
+ };
846
+
847
+ var toggle = function toggle(drawerKey) {
848
+ try {
849
+ var _this2 = this;
850
+
851
+ var drawer = _this2.getDrawer(drawerKey);
852
+
853
+ if (!drawer) return Promise.resolve(drawerNotFound(drawerKey));
854
+ var isClosed = !hasClass(drawer, _this2.settings.stateOpened);
855
+
856
+ if (isClosed) {
857
+ return Promise.resolve(_this2.open(drawer));
858
+ } else {
859
+ return Promise.resolve(_this2.close(drawer));
860
+ }
861
+ } catch (e) {
862
+ return Promise.reject(e);
863
+ }
864
+ };
865
+
738
866
  var Drawer = /*#__PURE__*/function () {
739
867
  function Drawer(options) {
740
868
  this.defaults = defaults$2;
@@ -801,19 +929,12 @@ var Drawer = /*#__PURE__*/function () {
801
929
  */
802
930
  ;
803
931
 
804
- _proto.getDrawer = function getDrawer(drawerKey) {
805
- if (typeof drawerKey !== 'string') return drawerKey;
806
- return document.querySelector("[data-" + this.settings.dataDrawer + "=\"" + drawerKey + "\"]");
807
- };
808
-
809
- _proto.drawerNotFound = function drawerNotFound(key) {
810
- return Promise.reject(new Error("Did not find drawer with key: \"" + key + "\""));
932
+ _proto.getDrawer = function getDrawer$1(drawerKey) {
933
+ return getDrawer.call(this, drawerKey);
811
934
  };
812
935
 
813
936
  _proto.setTabindex = function setTabindex$1() {
814
- var selectorTabindex = "\n [data-" + this.settings.dataDrawer + "]\n [data-" + this.settings.dataDialog + "]\n ";
815
-
816
- setTabindex(selectorTabindex);
937
+ return setTabindex("\n [data-" + this.settings.dataDrawer + "]\n [data-" + this.settings.dataDialog + "]\n ");
817
938
  }
818
939
  /**
819
940
  * Save state functionality
@@ -841,114 +962,27 @@ var Drawer = /*#__PURE__*/function () {
841
962
  ;
842
963
 
843
964
  _proto.switchToDefault = function switchToDefault$1(drawerKey) {
844
- return switchToDefault(drawerKey, this);
965
+ return switchToDefault.call(this, drawerKey);
845
966
  };
846
967
 
847
968
  _proto.switchToModal = function switchToModal$1(drawerKey) {
848
- return switchToModal(drawerKey, this);
969
+ return switchToModal.call(this, drawerKey);
849
970
  }
850
971
  /**
851
972
  * Change state functionality
852
973
  */
853
974
  ;
854
975
 
855
- _proto.toggle = function toggle(drawerKey) {
856
- try {
857
- var _this2 = this;
858
-
859
- var drawer = _this2.getDrawer(drawerKey);
860
-
861
- if (!drawer) return Promise.resolve(_this2.drawerNotFound(drawerKey));
862
- var isClosed = !hasClass(drawer, _this2.settings.stateOpened);
863
-
864
- if (isClosed) {
865
- return Promise.resolve(_this2.open(drawer));
866
- } else {
867
- return Promise.resolve(_this2.close(drawer));
868
- }
869
- } catch (e) {
870
- return Promise.reject(e);
871
- }
976
+ _proto.toggle = function toggle$1(drawerKey) {
977
+ return toggle.call(this, drawerKey);
872
978
  };
873
979
 
874
980
  _proto.open = function open(drawerKey) {
875
- try {
876
- var _this4 = this;
877
-
878
- var drawer = _this4.getDrawer(drawerKey);
879
-
880
- if (!drawer) return Promise.resolve(_this4.drawerNotFound(drawerKey));
881
-
882
- if (!hasClass(drawer, _this4.settings.stateOpened)) {
883
- _this4.working = true;
884
- var isModal = hasClass(drawer, _this4.settings.classModal);
885
-
886
- if (isModal) {
887
- setOverflowHidden(true, _this4.settings.selectorOverflow);
888
- }
889
-
890
- return Promise.resolve(openTransition(drawer, _this4.settings)).then(function () {
891
- _this4.stateSave(drawer);
892
-
893
- if (isModal) {
894
- _this4.focusTrap.init(drawer);
895
-
896
- setInert(true, _this4.settings.selectorInert);
897
- }
898
-
899
- focusTarget(drawer, _this4.settings);
900
- drawer.dispatchEvent(new CustomEvent(_this4.settings.customEventPrefix + 'opened', {
901
- detail: _this4,
902
- bubbles: true
903
- }));
904
- _this4.working = false;
905
- return drawer;
906
- });
907
- } else {
908
- focusTarget(drawer, _this4.settings);
909
- return Promise.resolve(drawer);
910
- }
911
- } catch (e) {
912
- return Promise.reject(e);
913
- }
981
+ return open$2.call(this, drawerKey);
914
982
  };
915
983
 
916
984
  _proto.close = function close(drawerKey) {
917
- try {
918
- var _this6 = this;
919
-
920
- var drawer = _this6.getDrawer(drawerKey);
921
-
922
- if (!drawer) return Promise.resolve(_this6.drawerNotFound(drawerKey));
923
-
924
- if (hasClass(drawer, _this6.settings.stateOpened)) {
925
- _this6.working = true;
926
-
927
- if (hasClass(drawer, _this6.settings.classModal)) {
928
- setInert(false, _this6.settings.selectorInert);
929
- setOverflowHidden(false, _this6.settings.selectorOverflow);
930
- }
931
-
932
- return Promise.resolve(closeTransition(drawer, _this6.settings)).then(function () {
933
- _this6.stateSave(drawer);
934
-
935
- focusTrigger(_this6);
936
-
937
- _this6.focusTrap.destroy();
938
-
939
- drawer.dispatchEvent(new CustomEvent(_this6.settings.customEventPrefix + 'closed', {
940
- detail: _this6,
941
- bubbles: true
942
- }));
943
- _this6.working = false;
944
- return drawer;
945
- });
946
- } else {
947
- return Promise.resolve(drawer);
948
- }
949
- } catch (e) {
950
- return Promise.reject(e);
951
- }
985
+ return close$2.call(this, drawerKey);
952
986
  };
953
987
 
954
988
  return Drawer;
@@ -982,6 +1016,40 @@ var defaults$1 = {
982
1016
  transition: true
983
1017
  };
984
1018
 
1019
+ var close$1 = function close(returnFocus) {
1020
+ if (returnFocus === void 0) {
1021
+ returnFocus = true;
1022
+ }
1023
+
1024
+ try {
1025
+ var _this2 = this;
1026
+
1027
+ var modal = document.querySelector("[data-" + _this2.settings.dataModal + "]." + _this2.settings.stateOpened);
1028
+
1029
+ if (modal) {
1030
+ _this2.working = true;
1031
+ setInert(false, _this2.settings.selectorInert);
1032
+ setOverflowHidden(false, _this2.settings.selectorOverflow);
1033
+ return Promise.resolve(closeTransition(modal, _this2.settings)).then(function () {
1034
+ if (returnFocus) focusTrigger(_this2);
1035
+
1036
+ _this2.focusTrap.destroy();
1037
+
1038
+ modal.dispatchEvent(new CustomEvent(_this2.settings.customEventPrefix + 'closed', {
1039
+ detail: _this2,
1040
+ bubbles: true
1041
+ }));
1042
+ _this2.working = false;
1043
+ return modal;
1044
+ });
1045
+ } else {
1046
+ return Promise.resolve(modal);
1047
+ }
1048
+ } catch (e) {
1049
+ return Promise.reject(e);
1050
+ }
1051
+ };
1052
+
985
1053
  var handlerClick$1 = function handlerClick(event) {
986
1054
  try {
987
1055
  var _temp3 = function _temp3(_result) {
@@ -1043,21 +1111,76 @@ function handlerKeydown$1(event) {
1043
1111
  }
1044
1112
  }
1045
1113
 
1046
- function setInitialState(obj) {
1047
- var modals = document.querySelectorAll("[data-" + obj.settings.dataModal + "]");
1114
+ function getModal(modalKey) {
1115
+ if (typeof modalKey !== 'string') return modalKey;
1116
+ return document.querySelector("[data-" + this.settings.dataModal + "=\"" + modalKey + "\"]");
1117
+ }
1118
+ function modalNotFound(key) {
1119
+ return Promise.reject(new Error("Did not find modal with key: \"" + key + "\""));
1120
+ }
1121
+ function moveModals(type, ref) {
1122
+ if (type === void 0) {
1123
+ type = this.settings.moveModals.type;
1124
+ }
1125
+
1126
+ if (ref === void 0) {
1127
+ ref = this.settings.moveModals.ref;
1128
+ }
1129
+
1130
+ var modals = document.querySelectorAll("[data-" + this.settings.dataModal + "]");
1131
+ if (modals.length) moveElement(modals, type, ref);
1132
+ }
1133
+
1134
+ function setInitialState() {
1135
+ var _this = this;
1136
+
1137
+ var modals = document.querySelectorAll("[data-" + this.settings.dataModal + "]");
1048
1138
  modals.forEach(function (el) {
1049
- if (el.classList.contains(obj.settings.stateOpened)) {
1050
- setInert(false, obj.settings.selectorInert);
1051
- setOverflowHidden(false, obj.settings.selectorOverflow);
1052
- focusTrigger(obj);
1053
- obj.focusTrap.destroy();
1054
- }
1139
+ // Remove opened state setup
1140
+ if (el.classList.contains(_this.settings.stateOpened)) {
1141
+ setInert(false, _this.settings.selectorInert);
1142
+ setOverflowHidden(false, _this.settings.selectorOverflow);
1143
+ focusTrigger(_this);
1144
+
1145
+ _this.focusTrap.destroy();
1146
+ } // Remove all state classes and add the default state (closed)
1055
1147
 
1056
- removeClass(el, obj.settings.stateOpened, obj.settings.stateOpening, obj.settings.stateClosing);
1057
- addClass(el, obj.settings.stateClosed);
1148
+
1149
+ removeClass(el, _this.settings.stateOpened, _this.settings.stateOpening, _this.settings.stateClosing);
1150
+ addClass(el, _this.settings.stateClosed);
1058
1151
  });
1059
1152
  }
1060
1153
 
1154
+ var open$1 = function open(modalKey) {
1155
+ try {
1156
+ var _this2 = this;
1157
+
1158
+ var modal = getModal.call(_this2, modalKey);
1159
+ if (!modal) return Promise.resolve(modalNotFound(modalKey));
1160
+
1161
+ if (hasClass(modal, _this2.settings.stateClosed)) {
1162
+ _this2.working = true;
1163
+ setOverflowHidden(true, _this2.settings.selectorOverflow);
1164
+ return Promise.resolve(openTransition(modal, _this2.settings)).then(function () {
1165
+ _this2.focusTrap.init(modal);
1166
+
1167
+ focusTarget(modal, _this2.settings);
1168
+ setInert(true, _this2.settings.selectorInert);
1169
+ modal.dispatchEvent(new CustomEvent(_this2.settings.customEventPrefix + 'opened', {
1170
+ detail: _this2,
1171
+ bubbles: true
1172
+ }));
1173
+ _this2.working = false;
1174
+ return modal;
1175
+ });
1176
+ } else {
1177
+ return Promise.resolve(modal);
1178
+ }
1179
+ } catch (e) {
1180
+ return Promise.reject(e);
1181
+ }
1182
+ };
1183
+
1061
1184
  var Modal = /*#__PURE__*/function () {
1062
1185
  function Modal(options) {
1063
1186
  this.defaults = defaults$1;
@@ -1079,13 +1202,12 @@ var Modal = /*#__PURE__*/function () {
1079
1202
 
1080
1203
  if (options) this.settings = _extends({}, this.settings, options);
1081
1204
  this.moveModals();
1205
+ this.setInitialState();
1082
1206
 
1083
1207
  if (this.settings.setTabindex) {
1084
1208
  this.setTabindex();
1085
1209
  }
1086
1210
 
1087
- this.setInitialState();
1088
-
1089
1211
  if (this.settings.eventListeners) {
1090
1212
  this.initEventListeners();
1091
1213
  }
@@ -1119,36 +1241,20 @@ var Modal = /*#__PURE__*/function () {
1119
1241
  */
1120
1242
  ;
1121
1243
 
1122
- _proto.getModal = function getModal(modalKey) {
1123
- if (typeof modalKey !== 'string') return modalKey;
1124
- return document.querySelector("[data-" + this.settings.dataModal + "=\"" + modalKey + "\"]");
1125
- };
1126
-
1127
- _proto.modalNotFound = function modalNotFound(key) {
1128
- return Promise.reject(new Error("Did not find modal with key: \"" + key + "\""));
1244
+ _proto.getModal = function getModal$1(modalKey) {
1245
+ return getModal.call(this, modalKey);
1129
1246
  };
1130
1247
 
1131
1248
  _proto.setTabindex = function setTabindex$1() {
1132
- var selectorTabindex = "\n [data-" + this.settings.dataModal + "]\n [data-" + this.settings.dataDialog + "]\n ";
1133
-
1134
- setTabindex(selectorTabindex);
1249
+ return setTabindex("\n [data-" + this.settings.dataModal + "]\n [data-" + this.settings.dataDialog + "]\n ");
1135
1250
  };
1136
1251
 
1137
1252
  _proto.setInitialState = function setInitialState$1() {
1138
- setInitialState(this);
1253
+ return setInitialState.call(this);
1139
1254
  };
1140
1255
 
1141
- _proto.moveModals = function moveModals(type, ref) {
1142
- if (type === void 0) {
1143
- type = this.settings.moveModals.type;
1144
- }
1145
-
1146
- if (ref === void 0) {
1147
- ref = this.settings.moveModals.ref;
1148
- }
1149
-
1150
- var modals = document.querySelectorAll("[data-" + this.settings.dataModal + "]");
1151
- if (modals.length) moveElement(modals, type, ref);
1256
+ _proto.moveModals = function moveModals$1(type, ref) {
1257
+ return moveModals.call(this, type, ref);
1152
1258
  }
1153
1259
  /**
1154
1260
  * Change state functionality
@@ -1156,68 +1262,11 @@ var Modal = /*#__PURE__*/function () {
1156
1262
  ;
1157
1263
 
1158
1264
  _proto.open = function open(modalKey) {
1159
- try {
1160
- var _this2 = this;
1161
-
1162
- var modal = _this2.getModal(modalKey);
1163
-
1164
- if (!modal) return Promise.resolve(_this2.modalNotFound(modalKey));
1165
-
1166
- if (hasClass(modal, _this2.settings.stateClosed)) {
1167
- _this2.working = true;
1168
- setOverflowHidden(true, _this2.settings.selectorOverflow);
1169
- return Promise.resolve(openTransition(modal, _this2.settings)).then(function () {
1170
- _this2.focusTrap.init(modal);
1171
-
1172
- focusTarget(modal, _this2.settings);
1173
- setInert(true, _this2.settings.selectorInert);
1174
- modal.dispatchEvent(new CustomEvent(_this2.settings.customEventPrefix + 'opened', {
1175
- detail: _this2,
1176
- bubbles: true
1177
- }));
1178
- _this2.working = false;
1179
- return modal;
1180
- });
1181
- } else {
1182
- return Promise.resolve(modal);
1183
- }
1184
- } catch (e) {
1185
- return Promise.reject(e);
1186
- }
1265
+ return open$1.call(this, modalKey);
1187
1266
  };
1188
1267
 
1189
1268
  _proto.close = function close(returnFocus) {
1190
- if (returnFocus === void 0) {
1191
- returnFocus = true;
1192
- }
1193
-
1194
- try {
1195
- var _this4 = this;
1196
-
1197
- var modal = document.querySelector("[data-" + _this4.settings.dataModal + "]." + _this4.settings.stateOpened);
1198
-
1199
- if (modal) {
1200
- _this4.working = true;
1201
- setInert(false, _this4.settings.selectorInert);
1202
- setOverflowHidden(false, _this4.settings.selectorOverflow);
1203
- return Promise.resolve(closeTransition(modal, _this4.settings)).then(function () {
1204
- if (returnFocus) focusTrigger(_this4);
1205
-
1206
- _this4.focusTrap.destroy();
1207
-
1208
- modal.dispatchEvent(new CustomEvent(_this4.settings.customEventPrefix + 'closed', {
1209
- detail: _this4,
1210
- bubbles: true
1211
- }));
1212
- _this4.working = false;
1213
- return modal;
1214
- });
1215
- } else {
1216
- return Promise.resolve(modal);
1217
- }
1218
- } catch (e) {
1219
- return Promise.reject(e);
1220
- }
1269
+ return close$1.call(this, returnFocus);
1221
1270
  };
1222
1271
 
1223
1272
  return Modal;
@@ -1239,9 +1288,9 @@ var defaults = {
1239
1288
  placement: 'bottom-start'
1240
1289
  };
1241
1290
 
1242
- function hide$2(popover, obj) {
1291
+ function close(popover) {
1243
1292
  // Update state class
1244
- popover.target.classList.remove(obj.settings.stateActive); // Update a11y attributes
1293
+ popover.target.classList.remove(this.settings.stateActive); // Update a11y attributes
1245
1294
 
1246
1295
  popover.trigger.setAttribute('aria-expanded', 'false'); // Disable popper event listeners
1247
1296
 
@@ -1252,32 +1301,43 @@ function hide$2(popover, obj) {
1252
1301
  }]
1253
1302
  }); // Update collection status with new state
1254
1303
 
1255
- var index = obj.collection.findIndex(function (item) {
1304
+ var index = this.collection.findIndex(function (item) {
1256
1305
  return item.target === popover.target;
1257
1306
  });
1258
- obj.collection[index].state = 'hide'; // Return the popover
1307
+ this.collection[index].state = 'closed'; // Clear the memory if popover trigger matches the ones saved in memory
1308
+
1309
+ if (popover.trigger === this.memory.trigger) {
1310
+ this.memory.trigger = null;
1311
+ } // Return the popover
1312
+
1259
1313
 
1260
1314
  return popover;
1261
1315
  }
1262
- function hideAll(obj) {
1263
- obj.collection.forEach(function (popover) {
1264
- if (popover.state === 'show') {
1265
- hide$2(popover, obj);
1316
+ function closeAll() {
1317
+ var _this = this;
1318
+
1319
+ this.collection.forEach(function (popover) {
1320
+ if (popover.state === 'opened') {
1321
+ _this.close(popover);
1266
1322
  }
1267
1323
  }); // Return the collection
1268
1324
 
1269
- return obj.collection;
1325
+ return this.collection;
1270
1326
  }
1271
- function hideCheck(popover, obj) {
1272
- // Needed to correctly check which element is currently being focused
1327
+ function closeCheck(popover) {
1328
+ var _this2 = this;
1329
+
1330
+ // Only run closeCheck if provided popover is currently open
1331
+ if (popover.state != 'opened') return; // Needed to correctly check which element is currently being focused
1332
+
1273
1333
  setTimeout(function () {
1274
1334
  // Check if trigger or target are being hovered
1275
1335
  var isHovered = popover.target.closest(':hover') === popover.target || popover.trigger.closest(':hover') === popover.trigger; // Check if trigger or target are being focused
1276
1336
 
1277
- var isFocused = document.activeElement.closest("[data-" + obj.settings.dataPopover + "]") === popover.target || document.activeElement.closest("[data-" + obj.settings.dataTrigger + "]") === popover.trigger; // Hide if the trigger and target are not currently hovered or focused
1337
+ var isFocused = document.activeElement.closest("[data-" + _this2.settings.dataPopover + "]") === popover.target || document.activeElement.closest("[data-" + _this2.settings.dataTrigger + "]") === popover.trigger; // Close if the trigger and target are not currently hovered or focused
1278
1338
 
1279
1339
  if (!isHovered && !isFocused) {
1280
- hide$2(popover, obj);
1340
+ _this2.close(popover);
1281
1341
  } // Return the popover
1282
1342
 
1283
1343
 
@@ -1285,6 +1345,57 @@ function hideCheck(popover, obj) {
1285
1345
  }, 1);
1286
1346
  }
1287
1347
 
1348
+ function handlerClick(popover) {
1349
+ if (popover.target.classList.contains(this.settings.stateActive)) {
1350
+ this.close(popover);
1351
+ } else {
1352
+ this.memory.trigger = popover.trigger;
1353
+ this.open(popover);
1354
+ documentClick.call(this, popover);
1355
+ }
1356
+ }
1357
+ function handlerKeydown(event) {
1358
+ var _this = this;
1359
+
1360
+ switch (event.key) {
1361
+ case 'Escape':
1362
+ if (this.memory.trigger) {
1363
+ this.memory.trigger.focus();
1364
+ }
1365
+
1366
+ this.closeAll();
1367
+ return;
1368
+
1369
+ case 'Tab':
1370
+ this.collection.forEach(function (popover) {
1371
+ closeCheck.call(_this, popover);
1372
+ });
1373
+ return;
1374
+
1375
+ default:
1376
+ return;
1377
+ }
1378
+ }
1379
+ function documentClick(popover) {
1380
+ var obj = this;
1381
+ document.addEventListener('click', function _f(event) {
1382
+ var result = event.target.closest("[data-" + obj.settings.dataPopover + "], [data-" + obj.settings.dataTrigger + "]");
1383
+ var match = result === popover.target || result === popover.trigger;
1384
+
1385
+ if (!match) {
1386
+ if (popover.target.classList.contains(obj.settings.stateActive)) {
1387
+ obj.close(popover);
1388
+ }
1389
+
1390
+ this.removeEventListener('click', _f);
1391
+ } else {
1392
+ if (!popover.target.classList.contains(obj.settings.stateActive)) {
1393
+ this.removeEventListener('click', _f);
1394
+ }
1395
+ }
1396
+ });
1397
+ }
1398
+
1288
1399
  function getConfig(el, settings) {
1289
1400
  // Get the computed styles of the popover
1290
1401
  var styles = getComputedStyle(el); // Setup the config obj with default values
@@ -1301,7 +1412,8 @@ function getConfig(el, settings) {
1301
1412
 
1302
1413
  for (var prop in config) {
1303
1414
  // Get the CSS variable property values
1304
- var val = styles.getPropertyValue("--popover-" + prop).trim(); // If a value was found, replace the default in config obj
1415
+ var prefix = getComputedStyle(document.body).getPropertyValue('--vrembem-variable-prefix');
1416
+ var val = styles.getPropertyValue("--" + prefix + "popover-" + prop).trim(); // If a value was found, replace the default in config obj
1305
1417
 
1306
1418
  if (val) {
1307
1419
  config[prop] = val;
@@ -1408,16 +1520,16 @@ function getPopover(trigger, settings) {
1408
1520
  }
1409
1521
  }
1410
1522
 
1411
- function show(popover, obj) {
1523
+ function open(popover) {
1412
1524
  // Update state class
1413
- popover.target.classList.add(obj.settings.stateActive); // Update a11y attributes
1525
+ popover.target.classList.add(this.settings.stateActive); // Update a11y attributes
1414
1526
 
1415
1527
  popover.trigger.setAttribute('aria-expanded', 'true'); // Update popover config
1416
1528
 
1417
- popover.config = getConfig(popover.target, obj.settings); // Enable popper event listeners and set placement/modifiers
1529
+ popover.config = getConfig(popover.target, this.settings); // Enable popper event listeners and set placement/modifiers
1418
1530
 
1419
1531
  popover.popper.setOptions({
1420
- placement: getData(popover.target, obj.settings.dataPlacement, popover.config['placement']),
1532
+ placement: getData(popover.target, this.settings.dataPlacement, popover.config['placement']),
1421
1533
  modifiers: [{
1422
1534
  name: 'eventListeners',
1423
1535
  enabled: true
@@ -1426,46 +1538,14 @@ function show(popover, obj) {
1426
1538
 
1427
1539
  popover.popper.update(); // Update collection status with new state
1428
1540
 
1429
- var index = obj.collection.findIndex(function (item) {
1541
+ var index = this.collection.findIndex(function (item) {
1430
1542
  return item.target === popover.target;
1431
1543
  });
1432
- obj.collection[index].state = 'show'; // Return the popover
1544
+ this.collection[index].state = 'opened'; // Return the popover
1433
1545
 
1434
1546
  return popover;
1435
1547
  }
1436
1548
 
1437
- function handlerClick(popover) {
1438
- if (popover.target.classList.contains(this.settings.stateActive)) {
1439
- hide$2(popover, this);
1440
- } else {
1441
- show(popover, this);
1442
- documentClick(popover, this);
1443
- }
1444
- }
1445
- function handlerKeydown(event) {
1446
- if (event.key === 'Escape') {
1447
- hideAll(this);
1448
- }
1449
- }
1450
- function documentClick(popover, obj) {
1451
- document.addEventListener('click', function _f(event) {
1452
- var result = event.target.closest("[data-" + obj.settings.dataPopover + "], [data-" + obj.settings.dataTrigger + "]");
1453
- var match = result === popover.target || result === popover.trigger;
1454
-
1455
- if (!match) {
1456
- if (popover.target.classList.contains(obj.settings.stateActive)) {
1457
- hide$2(popover, obj);
1458
- }
1459
-
1460
- this.removeEventListener('click', _f);
1461
- } else {
1462
- if (!popover.target.classList.contains(obj.settings.stateActive)) {
1463
- this.removeEventListener('click', _f);
1464
- }
1465
- }
1466
- });
1467
- }
1468
-
1469
1549
  var top = 'top';
1470
1550
  var bottom = 'bottom';
1471
1551
  var right = 'right';
@@ -3249,11 +3329,11 @@ var createPopper = /*#__PURE__*/popperGenerator({
3249
3329
  defaultModifiers: defaultModifiers
3250
3330
  }); // eslint-disable-next-line import/no-unused-modules
3251
3331
 
3252
- function register(trigger, target, obj) {
3332
+ function register(trigger, target) {
3253
3333
  // If no target is passed
3254
3334
  if (!target) {
3255
3335
  // Try and get the target
3256
- target = getPopover(trigger, obj.settings); // If still no target is returned, log an error and return false
3336
+ target = getPopover(trigger, this.settings); // If still no target is returned, log an error and return false
3257
3337
 
3258
3338
  if (!target) {
3259
3339
  console.error('No popover associated with the provided trigger:', trigger);
@@ -3262,7 +3342,7 @@ function register(trigger, target, obj) {
3262
3342
  } // Check if this item has already been registered in the collection
3263
3343
 
3264
3344
 
3265
- var index = obj.collection.findIndex(function (item) {
3345
+ var index = this.collection.findIndex(function (item) {
3266
3346
  return item.trigger === trigger && item.target === target;
3267
3347
  }); // Initiate popover variable
3268
3348
 
@@ -3270,45 +3350,45 @@ function register(trigger, target, obj) {
3270
3350
 
3271
3351
  if (index >= 0) {
3272
3352
  // Set popover as item from collection
3273
- popover = obj.collection[index];
3353
+ popover = this.collection[index];
3274
3354
  } else {
3275
3355
  // Create popper instance
3276
3356
  var popperInstance = createPopper(trigger, target); // Build popover object and push to collection array
3277
3357
 
3278
3358
  popover = {
3279
- state: 'hide',
3359
+ state: 'closed',
3280
3360
  trigger: trigger,
3281
3361
  target: target,
3282
3362
  popper: popperInstance,
3283
- config: getConfig(target, obj.settings)
3363
+ config: getConfig(target, this.settings)
3284
3364
  }; // Add item to collection
3285
3365
 
3286
- obj.collection.push(popover);
3366
+ this.collection.push(popover);
3287
3367
  } // Setup event listeners
3288
3368
 
3289
3369
 
3290
- registerEventListeners(popover, obj); // Set initial state of popover
3370
+ registerEventListeners.call(this, popover); // Set initial state of popover
3291
3371
 
3292
- if (popover.target.classList.contains(obj.settings.stateActive)) {
3293
- show(popover, obj);
3294
- documentClick(popover, obj);
3372
+ if (popover.target.classList.contains(this.settings.stateActive)) {
3373
+ this.open(popover);
3374
+ documentClick.call(this, popover);
3295
3375
  } else {
3296
- hide$2(popover, obj);
3376
+ this.close(popover);
3297
3377
  } // Return the popover object
3298
3378
 
3299
3379
 
3300
3380
  return popover;
3301
3381
  }
3302
- function deregister(popover, obj) {
3382
+ function deregister(popover) {
3303
3383
  // Check if this item has been registered in the collection
3304
- var index = obj.collection.findIndex(function (item) {
3384
+ var index = this.collection.findIndex(function (item) {
3305
3385
  return item.trigger === popover.trigger && item.target === popover.target;
3306
3386
  }); // If the item exists in the collection
3307
3387
 
3308
3388
  if (index >= 0) {
3309
- // Hide the popover
3310
- if (popover.state === 'show') {
3311
- hide$2(popover, obj);
3389
+ // Close the popover
3390
+ if (popover.state === 'opened') {
3391
+ this.close(popover);
3312
3392
  } // Clean up the popper instance
3313
3393
 
3314
3394
 
@@ -3316,28 +3396,28 @@ function deregister(popover, obj) {
3316
3396
 
3317
3397
  deregisterEventListeners(popover); // Remove item from collection
3318
3398
 
3319
- obj.collection.splice(index, 1);
3399
+ this.collection.splice(index, 1);
3320
3400
  } // Return the new collection
3321
3401
 
3322
3402
 
3323
- return obj.collection;
3403
+ return this.collection;
3324
3404
  }
3325
- function registerEventListeners(popover, obj) {
3405
+ function registerEventListeners(popover) {
3326
3406
  // If event listeners aren't already setup
3327
3407
  if (!popover.__eventListeners) {
3328
3408
  // Add event listeners based on event type
3329
- var eventType = getData(popover.target, obj.settings.dataEventType, popover.config['event']);
3409
+ var eventType = getData(popover.target, this.settings.dataEventType, popover.config['event']);
3330
3410
 
3331
3411
  if (eventType === 'hover') {
3332
3412
  // Setup event listeners object for hover
3333
3413
  popover.__eventListeners = [{
3334
3414
  el: ['trigger'],
3335
3415
  type: ['mouseenter', 'focus'],
3336
- listener: show.bind(null, popover, obj)
3416
+ listener: open.bind(this, popover)
3337
3417
  }, {
3338
3418
  el: ['trigger', 'target'],
3339
3419
  type: ['mouseleave', 'focusout'],
3340
- listener: hideCheck.bind(null, popover, obj)
3420
+ listener: closeCheck.bind(this, popover)
3341
3421
  }]; // Loop through listeners and apply to appropriate elements
3342
3422
 
3343
3423
  popover.__eventListeners.forEach(function (evObj) {
@@ -3352,7 +3432,7 @@ function registerEventListeners(popover, obj) {
3352
3432
  popover.__eventListeners = [{
3353
3433
  el: ['trigger'],
3354
3434
  type: ['click'],
3355
- listener: handlerClick.bind(obj, popover)
3435
+ listener: handlerClick.bind(this, popover)
3356
3436
  }]; // Loop through listeners and apply to appropriate elements
3357
3437
 
3358
3438
  popover.__eventListeners.forEach(function (evObj) {
@@ -3387,24 +3467,26 @@ function deregisterEventListeners(popover) {
3387
3467
 
3388
3468
  return popover;
3389
3469
  }
3390
- function registerCollection(obj) {
3470
+ function registerCollection() {
3471
+ var _this = this;
3472
+
3391
3473
  // Get all the triggers
3392
- var triggers = document.querySelectorAll("[data-" + obj.settings.dataTrigger + "]");
3474
+ var triggers = document.querySelectorAll("[data-" + this.settings.dataTrigger + "]");
3393
3475
  triggers.forEach(function (trigger) {
3394
3476
  // Register the popover and save to collection array
3395
- register(trigger, false, obj);
3477
+ _this.register(trigger, false);
3396
3478
  }); // Return the popover collection
3397
3479
 
3398
- return obj.collection;
3480
+ return this.collection;
3399
3481
  }
3400
- function deregisterCollection(obj) {
3482
+ function deregisterCollection() {
3401
3483
  // Loop through all items within the collection and pass them to deregister()
3402
- while (obj.collection.length > 0) {
3403
- deregister(obj.collection[0], obj);
3484
+ while (this.collection.length > 0) {
3485
+ this.deregister(this.collection[0]);
3404
3486
  } // Return the popover collection
3405
3487
 
3406
3488
 
3407
- return obj.collection;
3489
+ return this.collection;
3408
3490
  }
3409
3491
 
3410
3492
  var Popover = /*#__PURE__*/function () {
@@ -3412,6 +3494,9 @@ var Popover = /*#__PURE__*/function () {
3412
3494
  this.defaults = defaults;
3413
3495
  this.settings = _extends({}, this.defaults, options);
3414
3496
  this.collection = [];
3497
+ this.memory = {
3498
+ trigger: null
3499
+ };
3415
3500
  this.__handlerKeydown = handlerKeydown.bind(this);
3416
3501
  if (this.settings.autoInit) this.init();
3417
3502
  }
@@ -3426,8 +3511,7 @@ var Popover = /*#__PURE__*/function () {
3426
3511
  // Update settings with passed options
3427
3512
  if (options) this.settings = _extends({}, this.settings, options); // Build the collections array with popover instances
3428
3513
 
3429
- registerCollection(this); // If eventListeners is enabled
3430
-
3514
+ this.registerCollection(); // If eventListeners is enabled
3431
3515
 
3432
3516
  if (this.settings.eventListeners) {
3433
3517
  // Pass false to initEventListeners() since registerCollection()
@@ -3438,8 +3522,7 @@ var Popover = /*#__PURE__*/function () {
3438
3522
 
3439
3523
  _proto.destroy = function destroy() {
3440
3524
  // Deregister all popovers from collection
3441
- deregisterCollection(this); // If eventListeners is enabled
3442
-
3525
+ this.deregisterCollection(); // If eventListeners is enabled
3443
3526
 
3444
3527
  if (this.settings.eventListeners) {
3445
3528
  // Pass false to destroyEventListeners() since deregisterCollection()
@@ -3462,7 +3545,7 @@ var Popover = /*#__PURE__*/function () {
3462
3545
  if (processCollection) {
3463
3546
  // Loop through collection and setup event listeners
3464
3547
  this.collection.forEach(function (popover) {
3465
- registerEventListeners(popover, _this);
3548
+ registerEventListeners.call(_this, popover);
3466
3549
  });
3467
3550
  } // Add keydown global event listener
3468
3551
 
@@ -3495,35 +3578,35 @@ var Popover = /*#__PURE__*/function () {
3495
3578
  target = false;
3496
3579
  }
3497
3580
 
3498
- return register(trigger, target, this);
3581
+ return register.call(this, trigger, target);
3499
3582
  };
3500
3583
 
3501
3584
  _proto.deregister = function deregister$1(popover) {
3502
- return deregister(popover, this);
3585
+ return deregister.call(this, popover);
3503
3586
  };
3504
3587
 
3505
3588
  _proto.registerCollection = function registerCollection$1() {
3506
- return registerCollection(this);
3589
+ return registerCollection.call(this);
3507
3590
  };
3508
3591
 
3509
3592
  _proto.deregisterCollection = function deregisterCollection$1() {
3510
- return deregisterCollection(this);
3593
+ return deregisterCollection.call(this);
3511
3594
  }
3512
3595
  /**
3513
3596
  * Change state functionality
3514
3597
  */
3515
3598
  ;
3516
3599
 
3517
- _proto.show = function show$1(popover) {
3518
- return show(popover, this);
3600
+ _proto.open = function open$1(popover) {
3601
+ return open.call(this, popover);
3519
3602
  };
3520
3603
 
3521
- _proto.hide = function hide(popover) {
3522
- return hide$2(popover, this);
3604
+ _proto.close = function close$1(popover) {
3605
+ return close.call(this, popover);
3523
3606
  };
3524
3607
 
3525
- _proto.hideAll = function hideAll$1() {
3526
- return hideAll(this);
3608
+ _proto.closeAll = function closeAll$1() {
3609
+ return closeAll.call(this);
3527
3610
  };
3528
3611
 
3529
3612
  return Popover;