@wavelengthusaf/web-components 1.4.2 → 1.6.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.
package/README.md CHANGED
@@ -14,6 +14,11 @@ npm install @wavelengthusaf/web-components
14
14
 
15
15
  ## Release Notes
16
16
 
17
+ ### 1.6.0
18
+
19
+ - 2/24/2026
20
+ - Added disabled attribute to multi-select-autocomplete
21
+
17
22
  ### 1.2.0
18
23
 
19
24
  - 12/4/2025
@@ -2241,19 +2241,10 @@ function StylingMixin(mixinBaseClass) {
2241
2241
  };
2242
2242
  }
2243
2243
 
2244
+ // src/web-components/sample-component.template.html
2245
+ var sample_component_template_default = '<style>\n :host {\n display: block;\n /* Define component defaults here */\n }\n</style>\n<div class="content">\n <button></button>\n</div>\n';
2246
+
2244
2247
  // src/web-components/sample-component.ts
2245
- var template = document.createElement("template");
2246
- template.innerHTML = `
2247
- <style>
2248
- :host {
2249
- display: block;
2250
- /* Define component defaults here */
2251
- }
2252
- </style>
2253
- <div class="content">
2254
- <slot></slot> <!-- Enables user-defined inner HTML -->
2255
- </div>
2256
- `;
2257
2248
  var BaseSampleComponent = class extends HTMLElement {
2258
2249
  // List of attributes to observe for changes
2259
2250
  static get observedAttributes() {
@@ -2262,7 +2253,7 @@ var BaseSampleComponent = class extends HTMLElement {
2262
2253
  constructor() {
2263
2254
  super();
2264
2255
  this.shadow = this.attachShadow({ mode: "open" });
2265
- this.shadow.append(template.content.cloneNode(true));
2256
+ this.shadow.innerHTML = sample_component_template_default;
2266
2257
  }
2267
2258
  // Called when component is inserted into the DOM
2268
2259
  connectedCallback() {
@@ -2402,79 +2393,11 @@ if (!customElements.get("wavelength-banner")) {
2402
2393
  customElements.define("wavelength-banner", WavelengthBanner);
2403
2394
  }
2404
2395
 
2396
+ // src/web-components/wavelength-button.template.html
2397
+ var wavelength_button_template_default = '<style>\n :host {\n display: inline-flex;\n }\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n overflow: hidden;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 500;\n font-size: 0.875rem;\n letter-spacing: 0.02857rem;\n text-transform: uppercase;\n user-select: none;\n white-space: normal;\n word-break: break-word;\n text-align: center;\n height: auto;\n }\n\n button .ripple {\n position: absolute;\n border-radius: 50%;\n transform: scale(0);\n animation: ripple 600ms linear;\n pointer-events: none;\n z-index: 0;\n }\n\n button .label {\n position: relative;\n z-index: 1;\n display: block;\n width: 100%;\n }\n\n @keyframes ripple {\n to {\n transform: scale(4);\n opacity: 0;\n }\n }\n\n button.contained {\n box-shadow: 0rem 0.125rem 0.25rem -0.063rem #000000;\n }\n\n button.contained:hover,\n button.outlined:hover,\n button.text:hover {\n opacity: 0.96;\n transition: background-color 300ms ease-in-out;\n }\n\n button:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n</style>\n\n<button>\n <span class="label"><slot>LABEL</slot></span>\n</button>\n';
2398
+
2405
2399
  // src/web-components/wavelength-button.ts
2406
2400
  var buttonTemplate = document.createElement("template");
2407
- buttonTemplate.innerHTML = `
2408
- <style>
2409
- :host {
2410
- display: inline-flex;
2411
- }
2412
-
2413
- button {
2414
- display: inline-flex;
2415
- align-items: center;
2416
- justify-content: center;
2417
- position: relative;
2418
- overflow: hidden;
2419
- border: none;
2420
- border-radius: 0.25rem;
2421
- cursor: pointer;
2422
- font-family: "Roboto", "Helvetica", "Arial", sans-serif;
2423
- font-weight: 500;
2424
- font-size: 0.875rem;
2425
- letter-spacing: 0.02857rem;
2426
- text-transform: uppercase;
2427
- user-select: none;
2428
- white-space: normal;
2429
- word-break: break-word;
2430
- text-align: center;
2431
- height: auto;
2432
- }
2433
-
2434
- button .ripple {
2435
- position: absolute;
2436
- border-radius: 50%;
2437
- transform: scale(0);
2438
- animation: ripple 600ms linear;
2439
- pointer-events: none;
2440
- z-index: 0;
2441
- }
2442
-
2443
- button .label {
2444
- position: relative;
2445
- z-index: 1;
2446
- display: block;
2447
- width: 100%;
2448
- }
2449
-
2450
- @keyframes ripple {
2451
- to {
2452
- transform: scale(4);
2453
- opacity: 0;
2454
- }
2455
- }
2456
-
2457
- button.contained {
2458
- box-shadow: 0rem 0.125rem 0.25rem -0.063rem #000000;
2459
- }
2460
-
2461
- button.contained:hover,
2462
- button.outlined:hover,
2463
- button.text:hover {
2464
- opacity: 0.96;
2465
- transition: background-color 300ms ease-in-out;
2466
- }
2467
-
2468
- button:disabled {
2469
- opacity: 0.5;
2470
- pointer-events: none;
2471
- }
2472
- </style>
2473
-
2474
- <button>
2475
- <span class="label"><slot>LABEL</slot></span>
2476
- </button>
2477
- `;
2478
2401
  var WavelengthButton = class extends HTMLElement {
2479
2402
  constructor() {
2480
2403
  super();
@@ -2483,7 +2406,7 @@ var WavelengthButton = class extends HTMLElement {
2483
2406
  this.handleHoverOut = () => {
2484
2407
  };
2485
2408
  const shadow = this.attachShadow({ mode: "open" });
2486
- shadow.appendChild(buttonTemplate.content.cloneNode(true));
2409
+ shadow.innerHTML = wavelength_button_template_default;
2487
2410
  this.button = shadow.querySelector("button");
2488
2411
  this.button.addEventListener("click", (event) => {
2489
2412
  if (this.button.disabled || this.hasAttribute("disabled")) {
@@ -3179,8 +3102,8 @@ if (!customElements.get("wavelength-form")) {
3179
3102
  }
3180
3103
 
3181
3104
  // src/web-components/wavelength-progress-bar.ts
3182
- var template2 = document.createElement("template");
3183
- template2.innerHTML = `
3105
+ var template = document.createElement("template");
3106
+ template.innerHTML = `
3184
3107
  <style>
3185
3108
  .label {
3186
3109
  display: flex;
@@ -3219,7 +3142,7 @@ var WavelengthProgressBar = class extends HTMLElement {
3219
3142
  constructor() {
3220
3143
  super();
3221
3144
  const shadow = this.attachShadow({ mode: "open" });
3222
- shadow.appendChild(template2.content.cloneNode(true));
3145
+ shadow.appendChild(template.content.cloneNode(true));
3223
3146
  this.container = shadow.querySelector(".container");
3224
3147
  this.nameSpan = shadow.querySelector(".name");
3225
3148
  this.statusSpan = shadow.querySelector(".status");
@@ -3259,143 +3182,10 @@ if (!customElements.get("wavelength-progress-bar")) {
3259
3182
  customElements.define("wavelength-progress-bar", WavelengthProgressBar);
3260
3183
  }
3261
3184
 
3262
- // src/web-components/wavelength-input.ts
3263
- var template3 = document.createElement("template");
3264
- template3.innerHTML = `
3265
- <style>
3266
- :host {
3267
- display: block;
3268
- width: 100%;
3269
- font-family: sans-serif;
3270
- --wavelength-container-background: #f8f8f8;
3271
- --wavelength-label-background: #ffffff;
3272
- }
3273
-
3274
- .field-wrapper {
3275
- position: relative;
3276
- }
3277
-
3278
- .floating-label {
3279
- position: absolute;
3280
- top: -0.325rem;
3281
- left: 12px;
3282
- font-size: 0.75rem;
3283
- line-height: 1;
3284
- color: var(--wavelength-label-color, #666666);
3285
- padding: 0 4px;
3286
- z-index: 1;
3287
- pointer-events: none;
3288
- user-select: none;
3289
- }
3290
-
3291
- .floating-label::before,
3292
- .floating-label::after {
3293
- content: '';
3294
- position: absolute;
3295
- left: 0;
3296
- width: 100%;
3297
- z-index: -1;
3298
- }
3299
-
3300
- .floating-label::before {
3301
- top: 0;
3302
- height: 50%;
3303
- background: var(--wavelength-container-background, white);
3304
- }
3305
-
3306
- .floating-label::after {
3307
- bottom: 0;
3308
- height: 50%;
3309
- background: var(--wavelength-label-background, #ffffff);
3310
- }
3311
-
3312
- :host([disabled]) .floating-label::before {
3313
- opacity: 0;
3314
- }
3315
-
3316
- input {
3317
- font-size: 16px;
3318
- padding: 16.5px 14px;
3319
- border: 1px solid var(--wavelength-border-color, #cccccc);
3320
- border-radius: 8px;
3321
- width: 100%;
3322
- box-sizing: border-box;
3323
- background-color: var(--wavelength-background, #ffffff);
3324
- transition: border-color 0.2s ease;
3325
- overflow: auto;
3326
- font-family: inherit;
3327
- }
3328
-
3329
- input:focus {
3330
- outline: none;
3331
- }
3332
-
3333
- input:disabled {
3334
- opacity: 0.5;
3335
- cursor: not-allowed;
3336
- }
3337
-
3338
- :host([disabled]) .floating-label::after {
3339
- opacity: 0;
3340
- cursor: not-allowed;
3341
- }
3342
-
3343
- input::placeholder {
3344
- color: #999999;
3345
- }
3346
-
3347
- .helper-message {
3348
- margin-top: 4px;
3349
- font-size: 0.75rem;
3350
- max-width: 100%;
3351
- word-wrap: break-word;
3352
- white-space: normal;
3353
- overflow-wrap: break-word;
3354
- color: #000000;
3355
- padding-left: 14px;
3356
- margin-left: 2px;
3357
- user-select: none;
3358
- }
3359
-
3360
- .required-marker {
3361
- color: red;
3362
- font-weight: lighter;
3363
- font-size: 0.75rem;
3364
- }
3365
-
3366
- .clear-button {
3367
- position: absolute;
3368
- right: 12px;
3369
- top: 50%;
3370
- transform: translateY(-50%);
3371
- font-size: 1.25 rem;
3372
- color: #666666;
3373
- cursor: pointer;
3374
- opacity: 0.5;
3375
- user-select: none;
3376
- transition: opacity 0.2s ease;
3377
- z-index: 2;
3378
- display: none;
3379
- line-height: 1;
3380
- padding: 0 4px;
3381
- }
3382
-
3383
- .clear-button:hover {
3384
- opacity: 1;
3385
- }
3185
+ // src/web-components/wavelength-input.template.html
3186
+ var wavelength_input_template_default = '<style>\n :host {\n display: block;\n width: 100%;\n font-family: sans-serif;\n --wavelength-container-background: #f8f8f8;\n --wavelength-label-background: #ffffff;\n }\n\n .field-wrapper {\n position: relative;\n }\n\n .floating-label {\n position: absolute;\n top: -0.325rem;\n left: 12px;\n font-size: 0.75rem;\n line-height: 1;\n color: var(--wavelength-label-color, #666666);\n padding: 0 4px;\n z-index: 1;\n pointer-events: none;\n user-select: none;\n }\n\n .floating-label::before,\n .floating-label::after {\n content: "";\n position: absolute;\n left: 0;\n width: 100%;\n z-index: -1;\n }\n\n .floating-label::before {\n top: 0;\n height: 50%;\n background: var(--wavelength-container-background, white);\n }\n\n .floating-label::after {\n bottom: 0;\n height: 50%;\n background: var(--wavelength-label-background, #ffffff);\n }\n\n :host([disabled]) .floating-label::before {\n opacity: 0;\n }\n\n input {\n font-size: 16px;\n padding: 16.5px 14px;\n border: 1px solid var(--wavelength-border-color, #cccccc);\n border-radius: 8px;\n width: 100%;\n box-sizing: border-box;\n background-color: var(--wavelength-background, #ffffff);\n transition: border-color 0.2s ease;\n overflow: auto;\n font-family: inherit;\n }\n\n input:focus {\n outline: none;\n }\n\n input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :host([disabled]) .floating-label::after {\n opacity: 0;\n cursor: not-allowed;\n }\n\n input::placeholder {\n color: #999999;\n }\n\n .helper-message {\n margin-top: 4px;\n font-size: 0.75rem;\n max-width: 100%;\n word-wrap: break-word;\n white-space: normal;\n overflow-wrap: break-word;\n color: #000000;\n padding-left: 14px;\n margin-left: 2px;\n user-select: none;\n }\n\n .required-marker {\n color: red;\n font-weight: lighter;\n font-size: 0.75rem;\n }\n\n .clear-button {\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 1.25 rem;\n color: #666666;\n cursor: pointer;\n opacity: 0.5;\n user-select: none;\n transition: opacity 0.2s ease;\n z-index: 2;\n display: none;\n line-height: 1;\n padding: 0 4px;\n }\n\n .clear-button:hover {\n opacity: 1;\n }\n\n :host([disabled]) .clear-button {\n display: none;\n }\n</style>\n<div class="field-wrapper">\n <label class="floating-label" id="floating-label"></label>\n <div class="input-wrapper"></div>\n <div class="clear-button" id="clear-button" title="Clear input">\u2715</div>\n</div>\n<div class="helper-message" id="helper"></div>\n';
3386
3187
 
3387
- :host([disabled]) .clear-button {
3388
- display: none;
3389
- }
3390
-
3391
- </style>
3392
- <div class="field-wrapper">
3393
- <label class="floating-label" id="floating-label"></label>
3394
- <div class="input-wrapper"></div>
3395
- <div class="clear-button" id="clear-button" title="Clear input">\u2715</div>
3396
- </div>
3397
- <div class="helper-message" id="helper"></div>
3398
- `;
3188
+ // src/web-components/wavelength-input.ts
3399
3189
  function getAncestor(el) {
3400
3190
  if (!el) return null;
3401
3191
  if (el.parentElement) {
@@ -3473,7 +3263,7 @@ var BaseWavelengthInput = class extends HTMLElement {
3473
3263
  };
3474
3264
  this.internals = this.attachInternals();
3475
3265
  const shadow = this.attachShadow({ mode: "open" });
3476
- shadow.appendChild(template3.content.cloneNode(true));
3266
+ shadow.innerHTML = wavelength_input_template_default;
3477
3267
  this.inputEl = document.createElement("input");
3478
3268
  this.labelEl = shadow.getElementById("floating-label");
3479
3269
  this.helperEl = shadow.getElementById("helper");
@@ -4067,8 +3857,8 @@ if (!customElements.get("wavelength-date-picker")) {
4067
3857
  }
4068
3858
 
4069
3859
  // src/web-components/wavelength-notification-panel.ts
4070
- var template4 = document.createElement("template");
4071
- template4.innerHTML = `
3860
+ var template2 = document.createElement("template");
3861
+ template2.innerHTML = `
4072
3862
  <style>
4073
3863
  :host {
4074
3864
  display: flex;
@@ -4267,7 +4057,7 @@ var WavelengthNotificationPanel = class extends HTMLElement {
4267
4057
  constructor() {
4268
4058
  super();
4269
4059
  const shadow = this.attachShadow({ mode: "open" });
4270
- shadow.appendChild(template4.content.cloneNode(true));
4060
+ shadow.appendChild(template2.content.cloneNode(true));
4271
4061
  this.panelButton = shadow.querySelector(".pill");
4272
4062
  this.panel = shadow.querySelector(".dropdown-panel");
4273
4063
  this.signOutButton = shadow.querySelector(".footer-button-sign-out");
@@ -4331,8 +4121,8 @@ if (!customElements.get("wavelength-notification-panel")) {
4331
4121
  }
4332
4122
 
4333
4123
  // src/web-components/wavelength-multi-select-autocomplete.ts
4334
- var template5 = document.createElement("template");
4335
- template5.innerHTML = `
4124
+ var template3 = document.createElement("template");
4125
+ template3.innerHTML = `
4336
4126
  <style>
4337
4127
  .multi-select-container {
4338
4128
  background-color: white;
@@ -4345,6 +4135,10 @@ template5.innerHTML = `
4345
4135
  font-family: Inter, sans-serif;
4346
4136
  font-size: 14px;
4347
4137
  }
4138
+
4139
+ .disabled {
4140
+ pointer-events: none;
4141
+ }
4348
4142
 
4349
4143
  .multi-select-input-wrapper {
4350
4144
  display: flex;
@@ -4541,6 +4335,8 @@ template5.innerHTML = `
4541
4335
  .multi-select-arrow:hover {
4542
4336
  background-color: #f3eeee;
4543
4337
  }
4338
+
4339
+ .click-disbl
4544
4340
  </style>
4545
4341
 
4546
4342
  <div class="multi-select-container" part="multi-select-container">
@@ -4574,7 +4370,7 @@ var BaseWavelengthMultiSelectAutocomplete = class extends HTMLElement {
4574
4370
  this._internals = this.attachInternals();
4575
4371
  this._internals.role = "combobox";
4576
4372
  const shadow = this.attachShadow({ mode: "open" });
4577
- shadow.appendChild(template5.content.cloneNode(true));
4373
+ shadow.appendChild(template3.content.cloneNode(true));
4578
4374
  this._container = this.shadowRoot.querySelector(".multi-select-container");
4579
4375
  this._inputWrapper = this.shadowRoot.querySelector(".multi-select-input-wrapper");
4580
4376
  this._input = this.shadowRoot.querySelector(".multi-select-input");
@@ -4614,7 +4410,7 @@ var BaseWavelengthMultiSelectAutocomplete = class extends HTMLElement {
4614
4410
  }
4615
4411
  // Define which attributes to observe for changes
4616
4412
  static get observedAttributes() {
4617
- return ["name", "placeholder", "label", "options"];
4413
+ return ["name", "placeholder", "label", "options", "disabled"];
4618
4414
  }
4619
4415
  // React to attribute changes
4620
4416
  attributeChangedCallback(name, oldValue, newValue) {
@@ -4631,6 +4427,9 @@ var BaseWavelengthMultiSelectAutocomplete = class extends HTMLElement {
4631
4427
  } else if (name === "options") {
4632
4428
  this._options = JSON.parse(newValue);
4633
4429
  this.render();
4430
+ } else if (name === "disabled") {
4431
+ this._input.disabled = newValue.toLowerCase() === "true";
4432
+ this._container.classList.add("disabled");
4634
4433
  }
4635
4434
  }
4636
4435
  // Fired when the component is added to the DOM
@@ -4791,8 +4590,8 @@ if (!customElements.get("wavelength-multi-select-autocomplete")) {
4791
4590
  }
4792
4591
 
4793
4592
  // src/web-components/wavelength-nav-bar.ts
4794
- var template6 = document.createElement("template");
4795
- template6.innerHTML = `
4593
+ var template4 = document.createElement("template");
4594
+ template4.innerHTML = `
4796
4595
  <style>
4797
4596
  :host {
4798
4597
  display: block;
@@ -4939,7 +4738,7 @@ var WavelengthNavBar = class extends HTMLElement {
4939
4738
  constructor() {
4940
4739
  super();
4941
4740
  const shadow = this.attachShadow({ mode: "open" });
4942
- shadow.appendChild(template6.content.cloneNode(true));
4741
+ shadow.appendChild(template4.content.cloneNode(true));
4943
4742
  _optionalChain([shadow, 'access', _61 => _61.querySelector, 'call', _62 => _62("#logo"), 'optionalAccess', _63 => _63.addEventListener, 'call', _64 => _64("click", () => {
4944
4743
  this.dispatchEvent(new CustomEvent("home-click"));
4945
4744
  })]);
@@ -4984,8 +4783,8 @@ if (!customElements.get("wavelength-nav-bar")) {
4984
4783
 
4985
4784
  // src/web-components/wavelength-child-data-table.ts
4986
4785
  var import_react = __toESM(require_react(), 1);
4987
- var template7 = document.createElement("template");
4988
- template7.innerHTML = `
4786
+ var template5 = document.createElement("template");
4787
+ template5.innerHTML = `
4989
4788
 
4990
4789
  <style>
4991
4790
 
@@ -5136,7 +4935,7 @@ var ChildDataTable = class extends HTMLElement {
5136
4935
  <path d="M13.2375 0L7.5 5.725L1.7625 0L0 1.7625L7.5 9.2625L15 1.7625L13.2375 0Z" fill="currentColor"/>
5137
4936
  </svg>`;
5138
4937
  this.shadow = this.attachShadow({ mode: "open" });
5139
- this.shadow.append(template7.content.cloneNode(true));
4938
+ this.shadow.append(template5.content.cloneNode(true));
5140
4939
  }
5141
4940
  static get observedAttributes() {
5142
4941
  return ["table-columns", "table-data", "dropdown-arrow-location", "sort-icon", "dropdown-button-icon"];
package/dist/esm/index.js CHANGED
@@ -2241,19 +2241,10 @@ function StylingMixin(mixinBaseClass) {
2241
2241
  };
2242
2242
  }
2243
2243
 
2244
+ // src/web-components/sample-component.template.html
2245
+ var sample_component_template_default = '<style>\n :host {\n display: block;\n /* Define component defaults here */\n }\n</style>\n<div class="content">\n <button></button>\n</div>\n';
2246
+
2244
2247
  // src/web-components/sample-component.ts
2245
- var template = document.createElement("template");
2246
- template.innerHTML = `
2247
- <style>
2248
- :host {
2249
- display: block;
2250
- /* Define component defaults here */
2251
- }
2252
- </style>
2253
- <div class="content">
2254
- <slot></slot> <!-- Enables user-defined inner HTML -->
2255
- </div>
2256
- `;
2257
2248
  var BaseSampleComponent = class extends HTMLElement {
2258
2249
  // List of attributes to observe for changes
2259
2250
  static get observedAttributes() {
@@ -2262,7 +2253,7 @@ var BaseSampleComponent = class extends HTMLElement {
2262
2253
  constructor() {
2263
2254
  super();
2264
2255
  this.shadow = this.attachShadow({ mode: "open" });
2265
- this.shadow.append(template.content.cloneNode(true));
2256
+ this.shadow.innerHTML = sample_component_template_default;
2266
2257
  }
2267
2258
  // Called when component is inserted into the DOM
2268
2259
  connectedCallback() {
@@ -2402,79 +2393,11 @@ if (!customElements.get("wavelength-banner")) {
2402
2393
  customElements.define("wavelength-banner", WavelengthBanner);
2403
2394
  }
2404
2395
 
2396
+ // src/web-components/wavelength-button.template.html
2397
+ var wavelength_button_template_default = '<style>\n :host {\n display: inline-flex;\n }\n\n button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n position: relative;\n overflow: hidden;\n border: none;\n border-radius: 0.25rem;\n cursor: pointer;\n font-family: "Roboto", "Helvetica", "Arial", sans-serif;\n font-weight: 500;\n font-size: 0.875rem;\n letter-spacing: 0.02857rem;\n text-transform: uppercase;\n user-select: none;\n white-space: normal;\n word-break: break-word;\n text-align: center;\n height: auto;\n }\n\n button .ripple {\n position: absolute;\n border-radius: 50%;\n transform: scale(0);\n animation: ripple 600ms linear;\n pointer-events: none;\n z-index: 0;\n }\n\n button .label {\n position: relative;\n z-index: 1;\n display: block;\n width: 100%;\n }\n\n @keyframes ripple {\n to {\n transform: scale(4);\n opacity: 0;\n }\n }\n\n button.contained {\n box-shadow: 0rem 0.125rem 0.25rem -0.063rem #000000;\n }\n\n button.contained:hover,\n button.outlined:hover,\n button.text:hover {\n opacity: 0.96;\n transition: background-color 300ms ease-in-out;\n }\n\n button:disabled {\n opacity: 0.5;\n pointer-events: none;\n }\n</style>\n\n<button>\n <span class="label"><slot>LABEL</slot></span>\n</button>\n';
2398
+
2405
2399
  // src/web-components/wavelength-button.ts
2406
2400
  var buttonTemplate = document.createElement("template");
2407
- buttonTemplate.innerHTML = `
2408
- <style>
2409
- :host {
2410
- display: inline-flex;
2411
- }
2412
-
2413
- button {
2414
- display: inline-flex;
2415
- align-items: center;
2416
- justify-content: center;
2417
- position: relative;
2418
- overflow: hidden;
2419
- border: none;
2420
- border-radius: 0.25rem;
2421
- cursor: pointer;
2422
- font-family: "Roboto", "Helvetica", "Arial", sans-serif;
2423
- font-weight: 500;
2424
- font-size: 0.875rem;
2425
- letter-spacing: 0.02857rem;
2426
- text-transform: uppercase;
2427
- user-select: none;
2428
- white-space: normal;
2429
- word-break: break-word;
2430
- text-align: center;
2431
- height: auto;
2432
- }
2433
-
2434
- button .ripple {
2435
- position: absolute;
2436
- border-radius: 50%;
2437
- transform: scale(0);
2438
- animation: ripple 600ms linear;
2439
- pointer-events: none;
2440
- z-index: 0;
2441
- }
2442
-
2443
- button .label {
2444
- position: relative;
2445
- z-index: 1;
2446
- display: block;
2447
- width: 100%;
2448
- }
2449
-
2450
- @keyframes ripple {
2451
- to {
2452
- transform: scale(4);
2453
- opacity: 0;
2454
- }
2455
- }
2456
-
2457
- button.contained {
2458
- box-shadow: 0rem 0.125rem 0.25rem -0.063rem #000000;
2459
- }
2460
-
2461
- button.contained:hover,
2462
- button.outlined:hover,
2463
- button.text:hover {
2464
- opacity: 0.96;
2465
- transition: background-color 300ms ease-in-out;
2466
- }
2467
-
2468
- button:disabled {
2469
- opacity: 0.5;
2470
- pointer-events: none;
2471
- }
2472
- </style>
2473
-
2474
- <button>
2475
- <span class="label"><slot>LABEL</slot></span>
2476
- </button>
2477
- `;
2478
2401
  var WavelengthButton = class extends HTMLElement {
2479
2402
  constructor() {
2480
2403
  super();
@@ -2483,7 +2406,7 @@ var WavelengthButton = class extends HTMLElement {
2483
2406
  this.handleHoverOut = () => {
2484
2407
  };
2485
2408
  const shadow = this.attachShadow({ mode: "open" });
2486
- shadow.appendChild(buttonTemplate.content.cloneNode(true));
2409
+ shadow.innerHTML = wavelength_button_template_default;
2487
2410
  this.button = shadow.querySelector("button");
2488
2411
  this.button.addEventListener("click", (event) => {
2489
2412
  if (this.button.disabled || this.hasAttribute("disabled")) {
@@ -3179,8 +3102,8 @@ if (!customElements.get("wavelength-form")) {
3179
3102
  }
3180
3103
 
3181
3104
  // src/web-components/wavelength-progress-bar.ts
3182
- var template2 = document.createElement("template");
3183
- template2.innerHTML = `
3105
+ var template = document.createElement("template");
3106
+ template.innerHTML = `
3184
3107
  <style>
3185
3108
  .label {
3186
3109
  display: flex;
@@ -3219,7 +3142,7 @@ var WavelengthProgressBar = class extends HTMLElement {
3219
3142
  constructor() {
3220
3143
  super();
3221
3144
  const shadow = this.attachShadow({ mode: "open" });
3222
- shadow.appendChild(template2.content.cloneNode(true));
3145
+ shadow.appendChild(template.content.cloneNode(true));
3223
3146
  this.container = shadow.querySelector(".container");
3224
3147
  this.nameSpan = shadow.querySelector(".name");
3225
3148
  this.statusSpan = shadow.querySelector(".status");
@@ -3259,143 +3182,10 @@ if (!customElements.get("wavelength-progress-bar")) {
3259
3182
  customElements.define("wavelength-progress-bar", WavelengthProgressBar);
3260
3183
  }
3261
3184
 
3262
- // src/web-components/wavelength-input.ts
3263
- var template3 = document.createElement("template");
3264
- template3.innerHTML = `
3265
- <style>
3266
- :host {
3267
- display: block;
3268
- width: 100%;
3269
- font-family: sans-serif;
3270
- --wavelength-container-background: #f8f8f8;
3271
- --wavelength-label-background: #ffffff;
3272
- }
3273
-
3274
- .field-wrapper {
3275
- position: relative;
3276
- }
3277
-
3278
- .floating-label {
3279
- position: absolute;
3280
- top: -0.325rem;
3281
- left: 12px;
3282
- font-size: 0.75rem;
3283
- line-height: 1;
3284
- color: var(--wavelength-label-color, #666666);
3285
- padding: 0 4px;
3286
- z-index: 1;
3287
- pointer-events: none;
3288
- user-select: none;
3289
- }
3290
-
3291
- .floating-label::before,
3292
- .floating-label::after {
3293
- content: '';
3294
- position: absolute;
3295
- left: 0;
3296
- width: 100%;
3297
- z-index: -1;
3298
- }
3299
-
3300
- .floating-label::before {
3301
- top: 0;
3302
- height: 50%;
3303
- background: var(--wavelength-container-background, white);
3304
- }
3305
-
3306
- .floating-label::after {
3307
- bottom: 0;
3308
- height: 50%;
3309
- background: var(--wavelength-label-background, #ffffff);
3310
- }
3311
-
3312
- :host([disabled]) .floating-label::before {
3313
- opacity: 0;
3314
- }
3315
-
3316
- input {
3317
- font-size: 16px;
3318
- padding: 16.5px 14px;
3319
- border: 1px solid var(--wavelength-border-color, #cccccc);
3320
- border-radius: 8px;
3321
- width: 100%;
3322
- box-sizing: border-box;
3323
- background-color: var(--wavelength-background, #ffffff);
3324
- transition: border-color 0.2s ease;
3325
- overflow: auto;
3326
- font-family: inherit;
3327
- }
3328
-
3329
- input:focus {
3330
- outline: none;
3331
- }
3332
-
3333
- input:disabled {
3334
- opacity: 0.5;
3335
- cursor: not-allowed;
3336
- }
3337
-
3338
- :host([disabled]) .floating-label::after {
3339
- opacity: 0;
3340
- cursor: not-allowed;
3341
- }
3342
-
3343
- input::placeholder {
3344
- color: #999999;
3345
- }
3346
-
3347
- .helper-message {
3348
- margin-top: 4px;
3349
- font-size: 0.75rem;
3350
- max-width: 100%;
3351
- word-wrap: break-word;
3352
- white-space: normal;
3353
- overflow-wrap: break-word;
3354
- color: #000000;
3355
- padding-left: 14px;
3356
- margin-left: 2px;
3357
- user-select: none;
3358
- }
3359
-
3360
- .required-marker {
3361
- color: red;
3362
- font-weight: lighter;
3363
- font-size: 0.75rem;
3364
- }
3365
-
3366
- .clear-button {
3367
- position: absolute;
3368
- right: 12px;
3369
- top: 50%;
3370
- transform: translateY(-50%);
3371
- font-size: 1.25 rem;
3372
- color: #666666;
3373
- cursor: pointer;
3374
- opacity: 0.5;
3375
- user-select: none;
3376
- transition: opacity 0.2s ease;
3377
- z-index: 2;
3378
- display: none;
3379
- line-height: 1;
3380
- padding: 0 4px;
3381
- }
3382
-
3383
- .clear-button:hover {
3384
- opacity: 1;
3385
- }
3185
+ // src/web-components/wavelength-input.template.html
3186
+ var wavelength_input_template_default = '<style>\n :host {\n display: block;\n width: 100%;\n font-family: sans-serif;\n --wavelength-container-background: #f8f8f8;\n --wavelength-label-background: #ffffff;\n }\n\n .field-wrapper {\n position: relative;\n }\n\n .floating-label {\n position: absolute;\n top: -0.325rem;\n left: 12px;\n font-size: 0.75rem;\n line-height: 1;\n color: var(--wavelength-label-color, #666666);\n padding: 0 4px;\n z-index: 1;\n pointer-events: none;\n user-select: none;\n }\n\n .floating-label::before,\n .floating-label::after {\n content: "";\n position: absolute;\n left: 0;\n width: 100%;\n z-index: -1;\n }\n\n .floating-label::before {\n top: 0;\n height: 50%;\n background: var(--wavelength-container-background, white);\n }\n\n .floating-label::after {\n bottom: 0;\n height: 50%;\n background: var(--wavelength-label-background, #ffffff);\n }\n\n :host([disabled]) .floating-label::before {\n opacity: 0;\n }\n\n input {\n font-size: 16px;\n padding: 16.5px 14px;\n border: 1px solid var(--wavelength-border-color, #cccccc);\n border-radius: 8px;\n width: 100%;\n box-sizing: border-box;\n background-color: var(--wavelength-background, #ffffff);\n transition: border-color 0.2s ease;\n overflow: auto;\n font-family: inherit;\n }\n\n input:focus {\n outline: none;\n }\n\n input:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n\n :host([disabled]) .floating-label::after {\n opacity: 0;\n cursor: not-allowed;\n }\n\n input::placeholder {\n color: #999999;\n }\n\n .helper-message {\n margin-top: 4px;\n font-size: 0.75rem;\n max-width: 100%;\n word-wrap: break-word;\n white-space: normal;\n overflow-wrap: break-word;\n color: #000000;\n padding-left: 14px;\n margin-left: 2px;\n user-select: none;\n }\n\n .required-marker {\n color: red;\n font-weight: lighter;\n font-size: 0.75rem;\n }\n\n .clear-button {\n position: absolute;\n right: 12px;\n top: 50%;\n transform: translateY(-50%);\n font-size: 1.25 rem;\n color: #666666;\n cursor: pointer;\n opacity: 0.5;\n user-select: none;\n transition: opacity 0.2s ease;\n z-index: 2;\n display: none;\n line-height: 1;\n padding: 0 4px;\n }\n\n .clear-button:hover {\n opacity: 1;\n }\n\n :host([disabled]) .clear-button {\n display: none;\n }\n</style>\n<div class="field-wrapper">\n <label class="floating-label" id="floating-label"></label>\n <div class="input-wrapper"></div>\n <div class="clear-button" id="clear-button" title="Clear input">\u2715</div>\n</div>\n<div class="helper-message" id="helper"></div>\n';
3386
3187
 
3387
- :host([disabled]) .clear-button {
3388
- display: none;
3389
- }
3390
-
3391
- </style>
3392
- <div class="field-wrapper">
3393
- <label class="floating-label" id="floating-label"></label>
3394
- <div class="input-wrapper"></div>
3395
- <div class="clear-button" id="clear-button" title="Clear input">\u2715</div>
3396
- </div>
3397
- <div class="helper-message" id="helper"></div>
3398
- `;
3188
+ // src/web-components/wavelength-input.ts
3399
3189
  function getAncestor(el) {
3400
3190
  if (!el) return null;
3401
3191
  if (el.parentElement) {
@@ -3473,7 +3263,7 @@ var BaseWavelengthInput = class extends HTMLElement {
3473
3263
  };
3474
3264
  this.internals = this.attachInternals();
3475
3265
  const shadow = this.attachShadow({ mode: "open" });
3476
- shadow.appendChild(template3.content.cloneNode(true));
3266
+ shadow.innerHTML = wavelength_input_template_default;
3477
3267
  this.inputEl = document.createElement("input");
3478
3268
  this.labelEl = shadow.getElementById("floating-label");
3479
3269
  this.helperEl = shadow.getElementById("helper");
@@ -4067,8 +3857,8 @@ if (!customElements.get("wavelength-date-picker")) {
4067
3857
  }
4068
3858
 
4069
3859
  // src/web-components/wavelength-notification-panel.ts
4070
- var template4 = document.createElement("template");
4071
- template4.innerHTML = `
3860
+ var template2 = document.createElement("template");
3861
+ template2.innerHTML = `
4072
3862
  <style>
4073
3863
  :host {
4074
3864
  display: flex;
@@ -4267,7 +4057,7 @@ var WavelengthNotificationPanel = class extends HTMLElement {
4267
4057
  constructor() {
4268
4058
  super();
4269
4059
  const shadow = this.attachShadow({ mode: "open" });
4270
- shadow.appendChild(template4.content.cloneNode(true));
4060
+ shadow.appendChild(template2.content.cloneNode(true));
4271
4061
  this.panelButton = shadow.querySelector(".pill");
4272
4062
  this.panel = shadow.querySelector(".dropdown-panel");
4273
4063
  this.signOutButton = shadow.querySelector(".footer-button-sign-out");
@@ -4331,8 +4121,8 @@ if (!customElements.get("wavelength-notification-panel")) {
4331
4121
  }
4332
4122
 
4333
4123
  // src/web-components/wavelength-multi-select-autocomplete.ts
4334
- var template5 = document.createElement("template");
4335
- template5.innerHTML = `
4124
+ var template3 = document.createElement("template");
4125
+ template3.innerHTML = `
4336
4126
  <style>
4337
4127
  .multi-select-container {
4338
4128
  background-color: white;
@@ -4345,6 +4135,10 @@ template5.innerHTML = `
4345
4135
  font-family: Inter, sans-serif;
4346
4136
  font-size: 14px;
4347
4137
  }
4138
+
4139
+ .disabled {
4140
+ pointer-events: none;
4141
+ }
4348
4142
 
4349
4143
  .multi-select-input-wrapper {
4350
4144
  display: flex;
@@ -4541,6 +4335,8 @@ template5.innerHTML = `
4541
4335
  .multi-select-arrow:hover {
4542
4336
  background-color: #f3eeee;
4543
4337
  }
4338
+
4339
+ .click-disbl
4544
4340
  </style>
4545
4341
 
4546
4342
  <div class="multi-select-container" part="multi-select-container">
@@ -4574,7 +4370,7 @@ var BaseWavelengthMultiSelectAutocomplete = class extends HTMLElement {
4574
4370
  this._internals = this.attachInternals();
4575
4371
  this._internals.role = "combobox";
4576
4372
  const shadow = this.attachShadow({ mode: "open" });
4577
- shadow.appendChild(template5.content.cloneNode(true));
4373
+ shadow.appendChild(template3.content.cloneNode(true));
4578
4374
  this._container = this.shadowRoot.querySelector(".multi-select-container");
4579
4375
  this._inputWrapper = this.shadowRoot.querySelector(".multi-select-input-wrapper");
4580
4376
  this._input = this.shadowRoot.querySelector(".multi-select-input");
@@ -4614,7 +4410,7 @@ var BaseWavelengthMultiSelectAutocomplete = class extends HTMLElement {
4614
4410
  }
4615
4411
  // Define which attributes to observe for changes
4616
4412
  static get observedAttributes() {
4617
- return ["name", "placeholder", "label", "options"];
4413
+ return ["name", "placeholder", "label", "options", "disabled"];
4618
4414
  }
4619
4415
  // React to attribute changes
4620
4416
  attributeChangedCallback(name, oldValue, newValue) {
@@ -4631,6 +4427,9 @@ var BaseWavelengthMultiSelectAutocomplete = class extends HTMLElement {
4631
4427
  } else if (name === "options") {
4632
4428
  this._options = JSON.parse(newValue);
4633
4429
  this.render();
4430
+ } else if (name === "disabled") {
4431
+ this._input.disabled = newValue.toLowerCase() === "true";
4432
+ this._container.classList.add("disabled");
4634
4433
  }
4635
4434
  }
4636
4435
  // Fired when the component is added to the DOM
@@ -4791,8 +4590,8 @@ if (!customElements.get("wavelength-multi-select-autocomplete")) {
4791
4590
  }
4792
4591
 
4793
4592
  // src/web-components/wavelength-nav-bar.ts
4794
- var template6 = document.createElement("template");
4795
- template6.innerHTML = `
4593
+ var template4 = document.createElement("template");
4594
+ template4.innerHTML = `
4796
4595
  <style>
4797
4596
  :host {
4798
4597
  display: block;
@@ -4939,7 +4738,7 @@ var WavelengthNavBar = class extends HTMLElement {
4939
4738
  constructor() {
4940
4739
  super();
4941
4740
  const shadow = this.attachShadow({ mode: "open" });
4942
- shadow.appendChild(template6.content.cloneNode(true));
4741
+ shadow.appendChild(template4.content.cloneNode(true));
4943
4742
  shadow.querySelector("#logo")?.addEventListener("click", () => {
4944
4743
  this.dispatchEvent(new CustomEvent("home-click"));
4945
4744
  });
@@ -4984,8 +4783,8 @@ if (!customElements.get("wavelength-nav-bar")) {
4984
4783
 
4985
4784
  // src/web-components/wavelength-child-data-table.ts
4986
4785
  var import_react = __toESM(require_react(), 1);
4987
- var template7 = document.createElement("template");
4988
- template7.innerHTML = `
4786
+ var template5 = document.createElement("template");
4787
+ template5.innerHTML = `
4989
4788
 
4990
4789
  <style>
4991
4790
 
@@ -5136,7 +4935,7 @@ var ChildDataTable = class extends HTMLElement {
5136
4935
  <path d="M13.2375 0L7.5 5.725L1.7625 0L0 1.7625L7.5 9.2625L15 1.7625L13.2375 0Z" fill="currentColor"/>
5137
4936
  </svg>`;
5138
4937
  this.shadow = this.attachShadow({ mode: "open" });
5139
- this.shadow.append(template7.content.cloneNode(true));
4938
+ this.shadow.append(template5.content.cloneNode(true));
5140
4939
  }
5141
4940
  static get observedAttributes() {
5142
4941
  return ["table-columns", "table-data", "dropdown-arrow-location", "sort-icon", "dropdown-button-icon"];
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@wavelengthusaf/web-components",
3
3
  "author": "563 EWS - Wavelength",
4
4
  "license": "MIT",
5
- "version": "1.4.2",
5
+ "version": "1.6.0",
6
6
  "description": "Common component library used by Wavelength developers (NATIVE WEB COMPONENTS)",
7
7
  "main": "/dist/cjs/index.cjs",
8
8
  "module": "/dist/esm/index.js",