@iamproperty/components 3.7.5 → 3.7.7

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 (36) hide show
  1. package/assets/css/components/card-global.css +1 -0
  2. package/assets/css/components/card-global.css.map +1 -0
  3. package/assets/css/components/table.css +1 -1
  4. package/assets/css/components/table.css.map +1 -1
  5. package/assets/css/core.min.css +1 -1
  6. package/assets/css/core.min.css.map +1 -1
  7. package/assets/css/style.min.css +1 -1
  8. package/assets/css/style.min.css.map +1 -1
  9. package/assets/js/components/accordion/accordion.component.min.js +1 -1
  10. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  11. package/assets/js/components/card/card.component.min.js +1 -1
  12. package/assets/js/components/filterlist/filterlist.component.min.js +1 -1
  13. package/assets/js/components/header/header.component.min.js +1 -1
  14. package/assets/js/components/notification/notification.component.min.js +1 -1
  15. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  16. package/assets/js/components/table/table.component.js +12 -9
  17. package/assets/js/components/table/table.component.min.js +13 -14
  18. package/assets/js/components/table/table.component.min.js.map +1 -1
  19. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  20. package/assets/js/dynamic.min.js +1 -1
  21. package/assets/js/modules/table.js +13 -8
  22. package/assets/js/scripts.bundle.js +25 -26
  23. package/assets/js/scripts.bundle.js.map +1 -1
  24. package/assets/js/scripts.bundle.min.js +2 -2
  25. package/assets/js/scripts.bundle.min.js.map +1 -1
  26. package/assets/sass/_corefiles.scss +2 -0
  27. package/assets/sass/components/card-global.scss +20 -0
  28. package/assets/sass/components/table.scss +13 -3
  29. package/assets/ts/components/card/README.md +1 -0
  30. package/assets/ts/components/table/table.component.ts +17 -12
  31. package/assets/ts/modules/table.ts +15 -10
  32. package/dist/components.es.js +852 -843
  33. package/dist/components.umd.js +29 -33
  34. package/package.json +1 -1
  35. package/src/components/Card/README.md +1 -0
  36. package/src/components/Table/Table.vue +1 -1
@@ -23,6 +23,8 @@
23
23
  @use "components/pagination.scss";
24
24
  @use "components/accordion.scss";
25
25
 
26
+ @use "components/card-global.scss";
27
+
26
28
  // Bootstrap elements
27
29
  @import "../bootstrap/scss/_transitions.scss";
28
30
  @import "../bootstrap/scss/_badge.scss";
@@ -0,0 +1,20 @@
1
+ // #region card with a flag
2
+ iam-card.card--flag {
3
+ position: relative;
4
+
5
+ &:after {
6
+ content: "\f024";
7
+ font-family: "Font Awesome 6 Pro";
8
+ position: absolute;
9
+ top: 1rem;
10
+ right: 1rem;
11
+ font-size: rem(16);
12
+ line-height: 1;
13
+ height: rem(16);
14
+ width: rem(16);
15
+ display: inline-block;
16
+ font-weight: normal;
17
+ color: var(--colour, var(--colour-primary));
18
+ }
19
+ }
20
+ // #endregion
@@ -508,14 +508,17 @@ table {
508
508
  [data-content="medium"],
509
509
  [data-content="high"],
510
510
  [data-content="unknown"],
511
+ [data-content="due"],
511
512
  [data-content="overdue"],
512
513
  [data-content="incomplete"],
513
514
  [data-content="requires approval"],
515
+ [data-content="upcoming"],
514
516
  [data-content="approval required"],
515
517
  [data-content="warning"],
516
518
  [data-content="verified"],
517
519
  [data-content="not started"],
518
520
  [data-content="to do"],
521
+ [data-content="on track"],
519
522
  [data-content="completed"],
520
523
  [data-content="complete"],
521
524
  .alert-status:not([data-content="0"]):not([data-content=""]):not(:empty)
@@ -569,27 +572,34 @@ table {
569
572
  color: var(--colour-muted);
570
573
  }
571
574
 
572
- :is([data-content="overdue"],[data-content="incomplete"]):after {
575
+ :is([data-content="overdue"],[data-content="due"],[data-content="incomplete"]):after {
573
576
 
574
577
  content: "\f024";
575
578
  font-weight: light;
576
579
  color: var(--colour-danger);
577
580
  }
578
581
 
579
- :is([data-content="not started"],[data-content="to do"]):after {
582
+ :is([data-content="not started"],[data-content="to do"],[data-content="on track"]):after {
580
583
 
581
584
  content: "\f024";
582
585
  font-weight: light;
583
586
  color: var(--colour-muted);
584
587
  }
585
588
 
586
- :is([data-content="requires approval"],[data-content="approval required"],[data-content="warning"]):after {
589
+ :is([data-content="requires approval"],[data-content="approval required"],[data-content="upcoming"]):after {
587
590
 
588
591
  content: "\f024";
589
592
  font-weight: light;
590
593
  color: var(--colour-warning);
591
594
  }
592
595
 
596
+ :is([data-content="warning"]):after {
597
+
598
+ content: "\f071";
599
+ font-weight: light;
600
+ color: var(--colour-warning);
601
+ }
602
+
593
603
  :is([data-content="verified"],[data-content="completed"],[data-content="complete"]):after {
594
604
 
595
605
  content: "\f00c";
@@ -21,3 +21,4 @@ The card component needs to be wrapped with a link or a button, this is required
21
21
  - Adding a class of **.colour-danger** will add a left hand border with the danger colour (See status card). This works with all of the theme
22
22
  - Adding a class of **.border-o** will remove the box-shadow of the card and make some minor sizing adjustments.
23
23
  - Adding a class like **.colour-warning** will update the colour of the left berder for the card. The theme colours will be avialable to use.
24
+ - Adding a class of **.card--flag** will add a card to the top right corner.
@@ -10,14 +10,6 @@ class iamTable extends HTMLElement {
10
10
  const assetLocation = document.body.hasAttribute('data-assets-location') ? document.body.getAttribute('data-assets-location') : '/assets';
11
11
  const coreCSS = document.body.hasAttribute('data-core-css') ? document.body.getAttribute('data-core-css') : `${assetLocation}/css/core.min.css`;
12
12
 
13
- const isCTA = this.classList.contains('table--cta');
14
- const isExportable = this.classList.contains('table--export');
15
-
16
- let classList = this.classList.toString();
17
-
18
- classList = classList.replace('table--cta','');
19
- classList = classList.replace('table--loading','');
20
-
21
13
  const template = document.createElement('template');
22
14
  template.innerHTML = `
23
15
  <style>
@@ -35,12 +27,11 @@ class iamTable extends HTMLElement {
35
27
 
36
28
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
37
29
  </style>
38
- ${isCTA ? '<div class="table--cta">' : ''}
39
- <div class="table__wrapper ${classList}">
30
+ <div class="table--cta">
31
+ <div class="table__wrapper">
40
32
  <slot></slot>
41
33
  </div>
42
- ${isCTA ? '</div>' : ''}
43
- ${isExportable ? '<button class="link" type="button" data-export>Export table as CSV</button>' : ''}
34
+ </div>
44
35
  <div class="table__pagination"></div>
45
36
  `;
46
37
  this.shadowRoot.appendChild(template.content.cloneNode(true));
@@ -50,6 +41,7 @@ class iamTable extends HTMLElement {
50
41
  connectedCallback() {
51
42
 
52
43
  const params = new URLSearchParams(window.location.search)
44
+
53
45
  // Set default attributes
54
46
  if(!this.hasAttribute('data-total'))
55
47
  this.setAttribute('data-total', this.querySelectorAll('table tbody tr').length);
@@ -65,10 +57,23 @@ class iamTable extends HTMLElement {
65
57
 
66
58
  this.setAttribute('data-pages', Math.ceil(this.getAttribute('data-total') / this.getAttribute('data-show')));
67
59
 
60
+ // Update table__wrapper class
61
+ let classList = this.classList.toString();
62
+
63
+ classList = classList.replace('table--cta','');
64
+ classList = classList.replace('table--loading','');
65
+ this.shadowRoot.querySelector('.table__wrapper').className += ` ${classList}`;
66
+
68
67
  this.table = this.querySelector('table');
69
68
  this.savedTableBody = this.table.querySelector('tbody').cloneNode(true);
70
69
  this.pagination = this.shadowRoot.querySelector('.table__pagination');
71
70
 
71
+ // Remove table CTA
72
+ const isCTA = this.classList.contains('table--cta');
73
+
74
+ if(!isCTA)
75
+ this.shadowRoot.querySelector('.table--cta').classList.remove('table--cta');
76
+
72
77
  // Set events on the filter table
73
78
  this.form = document.createElement('form');
74
79
  if(this.hasAttribute('data-filterby')){
@@ -11,7 +11,7 @@ export const addDataAttributes = (table) => {
11
11
  colRows.forEach((row, index) => {
12
12
 
13
13
  const cells = Array.from(row.querySelectorAll('th, td'));
14
- const statuses = ['0','low','medium','high','unknown','n/a','pending','verified','overdue','incomplete','complete','completed','approval required','requires approval','to do','not started','warning','error'];
14
+ const statuses = ['0','low','medium','high','unknown','n/a','pending','verified','due','overdue','incomplete','complete','completed','approval required','upcoming','requires approval','to do','on track','not started','warning','error'];
15
15
 
16
16
  cells.forEach((cell, cellIndex) => {
17
17
 
@@ -191,12 +191,17 @@ export const addFilterEventListeners = (table, form, pagination, wrapper, savedT
191
191
  formSubmit();
192
192
  }
193
193
 
194
- if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && event.target.closest('form .dialog__wrapper > dialog')){
194
+ if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter][data-no-ajax]')){ // Allow for input fields to filter the current results without a new ajax call
195
+
196
+ filterTable(table, form, wrapper);
197
+ createPaginationButttons(wrapper,pagination);
198
+ populateDataQueries(table,form);
199
+ }
200
+ else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && event.target.closest('form .dialog__wrapper > dialog')){
195
201
 
196
202
  formSubmit();
197
203
  }
198
-
199
- if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && !event.target.closest('form dialog')){
204
+ else if (event && event.target instanceof HTMLElement && event.target.closest('[data-filter]') && !event.target.closest('form dialog')){
200
205
 
201
206
  formSubmit();
202
207
  }
@@ -371,6 +376,9 @@ export const sortTable = (table, form, savedTableBody) => {
371
376
 
372
377
  let rowIndex = tableRow.querySelector('td[data-label="'+sortBy+'"], th[data-label="'+sortBy+'"]').textContent.trim();
373
378
 
379
+ if(tableRow.querySelector('[data-label="'+sortBy+'"] .td__content'))
380
+ rowIndex = tableRow.querySelector('[data-label="'+sortBy+'"] .td__content').textContent.trim();
381
+
374
382
  // If a predefined order set replace the search term with an ordered numeric value so it can be sorted
375
383
  if(orderArray.length && orderArray.includes(rowIndex)){
376
384
  rowIndex = orderArray.indexOf(rowIndex);
@@ -781,12 +789,8 @@ export const makeTableFunctional = function(table, form, pagination, wrapper){
781
789
  // Work out the largest width of the CTA's in the last column
782
790
  if(wrapper && wrapper.classList.contains('table--cta')){
783
791
 
784
- if(!wrapper.hasAttribute('data-cta-width')){
785
-
786
- const largestWidth = getLargestLastColWidth(table);
787
- wrapper.style.setProperty("--cta-width", `${largestWidth}rem`);
788
- wrapper.setAttribute("data-cta-width", `${largestWidth}rem`);
789
- }
792
+ const largestWidth = getLargestLastColWidth(table);
793
+ wrapper.style.setProperty("--cta-width", `${largestWidth}rem`);
790
794
 
791
795
  function outputsize() {
792
796
 
@@ -919,6 +923,7 @@ export const loadAjaxTable = async function (table, form, pagination, wrapper){
919
923
  wrapper.setAttribute('data-page', parseInt(currentPage));
920
924
  wrapper.setAttribute('data-pages', Math.ceil(wrapper.getAttribute('data-total') / wrapper.getAttribute('data-show')));
921
925
 
926
+ filterTable(table, form, wrapper);
922
927
  makeTableFunctional(table, form, pagination, wrapper);
923
928
  createPaginationButttons(wrapper, pagination);
924
929