@iamproperty/components 7.8.2--beta4 → 7.8.2--beta6

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.
Files changed (141) hide show
  1. package/assets/css/components/actionbar.component.css +1 -1
  2. package/assets/css/components/actionbar.component.css.map +1 -1
  3. package/assets/css/components/calendar.component.css +1 -1
  4. package/assets/css/components/calendar.component.css.map +1 -1
  5. package/assets/css/components/card.component.css +1 -1
  6. package/assets/css/components/card.component.css.map +1 -1
  7. package/assets/css/components/carousel.config.css +1 -1
  8. package/assets/css/components/carousel.config.css.map +1 -1
  9. package/assets/css/components/modal.component.css +1 -1
  10. package/assets/css/components/modal.component.css.map +1 -1
  11. package/assets/css/components/multi-step-modal.component.css +1 -1
  12. package/assets/css/components/multi-step-modal.component.css.map +1 -1
  13. package/assets/css/components/nav.component.css +1 -1
  14. package/assets/css/components/nav.component.css.map +1 -1
  15. package/assets/css/components/nav.global.css +1 -1
  16. package/assets/css/components/nav.global.css.map +1 -1
  17. package/assets/css/components/notification.global.css +1 -1
  18. package/assets/css/components/notification.global.css.map +1 -1
  19. package/assets/css/components/std-nav-standalone.component.css +1 -1
  20. package/assets/css/components/std-nav-standalone.component.css.map +1 -1
  21. package/assets/css/components/video-card.component.css +1 -1
  22. package/assets/css/components/video-card.component.css.map +1 -1
  23. package/assets/css/components/video-modal.component.css +1 -1
  24. package/assets/css/components/video-modal.component.css.map +1 -1
  25. package/assets/css/core.min.css +1 -1
  26. package/assets/css/core.min.css.map +1 -1
  27. package/assets/css/elements/dialog.css +1 -1
  28. package/assets/css/elements/dialog.css.map +1 -1
  29. package/assets/css/style.min.css +1 -1
  30. package/assets/css/style.min.css.map +1 -1
  31. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  32. package/assets/js/components/actionbar/actionbar.component.min.js +3 -3
  33. package/assets/js/components/address-lookup/address-lookup.component.min.js +2 -2
  34. package/assets/js/components/address-lookup/address-lookup.component.min.js.map +1 -1
  35. package/assets/js/components/advanced-select/advanced-select.component.min.js +1 -1
  36. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  37. package/assets/js/components/banner/banner.component.min.js +1 -1
  38. package/assets/js/components/barchart/barchart.component.min.js +1 -1
  39. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  40. package/assets/js/components/bone/bone.component.min.js +1 -1
  41. package/assets/js/components/button/button.component.min.js +1 -1
  42. package/assets/js/components/calendar/calendar.component.min.js +2 -2
  43. package/assets/js/components/card/card.component.min.js +6 -6
  44. package/assets/js/components/card/card.component.min.js.map +1 -1
  45. package/assets/js/components/carousel/carousel.component.min.js +1 -1
  46. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  47. package/assets/js/components/config/config.component.min.js +2 -2
  48. package/assets/js/components/config/config.component.min.js.map +1 -1
  49. package/assets/js/components/content/content.component.min.js +1 -1
  50. package/assets/js/components/darkmode/darkmode.component.min.js +1 -1
  51. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +1 -1
  52. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  53. package/assets/js/components/filter-card/filter-card.component.min.js +2 -2
  54. package/assets/js/components/filter-card/filter-card.component.min.js.map +1 -1
  55. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  56. package/assets/js/components/form/form.component.js +42 -151
  57. package/assets/js/components/form/form.component.min.js +3 -3
  58. package/assets/js/components/form/form.component.min.js.map +1 -1
  59. package/assets/js/components/header/header.component.min.js +1 -1
  60. package/assets/js/components/inline-edit/inline-edit.component.min.js +2 -2
  61. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  62. package/assets/js/components/input/input.component.min.js +1 -1
  63. package/assets/js/components/input-range/input-range.component.min.js +1 -1
  64. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  65. package/assets/js/components/menu/menu.component.min.js +1 -1
  66. package/assets/js/components/milestone/milestone.component.min.js +1 -1
  67. package/assets/js/components/milestone-group/milestone-group.component.min.js +1 -1
  68. package/assets/js/components/modal/modal.component.js +16 -11
  69. package/assets/js/components/modal/modal.component.min.js +7 -7
  70. package/assets/js/components/modal/modal.component.min.js.map +1 -1
  71. package/assets/js/components/multi-step/multi-step.component.min.js +2 -2
  72. package/assets/js/components/multi-step/multi-step.component.min.js.map +1 -1
  73. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js +4 -4
  74. package/assets/js/components/multi-step-modal/multi-step-modal.component.min.js.map +1 -1
  75. package/assets/js/components/multiselect/multiselect.component.min.js +2 -2
  76. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  77. package/assets/js/components/nav/nav.component.js +88 -79
  78. package/assets/js/components/nav/nav.component.min.js +8 -8
  79. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  80. package/assets/js/components/notification/notification.component.min.js +2 -2
  81. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  82. package/assets/js/components/password/password.component.min.js +1 -1
  83. package/assets/js/components/popover/popover.component.min.js +1 -1
  84. package/assets/js/components/rank/rank.component.min.js +1 -1
  85. package/assets/js/components/rankings/rankings.component.min.js +1 -1
  86. package/assets/js/components/rating/rating.component.min.js +1 -1
  87. package/assets/js/components/record-card/record-card.component.min.js +2 -2
  88. package/assets/js/components/record-card/record-card.component.min.js.map +1 -1
  89. package/assets/js/components/search/search.component.js +2 -1
  90. package/assets/js/components/search/search.component.min.js +3 -3
  91. package/assets/js/components/search/search.component.min.js.map +1 -1
  92. package/assets/js/components/skeleton/skeleton.component.min.js +1 -1
  93. package/assets/js/components/slider/slider.component.min.js +1 -1
  94. package/assets/js/components/split-button/split-button.component.min.js +1 -1
  95. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js +3 -3
  96. package/assets/js/components/std-address-lookup/std-address-lookup.component.min.js.map +1 -1
  97. package/assets/js/components/std-nav/std-nav.component.js +2 -0
  98. package/assets/js/components/std-nav/std-nav.component.min.js +12 -12
  99. package/assets/js/components/std-nav/std-nav.component.min.js.map +1 -1
  100. package/assets/js/components/std-nav-standalone/std-nav-standalone.component.min.js +2 -2
  101. package/assets/js/components/table/table.component.min.js +1 -1
  102. package/assets/js/components/table-ajax/table-ajax.component.min.js +1 -1
  103. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  104. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +1 -1
  105. package/assets/js/components/table-submit/table-submit.component.min.js +1 -1
  106. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  107. package/assets/js/components/tag/tag.component.min.js +2 -2
  108. package/assets/js/components/tag/tag.component.min.js.map +1 -1
  109. package/assets/js/components/tooltip/tooltip.component.min.js +1 -1
  110. package/assets/js/components/video/video.component.min.js +1 -1
  111. package/assets/js/components/video-card/video-card.component.min.js +6 -6
  112. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  113. package/assets/js/components/video-modal/video-modal.component.min.js +5 -5
  114. package/assets/js/components/word-count/word-count.component.min.js +1 -1
  115. package/assets/js/modules/card.module.js +1 -1
  116. package/assets/js/modules/form.js +129 -0
  117. package/assets/js/modules/form.test.js +132 -0
  118. package/assets/js/modules/test-dom.js +5 -0
  119. package/assets/js/scripts.bundle.js +1 -1
  120. package/assets/js/scripts.bundle.min.js +1 -1
  121. package/assets/sass/_utilities.scss +1 -0
  122. package/assets/sass/components/carousel.config.scss +5 -0
  123. package/assets/sass/components/modal.component.scss +5 -1
  124. package/assets/sass/components/nav.global.scss +0 -10
  125. package/assets/sass/components/notification.global.scss +8 -0
  126. package/assets/sass/elements/dialog.scss +43 -0
  127. package/assets/sass/foundations/colours.scss +15 -24
  128. package/assets/sass/foundations/reboot.scss +4 -0
  129. package/assets/sass/utilities/wordpress.css +7 -0
  130. package/assets/ts/components/form/form.component.ts +54 -213
  131. package/assets/ts/components/modal/modal.component.ts +27 -19
  132. package/assets/ts/components/nav/nav.component.ts +107 -95
  133. package/assets/ts/components/search/search.component.ts +5 -1
  134. package/assets/ts/components/std-nav/std-nav.component.ts +3 -1
  135. package/assets/ts/modules/card.module.ts +1 -1
  136. package/assets/ts/modules/form.test.ts +183 -0
  137. package/assets/ts/modules/form.ts +210 -0
  138. package/assets/ts/modules/test-dom.ts +5 -0
  139. package/dist/components.es.js +2662 -1246
  140. package/dist/components.umd.js +372 -372
  141. package/package.json +5 -5
@@ -29,7 +29,7 @@ class iamNav extends HTMLElement {
29
29
 
30
30
  <div class="menu__outer">
31
31
  <div class="menu closed">
32
-
32
+
33
33
  <div class="menu__primary">
34
34
  <slot></slot>
35
35
  <slot name="dual"></slot>
@@ -43,7 +43,7 @@ class iamNav extends HTMLElement {
43
43
  </div>
44
44
  </div>
45
45
  <slot name="menus"></slot>
46
- </div>
46
+ </div>
47
47
  </div>
48
48
  <div class="backdrop" part="backdrop"></div>
49
49
  `;
@@ -65,90 +65,99 @@ class iamNav extends HTMLElement {
65
65
  const backdrop = this.shadowRoot.querySelector('.backdrop');
66
66
  const buttonsHolder = this.shadowRoot.querySelector('.buttons-holder');
67
67
  // Check the content
68
- this.querySelectorAll(':scope > *').forEach(function (element) {
69
- const tagname = element.tagName;
70
- switch (tagname) {
71
- case 'BUTTON':
72
- if (!element.hasAttribute('slot')) {
73
- element.setAttribute('slot', 'actions');
74
- menu.classList.add('has-actions');
75
- }
76
- break;
77
- }
78
- // Create menu button
79
- if (element.classList.contains('nav--menu') &&
80
- element.hasAttribute('data-title') &&
81
- element.hasAttribute('data-icon')) {
82
- const title = element.getAttribute('data-title');
83
- const iconClass = element.getAttribute('data-icon');
84
- // Create the menu button that sits seperately to the menu
85
- const button = document.createElement('button');
86
- button.setAttribute('slot', title);
87
- button.classList.add('btn-menu');
88
- button.setAttribute('part', 'btn-menu');
89
- button.innerHTML = `<span class="btn btn-primary"><span>${title}</span><i class="${iconClass}"></i><i class="fa-regular fa-xmark-large"></i></span>`;
90
- buttonsHolder.insertAdjacentElement('beforeend', button);
91
- const mdButton = button.querySelector('.btn-primary');
92
- // Make sure the menu is added to the right part of the component
93
- element.setAttribute('slot', 'menus');
94
- // If open we need to make sure the main mobile menu is closed, the new button has the right state and the backdrop is shown
95
- if (element.classList.contains('open')) {
96
- button.setAttribute('aria-expanded', true);
97
- mdButton.classList.toggle('active');
98
- iamNav.classList.add('open');
99
- backdrop.classList.add('show');
100
- }
101
- else {
102
- element.classList.add('closed'); // closed class is added to prevent the elements being tabbed into, this causes visual issues
68
+ const createNavMenu = (component) => {
69
+ buttonsHolder.innerHTML = '';
70
+ component.querySelectorAll(':scope > *').forEach(function (element) {
71
+ const tagname = element.tagName;
72
+ switch (tagname) {
73
+ case 'BUTTON':
74
+ if (!element.hasAttribute('slot')) {
75
+ element.setAttribute('slot', 'actions');
76
+ menu.classList.add('has-actions');
77
+ }
78
+ break;
103
79
  }
104
- // Click event
105
- button.addEventListener('click', function (e) {
106
- e.preventDefault();
107
- button.toggleAttribute('aria-expanded');
108
- element.classList.toggle('open');
109
- mdButton.classList.toggle('active');
110
- // Close desktop menus
111
- const openMenu = iamNav.querySelector(':scope > details[open]');
112
- if (openMenu)
113
- openMenu.removeAttribute('open');
114
- // Close the main menu and fix states on the button, iamNav component and backdrop
80
+ // Create menu button
81
+ if (element.classList.contains('nav--menu') &&
82
+ element.hasAttribute('data-title') &&
83
+ element.hasAttribute('data-icon')) {
84
+ const title = element.getAttribute('data-title');
85
+ const iconClass = element.getAttribute('data-icon');
86
+ // Create the menu button that sits seperately to the menu
87
+ const button = document.createElement('button');
88
+ button.setAttribute('slot', title);
89
+ button.classList.add('btn-menu');
90
+ button.setAttribute('part', 'btn-menu');
91
+ button.innerHTML = `<span class="btn btn-primary"><span>${title}</span><i class="${iconClass}"></i><i class="fa-regular fa-xmark-large"></i></span>`;
92
+ buttonsHolder.insertAdjacentElement('beforeend', button);
93
+ const mdButton = button.querySelector('.btn-primary');
94
+ // Make sure the menu is added to the right part of the component
95
+ element.setAttribute('slot', 'menus');
96
+ // If open we need to make sure the main mobile menu is closed, the new button has the right state and the backdrop is shown
115
97
  if (element.classList.contains('open')) {
116
- menu.classList.remove('open');
117
- menuButton.removeAttribute('aria-expanded');
118
- setTimeout(function () {
119
- menu.classList.add('closed');
120
- }, 1000); // Delay until its close so the animation is broken
121
- iamNav.classList.add('open');
98
+ button.setAttribute('aria-expanded', true);
99
+ mdButton.classList.toggle('active');
100
+ component.classList.add('open');
122
101
  backdrop.classList.add('show');
123
- element.classList.remove('closed');
124
102
  }
125
103
  else {
126
- iamNav.classList.remove('open');
127
- backdrop.classList.remove('show');
128
- setTimeout(function () {
129
- element.classList.add('closed');
130
- }, 1000);
104
+ element.classList.add('closed'); // closed class is added to prevent the elements being tabbed into, this causes visual issues
131
105
  }
132
- // Close any open menus
133
- iamNav.querySelectorAll('.nav--menu.open').forEach(function (openmenu) {
134
- if (openmenu != element) {
135
- openmenu.classList.remove('open');
106
+ // Click event
107
+ button.addEventListener('click', function (e) {
108
+ e.preventDefault();
109
+ button.toggleAttribute('aria-expanded');
110
+ console.log(element);
111
+ element.classList.toggle('open');
112
+ mdButton.classList.toggle('active');
113
+ // Close desktop menus
114
+ const openMenu = component.querySelector(':scope > details[open]');
115
+ if (openMenu)
116
+ openMenu.removeAttribute('open');
117
+ // Close the main menu and fix states on the button, iamNav component and backdrop
118
+ if (element.classList.contains('open')) {
119
+ menu.classList.remove('open');
120
+ menuButton.removeAttribute('aria-expanded');
121
+ setTimeout(function () {
122
+ menu.classList.add('closed');
123
+ }, 1000); // Delay until its close so the animation is broken
124
+ component.classList.add('open');
125
+ backdrop.classList.add('show');
126
+ element.classList.remove('closed');
136
127
  }
137
- });
138
- iamNav.shadowRoot
139
- .querySelectorAll('.buttons-holder .btn-menu[aria-expanded]')
140
- .forEach(function (selectedButton) {
141
- if (selectedButton != button) {
142
- selectedButton.removeAttribute('aria-expanded');
143
- const innerBtn = selectedButton.querySelector('.btn-primary');
144
- innerBtn.classList.remove('active');
128
+ else {
129
+ component.classList.remove('open');
130
+ backdrop.classList.remove('show');
131
+ setTimeout(function () {
132
+ element.classList.add('closed');
133
+ }, 1000);
145
134
  }
146
- });
147
- }, false);
148
- }
149
- });
150
- this.querySelectorAll('details').forEach(function (element) {
151
- element.classList.add('details--revert');
135
+ // Close any open menus
136
+ component.querySelectorAll('.nav--menu.open').forEach(function (openmenu) {
137
+ if (openmenu != element) {
138
+ openmenu.classList.remove('open');
139
+ }
140
+ });
141
+ component.shadowRoot
142
+ .querySelectorAll('.buttons-holder .btn-menu[aria-expanded]')
143
+ .forEach(function (selectedButton) {
144
+ if (selectedButton != button) {
145
+ selectedButton.removeAttribute('aria-expanded');
146
+ const innerBtn = selectedButton.querySelector('.btn-primary');
147
+ innerBtn.classList.remove('active');
148
+ }
149
+ });
150
+ }, false);
151
+ }
152
+ });
153
+ component.querySelectorAll('details').forEach(function (element) {
154
+ element.classList.add('details--revert');
155
+ });
156
+ };
157
+ createNavMenu(this);
158
+ this.addEventListener('rebuilt', () => {
159
+ console.log('rebuilt nav');
160
+ createNavMenu(this);
152
161
  });
153
162
  // Has secondary link
154
163
  if (this.querySelector('[slot="secondary"]')) {
@@ -157,7 +166,7 @@ class iamNav extends HTMLElement {
157
166
  // Open and close the menu
158
167
  menuButton.addEventListener('click', function (e) {
159
168
  e.preventDefault();
160
- menuButton.toggleAttribute('aria-expanded');
169
+ //menuButton.toggleAttribute('aria-expanded');
161
170
  menu.classList.toggle('open');
162
171
  // Close any other menus
163
172
  iamNav.querySelectorAll('.nav--menu.open').forEach(function (element) {