@ukic/web-components 3.17.0 → 3.18.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 (190) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-alert.cjs.entry.js +6 -2
  3. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-button_3.cjs.entry.js +28 -16
  5. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-checkbox-group.cjs.entry.js +23 -2
  7. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-input-label_2.cjs.entry.js +3 -4
  13. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-skeleton.cjs.entry.js +20 -5
  15. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-step.cjs.entry.js +16 -14
  17. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-stepper.cjs.entry.js +24 -4
  19. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-switch.cjs.entry.js +4 -4
  21. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-tab-group.cjs.entry.js +2 -2
  23. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  24. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-toast.cjs.entry.js +5 -5
  27. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +2 -2
  28. package/dist/cjs/ic-toggle-button.cjs.entry.js +2 -2
  29. package/dist/cjs/loader.cjs.js +1 -1
  30. package/dist/collection/components/ic-alert/ic-alert.js +26 -2
  31. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  32. package/dist/collection/components/ic-alert/ic-alert.stories.js +15 -0
  33. package/dist/collection/components/ic-button/ic-button.css +12 -0
  34. package/dist/collection/components/ic-button/ic-button.js +3 -3
  35. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  36. package/dist/collection/components/ic-button/ic-button.stories.js +251 -0
  37. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +25 -2
  38. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  39. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +16 -8
  40. package/dist/collection/components/ic-data-list/ic-data-list.stories.js +6 -0
  41. package/dist/collection/components/ic-data-row/ic-data-row.css +1 -1
  42. package/dist/collection/components/ic-input-validation/ic-input-validation.js +7 -8
  43. package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
  44. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +29 -14
  45. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  46. package/dist/collection/components/ic-menu/ic-menu.css +1 -1
  47. package/dist/collection/components/ic-select/ic-select_(multi).stories.js +2 -2
  48. package/dist/collection/components/ic-select/ic-select_(searchable).stories.js +1 -1
  49. package/dist/collection/components/ic-select/ic-select_(single).stories.js +3 -3
  50. package/dist/collection/components/ic-skeleton/ic-skeleton.js +58 -5
  51. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  52. package/dist/collection/components/ic-skeleton/ic-skeleton.stories.js +4 -3
  53. package/dist/collection/components/ic-step/ic-step.css +16 -7
  54. package/dist/collection/components/ic-step/ic-step.js +19 -14
  55. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  56. package/dist/collection/components/ic-stepper/ic-stepper.js +24 -4
  57. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  58. package/dist/collection/components/ic-stepper/ic-stepper.stories.js +12 -0
  59. package/dist/collection/components/ic-switch/ic-switch.js +4 -4
  60. package/dist/collection/components/ic-tab-context/ic-tab-context.js +1 -1
  61. package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -2
  62. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
  63. package/dist/collection/components/ic-theme/ic-theme.js +1 -1
  64. package/dist/collection/components/ic-toast/ic-toast.js +5 -5
  65. package/dist/collection/components/ic-toast-region/ic-toast-region.js +1 -1
  66. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +2 -2
  67. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +2 -2
  68. package/dist/components/ic-alert.js +7 -2
  69. package/dist/components/ic-alert.js.map +1 -1
  70. package/dist/components/ic-button2.js +4 -4
  71. package/dist/components/ic-button2.js.map +1 -1
  72. package/dist/components/ic-checkbox-group.js +24 -2
  73. package/dist/components/ic-checkbox-group.js.map +1 -1
  74. package/dist/components/ic-data-row.js +1 -1
  75. package/dist/components/ic-data-row.js.map +1 -1
  76. package/dist/components/ic-input-validation2.js +4 -5
  77. package/dist/components/ic-input-validation2.js.map +1 -1
  78. package/dist/components/ic-loading-indicator2.js +27 -13
  79. package/dist/components/ic-loading-indicator2.js.map +1 -1
  80. package/dist/components/ic-menu2.js +1 -1
  81. package/dist/components/ic-menu2.js.map +1 -1
  82. package/dist/components/ic-radio-group.js.map +1 -1
  83. package/dist/components/ic-side-navigation.js.map +1 -1
  84. package/dist/components/ic-skeleton.js +23 -6
  85. package/dist/components/ic-skeleton.js.map +1 -1
  86. package/dist/components/ic-step.js +17 -15
  87. package/dist/components/ic-step.js.map +1 -1
  88. package/dist/components/ic-stepper.js +24 -4
  89. package/dist/components/ic-stepper.js.map +1 -1
  90. package/dist/components/ic-switch.js +4 -4
  91. package/dist/components/ic-tab-context.js +1 -1
  92. package/dist/components/ic-tab-group.js +2 -2
  93. package/dist/components/ic-tab-panel.js +2 -2
  94. package/dist/components/ic-theme.js +1 -1
  95. package/dist/components/ic-toast-region.js +1 -1
  96. package/dist/components/ic-toast.js +5 -5
  97. package/dist/components/ic-toggle-button-group.js +2 -2
  98. package/dist/components/ic-toggle-button.js +2 -2
  99. package/dist/core/core.esm.js +1 -1
  100. package/dist/core/core.esm.js.map +1 -1
  101. package/dist/core/p-049839cd.entry.js +2 -0
  102. package/dist/core/p-049839cd.entry.js.map +1 -0
  103. package/dist/core/p-0648dd8e.entry.js +2 -0
  104. package/dist/core/p-0648dd8e.entry.js.map +1 -0
  105. package/dist/core/{p-f51c609d.entry.js → p-177d3c2f.entry.js} +2 -2
  106. package/dist/core/{p-5254a078.entry.js → p-1be17f22.entry.js} +2 -2
  107. package/dist/core/{p-7d0d85c4.entry.js → p-4631ac1b.entry.js} +2 -2
  108. package/dist/core/{p-30312243.entry.js → p-49444c33.entry.js} +2 -2
  109. package/dist/core/p-49444c33.entry.js.map +1 -0
  110. package/dist/core/p-5d2efd2d.entry.js +2 -0
  111. package/dist/core/p-5d2efd2d.entry.js.map +1 -0
  112. package/dist/core/{p-b59504f1.entry.js → p-72e5eb70.entry.js} +2 -2
  113. package/dist/core/{p-b59504f1.entry.js.map → p-72e5eb70.entry.js.map} +1 -1
  114. package/dist/core/{p-3636be4f.entry.js → p-7dff646d.entry.js} +2 -2
  115. package/dist/core/p-a5295f66.entry.js +2 -0
  116. package/dist/core/p-a5295f66.entry.js.map +1 -0
  117. package/dist/core/{p-3d23ce54.entry.js → p-a61fa6ad.entry.js} +2 -2
  118. package/dist/core/{p-53740194.entry.js → p-a8310dfd.entry.js} +2 -2
  119. package/dist/core/p-a8310dfd.entry.js.map +1 -0
  120. package/dist/core/{p-afbba548.entry.js → p-af728534.entry.js} +2 -2
  121. package/dist/core/{p-04cb17d7.entry.js → p-b9459ba2.entry.js} +2 -2
  122. package/dist/core/{p-adde6c66.entry.js → p-d376858f.entry.js} +2 -2
  123. package/dist/core/{p-4d3b219c.entry.js → p-de630a9a.entry.js} +2 -2
  124. package/dist/core/p-e82d9a6f.entry.js +2 -0
  125. package/dist/core/p-e82d9a6f.entry.js.map +1 -0
  126. package/dist/core/{p-b83a736d.entry.js → p-ed3aaa3a.entry.js} +2 -2
  127. package/dist/core/p-ed3aaa3a.entry.js.map +1 -0
  128. package/dist/esm/core.js +1 -1
  129. package/dist/esm/ic-alert.entry.js +6 -2
  130. package/dist/esm/ic-alert.entry.js.map +1 -1
  131. package/dist/esm/ic-button_3.entry.js +28 -16
  132. package/dist/esm/ic-button_3.entry.js.map +1 -1
  133. package/dist/esm/ic-checkbox-group.entry.js +23 -2
  134. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  135. package/dist/esm/ic-data-row.entry.js +1 -1
  136. package/dist/esm/ic-data-row.entry.js.map +1 -1
  137. package/dist/esm/ic-input-component-container_3.entry.js +1 -1
  138. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  139. package/dist/esm/ic-input-label_2.entry.js +3 -4
  140. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  141. package/dist/esm/ic-skeleton.entry.js +20 -5
  142. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  143. package/dist/esm/ic-step.entry.js +17 -15
  144. package/dist/esm/ic-step.entry.js.map +1 -1
  145. package/dist/esm/ic-stepper.entry.js +24 -4
  146. package/dist/esm/ic-stepper.entry.js.map +1 -1
  147. package/dist/esm/ic-switch.entry.js +4 -4
  148. package/dist/esm/ic-tab-context.entry.js +1 -1
  149. package/dist/esm/ic-tab-group.entry.js +2 -2
  150. package/dist/esm/ic-tab-panel.entry.js +2 -2
  151. package/dist/esm/ic-theme.entry.js +1 -1
  152. package/dist/esm/ic-toast-region.entry.js +1 -1
  153. package/dist/esm/ic-toast.entry.js +5 -5
  154. package/dist/esm/ic-toggle-button-group.entry.js +2 -2
  155. package/dist/esm/ic-toggle-button.entry.js +2 -2
  156. package/dist/esm/loader.js +1 -1
  157. package/dist/types/components/ic-alert/ic-alert.d.ts +4 -0
  158. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +3 -0
  159. package/dist/types/components/ic-input-validation/ic-input-validation.d.ts +1 -1
  160. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +4 -1
  161. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +8 -0
  162. package/dist/types/components/ic-step/ic-step.d.ts +3 -0
  163. package/dist/types/components/ic-stepper/ic-stepper.d.ts +1 -0
  164. package/dist/types/components.d.ts +28 -4
  165. package/hydrate/index.js +151 -71
  166. package/hydrate/index.mjs +151 -71
  167. package/package.json +2 -2
  168. package/vscode-data.json +13 -1
  169. package/dist/core/p-1f41818b.entry.js +0 -2
  170. package/dist/core/p-1f41818b.entry.js.map +0 -1
  171. package/dist/core/p-30312243.entry.js.map +0 -1
  172. package/dist/core/p-33e35173.entry.js +0 -2
  173. package/dist/core/p-33e35173.entry.js.map +0 -1
  174. package/dist/core/p-34407b13.entry.js +0 -2
  175. package/dist/core/p-34407b13.entry.js.map +0 -1
  176. package/dist/core/p-42d35fc4.entry.js +0 -2
  177. package/dist/core/p-42d35fc4.entry.js.map +0 -1
  178. package/dist/core/p-53740194.entry.js.map +0 -1
  179. package/dist/core/p-b83a736d.entry.js.map +0 -1
  180. package/dist/core/p-cce398e1.entry.js +0 -2
  181. package/dist/core/p-cce398e1.entry.js.map +0 -1
  182. /package/dist/core/{p-f51c609d.entry.js.map → p-177d3c2f.entry.js.map} +0 -0
  183. /package/dist/core/{p-5254a078.entry.js.map → p-1be17f22.entry.js.map} +0 -0
  184. /package/dist/core/{p-7d0d85c4.entry.js.map → p-4631ac1b.entry.js.map} +0 -0
  185. /package/dist/core/{p-3636be4f.entry.js.map → p-7dff646d.entry.js.map} +0 -0
  186. /package/dist/core/{p-3d23ce54.entry.js.map → p-a61fa6ad.entry.js.map} +0 -0
  187. /package/dist/core/{p-afbba548.entry.js.map → p-af728534.entry.js.map} +0 -0
  188. /package/dist/core/{p-04cb17d7.entry.js.map → p-b9459ba2.entry.js.map} +0 -0
  189. /package/dist/core/{p-adde6c66.entry.js.map → p-d376858f.entry.js.map} +0 -0
  190. /package/dist/core/{p-4d3b219c.entry.js.map → p-de630a9a.entry.js.map} +0 -0
@@ -5,6 +5,8 @@ const defaultArgs = {
5
5
  additionalFieldDisplay: "dynamic",
6
6
  additionalFieldSlot: "additional-field",
7
7
  checked: false,
8
+ checkboxDisabled: false,
9
+ checkboxSize: "medium",
8
10
  disabled: false,
9
11
  dynamicText: "Dynamic text",
10
12
  groupLabel: "Checkbox group label",
@@ -43,7 +45,7 @@ export const Default = {
43
45
  <ic-checkbox
44
46
  value="valueName3"
45
47
  label="Unselected / Disabled"
46
- Disabled
48
+ disabled
47
49
  ></ic-checkbox>
48
50
  </ic-checkbox-group>
49
51
  `,
@@ -76,26 +78,22 @@ export const Required = {
76
78
 
77
79
  export const Disabled = {
78
80
  render: () => html`
79
- <ic-checkbox-group label="This is a label" name="group1" Disabled>
81
+ <ic-checkbox-group label="This is a label" name="group1" disabled>
80
82
  <ic-checkbox
81
83
  value="valueName1"
82
84
  label="Unselected / Disabled 1"
83
- Disabled
84
85
  ></ic-checkbox>
85
86
  <ic-checkbox
86
87
  value="valueName2"
87
88
  label="Unselected / Disabled 2"
88
- Disabled
89
89
  ></ic-checkbox>
90
90
  <ic-checkbox
91
91
  value="valueName3"
92
92
  label="Unselected / Disabled 3"
93
- Disabled
94
93
  ></ic-checkbox>
95
94
  <ic-checkbox
96
95
  value="valueName4"
97
96
  label="Selected / Disabled"
98
- Disabled
99
97
  checked
100
98
  ></ic-checkbox>
101
99
  </ic-checkbox-group>
@@ -872,10 +870,10 @@ export const Playground = {
872
870
  theme=${args.theme}
873
871
  >
874
872
  <ic-checkbox
875
- disabled=${args.disabled}
873
+ disabled=${args.checkboxDisabled}
876
874
  label=${args.label}
877
875
  value=${args.value}
878
- size=${args.size}
876
+ size=${args.checkboxSize}
879
877
  hide-label=${args.hideLabel}
880
878
  indeterminate=${args.indeterminate}
881
879
  checked=${checked}
@@ -889,6 +887,8 @@ export const Playground = {
889
887
  label="What's your favourite type of coffee?"
890
888
  ></ic-text-field>
891
889
  </ic-checkbox>
890
+ <ic-checkbox value="valueName2" label="Checkbox 2"></ic-checkbox>
891
+ <ic-checkbox value="valueName3" label="Checkbox 3"></ic-checkbox>
892
892
  </ic-checkbox-group>`;
893
893
  },
894
894
 
@@ -919,6 +919,14 @@ export const Playground = {
919
919
  },
920
920
  },
921
921
 
922
+ checkboxSize: {
923
+ options: ["medium", "large", "small"],
924
+
925
+ control: {
926
+ type: inlineRadioSelector,
927
+ },
928
+ },
929
+
922
930
  validationAriaLive: {
923
931
  options: ["polite", "assertive", "off"],
924
932
 
@@ -155,6 +155,7 @@ export const IconButton = {
155
155
  variant="icon-tertiary"
156
156
  aria-label="Edit"
157
157
  slot="end-component"
158
+ size="small"
158
159
  >
159
160
  <svg
160
161
  xmlns="http://www.w3.org/2000/svg"
@@ -173,6 +174,7 @@ export const IconButton = {
173
174
  variant="icon-tertiary"
174
175
  aria-label="Edit"
175
176
  slot="end-component"
177
+ size="small"
176
178
  >
177
179
  <svg
178
180
  xmlns="http://www.w3.org/2000/svg"
@@ -191,6 +193,7 @@ export const IconButton = {
191
193
  variant="icon-tertiary"
192
194
  aria-label="Edit"
193
195
  slot="end-component"
196
+ size="small"
194
197
  >
195
198
  <svg
196
199
  xmlns="http://www.w3.org/2000/svg"
@@ -209,6 +212,7 @@ export const IconButton = {
209
212
  variant="icon-tertiary"
210
213
  aria-label="Edit"
211
214
  slot="end-component"
215
+ size="small"
212
216
  >
213
217
  <svg
214
218
  xmlns="http://www.w3.org/2000/svg"
@@ -236,6 +240,7 @@ export const IconButton = {
236
240
  variant="icon-tertiary"
237
241
  aria-label="Edit"
238
242
  slot="end-component"
243
+ size="small"
239
244
  >
240
245
  <svg
241
246
  xmlns="http://www.w3.org/2000/svg"
@@ -502,6 +507,7 @@ export const Playground = {
502
507
  variant="icon-tertiary"
503
508
  aria-label="Edit"
504
509
  slot=${args.endCompSlot}
510
+ size="small"
505
511
  >
506
512
  <svg
507
513
  xmlns="http://www.w3.org/2000/svg"
@@ -448,7 +448,7 @@ video {
448
448
 
449
449
  .data {
450
450
  display: flex;
451
- align-items: center;
451
+ align-items: top;
452
452
  }
453
453
 
454
454
  .text-cells {
@@ -3,7 +3,7 @@ import { IcInformationStatus, } from "../../utils/types";
3
3
  import errorIcon from "../../assets/error-icon.svg";
4
4
  import successIcon from "../../assets/success-icon.svg";
5
5
  import warningIcon from "../../assets/warning-icon.svg";
6
- import { getInputValidationTextID, onComponentRequiredPropUndefined, } from "../../utils/helpers";
6
+ import { getInputValidationTextID } from "../../utils/helpers";
7
7
  const ICON = {
8
8
  [IcInformationStatus.Warning]: warningIcon,
9
9
  [IcInformationStatus.Error]: errorIcon,
@@ -37,20 +37,19 @@ export class InputValidation {
37
37
  }, 200); // Delay to help ensure screen readers detect change
38
38
  }
39
39
  componentDidLoad() {
40
- onComponentRequiredPropUndefined([{ prop: this.message, propName: "message" }], "Input Validation");
41
40
  this.messageEl.textContent = INVISIBLE_CHAR;
42
41
  }
43
42
  render() {
44
43
  const { ariaLiveMode, fullWidth, status, message } = this;
45
44
  const displayIcon = status !== "" ? ICON[status] : "";
46
- return (h(Host, { key: '0513b4d21426f48a3751fbb4f16786d8cdde6f30', class: {
45
+ return (h(Host, { key: '2314e8e4f655e95cee33a0717322b65a5077cc3a', class: {
47
46
  [`ic-input-validation-${status}`]: status !== "",
48
47
  "ic-input-validation-full-width": !!fullWidth,
49
48
  "ic-input-validation-with-status": status !== "",
50
- } }, displayIcon !== "" && (h("span", { key: '3e6de247d788f9836f338e109d7be5914fa2f320', class: {
49
+ } }, displayIcon !== "" && (h("span", { key: '171000e63f0d8ea96cd34e283700cfa641795419', class: {
51
50
  "status-icon": true,
52
51
  [`icon-${status}`]: true,
53
- }, innerHTML: displayIcon })), h("ic-typography", { key: '5ee4e673c1f2934d74eafbc08241cdfae1aa5f9f', variant: "caption", class: "statustext" }, h("span", { key: '850149ffb8c4cdab21ab0c05a8787747e399ca41', id: this.for && getInputValidationTextID(this.for) }, message), h("span", { key: 'a26f5aa58e81cf3e9d982d86b75b3ab7e14897ad', ref: (el) => (this.messageEl = el), class: "sr-only", "aria-live": ariaLiveMode })), h("slot", { key: '4dba13235c6ec27d634b0dd38523963798676b36', name: "validation-message-adornment" })));
52
+ }, innerHTML: displayIcon })), h("ic-typography", { key: '87c722d45b0b7c02602f65b418748b8fe890fed8', variant: "caption", class: "statustext" }, h("span", { key: 'd4440c3115b085b471b0de094cb89f9e775df5cb', id: this.for && getInputValidationTextID(this.for) }, message), h("span", { key: '3e1f4328c6ae86a01eccc0bc99a26e37af3aa4c4', ref: (el) => (this.messageEl = el), class: "sr-only", "aria-live": ariaLiveMode })), h("slot", { key: 'b042762de928907af3e92882ae2f6068a3c2808d', name: "validation-message-adornment" })));
54
53
  }
55
54
  static get is() { return "ic-input-validation"; }
56
55
  static get originalStyleUrls() {
@@ -135,11 +134,11 @@ export class InputValidation {
135
134
  "mutable": false,
136
135
  "complexType": {
137
136
  "original": "string",
138
- "resolved": "string",
137
+ "resolved": "string | undefined",
139
138
  "references": {}
140
139
  },
141
- "required": true,
142
- "optional": false,
140
+ "required": false,
141
+ "optional": true,
143
142
  "docs": {
144
143
  "tags": [],
145
144
  "text": "The validation message to display."
@@ -1 +1 @@
1
- {"version":3,"file":"ic-input-validation.js","sourceRoot":"","sources":["../../../src/components/ic-input-validation/ic-input-validation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAEL,mBAAmB,GAEpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,OAAO,EACL,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,qBAAqB,CAAC;AAE7B,MAAM,IAAI,GAAG;IACX,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,WAAW;IAC1C,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,SAAS;IACtC,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,WAAW;CAC3C,CAAC;AACF,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AAKH,MAAM,OAAO,eAAe;IAJ5B;QASE;;WAEG;QACK,iBAAY,GAAgB,QAAQ,CAAC;QAO7C;;WAEG;QACK,cAAS,GAAa,KAAK,CAAC;QAgBpC;;WAEG;QACK,WAAM,GAAgC,EAAE,CAAC;KA6ClD;IAzDC,mBAAmB,CAAC,QAAgB;QAClC,+BAA+B;QAC/B,2FAA2F;QAC3F,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,cAAc,CAAC;QAC5C,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;QACxC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,oDAAoD;IAC/D,CAAC;IAOD,gBAAgB;QACd,gCAAgC,CAC9B,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,EAC7C,kBAAkB,CACnB,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,cAAc,CAAC;IAC9C,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,CAAC,uBAAuB,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,EAAE;gBAChD,gCAAgC,EAAE,CAAC,CAAC,SAAS;gBAC7C,iCAAiC,EAAE,MAAM,KAAK,EAAE;aACjD;YAEA,WAAW,KAAK,EAAE,IAAI,CACrB,6DACE,KAAK,EAAE;oBACL,aAAa,EAAE,IAAI;oBACnB,CAAC,QAAQ,MAAM,EAAE,CAAC,EAAE,IAAI;iBACzB,EACD,SAAS,EAAE,WAAW,GACtB,CACH;YACD,sEAAe,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,YAAY;gBACjD,6DAAM,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,IACrD,OAAO,CACH;gBAEP,6DACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,EAAqB,CAAC,EACrD,KAAK,EAAC,SAAS,eACJ,YAAY,GACjB,CACM;YAChB,6DAAM,IAAI,EAAC,8BAA8B,GAAQ,CAC5C,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Element, Component, Host, Prop, h, Watch } from \"@stencil/core\";\n\nimport {\n IcAriaLive,\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n} from \"../../utils/types\";\nimport errorIcon from \"../../assets/error-icon.svg\";\nimport successIcon from \"../../assets/success-icon.svg\";\nimport warningIcon from \"../../assets/warning-icon.svg\";\n\nimport {\n getInputValidationTextID,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\n\nconst ICON = {\n [IcInformationStatus.Warning]: warningIcon,\n [IcInformationStatus.Error]: errorIcon,\n [IcInformationStatus.Success]: successIcon,\n};\nconst INVISIBLE_CHAR = \"\\u200B\";\n\n/**\n * @slot validation-message-adornment - Content will be placed to the right of the validation message.\n */\n@Component({\n tag: \"ic-input-validation\",\n styleUrl: \"ic-input-validation.css\",\n})\nexport class InputValidation {\n private messageEl!: HTMLSpanElement;\n\n @Element() el: HTMLIcInputValidationElement;\n\n /**\n * The ARIA live mode to apply to the message.\n */\n @Prop() ariaLiveMode?: IcAriaLive = \"polite\";\n\n /**\n * The ID of the form element the validation is bound to.\n */\n @Prop() for?: string;\n\n /**\n * If `true`, the input validation will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The validation message to display.\n */\n @Prop() message!: string;\n @Watch(\"message\")\n watchMessageHandler(newValue: string) {\n // Force detectable DOM changes\n // Invisible character used as screen readers can ignore whitespace changes e.g. \"\" and \" \"\n this.messageEl.textContent = INVISIBLE_CHAR;\n setTimeout(() => {\n this.messageEl.textContent = newValue;\n }, 200); // Delay to help ensure screen readers detect change\n }\n\n /**\n * The status of the validation - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() status?: IcInformationStatusOrEmpty = \"\";\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.message, propName: \"message\" }],\n \"Input Validation\"\n );\n this.messageEl.textContent = INVISIBLE_CHAR;\n }\n\n render() {\n const { ariaLiveMode, fullWidth, status, message } = this;\n const displayIcon = status !== \"\" ? ICON[status!] : \"\";\n return (\n <Host\n class={{\n [`ic-input-validation-${status}`]: status !== \"\",\n \"ic-input-validation-full-width\": !!fullWidth,\n \"ic-input-validation-with-status\": status !== \"\",\n }}\n >\n {displayIcon !== \"\" && (\n <span\n class={{\n \"status-icon\": true,\n [`icon-${status}`]: true,\n }}\n innerHTML={displayIcon}\n />\n )}\n <ic-typography variant=\"caption\" class=\"statustext\">\n <span id={this.for && getInputValidationTextID(this.for)}>\n {message}\n </span>\n {/* Separate aria-live region to avoid flashing due to textContent delay */}\n <span\n ref={(el) => (this.messageEl = el as HTMLSpanElement)}\n class=\"sr-only\"\n aria-live={ariaLiveMode}\n ></span>\n </ic-typography>\n <slot name=\"validation-message-adornment\"></slot>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-input-validation.js","sourceRoot":"","sources":["../../../src/components/ic-input-validation/ic-input-validation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEzE,OAAO,EAEL,mBAAmB,GAEpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,SAAS,MAAM,6BAA6B,CAAC;AACpD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,WAAW,MAAM,+BAA+B,CAAC;AAExD,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,MAAM,IAAI,GAAG;IACX,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,WAAW;IAC1C,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE,SAAS;IACtC,CAAC,mBAAmB,CAAC,OAAO,CAAC,EAAE,WAAW;CAC3C,CAAC;AACF,MAAM,cAAc,GAAG,QAAQ,CAAC;AAEhC;;GAEG;AAKH,MAAM,OAAO,eAAe;IAJ5B;QASE;;WAEG;QACK,iBAAY,GAAgB,QAAQ,CAAC;QAO7C;;WAEG;QACK,cAAS,GAAa,KAAK,CAAC;QAgBpC;;WAEG;QACK,WAAM,GAAgC,EAAE,CAAC;KAyClD;IArDC,mBAAmB,CAAC,QAAgB;QAClC,+BAA+B;QAC/B,2FAA2F;QAC3F,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,cAAc,CAAC;QAC5C,UAAU,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,QAAQ,CAAC;QACxC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,oDAAoD;IAC/D,CAAC;IAOD,gBAAgB;QACd,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,cAAc,CAAC;IAC9C,CAAC;IAED,MAAM;QACJ,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC1D,MAAM,WAAW,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,CAAC,uBAAuB,MAAM,EAAE,CAAC,EAAE,MAAM,KAAK,EAAE;gBAChD,gCAAgC,EAAE,CAAC,CAAC,SAAS;gBAC7C,iCAAiC,EAAE,MAAM,KAAK,EAAE;aACjD;YAEA,WAAW,KAAK,EAAE,IAAI,CACrB,6DACE,KAAK,EAAE;oBACL,aAAa,EAAE,IAAI;oBACnB,CAAC,QAAQ,MAAM,EAAE,CAAC,EAAE,IAAI;iBACzB,EACD,SAAS,EAAE,WAAW,GACtB,CACH;YACD,sEAAe,OAAO,EAAC,SAAS,EAAC,KAAK,EAAC,YAAY;gBACjD,6DAAM,EAAE,EAAE,IAAI,CAAC,GAAG,IAAI,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,IACrD,OAAO,CACH;gBAEP,6DACE,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,EAAqB,CAAC,EACrD,KAAK,EAAC,SAAS,eACJ,YAAY,GACjB,CACM;YAChB,6DAAM,IAAI,EAAC,8BAA8B,GAAQ,CAC5C,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Element, Component, Host, Prop, h, Watch } from \"@stencil/core\";\n\nimport {\n IcAriaLive,\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n} from \"../../utils/types\";\nimport errorIcon from \"../../assets/error-icon.svg\";\nimport successIcon from \"../../assets/success-icon.svg\";\nimport warningIcon from \"../../assets/warning-icon.svg\";\n\nimport { getInputValidationTextID } from \"../../utils/helpers\";\n\nconst ICON = {\n [IcInformationStatus.Warning]: warningIcon,\n [IcInformationStatus.Error]: errorIcon,\n [IcInformationStatus.Success]: successIcon,\n};\nconst INVISIBLE_CHAR = \"\\u200B\";\n\n/**\n * @slot validation-message-adornment - Content will be placed to the right of the validation message.\n */\n@Component({\n tag: \"ic-input-validation\",\n styleUrl: \"ic-input-validation.css\",\n})\nexport class InputValidation {\n private messageEl!: HTMLSpanElement;\n\n @Element() el: HTMLIcInputValidationElement;\n\n /**\n * The ARIA live mode to apply to the message.\n */\n @Prop() ariaLiveMode?: IcAriaLive = \"polite\";\n\n /**\n * The ID of the form element the validation is bound to.\n */\n @Prop() for?: string;\n\n /**\n * If `true`, the input validation will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The validation message to display.\n */\n @Prop() message?: string;\n @Watch(\"message\")\n watchMessageHandler(newValue: string) {\n // Force detectable DOM changes\n // Invisible character used as screen readers can ignore whitespace changes e.g. \"\" and \" \"\n this.messageEl.textContent = INVISIBLE_CHAR;\n setTimeout(() => {\n this.messageEl.textContent = newValue;\n }, 200); // Delay to help ensure screen readers detect change\n }\n\n /**\n * The status of the validation - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() status?: IcInformationStatusOrEmpty = \"\";\n\n componentDidLoad(): void {\n this.messageEl.textContent = INVISIBLE_CHAR;\n }\n\n render() {\n const { ariaLiveMode, fullWidth, status, message } = this;\n const displayIcon = status !== \"\" ? ICON[status!] : \"\";\n return (\n <Host\n class={{\n [`ic-input-validation-${status}`]: status !== \"\",\n \"ic-input-validation-full-width\": !!fullWidth,\n \"ic-input-validation-with-status\": status !== \"\",\n }}\n >\n {displayIcon !== \"\" && (\n <span\n class={{\n \"status-icon\": true,\n [`icon-${status}`]: true,\n }}\n innerHTML={displayIcon}\n />\n )}\n <ic-typography variant=\"caption\" class=\"statustext\">\n <span id={this.for && getInputValidationTextID(this.for)}>\n {message}\n </span>\n {/* Separate aria-live region to avoid flashing due to textContent delay */}\n <span\n ref={(el) => (this.messageEl = el as HTMLSpanElement)}\n class=\"sr-only\"\n aria-live={ariaLiveMode}\n ></span>\n </ic-typography>\n <slot name=\"validation-message-adornment\"></slot>\n </Host>\n );\n }\n}\n"]}
@@ -16,6 +16,7 @@ export class LoadingIndicator {
16
16
  r: 0,
17
17
  };
18
18
  this.clipInnerElement = false;
19
+ this.internalType = "circular";
19
20
  /**
20
21
  * The description that will be set as the aria-label of the loading indicator when not using a visible label.
21
22
  */
@@ -51,7 +52,7 @@ export class LoadingIndicator {
51
52
  */
52
53
  this.theme = "inherit";
53
54
  /**
54
- * The type of indicator, either linear or circular.
55
+ * The type of indicator, either linear or circular. When size is set to 'icon' the type will be set to circular.
55
56
  */
56
57
  this.type = "circular";
57
58
  this.getLabel = (labelIndex) => new Promise(() => {
@@ -66,7 +67,7 @@ export class LoadingIndicator {
66
67
  }, this.labelDuration);
67
68
  });
68
69
  this.getLabelVariant = () => {
69
- const width = this.type === "circular" ? this.calculateWidth() : 0;
70
+ const width = this.internalType === "circular" ? this.calculateWidth() : 0;
70
71
  if (this.size === "small" || (width && width < 60)) {
71
72
  return "label";
72
73
  }
@@ -110,6 +111,12 @@ export class LoadingIndicator {
110
111
  }
111
112
  this.innerElement.style.setProperty("--linear-width", `${proportion * 100}%`);
112
113
  };
114
+ this.setInternalType = () => {
115
+ this.internalType = this.type;
116
+ if (this.type == "linear") {
117
+ this.internalType = this.size == "icon" ? "circular" : "linear";
118
+ }
119
+ };
113
120
  this.updateLabel = () => {
114
121
  if (!this.label)
115
122
  return;
@@ -145,15 +152,19 @@ export class LoadingIndicator {
145
152
  this.updateLabel();
146
153
  }
147
154
  handleProgressChange() {
148
- if (this.type === "linear") {
155
+ if (this.internalType === "linear") {
149
156
  this.setLinearDeterminateWidth();
150
157
  }
151
158
  else {
152
159
  this.setCircleDimensions();
153
160
  }
154
161
  }
162
+ handleIconSize() {
163
+ this.setIndicatorDimensions();
164
+ }
155
165
  setIndicatorDimensions() {
156
- if (this.type === "circular") {
166
+ this.setInternalType();
167
+ if (this.internalType === "circular") {
157
168
  // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property
158
169
  const diameter = this.calculateWidth();
159
170
  if (this.outerElement && diameter !== this.circularDiameter) {
@@ -178,25 +189,25 @@ export class LoadingIndicator {
178
189
  this.setIndicatorDimensions();
179
190
  }
180
191
  render() {
181
- const { circularDiameter, circularDimensions: { x, y, r, dashArray, dashOffset }, description, fullWidth, indicatorLabel, innerLabel, label, max, min, monochrome, progress, size, theme, type, } = this;
182
- return (h(Host, { key: '8f3a698fc177a9ff0c42efa2cb0d6fde7d09f2cb', class: {
192
+ const { circularDiameter, circularDimensions: { x, y, r, dashArray, dashOffset }, description, fullWidth, indicatorLabel, innerLabel, internalType, label, max, min, monochrome, progress, size, theme, } = this;
193
+ return (h(Host, { key: '576bca57e7314a41e887f7f1e258b14563560c46', class: {
183
194
  [`ic-theme-${theme}`]: theme !== "inherit",
184
195
  "ic-loading-indicator-full-width": fullWidth,
185
196
  "ic-loading-indicator-label": !!label,
186
197
  "ic-loading-indicator-monochrome": monochrome,
187
198
  [`ic-loading-indicator-size-${size}`]: true,
188
- } }, h("div", { key: '947ed45a2a33bb3efc98be184d144c7022a99341', class: "ic-loading-container", part: "ic-loading-container" }, h("div", { key: '07cfd1daad6714aa3f0a9aa6639c62f07cd51319', ref: (el) => (this.outerElement = el), class: {
189
- [`ic-loading-${type}-outer`]: true,
199
+ } }, h("div", { key: '16ff356ffed07fe8136691d8e0753845c2430238', class: "ic-loading-container", part: "ic-loading-container" }, h("div", { key: '5124f9e43b1c0495f1e5d954c289877475a523b3', ref: (el) => (this.outerElement = el), class: {
200
+ [`ic-loading-${internalType}-outer`]: true,
190
201
  [progress === undefined ? "indeterminate" : "determinate"]: true,
191
- }, role: "progressbar", "aria-labelledby": label && size !== "icon" && "ic-loading-label", "aria-label": description, "aria-valuenow": progress, "aria-valuemin": min, "aria-valuemax": max }, h("div", { key: '784dc31419e98ce922fc71941f22a063c26ab249', ref: (el) => (this.innerElement = el), class: {
192
- [`ic-loading-${type}-inner`]: true,
202
+ }, role: "progressbar", "aria-labelledby": label && size !== "icon" && "ic-loading-label", "aria-label": description, "aria-valuenow": progress, "aria-valuemin": min, "aria-valuemax": max }, h("div", { key: 'c9cf5cacd62bbbe1373aac4d91ac81eea4020377', ref: (el) => (this.innerElement = el), class: {
203
+ [`ic-loading-${internalType}-inner`]: true,
193
204
  "inner-label": !!innerLabel,
194
- } }, innerLabel && size === "small" && (h("ic-typography", { key: '8f55830d3c41595cecfdfdb3630af8ad2b93fc1e', variant: "subtitle-small", class: "inner-text" }, innerLabel)), type === "circular" && (h("svg", { key: '5505faa38e257e69a988217685c9a466f622489b', class: "ic-loading-circular-svg", viewBox: `0 0 ${circularDiameter} ${circularDiameter}` }, h("circle", { key: 'c2f46bcb23d2af900f8b6dbfabb317172b3fdb22', cx: x, cy: y, r: r }), h("circle", { key: 'f0d9f105bda3e40c78cba1a3a2986b31ccc0327a', style: {
205
+ } }, innerLabel && size === "small" && (h("ic-typography", { key: '5c5f7a6a38f6b390d60461c245a37117e551f644', variant: "subtitle-small", class: "inner-text" }, innerLabel)), internalType === "circular" && (h("svg", { key: '3a6199bb2179195850d1fc96129f80073df3b987', class: "ic-loading-circular-svg", viewBox: `0 0 ${circularDiameter} ${circularDiameter}` }, h("circle", { key: '7a449a4379039d1e07e33aa01259e503b3b5390f', cx: x, cy: y, r: r }), h("circle", { key: '0307da67d66732d95653e87c56e10568eaf60623', style: {
195
206
  "--circular-steps-max": progress ? `${max}` : undefined,
196
207
  "--progress-value": progress !== undefined ? `${progress}` : undefined,
197
208
  "--stroke-dasharray": dashArray,
198
209
  "--stroke-dashoffset": dashOffset,
199
- }, cx: x, cy: y, r: r }))))), label && size !== "icon" && (h("ic-typography", { key: '15d34b2712a2961d2e1b8a63ab6f65a82fa68d67', id: "ic-loading-label", class: "ic-loading-label", role: "alert", variant: this.getLabelVariant() }, h("p", { key: '25130595c4008fdd8acd8c47a6729d3aef5cf70c' }, indicatorLabel))))));
210
+ }, cx: x, cy: y, r: r }))))), label && size !== "icon" && (h("ic-typography", { key: 'f24cde659281c195321e185fe95f8afc1c655ad9', id: "ic-loading-label", class: "ic-loading-label", role: "alert", variant: this.getLabelVariant() }, h("p", { key: '17d96b5a351f90e17e939b37478e9da2d089857c' }, indicatorLabel))))));
200
211
  }
201
212
  static get is() { return "ic-loading-indicator"; }
202
213
  static get encapsulation() { return "shadow"; }
@@ -462,7 +473,7 @@ export class LoadingIndicator {
462
473
  "optional": false,
463
474
  "docs": {
464
475
  "tags": [],
465
- "text": "The type of indicator, either linear or circular."
476
+ "text": "The type of indicator, either linear or circular. When size is set to 'icon' the type will be set to circular."
466
477
  },
467
478
  "getter": false,
468
479
  "setter": false,
@@ -478,7 +489,8 @@ export class LoadingIndicator {
478
489
  "circularLineWidth": {},
479
490
  "circularDimensions": {},
480
491
  "indicatorLabel": {},
481
- "clipInnerElement": {}
492
+ "clipInnerElement": {},
493
+ "internalType": {}
482
494
  };
483
495
  }
484
496
  static get elementRef() { return "el"; }
@@ -495,6 +507,9 @@ export class LoadingIndicator {
495
507
  }, {
496
508
  "propName": "progress",
497
509
  "methodName": "handleProgressChange"
510
+ }, {
511
+ "propName": "size",
512
+ "methodName": "handleIconSize"
498
513
  }, {
499
514
  "propName": "type",
500
515
  "methodName": "setIndicatorDimensions"
@@ -1 +1 @@
1
- {"version":3,"file":"ic-loading-indicator.js","sourceRoot":"","sources":["../../../src/components/ic-loading-indicator/ic-loading-indicator.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\nimport {\n IcLoadingCircleXYR,\n IcLoadingSizes,\n IcLoadingTypes,\n} from \"./ic-loading-indicator.types\";\nimport { IcThemeMode } from \"../../utils/types\";\n\nconst LOADING_INDICATOR_WIDTHS = {\n large: 120,\n medium: 80,\n small: 40,\n icon: 20,\n};\n\n@Component({\n tag: \"ic-loading-indicator\",\n styleUrl: \"ic-loading-indicator.css\",\n shadow: true,\n})\nexport class LoadingIndicator {\n private innerElement?: HTMLDivElement;\n private interval: ReturnType<typeof setInterval>;\n private labelList: string[] = [];\n private outerElement?: HTMLDivElement;\n\n @Element() el: HTMLIcLoadingIndicatorElement;\n\n @State() circularDiameter = 0;\n @State() circularLineWidth = 0;\n @State() circularDimensions: IcLoadingCircleXYR = {\n x: 0,\n y: 0,\n r: 0,\n };\n @State() indicatorLabel?: string;\n @State() clipInnerElement = false;\n\n /**\n * The description that will be set as the aria-label of the loading indicator when not using a visible label.\n */\n @Prop() description = \"Loading\";\n\n /**\n * If `true`, when linear, the full-width variant (i.e. without a border radius) will be displayed.\n */\n @Prop({ reflect: true }) fullWidth = false;\n\n /**\n * @internal The step number of a compact step, managed by ic-step.\n */\n @Prop() innerLabel?: number;\n\n /**\n * The label to be displayed beneath the loading indicator.\n * Display a changing label by supplying an array of messages.\n */\n @Prop() label?: string | string[];\n @Watch(\"label\")\n watchPropHandler(): void {\n this.updateLabel();\n }\n\n /**\n * The time in milliseconds before the label changes.\n */\n @Prop() labelDuration = 8000;\n\n /**\n * The maximum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() max = 100;\n\n /**\n * The minimum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() min = 0;\n\n /**\n * If `true`, the element will display as black and white.\n */\n @Prop() monochrome = false;\n\n /**\n * The current amount of progress made.\n * If not provided, component acts as an indeterminate loading indicator.\n */\n @Prop() progress?: number;\n @Watch(\"max\")\n @Watch(\"min\")\n @Watch(\"progress\")\n handleProgressChange(): void {\n if (this.type === \"linear\") {\n this.setLinearDeterminateWidth();\n } else {\n this.setCircleDimensions();\n }\n }\n\n /**\n * The size of the loading indicator.\n */\n @Prop({ reflect: true }) size: IcLoadingSizes = \"medium\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * The type of indicator, either linear or circular.\n */\n @Prop({ reflect: true }) type: IcLoadingTypes = \"circular\";\n @Watch(\"type\")\n setIndicatorDimensions(): void {\n if (this.type === \"circular\") {\n // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property\n const diameter = this.calculateWidth();\n if (this.outerElement && diameter !== this.circularDiameter) {\n this.circularLineWidth = diameter * 0.1;\n this.circularDiameter = diameter;\n this.outerElement.style.setProperty(\n \"--circular-line-width\",\n `${this.circularLineWidth}px`\n );\n }\n this.setCircleDimensions();\n } else {\n this.setLinearDeterminateWidth();\n }\n }\n\n disconnectedCallback(): void {\n clearInterval(this.interval);\n }\n\n componentWillLoad(): void {\n this.updateLabel();\n this.el.setAttribute(\"exportparts\", \"ic-loading-container\");\n }\n\n componentDidLoad(): void {\n this.setIndicatorDimensions();\n }\n\n private getLabel = (labelIndex: number) =>\n new Promise(() => {\n this.interval = setInterval(() => {\n if (labelIndex < this.labelList.length - 1) {\n labelIndex++;\n } else {\n labelIndex = 0;\n }\n this.indicatorLabel = this.labelList[labelIndex];\n }, this.labelDuration);\n });\n\n private getLabelVariant = () => {\n const width = this.type === \"circular\" ? this.calculateWidth() : 0;\n\n if (this.size === \"small\" || (width && width < 60)) {\n return \"label\";\n } else if (this.size === \"large\" || width >= 120) {\n return \"h2\";\n }\n return \"h4\";\n };\n\n private calculateWidth = () => {\n if (this.outerElement?.offsetWidth) return this.outerElement.offsetWidth;\n\n if (this.outerElement) {\n const { width } = window.getComputedStyle(this.outerElement);\n\n if (width) {\n // Regex to check the units of the css string\n if (width.match(/\\D+$/)?.[0] !== \"%\") return parseFloat(width);\n\n const parentWidth = this.outerElement.parentElement?.offsetWidth;\n if (parentWidth) return parentWidth * (parseFloat(width) / 100);\n }\n }\n\n return LOADING_INDICATOR_WIDTHS[this.size];\n };\n\n private calculateProportion = (progress: number) => {\n const minProgress = Math.min(this.max, Math.max(this.min, progress));\n return (minProgress - this.min) / (this.max - this.min);\n };\n\n private setLinearDeterminateWidth = () => {\n // Ensure progress cannot be out of bounds\n if (!this.innerElement || !this.progress) return;\n\n const proportion = this.calculateProportion(this.progress);\n this.clipInnerElement = proportion > 0.5;\n if (this.clipInnerElement) {\n this.innerElement.classList.remove(\"clip\");\n } else {\n this.innerElement.classList.add(\"clip\");\n }\n this.innerElement.style.setProperty(\n \"--linear-width\",\n `${proportion * 100}%`\n );\n };\n\n private updateLabel = () => {\n if (!this.label) return;\n\n if (typeof this.label === \"string\") {\n this.indicatorLabel = this.label;\n } else {\n this.labelList = this.label;\n this.indicatorLabel = this.labelList[0];\n if (this.labelList.length > 1) {\n this.getLabel(0);\n }\n }\n };\n\n private setCircleDimensions = () => {\n if (this.circularDiameter <= 0) return;\n\n const r = this.circularDiameter / 2;\n const nextRadius = r - this.circularLineWidth / 2;\n const dashArray = 2 * Math.PI * nextRadius;\n\n this.circularDimensions = {\n x: r,\n y: r,\n r: nextRadius,\n dashArray: `${dashArray}px`,\n dashOffset: this.progress\n ? `${(-1 - this.calculateProportion(this.progress)) * dashArray}px`\n : undefined,\n };\n };\n\n render() {\n const {\n circularDiameter,\n circularDimensions: { x, y, r, dashArray, dashOffset },\n description,\n fullWidth,\n indicatorLabel,\n innerLabel,\n label,\n max,\n min,\n monochrome,\n progress,\n size,\n theme,\n type,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n \"ic-loading-indicator-full-width\": fullWidth,\n \"ic-loading-indicator-label\": !!label,\n \"ic-loading-indicator-monochrome\": monochrome,\n [`ic-loading-indicator-size-${size}`]: true,\n }}\n >\n <div class=\"ic-loading-container\" part=\"ic-loading-container\">\n <div\n ref={(el) => (this.outerElement = el)}\n class={{\n [`ic-loading-${type}-outer`]: true,\n [progress === undefined ? \"indeterminate\" : \"determinate\"]: true,\n }}\n role=\"progressbar\"\n aria-labelledby={label && size !== \"icon\" && \"ic-loading-label\"}\n aria-label={description}\n aria-valuenow={progress}\n aria-valuemin={min}\n aria-valuemax={max}\n >\n <div\n ref={(el) => (this.innerElement = el)}\n class={{\n [`ic-loading-${type}-inner`]: true,\n \"inner-label\": !!innerLabel,\n }}\n >\n {innerLabel && size === \"small\" && (\n <ic-typography variant=\"subtitle-small\" class=\"inner-text\">\n {innerLabel}\n </ic-typography>\n )}\n {type === \"circular\" && (\n <svg\n class=\"ic-loading-circular-svg\"\n viewBox={`0 0 ${circularDiameter} ${circularDiameter}`}\n >\n <circle cx={x} cy={y} r={r}></circle>\n <circle\n style={{\n \"--circular-steps-max\": progress ? `${max}` : undefined,\n \"--progress-value\":\n progress !== undefined ? `${progress}` : undefined,\n \"--stroke-dasharray\": dashArray,\n \"--stroke-dashoffset\": dashOffset,\n }}\n cx={x}\n cy={y}\n r={r}\n ></circle>\n </svg>\n )}\n </div>\n </div>\n {label && size !== \"icon\" && (\n <ic-typography\n id=\"ic-loading-label\"\n class=\"ic-loading-label\"\n role=\"alert\"\n variant={this.getLabelVariant()}\n >\n <p>{indicatorLabel}</p>\n </ic-typography>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-loading-indicator.js","sourceRoot":"","sources":["../../../src/components/ic-loading-indicator/ic-loading-indicator.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, h, Host, Prop, State, Watch } from \"@stencil/core\";\nimport {\n IcLoadingCircleXYR,\n IcLoadingSizes,\n IcLoadingTypes,\n} from \"./ic-loading-indicator.types\";\nimport { IcThemeMode } from \"../../utils/types\";\n\nconst LOADING_INDICATOR_WIDTHS = {\n large: 120,\n medium: 80,\n small: 40,\n icon: 20,\n};\n\n@Component({\n tag: \"ic-loading-indicator\",\n styleUrl: \"ic-loading-indicator.css\",\n shadow: true,\n})\nexport class LoadingIndicator {\n private innerElement?: HTMLDivElement;\n private interval: ReturnType<typeof setInterval>;\n private labelList: string[] = [];\n private outerElement?: HTMLDivElement;\n\n @Element() el: HTMLIcLoadingIndicatorElement;\n\n @State() circularDiameter = 0;\n @State() circularLineWidth = 0;\n @State() circularDimensions: IcLoadingCircleXYR = {\n x: 0,\n y: 0,\n r: 0,\n };\n @State() indicatorLabel?: string;\n @State() clipInnerElement = false;\n @State() internalType: IcLoadingTypes = \"circular\";\n\n /**\n * The description that will be set as the aria-label of the loading indicator when not using a visible label.\n */\n @Prop() description = \"Loading\";\n\n /**\n * If `true`, when linear, the full-width variant (i.e. without a border radius) will be displayed.\n */\n @Prop({ reflect: true }) fullWidth = false;\n\n /**\n * @internal The step number of a compact step, managed by ic-step.\n */\n @Prop() innerLabel?: number;\n\n /**\n * The label to be displayed beneath the loading indicator.\n * Display a changing label by supplying an array of messages.\n */\n @Prop() label?: string | string[];\n @Watch(\"label\")\n watchPropHandler(): void {\n this.updateLabel();\n }\n\n /**\n * The time in milliseconds before the label changes.\n */\n @Prop() labelDuration = 8000;\n\n /**\n * The maximum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() max = 100;\n\n /**\n * The minimum value that the progress value can take.\n * Used to calculate the proportional width of the progress bar.\n */\n @Prop() min = 0;\n\n /**\n * If `true`, the element will display as black and white.\n */\n @Prop() monochrome = false;\n\n /**\n * The current amount of progress made.\n * If not provided, component acts as an indeterminate loading indicator.\n */\n @Prop() progress?: number;\n @Watch(\"max\")\n @Watch(\"min\")\n @Watch(\"progress\")\n handleProgressChange(): void {\n if (this.internalType === \"linear\") {\n this.setLinearDeterminateWidth();\n } else {\n this.setCircleDimensions();\n }\n }\n\n /**\n * The size of the loading indicator.\n */\n @Prop({ reflect: true }) size: IcLoadingSizes = \"medium\";\n @Watch(\"size\")\n handleIconSize(): void {\n this.setIndicatorDimensions();\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * The type of indicator, either linear or circular. When size is set to 'icon' the type will be set to circular.\n */\n @Prop({ reflect: true }) type: IcLoadingTypes = \"circular\";\n @Watch(\"type\")\n setIndicatorDimensions(): void {\n this.setInternalType();\n if (this.internalType === \"circular\") {\n // Sets the circular indicator line width - accounting for the circle size being altered using the CSS custom property\n const diameter = this.calculateWidth();\n if (this.outerElement && diameter !== this.circularDiameter) {\n this.circularLineWidth = diameter * 0.1;\n this.circularDiameter = diameter;\n this.outerElement.style.setProperty(\n \"--circular-line-width\",\n `${this.circularLineWidth}px`\n );\n }\n this.setCircleDimensions();\n } else {\n this.setLinearDeterminateWidth();\n }\n }\n\n disconnectedCallback(): void {\n clearInterval(this.interval);\n }\n\n componentWillLoad(): void {\n this.updateLabel();\n this.el.setAttribute(\"exportparts\", \"ic-loading-container\");\n }\n\n componentDidLoad(): void {\n this.setIndicatorDimensions();\n }\n\n private getLabel = (labelIndex: number) =>\n new Promise(() => {\n this.interval = setInterval(() => {\n if (labelIndex < this.labelList.length - 1) {\n labelIndex++;\n } else {\n labelIndex = 0;\n }\n this.indicatorLabel = this.labelList[labelIndex];\n }, this.labelDuration);\n });\n\n private getLabelVariant = () => {\n const width = this.internalType === \"circular\" ? this.calculateWidth() : 0;\n\n if (this.size === \"small\" || (width && width < 60)) {\n return \"label\";\n } else if (this.size === \"large\" || width >= 120) {\n return \"h2\";\n }\n return \"h4\";\n };\n\n private calculateWidth = () => {\n if (this.outerElement?.offsetWidth) return this.outerElement.offsetWidth;\n\n if (this.outerElement) {\n const { width } = window.getComputedStyle(this.outerElement);\n\n if (width) {\n // Regex to check the units of the css string\n if (width.match(/\\D+$/)?.[0] !== \"%\") return parseFloat(width);\n\n const parentWidth = this.outerElement.parentElement?.offsetWidth;\n if (parentWidth) return parentWidth * (parseFloat(width) / 100);\n }\n }\n\n return LOADING_INDICATOR_WIDTHS[this.size];\n };\n\n private calculateProportion = (progress: number) => {\n const minProgress = Math.min(this.max, Math.max(this.min, progress));\n return (minProgress - this.min) / (this.max - this.min);\n };\n\n private setLinearDeterminateWidth = () => {\n // Ensure progress cannot be out of bounds\n if (!this.innerElement || !this.progress) return;\n\n const proportion = this.calculateProportion(this.progress);\n this.clipInnerElement = proportion > 0.5;\n if (this.clipInnerElement) {\n this.innerElement.classList.remove(\"clip\");\n } else {\n this.innerElement.classList.add(\"clip\");\n }\n this.innerElement.style.setProperty(\n \"--linear-width\",\n `${proportion * 100}%`\n );\n };\n\n private setInternalType = () => {\n this.internalType = this.type;\n if (this.type == \"linear\") {\n this.internalType = this.size == \"icon\" ? \"circular\" : \"linear\";\n }\n };\n\n private updateLabel = () => {\n if (!this.label) return;\n\n if (typeof this.label === \"string\") {\n this.indicatorLabel = this.label;\n } else {\n this.labelList = this.label;\n this.indicatorLabel = this.labelList[0];\n if (this.labelList.length > 1) {\n this.getLabel(0);\n }\n }\n };\n\n private setCircleDimensions = () => {\n if (this.circularDiameter <= 0) return;\n\n const r = this.circularDiameter / 2;\n const nextRadius = r - this.circularLineWidth / 2;\n const dashArray = 2 * Math.PI * nextRadius;\n\n this.circularDimensions = {\n x: r,\n y: r,\n r: nextRadius,\n dashArray: `${dashArray}px`,\n dashOffset: this.progress\n ? `${(-1 - this.calculateProportion(this.progress)) * dashArray}px`\n : undefined,\n };\n };\n\n render() {\n const {\n circularDiameter,\n circularDimensions: { x, y, r, dashArray, dashOffset },\n description,\n fullWidth,\n indicatorLabel,\n innerLabel,\n internalType,\n label,\n max,\n min,\n monochrome,\n progress,\n size,\n theme,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n \"ic-loading-indicator-full-width\": fullWidth,\n \"ic-loading-indicator-label\": !!label,\n \"ic-loading-indicator-monochrome\": monochrome,\n [`ic-loading-indicator-size-${size}`]: true,\n }}\n >\n <div class=\"ic-loading-container\" part=\"ic-loading-container\">\n <div\n ref={(el) => (this.outerElement = el)}\n class={{\n [`ic-loading-${internalType}-outer`]: true,\n [progress === undefined ? \"indeterminate\" : \"determinate\"]: true,\n }}\n role=\"progressbar\"\n aria-labelledby={label && size !== \"icon\" && \"ic-loading-label\"}\n aria-label={description}\n aria-valuenow={progress}\n aria-valuemin={min}\n aria-valuemax={max}\n >\n <div\n ref={(el) => (this.innerElement = el)}\n class={{\n [`ic-loading-${internalType}-inner`]: true,\n \"inner-label\": !!innerLabel,\n }}\n >\n {innerLabel && size === \"small\" && (\n <ic-typography variant=\"subtitle-small\" class=\"inner-text\">\n {innerLabel}\n </ic-typography>\n )}\n {internalType === \"circular\" && (\n <svg\n class=\"ic-loading-circular-svg\"\n viewBox={`0 0 ${circularDiameter} ${circularDiameter}`}\n >\n <circle cx={x} cy={y} r={r}></circle>\n <circle\n style={{\n \"--circular-steps-max\": progress ? `${max}` : undefined,\n \"--progress-value\":\n progress !== undefined ? `${progress}` : undefined,\n \"--stroke-dasharray\": dashArray,\n \"--stroke-dashoffset\": dashOffset,\n }}\n cx={x}\n cy={y}\n r={r}\n ></circle>\n </svg>\n )}\n </div>\n </div>\n {label && size !== \"icon\" && (\n <ic-typography\n id=\"ic-loading-label\"\n class=\"ic-loading-label\"\n role=\"alert\"\n variant={this.getLabelVariant()}\n >\n <p>{indicatorLabel}</p>\n </ic-typography>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -614,7 +614,7 @@ video {
614
614
  height: var(--ic-space-md);
615
615
  width: var(--ic-space-md);
616
616
  margin-top: var(--ic-space-xxs);
617
- margin-right: var(--ic-space-xxxs);
617
+ margin-right: var(--ic-space-xxs);
618
618
  }
619
619
 
620
620
  .option-text-container {
@@ -286,12 +286,12 @@ export const CustomComponents = {
286
286
  component: \`<ic-status-tag label="Neutral status"></ic-status-tag>\`,
287
287
  ariaLabel: "Neutral status tag",
288
288
  },
289
- icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000"><g><path d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" /></g></svg>\`,
289
+ icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><g><path d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" /></g></svg>\`,
290
290
  },
291
291
  {
292
292
  label: "Americano",
293
293
  value: "Ame",
294
- icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000">
294
+ icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
295
295
  <g>
296
296
  <path d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" />
297
297
  </g>
@@ -868,7 +868,7 @@ export const Playground = {
868
868
  height="24px"
869
869
  viewBox="0 0 24 24"
870
870
  width="24px"
871
- fill="#000000"
871
+ fill="currentColor"
872
872
  >
873
873
  <path d="M0 0h24v24H0z" fill="none" />
874
874
  <path
@@ -232,12 +232,12 @@ export const CustomComponents = {
232
232
  component: \`<ic-status-tag label="Success status" status="success"></ic-status-tag>\`,
233
233
  ariaLabel: "Success status tag",
234
234
  },
235
- icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000"><g><path d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" /></g></svg>\`,
235
+ icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><g><path d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" /></g></svg>\`,
236
236
  },
237
237
  {
238
238
  label: "Americano",
239
239
  value: "Ame",
240
- icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000">
240
+ icon: \`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
241
241
  <g>
242
242
  <path d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" />
243
243
  </g>
@@ -896,7 +896,7 @@ export const Playground = {
896
896
  height="24px"
897
897
  viewBox="0 0 24 24"
898
898
  width="24px"
899
- fill="#000000"
899
+ fill="currentColor"
900
900
  >
901
901
  <path d="M0 0h24v24H0z" fill="none" />
902
902
  <path
@@ -4,6 +4,11 @@ const DEFAULT_HEIGHTS = {
4
4
  circle: "25px",
5
5
  rectangle: "93px",
6
6
  };
7
+ const DEFAULT_WIDTHS = {
8
+ text: "260px",
9
+ circle: "25px",
10
+ rectangle: "260px",
11
+ };
7
12
  export class Skeleton {
8
13
  constructor() {
9
14
  /**
@@ -16,18 +21,28 @@ export class Skeleton {
16
21
  this.variant = "rectangle";
17
22
  }
18
23
  render() {
19
- const { variant, theme, el } = this;
24
+ const { variant = "rectangle", theme, el } = this;
25
+ let height = this.height;
26
+ let width = this.width;
27
+ if (variant === "circle") {
28
+ if (height && !width) {
29
+ width = height;
30
+ }
31
+ else if (width && !height) {
32
+ height = width;
33
+ }
34
+ }
20
35
  const style = !el.firstElementChild
21
36
  ? {
22
- height: el.style.height || DEFAULT_HEIGHTS[variant],
23
- width: el.style.width || (variant === "circle" ? "25px" : "260px"),
37
+ height: el.style.height || height || DEFAULT_HEIGHTS[variant],
38
+ width: el.style.width || width || DEFAULT_WIDTHS[variant],
24
39
  }
25
40
  : undefined;
26
- return (h(Host, { key: '2f2a4aaef02912dae3994346722c17a7bb7862c4', class: {
41
+ return (h(Host, { key: '3cb324b15256dfa0f641621061b5c9a0a102da61', class: {
27
42
  skeleton: true,
28
43
  "ic-skeleton-circle": variant === "circle",
29
44
  [`ic-theme-${theme}`]: theme !== "inherit",
30
- }, style: style, "aria-disabled": "true" }, h("slot", { key: 'f483005261989c75b36bd880d09f855aa4152ca3' })));
45
+ }, style: style, "aria-disabled": "true" }, h("slot", { key: '93a1efa371acaf2aaff6674198e4083a4cf21862' })));
31
46
  }
32
47
  static get is() { return "ic-skeleton"; }
33
48
  static get encapsulation() { return "shadow"; }
@@ -94,6 +109,44 @@ export class Skeleton {
94
109
  "attribute": "variant",
95
110
  "reflect": false,
96
111
  "defaultValue": "\"rectangle\""
112
+ },
113
+ "height": {
114
+ "type": "string",
115
+ "mutable": false,
116
+ "complexType": {
117
+ "original": "string",
118
+ "resolved": "string | undefined",
119
+ "references": {}
120
+ },
121
+ "required": false,
122
+ "optional": true,
123
+ "docs": {
124
+ "tags": [],
125
+ "text": "Height of the skeleton. Accepts any valid CSS length (e.g. \"24px\", \"2rem\", \"100%\")."
126
+ },
127
+ "getter": false,
128
+ "setter": false,
129
+ "attribute": "height",
130
+ "reflect": false
131
+ },
132
+ "width": {
133
+ "type": "string",
134
+ "mutable": false,
135
+ "complexType": {
136
+ "original": "string",
137
+ "resolved": "string | undefined",
138
+ "references": {}
139
+ },
140
+ "required": false,
141
+ "optional": true,
142
+ "docs": {
143
+ "tags": [],
144
+ "text": "Width of the skeleton. Accepts any valid CSS length (e.g. \"24px\", \"2rem\", \"100%\")."
145
+ },
146
+ "getter": false,
147
+ "setter": false,
148
+ "attribute": "width",
149
+ "reflect": false
97
150
  }
98
151
  };
99
152
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ic-skeleton.js","sourceRoot":"","sources":["../../../src/components/ic-skeleton/ic-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAIlE,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,MAAM;CAClB,CAAC;AAOF,MAAM,OAAO,QAAQ;IALrB;QAQE;;WAEG;QACK,UAAK,GAAiB,SAAS,CAAC;QAExC;;WAEG;QACK,YAAO,GAAwB,WAAW,CAAC;KA0BpD;IAxBC,MAAM;QACJ,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAEpC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,iBAAiB;YACjC,CAAC,CAAC;gBACE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,eAAe,CAAC,OAAQ,CAAC;gBACpD,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;aACnE;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,OAAO,KAAK,QAAQ;gBAC1C,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,SAAS;aAC3C,EACD,KAAK,EAAE,KAAK,mBACE,MAAM;YAEpB,8DAAQ,CACH,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Host, Prop, h } from \"@stencil/core\";\nimport { IcSkeletonVariants } from \"./ic-skeleton.types\";\nimport { IcThemeMode } from \"../../utils/types\";\n\nconst DEFAULT_HEIGHTS = {\n text: \"1em\",\n circle: \"25px\",\n rectangle: \"93px\",\n};\n\n@Component({\n tag: \"ic-skeleton\",\n styleUrl: \"ic-skeleton.css\",\n shadow: true,\n})\nexport class Skeleton {\n @Element() el: HTMLIcSkeletonElement;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The variant of the skeleton that will be displayed.\n */\n @Prop() variant?: IcSkeletonVariants = \"rectangle\";\n\n render() {\n const { variant, theme, el } = this;\n\n const style = !el.firstElementChild\n ? {\n height: el.style.height || DEFAULT_HEIGHTS[variant!],\n width: el.style.width || (variant === \"circle\" ? \"25px\" : \"260px\"),\n }\n : undefined;\n\n return (\n <Host\n class={{\n skeleton: true,\n \"ic-skeleton-circle\": variant === \"circle\",\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n style={style}\n aria-disabled=\"true\"\n >\n <slot />\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-skeleton.js","sourceRoot":"","sources":["../../../src/components/ic-skeleton/ic-skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAIlE,MAAM,eAAe,GAAG;IACtB,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,MAAM;CAClB,CAAC;AAEF,MAAM,cAAc,GAAG;IACrB,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,OAAO;CACnB,CAAC;AAOF,MAAM,OAAO,QAAQ;IALrB;QAQE;;WAEG;QACK,UAAK,GAAiB,SAAS,CAAC;QAExC;;WAEG;QACK,YAAO,GAAwB,WAAW,CAAC;KA+CpD;IAnCC,MAAM;QACJ,MAAM,EAAE,OAAO,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;QAElD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAEvB,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;YACzB,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;gBACrB,KAAK,GAAG,MAAM,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,GAAG,KAAK,CAAC;YACjB,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC,iBAAiB;YACjC,CAAC,CAAC;gBACE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,MAAM,IAAI,eAAe,CAAC,OAAQ,CAAC;gBAC9D,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,cAAc,CAAC,OAAQ,CAAC;aAC3D;YACH,CAAC,CAAC,SAAS,CAAC;QAEd,OAAO,CACL,EAAC,IAAI,qDACH,KAAK,EAAE;gBACL,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,OAAO,KAAK,QAAQ;gBAC1C,CAAC,YAAY,KAAK,EAAE,CAAC,EAAE,KAAK,KAAK,SAAS;aAC3C,EACD,KAAK,EAAE,KAAK,mBACE,MAAM;YAEpB,8DAAQ,CACH,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Element, Host, Prop, h } from \"@stencil/core\";\nimport { IcSkeletonVariants } from \"./ic-skeleton.types\";\nimport { IcThemeMode } from \"../../utils/types\";\n\nconst DEFAULT_HEIGHTS = {\n text: \"1em\",\n circle: \"25px\",\n rectangle: \"93px\",\n};\n\nconst DEFAULT_WIDTHS = {\n text: \"260px\",\n circle: \"25px\",\n rectangle: \"260px\",\n};\n\n@Component({\n tag: \"ic-skeleton\",\n styleUrl: \"ic-skeleton.css\",\n shadow: true,\n})\nexport class Skeleton {\n @Element() el: HTMLIcSkeletonElement;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The variant of the skeleton that will be displayed.\n */\n @Prop() variant?: IcSkeletonVariants = \"rectangle\";\n\n /**\n * Height of the skeleton. Accepts any valid CSS length (e.g. \"24px\", \"2rem\", \"100%\").\n */\n @Prop() height?: string;\n\n /**\n * Width of the skeleton. Accepts any valid CSS length (e.g. \"24px\", \"2rem\", \"100%\").\n */\n @Prop() width?: string;\n\n render() {\n const { variant = \"rectangle\", theme, el } = this;\n\n let height = this.height;\n let width = this.width;\n\n if (variant === \"circle\") {\n if (height && !width) {\n width = height;\n } else if (width && !height) {\n height = width;\n }\n }\n\n const style = !el.firstElementChild\n ? {\n height: el.style.height || height || DEFAULT_HEIGHTS[variant!],\n width: el.style.width || width || DEFAULT_WIDTHS[variant!],\n }\n : undefined;\n\n return (\n <Host\n class={{\n skeleton: true,\n \"ic-skeleton-circle\": variant === \"circle\",\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n style={style}\n aria-disabled=\"true\"\n >\n <slot />\n </Host>\n );\n }\n}\n"]}
@@ -3,6 +3,8 @@ import { html } from "lit-html";
3
3
  const defaultArgs = {
4
4
  theme: "inherit",
5
5
  variant: "rectangle",
6
+ height: "93px",
7
+ width: "260px",
6
8
  };
7
9
 
8
10
  export default {
@@ -113,9 +115,8 @@ export const Playground = {
113
115
  <ic-skeleton
114
116
  theme=${args.theme}
115
117
  variant=${args.variant}
116
- style="height: ${args.variant == "circle"
117
- ? "20px"
118
- : ""};width:${args.variant == "circle" ? "20px" : ""};"
118
+ height=${args.height}
119
+ width=${args.width}
119
120
  ></ic-skeleton>
120
121
  </div>`,
121
122