@iamproperty/components 7.2.2--beta3 → 7.4.0

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 (247) 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/actionbar.global.css +1 -1
  4. package/assets/css/components/actionbar.global.css.map +1 -1
  5. package/assets/css/components/barchart.component.css +1 -1
  6. package/assets/css/components/barchart.component.css.map +1 -1
  7. package/assets/css/components/bento-grid.global.css.map +1 -1
  8. package/assets/css/components/calendar.component.css +1 -0
  9. package/assets/css/components/calendar.component.css.map +1 -0
  10. package/assets/css/components/calendar.config.css +1 -0
  11. package/assets/css/components/calendar.config.css.map +1 -0
  12. package/assets/css/components/card.component.css +1 -1
  13. package/assets/css/components/card.component.css.map +1 -1
  14. package/assets/css/components/carousel.component.css +1 -1
  15. package/assets/css/components/carousel.component.css.map +1 -1
  16. package/assets/css/components/charts.module.css.map +1 -1
  17. package/assets/css/components/collapsible-side.css +1 -1
  18. package/assets/css/components/collapsible-side.css.map +1 -1
  19. package/assets/css/components/content.component.css +1 -0
  20. package/assets/css/components/content.component.css.map +1 -0
  21. package/assets/css/components/doughnutchart.component.css +1 -1
  22. package/assets/css/components/doughnutchart.component.css.map +1 -1
  23. package/assets/css/components/fileupload.css.map +1 -1
  24. package/assets/css/components/inline-edit.css +1 -1
  25. package/assets/css/components/inline-edit.css.map +1 -1
  26. package/assets/css/components/marketing.component.css +1 -0
  27. package/assets/css/components/marketing.component.css.map +1 -0
  28. package/assets/css/components/menu.component.css +1 -1
  29. package/assets/css/components/menu.component.css.map +1 -1
  30. package/assets/css/components/menu.css +1 -1
  31. package/assets/css/components/menu.css.map +1 -1
  32. package/assets/css/components/milestone.css +1 -0
  33. package/assets/css/components/milestone.css.map +1 -0
  34. package/assets/css/components/multiselect.css +1 -1
  35. package/assets/css/components/multiselect.css.map +1 -1
  36. package/assets/css/components/nav.component.css +1 -1
  37. package/assets/css/components/nav.component.css.map +1 -1
  38. package/assets/css/components/nav.global.css +1 -1
  39. package/assets/css/components/nav.global.css.map +1 -1
  40. package/assets/css/components/pagination.css.map +1 -1
  41. package/assets/css/components/rank.component.css +1 -1
  42. package/assets/css/components/rank.component.css.map +1 -1
  43. package/assets/css/components/rankings.component.css +1 -1
  44. package/assets/css/components/rankings.component.css.map +1 -1
  45. package/assets/css/components/rankings.global.css +1 -1
  46. package/assets/css/components/rankings.global.css.map +1 -1
  47. package/assets/css/components/slider.css.map +1 -1
  48. package/assets/css/components/split-button.component.css +1 -0
  49. package/assets/css/components/split-button.component.css.map +1 -0
  50. package/assets/css/components/table-basic.global.css.map +1 -1
  51. package/assets/css/components/table.global.css.map +1 -1
  52. package/assets/css/core.min.css +1 -1
  53. package/assets/css/core.min.css.map +1 -1
  54. package/assets/css/mobile-core.min.css +1 -1
  55. package/assets/css/mobile-core.min.css.map +1 -1
  56. package/assets/css/mobile.min.css +1 -1
  57. package/assets/css/mobile.min.css.map +1 -1
  58. package/assets/css/style.min.css +1 -1
  59. package/assets/css/style.min.css.map +1 -1
  60. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  61. package/assets/js/components/actionbar/actionbar.component.js +51 -31
  62. package/assets/js/components/actionbar/actionbar.component.min.js +17 -17
  63. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  64. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  65. package/assets/js/components/advanced-select/advanced-select.component.js +63 -0
  66. package/assets/js/components/advanced-select/advanced-select.component.min.js +23 -0
  67. package/assets/js/components/advanced-select/advanced-select.component.min.js.map +1 -0
  68. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  69. package/assets/js/components/barchart/barchart.component.min.js +2 -2
  70. package/assets/js/components/bento-grid/bento-grid.component.min.js +1 -1
  71. package/assets/js/components/calendar/calendar.component.js +1083 -0
  72. package/assets/js/components/calendar/calendar.component.min.js +170 -0
  73. package/assets/js/components/calendar/calendar.component.min.js.map +1 -0
  74. package/assets/js/components/card/card.component.js +20 -8
  75. package/assets/js/components/card/card.component.min.js +10 -10
  76. package/assets/js/components/card/card.component.min.js.map +1 -1
  77. package/assets/js/components/carousel/carousel.component.min.js +2 -2
  78. package/assets/js/components/collapsible-side/collapsible-side.component.js +47 -12
  79. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +6 -5
  80. package/assets/js/components/collapsible-side/collapsible-side.component.min.js.map +1 -1
  81. package/assets/js/components/content/content.component.js +66 -0
  82. package/assets/js/components/content/content.component.min.js +15 -0
  83. package/assets/js/components/content/content.component.min.js.map +1 -0
  84. package/assets/js/components/doughnutchart/doughnutchart.component.min.js +2 -2
  85. package/assets/js/components/fileupload/fileupload.component.min.js +1 -1
  86. package/assets/js/components/filter-card/filter-card.component.min.js +1 -1
  87. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  88. package/assets/js/components/header/header.component.min.js +1 -1
  89. package/assets/js/components/inline-edit/inline-edit.component.min.js +5 -5
  90. package/assets/js/components/marketing/marketing.component.js +1 -1
  91. package/assets/js/components/marketing/marketing.component.min.js +2 -2
  92. package/assets/js/components/marketing/marketing.component.min.js.map +1 -1
  93. package/assets/js/components/menu/menu.component.js +148 -161
  94. package/assets/js/components/menu/menu.component.min.js +4 -69
  95. package/assets/js/components/menu/menu.component.min.js.map +1 -1
  96. package/assets/js/components/milestone/milestone.component.js +38 -0
  97. package/assets/js/components/milestone/milestone.component.min.js +15 -0
  98. package/assets/js/components/milestone/milestone.component.min.js.map +1 -0
  99. package/assets/js/components/milestone-group/milestone-group.component.js +35 -0
  100. package/assets/js/components/milestone-group/milestone-group.component.min.js +13 -0
  101. package/assets/js/components/milestone-group/milestone-group.component.min.js.map +1 -0
  102. package/assets/js/components/multi-step/multi-step.component.min.js +1 -1
  103. package/assets/js/components/multiselect/multiselect.component.js +54 -2
  104. package/assets/js/components/multiselect/multiselect.component.min.js +5 -5
  105. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  106. package/assets/js/components/nav/nav.component.js +19 -0
  107. package/assets/js/components/nav/nav.component.min.js +6 -6
  108. package/assets/js/components/nav/nav.component.min.js.map +1 -1
  109. package/assets/js/components/notification/notification.component.js +17 -11
  110. package/assets/js/components/notification/notification.component.min.js +4 -4
  111. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  112. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  113. package/assets/js/components/rank/rank.component.js +346 -210
  114. package/assets/js/components/rank/rank.component.min.js +346 -211
  115. package/assets/js/components/rank/rank.component.min.js.map +1 -1
  116. package/assets/js/components/rankings/rankings.component.js +17 -8
  117. package/assets/js/components/rankings/rankings.component.min.js +14 -8
  118. package/assets/js/components/rankings/rankings.component.min.js.map +1 -1
  119. package/assets/js/components/record-card/record-card.component.min.js +1 -1
  120. package/assets/js/components/search/search.component.js +5 -3
  121. package/assets/js/components/search/search.component.min.js +6 -6
  122. package/assets/js/components/search/search.component.min.js.map +1 -1
  123. package/assets/js/components/slider/slider.component.min.js +1 -1
  124. package/assets/js/components/split-button/split-button.component.js +60 -0
  125. package/assets/js/components/split-button/split-button.component.min.js +34 -0
  126. package/assets/js/components/split-button/split-button.component.min.js.map +1 -0
  127. package/assets/js/components/table/table.component.js +12 -0
  128. package/assets/js/components/table/table.component.min.js +3 -3
  129. package/assets/js/components/table/table.component.min.js.map +1 -1
  130. package/assets/js/components/table-ajax/table-ajax.component.js +12 -0
  131. package/assets/js/components/table-ajax/table-ajax.component.min.js +3 -3
  132. package/assets/js/components/table-ajax/table-ajax.component.min.js.map +1 -1
  133. package/assets/js/components/table-basic/table-basic.component.min.js +1 -1
  134. package/assets/js/components/table-basic/table-basic.component.min.js.map +1 -1
  135. package/assets/js/components/table-no-submit/table-no-submit.component.js +12 -0
  136. package/assets/js/components/table-no-submit/table-no-submit.component.min.js +3 -3
  137. package/assets/js/components/table-no-submit/table-no-submit.component.min.js.map +1 -1
  138. package/assets/js/components/table-submit/table-submit.component.js +12 -0
  139. package/assets/js/components/table-submit/table-submit.component.min.js +3 -3
  140. package/assets/js/components/table-submit/table-submit.component.min.js.map +1 -1
  141. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  142. package/assets/js/components/video-card/video-card.component.min.js +1 -1
  143. package/assets/js/components/video-card/video-card.component.min.js.map +1 -1
  144. package/assets/js/components.js +58 -0
  145. package/assets/js/modules/advanced-select.js +106 -0
  146. package/assets/js/modules/dialogs.js +53 -51
  147. package/assets/js/modules/dynamicEvents.js +7 -0
  148. package/assets/js/modules/milestone-group.js +30 -0
  149. package/assets/js/modules/milestone.js +89 -0
  150. package/assets/js/modules/table.js +11 -1
  151. package/assets/js/modules/videos.js +1 -1
  152. package/assets/js/scripts.bundle.js +3 -3
  153. package/assets/js/scripts.bundle.js.map +1 -1
  154. package/assets/js/scripts.bundle.min.js +2 -2
  155. package/assets/js/scripts.bundle.min.js.map +1 -1
  156. package/assets/js/scripts.js +4 -0
  157. package/assets/sass/_components.scss +11 -0
  158. package/assets/sass/_functions/utility-mixins.scss +41 -0
  159. package/assets/sass/_functions/variables.scss +11 -8
  160. package/assets/sass/components/actionbar.component.scss +3 -4
  161. package/assets/sass/components/actionbar.global.scss +4 -4
  162. package/assets/sass/components/bento-grid.global.scss +0 -1
  163. package/assets/sass/components/calendar.component.scss +1380 -0
  164. package/assets/sass/components/calendar.config.scss +476 -0
  165. package/assets/sass/components/card.component.scss +4 -34
  166. package/assets/sass/components/carousel.component.scss +5 -0
  167. package/assets/sass/components/charts.module.scss +0 -2
  168. package/assets/sass/components/collapsible-side.scss +91 -95
  169. package/assets/sass/components/content.component.scss +18 -0
  170. package/assets/sass/components/inline-edit.scss +2 -0
  171. package/assets/sass/components/{marketing.scss → marketing.component.scss} +2 -6
  172. package/assets/sass/components/menu.component.scss +118 -31
  173. package/assets/sass/components/menu.scss +68 -7
  174. package/assets/sass/components/milestone.scss +207 -0
  175. package/assets/sass/components/multiselect.scss +3 -0
  176. package/assets/sass/components/nav.component.scss +1 -0
  177. package/assets/sass/components/nav.global.scss +30 -0
  178. package/assets/sass/components/rank.component.scss +197 -33
  179. package/assets/sass/components/rankings.component.scss +39 -35
  180. package/assets/sass/components/rankings.global.scss +66 -10
  181. package/assets/sass/components/split-button.component.scss +77 -0
  182. package/assets/sass/components/table-basic.global.scss +2 -4
  183. package/assets/sass/components/table.global.scss +4 -4
  184. package/assets/sass/elements/badge-tag.scss +5 -1
  185. package/assets/sass/elements/buttons--compact.scss +4 -0
  186. package/assets/sass/elements/buttons--global.scss +1 -1
  187. package/assets/sass/elements/details.scss +0 -1
  188. package/assets/sass/elements/dialog.scss +1 -3
  189. package/assets/sass/elements/forms.scss +148 -22
  190. package/assets/sass/elements/links.scss +132 -4
  191. package/assets/sass/elements/lists.scss +61 -0
  192. package/assets/sass/elements/popover.scss +64 -10
  193. package/assets/sass/elements/toggle-button.scss +7 -8
  194. package/assets/sass/elements/type.scss +7 -10
  195. package/assets/sass/foundations/reboot.scss +3 -3
  196. package/assets/sass/templates/form.scss +0 -2
  197. package/assets/ts/components/actionbar/actionbar.component.ts +49 -23
  198. package/assets/ts/components/advanced-select/advanced-select.component.ts +74 -0
  199. package/assets/ts/components/calendar/calendar.component.ts +1460 -0
  200. package/assets/ts/components/card/card.component.ts +22 -14
  201. package/assets/ts/components/collapsible-side/collapsible-side.component.ts +53 -12
  202. package/assets/ts/components/content/content.component.ts +78 -0
  203. package/assets/ts/components/marketing/marketing.component.ts +1 -1
  204. package/assets/ts/components/menu/menu.component.ts +162 -173
  205. package/assets/ts/components/milestone/milestone.component.ts +45 -0
  206. package/assets/ts/components/milestone-group/milestone-group.component.ts +41 -0
  207. package/assets/ts/components/multiselect/multiselect.component.ts +69 -3
  208. package/assets/ts/components/nav/nav.component.ts +25 -0
  209. package/assets/ts/components/notification/notification.component.ts +34 -11
  210. package/assets/ts/components/rank/rank.component.ts +345 -214
  211. package/assets/ts/components/rankings/rankings.component.ts +28 -15
  212. package/assets/ts/components/search/search.component.ts +6 -4
  213. package/assets/ts/components/split-button/split-button.component.ts +69 -0
  214. package/assets/ts/components/table/table.component.ts +14 -0
  215. package/assets/ts/components/table-ajax/table-ajax.component.ts +14 -0
  216. package/assets/ts/components/table-no-submit/table-no-submit.component.ts +14 -0
  217. package/assets/ts/components/table-submit/table-submit.component.ts +14 -0
  218. package/assets/ts/components/video-card/video-card.component.ts +2 -3
  219. package/assets/ts/components.ts +63 -0
  220. package/assets/ts/modules/advanced-select.ts +125 -0
  221. package/assets/ts/modules/dialogs.ts +64 -61
  222. package/assets/ts/modules/dynamicEvents.ts +12 -1
  223. package/assets/ts/modules/milestone-group.ts +42 -0
  224. package/assets/ts/modules/milestone.ts +122 -0
  225. package/assets/ts/modules/table.ts +15 -1
  226. package/assets/ts/modules/videos.ts +19 -37
  227. package/assets/ts/scripts.ts +5 -3
  228. package/dist/components.es.js +41 -1923
  229. package/dist/components.umd.js +127 -171
  230. package/package.json +1 -1
  231. package/src/components/AdvancedSelect/AdvancedSelect.vue +23 -0
  232. package/src/components/Calendar/Calendar.vue +26 -0
  233. package/src/components/Card/Card.vue +1 -1
  234. package/src/components/CollapsibleSideMenu/CollapsibleSideMenu.vue +7 -13
  235. package/src/components/Content/Content.vue +23 -0
  236. package/src/components/Milestones/Milestone.vue +27 -0
  237. package/src/components/Milestones/MilestoneGroup.vue +27 -0
  238. package/src/components/Rank/Rank.vue +1 -2
  239. package/src/components/Rankings/Rankings.vue +9 -10
  240. package/src/components/SplitButton/README.md +19 -0
  241. package/src/components/SplitButton/SplitButton.vue +26 -0
  242. package/src/index.js +44 -41
  243. package/assets/css/components/marketing.css +0 -1
  244. package/assets/css/components/marketing.css.map +0 -1
  245. package/assets/css/components/nav.old.css +0 -1
  246. package/assets/css/components/nav.old.css.map +0 -1
  247. package/assets/sass/components/nav.old.scss +0 -891
@@ -58,7 +58,7 @@ $darkMode: 'true' !default;
58
58
  position: relative;
59
59
  font-weight: bold;
60
60
 
61
- &:not(.text-decoration-none) {
61
+ &:not(.text-decoration-none) {
62
62
  &:after {
63
63
  position: absolute;
64
64
  content: '';
@@ -160,8 +160,7 @@ $darkMode: 'true' !default;
160
160
  // #endregion
161
161
  }
162
162
 
163
- :is(.youtube-link[data-youtube], .vimeo-link[data-vimeo]){
164
-
163
+ :is(.youtube-link[data-youtube], .vimeo-link[data-vimeo]) {
165
164
  position: relative;
166
165
 
167
166
  &:before {
@@ -206,4 +205,133 @@ $darkMode: 'true' !default;
206
205
  &:is(:active) {
207
206
  --video-btn-colour: color-mix(in oklab, var(--colour-success), #000000 20%) !important;
208
207
  }
209
- }
208
+ }
209
+
210
+ // #region Sidebar link styling including parent group styling
211
+ iam-collapsible-side {
212
+ > * {
213
+ padding-left: rem(24);
214
+
215
+ @include media-breakpoint-up(sm) {
216
+ padding-left: rem(40);
217
+ }
218
+
219
+ @include media-breakpoint-up(md) {
220
+ padding-left: var(--container-padding-x-md);
221
+ }
222
+ }
223
+
224
+ hr {
225
+ border-bottom: 2px solid var(--colour-border) !important;
226
+ margin-right: rem(-40) !important;
227
+ }
228
+ }
229
+
230
+ .vertical-tabs [class*='link'],
231
+ iam-collapsible-side [class*='link'] {
232
+ display: block !important;
233
+ line-height: rem(20) !important;
234
+ padding: rem(16) rem(24) rem(16) rem(24) !important;
235
+ margin: 0 !important;
236
+ flex-shrink: 0;
237
+ font-size: 1rem !important;
238
+ font-weight: normal !important;
239
+ text-decoration: none !important;
240
+ border-bottom: 2px solid var(--colour-border) !important;
241
+ border-right: 2px solid var(--colour-border) !important;
242
+ margin-right: rem(-40) !important;
243
+ z-index: 2;
244
+
245
+ &::after {
246
+ display: none !important;
247
+ }
248
+
249
+ i {
250
+ // icon
251
+ margin-right: rem(8) !important;
252
+ }
253
+
254
+ @include media-breakpoint-up(sm) {
255
+ padding-left: rem(24) !important;
256
+ }
257
+
258
+ @include media-breakpoint-up(md) {
259
+ padding-left: var(--container-padding-x-md) !important;
260
+ }
261
+ }
262
+
263
+ .vertical-tabs a,
264
+ iam-collapsible-side a {
265
+ &:hover,
266
+ &:focus,
267
+ &[aria-expanded] {
268
+ background-color: var(--colour-activeLink) !important;
269
+ }
270
+ }
271
+
272
+ .vertical-tabs [class*='active'],
273
+ iam-collapsible-side [class*='active'] {
274
+ background-color: var(--colour-activeLink) !important;
275
+ border-right-color: var(--colour-activeLinkBorder) !important;
276
+ border-right-width: 3px !important;
277
+ }
278
+
279
+ // Parent links
280
+ .vertical-tabs,
281
+ iam-collapsible-side {
282
+ .parent {
283
+ margin: 0 !important;
284
+ padding: 0 !important;
285
+ list-style: none;
286
+
287
+ li:first-of-type {
288
+ cursor: pointer;
289
+
290
+ a {
291
+ padding-right: rem(40) !important;
292
+
293
+ &::before {
294
+ position: absolute;
295
+ display: block;
296
+ content: '\f055';
297
+ font-family: 'Font Awesome 6 Pro';
298
+ right: 20px;
299
+ font-weight: 300;
300
+ }
301
+ }
302
+ }
303
+
304
+ li:not(:first-of-type) {
305
+ display: none;
306
+
307
+ a {
308
+ background-color: var(--colour-light) !important;
309
+ padding-left: rem(90) !important;
310
+ }
311
+ }
312
+
313
+ &.reveal {
314
+ li:first-of-type {
315
+ a::before {
316
+ content: '\f056';
317
+ font-weight: bold;
318
+ }
319
+ }
320
+
321
+ li:not(:first-of-type) {
322
+ display: block;
323
+ }
324
+ }
325
+ }
326
+
327
+ @include media-breakpoint-up(sm) {
328
+ .parent {
329
+ li:not(:first-of-type) {
330
+ a {
331
+ padding-left: rem(90) !important;
332
+ }
333
+ }
334
+ }
335
+ }
336
+ }
337
+ // #endregion
@@ -231,6 +231,7 @@ $darkMode: 'true' !default;
231
231
  color: var(--colour-heading);
232
232
  position: relative;
233
233
  margin-bottom: rem(6);
234
+ text-align: center;
234
235
 
235
236
  li {
236
237
  position: relative;
@@ -325,5 +326,65 @@ $darkMode: 'true' !default;
325
326
  }
326
327
  }
327
328
  }
329
+
330
+ .list--steps-vertical {
331
+ @extend .list--steps;
332
+
333
+ flex-direction: column;
334
+ align-items: flex-start;
335
+ padding: 0 0 0 rem(32);
336
+ gap: rem(40);
337
+ text-align: left;
338
+
339
+ li {
340
+ padding-top: 0;
341
+ padding-left: rem(32);
342
+ width: 100%;
343
+ text-indent: 0;
344
+ overflow: visible;
345
+ margin-bottom: rem(18);
346
+ margin-top: rem(8);
347
+ display: flex;
348
+ align-items: center;
349
+ min-height: rem(24);
350
+
351
+ &:before {
352
+ top: 50%;
353
+ left: 0;
354
+ margin-left: 0;
355
+ margin-top: rem(-12);
356
+ flex-shrink: 0;
357
+ }
358
+
359
+ &:not(:last-child):after {
360
+ left: rem(11);
361
+ top: rem(36);
362
+ width: 2px;
363
+ height: calc(100% + rem(16));
364
+ }
365
+ }
366
+
367
+ @include container-up(sm) {
368
+ padding-left: rem(40);
369
+
370
+ li {
371
+ padding-left: rem(36);
372
+
373
+ &:not(:last-child):after {
374
+ left: rem(12);
375
+ top: rem(36);
376
+ width: 2px;
377
+ height: calc(100% + rem(16));
378
+ }
379
+ }
380
+ }
381
+
382
+ @include container-up(md) {
383
+ li {
384
+ max-width: none;
385
+ margin-bottom: rem(20);
386
+ }
387
+ }
388
+ }
328
389
  // #endregion
329
390
  }
@@ -60,6 +60,32 @@ $darkMode: 'true' !default;
60
60
  }
61
61
  }
62
62
 
63
+ > [popover] {
64
+ display: var(--menu-display, none);
65
+ position: fixed;
66
+ top: anchor(bottom) !important;
67
+
68
+ left: anchor(left) !important;
69
+
70
+ position-try-fallbacks: flip-block, flip-inline !important;
71
+
72
+ //right: auto;
73
+ margin: 0 0 0 #{rem(4)};
74
+ padding: rem(16);
75
+
76
+ &::backdrop {
77
+ display: none;
78
+ }
79
+ }
80
+
81
+ > [popover]:popover-open {
82
+ display: block !important;
83
+ }
84
+
85
+ &:has([popover]:popover-open) > button {
86
+ background-color: var(--colour);
87
+ }
88
+
63
89
  > :is(dialog[open], dialog:popover-open) {
64
90
  left: 0;
65
91
  margin-top: -1rem;
@@ -79,22 +105,27 @@ $darkMode: 'true' !default;
79
105
 
80
106
  &.dialog--list {
81
107
  width: fit-content !important;
82
-
83
- min-width: rem(140) !important;
84
- max-width: rem(280) !important;
85
- padding: rem(16);
108
+ min-width: rem(160) !important;
109
+ max-width: rem(240) !important;
110
+ padding: var(--menu-padding, 0.5rem);
86
111
  margin: 0;
112
+ background: var(--menu-bg, canvas);
113
+ border: var(--menu-border, 2px solid grey);
114
+ overflow: auto;
115
+ border: none !important;
116
+ border-radius: 0.5rem;
117
+ box-shadow: 0px 2px 9px rgba(0, 0, 0, 0.1);
87
118
 
88
119
  @include media-breakpoint-up(sm, $mobileOnly) {
89
120
  width: max-content !important;
90
121
  }
91
122
 
92
123
  hr {
93
- height: 2px;
94
- background: var(--colour-border);
95
- margin-left: -#{rem(16)};
96
- margin-right: -#{rem(16)};
97
- margin-block: 0.25rem;
124
+ height: 1px !important;
125
+ background-color: var(--menu-hr-border-color, var(--border-color, grey)) !important;
126
+ width: 100%;
127
+ margin: var(--menu-item-margin, 0 0 0.25rem 0) !important;
128
+ padding: 0 !important;
98
129
  }
99
130
 
100
131
  .radio--tick {
@@ -123,10 +154,33 @@ $darkMode: 'true' !default;
123
154
  }
124
155
 
125
156
  .btn-action {
157
+ background: unset;
158
+ border: unset;
159
+ color: var(--colour-primary);
160
+ font-weight: inherit;
161
+ font-family: inherit;
162
+ font-size: 1rem;
163
+ line-height: rem(19);
164
+ display: block;
165
+ margin: var(--menu-item-margin, 0 0 0.25rem 0);
166
+ padding-block: var(--menu-item-padding, 0.5rem);
167
+ width: var(--menu-item-width, 100%);
168
+ max-width: var(--menu-item-width, 100%);
169
+ text-align: var(--menu-item-text-align, left);
170
+
126
171
  &:not(:hover, :focus, :active) {
127
172
  border-color: transparent;
128
173
  }
129
- margin: 0;
174
+
175
+ &:is(:hover, :focus) {
176
+ background: var(--colour-light) !important;
177
+ border-radius: 0.25rem !important;
178
+ }
179
+
180
+ &:is(:active) {
181
+ background: rgba(224, 224, 224, 1) !important;
182
+ border-radius: 0.25rem !important;
183
+ }
130
184
  }
131
185
  }
132
186
 
@@ -5,10 +5,9 @@ $mobileOnly: 'false' !default;
5
5
  $darkMode: 'true' !default;
6
6
 
7
7
  @include layer('elements', $layers) {
8
-
9
- // #region toggle
8
+ // #region toggle
10
9
  .toggle {
11
- --outline-width: 0.25rem!important;
10
+ --outline-width: 0.25rem !important;
12
11
  padding-left: 3.25rem !important;
13
12
  }
14
13
 
@@ -21,14 +20,14 @@ $darkMode: 'true' !default;
21
20
  left: 0.25rem !important;
22
21
  }
23
22
 
24
- label.toggle:has(:is(input[type='checkbox'],input[type="radio"]):not([disabled]):checked):before {
23
+ label.toggle:has(:is(input[type='checkbox'], input[type='radio']):not([disabled]):checked):before {
25
24
  background: var(--colour-primary-theme) !important;
26
25
  }
27
26
 
28
27
  .toggle:after {
29
28
  position: absolute !important;
30
29
  content: '' !important;
31
- display: block!important;
30
+ display: block !important;
32
31
  top: 0.5rem !important;
33
32
  height: 1em !important;
34
33
  width: 1em !important;
@@ -40,7 +39,7 @@ $darkMode: 'true' !default;
40
39
  border-radius: 0.5em;
41
40
  }
42
41
 
43
- label.toggle:has(:is(input[type='checkbox'],input[type='radio']):not([disabled]):not([disabled]):checked):after {
42
+ label.toggle:has(:is(input[type='checkbox'], input[type='radio']):not([disabled]):not([disabled]):checked):after {
44
43
  background: var(--colour-primary-theme) !important;
45
44
  background-color: white !important;
46
45
  -webkit-transform: translateX(1rem) !important;
@@ -50,6 +49,6 @@ $darkMode: 'true' !default;
50
49
  // #endregion
51
50
 
52
51
  label.toggle:has(+ label.toggle) {
53
- margin-bottom: 0!important;
52
+ margin-bottom: 0 !important;
54
53
  }
55
- }
54
+ }
@@ -17,15 +17,14 @@ $darkMode: 'true' !default;
17
17
  // #region headings
18
18
 
19
19
  %heading {
20
-
21
20
  margin-top: 0; // 1
22
21
  margin-bottom: 0;
23
22
  font-family: $headings-font-family;
24
23
  font-style: $headings-font-style;
25
24
  font-weight: bold;
26
25
 
27
- line-height: round(calc(1em * var(--type-scale)),0.25rem);
28
- padding-bottom: round(calc(1em * var(--type-scale)),0.25rem);
26
+ line-height: round(calc(1em * var(--type-scale)), 0.25rem);
27
+ padding-bottom: round(calc(1em * var(--type-scale)), 0.25rem);
29
28
  color: $headings-color;
30
29
  clear: both;
31
30
  display: block;
@@ -40,12 +39,10 @@ $darkMode: 'true' !default;
40
39
  }
41
40
 
42
41
  :is(.h1, h1) {
43
-
44
42
  font-size: map.get($heading-sizes, 'h1_fs');
45
43
  font-weight: 900;
46
44
  }
47
45
 
48
-
49
46
  :is(h2, .h2) {
50
47
  font-size: map.get($heading-sizes, 'h2_fs');
51
48
  font-weight: 900;
@@ -55,16 +52,16 @@ $darkMode: 'true' !default;
55
52
  font-size: map.get($heading-sizes, 'h3_fs');
56
53
  max-width: var(--content-max-width);
57
54
 
58
- line-height: round(calc(1em * var(--type-scale)),0.25rem);
59
- padding-bottom: round(calc(1em * var(--type-scale)),0.25rem);
55
+ line-height: round(calc(1em * var(--type-scale)), 0.25rem);
56
+ padding-bottom: round(calc(1em * var(--type-scale)), 0.25rem);
60
57
  }
61
58
 
62
59
  :is(.h4, h4, .h5, h5, .h6, h6) {
63
60
  font-size: map.get($heading-sizes, 'h4_fs');
64
61
  max-width: var(--content-max-width);
65
-
66
- line-height: round(calc(1em * var(--type-scale)),0.25rem);
67
- padding-bottom: round(calc(1em * var(--type-scale)),0.25rem);
62
+
63
+ line-height: round(calc(1em * var(--type-scale)), 0.25rem);
64
+ padding-bottom: round(calc(1em * var(--type-scale)), 0.25rem);
68
65
  }
69
66
  // #endregion
70
67
 
@@ -126,18 +126,18 @@ $darkMode: 'true' !default;
126
126
  }
127
127
 
128
128
  // #region scrollbars
129
- :is(div, form, fieldset, textarea, details)::-webkit-scrollbar {
129
+ :is(div, form, fieldset, textarea, details, iam-menu)::-webkit-scrollbar {
130
130
  width: 10px;
131
131
  height: 10px;
132
132
  }
133
133
 
134
- :is(div, form, fieldset, textarea, details)::-webkit-scrollbar-track {
134
+ :is(div, form, fieldset, textarea, details, iam-menu)::-webkit-scrollbar-track {
135
135
  background-color: #f1f1f1;
136
136
  border-top: 4px solid var(--colour-canvas-2);
137
137
  border-left: 4px solid var(--colour-canvas-2);
138
138
  }
139
139
 
140
- :is(div, form, fieldset, textarea, details)::-webkit-scrollbar-thumb {
140
+ :is(div, form, fieldset, textarea, details, iam-menu)::-webkit-scrollbar-thumb {
141
141
  background-color: #c1c1c1;
142
142
  width: 6px;
143
143
  border-top: 4px solid var(--colour-canvas-2);
@@ -35,8 +35,6 @@ $darkMode: 'true' !default;
35
35
  line-height: map.get($heading-sizes, 'h3_lh');
36
36
  padding-bottom: map.get($heading-sizes, 'h3_pb');
37
37
  max-width: var(--content-max-width);
38
-
39
-
40
38
  }
41
39
 
42
40
  @include light-mode($darkMode) {
@@ -1,4 +1,4 @@
1
- import extendDialogs from '../../modules/dialogs';
1
+ import { uniqueID } from '../../modules/helpers';
2
2
 
3
3
  // Data layer Web component created
4
4
  declare global {
@@ -58,23 +58,23 @@ class iamActionbar extends HTMLElement {
58
58
  <div class="safe-area">
59
59
  <slot></slot>
60
60
  <div class="body">
61
- <div class="dialog__wrapper dialog__wrapper--right dialog-overflow d-none show">
62
- <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0">More actions</button>
63
- <dialog class="dialog--list" part="overflow">
61
+ <div class="menu__wrapper menu__wrapper --right dialog-overflow d-none show">
62
+ <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0" popovertarget="overflow" style="anchor-name: --anchor-overflow;">More actions</button>
63
+ <iam-menu class="dialog--list" part="overflow" id="overflow" style="position-anchor: --anchor-overflow;" popover>
64
64
  <slot name="overflow"></slot>
65
65
  <slot name="menu"></slot>
66
- </dialog>
66
+ </iam-menu>
67
67
  </div>
68
68
 
69
69
 
70
- <div class="dialog__wrapper dialog__wrapper--right filter-columns">
71
- <button class="btn btn-secondary btn-compact btn-sm mb-0 me-0 fa-regular fa-table-columns" title="Select colums">Filter</button>
72
- <dialog class="dialog--list">
70
+ <div class="menu__wrapper menu__wrapper --right filter-columns">
71
+ <button class="btn btn-secondary btn-compact btn-sm mb-0 me-0 fa-regular fa-table-columns" title="Select colums" popovertarget="filter" style="anchor-name: --anchor-filter;">Filter</button>
72
+ <iam-menu class="dialog--list" id="filter" style="position-anchor: --anchor-filter;" popover>
73
73
  <div class="pb-0 mb-0 checklists">
74
74
 
75
75
  </div>
76
76
  <div class="text-right checklist-btns"><button id="cancelColumns" class="btn btn-action">Cancel</button><button id="saveColumns" class="btn btn-action btn-secondary">Save</button></div>
77
- </dialog>
77
+ </iam-menu>
78
78
  </div>
79
79
 
80
80
  <button class="btn btn-secondary btn-compact btn-sm fa-search" data-search="" part="search-btn">Search</button>
@@ -85,11 +85,11 @@ class iamActionbar extends HTMLElement {
85
85
  <div class="safe-area">
86
86
  <slot name="selected"></slot>
87
87
  <div class="body">
88
- <div class="dialog__wrapper dialog__wrapper--right dialog-overflow d-none show">
89
- <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0">More actions</button>
90
- <dialog class="dialog--list" part="selected-overflow">
88
+ <div class="menu__wrapper menu__wrapper --right dialog-overflow d-none show">
89
+ <button class="btn btn-secondary btn-compact btn-sm fa-ellipsis-vertical m-0" popovertarget="selected-overflow" style="anchor-name: --anchor-selected-overflow;">More actions</button>
90
+ <iam-menu class="dialog--list" part="selected-overflow" id="selected-overflow" style="position-anchor: --anchor-selected-overflow;" popover>
91
91
  <slot name="selected-overflow"></slot>
92
- </dialog>
92
+ </iam-menu>
93
93
  </div>
94
94
  </div>
95
95
  </div>
@@ -121,6 +121,37 @@ class iamActionbar extends HTMLElement {
121
121
  const actionbarWrapper = this.shadowRoot?.querySelector('.actionbar__wrapper');
122
122
  const checklistHolder = this.shadowRoot?.querySelector('.checklists');
123
123
 
124
+ const assetLocation = document.body.hasAttribute('data-assets-location')
125
+ ? document.body.getAttribute('data-assets-location')
126
+ : '/assets';
127
+
128
+ if (!window.customElements.get(`iam-menu`)) {
129
+ import(/* @vite-ignore */ `${assetLocation}/js/components/menu/menu.component.js`)
130
+ .then((module) => {
131
+ window.customElements.define(`iam-menu`, module.default);
132
+ })
133
+ .catch((err) => {
134
+ console.log(err.message);
135
+ });
136
+ }
137
+
138
+ const dialog = this.querySelector('.dialog__wrapper dialog');
139
+
140
+ // Transform dialog into a menu custom element
141
+ if (dialog) {
142
+ const btn = dialog.parentElement.querySelector('.btn');
143
+ const id = `menu${uniqueID(1)}`;
144
+
145
+ dialog.setAttribute('id', id);
146
+ dialog.setAttribute('popover', 'auto');
147
+ btn.setAttribute('popovertarget', id);
148
+
149
+ dialog.outerHTML = dialog.outerHTML.replace(/<dialog/g, '<iam-menu').replace(/<\/dialog>/g, '</iam-menu>');
150
+
151
+ dialog.parentElement?.classList.add('menu__wrapper');
152
+ dialog.parentElement?.classList.remove('dialog__wrapper');
153
+ }
154
+
124
155
  // #region select all
125
156
  if (this.hasAttribute('data-selectall')) {
126
157
  actionbarWrapper?.insertAdjacentHTML(
@@ -248,11 +279,6 @@ class iamActionbar extends HTMLElement {
248
279
  });
249
280
  // #endregion
250
281
 
251
- // Make sure dialogs created in the shadow dom work
252
- Array.from(this.shadowRoot.querySelectorAll('.body')).forEach((element) => {
253
- extendDialogs(element);
254
- });
255
-
256
282
  // #region Reponsive safe area
257
283
  const hideButtons = (): void => {
258
284
  const wrapperWidth = actionbarWrapper.scrollWidth;
@@ -294,7 +320,7 @@ class iamActionbar extends HTMLElement {
294
320
  if (wrapperWidth < 576) {
295
321
  Array.from(
296
322
  this.querySelectorAll(
297
- ':scope > .btn:not(.js-updated), :scope > .dialog__wrapper > .btn[class*="fa-"]:first-child:not(.js-updated)'
323
+ ':scope > .btn:not(.js-updated), :scope > .menu__wrapper > .btn[class*="fa-"]:first-child:not(.js-updated)'
298
324
  )
299
325
  ).forEach((element: HTMLElement) => {
300
326
  element.className = element.className.replace(' btn-compact', ' _btn-compact');
@@ -303,7 +329,7 @@ class iamActionbar extends HTMLElement {
303
329
  });
304
330
  } else {
305
331
  Array.from(
306
- this.querySelectorAll(':scope > .btn.js-updated, :scope > .dialog__wrapper > .btn.js-updated:first-child')
332
+ this.querySelectorAll(':scope > .btn.js-updated, :scope > .menu__wrapper > .btn.js-updated:first-child')
307
333
  ).forEach((element: HTMLElement) => {
308
334
  element.classList.remove('btn-compact');
309
335
  element.classList.remove('js-updated');
@@ -342,7 +368,7 @@ class iamActionbar extends HTMLElement {
342
368
 
343
369
  // Foreach element this isn't an action button or dialog wrapper add to the width, these will not be moved into the overflow slot
344
370
  for (let i = 0; i < elements.length; i++) {
345
- if (!elements[i].classList.contains('btn-action') && !elements[i].classList.contains('dialog__wrapper')) {
371
+ if (!elements[i].classList.contains('btn-action') && !elements[i].classList.contains('menu__wrapper ')) {
346
372
  tempWidth += elements[i].offsetWidth;
347
373
  tempWidth += elementMargin;
348
374
  }
@@ -350,7 +376,7 @@ class iamActionbar extends HTMLElement {
350
376
 
351
377
  // Foreach dialog wrapper decide if safe in safe area or move into the overflow slot, dialog wrappers have priority over the action buttons
352
378
  for (let i = 0; i < elements.length; i++) {
353
- if (elements[i].classList.contains('dialog__wrapper')) {
379
+ if (elements[i].classList.contains('menu__wrapper ')) {
354
380
  elements[i].classList.add('show');
355
381
  tempWidth += elements[i].offsetWidth;
356
382
  tempWidth += elementMargin / 2;
@@ -384,7 +410,7 @@ class iamActionbar extends HTMLElement {
384
410
 
385
411
  // Decide which elements go into the overflow slot
386
412
  for (let i = 0; i < elements.length; i++) {
387
- if (elements[i].classList.contains('btn-action') || elements[i].classList.contains('dialog__wrapper')) {
413
+ if (elements[i].classList.contains('btn-action') || elements[i].classList.contains('menu__wrapper ')) {
388
414
  if (!elements[i].classList.contains('show')) {
389
415
  // Move to the slot by changing the attribute
390
416
  elements[i].setAttribute('slot', overflowSlot);
@@ -0,0 +1,74 @@
1
+ import advancedSelect from '../../modules/advanced-select';
2
+ import { safeID, resolvePath, isTraversable } from '../../modules/helpers';
3
+
4
+ // Data layer Web component created
5
+ window.dataLayer = window.dataLayer || [];
6
+ window.dataLayer.push({
7
+ event: 'customElementRegistered',
8
+ element: 'Advanced select',
9
+ });
10
+
11
+ class iamAdvancedSelect extends HTMLElement {
12
+ constructor() {
13
+ super();
14
+ this.attachShadow({ mode: 'open' });
15
+
16
+ const assetLocation = document.body.hasAttribute('data-assets-location')
17
+ ? document.body.getAttribute('data-assets-location')
18
+ : '/assets';
19
+ const coreCSS = document.body.hasAttribute('data-core-css')
20
+ ? document.body.getAttribute('data-core-css')
21
+ : `${assetLocation}/css/core.min.css`;
22
+
23
+ const template = document.createElement('template');
24
+ template.innerHTML = `
25
+ <style>
26
+ @import "${coreCSS}";
27
+ input {
28
+ background: red;
29
+ }
30
+ input:not(.is-invalid):not(:invalid) {
31
+ background: none!important;
32
+ }
33
+ .optional-text {
34
+ display: none;
35
+ }
36
+ .js-hide {
37
+ display: none !important;
38
+ }
39
+ </style>
40
+ <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous" />
41
+ <slot></slot>
42
+ `;
43
+ this.shadowRoot.appendChild(template.content.cloneNode(true));
44
+ }
45
+
46
+ connectedCallback(): void {
47
+ // Clone original input field, re-name and use for display purposes
48
+ const inputField = this.querySelector('input');
49
+ const displayInputField = inputField.cloneNode();
50
+ displayInputField.setAttribute('name', `${inputField.getAttribute('name')}Alt`);
51
+ inputField.removeAttribute('data-change-events');
52
+ displayInputField.removeAttribute('id');
53
+ let datalist = this.querySelector('datalist');
54
+
55
+ inputField.after(displayInputField);
56
+
57
+ // Hide original input field
58
+ inputField.setAttribute('type', 'hidden');
59
+
60
+ // if data list does not exist then create one and append
61
+ if (!datalist) {
62
+ datalist = document.createElement('datalist');
63
+ const listID = safeID('list');
64
+ datalist.setAttribute('id', listID);
65
+ searchWrapper.appendChild(datalist);
66
+
67
+ displayInputField.setAttribute('list', listID);
68
+ }
69
+
70
+ advancedSelect(this, displayInputField, datalist);
71
+ }
72
+ }
73
+
74
+ export default iamAdvancedSelect;