@nova-design-system/nova-react 3.0.0-beta.43 → 3.0.0-beta.45

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 (81) hide show
  1. package/dist/cjs/{index-CinzsZ8D.js → index-S09Gr7Tw.js} +180 -218
  2. package/dist/cjs/index.js +1 -1
  3. package/dist/cjs/{nv-alert.entry-BVY_rxey.js → nv-alert.entry-DH8Qd2s2.js} +1 -1
  4. package/dist/cjs/{nv-avatar.entry-pREKtiv2.js → nv-avatar.entry-B3-elLZC.js} +1 -1
  5. package/dist/cjs/{nv-badge_2.entry-wDuiCwys.js → nv-badge_2.entry-D15EDzX0.js} +2 -2
  6. package/dist/cjs/{nv-base.entry-DwtTXK_n.js → nv-base.entry-D-_RUZTX.js} +1 -1
  7. package/dist/cjs/{nv-breadcrumb.entry-B0hIeE83.js → nv-breadcrumb.entry-DG49Nj1L.js} +2 -2
  8. package/dist/cjs/{nv-breadcrumbs.entry-Cq0LsIFs.js → nv-breadcrumbs.entry-BqJO5pbN.js} +1 -1
  9. package/dist/cjs/{nv-button.entry-DaSGnB1L.js → nv-button.entry-CN9kB98T.js} +6 -4
  10. package/dist/cjs/{nv-calendar.entry-BC6NDsVl.js → nv-calendar.entry-CMEgSU64.js} +6 -6
  11. package/dist/cjs/{nv-col.entry-DNUY559i.js → nv-col.entry-wcZ9HHAb.js} +1 -1
  12. package/dist/cjs/{nv-datagrid.entry-Cp8RCSEv.js → nv-datagrid.entry-GCLeN2qT.js} +32 -5
  13. package/dist/cjs/{nv-datagridcolumn.entry-CR9_1fsZ.js → nv-datagridcolumn.entry-lgIz71UU.js} +1 -1
  14. package/dist/cjs/{nv-dialog.entry-BjTJ5FFL.js → nv-dialog.entry-DfY0TaYp.js} +17 -13
  15. package/dist/cjs/{nv-dialogfooter_2.entry-DJkKzEgO.js → nv-dialogfooter_2.entry-OByWsulH.js} +6 -6
  16. package/dist/cjs/{nv-fieldcheckbox.entry-C0DmeqXD.js → nv-fieldcheckbox.entry-Bqpe9BK3.js} +2 -2
  17. package/dist/cjs/{nv-fielddate.entry-DRX2mfZL.js → nv-fielddate.entry-DJePv6tR.js} +1 -1
  18. package/dist/cjs/{nv-fielddaterange.entry-ka3JiDvT.js → nv-fielddaterange.entry--YC750sX.js} +1 -1
  19. package/dist/cjs/{nv-fielddropdown.entry-DUAKFYgw.js → nv-fielddropdown.entry-BPlTlc_S.js} +45 -75
  20. package/dist/cjs/{nv-fielddropdownitem.entry-BsbvJERH.js → nv-fielddropdownitem.entry-zwoGySum.js} +7 -9
  21. package/dist/cjs/{nv-fieldmultiselect.entry-DFr-ZICs.js → nv-fieldmultiselect.entry-Bg_v0LUF.js} +7 -49
  22. package/dist/cjs/{nv-fieldnumber.entry-ezdDvJh_.js → nv-fieldnumber.entry-BLNaq7yr.js} +1 -1
  23. package/dist/cjs/{nv-fieldpassword.entry-D4a8SnGr.js → nv-fieldpassword.entry-iSEdS5R8.js} +1 -1
  24. package/dist/cjs/{nv-fieldradio.entry-Co7WX2vI.js → nv-fieldradio.entry-Dov4vZkh.js} +1 -1
  25. package/dist/cjs/{nv-fieldselect.entry-sTbv_flF.js → nv-fieldselect.entry-NmpesarX.js} +1 -1
  26. package/dist/cjs/{nv-fieldtext.entry-DRPCH6Sf.js → nv-fieldtext.entry-r6oQajRS.js} +1 -1
  27. package/dist/cjs/{nv-fieldtextarea.entry-BwJCUiVW.js → nv-fieldtextarea.entry-CJ2yQkfi.js} +1 -1
  28. package/dist/cjs/{nv-fieldtime.entry-uU-IET2k.js → nv-fieldtime.entry-Bxoj6N53.js} +1 -1
  29. package/dist/cjs/nv-icon.entry-CWKRt8F0.js +79 -0
  30. package/dist/cjs/{nv-iconbutton_2.entry-Dx4usGkY.js → nv-iconbutton_2.entry-CnbscpNn.js} +1 -1
  31. package/dist/cjs/{nv-menu.entry-D3qvf_0H.js → nv-menu.entry-wC7oSruP.js} +1 -1
  32. package/dist/cjs/{nv-menuitem.entry-3t6TixM7.js → nv-menuitem.entry-BVSa1vrS.js} +1 -1
  33. package/dist/cjs/{nv-popover.entry-Bv6kuTK_.js → nv-popover.entry-ChP1we3l.js} +12 -10
  34. package/dist/cjs/{nv-row.entry-BPK1Li7w.js → nv-row.entry-D6FeFpzG.js} +1 -1
  35. package/dist/cjs/{nv-stack.entry-ByaO-0TJ.js → nv-stack.entry-zjJmztkO.js} +1 -1
  36. package/dist/cjs/{nv-table.entry-C7Hd57Iq.js → nv-table.entry-CGX0jsR3.js} +2 -2
  37. package/dist/cjs/{nv-tablecolumn.entry-BDCw_45v.js → nv-tablecolumn.entry-Cwdmo_RY.js} +1 -1
  38. package/dist/cjs/{nv-toggle.entry-BTqGH_H0.js → nv-toggle.entry-BvToMkI2.js} +2 -2
  39. package/dist/cjs/{nv-tooltip.entry-BDZfrLHv.js → nv-tooltip.entry-DZ7_lB-p.js} +2 -2
  40. package/dist/generated/components.js +3 -3
  41. package/dist/types/generated/components.d.ts +3 -5
  42. package/package.json +1 -1
  43. package/dist/cjs/index-C8UfzrMI.js +0 -26405
  44. package/dist/cjs/nv-alert.entry-8esWDUyU.js +0 -173
  45. package/dist/cjs/nv-avatar.entry-CO6bt4k6.js +0 -67
  46. package/dist/cjs/nv-badge_2.entry-xfXsesV0.js +0 -195
  47. package/dist/cjs/nv-base.entry-BO-6krwg.js +0 -71
  48. package/dist/cjs/nv-breadcrumb.entry-DTwjCmMI.js +0 -45
  49. package/dist/cjs/nv-breadcrumbs.entry-jn5hRjpQ.js +0 -20
  50. package/dist/cjs/nv-button.entry-DxzA6-My.js +0 -162
  51. package/dist/cjs/nv-calendar.entry-DKz-iBnp.js +0 -1036
  52. package/dist/cjs/nv-col.entry-X7jkNThH.js +0 -37
  53. package/dist/cjs/nv-datagrid.entry-DL-Fyo4l.js +0 -3671
  54. package/dist/cjs/nv-datagridcolumn.entry-CyTG5E7M.js +0 -18
  55. package/dist/cjs/nv-dialog.entry-Do_uALC6.js +0 -784
  56. package/dist/cjs/nv-dialogfooter_2.entry-DJ8qS9q6.js +0 -134
  57. package/dist/cjs/nv-fieldcheckbox.entry-DoGQX-5D.js +0 -137
  58. package/dist/cjs/nv-fielddate.entry-D-PjbYaA.js +0 -278
  59. package/dist/cjs/nv-fielddaterange.entry-BrC5jKLp.js +0 -355
  60. package/dist/cjs/nv-fielddropdown.entry-MsUR1kVe.js +0 -391
  61. package/dist/cjs/nv-fielddropdownitem.entry-DRM-Zljt.js +0 -70
  62. package/dist/cjs/nv-fieldmultiselect.entry-Dr8FfT_W.js +0 -1060
  63. package/dist/cjs/nv-fieldnumber.entry-DZsM1vmO.js +0 -126
  64. package/dist/cjs/nv-fieldpassword.entry-Biw__M2W.js +0 -115
  65. package/dist/cjs/nv-fieldradio.entry-ZL7KgEZ7.js +0 -102
  66. package/dist/cjs/nv-fieldselect.entry-D6eRsM9T.js +0 -365
  67. package/dist/cjs/nv-fieldtext.entry-DKdxC2cG.js +0 -119
  68. package/dist/cjs/nv-fieldtextarea.entry-Dc_TGlmI.js +0 -194
  69. package/dist/cjs/nv-fieldtime.entry-CXRtpWt1.js +0 -1011
  70. package/dist/cjs/nv-icon.entry-iipuvT3D.js +0 -79
  71. package/dist/cjs/nv-icon.entry-xltjoSa2.js +0 -79
  72. package/dist/cjs/nv-iconbutton_2.entry-BsXvYbCi.js +0 -163
  73. package/dist/cjs/nv-menu.entry-DFEYw_KZ.js +0 -227
  74. package/dist/cjs/nv-menuitem.entry-BeTXOtir.js +0 -58
  75. package/dist/cjs/nv-popover.entry-Zt25YeAv.js +0 -1960
  76. package/dist/cjs/nv-row.entry-Bwzlub3i.js +0 -21
  77. package/dist/cjs/nv-stack.entry-bhess4lQ.js +0 -30
  78. package/dist/cjs/nv-table.entry-D3U4dFcw.js +0 -338
  79. package/dist/cjs/nv-tablecolumn.entry-BzwWPlLf.js +0 -18
  80. package/dist/cjs/nv-toggle.entry-DXpNGkbz.js +0 -79
  81. package/dist/cjs/nv-tooltip.entry-CvCZZV88.js +0 -44
@@ -1,163 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('./index-C8UfzrMI.js');
4
- var clsx297c1ffe = require('./clsx-297c1ffe-BtxeOLZW.js');
5
- require('react');
6
-
7
- const nvIconbuttonCss = "nv-iconbutton.root{display:inline-flex;justify-content:center;align-items:center;font-style:normal;font-weight:500;font-family:\"TT Norms Pro\", sans-serif;transition:background-color 150ms ease-out;height:fit-content;width:fit-content}nv-iconbutton.size-xs{padding:var(--button-xs-icon-button-padding);gap:var(--button-xs-gap);border-radius:var(--button-xs-border-radius);line-height:var(--button-xs-line-height);font-size:var(--button-xs-font-size)}nv-iconbutton.size-sm{padding:var(--button-sm-icon-button-padding);gap:var(--button-sm-gap);border-radius:var(--button-sm-border-radius);line-height:var(--button-sm-line-height);font-size:var(--button-sm-font-size)}nv-iconbutton.size-md{padding:var(--button-md-icon-button-padding);gap:var(--button-md-gap);border-radius:var(--button-md-border-radius);line-height:var(--button-md-line-height);font-size:var(--button-md-font-size)}nv-iconbutton.size-lg{padding:var(--button-lg-icon-button-padding);gap:var(--button-lg-gap);border-radius:var(--button-lg-border-radius);line-height:var(--button-lg-line-height);font-size:var(--button-lg-font-size)}nv-iconbutton.emphasis-high{background:var(--components-button-high-background);border:1px solid var(--components-button-high-border);color:var(--components-button-high-text)}nv-iconbutton.emphasis-high:hover{background:var(--components-button-high-background-hover);color:var(--components-button-high-text-hover)}nv-iconbutton.emphasis-high:focus,nv-iconbutton.emphasis-high:focus-within{outline:none}nv-iconbutton.emphasis-high:focus-visible,nv-iconbutton.emphasis-high:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-high:disabled{background:var(--components-button-high-background);color:var(--components-button-high-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-high nv-icon>svg{color:var(--components-button-high-icon)}nv-iconbutton.emphasis-medium{background:var(--components-button-medium-background);border:1px solid var(--components-button-medium-border);color:var(--components-button-medium-text)}nv-iconbutton.emphasis-medium:hover{background:var(--components-button-medium-background-hover);color:var(--components-button-medium-text-hover)}nv-iconbutton.emphasis-medium:focus,nv-iconbutton.emphasis-medium:focus-within{outline:none}nv-iconbutton.emphasis-medium:focus-visible,nv-iconbutton.emphasis-medium:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-medium:disabled{background:var(--components-button-medium-background);color:var(--components-button-medium-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-medium nv-icon>svg{color:var(--components-button-medium-icon)}nv-iconbutton.emphasis-low{background:var(--components-button-low-background);border:1px solid var(--components-button-low-border);color:var(--components-button-low-text)}nv-iconbutton.emphasis-low:hover{background:var(--components-button-low-background-hover);color:var(--components-button-low-text-hover)}nv-iconbutton.emphasis-low:focus,nv-iconbutton.emphasis-low:focus-within{outline:none}nv-iconbutton.emphasis-low:focus-visible,nv-iconbutton.emphasis-low:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-low:disabled{background:var(--components-button-low-background);color:var(--components-button-low-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-low nv-icon>svg{color:var(--components-button-low-icon)}nv-iconbutton.emphasis-lower{background:var(--components-button-lower-background);border:1px solid var(--components-button-lower-border);color:var(--components-button-lower-text)}nv-iconbutton.emphasis-lower:hover{background:var(--components-button-lower-background-hover);color:var(--components-button-lower-text-hover)}nv-iconbutton.emphasis-lower:focus,nv-iconbutton.emphasis-lower:focus-within{outline:none}nv-iconbutton.emphasis-lower:focus-visible,nv-iconbutton.emphasis-lower:has(:focus-visible){outline:calc(var(--focus-outline-stroke) * 1) solid var(--color-focus-brand);outline-offset:calc(var(--focus-outline-offset) * 1)}nv-iconbutton.emphasis-lower:disabled{background:var(--components-button-lower-background);color:var(--components-button-lower-text);opacity:0.5;cursor:not-allowed;box-shadow:none}nv-iconbutton.emphasis-lower nv-icon>svg{color:var(--components-button-lower-icon)}nv-iconbutton.loading [slot=leading-icon]{display:none}nv-iconbutton.shape-rounded{border-radius:var(--radius-rounded-full)}";
8
- const NvIconbuttonStyle0 = nvIconbuttonCss;
9
-
10
- const NvIconbutton = class {
11
- constructor(hostRef) {
12
- index.registerInstance(this, hostRef);
13
- if (hostRef.$hostElement$["s-ei"]) {
14
- this.internals = hostRef.$hostElement$["s-ei"];
15
- }
16
- else {
17
- this.internals = hostRef.$hostElement$.attachInternals();
18
- hostRef.$hostElement$["s-ei"] = this.internals;
19
- }
20
- /****************************************************************************/
21
- //#region PROPERTIES
22
- /**
23
- * Determines how large or small the button appears, allowing for
24
- * customization of the button's dimensions to fit different design
25
- * specifications and user needs.
26
- */
27
- this.size = 'md';
28
- /**
29
- * Adjusts the button’s emphasis to make it more or less visually prominent
30
- * to users. Use this to draw attention to important actions or reduce focus
31
- * on less critical ones.
32
- */
33
- this.emphasis = 'high';
34
- /**
35
- * Set this to true to show a spinner on the button, letting users know that
36
- * their action is being processed. It helps improve user experience by
37
- * indicating ongoing activities. The icon is not displayed when the button
38
- * is loading. Also, the button is disabled. If you want to disable the
39
- * button, it is not possible. It is automatically disabled when loading.
40
- */
41
- this.loading = false;
42
- /**
43
- * Disables the button, preventing user interaction.
44
- */
45
- this.disabled = false;
46
- /**
47
- * Makes the button look active when it’s within a compatible component
48
- * like a button group.
49
- */
50
- this.active = false;
51
- /**
52
- * Sets the button type to control its function in forms. Use 'submit' to send
53
- * form data, 'reset' to clear the form, or 'button' for a standard button
54
- * that doesn’t interact with form submission by default.
55
- */
56
- this.type = 'button';
57
- /**
58
- * Sets the shape of the button. Choose between square and rounded.
59
- */
60
- this.shape = 'square';
61
- //#endregion PROPERTIES
62
- /****************************************************************************/
63
- //#region METHODS
64
- /**
65
- * Handles form-related actions when the button is clicked.
66
- * - Submits the form if the button type is 'submit'.
67
- * - Resets the form if the button type is 'reset'.
68
- * @param {Event} event - The click event.
69
- */
70
- this.handleClick = (event) => {
71
- var _a, _b, _c, _d;
72
- if (this.disabled) {
73
- event.preventDefault();
74
- return;
75
- }
76
- if (this.type === 'submit') {
77
- (_b = (_a = this.internals) === null || _a === void 0 ? void 0 : _a.form) === null || _b === void 0 ? void 0 : _b.requestSubmit();
78
- }
79
- if (this.type === 'reset') {
80
- (_d = (_c = this.internals) === null || _c === void 0 ? void 0 : _c.form) === null || _d === void 0 ? void 0 : _d.reset();
81
- }
82
- };
83
- }
84
- //#endregion METHODS
85
- /****************************************************************************/
86
- //#region WATCHERS
87
- handleLoadingChange(loading) {
88
- this.loading = loading;
89
- this.disabled = loading;
90
- }
91
- handleDisabledChange(disabled) {
92
- if (this.loading) {
93
- this.disabled = this.loading;
94
- }
95
- else {
96
- this.disabled = disabled;
97
- }
98
- }
99
- //#endregion WATCHERS
100
- /****************************************************************************/
101
- //#region EVENTS
102
- handleKeyDown(event) {
103
- if (event.key === 'Enter' || event.key === ' ') {
104
- event.preventDefault();
105
- this.el.click();
106
- }
107
- }
108
- handleTouchStart(event) {
109
- if (event.touches.length > 1)
110
- return;
111
- event.preventDefault();
112
- this.el.click();
113
- }
114
- //#endregion EVENTS
115
- /****************************************************************************/
116
- //#region LIFECYCLE
117
- componentWillLoad() {
118
- if (this.loading) {
119
- this.disabled = this.loading;
120
- }
121
- }
122
- //#endregion LIFECYCLE
123
- /****************************************************************************/
124
- //#region RENDER
125
- render() {
126
- return (index.h(index.Host, { key: '3cb0f36cea2cfcefe2792893742fa7478068377f', role: "button", type: this.type, tabindex: "0", disabled: this.disabled ? true : undefined, class: clsx297c1ffe.clsx('root', `size-${this.size}`, `emphasis-${this.emphasis}`, this.loading && 'loading', `shape-${this.shape}`), onClick: this.handleClick }, this.loading && index.h("nv-loader", { key: '9e982898299e460a1828c6a52cc4f0560bb13c68', size: this.size }), !this.loading && index.h("nv-icon", { key: 'b8f0337dd42132b28d8a7d75d0cdce9ebebb1fc4', name: this.name, size: this.size }), index.h("slot", { key: '31aaff45c890e8eaf961b3cb82136caabbbe0eaf' })));
127
- }
128
- static get formAssociated() { return true; }
129
- get el() { return index.getElement(this); }
130
- static get watchers() { return {
131
- "loading": ["handleLoadingChange"],
132
- "disabled": ["handleDisabledChange"]
133
- }; }
134
- };
135
- NvIconbutton.style = NvIconbuttonStyle0;
136
-
137
- const nvLoaderCss = "@keyframes rotation{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}nv-loader{display:inline-block;position:relative;aspect-ratio:1/1;border-radius:9999px;color:inherit}nv-loader.size-xs{width:var(--loader-size-xs);height:var(--loader-size-xs)}nv-loader.size-xs::before,nv-loader.size-xs::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xs::before{content:\" \";border:calc(var(--loader-size-xs) / 10) solid;opacity:0.3}nv-loader.size-xs::after{content:\" \";border-top:calc(var(--loader-size-xs) / 10) solid transparent;border-left:calc(var(--loader-size-xs) / 10) solid transparent;border-right:calc(var(--loader-size-xs) / 10) solid transparent;border-bottom:calc(var(--loader-size-xs) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-sm{width:var(--loader-size-sm);height:var(--loader-size-sm)}nv-loader.size-sm::before,nv-loader.size-sm::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-sm::before{content:\" \";border:calc(var(--loader-size-sm) / 10) solid;opacity:0.3}nv-loader.size-sm::after{content:\" \";border-top:calc(var(--loader-size-sm) / 10) solid transparent;border-left:calc(var(--loader-size-sm) / 10) solid transparent;border-right:calc(var(--loader-size-sm) / 10) solid transparent;border-bottom:calc(var(--loader-size-sm) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-md{width:var(--loader-size-md);height:var(--loader-size-md)}nv-loader.size-md::before,nv-loader.size-md::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-md::before{content:\" \";border:calc(var(--loader-size-md) / 10) solid;opacity:0.3}nv-loader.size-md::after{content:\" \";border-top:calc(var(--loader-size-md) / 10) solid transparent;border-left:calc(var(--loader-size-md) / 10) solid transparent;border-right:calc(var(--loader-size-md) / 10) solid transparent;border-bottom:calc(var(--loader-size-md) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-lg{width:var(--loader-size-lg);height:var(--loader-size-lg)}nv-loader.size-lg::before,nv-loader.size-lg::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-lg::before{content:\" \";border:calc(var(--loader-size-lg) / 10) solid;opacity:0.3}nv-loader.size-lg::after{content:\" \";border-top:calc(var(--loader-size-lg) / 10) solid transparent;border-left:calc(var(--loader-size-lg) / 10) solid transparent;border-right:calc(var(--loader-size-lg) / 10) solid transparent;border-bottom:calc(var(--loader-size-lg) / 10) solid;animation:rotation 1s linear infinite}nv-loader.size-xl{width:var(--loader-size-xl);height:var(--loader-size-xl)}nv-loader.size-xl::before,nv-loader.size-xl::after{content:\" \";position:absolute;top:0;left:0;border-radius:inherit;width:100%;height:100%}nv-loader.size-xl::before{content:\" \";border:calc(var(--loader-size-xl) / 10) solid;opacity:0.3}nv-loader.size-xl::after{content:\" \";border-top:calc(var(--loader-size-xl) / 10) solid transparent;border-left:calc(var(--loader-size-xl) / 10) solid transparent;border-right:calc(var(--loader-size-xl) / 10) solid transparent;border-bottom:calc(var(--loader-size-xl) / 10) solid;animation:rotation 1s linear infinite}nv-loader.color-brand::before{border-color:var(--components-loader-brand-background);opacity:1}nv-loader.color-brand::after{border-bottom-color:var(--components-loader-brand-foreground)}nv-loader.color-white::before{border-color:var(--components-loader-white-background);opacity:1}nv-loader.color-white::after{border-bottom-color:var(--components-loader-white-foreground)}";
138
- const NvLoaderStyle0 = nvLoaderCss;
139
-
140
- const NvLoader = class {
141
- constructor(hostRef) {
142
- index.registerInstance(this, hostRef);
143
- /****************************************************************************/
144
- //#region PROPERTIES
145
- /**
146
- * Choose the size of the loader to best fit your application’s needs, whether
147
- * it’s a small spinner for subtle loading indicators or a large one for more
148
- * prominent displays.
149
- */
150
- this.size = 'md';
151
- }
152
- //#endregion PROPERTIES
153
- /****************************************************************************/
154
- //#region RENDER
155
- /* <slot> empty to force rendering change */
156
- render() {
157
- return (index.h(index.Host, { key: '9e9d2153c7fbb074e143bf01409eca65ec7ba08c', class: clsx297c1ffe.clsx(this.size && `size-${this.size}`, this.color && `color-${this.color}`) }));
158
- }
159
- };
160
- NvLoader.style = NvLoaderStyle0;
161
-
162
- exports.nv_iconbutton = NvIconbutton;
163
- exports.nv_loader = NvLoader;
@@ -1,227 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('./index-C8UfzrMI.js');
4
- require('react');
5
-
6
- const nvMenuCss = "nv-menuitem{display:flex;align-items:center;max-width:300px;width:100vw;font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);gap:var(--menu-contextual-item-gap-x);padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);transition:background-color 150ms ease-out;cursor:pointer}nv-menuitem:hover,nv-menuitem:focus,nv-menuitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menuitem *{pointer-events:none}nv-menuitem kbd{color:var(--components-menu-contextual-item-shortcut)}nv-menuitem [data-scope=text]{margin-right:auto}nv-menuitem[disabled]:not([disabled=false]){cursor:unset;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}nv-menu{display:inline-block;position:relative}nv-menu:has([fluid]:not([fluid=false])){display:block}nv-menu nv-popover{display:unset}nv-menu nv-popover [data-scope=popover]{background-color:transparent !important;padding:0 !important}nv-menu [slot=content]{padding:var(--menu-contextual-padding-y) var(--menu-contextual-padding-x);border-radius:var(--menu-contextual-radius);gap:var(--menu-contextual-gap-y);background-color:var(--components-menu-contextual-background);border-color:var(--components-menu-contextual-border);display:flex;flex-direction:column}nv-menu nv-menu[open]:not([open=false])>nv-menuitem{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menu hr{display:block;margin:var(--menu-contextual-divider-padding-top) var(--menu-contextual-divider-padding-x) var(--menu-contextual-divider-padding-bottom) var(--menu-contextual-divider-padding-x)}";
7
- const NvMenuStyle0 = nvMenuCss;
8
-
9
- const NvMenu = class {
10
- constructor(hostRef) {
11
- index.registerInstance(this, hostRef);
12
- this.menuitemSelected = index.createEvent(this, "menuitemSelected");
13
- this.isHandlingKeyDown = false;
14
- /****************************************************************************/
15
- //#region PROPERTIES
16
- /**
17
- * Use this to toggle the initial visibility of the menu, by default the menu
18
- * is hidden.
19
- */
20
- this.open = false;
21
- /**
22
- * Use this if the menu is nested inside another menu. This will prevent the
23
- * parent menu from closing when the child menu is opened.
24
- */
25
- this.nested = false;
26
- /**
27
- * Use this to disable the menu from closing automatically when a menu item is
28
- * selected.
29
- */
30
- this.disableCloseOnSelect = false;
31
- /**
32
- * Decides where the menu shows up next to the button it’s linked to (above,
33
- * below, to the sides). If there isn’t enough room, it will adjust its
34
- * position on the axis to fit on the screen, so users can always see it.
35
- */
36
- this.placement = 'bottom-end';
37
- /**
38
- * Parsed items stored in state.
39
- */
40
- this.parsedItems = [];
41
- }
42
- /**
43
- * Watcher to parse the items when the `items` property changes.
44
- * @param {string} newValue - The new value of the `items` property.
45
- */
46
- handleItemsChange(newValue) {
47
- if (typeof newValue === 'string') {
48
- try {
49
- this.parsedItems = JSON.parse(newValue);
50
- }
51
- catch (error) {
52
- console.error('Error parsing menu items:', error);
53
- this.parsedItems = [];
54
- }
55
- }
56
- }
57
- //#endregion PROPERTIES
58
- /****************************************************************************/
59
- //#region METHODS
60
- /**
61
- * Opens the menu.
62
- */
63
- async show() {
64
- this.open = true;
65
- }
66
- /**
67
- * Closes the menu.
68
- */
69
- async close() {
70
- this.open = false;
71
- }
72
- handleMenuItemSelect(event) {
73
- if (this.disableCloseOnSelect)
74
- return;
75
- if (event.detail.hasSubmenu)
76
- return;
77
- this.open = false;
78
- }
79
- handleKeydown(event) {
80
- // If the menu is not open, check if the trigger is focused
81
- // and the user presses Enter or ArrowDown, open the menu
82
- if (!this.open) {
83
- if ((event.key === 'Enter' ||
84
- event.key === 'ArrowDown' ||
85
- event.key === ' ') &&
86
- document.activeElement === this.triggerElement) {
87
- event.preventDefault();
88
- this.show();
89
- // Then, put the focus on the first menuitem
90
- const firstMenuItem = this.popoverElement.querySelector('nv-menuitem');
91
- if (firstMenuItem) {
92
- requestAnimationFrame(() => firstMenuItem.focus());
93
- }
94
- }
95
- return;
96
- }
97
- if (this.isHandlingKeyDown)
98
- return;
99
- this.isHandlingKeyDown = true;
100
- if (event.key === 'ArrowDown' ||
101
- event.key === 'ArrowUp' ||
102
- event.key === 'ArrowLeft' ||
103
- event.key === 'ArrowRight' ||
104
- event.key === 'Escape') {
105
- event.preventDefault();
106
- }
107
- if (event.key === 'Escape' && !this.nested) {
108
- this.close();
109
- this.triggerElement.focus();
110
- this.isHandlingKeyDown = false;
111
- return;
112
- }
113
- const menuContent = this.el.querySelector('[slot="content"]');
114
- const menuItems = Array.from(menuContent.childNodes).filter(item => { var _a; return (_a = item.matches) === null || _a === void 0 ? void 0 : _a.call(item, 'nv-menuitem, nv-menu'); });
115
- let currentIndex = menuItems.indexOf(document.activeElement);
116
- if (currentIndex === -1)
117
- currentIndex = menuItems.indexOf(document.activeElement.parentElement);
118
- if (currentIndex === -1 &&
119
- menuItems.find(item => item.matches('nv-menu[open]'))) {
120
- this.isHandlingKeyDown = false;
121
- return;
122
- }
123
- if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {
124
- menuItems.forEach(item => {
125
- if (item.matches('nv-menu'))
126
- item.close();
127
- });
128
- }
129
- if (event.key === 'ArrowDown') {
130
- let nextIndex = (currentIndex + 1) % menuItems.length;
131
- while (menuItems[nextIndex].matches('nv-menuitem[disabled]')) {
132
- nextIndex = (nextIndex + 1) % menuItems.length;
133
- }
134
- const nextFocusable = menuItems[nextIndex];
135
- if (nextFocusable.matches('nv-menuitem')) {
136
- nextFocusable.focus();
137
- }
138
- else if (nextFocusable.matches('nv-menu')) {
139
- nextFocusable.querySelector('nv-menuitem').focus();
140
- }
141
- }
142
- if (event.key === 'ArrowUp') {
143
- let prevIndex = (currentIndex - 1 + menuItems.length) % menuItems.length;
144
- while (menuItems[prevIndex].matches('nv-menuitem[disabled]')) {
145
- prevIndex = (prevIndex - 1 + menuItems.length) % menuItems.length;
146
- }
147
- const prevFocusable = menuItems[prevIndex];
148
- if (prevFocusable.matches('nv-menuitem')) {
149
- prevFocusable.focus();
150
- }
151
- else if (prevFocusable.matches('nv-menu')) {
152
- prevFocusable.querySelector('nv-menuitem').focus();
153
- }
154
- }
155
- if (event.key === 'ArrowRight') {
156
- const submenu = menuItems[currentIndex];
157
- if (!submenu.matches('nv-menu')) {
158
- this.isHandlingKeyDown = false;
159
- return;
160
- }
161
- submenu.show();
162
- }
163
- if (event.key === 'ArrowLeft' && this.nested) {
164
- if (menuItems.find(item => item.matches('nv-menu[open]'))) {
165
- this.isHandlingKeyDown = false;
166
- return;
167
- }
168
- this.close();
169
- this.triggerElement.focus();
170
- }
171
- this.isHandlingKeyDown = false;
172
- }
173
- handleOpenChanged(event) {
174
- if (event.target === this.el.querySelector('nv-popover')) {
175
- this.open = event.detail;
176
- }
177
- const triggerHasFocus = this.triggerElement === document.activeElement;
178
- const triggerHasFocusVisible = this.triggerElement.matches(':focus-visible');
179
- if (triggerHasFocus && triggerHasFocusVisible)
180
- this.focusFirstItem();
181
- }
182
- focusFirstItem() {
183
- const firstButton = this.popoverElement.querySelector('nv-menuitem');
184
- if (firstButton) {
185
- requestAnimationFrame(() => firstButton.focus());
186
- }
187
- }
188
- //#endregion EVENTS
189
- /****************************************************************************/
190
- //#region LIFECYCLE
191
- componentWillLoad() {
192
- this.triggerElement = Array.from(this.el.children).find(child => {
193
- return child.getAttribute('slot') === 'trigger';
194
- });
195
- // If the items attribute is provided, parse its value.
196
- if (this.items) {
197
- this.handleItemsChange(this.items);
198
- }
199
- }
200
- //#endregion LIFECYCLE
201
- /****************************************************************************/
202
- //#region RENDER
203
- /**
204
- * Generates menu items from the `items` property.
205
- * @param {MenuItem[]} items - The items to display in the menu.
206
- * @returns {HTMLElement[]} The rendered items.
207
- */
208
- renderMenuItems(items) {
209
- return items.map(item => {
210
- var _a;
211
- if (item.hasSubmenu && ((_a = item.submenuItems) === null || _a === void 0 ? void 0 : _a.length) > 0) {
212
- return (index.h("nv-menu", { nested: true, placement: "right-start", items: JSON.stringify(item.submenuItems) }, index.h("nv-menuitem", { slot: "trigger", "has-submenu": true, disabled: item.disabled, icon: item.icon, shortcut: item.shortcut, id: item.value, name: item.label, label: item.label })));
213
- }
214
- return (index.h("nv-menuitem", { disabled: item.disabled, icon: item.icon, shortcut: item.shortcut, id: item.value, name: item.label, label: item.label }));
215
- });
216
- }
217
- render() {
218
- return (index.h(index.Host, { key: '6730d203996374ae1f875271c8a8dfcecbcfe471' }, index.h("slot", { key: 'e3ac0dd17601af87add2b1e36aff9a8176996646', name: "trigger" }), index.h("nv-popover", { key: 'ad1d65fd742aa445e6601587d5bdd45955dc7e93', ref: el => (this.popoverElement = el), triggerMode: "click", triggerElement: this.triggerElement, placement: this.placement, nested: this.nested, open: this.open }, this.parsedItems.length > 0 ? (index.h("ul", { slot: "content" }, this.renderMenuItems(this.parsedItems))) : (index.h("slot", { name: "content" })))));
219
- }
220
- get el() { return index.getElement(this); }
221
- static get watchers() { return {
222
- "items": ["handleItemsChange"]
223
- }; }
224
- };
225
- NvMenu.style = NvMenuStyle0;
226
-
227
- exports.nv_menu = NvMenu;
@@ -1,58 +0,0 @@
1
- 'use strict';
2
-
3
- var index = require('./index-C8UfzrMI.js');
4
- require('react');
5
-
6
- const nvMenuitemCss = "nv-menuitem{display:flex;align-items:center;max-width:300px;width:100vw;font-size:var(--menu-contextual-item-font-size);font-weight:var(--menu-contextual-item-font-weight);color:var(--components-menu-contextual-item-content);border-radius:var(--menu-contextual-item-radius);gap:var(--menu-contextual-item-gap-x);padding:var(--menu-contextual-item-padding-y) var(--menu-contextual-item-padding-x);transition:background-color 150ms ease-out;cursor:pointer}nv-menuitem:hover,nv-menuitem:focus,nv-menuitem:focus-within{background-color:var(--components-menu-contextual-item-background-hover);color:var(--components-menu-contextual-item-content-hover)}nv-menuitem *{pointer-events:none}nv-menuitem kbd{color:var(--components-menu-contextual-item-shortcut)}nv-menuitem [data-scope=text]{margin-right:auto}nv-menuitem[disabled]:not([disabled=false]){cursor:unset;background-color:unset;color:var(--components-menu-contextual-item-content-disabled)}";
7
- const NvMenuitemStyle0 = nvMenuitemCss;
8
-
9
- const NvMenuitem = class {
10
- constructor(hostRef) {
11
- index.registerInstance(this, hostRef);
12
- this.menuitemSelected = index.createEvent(this, "menuitemSelected");
13
- /**
14
- * Disables the item, preventing user interaction.
15
- */
16
- this.disabled = false;
17
- /**
18
- * If the menu item has a submenu, the a caret icon will be displayed.
19
- */
20
- this.hasSubmenu = false;
21
- }
22
- handleMenuItemSelect(event) {
23
- // If the element is disabled, stop propagation
24
- if (this.disabled) {
25
- event.stopPropagation();
26
- return;
27
- }
28
- this.menuitemSelected.emit({
29
- id: this.el.id,
30
- name: this.name,
31
- hasSubmenu: this.hasSubmenu,
32
- });
33
- }
34
- handleClick(event) {
35
- this.handleMenuItemSelect(event);
36
- }
37
- handleKeyDown(event) {
38
- if (event.key === 'Enter' || event.key === ' ') {
39
- const activeElement = document.activeElement;
40
- if (activeElement &&
41
- activeElement.tagName === 'NV-MENUITEM' &&
42
- !activeElement.hasAttribute('has-submenu')) {
43
- event.preventDefault();
44
- this.el.click();
45
- }
46
- }
47
- }
48
- //#endregion EVENTS
49
- /****************************************************************************/
50
- //#region RENDER
51
- render() {
52
- return (index.h(index.Host, { key: '3a80bda645a8c28a9cc660271d02a0bc3a786f84', role: "menuitem", tabindex: this.disabled ? '-1' : '0' }, this.icon && index.h("nv-icon", { key: '13f890147ad70cbc7134bc4c0036bc23328ae522', name: this.icon }), index.h("slot", { key: 'b5d97c5b7171caf26e7d4592ef711f36e261a382' }), this.label && index.h("span", { key: 'fc763d260c77a61a85847815bfeb27255474ae4d', "data-scope": "text" }, this.label), this.shortcut && !this.hasSubmenu && index.h("kbd", { key: '40685c6af8789f943a59c61065786a8f67f9d49b' }, this.shortcut), this.hasSubmenu && index.h("nv-icon", { key: 'ba77aeaaadefddb9bb8403710b1b12ef4a698dee', name: "chevron-right" })));
53
- }
54
- get el() { return index.getElement(this); }
55
- };
56
- NvMenuitem.style = NvMenuitemStyle0;
57
-
58
- exports.nv_menuitem = NvMenuitem;