@nova-design-system/nova-webcomponents 3.20.0 → 3.21.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 (178) hide show
  1. package/dist/cjs/index-93d3b2f8.js +4 -0
  2. package/dist/cjs/index.cjs.js +1 -2
  3. package/dist/cjs/index.cjs.js.map +1 -1
  4. package/dist/cjs/loader.cjs.js +1 -1
  5. package/dist/cjs/native.cjs.js +1 -1
  6. package/dist/cjs/nv-button.cjs.entry.js +7 -2
  7. package/dist/cjs/nv-button.cjs.entry.js.map +1 -1
  8. package/dist/cjs/nv-datagrid.cjs.entry.js +2 -2
  9. package/dist/cjs/nv-datagrid.cjs.entry.js.map +1 -1
  10. package/dist/cjs/nv-dialog.cjs.entry.js +1 -1
  11. package/dist/cjs/nv-dialog.cjs.entry.js.map +1 -1
  12. package/dist/cjs/nv-icon.cjs.entry.js +1 -1
  13. package/dist/cjs/nv-icon.cjs.entry.js.map +1 -1
  14. package/dist/cjs/nv-iconbutton_2.cjs.entry.js +6 -1
  15. package/dist/cjs/nv-iconbutton_2.cjs.entry.js.map +1 -1
  16. package/dist/cjs/nv-tableheader.cjs.entry.js +77 -0
  17. package/dist/cjs/nv-tableheader.cjs.entry.js.map +1 -0
  18. package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
  19. package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
  20. package/dist/cjs/nv-togglebutton.cjs.entry.js.map +1 -1
  21. package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +1 -1
  22. package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
  23. package/dist/collection/collection-manifest.json +1 -0
  24. package/dist/collection/components/nv-button/nv-button.js +26 -1
  25. package/dist/collection/components/nv-button/nv-button.js.map +1 -1
  26. package/dist/collection/components/nv-button/styles/nv-button.css +4 -0
  27. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +1 -1
  28. package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
  29. package/dist/collection/components/nv-datagrid/nv-datagrid.js +4 -2
  30. package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
  31. package/dist/collection/components/nv-dialog/nv-dialog.css +1 -0
  32. package/dist/collection/components/nv-icon/nv-icons.js +1 -2
  33. package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
  34. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +26 -1
  35. package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
  36. package/dist/collection/components/nv-menuitem/nv-menuitem.js +1 -1
  37. package/dist/collection/components/nv-table/nv-table.docs.js +7 -0
  38. package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
  39. package/dist/collection/components/nv-tableheader/nv-tableheader.css +28 -0
  40. package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js +13 -0
  41. package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js.map +1 -0
  42. package/dist/collection/components/nv-tableheader/nv-tableheader.js +139 -0
  43. package/dist/collection/components/nv-tableheader/nv-tableheader.js.map +1 -0
  44. package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
  45. package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
  46. package/dist/collection/components/nv-togglebutton/styles/nv-togglebutton.css +4 -0
  47. package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +1 -1
  48. package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
  49. package/dist/components/index.js +1 -2
  50. package/dist/components/index.js.map +1 -1
  51. package/dist/components/nv-accordion-item.js +1 -1
  52. package/dist/components/nv-accordion.js +3 -3
  53. package/dist/components/nv-alert.js +1 -1
  54. package/dist/components/nv-avatar.js +1 -1
  55. package/dist/components/nv-badge.js +1 -1
  56. package/dist/components/nv-breadcrumb.js +1 -1
  57. package/dist/components/nv-button.js +1 -1
  58. package/dist/components/nv-datagrid.js +4 -4
  59. package/dist/components/nv-datagrid.js.map +1 -1
  60. package/dist/components/nv-dialog.js +4 -4
  61. package/dist/components/nv-dialog.js.map +1 -1
  62. package/dist/components/nv-dialogfooter.js +1 -1
  63. package/dist/components/nv-fielddate.js +2 -2
  64. package/dist/components/nv-fielddaterange.js +2 -2
  65. package/dist/components/nv-fielddropdown.js +3 -3
  66. package/dist/components/nv-fielddropdownitem.js +1 -1
  67. package/dist/components/nv-fieldmultiselect.js +3 -3
  68. package/dist/components/nv-fieldnumber.js +1 -1
  69. package/dist/components/nv-fieldpassword.js +2 -2
  70. package/dist/components/nv-fieldselect.js +2 -2
  71. package/dist/components/nv-fieldslider.js +3 -3
  72. package/dist/components/nv-fieldtext.js +1 -1
  73. package/dist/components/nv-fieldtime.js +2 -2
  74. package/dist/components/nv-icon.js +1 -1
  75. package/dist/components/nv-iconbutton.js +1 -1
  76. package/dist/components/nv-menu.js +2 -2
  77. package/dist/components/nv-menuitem.js +1 -1
  78. package/dist/components/nv-notification.js +1 -1
  79. package/dist/components/nv-tableheader.d.ts +11 -0
  80. package/dist/components/nv-tableheader.js +112 -0
  81. package/dist/components/nv-tableheader.js.map +1 -0
  82. package/dist/components/nv-toggle.js +2 -2
  83. package/dist/components/nv-togglebutton.js +2 -2
  84. package/dist/components/nv-togglebutton.js.map +1 -1
  85. package/dist/components/nv-togglebuttongroup.js +1 -1
  86. package/dist/components/nv-tooltip.js +1 -1
  87. package/dist/components/{p-60083982.js → p-00347aae.js} +3 -3
  88. package/dist/components/{p-60083982.js.map → p-00347aae.js.map} +1 -1
  89. package/dist/components/p-0bfe8a47.js +88 -0
  90. package/dist/components/p-0bfe8a47.js.map +1 -0
  91. package/dist/components/p-2062ba39.js +191 -0
  92. package/dist/components/p-2062ba39.js.map +1 -0
  93. package/dist/components/{p-5a5db065.js → p-5c6b5444.js} +10 -4
  94. package/dist/components/p-5c6b5444.js.map +1 -0
  95. package/dist/components/{p-18f50d91.js → p-61382072.js} +2 -2
  96. package/dist/components/{p-18f50d91.js.map → p-61382072.js.map} +1 -1
  97. package/dist/components/{p-81d915ef.js → p-643d7802.js} +2 -2
  98. package/dist/components/{p-81d915ef.js.map → p-643d7802.js.map} +1 -1
  99. package/dist/components/{p-334e19d3.js → p-86588fba.js} +3 -3
  100. package/dist/components/{p-334e19d3.js.map → p-86588fba.js.map} +1 -1
  101. package/dist/components/{p-45a3cf85.js → p-8ce28cff.js} +2 -2
  102. package/dist/components/{p-45a3cf85.js.map → p-8ce28cff.js.map} +1 -1
  103. package/dist/components/{p-2ac6f42d.js → p-c4d20cc9.js} +2 -2
  104. package/dist/components/{p-2ac6f42d.js.map → p-c4d20cc9.js.map} +1 -1
  105. package/dist/components/{p-49205084.js → p-c69f5a37.js} +2 -2
  106. package/dist/components/{p-49205084.js.map → p-c69f5a37.js.map} +1 -1
  107. package/dist/components/{p-b67f31af.js → p-d1d4cc45.js} +3 -3
  108. package/dist/components/{p-b67f31af.js.map → p-d1d4cc45.js.map} +1 -1
  109. package/dist/esm/index-dc2723f3.js +4 -0
  110. package/dist/esm/index.js +1 -2
  111. package/dist/esm/index.js.map +1 -1
  112. package/dist/esm/loader.js +1 -1
  113. package/dist/esm/native.js +1 -1
  114. package/dist/esm/nv-button.entry.js +7 -2
  115. package/dist/esm/nv-button.entry.js.map +1 -1
  116. package/dist/esm/nv-datagrid.entry.js +2 -2
  117. package/dist/esm/nv-datagrid.entry.js.map +1 -1
  118. package/dist/esm/nv-dialog.entry.js +1 -1
  119. package/dist/esm/nv-dialog.entry.js.map +1 -1
  120. package/dist/esm/nv-icon.entry.js +1 -1
  121. package/dist/esm/nv-icon.entry.js.map +1 -1
  122. package/dist/esm/nv-iconbutton_2.entry.js +6 -1
  123. package/dist/esm/nv-iconbutton_2.entry.js.map +1 -1
  124. package/dist/esm/nv-tableheader.entry.js +73 -0
  125. package/dist/esm/nv-tableheader.entry.js.map +1 -0
  126. package/dist/esm/nv-toggle.entry.js +2 -2
  127. package/dist/esm/nv-togglebutton.entry.js +2 -2
  128. package/dist/esm/nv-togglebutton.entry.js.map +1 -1
  129. package/dist/esm/nv-togglebuttongroup.entry.js +1 -1
  130. package/dist/esm/nv-tooltip.entry.js +1 -1
  131. package/dist/native/index.esm.js +1 -1
  132. package/dist/native/index.esm.js.map +1 -1
  133. package/dist/native/native.css +1 -1
  134. package/dist/native/native.esm.js +1 -1
  135. package/dist/native/native.esm.js.map +1 -1
  136. package/dist/native/p-2b4cf4b8.entry.js +2 -0
  137. package/dist/native/{p-dfb6b65e.entry.js.map → p-2b4cf4b8.entry.js.map} +1 -1
  138. package/dist/native/{p-8e423742.entry.js → p-44ba73dc.entry.js} +2 -2
  139. package/dist/native/{p-8e423742.entry.js.map → p-44ba73dc.entry.js.map} +1 -1
  140. package/dist/native/{p-075d231e.entry.js → p-4de8697c.entry.js} +2 -2
  141. package/dist/native/{p-44a78545.entry.js → p-533e2530.entry.js} +2 -2
  142. package/dist/native/p-56ed7306.entry.js +2 -0
  143. package/dist/native/p-56ed7306.entry.js.map +1 -0
  144. package/dist/native/p-973f5db2.entry.js +2 -0
  145. package/dist/native/p-973f5db2.entry.js.map +1 -0
  146. package/dist/native/p-ae5be175.entry.js +2 -0
  147. package/dist/native/p-ae5be175.entry.js.map +1 -0
  148. package/dist/native/p-b43d6629.entry.js +2 -0
  149. package/dist/native/p-b43d6629.entry.js.map +1 -0
  150. package/dist/native/{p-122c78c3.entry.js → p-be49d837.entry.js} +2 -2
  151. package/dist/native/{p-122c78c3.entry.js.map → p-be49d837.entry.js.map} +1 -1
  152. package/dist/native/{p-445221dc.entry.js → p-c4baad6e.entry.js} +2 -2
  153. package/dist/types/components/nv-button/nv-button.d.ts +5 -0
  154. package/dist/types/components/nv-datagrid/nv-datagrid.d.ts +2 -0
  155. package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
  156. package/dist/types/components/nv-iconbutton/nv-iconbutton.d.ts +5 -0
  157. package/dist/types/components/nv-tableheader/nv-tableheader.d.ts +32 -0
  158. package/dist/types/components/nv-tableheader/nv-tableheader.docs.d.ts +4 -0
  159. package/dist/types/components.d.ts +92 -0
  160. package/dist/vscode-data.json +39 -6
  161. package/hydrate/index.js +114 -17
  162. package/hydrate/index.mjs +114 -17
  163. package/package.json +5 -1
  164. package/dist/components/p-5a5db065.js.map +0 -1
  165. package/dist/components/p-946a047c.js +0 -88
  166. package/dist/components/p-946a047c.js.map +0 -1
  167. package/dist/components/p-e1b2eba2.js +0 -185
  168. package/dist/components/p-e1b2eba2.js.map +0 -1
  169. package/dist/native/p-a6fc987a.entry.js +0 -2
  170. package/dist/native/p-a6fc987a.entry.js.map +0 -1
  171. package/dist/native/p-d62869ff.entry.js +0 -2
  172. package/dist/native/p-d62869ff.entry.js.map +0 -1
  173. package/dist/native/p-d8f3cf92.entry.js +0 -2
  174. package/dist/native/p-d8f3cf92.entry.js.map +0 -1
  175. package/dist/native/p-dfb6b65e.entry.js +0 -2
  176. /package/dist/native/{p-075d231e.entry.js.map → p-4de8697c.entry.js.map} +0 -0
  177. /package/dist/native/{p-44a78545.entry.js.map → p-533e2530.entry.js.map} +0 -0
  178. /package/dist/native/{p-445221dc.entry.js.map → p-c4baad6e.entry.js.map} +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nova-design-system/nova-webcomponents",
3
- "version": "3.20.0",
3
+ "version": "3.21.0",
4
4
  "description": "Nova is a design system created by Elia Group to empower creators to efficiently build solutions that people love to use.",
5
5
  "publishConfig": {
6
6
  "registry": "https://registry.npmjs.org/",
@@ -70,6 +70,10 @@
70
70
  "extract-comments": "1.1.0"
71
71
  },
72
72
  "exports": {
73
+ "./nv-tableheader": {
74
+ "import": "./dist/components/nv-tableheader.js",
75
+ "types": "./dist/components/nv-tableheader.d.ts"
76
+ },
73
77
  "./nv-split": {
74
78
  "import": "./dist/components/nv-split.js",
75
79
  "types": "./dist/components/nv-split.d.ts"
@@ -1 +0,0 @@
1
- {"file":"p-5a5db065.js","mappings":";;;;;AAAA,MAAM,eAAe,GAAG,4uJAA4uJ,CAAC;AACrwJ,2BAAe,eAAe;;MC6BjB,YAAY;IAPzB;;;;;;;;;;;QAoBW,SAAI,GAAoB,IAAI,CAAC;;;;;;QAQ7B,aAAQ,GAAwB,MAAM,CAAC;;;;;;;;QAUhD,YAAO,GAAY,KAAK,CAAC;;;;QAMzB,aAAQ,GAAY,KAAK,CAAC;;;;;QAOjB,WAAM,GAAY,KAAK,CAAC;;;;;;QAgBxB,SAAI,GAAoB,QAAQ,CAAC;;;;QAMjC,UAAK,GAAyB,QAAQ,CAAC;;;;;;;;;;QAYxC,gBAAW,GAAG,CAAC,KAAY;;YACjC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,KAAK,CAAC,cAAc,EAAE,CAAC;gBACvB,OAAO;aACR;YAED,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC1B,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,0CAAE,aAAa,EAAE,CAAC;aACvC;YACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE;gBACzB,MAAA,MAAA,IAAI,CAAC,SAAS,0CAAE,IAAI,0CAAE,KAAK,EAAE,CAAC;aAC/B;SACF,CAAC;KAgFH;;;;IAzEC,mBAAmB,CAAC,OAAgB;QAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;KACzB;IAGD,oBAAoB,CAAC,QAAiB;QACpC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;KACF;;;;IAOD,aAAa,CAAC,KAAoB;QAChC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;YAC9C,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;SACjB;KACF;IAGD,gBAAgB,CAAC,KAAiB;QAChC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QACrC,KAAK,CAAC,cAAc,EAAE,CAAC;QACvB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;KACjB;;;;IAMD,iBAAiB;QACf,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC;SAC9B;KACF;;;;IAMD,MAAM;QACJ,QACE,EAAC,IAAI,qDACH,IAAI,EAAC,QAAQ,EACb,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,QAAQ,EAAC,GAAG,EACZ,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,GAAG,SAAS,EAC1C,KAAK,EAAE,IAAI,CACT,MAAM,EACN,QAAQ,IAAI,CAAC,IAAI,EAAE,EACnB,YAAY,IAAI,CAAC,QAAQ,EAAE,EAC3B,IAAI,CAAC,OAAO,IAAI,SAAS,EACzB,SAAS,IAAI,CAAC,KAAK,EAAE,CACtB,EACD,OAAO,EAAE,IAAI,CAAC,WAAW,IAExB,IAAI,CAAC,OAAO,IAAI,kEAAW,IAAI,EAAE,IAAI,CAAC,IAAI,GAAc,EAExD,CAAC,IAAI,CAAC,OAAO,IAAI,gEAAS,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,GAAI,EAE/D,8DAAa,CACR,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/nv-iconbutton/nv-iconbutton.scss?tag=nv-iconbutton","src/components/nv-iconbutton/nv-iconbutton.tsx"],"sourcesContent":["@use \"sass:map\";\n@import \"../../styles/focus-ring\";\n\n/* Variants */\n$button-sizes: (\"xs\", \"sm\", \"md\", \"lg\");\n$button-emphasis: (\"high\", \"medium\", \"low\", \"lower\");\n\n/* Define maps for size-related variables */\n$button-icon-button-padding: (\n \"xs\": var(--button-xs-icon-button-padding),\n \"sm\": var(--button-sm-icon-button-padding),\n \"md\": var(--button-md-icon-button-padding),\n \"lg\": var(--button-lg-icon-button-padding)\n);\n\n$button-gap: (\n \"xs\": var(--button-xs-gap),\n \"sm\": var(--button-sm-gap),\n \"md\": var(--button-md-gap),\n \"lg\": var(--button-lg-gap)\n);\n\n$button-border-radius: (\n \"xs\": var(--button-xs-border-radius),\n \"sm\": var(--button-sm-border-radius),\n \"md\": var(--button-md-border-radius),\n \"lg\": var(--button-lg-border-radius)\n);\n\n$button-line-height: (\n \"xs\": var(--button-xs-line-height),\n \"sm\": var(--button-sm-line-height),\n \"md\": var(--button-md-line-height),\n \"lg\": var(--button-lg-line-height)\n);\n\n$button-font-size: (\n \"xs\": var(--button-xs-font-size),\n \"sm\": var(--button-sm-font-size),\n \"md\": var(--button-md-font-size),\n \"lg\": var(--button-lg-font-size)\n);\n\n/* Define maps for emphasis-related variables */\n$components-button-background: (\n \"high\": var(--components-button-high-background),\n \"medium\": var(--components-button-medium-background),\n \"low\": var(--components-button-low-background),\n \"lower\": var(--components-button-lower-background)\n);\n\n$components-button-border: (\n \"high\": var(--components-button-high-border),\n \"medium\": var(--components-button-medium-border),\n \"low\": var(--components-button-low-border),\n \"lower\": var(--components-button-lower-border)\n);\n\n$components-button-text: (\n \"high\": var(--components-button-high-text),\n \"medium\": var(--components-button-medium-text),\n \"low\": var(--components-button-low-text),\n \"lower\": var(--components-button-lower-text)\n);\n\n$components-button-background-hover: (\n \"high\": var(--components-button-high-background-hover),\n \"medium\": var(--components-button-medium-background-hover),\n \"low\": var(--components-button-low-background-hover),\n \"lower\": var(--components-button-lower-background-hover)\n);\n\n$components-button-text-hover: (\n \"high\": var(--components-button-high-text-hover),\n \"medium\": var(--components-button-medium-text-hover),\n \"low\": var(--components-button-low-text-hover),\n \"lower\": var(--components-button-lower-text-hover)\n);\n\n$components-button-icon: (\n \"high\": var(--components-button-high-icon),\n \"medium\": var(--components-button-medium-icon),\n \"low\": var(--components-button-low-icon),\n \"lower\": var(--components-button-lower-icon)\n);\n\n@mixin root-styles() {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n font-style: normal;\n font-weight: var(--font-weight-medium-emphasis);\n font-family: var(--font-family-default), var(--font-family-fallback), sans-serif;\n transition: background-color 150ms ease-out;\n height: fit-content;\n width: fit-content;\n}\n\n@mixin size-styles($size) {\n padding: map.get($button-icon-button-padding, $size);\n gap: map.get($button-gap, $size);\n border-radius: map.get($button-border-radius, $size);\n line-height: map.get($button-line-height, $size);\n font-size: map.get($button-font-size, $size);\n}\n\n@mixin emphasis-styles($emphasis) {\n background: map.get($components-button-background, $emphasis);\n border: 1px solid map.get($components-button-border, $emphasis);\n color: map.get($components-button-text, $emphasis);\n\n &:hover {\n background: map.get($components-button-background-hover, $emphasis);\n color: map.get($components-button-text-hover, $emphasis);\n }\n\n @include focus-ring();\n\n &:disabled {\n background: map.get($components-button-background, $emphasis);\n color: map.get($components-button-text, $emphasis);\n opacity: 0.5;\n cursor: not-allowed;\n box-shadow: none;\n }\n\n & nv-icon > svg {\n color: map.get($components-button-icon, $emphasis);\n }\n}\n\nnv-iconbutton {\n &.root {\n @include root-styles();\n }\n\n @each $size in $button-sizes {\n &.size-#{$size} {\n @include size-styles($size);\n }\n }\n\n @each $emphasis in $button-emphasis {\n &.emphasis-#{$emphasis} {\n @include emphasis-styles($emphasis);\n }\n }\n\n &.loading {\n [slot=\"leading-icon\"] {\n display: none;\n }\n }\n\n &.shape-rounded {\n border-radius: var(--radius-rounded-full);\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n AttachInternals,\n Element,\n Watch,\n Listen,\n} from '@stencil/core';\nimport clsx from 'clsx';\n\nimport {\n ButtonSize,\n ButtonEmphasis,\n ButtonType,\n IconButtonShape,\n} from '../../utils/constants';\nimport { IconName } from '../nv-icon/nv-icons';\n\n/**\n * @slot default - Content of the button.\n */\n@Component({\n tag: 'nv-iconbutton',\n shadow: false,\n formAssociated: true,\n styleUrl: 'nv-iconbutton.scss',\n scoped: false,\n})\nexport class NvIconbutton {\n @AttachInternals() internals: ElementInternals;\n @Element() el: HTMLNvIconbuttonElement;\n\n /****************************************************************************/\n //#region PROPERTIES\n\n /**\n * Determines how large or small the button appears, allowing for\n * customization of the button's dimensions to fit different design\n * specifications and user needs.\n */\n @Prop({ reflect: true })\n readonly size: `${ButtonSize}` = 'md';\n\n /**\n * Adjusts the button’s emphasis to make it more or less visually prominent\n * to users. Use this to draw attention to important actions or reduce focus\n * on less critical ones.\n */\n @Prop({ reflect: true })\n readonly emphasis: `${ButtonEmphasis}` = 'high';\n\n /**\n * Set this to true to show a spinner on the button, letting users know that\n * their action is being processed. It helps improve user experience by\n * indicating ongoing activities. The icon is not displayed when the button\n * is loading. Also, the button is disabled. If you want to disable the\n * button, it is not possible. It is automatically disabled when loading.\n */\n @Prop({ reflect: true, mutable: true })\n loading: boolean = false;\n\n /**\n * Disables the button, preventing user interaction.\n */\n @Prop({ mutable: true, reflect: true })\n disabled: boolean = false;\n\n /**\n * Makes the button look active when it’s within a compatible component\n * like a button group.\n */\n @Prop({ reflect: true })\n readonly active: boolean = false;\n\n /**\n * Choose the icon you want to display. This also sets the aria-label for\n * improved accessibility, helping users who rely on screen readers.\n * The icon is not displayed when the button is loading.\n */\n @Prop({ reflect: true })\n readonly name: `${IconName}` | string;\n\n /**\n * Sets the button type to control its function in forms. Use 'submit' to send\n * form data, 'reset' to clear the form, or 'button' for a standard button\n * that doesn’t interact with form submission by default.\n */\n @Prop({ reflect: true })\n readonly type: `${ButtonType}` = 'button';\n\n /**\n * Sets the shape of the button. Choose between square and rounded.\n */\n @Prop({ reflect: true })\n readonly shape: `${IconButtonShape}` = 'square';\n\n //#endregion PROPERTIES\n /****************************************************************************/\n //#region METHODS\n\n /**\n * Handles form-related actions when the button is clicked.\n * - Submits the form if the button type is 'submit'.\n * - Resets the form if the button type is 'reset'.\n * @param {Event} event - The click event.\n */\n private handleClick = (event: Event) => {\n if (this.disabled) {\n event.preventDefault();\n return;\n }\n\n if (this.type === 'submit') {\n this.internals?.form?.requestSubmit();\n }\n if (this.type === 'reset') {\n this.internals?.form?.reset();\n }\n };\n\n //#endregion METHODS\n /****************************************************************************/\n //#region WATCHERS\n\n @Watch('loading')\n handleLoadingChange(loading: boolean) {\n this.loading = loading;\n this.disabled = loading;\n }\n\n @Watch('disabled')\n handleDisabledChange(disabled: boolean) {\n if (this.loading) {\n this.disabled = this.loading;\n } else {\n this.disabled = disabled;\n }\n }\n\n //#endregion WATCHERS\n /****************************************************************************/\n //#region EVENTS\n\n @Listen('keydown', { passive: false })\n handleKeyDown(event: KeyboardEvent) {\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n this.el.click();\n }\n }\n\n @Listen('touchstart', { passive: false })\n handleTouchStart(event: TouchEvent) {\n if (event.touches.length > 1) return;\n event.preventDefault();\n this.el.click();\n }\n\n //#endregion EVENTS\n /****************************************************************************/\n //#region LIFECYCLE\n\n componentWillLoad() {\n if (this.loading) {\n this.disabled = this.loading;\n }\n }\n\n //#endregion LIFECYCLE\n /****************************************************************************/\n //#region RENDER\n\n render() {\n return (\n <Host\n role=\"button\"\n type={this.type}\n tabindex=\"0\"\n disabled={this.disabled ? true : undefined}\n class={clsx(\n 'root',\n `size-${this.size}`,\n `emphasis-${this.emphasis}`,\n this.loading && 'loading',\n `shape-${this.shape}`,\n )}\n onClick={this.handleClick}\n >\n {this.loading && <nv-loader size={this.size}></nv-loader>}\n\n {!this.loading && <nv-icon name={this.name} size={this.size} />}\n\n <slot></slot>\n </Host>\n );\n }\n\n //#endregion RENDER\n}\n"],"version":3}