@wavelengthusaf/web-components 1.4.1 → 1.5.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.
@@ -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;
@@ -4574,7 +4364,7 @@ var BaseWavelengthMultiSelectAutocomplete = class extends HTMLElement {
4574
4364
  this._internals = this.attachInternals();
4575
4365
  this._internals.role = "combobox";
4576
4366
  const shadow = this.attachShadow({ mode: "open" });
4577
- shadow.appendChild(template5.content.cloneNode(true));
4367
+ shadow.appendChild(template3.content.cloneNode(true));
4578
4368
  this._container = this.shadowRoot.querySelector(".multi-select-container");
4579
4369
  this._inputWrapper = this.shadowRoot.querySelector(".multi-select-input-wrapper");
4580
4370
  this._input = this.shadowRoot.querySelector(".multi-select-input");
@@ -4791,8 +4581,8 @@ if (!customElements.get("wavelength-multi-select-autocomplete")) {
4791
4581
  }
4792
4582
 
4793
4583
  // src/web-components/wavelength-nav-bar.ts
4794
- var template6 = document.createElement("template");
4795
- template6.innerHTML = `
4584
+ var template4 = document.createElement("template");
4585
+ template4.innerHTML = `
4796
4586
  <style>
4797
4587
  :host {
4798
4588
  display: block;
@@ -4939,7 +4729,7 @@ var WavelengthNavBar = class extends HTMLElement {
4939
4729
  constructor() {
4940
4730
  super();
4941
4731
  const shadow = this.attachShadow({ mode: "open" });
4942
- shadow.appendChild(template6.content.cloneNode(true));
4732
+ shadow.appendChild(template4.content.cloneNode(true));
4943
4733
  _optionalChain([shadow, 'access', _61 => _61.querySelector, 'call', _62 => _62("#logo"), 'optionalAccess', _63 => _63.addEventListener, 'call', _64 => _64("click", () => {
4944
4734
  this.dispatchEvent(new CustomEvent("home-click"));
4945
4735
  })]);
@@ -4984,8 +4774,8 @@ if (!customElements.get("wavelength-nav-bar")) {
4984
4774
 
4985
4775
  // src/web-components/wavelength-child-data-table.ts
4986
4776
  var import_react = __toESM(require_react(), 1);
4987
- var template7 = document.createElement("template");
4988
- template7.innerHTML = `
4777
+ var template5 = document.createElement("template");
4778
+ template5.innerHTML = `
4989
4779
 
4990
4780
  <style>
4991
4781
 
@@ -5136,7 +4926,7 @@ var ChildDataTable = class extends HTMLElement {
5136
4926
  <path d="M13.2375 0L7.5 5.725L1.7625 0L0 1.7625L7.5 9.2625L15 1.7625L13.2375 0Z" fill="currentColor"/>
5137
4927
  </svg>`;
5138
4928
  this.shadow = this.attachShadow({ mode: "open" });
5139
- this.shadow.append(template7.content.cloneNode(true));
4929
+ this.shadow.append(template5.content.cloneNode(true));
5140
4930
  }
5141
4931
  static get observedAttributes() {
5142
4932
  return ["table-columns", "table-data", "dropdown-arrow-location", "sort-icon", "dropdown-button-icon"];
@@ -5436,6 +5226,299 @@ if (!customElements.get("wavelength-child-data-table")) {
5436
5226
  customElements.define("wavelength-child-data-table", ChildDataTable);
5437
5227
  }
5438
5228
 
5229
+ // src/functions/swapCSSClass.ts
5230
+ function swapCSSClass(element, remove, add) {
5231
+ element.classList.remove(...remove);
5232
+ if (add) element.classList.add(add);
5233
+ }
5234
+
5235
+ // src/functions/getRequiredElement.ts
5236
+ function getRequiredElement(root, selector) {
5237
+ const el = root.querySelector(`${selector}`);
5238
+ if (!el) {
5239
+ throw new Error(`Missing element: ${selector}`);
5240
+ }
5241
+ return el;
5242
+ }
5243
+
5244
+ // src/web-components/wavelength-checkbox.ts
5245
+ var checkboxTemplate = document.createElement("template");
5246
+ checkboxTemplate.innerHTML = `
5247
+ <style>
5248
+
5249
+ .checkbox-container {
5250
+ position: relative;
5251
+ display: inline-flex;
5252
+ align-items: center;
5253
+ cursor: pointer;
5254
+ }
5255
+
5256
+ .checkbox-container input {
5257
+ position: absolute;
5258
+ opacity: 0;
5259
+ pointer-events: none;
5260
+ }
5261
+
5262
+
5263
+ .custom-checkbox {
5264
+ --size: 20px;
5265
+ --border: 2px;
5266
+ --check-left: 6.5px;
5267
+ --check-top: 1.5px;
5268
+ --check-width: 5px;
5269
+ --check-height: 10px;
5270
+ --halo: 12px;
5271
+
5272
+ width: var(--size);
5273
+ height: var(--size);
5274
+ border: var(--border) solid #444;
5275
+ border-radius: 4px;
5276
+ background: #fff;
5277
+ position: relative;
5278
+ z-index: 1;
5279
+ box-sizing: border-box;
5280
+ }
5281
+
5282
+
5283
+ .custom-checkbox::before {
5284
+ content: "";
5285
+ position: absolute;
5286
+ inset: calc(var(--halo) * -1); /* controls halo size */
5287
+ background: rgba(0, 0, 0, 0.15);
5288
+ border-radius: 50%; /* THIS makes it circular */
5289
+ opacity: 0;
5290
+ transition: opacity 0.2s ease;
5291
+ z-index: -1;
5292
+ }
5293
+
5294
+
5295
+ .checkbox-container:hover .custom-checkbox::before {
5296
+ opacity: 1;
5297
+ }
5298
+
5299
+
5300
+ .checkbox-container input:checked + .custom-checkbox {
5301
+ background-color: #444;
5302
+ }
5303
+
5304
+
5305
+ .checkbox-container input:checked + .custom-checkbox::after {
5306
+ content: "";
5307
+ position: absolute;
5308
+ left: 50%;
5309
+ top: 50%;
5310
+ width: var(--check-width);
5311
+ height: var(--check-height);
5312
+ border: solid white;
5313
+ border-width: 0 var(--border) var(--border) 0;
5314
+ transform: translate(-50%, -60%) rotate(45deg);
5315
+ }
5316
+
5317
+ .checkbox-container input:checked + .custom-checkbox.light::after {
5318
+ border: solid white;
5319
+ border-width: 0 2px 2px 0;
5320
+ }
5321
+
5322
+ .checkbox-container input:checked + .custom-checkbox.dark::after {
5323
+ border: solid black;
5324
+ border-width: 0 2px 2px 0;
5325
+ }
5326
+
5327
+ .primary::before {
5328
+ background: #2196F335;
5329
+ }
5330
+
5331
+ .checkbox-container input:checked + .custom-checkbox.primary {
5332
+ background-color: #2196F3;
5333
+ border-color: #2196F3;
5334
+ }
5335
+
5336
+ .secondary::before {
5337
+ background: #7B1FA235;
5338
+ }
5339
+
5340
+ .checkbox-container input:checked + .custom-checkbox.secondary {
5341
+ background-color: #7B1FA2;
5342
+ border-color: #7B1FA2;
5343
+ }
5344
+
5345
+ .error::before {
5346
+ background: #D32F2F35;
5347
+ }
5348
+
5349
+ .checkbox-container input:checked + .custom-checkbox.error {
5350
+ background-color: #D32F2F;
5351
+ border-color: #D32F2F;
5352
+ }
5353
+
5354
+ .warning::before {
5355
+ background: #EF6C0035;
5356
+ }
5357
+
5358
+ .checkbox-container input:checked + .custom-checkbox.warning {
5359
+ background-color: #EF6C00;
5360
+ border-color: #EF6C00;
5361
+ }
5362
+
5363
+ .info::before {
5364
+ background: #0288D135;
5365
+ }
5366
+
5367
+ .checkbox-container input:checked + .custom-checkbox.info {
5368
+ background-color: #0288D1;
5369
+ border-color: #0288D1;
5370
+ }
5371
+
5372
+ .success::before {
5373
+ background: #2E7D3235;
5374
+ }
5375
+
5376
+ .checkbox-container input:checked + .custom-checkbox.success {
5377
+ background-color: #2E7D32;
5378
+ border-color: #2E7D32;
5379
+ }
5380
+
5381
+ .custom-checkbox.small {
5382
+ --size: 18px;
5383
+ --check-left: 4.5px;
5384
+ --check-top: 1px;
5385
+ --check-width: 3px;
5386
+ --check-height: 7px;
5387
+ --halo: 10px;
5388
+ }
5389
+
5390
+ .custom-checkbox.medium {
5391
+
5392
+ }
5393
+
5394
+ .custom-checkbox.large {
5395
+ --size: 25px;
5396
+ --border: 2px;
5397
+ --check-left: 9px;
5398
+ --check-top: 2px;
5399
+ --check-width: 7px;
5400
+ --check-height: 14px;
5401
+ --halo: 15px;
5402
+ }
5403
+
5404
+ .custom-checkbox.disabled {
5405
+ cursor: not-allowed;
5406
+ pointer-events: none;
5407
+ border-color: rgba(128, 128, 128, 0.85);
5408
+ background: #f5f5f5;
5409
+ }
5410
+
5411
+ .custom-checkbox.disabled::before {
5412
+ opacity: 0 !important;
5413
+ display: none;
5414
+ }
5415
+
5416
+ .checkbox-container:hover .custom-checkbox.disabled::before {
5417
+ opacity: 0;
5418
+ }
5419
+
5420
+ .checkbox-container input:checked + .custom-checkbox.disabled::after {
5421
+ border-color: rgba(120, 120, 120, 0.85);
5422
+ }
5423
+
5424
+ .checkbox-container::after {
5425
+ content: attr(text);
5426
+ font-size: 14px;
5427
+ font-family: "Segoe UI", "Helvetica Neue", Arial, sans-serif;
5428
+ line-height: 1;
5429
+ margin-left: 8px;
5430
+ color: #333;
5431
+ user-select: none;
5432
+ }
5433
+
5434
+
5435
+ .checkbox-container.small::after {
5436
+ font-size: 14px;
5437
+ }
5438
+
5439
+ .checkbox-container.medium::after {
5440
+ font-size: 16px; /* default */
5441
+ }
5442
+
5443
+ .checkbox-container.large::after {
5444
+ font-size: 18px;
5445
+ }
5446
+
5447
+ </style>
5448
+
5449
+ <label class="checkbox-container" text="">
5450
+ <input type="checkbox"/>
5451
+ <span class="custom-checkbox"></span>
5452
+ </label>
5453
+ `;
5454
+ var BaseWavelengthCheckbox = class extends HTMLElement {
5455
+ constructor() {
5456
+ super();
5457
+ this.initialized = false;
5458
+ this.attributeHandlers = {
5459
+ size: (value) => {
5460
+ swapCSSClass(this.elements.box, ["small", "medium", "large"], _nullishCoalesce(value, () => ( "medium")));
5461
+ },
5462
+ color: (value) => {
5463
+ swapCSSClass(this.elements.box, ["primary", "secondary", "error", "warning", "info", "success"], _nullishCoalesce(value, () => ( "primary")));
5464
+ },
5465
+ theme: (value) => {
5466
+ swapCSSClass(this.elements.box, ["light", "dark"], _nullishCoalesce(value, () => ( "light")));
5467
+ },
5468
+ disabled: (value) => {
5469
+ if (value === "") {
5470
+ this.elements.input.disabled = true;
5471
+ swapCSSClass(this.elements.box, ["enabled", "disabled"], "disabled");
5472
+ } else {
5473
+ swapCSSClass(this.elements.box, ["enabled", "disabled"], "enabled");
5474
+ this.elements.input.disabled = false;
5475
+ }
5476
+ },
5477
+ text: (value) => {
5478
+ if (value === null) {
5479
+ this.elements.label.removeAttribute("text");
5480
+ } else {
5481
+ this.elements.label.setAttribute("text", value);
5482
+ }
5483
+ },
5484
+ textSize: (value) => {
5485
+ swapCSSClass(this.elements.label, ["small", "medium", "large"], _nullishCoalesce(value, () => ( "medium")));
5486
+ }
5487
+ };
5488
+ this.attachShadow({ mode: "open" });
5489
+ }
5490
+ static get observedAttributes() {
5491
+ return ["size", "color", "theme", "disabled", "text", "text-size"];
5492
+ }
5493
+ connectedCallback() {
5494
+ if (!this.initialized) {
5495
+ this.shadowRoot.innerHTML = checkboxTemplate.innerHTML;
5496
+ this.elements = {
5497
+ box: getRequiredElement(this.shadowRoot, "span"),
5498
+ input: getRequiredElement(this.shadowRoot, "input"),
5499
+ label: getRequiredElement(this.shadowRoot, "label")
5500
+ };
5501
+ this.styleCheckbox();
5502
+ this.initialized = true;
5503
+ }
5504
+ }
5505
+ attributeChangedCallback() {
5506
+ if (this.initialized) this.styleCheckbox();
5507
+ }
5508
+ styleCheckbox() {
5509
+ if (!this.initialized) return;
5510
+ for (const key in this.attributeHandlers) {
5511
+ const attr = key === "textSize" ? "text-size" : key;
5512
+ this.attributeHandlers[key](this.getAttribute(attr));
5513
+ }
5514
+ }
5515
+ };
5516
+ var WavelengthCheckbox = class extends StylingMixin(BaseWavelengthCheckbox) {
5517
+ };
5518
+ if (!customElements.get("wavelength-checkbox")) {
5519
+ customElements.define("wavelength-checkbox", WavelengthCheckbox);
5520
+ }
5521
+
5439
5522
  // src/web-components/wavelength-file-drop-zone.ts
5440
5523
  var fileDropZoneTemplate = document.createElement("template");
5441
5524
  fileDropZoneTemplate.innerHTML = `
@@ -5655,7 +5738,8 @@ customElements.define("wavelength-file-drop-zone", WavelengthFileDropZone);
5655
5738
 
5656
5739
 
5657
5740
 
5658
- exports.BaseWavelengthInput = BaseWavelengthInput; exports.BaseWavelengthMultiSelectAutocomplete = BaseWavelengthMultiSelectAutocomplete; exports.ChildDataTable = ChildDataTable; exports.SampleComponent = SampleComponent; exports.WavelengthBanner = WavelengthBanner; exports.WavelengthButton = WavelengthButton; exports.WavelengthDatePicker = WavelengthDatePicker; exports.WavelengthFileDropZone = WavelengthFileDropZone; exports.WavelengthForm = WavelengthForm; exports.WavelengthInput = WavelengthInput; exports.WavelengthMultiSelectAutocomplete = WavelengthMultiSelectAutocomplete; exports.WavelengthNavBar = WavelengthNavBar; exports.WavelengthNotificationPanel = WavelengthNotificationPanel; exports.WavelengthProgressBar = WavelengthProgressBar; exports.WavelengthTitleBar = WavelengthTitleBar;
5741
+
5742
+ exports.BaseWavelengthInput = BaseWavelengthInput; exports.BaseWavelengthMultiSelectAutocomplete = BaseWavelengthMultiSelectAutocomplete; exports.ChildDataTable = ChildDataTable; exports.SampleComponent = SampleComponent; exports.WavelengthBanner = WavelengthBanner; exports.WavelengthButton = WavelengthButton; exports.WavelengthCheckbox = WavelengthCheckbox; exports.WavelengthDatePicker = WavelengthDatePicker; exports.WavelengthFileDropZone = WavelengthFileDropZone; exports.WavelengthForm = WavelengthForm; exports.WavelengthInput = WavelengthInput; exports.WavelengthMultiSelectAutocomplete = WavelengthMultiSelectAutocomplete; exports.WavelengthNavBar = WavelengthNavBar; exports.WavelengthNotificationPanel = WavelengthNotificationPanel; exports.WavelengthProgressBar = WavelengthProgressBar; exports.WavelengthTitleBar = WavelengthTitleBar;
5659
5743
  /*! Bundled license information:
5660
5744
 
5661
5745
  react/cjs/react.production.min.js: