@iamproperty/components 5.6.1-beta7 → 5.6.1-beta9

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 (73) hide show
  1. package/assets/css/components/card.css +1 -1
  2. package/assets/css/components/card.css.map +1 -1
  3. package/assets/css/components/table.global.css +1 -1
  4. package/assets/css/components/table.global.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/actionbar/actionbar.component.js +7 -7
  11. package/assets/js/components/actionbar/actionbar.component.min.js +10 -10
  12. package/assets/js/components/actionbar/actionbar.component.min.js.map +1 -1
  13. package/assets/js/components/address-lookup/address-lookup.component.min.js +1 -1
  14. package/assets/js/components/applied-filters/applied-filters.component.min.js +1 -1
  15. package/assets/js/components/card/card.component.js +5 -4
  16. package/assets/js/components/card/card.component.min.js +9 -9
  17. package/assets/js/components/card/card.component.min.js.map +1 -1
  18. package/assets/js/components/carousel/carousel.component.js +3 -3
  19. package/assets/js/components/carousel/carousel.component.min.js +5 -5
  20. package/assets/js/components/carousel/carousel.component.min.js.map +1 -1
  21. package/assets/js/components/collapsible-side/collapsible-side.component.min.js +1 -1
  22. package/assets/js/components/fileupload/fileupload.component.js +3 -3
  23. package/assets/js/components/fileupload/fileupload.component.min.js +4 -4
  24. package/assets/js/components/fileupload/fileupload.component.min.js.map +1 -1
  25. package/assets/js/components/filterlist/filterlist.component.js +2 -2
  26. package/assets/js/components/filterlist/filterlist.component.min.js +5 -5
  27. package/assets/js/components/filterlist/filterlist.component.min.js.map +1 -1
  28. package/assets/js/components/header/header.component.min.js +1 -1
  29. package/assets/js/components/inline-edit/inline-edit.component.js +2 -2
  30. package/assets/js/components/inline-edit/inline-edit.component.min.js +3 -3
  31. package/assets/js/components/inline-edit/inline-edit.component.min.js.map +1 -1
  32. package/assets/js/components/marketing/marketing.component.min.js +1 -1
  33. package/assets/js/components/multiselect/multiselect.component.js +2 -2
  34. package/assets/js/components/multiselect/multiselect.component.min.js +3 -3
  35. package/assets/js/components/multiselect/multiselect.component.min.js.map +1 -1
  36. package/assets/js/components/nav/nav.component.min.js +1 -1
  37. package/assets/js/components/notification/notification.component.js +1 -1
  38. package/assets/js/components/notification/notification.component.min.js +2 -2
  39. package/assets/js/components/notification/notification.component.min.js.map +1 -1
  40. package/assets/js/components/pagination/pagination.component.min.js +1 -1
  41. package/assets/js/components/search/search.component.min.js +1 -1
  42. package/assets/js/components/search/search.component.min.js.map +1 -1
  43. package/assets/js/components/slider/slider.component.min.js +1 -1
  44. package/assets/js/components/table/table.component.min.js +2 -2
  45. package/assets/js/components/table/table.component.min.js.map +1 -1
  46. package/assets/js/components/tabs/tabs.component.min.js +1 -1
  47. package/assets/js/dynamic.min.js +4 -4
  48. package/assets/js/dynamic.min.js.map +1 -1
  49. package/assets/js/modules/dynamicEvents.js +3 -0
  50. package/assets/js/modules/helpers.js +4 -0
  51. package/assets/js/scripts.bundle.js +10 -10
  52. package/assets/js/scripts.bundle.js.map +1 -1
  53. package/assets/js/scripts.bundle.min.js +2 -2
  54. package/assets/js/scripts.bundle.min.js.map +1 -1
  55. package/assets/sass/components/card.scss +88 -1
  56. package/assets/sass/components/table.global.scss +4 -2
  57. package/assets/sass/elements/forms.scss +36 -8
  58. package/assets/sass/elements/progress.scss +159 -17
  59. package/assets/ts/components/actionbar/actionbar.component.ts +7 -7
  60. package/assets/ts/components/card/card.component.ts +6 -4
  61. package/assets/ts/components/carousel/carousel.component.ts +3 -3
  62. package/assets/ts/components/fileupload/fileupload.component.ts +3 -3
  63. package/assets/ts/components/filterlist/filterlist.component.ts +2 -2
  64. package/assets/ts/components/inline-edit/inline-edit.component.ts +2 -2
  65. package/assets/ts/components/multiselect/multiselect.component.ts +2 -2
  66. package/assets/ts/components/notification/notification.component.ts +1 -1
  67. package/assets/ts/modules/dynamicEvents.ts +3 -0
  68. package/assets/ts/modules/helpers.ts +6 -0
  69. package/dist/components.es.js +13 -13
  70. package/dist/components.umd.js +30 -30
  71. package/dist/style.css +1 -1
  72. package/package.json +3 -3
  73. package/src/components/Card/README.md +1 -0
@@ -418,15 +418,102 @@
418
418
 
419
419
  //#region Record card
420
420
 
421
- .card--record{
421
+
422
+
423
+ .card--record:has(.card__head) {
422
424
  --img-height: 40%;
423
425
 
424
426
  &:before,
425
427
  &:after {
426
428
  display: none;
427
429
  }
430
+
431
+ .card__head {
432
+ background: transparent;
433
+ position: relative;
434
+
435
+ }
436
+ }
437
+
438
+ :host([data-record="business"]) {
439
+ --record-icon: '\f54f';
440
+ --record-colour: var(--wider-colour-2);
441
+ }
442
+ :host([data-record="page"]) {
443
+ --record-icon: '\f15c';
444
+ --record-colour: var(--wider-colour-3);
445
+ }
446
+ :host([data-record="contact"]) {
447
+ --record-icon: "\f2b9";
448
+ --record-colour: var(--wider-colour-4);
449
+ }
450
+ :host([data-record="lettings"]) {
451
+ --record-icon: "";
452
+ --record-icon-font: Font Awesome Kit;
453
+ --record-colour: var(--wider-colour-5);
454
+ }
455
+
456
+ :host([data-record="sales"]) {
457
+ --record-icon: "";
458
+ --record-icon-font: Font Awesome Kit;
459
+ --record-colour: var(--wider-colour-7);
460
+ }
461
+ :host([data-record="landlord"]) {
462
+ --record-icon: "";
463
+ --record-icon-font: Font Awesome Kit;
464
+ --record-colour: var(--wider-colour-8);
465
+ }
466
+
467
+ :host([data-record="contractor"]) {
468
+ --record-icon: "\f82c";
469
+ --record-colour: var(--wider-colour-9);
470
+ }
471
+
472
+ :host([data-record="vendor"]) {
473
+ --record-icon: "";
474
+ --record-icon-font: Font Awesome Kit;
475
+ --record-colour: var(--wider-colour-13);
476
+ }
477
+
478
+ :host([data-record="tenant"]) {
479
+ --record-icon: "\e1b0";
480
+ --record-colour: var(--wider-colour-6);
481
+ }
482
+ :host([data-record="sales-applicant"]) {
483
+ --record-icon: "";
484
+ --record-icon-font: Font Awesome Kit;
485
+ --record-colour: var(--wider-colour-10);
486
+ }
487
+
488
+ :host([data-record]) .card--record:has(.card__head) {
489
+
490
+ .card__head {
491
+ background: transparent;
492
+ position: relative;
493
+
494
+ &:before {
495
+ font-family: var(--record-icon-font,"Font Awesome 6 Pro");
496
+ font-weight: normal;
497
+ font-size: rem(24);
498
+ content: var(--record-icon);
499
+ display: block;
500
+ position: absolute;
501
+ top: auto;
502
+ left: 50%;
503
+ bottom: 0;
504
+ background-color: var(--record-colour);
505
+ border-radius: 50%;
506
+ height: rem(64);
507
+ line-height: rem(64);
508
+ width: rem(64);
509
+ text-align: center;
510
+ transform: translate(-50%,0);
511
+ }
512
+
513
+ }
428
514
  }
429
515
 
516
+
430
517
  slot[name="btns"] {
431
518
  display: flex;
432
519
  flex-direction: row;
@@ -415,8 +415,10 @@ iam-table {
415
415
  }
416
416
  }
417
417
 
418
- tr:has([type="checkbox"]:checked){
419
- height: 3.5rem;
418
+ @container (width > 23.4375em) {
419
+ tr:has([type="checkbox"]:checked){
420
+ height: calc(4.625rem - 2px)
421
+ }
420
422
  }
421
423
 
422
424
  tr:has([type="checkbox"]:checked){
@@ -828,28 +828,53 @@ div:has(> select){
828
828
 
829
829
  all: unset;
830
830
  font-size: inherit;
831
+ line-height: inherit;
831
832
  background: none;
832
- border: none;
833
+ border: 2px solid transparent;
833
834
  display: inline-block;
834
- margin: 0;
835
- padding: 0 calc(1.25em + 0.8ch) 0 var(--select-padding-left, 0.25em)!important;
836
-
835
+ padding: 0.4em calc(1em + 0.8ch) 0.4rem var(--select-padding-left, 0.4em)!important;
836
+ font-weight: normal!important;
837
+ margin: -0.4em 0!important;
838
+ border-radius: 0.25em;
839
+
840
+ color: var(--colour-body);
841
+
837
842
  height: auto;
838
843
  cursor: pointer;
844
+ font-family: var(--font-body)!important;
839
845
 
840
846
  option {
841
847
  background-color: var(--colour-canvas);
842
848
  padding-left: 1em;
849
+ font-size: inherit;
850
+ line-height: inherit;
843
851
  }
844
852
 
853
+ &:hover {
854
+
855
+ //border: none;
856
+ background: var(--colour-light);
857
+ }
858
+
859
+ &:is(:focus,.focus):not(:disabled) {
845
860
 
846
- &:is(:hover,:focus) {
847
- outline: 1px solid var(--colour-info);
861
+ border-color: var(--colour-info);
862
+ outline: 0;
863
+ box-shadow: 0 0 0 0.1rem rgba(30, 190, 230, 0.25);
848
864
  }
849
865
  }
850
866
 
851
867
  *:has(> .select--minimal){
852
868
  position: relative;
869
+ display: inline-block!important;
870
+ width: auto!important;
871
+ font-size: inherit!important;
872
+ line-height: 1!important;
873
+
874
+ padding: 0!important;
875
+ margin: 0!important;
876
+
877
+ font-family: var(--font-body)!important;
853
878
 
854
879
  &:after {
855
880
  font-size: 0.8em;
@@ -857,10 +882,13 @@ div:has(> select){
857
882
  content: "\f078";
858
883
  font-family: "Font Awesome 6 Pro";
859
884
  position: absolute;
860
- top: 50%;
885
+ top: 40%;
861
886
  transform: translate(0,-50%);
862
- right: calc(0.25em + 0.8ch);
887
+ right: calc(0.8ch);
863
888
  pointer-events: none;
889
+
890
+ color: var(--colour-body);
891
+
864
892
  }
865
893
  }
866
894
  // #endregion
@@ -18,12 +18,10 @@ progress {
18
18
  border: none;
19
19
  }
20
20
 
21
- progress:before {
22
- content: attr(value)'%';
21
+ label[data-percent]:has(progress):before {
22
+ content: attr(data-percent)'%';
23
23
  vertical-align: 0;
24
24
  line-height: 1;
25
-
26
- /*Position text over the progress bar */
27
25
  position:absolute;
28
26
  top: auto;
29
27
  left:auto;
@@ -33,6 +31,10 @@ progress:before {
33
31
  font-weight: bold;
34
32
  }
35
33
 
34
+ progress[data-progress]:before {
35
+ content: attr(data-progress)'%';
36
+ }
37
+
36
38
  progress::-webkit-progress-bar {
37
39
  background-color: var(--colour-light);
38
40
  border-radius: rem(5);
@@ -42,30 +44,170 @@ progress::-webkit-progress-value {
42
44
  border-radius: rem(5);
43
45
  }
44
46
 
47
+ // #region inline progress
48
+ :is(label, .label):has(.progress--inline){
49
+
50
+ font-size: 1rem;
51
+ color: var(--colour-body);
52
+
53
+ &:before {
54
+ bottom: -0.25em;
55
+ }
45
56
 
57
+ progress.progress--inline {
46
58
 
59
+ width: 100%;
47
60
 
48
- progress::-moz-progress-bar {
49
- /* style rules */
61
+ }
50
62
  }
51
63
 
64
+ // #endregion
52
65
 
53
- // #region inline progress
66
+ // #region Circular
67
+ label:has(.progress--circular){
54
68
 
55
- :is(label, .label):has(.progress--inline){
69
+ --max-width: #{rem(200)};
70
+ --pt: #{rem(90)};
71
+ --pt-percent: 45%;
72
+ --bar-width: #{rem(20)};
73
+ --value-fs: #{rem(48)};
74
+ --value-pb: #{rem(32)};
75
+ --label-fs: #{rem(18)};
56
76
 
57
- font-size: 1rem;
58
- color: var(--colour-body);
59
-
60
-
61
- progress.progress--inline {
77
+ position: relative;
78
+ z-index: 1;
79
+ max-width: var(--max-width);
80
+ margin-bottom: 2rem;
62
81
 
63
- width: 100%;
82
+ padding-right: 0;
83
+ aspect-ratio: 1/1;
84
+ height: auto;
85
+ width: 100%;
86
+ text-align: center;
87
+ padding-top: min(calc(var(--pt-percent) + var(--value-pb)), calc(var(--pt) + var(--value-pb)));
88
+ padding-inline: var(--value-pb);
89
+
90
+ display: inline-block;
91
+ font-size: var(--label-fs);
92
+ line-height: 1;
93
+ }
94
+
95
+ label:has(.progress--circular.progress--md){
96
+ --max-width: #{rem(170)};
97
+ --pt: #{rem(76.5)};
98
+ --pt-percent: 45%;
99
+ --bar-width: #{rem(20)};
100
+ --value-pb: #{rem(24)};
101
+ }
102
+
103
+ label:has(.progress--circular.progress--sm){
104
+ --max-width: #{rem(120)};
105
+ --pt: #{rem(54)};
106
+ --pt-percent: 45%;
107
+ --bar-width: #{rem(16)};
108
+ --value-fs: #{rem(24)};
109
+
110
+ --value-pb: #{rem(16)};
111
+ --label-fs: #{rem(12)};
112
+ }
113
+
114
+ // Responsive-ish settings
115
+ *:has(> label > .progress--circular){
64
116
 
65
- &:before {
66
- bottom: -0.25em;
67
- }
117
+ container-type: inline-size;
118
+ }
119
+
120
+ @container (width <= 10.625rem) {
121
+
122
+ label:has(.progress--circular:not(.progress--sm):not(.progress--md)){
123
+ --max-width: #{rem(170)};
124
+ --pt: #{rem(76.5)};
125
+ --pt-percent: 45%;
126
+ --bar-width: #{rem(20)};
127
+ --value-pb: #{rem(24)};
128
+ }
129
+ }
130
+
131
+ @container (width <= 7.5rem) {
132
+
133
+ label:has(.progress--circular:not(.progress--sm):not(.progress--md)){
134
+ --max-width: #{rem(120)};
135
+ --pt: #{rem(54)};
136
+ --pt-percent: 45%;
137
+ --bar-width: #{rem(16)};
138
+ --value-fs: #{rem(24)};
139
+
140
+ --value-pb: #{rem(16)};
141
+ --label-fs: #{rem(12)};
68
142
  }
69
143
  }
70
144
 
145
+
146
+
147
+
148
+ label:has(.progress--circular) + label:has(.progress--circular) {
149
+ margin-left: 2rem;
150
+ }
151
+
152
+ // Needed to allow it to be animated
153
+ @property --progress {
154
+ syntax: '<percentage>';
155
+ inherits: false;
156
+ initial-value: 0%;
157
+ }
158
+
159
+ .progress--circular {
160
+
161
+ --progress-shown: var(--progress, 0%);
162
+ position: absolute;
163
+ z-index: -2;
164
+ top: 0;
165
+ left: 0;
166
+ margin: 0;
167
+ background: red;
168
+ background: conic-gradient(var(--colour, var(--colour-info)) var(--progress-shown), var(--colour-light) var(--progress-shown) calc(100% - var(--progress-shown)));
169
+ height: 100%;
170
+ width: 100%;
171
+ border-radius: 50%;
172
+ box-shadow: #{rem(3)} #{rem(3)} #{rem(6)} rgba(0, 0, 0, 20%);
173
+ transition: --progress 1s;
174
+ }
175
+
176
+ .progress--circular::-webkit-progress-bar,
177
+ .progress--circular::-webkit-progress-value {
178
+ opacity: 0;
179
+ }
180
+
181
+
182
+ .progress--circular::-moz-progress-bar {
183
+ opacity: 0;
184
+ }
185
+
186
+ label[data-percent]:has(.progress--circular):before {
187
+
188
+ top: var(--pt-percent);
189
+ left:50%;
190
+ right:auto;
191
+ bottom: auto;
192
+ color: var(--colour-heading);
193
+ transform: translate(-50%,-50%);
194
+ font-size: var(--value-fs);
195
+ line-height: 1;
196
+ z-index: 2;
197
+ text-indent: 0;
198
+ }
199
+
200
+ label:has(.progress--circular):after {
201
+ content: "";
202
+ position: absolute;
203
+ z-index: -1;
204
+ top: 50%;
205
+ left: 50%;
206
+ transform: translate(-50%, -50%);
207
+ aspect-ratio: 1/1;
208
+ width: calc(100% - var(--bar-width) - var(--bar-width));
209
+ background-color: var(--colour-canvas);
210
+ border-radius: 50%;
211
+ }
212
+
71
213
  // #endregion
@@ -57,19 +57,19 @@ class iamActionbar extends HTMLElement {
57
57
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
58
58
  <div class="actionbar__wrapper">
59
59
 
60
- <div class="actionbar">
60
+ <div class="actionbar" part="actionbar">
61
61
  <slot name="selectall"></slot>
62
62
  <div class="safe-area">
63
63
  <slot></slot>
64
64
  <div class="body">
65
65
  <div class="dialog__wrapper dialog__wrapper--right dialog-overflow d-none show">
66
66
  <button class="btn btn-secondary btn-compact fa-ellipsis-vertical m-0">More actions</button>
67
- <dialog class="dialog--list">
67
+ <dialog class="dialog--list" part="overflow">
68
68
  <slot name="overflow"></slot>
69
69
  <slot name="menu"></slot>
70
70
  </dialog>
71
71
  </div>
72
- <button class="btn btn-secondary btn-compact btn-sm fa-search" data-search="">Search</button>
72
+ <button class="btn btn-secondary btn-compact btn-sm fa-search" data-search="" part="search-btn">Search</button>
73
73
  </div>
74
74
  </div>
75
75
  </div>
@@ -79,7 +79,7 @@ class iamActionbar extends HTMLElement {
79
79
  <div class="body">
80
80
  <div class="dialog__wrapper dialog__wrapper--right dialog-overflow d-none show">
81
81
  <button class="btn btn-secondary btn-compact fa-ellipsis-vertical m-0">More actions</button>
82
- <dialog class="dialog--list">
82
+ <dialog class="dialog--list" part="selected-overflow">
83
83
  <slot name="selected-overflow"></slot>
84
84
  </dialog>
85
85
  </div>
@@ -89,10 +89,10 @@ class iamActionbar extends HTMLElement {
89
89
  <div class="actionbar--search">
90
90
  <button data-search class="btn btn-compact fa-xmark-large btn-secondary m-0" >Close</button>
91
91
 
92
- <div class="search-wrapper">
92
+ <div class="search-wrapper" part="search">
93
93
  <label for="search" class="visually-hidden">Input field label</label>
94
- <button class="suffix"><i class="fa-regular fa-search"></i></button>
95
- <input type="text" id="search" name="search" required="">
94
+ <button class="suffix" part="search-btn"><i class="fa-regular fa-search"></i></button>
95
+ <input type="text" id="search" name="search" required="" part="search-input">
96
96
  </div>
97
97
 
98
98
  </div>
@@ -33,17 +33,17 @@ class iamCard extends HTMLElement {
33
33
  </style>
34
34
  <link rel="stylesheet" href="https://kit.fontawesome.com/26fdbf0179.css" crossorigin="anonymous">
35
35
  <div class="card ${classList}" tabindex="0" part="card">
36
- ${this.hasAttribute('data-image') ? `<div class="card__head"><img src="${this.getAttribute('data-image')}" alt="" loading="lazy" /><div class="card__badges"><slot name="badges"></slot></div></div>` : ''}
37
- <div class="card__body">
36
+ ${this.hasAttribute('data-image') || this.hasAttribute('data-record') ? `<div class="card__head">${this.hasAttribute('data-image') ? `<img src="${this.getAttribute('data-image')}" alt="" loading="lazy" />` : ``} <div class="card__badges"><slot name="badges"></slot></div></div>` : ''}
37
+ <div class="card__body" part="body">
38
38
  ${!this.hasAttribute('data-image') && this.querySelector('[slot="badges"]') && this.querySelector('[slot="checkbox"]') ? `<div class="card__badges card__badges--inline"><slot name="badges"></slot></div>` : ''}
39
- ${!this.hasAttribute('data-image') && this.querySelector('[slot="badges"]') ? `<div class="card__badges"><slot name="badges"></slot></div>` : ''}
39
+ ${!this.hasAttribute('data-image') && !this.hasAttribute('data-record') && this.querySelector('[slot="badges"]') ? `<div class="card__badges"><slot name="badges"></slot></div>` : ''}
40
40
  ${this.hasAttribute('data-illustration') ? `<div class="card__illustration"><img src="${this.getAttribute('data-illustration')}" alt="" loading="lazy" /></div>` : ''}
41
41
  <slot></slot>
42
42
  ${this.hasAttribute('data-total') ? `<div class="card__total">${this.getAttribute('data-total')}</div>` : ''}
43
43
  </div>
44
44
  ${this.hasAttribute('data-add-link') ? `<button class="btn btn-compact btn-secondary fa-plus">Add property</button>` : ''}
45
45
  <slot name="checkbox"></slot>
46
- <div class="card__footer">
46
+ <div class="card__footer" part="footer">
47
47
  <slot name="footer"></slot>
48
48
  <slot name="btns"></slot>
49
49
  ${this.hasAttribute('data-cta') ? `<span class="link d-inline-block pt-0 mb-0">${this.getAttribute('data-cta')}</span>` : ''}
@@ -65,6 +65,7 @@ class iamCard extends HTMLElement {
65
65
  const parentNode = this.parentNode.closest('a, button, label, router-link')
66
66
  const card = this.shadowRoot.querySelector('.card')
67
67
  const btnCompact = this.shadowRoot.querySelector('.btn-compact');
68
+ const recordType = this.hasAttribute('data-record') ? this.getAttribute('data-record') : '';
68
69
 
69
70
  if(parentNode)
70
71
  parentNode.setAttribute('tabindex','-1');
@@ -177,6 +178,7 @@ class iamCard extends HTMLElement {
177
178
  window.location = addLocation;
178
179
  });
179
180
  }
181
+
180
182
  }
181
183
 
182
184
  static get observedAttributes() {
@@ -32,12 +32,12 @@ class iamCarousel extends HTMLElement {
32
32
  <slot></slot>
33
33
  </div>
34
34
 
35
- <div class="carousel__controls">
35
+ <div class="carousel__controls" part="controls">
36
36
 
37
37
  </div>
38
38
 
39
- <button class="btn btn-prev" data-go="0" disabled>Prev</button>
40
- <button class="btn btn-next" data-go="2">Next</button>
39
+ <button class="btn btn-prev" data-go="0" disabled part="prev">Prev</button>
40
+ <button class="btn btn-next" data-go="2" part="next">Next</button>
41
41
 
42
42
  </div>
43
43
  </div>
@@ -26,13 +26,13 @@ class iamFileupload extends HTMLElement {
26
26
  ${this.hasAttribute('css') ? `@import "${this.getAttribute('css')}";` : ``}
27
27
  </style>
28
28
  <div class="file-upload">
29
- <span class="file-upload__title">Upload file</span>
29
+ <span class="file-upload__title" part="title">Upload file</span>
30
30
  <p class="helper-text"><slot name="helper"></slot></p>
31
- <button class="btn btn-primary" type="button"><slot name="btn"></slot> Upload ${this.hasAttribute('data-filetype') ? this.getAttribute('data-filetype') : 'file'}</button>
31
+ <button class="btn btn-primary" type="button" part="button"><slot name="btn"></slot> Upload ${this.hasAttribute('data-filetype') ? this.getAttribute('data-filetype') : 'file'}</button>
32
32
  <div class="drop-area"></div>
33
33
  <hr/>
34
34
  <slot></slot>
35
- <div class="files"><slot name="files"></slot></div>
35
+ <div class="files" part="files"><slot name="files"></slot></div>
36
36
  </div>
37
37
  `;
38
38
  this.shadowRoot.appendChild(template.content.cloneNode(true));
@@ -40,9 +40,9 @@ class iamFilterlist extends HTMLElement {
40
40
  <div class="form-control__wrapper">
41
41
  <label for="search" class="visually-hidden">Search</label>
42
42
  <span class="suffix" role="presentation"><slot name="icon"></slot></span>
43
- <input name="search" id="search" type="text" class="form-control" autocomplete="off" placeholder="Search" />
43
+ <input name="search" id="search" type="text" class="form-control" autocomplete="off" placeholder="Search" part="search-input" />
44
44
  </div>
45
- <div class="list__wrapper">
45
+ <div class="list__wrapper" part="wrapper">
46
46
  <slot></slot>
47
47
  </div>
48
48
  `;
@@ -27,9 +27,9 @@ class iamInlineEdit extends HTMLElement {
27
27
 
28
28
  <slot></slot>
29
29
  <div class="btns">
30
- <button class="btn btn-action" id="save"><i class="fa-regular fa-save m-0"></i> Save</button><button class="btn btn-action" id="cancel">Cancel</button>
30
+ <button class="btn btn-action" id="save" part="save-btn"><i class="fa-regular fa-save m-0"></i> Save</button><button class="btn btn-action" id="cancel">Cancel</button>
31
31
  </div>
32
- <div class="status pe-none">
32
+ <div class="status pe-none" part="status">
33
33
  <span class="btn btn-action border-0 bg-transparent prevent-invert d-none" id="saving"><i class="fa-regular fa-spinner fa-spin me-1"></i> Saving...</span>
34
34
  <span class="btn btn-action border-0 bg-transparent prevent-invert d-none" id="saved"><i class="fa-regular fa-check me-1"></i> Saved</span>
35
35
  <span class="btn btn-action border-0 bg-transparent prevent-invert d-none" id="notsaved"><i class="fa-regular fa-circle-info me-1"></i> Not Saved</span>
@@ -29,9 +29,9 @@ class iamMultiselect extends HTMLElement {
29
29
  <div class="wrapper">
30
30
 
31
31
  <slot name="checked"></slot>
32
- <input name="search" id="search" autocomplete="off" required />
32
+ <input name="search" id="search" autocomplete="off" required part="search-input"/>
33
33
  <span class="admin-panel feedback">This field is required</span>
34
- <div class="admin-panel dropdown">
34
+ <div class="admin-panel dropdown" part="dropdown">
35
35
  <slot></slot>
36
36
  </div>
37
37
  <button id="clear"><span class="visually-hidden">Clear</span></button>
@@ -41,7 +41,7 @@ class iamNotification extends HTMLElement {
41
41
  <div class="notification">
42
42
  <div class="notification__icon"><slot name="icon"></slot></div>
43
43
  <div class="notification__inner"><div class="notification__text"><slot></slot></div>${ buttons.length ? `<div class="notification__btns"><slot name="btns"></slot></div>` : '' }</div>
44
- ${ this.hasAttribute('data-dismiss') ? `<div class="notification__dismiss"><button data-dismiss-button>Dismiss</button></div>` : ''}
44
+ ${ this.hasAttribute('data-dismiss') ? `<div class="notification__dismiss"><button data-dismiss-button part="dismiss-btn">Dismiss</button></div>` : ''}
45
45
  </div>
46
46
  `;
47
47
  this.shadowRoot.appendChild(template.content.cloneNode(true));
@@ -115,6 +115,9 @@ const runEvent = (element,event,eventType) => {
115
115
  element.setAttribute(event['attribute'],event['value']);
116
116
  });
117
117
  break;
118
+ case "focus":
119
+ document.querySelector(`${event['target']}`).focus();
120
+ break;
118
121
  case "removeAttribute":
119
122
  Array.from(document.querySelectorAll(`${event['target']}`)).forEach(function(element,index){
120
123
  element.removeAttribute(event['attribute']);
@@ -100,6 +100,12 @@ export const addGlobalEvents = (body) => {
100
100
  }
101
101
  });
102
102
 
103
+ Array.from(document.querySelectorAll('label progress')).forEach((progress,index) => {
104
+ let label = progress.closest('label');
105
+
106
+ label.setAttribute('data-percent',progress.getAttribute('value'));
107
+ });
108
+
103
109
  return null
104
110
  }
105
111