@phcdevworks/spectre-components 1.5.0 → 1.7.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 +291 -2
- package/dist/alert.cjs +10 -3
- package/dist/alert.cjs.map +1 -1
- package/dist/alert.d.cts +4 -5
- package/dist/alert.d.ts +4 -5
- package/dist/alert.js +10 -3
- package/dist/alert.js.map +1 -1
- package/dist/avatar.cjs +11 -3
- package/dist/avatar.cjs.map +1 -1
- package/dist/avatar.d.cts +4 -5
- package/dist/avatar.d.ts +4 -5
- package/dist/avatar.js +11 -3
- package/dist/avatar.js.map +1 -1
- package/dist/badge.cjs +11 -3
- package/dist/badge.cjs.map +1 -1
- package/dist/badge.d.cts +4 -5
- package/dist/badge.d.ts +4 -5
- package/dist/badge.js +11 -3
- package/dist/badge.js.map +1 -1
- package/dist/{base-BRQ7QAAr.d.cts → base-D0s95V2v.d.cts} +2 -0
- package/dist/{base-BRQ7QAAr.d.ts → base-D0s95V2v.d.ts} +2 -0
- package/dist/button.cjs +14 -5
- package/dist/button.cjs.map +1 -1
- package/dist/button.d.cts +4 -5
- package/dist/button.d.ts +4 -5
- package/dist/button.js +14 -5
- package/dist/button.js.map +1 -1
- package/dist/card.cjs +11 -3
- package/dist/card.cjs.map +1 -1
- package/dist/card.d.cts +4 -5
- package/dist/card.d.ts +4 -5
- package/dist/card.js +11 -3
- package/dist/card.js.map +1 -1
- package/dist/checkbox.cjs +16 -5
- package/dist/checkbox.cjs.map +1 -1
- package/dist/checkbox.d.cts +2 -3
- package/dist/checkbox.d.ts +2 -3
- package/dist/checkbox.js +17 -6
- package/dist/checkbox.js.map +1 -1
- package/dist/container.cjs +421 -0
- package/dist/container.cjs.map +1 -0
- package/dist/container.d.cts +37 -0
- package/dist/container.d.ts +37 -0
- package/dist/container.js +417 -0
- package/dist/container.js.map +1 -0
- package/dist/dropdown.cjs +486 -0
- package/dist/dropdown.cjs.map +1 -0
- package/dist/dropdown.d.cts +69 -0
- package/dist/dropdown.d.ts +69 -0
- package/dist/dropdown.js +482 -0
- package/dist/dropdown.js.map +1 -0
- package/dist/fieldset.cjs +16 -7
- package/dist/fieldset.cjs.map +1 -1
- package/dist/fieldset.d.cts +2 -3
- package/dist/fieldset.d.ts +2 -3
- package/dist/fieldset.js +18 -9
- package/dist/fieldset.js.map +1 -1
- package/dist/form-DgzRhNmg.d.cts +46 -0
- package/dist/form-DgzRhNmg.d.ts +46 -0
- package/dist/grid.cjs +437 -0
- package/dist/grid.cjs.map +1 -0
- package/dist/grid.d.cts +42 -0
- package/dist/grid.d.ts +42 -0
- package/dist/grid.js +432 -0
- package/dist/grid.js.map +1 -0
- package/dist/icon-box.cjs +11 -3
- package/dist/icon-box.cjs.map +1 -1
- package/dist/icon-box.d.cts +4 -5
- package/dist/icon-box.d.ts +4 -5
- package/dist/icon-box.js +11 -3
- package/dist/icon-box.js.map +1 -1
- package/dist/index.cjs +1286 -66
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +13 -3
- package/dist/index.d.ts +13 -3
- package/dist/index.js +1259 -68
- package/dist/index.js.map +1 -1
- package/dist/input.cjs +10 -3
- package/dist/input.cjs.map +1 -1
- package/dist/input.d.cts +3 -4
- package/dist/input.d.ts +3 -4
- package/dist/input.js +10 -3
- package/dist/input.js.map +1 -1
- package/dist/label.cjs +17 -2
- package/dist/label.cjs.map +1 -1
- package/dist/label.d.cts +9 -3
- package/dist/label.d.ts +9 -3
- package/dist/label.js +18 -3
- package/dist/label.js.map +1 -1
- package/dist/modal.cjs +519 -0
- package/dist/modal.cjs.map +1 -0
- package/dist/modal.d.cts +52 -0
- package/dist/modal.d.ts +52 -0
- package/dist/modal.js +516 -0
- package/dist/modal.js.map +1 -0
- package/dist/nav.cjs +424 -0
- package/dist/nav.cjs.map +1 -0
- package/dist/nav.d.cts +45 -0
- package/dist/nav.d.ts +45 -0
- package/dist/nav.js +421 -0
- package/dist/nav.js.map +1 -0
- package/dist/pricing-card.cjs +11 -3
- package/dist/pricing-card.cjs.map +1 -1
- package/dist/pricing-card.d.cts +2 -3
- package/dist/pricing-card.d.ts +2 -3
- package/dist/pricing-card.js +11 -3
- package/dist/pricing-card.js.map +1 -1
- package/dist/{projectable-D6IDeKfr.d.ts → projectable-D9YCo9NY.d.ts} +1 -1
- package/dist/{projectable-Bx-IVk0w.d.cts → projectable-DLOn6eaW.d.cts} +1 -1
- package/dist/radio.cjs +16 -5
- package/dist/radio.cjs.map +1 -1
- package/dist/radio.d.cts +2 -3
- package/dist/radio.d.ts +2 -3
- package/dist/radio.js +17 -6
- package/dist/radio.js.map +1 -1
- package/dist/rating.cjs +19 -5
- package/dist/rating.cjs.map +1 -1
- package/dist/rating.d.cts +3 -4
- package/dist/rating.d.ts +3 -4
- package/dist/rating.js +19 -5
- package/dist/rating.js.map +1 -1
- package/dist/section.cjs +400 -0
- package/dist/section.cjs.map +1 -0
- package/dist/section.d.cts +25 -0
- package/dist/section.d.ts +25 -0
- package/dist/section.js +397 -0
- package/dist/section.js.map +1 -0
- package/dist/select.cjs +14 -5
- package/dist/select.cjs.map +1 -1
- package/dist/select.d.cts +3 -4
- package/dist/select.d.ts +3 -4
- package/dist/select.js +15 -6
- package/dist/select.js.map +1 -1
- package/dist/sidebar.cjs +481 -0
- package/dist/sidebar.cjs.map +1 -0
- package/dist/sidebar.d.cts +50 -0
- package/dist/sidebar.d.ts +50 -0
- package/dist/sidebar.js +478 -0
- package/dist/sidebar.js.map +1 -0
- package/dist/spinner.cjs +10 -0
- package/dist/spinner.cjs.map +1 -1
- package/dist/spinner.d.cts +3 -3
- package/dist/spinner.d.ts +3 -3
- package/dist/spinner.js +10 -0
- package/dist/spinner.js.map +1 -1
- package/dist/stack.cjs +443 -0
- package/dist/stack.cjs.map +1 -0
- package/dist/stack.d.cts +48 -0
- package/dist/stack.d.ts +48 -0
- package/dist/stack.js +437 -0
- package/dist/stack.js.map +1 -0
- package/dist/tag.cjs +11 -3
- package/dist/tag.cjs.map +1 -1
- package/dist/tag.d.cts +4 -5
- package/dist/tag.d.ts +4 -5
- package/dist/tag.js +11 -3
- package/dist/tag.js.map +1 -1
- package/dist/testimonial.cjs +11 -3
- package/dist/testimonial.cjs.map +1 -1
- package/dist/testimonial.d.cts +4 -5
- package/dist/testimonial.d.ts +4 -5
- package/dist/testimonial.js +11 -3
- package/dist/testimonial.js.map +1 -1
- package/dist/textarea.cjs +14 -5
- package/dist/textarea.cjs.map +1 -1
- package/dist/textarea.d.cts +2 -3
- package/dist/textarea.d.ts +2 -3
- package/dist/textarea.js +15 -6
- package/dist/textarea.js.map +1 -1
- package/dist/toast.cjs +475 -0
- package/dist/toast.cjs.map +1 -0
- package/dist/toast.d.cts +68 -0
- package/dist/toast.d.ts +68 -0
- package/dist/toast.js +471 -0
- package/dist/toast.js.map +1 -0
- package/dist/tooltip.cjs +444 -0
- package/dist/tooltip.cjs.map +1 -0
- package/dist/tooltip.d.cts +50 -0
- package/dist/tooltip.d.ts +50 -0
- package/dist/tooltip.js +440 -0
- package/dist/tooltip.js.map +1 -0
- package/package.json +71 -16
- package/dist/form-BumNzIay.d.cts +0 -28
- package/dist/form-BumNzIay.d.ts +0 -28
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getButtonClasses, getInputLabelClasses, getInputClasses, getBadgeClasses, getCardClasses, getIconBoxClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getTestimonialClasses, getAlertClasses, getAvatarClasses, getSpinnerClasses, getTagClasses, getPricingCardClasses } from '@phcdevworks/spectre-ui';
|
|
1
|
+
import { getButtonClasses, getInputLabelClasses, getInputClasses, getTextareaClasses, getSelectClasses, getCheckboxClasses, getRadioClasses, getLabelClasses, getFieldsetLegendClasses, getFieldsetClasses, getBadgeClasses, getCardClasses, getIconBoxClasses, getRatingClasses, getRatingStarClasses, getRatingStarsClasses, getRatingTextClasses, getTestimonialClasses, getAlertClasses, getAvatarClasses, getSpinnerClasses, getTagClasses, getPricingCardClasses, getContainerClasses, getGridClasses, getStackClasses, getDropdownClasses, getDropdownMenuClasses, getModalOverlayClasses, getModalClasses, getNavClasses, getSidebarClasses, getSidebarToggleClasses, getSidebarBackdropClasses, getToastClasses, getToastIconClasses, getTooltipClasses, getSectionClasses } from '@phcdevworks/spectre-ui';
|
|
2
2
|
import { LitElement, html, nothing } from 'lit';
|
|
3
3
|
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
4
4
|
import { live } from 'lit/directives/live.js';
|
|
@@ -142,6 +142,65 @@ var spectreAvatarShapes = ["circle", "square"];
|
|
|
142
142
|
function isAvatarShape(value) {
|
|
143
143
|
return spectreAvatarShapes.includes(value);
|
|
144
144
|
}
|
|
145
|
+
var spectreContainerMaxWidths = ["prose"];
|
|
146
|
+
function isContainerMaxWidth(value) {
|
|
147
|
+
return spectreContainerMaxWidths.includes(
|
|
148
|
+
value
|
|
149
|
+
);
|
|
150
|
+
}
|
|
151
|
+
var spectreGridColumns = [1, 2, 3, 4, 6, 12];
|
|
152
|
+
function isGridColumns(value) {
|
|
153
|
+
return spectreGridColumns.includes(value);
|
|
154
|
+
}
|
|
155
|
+
var spectreGridGaps = ["sm", "md", "lg"];
|
|
156
|
+
function isGridGap(value) {
|
|
157
|
+
return spectreGridGaps.includes(value);
|
|
158
|
+
}
|
|
159
|
+
var spectreStackDirections = ["vertical", "horizontal"];
|
|
160
|
+
function isStackDirection(value) {
|
|
161
|
+
return spectreStackDirections.includes(
|
|
162
|
+
value
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
var spectreStackBases = ["sidebar"];
|
|
166
|
+
function isStackBasis(value) {
|
|
167
|
+
return spectreStackBases.includes(value);
|
|
168
|
+
}
|
|
169
|
+
var spectreStackAligns = ["center", "stretch"];
|
|
170
|
+
function isStackAlign(value) {
|
|
171
|
+
return spectreStackAligns.includes(value);
|
|
172
|
+
}
|
|
173
|
+
var spectreDropdownPlacements = [
|
|
174
|
+
"bottom-start",
|
|
175
|
+
"bottom-end",
|
|
176
|
+
"top-start",
|
|
177
|
+
"top-end"
|
|
178
|
+
];
|
|
179
|
+
function isDropdownPlacement(value) {
|
|
180
|
+
return spectreDropdownPlacements.includes(
|
|
181
|
+
value
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
var spectreToastVariants = [
|
|
185
|
+
"info",
|
|
186
|
+
"success",
|
|
187
|
+
"warning",
|
|
188
|
+
"danger"
|
|
189
|
+
];
|
|
190
|
+
function isToastVariant(value) {
|
|
191
|
+
return spectreToastVariants.includes(value);
|
|
192
|
+
}
|
|
193
|
+
var spectreTooltipPlacements = [
|
|
194
|
+
"top",
|
|
195
|
+
"bottom",
|
|
196
|
+
"left",
|
|
197
|
+
"right"
|
|
198
|
+
];
|
|
199
|
+
function isTooltipPlacement(value) {
|
|
200
|
+
return spectreTooltipPlacements.includes(
|
|
201
|
+
value
|
|
202
|
+
);
|
|
203
|
+
}
|
|
145
204
|
function normalizeInt(value, fallback, min = 0) {
|
|
146
205
|
if (value == null || typeof value !== "number" || !Number.isInteger(value) || value < min) {
|
|
147
206
|
return fallback;
|
|
@@ -398,6 +457,16 @@ var SpectreBaseElement = class extends LitElement {
|
|
|
398
457
|
const value = this.ariaDescribedBy?.trim();
|
|
399
458
|
return value ? value : void 0;
|
|
400
459
|
}
|
|
460
|
+
// Subclasses that expose `disabled`/`loading` properties get this disabled
|
|
461
|
+
// calculation for free instead of redeclaring it per component.
|
|
462
|
+
get isDisabled() {
|
|
463
|
+
const self = this;
|
|
464
|
+
return (self.disabled ?? false) || (self.loading ?? false);
|
|
465
|
+
}
|
|
466
|
+
// Subclasses get this for free instead of redeclaring it per component.
|
|
467
|
+
get hasForwardedLabel() {
|
|
468
|
+
return Boolean(this.forwardedAriaLabel || this.forwardedAriaLabelledBy);
|
|
469
|
+
}
|
|
401
470
|
};
|
|
402
471
|
SpectreBaseElement.properties = {};
|
|
403
472
|
|
|
@@ -565,9 +634,6 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
|
|
|
565
634
|
variant: this.variant
|
|
566
635
|
});
|
|
567
636
|
}
|
|
568
|
-
get isDisabled() {
|
|
569
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
570
|
-
}
|
|
571
637
|
get visibleLabelFallback() {
|
|
572
638
|
const trimmedLabel = this.label?.trim();
|
|
573
639
|
return trimmedLabel ? trimmedLabel : void 0;
|
|
@@ -583,7 +649,8 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
|
|
|
583
649
|
return html`<span
|
|
584
650
|
class="${getInputLabelClasses({ disabled: this.isDisabled })}"
|
|
585
651
|
data-sp-button-loading-label
|
|
586
|
-
|
|
652
|
+
>${this.loadingLabel}</span
|
|
653
|
+
>`;
|
|
587
654
|
}
|
|
588
655
|
if (this.hasProjectedContent) {
|
|
589
656
|
return this.projectedContent;
|
|
@@ -591,7 +658,8 @@ var SpectreButtonElement = class extends SpectreProjectableElement {
|
|
|
591
658
|
return this.visibleLabelFallback ? html`<span
|
|
592
659
|
class="${getInputLabelClasses({ disabled: this.isDisabled })}"
|
|
593
660
|
data-sp-button-label-fallback
|
|
594
|
-
|
|
661
|
+
>${this.visibleLabelFallback}</span
|
|
662
|
+
>` : nothing;
|
|
595
663
|
}
|
|
596
664
|
render() {
|
|
597
665
|
return html`<button
|
|
@@ -731,9 +799,6 @@ var SpectreInputElement = class extends SpectreBaseElement {
|
|
|
731
799
|
state: this.isDisabled ? this.disabled ? "disabled" : "loading" : this.invalid ? "error" : this.success ? "success" : "default"
|
|
732
800
|
});
|
|
733
801
|
}
|
|
734
|
-
get isDisabled() {
|
|
735
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
736
|
-
}
|
|
737
802
|
get nativeInput() {
|
|
738
803
|
return this.querySelector("[data-sp-input-native]");
|
|
739
804
|
}
|
|
@@ -910,16 +975,15 @@ var SpectreTextareaElement = class extends SpectreBaseElement {
|
|
|
910
975
|
}
|
|
911
976
|
}
|
|
912
977
|
get textareaClasses() {
|
|
913
|
-
return
|
|
978
|
+
return getTextareaClasses({
|
|
914
979
|
fullWidth: this.fullWidth ?? false,
|
|
915
980
|
pill: this.pill ?? false,
|
|
916
981
|
size: this.size,
|
|
917
|
-
|
|
982
|
+
disabled: this.disabled ?? false,
|
|
983
|
+
loading: this.loading ?? false,
|
|
984
|
+
state: this.invalid ? "invalid" : this.success ? "success" : "default"
|
|
918
985
|
});
|
|
919
986
|
}
|
|
920
|
-
get isDisabled() {
|
|
921
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
922
|
-
}
|
|
923
987
|
get nativeTextarea() {
|
|
924
988
|
return this.querySelector("[data-sp-textarea-native]");
|
|
925
989
|
}
|
|
@@ -1105,16 +1169,15 @@ var SpectreSelectElement = class extends SpectreProjectableElement {
|
|
|
1105
1169
|
}
|
|
1106
1170
|
}
|
|
1107
1171
|
get selectClasses() {
|
|
1108
|
-
return
|
|
1172
|
+
return getSelectClasses({
|
|
1109
1173
|
fullWidth: this.fullWidth ?? false,
|
|
1110
1174
|
pill: this.pill ?? false,
|
|
1111
1175
|
size: this.size,
|
|
1112
|
-
|
|
1176
|
+
disabled: this.disabled ?? false,
|
|
1177
|
+
loading: this.loading ?? false,
|
|
1178
|
+
state: this.invalid ? "invalid" : this.success ? "success" : "default"
|
|
1113
1179
|
});
|
|
1114
1180
|
}
|
|
1115
|
-
get isDisabled() {
|
|
1116
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1117
|
-
}
|
|
1118
1181
|
handleInput(event) {
|
|
1119
1182
|
const select = event.currentTarget;
|
|
1120
1183
|
this.value = select.value;
|
|
@@ -1243,9 +1306,6 @@ var SpectreCheckboxElement = class extends SpectreProjectableElement {
|
|
|
1243
1306
|
get nativeInput() {
|
|
1244
1307
|
return this.querySelector("[data-sp-checkbox-native]");
|
|
1245
1308
|
}
|
|
1246
|
-
get isDisabled() {
|
|
1247
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1248
|
-
}
|
|
1249
1309
|
get visibleLabelFallback() {
|
|
1250
1310
|
const trimmedLabel = this.label?.trim();
|
|
1251
1311
|
return trimmedLabel ? trimmedLabel : void 0;
|
|
@@ -1268,7 +1328,8 @@ var SpectreCheckboxElement = class extends SpectreProjectableElement {
|
|
|
1268
1328
|
const labelContent = this.hasProjectedContent ? this.projectedContent : this.visibleLabelFallback ? html`<span
|
|
1269
1329
|
class="${getInputLabelClasses({ disabled: this.isDisabled })}"
|
|
1270
1330
|
data-sp-checkbox-label-fallback
|
|
1271
|
-
|
|
1331
|
+
>${this.visibleLabelFallback}</span
|
|
1332
|
+
>` : nothing;
|
|
1272
1333
|
return html`<label data-sp-checkbox-label>
|
|
1273
1334
|
<input
|
|
1274
1335
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -1290,7 +1351,10 @@ var SpectreCheckboxElement = class extends SpectreProjectableElement {
|
|
|
1290
1351
|
@change="${this.handleChange}"
|
|
1291
1352
|
@input="${this.handleInput}"
|
|
1292
1353
|
/>
|
|
1293
|
-
<span
|
|
1354
|
+
<span
|
|
1355
|
+
class="${getCheckboxClasses({ checked: this.checked ?? false, disabled: this.isDisabled })}"
|
|
1356
|
+
data-sp-checkbox-indicator
|
|
1357
|
+
></span>
|
|
1294
1358
|
${labelContent}
|
|
1295
1359
|
</label>`;
|
|
1296
1360
|
}
|
|
@@ -1380,9 +1444,6 @@ var SpectreRadioElement = class extends SpectreProjectableElement {
|
|
|
1380
1444
|
get nativeInput() {
|
|
1381
1445
|
return this.querySelector("[data-sp-radio-native]");
|
|
1382
1446
|
}
|
|
1383
|
-
get isDisabled() {
|
|
1384
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1385
|
-
}
|
|
1386
1447
|
get visibleLabelFallback() {
|
|
1387
1448
|
const trimmedLabel = this.label?.trim();
|
|
1388
1449
|
return trimmedLabel ? trimmedLabel : void 0;
|
|
@@ -1425,7 +1486,8 @@ var SpectreRadioElement = class extends SpectreProjectableElement {
|
|
|
1425
1486
|
const labelContent = this.hasProjectedContent ? this.projectedContent : this.visibleLabelFallback ? html`<span
|
|
1426
1487
|
class="${getInputLabelClasses({ disabled: this.isDisabled })}"
|
|
1427
1488
|
data-sp-radio-label-fallback
|
|
1428
|
-
|
|
1489
|
+
>${this.visibleLabelFallback}</span
|
|
1490
|
+
>` : nothing;
|
|
1429
1491
|
return html`<label data-sp-radio-label>
|
|
1430
1492
|
<input
|
|
1431
1493
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -1447,7 +1509,10 @@ var SpectreRadioElement = class extends SpectreProjectableElement {
|
|
|
1447
1509
|
@change="${this.handleChange}"
|
|
1448
1510
|
@input="${this.handleInput}"
|
|
1449
1511
|
/>
|
|
1450
|
-
<span
|
|
1512
|
+
<span
|
|
1513
|
+
class="${getRadioClasses({ checked: this.checked ?? false, disabled: this.isDisabled })}"
|
|
1514
|
+
data-sp-radio-indicator
|
|
1515
|
+
></span>
|
|
1451
1516
|
${labelContent}
|
|
1452
1517
|
</label>`;
|
|
1453
1518
|
}
|
|
@@ -1476,11 +1541,15 @@ var SpectreLabelElement = class extends SpectreProjectableElement {
|
|
|
1476
1541
|
constructor() {
|
|
1477
1542
|
super(...arguments);
|
|
1478
1543
|
this.disabled = false;
|
|
1544
|
+
this.required = false;
|
|
1479
1545
|
}
|
|
1480
1546
|
willUpdate(changedProperties) {
|
|
1481
1547
|
if (changedProperties.has("disabled") && this.disabled == null) {
|
|
1482
1548
|
this.disabled = false;
|
|
1483
1549
|
}
|
|
1550
|
+
if (changedProperties.has("required") && this.required == null) {
|
|
1551
|
+
this.required = false;
|
|
1552
|
+
}
|
|
1484
1553
|
}
|
|
1485
1554
|
get isDisabled() {
|
|
1486
1555
|
return this.disabled ?? false;
|
|
@@ -1518,7 +1587,7 @@ var SpectreLabelElement = class extends SpectreProjectableElement {
|
|
|
1518
1587
|
aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
|
|
1519
1588
|
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
1520
1589
|
aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
|
|
1521
|
-
class="${
|
|
1590
|
+
class="${getLabelClasses({ disabled: this.isDisabled, required: this.required ?? false })}"
|
|
1522
1591
|
data-sp-label-native
|
|
1523
1592
|
for="${ifDefined(this.htmlFor || void 0)}"
|
|
1524
1593
|
id="${ifDefined(this.id || void 0)}"
|
|
@@ -1530,7 +1599,8 @@ var SpectreLabelElement = class extends SpectreProjectableElement {
|
|
|
1530
1599
|
};
|
|
1531
1600
|
SpectreLabelElement.properties = {
|
|
1532
1601
|
disabled: { type: Boolean, reflect: true },
|
|
1533
|
-
htmlFor: { attribute: "for", type: String, reflect: true }
|
|
1602
|
+
htmlFor: { attribute: "for", type: String, reflect: true },
|
|
1603
|
+
required: { type: Boolean, reflect: true }
|
|
1534
1604
|
};
|
|
1535
1605
|
function defineSpectreLabel(tagName = "sp-label") {
|
|
1536
1606
|
const existingElement = customElements.get(tagName);
|
|
@@ -1582,9 +1652,6 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
|
|
|
1582
1652
|
const trimmedLegend = this.legend?.trim();
|
|
1583
1653
|
return trimmedLegend ? trimmedLegend : void 0;
|
|
1584
1654
|
}
|
|
1585
|
-
get isDisabled() {
|
|
1586
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1587
|
-
}
|
|
1588
1655
|
getContentContainer() {
|
|
1589
1656
|
return this.querySelector("[data-sp-fieldset-native]");
|
|
1590
1657
|
}
|
|
@@ -1616,6 +1683,10 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
|
|
|
1616
1683
|
this.getContentContainer()?.blur();
|
|
1617
1684
|
}
|
|
1618
1685
|
render() {
|
|
1686
|
+
const legendClasses = getFieldsetLegendClasses();
|
|
1687
|
+
const legendContent = this.visibleLegend ? html`<legend class="${legendClasses}" data-sp-fieldset-legend>
|
|
1688
|
+
${this.visibleLegend}
|
|
1689
|
+
</legend>` : nothing;
|
|
1619
1690
|
return html`<fieldset
|
|
1620
1691
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
1621
1692
|
aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
|
|
@@ -1624,6 +1695,7 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
|
|
|
1624
1695
|
aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
|
|
1625
1696
|
autocapitalize="${ifDefined(this.autocapitalize || void 0)}"
|
|
1626
1697
|
?autofocus="${this.autofocus}"
|
|
1698
|
+
class="${getFieldsetClasses({ disabled: this.isDisabled })}"
|
|
1627
1699
|
data-sp-fieldset-native
|
|
1628
1700
|
?disabled="${this.isDisabled}"
|
|
1629
1701
|
form="${ifDefined(this.form || void 0)}"
|
|
@@ -1632,10 +1704,7 @@ var SpectreFieldsetElement = class extends SpectreProjectableElement {
|
|
|
1632
1704
|
spellcheck="${ifDefined(this.getAttribute("spellcheck") ?? void 0)}"
|
|
1633
1705
|
title="${ifDefined(this.title || void 0)}"
|
|
1634
1706
|
>
|
|
1635
|
-
${
|
|
1636
|
-
class="${getInputLabelClasses({ disabled: this.isDisabled })}"
|
|
1637
|
-
data-sp-fieldset-legend
|
|
1638
|
-
>${this.visibleLegend}</legend>` : nothing}
|
|
1707
|
+
${legendContent}
|
|
1639
1708
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
1640
1709
|
</fieldset>`;
|
|
1641
1710
|
}
|
|
@@ -1714,9 +1783,6 @@ var SpectreBadgeElement = class extends SpectreProjectableElement {
|
|
|
1714
1783
|
variant: this.variant
|
|
1715
1784
|
});
|
|
1716
1785
|
}
|
|
1717
|
-
get isDisabled() {
|
|
1718
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1719
|
-
}
|
|
1720
1786
|
render() {
|
|
1721
1787
|
return html`<span
|
|
1722
1788
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -1726,6 +1792,7 @@ var SpectreBadgeElement = class extends SpectreProjectableElement {
|
|
|
1726
1792
|
class="${this.badgeClasses}"
|
|
1727
1793
|
data-sp-badge-native
|
|
1728
1794
|
id="${ifDefined(this.id || void 0)}"
|
|
1795
|
+
role="${ifDefined(this.hasForwardedLabel ? "group" : void 0)}"
|
|
1729
1796
|
title="${ifDefined(this.title || void 0)}"
|
|
1730
1797
|
>
|
|
1731
1798
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
@@ -1809,9 +1876,6 @@ var SpectreCardElement = class extends SpectreProjectableElement {
|
|
|
1809
1876
|
variant: this.variant
|
|
1810
1877
|
});
|
|
1811
1878
|
}
|
|
1812
|
-
get isDisabled() {
|
|
1813
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1814
|
-
}
|
|
1815
1879
|
render() {
|
|
1816
1880
|
return html`<div
|
|
1817
1881
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -1821,6 +1885,7 @@ var SpectreCardElement = class extends SpectreProjectableElement {
|
|
|
1821
1885
|
class="${this.cardClasses}"
|
|
1822
1886
|
data-sp-card-native
|
|
1823
1887
|
id="${ifDefined(this.id || void 0)}"
|
|
1888
|
+
role="${ifDefined(this.hasForwardedLabel ? "group" : void 0)}"
|
|
1824
1889
|
title="${ifDefined(this.title || void 0)}"
|
|
1825
1890
|
>
|
|
1826
1891
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
@@ -1910,9 +1975,6 @@ var SpectreIconBoxElement = class extends SpectreProjectableElement {
|
|
|
1910
1975
|
variant: this.variant
|
|
1911
1976
|
});
|
|
1912
1977
|
}
|
|
1913
|
-
get isDisabled() {
|
|
1914
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1915
|
-
}
|
|
1916
1978
|
render() {
|
|
1917
1979
|
return html`<div
|
|
1918
1980
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -1922,6 +1984,7 @@ var SpectreIconBoxElement = class extends SpectreProjectableElement {
|
|
|
1922
1984
|
class="${this.iconBoxClasses}"
|
|
1923
1985
|
data-sp-icon-box-native
|
|
1924
1986
|
id="${ifDefined(this.id || void 0)}"
|
|
1987
|
+
role="${ifDefined(this.hasForwardedLabel ? "group" : void 0)}"
|
|
1925
1988
|
title="${ifDefined(this.title || void 0)}"
|
|
1926
1989
|
>
|
|
1927
1990
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
@@ -1992,9 +2055,6 @@ var SpectreRatingElement = class extends SpectreBaseElement {
|
|
|
1992
2055
|
size: this.size
|
|
1993
2056
|
});
|
|
1994
2057
|
}
|
|
1995
|
-
get isDisabled() {
|
|
1996
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
1997
|
-
}
|
|
1998
2058
|
get effectiveMax() {
|
|
1999
2059
|
return this.max ?? 5;
|
|
2000
2060
|
}
|
|
@@ -2009,7 +2069,11 @@ var SpectreRatingElement = class extends SpectreBaseElement {
|
|
|
2009
2069
|
renderStars() {
|
|
2010
2070
|
const stars = [];
|
|
2011
2071
|
for (let i = 1; i <= this.effectiveMax; i++) {
|
|
2012
|
-
stars.push(
|
|
2072
|
+
stars.push(
|
|
2073
|
+
html`<span
|
|
2074
|
+
class="${getRatingStarClasses(i <= this.effectiveValue)}"
|
|
2075
|
+
></span>`
|
|
2076
|
+
);
|
|
2013
2077
|
}
|
|
2014
2078
|
return stars;
|
|
2015
2079
|
}
|
|
@@ -2027,7 +2091,10 @@ var SpectreRatingElement = class extends SpectreBaseElement {
|
|
|
2027
2091
|
title="${ifDefined(this.title || void 0)}"
|
|
2028
2092
|
>
|
|
2029
2093
|
<div class="${getRatingStarsClasses()}">${this.renderStars()}</div>
|
|
2030
|
-
${trimmedLabel ? html`<span
|
|
2094
|
+
${trimmedLabel ? html`<span
|
|
2095
|
+
class="${getRatingTextClasses({ disabled: this.isDisabled })}"
|
|
2096
|
+
>${trimmedLabel}</span
|
|
2097
|
+
>` : nothing}
|
|
2031
2098
|
</div>`;
|
|
2032
2099
|
}
|
|
2033
2100
|
};
|
|
@@ -2104,9 +2171,6 @@ var SpectreTestimonialElement = class extends SpectreProjectableElement {
|
|
|
2104
2171
|
variant: this.variant
|
|
2105
2172
|
});
|
|
2106
2173
|
}
|
|
2107
|
-
get isDisabled() {
|
|
2108
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
2109
|
-
}
|
|
2110
2174
|
render() {
|
|
2111
2175
|
return html`<div
|
|
2112
2176
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -2116,6 +2180,7 @@ var SpectreTestimonialElement = class extends SpectreProjectableElement {
|
|
|
2116
2180
|
class="${this.testimonialClasses}"
|
|
2117
2181
|
data-sp-testimonial-native
|
|
2118
2182
|
id="${ifDefined(this.id || void 0)}"
|
|
2183
|
+
role="${ifDefined(this.hasForwardedLabel ? "group" : void 0)}"
|
|
2119
2184
|
title="${ifDefined(this.title || void 0)}"
|
|
2120
2185
|
>
|
|
2121
2186
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
@@ -2199,9 +2264,6 @@ var SpectreAlertElement = class extends SpectreProjectableElement {
|
|
|
2199
2264
|
variant: this.variant
|
|
2200
2265
|
});
|
|
2201
2266
|
}
|
|
2202
|
-
get isDisabled() {
|
|
2203
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
2204
|
-
}
|
|
2205
2267
|
render() {
|
|
2206
2268
|
return html`<div
|
|
2207
2269
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -2301,9 +2363,6 @@ var SpectreAvatarElement = class extends SpectreProjectableElement {
|
|
|
2301
2363
|
size: this.size
|
|
2302
2364
|
});
|
|
2303
2365
|
}
|
|
2304
|
-
get isDisabled() {
|
|
2305
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
2306
|
-
}
|
|
2307
2366
|
render() {
|
|
2308
2367
|
return html`<div
|
|
2309
2368
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -2313,6 +2372,7 @@ var SpectreAvatarElement = class extends SpectreProjectableElement {
|
|
|
2313
2372
|
class="${this.avatarClasses}"
|
|
2314
2373
|
data-sp-avatar-native
|
|
2315
2374
|
id="${ifDefined(this.id || void 0)}"
|
|
2375
|
+
role="${ifDefined(this.hasForwardedLabel ? "group" : void 0)}"
|
|
2316
2376
|
title="${ifDefined(this.title || void 0)}"
|
|
2317
2377
|
>
|
|
2318
2378
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
@@ -2480,9 +2540,6 @@ var SpectreTagElement = class extends SpectreProjectableElement {
|
|
|
2480
2540
|
variant: this.variant
|
|
2481
2541
|
});
|
|
2482
2542
|
}
|
|
2483
|
-
get isDisabled() {
|
|
2484
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
2485
|
-
}
|
|
2486
2543
|
render() {
|
|
2487
2544
|
return html`<span
|
|
2488
2545
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -2492,6 +2549,7 @@ var SpectreTagElement = class extends SpectreProjectableElement {
|
|
|
2492
2549
|
class="${this.tagClasses}"
|
|
2493
2550
|
data-sp-tag-native
|
|
2494
2551
|
id="${ifDefined(this.id || void 0)}"
|
|
2552
|
+
role="${ifDefined(this.hasForwardedLabel ? "group" : void 0)}"
|
|
2495
2553
|
title="${ifDefined(this.title || void 0)}"
|
|
2496
2554
|
>
|
|
2497
2555
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
@@ -2573,9 +2631,6 @@ var SpectrePricingCardElement = class extends SpectreProjectableElement {
|
|
|
2573
2631
|
loading: this.loading ?? false
|
|
2574
2632
|
});
|
|
2575
2633
|
}
|
|
2576
|
-
get isDisabled() {
|
|
2577
|
-
return (this.disabled ?? false) || (this.loading ?? false);
|
|
2578
|
-
}
|
|
2579
2634
|
render() {
|
|
2580
2635
|
return html`<div
|
|
2581
2636
|
aria-busy="${this.loading ? "true" : "false"}"
|
|
@@ -2585,6 +2640,7 @@ var SpectrePricingCardElement = class extends SpectreProjectableElement {
|
|
|
2585
2640
|
class="${this.pricingCardClasses}"
|
|
2586
2641
|
data-sp-pricing-card-native
|
|
2587
2642
|
id="${ifDefined(this.id || void 0)}"
|
|
2643
|
+
role="${ifDefined(this.hasForwardedLabel ? "group" : void 0)}"
|
|
2588
2644
|
title="${ifDefined(this.title || void 0)}"
|
|
2589
2645
|
>
|
|
2590
2646
|
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
@@ -2606,6 +2662,1131 @@ function defineSpectrePricingCard(tagName = "sp-pricing-card") {
|
|
|
2606
2662
|
customElements.define(tagName, SpectrePricingCardElement);
|
|
2607
2663
|
return SpectrePricingCardElement;
|
|
2608
2664
|
}
|
|
2665
|
+
var SpectreContainerElement = class extends SpectreProjectableElement {
|
|
2666
|
+
constructor() {
|
|
2667
|
+
super(...arguments);
|
|
2668
|
+
this.maxWidth = void 0;
|
|
2669
|
+
}
|
|
2670
|
+
get id() {
|
|
2671
|
+
return super.id;
|
|
2672
|
+
}
|
|
2673
|
+
set id(value) {
|
|
2674
|
+
super.id = value;
|
|
2675
|
+
}
|
|
2676
|
+
get title() {
|
|
2677
|
+
return super.title;
|
|
2678
|
+
}
|
|
2679
|
+
set title(value) {
|
|
2680
|
+
super.title = value;
|
|
2681
|
+
}
|
|
2682
|
+
getContentContainer() {
|
|
2683
|
+
return this.querySelector("[data-sp-container-native]");
|
|
2684
|
+
}
|
|
2685
|
+
isInternalNode(node) {
|
|
2686
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2687
|
+
return false;
|
|
2688
|
+
}
|
|
2689
|
+
const el = node;
|
|
2690
|
+
return el.hasAttribute("data-sp-container-native");
|
|
2691
|
+
}
|
|
2692
|
+
willUpdate(changedProperties) {
|
|
2693
|
+
if (changedProperties.has("maxWidth") && this.maxWidth != null && !isContainerMaxWidth(this.maxWidth)) {
|
|
2694
|
+
this.maxWidth = void 0;
|
|
2695
|
+
}
|
|
2696
|
+
}
|
|
2697
|
+
get containerClasses() {
|
|
2698
|
+
return getContainerClasses(
|
|
2699
|
+
this.maxWidth != null ? { maxWidth: this.maxWidth } : {}
|
|
2700
|
+
);
|
|
2701
|
+
}
|
|
2702
|
+
render() {
|
|
2703
|
+
return html`<div
|
|
2704
|
+
aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
|
|
2705
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
2706
|
+
aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
|
|
2707
|
+
class="${this.containerClasses}"
|
|
2708
|
+
data-sp-container-native
|
|
2709
|
+
id="${ifDefined(this.id || void 0)}"
|
|
2710
|
+
title="${ifDefined(this.title || void 0)}"
|
|
2711
|
+
>
|
|
2712
|
+
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
2713
|
+
</div>`;
|
|
2714
|
+
}
|
|
2715
|
+
};
|
|
2716
|
+
SpectreContainerElement.properties = {
|
|
2717
|
+
maxWidth: { attribute: "max-width", type: String, reflect: true }
|
|
2718
|
+
};
|
|
2719
|
+
function defineSpectreContainer(tagName = "sp-container") {
|
|
2720
|
+
const existingElement = customElements.get(tagName);
|
|
2721
|
+
if (existingElement) {
|
|
2722
|
+
return existingElement;
|
|
2723
|
+
}
|
|
2724
|
+
customElements.define(tagName, SpectreContainerElement);
|
|
2725
|
+
return SpectreContainerElement;
|
|
2726
|
+
}
|
|
2727
|
+
var SpectreGridElement = class extends SpectreProjectableElement {
|
|
2728
|
+
constructor() {
|
|
2729
|
+
super(...arguments);
|
|
2730
|
+
this.columns = 1;
|
|
2731
|
+
this.gap = "md";
|
|
2732
|
+
}
|
|
2733
|
+
get id() {
|
|
2734
|
+
return super.id;
|
|
2735
|
+
}
|
|
2736
|
+
set id(value) {
|
|
2737
|
+
super.id = value;
|
|
2738
|
+
}
|
|
2739
|
+
get title() {
|
|
2740
|
+
return super.title;
|
|
2741
|
+
}
|
|
2742
|
+
set title(value) {
|
|
2743
|
+
super.title = value;
|
|
2744
|
+
}
|
|
2745
|
+
getContentContainer() {
|
|
2746
|
+
return this.querySelector("[data-sp-grid-native]");
|
|
2747
|
+
}
|
|
2748
|
+
isInternalNode(node) {
|
|
2749
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2750
|
+
return false;
|
|
2751
|
+
}
|
|
2752
|
+
const el = node;
|
|
2753
|
+
return el.hasAttribute("data-sp-grid-native");
|
|
2754
|
+
}
|
|
2755
|
+
willUpdate(changedProperties) {
|
|
2756
|
+
if (changedProperties.has("columns")) {
|
|
2757
|
+
const normalized = normalizeInt(this.columns, void 0, 1);
|
|
2758
|
+
this.columns = normalized != null && isGridColumns(normalized) ? normalized : 1;
|
|
2759
|
+
}
|
|
2760
|
+
if (changedProperties.has("gap") && (this.gap == null || !isGridGap(this.gap))) {
|
|
2761
|
+
this.gap = "md";
|
|
2762
|
+
}
|
|
2763
|
+
}
|
|
2764
|
+
get gridClasses() {
|
|
2765
|
+
return getGridClasses({
|
|
2766
|
+
columns: this.columns,
|
|
2767
|
+
gap: this.gap
|
|
2768
|
+
});
|
|
2769
|
+
}
|
|
2770
|
+
render() {
|
|
2771
|
+
return html`<div
|
|
2772
|
+
aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
|
|
2773
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
2774
|
+
aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
|
|
2775
|
+
class="${this.gridClasses}"
|
|
2776
|
+
data-sp-grid-native
|
|
2777
|
+
id="${ifDefined(this.id || void 0)}"
|
|
2778
|
+
title="${ifDefined(this.title || void 0)}"
|
|
2779
|
+
>
|
|
2780
|
+
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
2781
|
+
</div>`;
|
|
2782
|
+
}
|
|
2783
|
+
};
|
|
2784
|
+
SpectreGridElement.properties = {
|
|
2785
|
+
columns: { type: Number, reflect: true },
|
|
2786
|
+
gap: { type: String, reflect: true }
|
|
2787
|
+
};
|
|
2788
|
+
function defineSpectreGrid(tagName = "sp-grid") {
|
|
2789
|
+
const existingElement = customElements.get(tagName);
|
|
2790
|
+
if (existingElement) {
|
|
2791
|
+
return existingElement;
|
|
2792
|
+
}
|
|
2793
|
+
customElements.define(tagName, SpectreGridElement);
|
|
2794
|
+
return SpectreGridElement;
|
|
2795
|
+
}
|
|
2796
|
+
var SpectreSectionElement = class extends SpectreProjectableElement {
|
|
2797
|
+
get id() {
|
|
2798
|
+
return super.id;
|
|
2799
|
+
}
|
|
2800
|
+
set id(value) {
|
|
2801
|
+
super.id = value;
|
|
2802
|
+
}
|
|
2803
|
+
get title() {
|
|
2804
|
+
return super.title;
|
|
2805
|
+
}
|
|
2806
|
+
set title(value) {
|
|
2807
|
+
super.title = value;
|
|
2808
|
+
}
|
|
2809
|
+
getContentContainer() {
|
|
2810
|
+
return this.querySelector("[data-sp-section-native]");
|
|
2811
|
+
}
|
|
2812
|
+
isInternalNode(node) {
|
|
2813
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2814
|
+
return false;
|
|
2815
|
+
}
|
|
2816
|
+
const el = node;
|
|
2817
|
+
return el.hasAttribute("data-sp-section-native");
|
|
2818
|
+
}
|
|
2819
|
+
get sectionClasses() {
|
|
2820
|
+
return getSectionClasses({});
|
|
2821
|
+
}
|
|
2822
|
+
render() {
|
|
2823
|
+
return html`<section
|
|
2824
|
+
aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
|
|
2825
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
2826
|
+
aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
|
|
2827
|
+
class="${this.sectionClasses}"
|
|
2828
|
+
data-sp-section-native
|
|
2829
|
+
id="${ifDefined(this.id || void 0)}"
|
|
2830
|
+
title="${ifDefined(this.title || void 0)}"
|
|
2831
|
+
>
|
|
2832
|
+
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
2833
|
+
</section>`;
|
|
2834
|
+
}
|
|
2835
|
+
};
|
|
2836
|
+
function defineSpectreSection(tagName = "sp-section") {
|
|
2837
|
+
const existingElement = customElements.get(tagName);
|
|
2838
|
+
if (existingElement) {
|
|
2839
|
+
return existingElement;
|
|
2840
|
+
}
|
|
2841
|
+
customElements.define(tagName, SpectreSectionElement);
|
|
2842
|
+
return SpectreSectionElement;
|
|
2843
|
+
}
|
|
2844
|
+
var SpectreStackElement = class extends SpectreProjectableElement {
|
|
2845
|
+
constructor() {
|
|
2846
|
+
super(...arguments);
|
|
2847
|
+
this.align = "center";
|
|
2848
|
+
this.basis = void 0;
|
|
2849
|
+
this.direction = "vertical";
|
|
2850
|
+
}
|
|
2851
|
+
get id() {
|
|
2852
|
+
return super.id;
|
|
2853
|
+
}
|
|
2854
|
+
set id(value) {
|
|
2855
|
+
super.id = value;
|
|
2856
|
+
}
|
|
2857
|
+
get title() {
|
|
2858
|
+
return super.title;
|
|
2859
|
+
}
|
|
2860
|
+
set title(value) {
|
|
2861
|
+
super.title = value;
|
|
2862
|
+
}
|
|
2863
|
+
getContentContainer() {
|
|
2864
|
+
return this.querySelector("[data-sp-stack-native]");
|
|
2865
|
+
}
|
|
2866
|
+
isInternalNode(node) {
|
|
2867
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2868
|
+
return false;
|
|
2869
|
+
}
|
|
2870
|
+
const el = node;
|
|
2871
|
+
return el.hasAttribute("data-sp-stack-native");
|
|
2872
|
+
}
|
|
2873
|
+
willUpdate(changedProperties) {
|
|
2874
|
+
if (changedProperties.has("direction") && (this.direction == null || !isStackDirection(this.direction))) {
|
|
2875
|
+
this.direction = "vertical";
|
|
2876
|
+
}
|
|
2877
|
+
if (changedProperties.has("basis") && this.basis != null && !isStackBasis(this.basis)) {
|
|
2878
|
+
this.basis = void 0;
|
|
2879
|
+
}
|
|
2880
|
+
if (changedProperties.has("align") && (this.align == null || !isStackAlign(this.align))) {
|
|
2881
|
+
this.align = "center";
|
|
2882
|
+
}
|
|
2883
|
+
}
|
|
2884
|
+
get stackClasses() {
|
|
2885
|
+
return getStackClasses({
|
|
2886
|
+
align: this.align,
|
|
2887
|
+
direction: this.direction,
|
|
2888
|
+
...this.basis != null ? { basis: this.basis } : {}
|
|
2889
|
+
});
|
|
2890
|
+
}
|
|
2891
|
+
render() {
|
|
2892
|
+
return html`<div
|
|
2893
|
+
aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
|
|
2894
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
2895
|
+
aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
|
|
2896
|
+
class="${this.stackClasses}"
|
|
2897
|
+
data-sp-stack-native
|
|
2898
|
+
id="${ifDefined(this.id || void 0)}"
|
|
2899
|
+
title="${ifDefined(this.title || void 0)}"
|
|
2900
|
+
>
|
|
2901
|
+
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
2902
|
+
</div>`;
|
|
2903
|
+
}
|
|
2904
|
+
};
|
|
2905
|
+
SpectreStackElement.properties = {
|
|
2906
|
+
align: { type: String, reflect: true },
|
|
2907
|
+
basis: { type: String, reflect: true },
|
|
2908
|
+
direction: { type: String, reflect: true }
|
|
2909
|
+
};
|
|
2910
|
+
function defineSpectreStack(tagName = "sp-stack") {
|
|
2911
|
+
const existingElement = customElements.get(tagName);
|
|
2912
|
+
if (existingElement) {
|
|
2913
|
+
return existingElement;
|
|
2914
|
+
}
|
|
2915
|
+
customElements.define(tagName, SpectreStackElement);
|
|
2916
|
+
return SpectreStackElement;
|
|
2917
|
+
}
|
|
2918
|
+
var SpectreDropdownElement = class extends SpectreBaseElement {
|
|
2919
|
+
constructor() {
|
|
2920
|
+
super(...arguments);
|
|
2921
|
+
this.fullWidth = false;
|
|
2922
|
+
this.open = false;
|
|
2923
|
+
this.placement = "bottom-start";
|
|
2924
|
+
this.triggerLabel = "Toggle menu";
|
|
2925
|
+
this.triggerContent = [];
|
|
2926
|
+
this.menuContent = [];
|
|
2927
|
+
this.handleDocumentClick = (event) => {
|
|
2928
|
+
if (!this.open) {
|
|
2929
|
+
return;
|
|
2930
|
+
}
|
|
2931
|
+
if (!event.composedPath().includes(this)) {
|
|
2932
|
+
this.close();
|
|
2933
|
+
}
|
|
2934
|
+
};
|
|
2935
|
+
this.handleDocumentKeydown = (event) => {
|
|
2936
|
+
if (event.key === "Escape" && this.open) {
|
|
2937
|
+
this.close();
|
|
2938
|
+
this.triggerElement?.focus();
|
|
2939
|
+
}
|
|
2940
|
+
};
|
|
2941
|
+
}
|
|
2942
|
+
get id() {
|
|
2943
|
+
return super.id;
|
|
2944
|
+
}
|
|
2945
|
+
set id(value) {
|
|
2946
|
+
super.id = value;
|
|
2947
|
+
}
|
|
2948
|
+
get title() {
|
|
2949
|
+
return super.title;
|
|
2950
|
+
}
|
|
2951
|
+
set title(value) {
|
|
2952
|
+
super.title = value;
|
|
2953
|
+
}
|
|
2954
|
+
isInternalNode(node) {
|
|
2955
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
2956
|
+
return false;
|
|
2957
|
+
}
|
|
2958
|
+
const el = node;
|
|
2959
|
+
return el.hasAttribute("data-sp-dropdown-menu") || el.hasAttribute("data-sp-dropdown-trigger");
|
|
2960
|
+
}
|
|
2961
|
+
syncProjectedContent() {
|
|
2962
|
+
const nextTriggerContent = [];
|
|
2963
|
+
const nextMenuContent = [];
|
|
2964
|
+
this.childNodes.forEach((node) => {
|
|
2965
|
+
if (this.isInternalNode(node)) {
|
|
2966
|
+
return;
|
|
2967
|
+
}
|
|
2968
|
+
const isTriggerSlot = node.nodeType === Node.ELEMENT_NODE && node.getAttribute("slot") === "trigger";
|
|
2969
|
+
if (isTriggerSlot) {
|
|
2970
|
+
nextTriggerContent.push(node);
|
|
2971
|
+
} else {
|
|
2972
|
+
nextMenuContent.push(node);
|
|
2973
|
+
}
|
|
2974
|
+
});
|
|
2975
|
+
const changed = nextTriggerContent.length !== this.triggerContent.length || nextTriggerContent.some((n, i) => n !== this.triggerContent[i]) || nextMenuContent.length !== this.menuContent.length || nextMenuContent.some((n, i) => n !== this.menuContent[i]);
|
|
2976
|
+
if (changed) {
|
|
2977
|
+
this.triggerContent = nextTriggerContent;
|
|
2978
|
+
this.menuContent = nextMenuContent;
|
|
2979
|
+
}
|
|
2980
|
+
return changed;
|
|
2981
|
+
}
|
|
2982
|
+
get hasTriggerContent() {
|
|
2983
|
+
return hasMeaningfulContent(this.triggerContent);
|
|
2984
|
+
}
|
|
2985
|
+
get hasMenuContent() {
|
|
2986
|
+
return hasMeaningfulContent(this.menuContent);
|
|
2987
|
+
}
|
|
2988
|
+
connectedCallback() {
|
|
2989
|
+
super.connectedCallback();
|
|
2990
|
+
this.syncProjectedContent();
|
|
2991
|
+
this.startContentObserver();
|
|
2992
|
+
document.addEventListener("click", this.handleDocumentClick);
|
|
2993
|
+
document.addEventListener("keydown", this.handleDocumentKeydown);
|
|
2994
|
+
}
|
|
2995
|
+
disconnectedCallback() {
|
|
2996
|
+
this.stopContentObserver();
|
|
2997
|
+
document.removeEventListener("click", this.handleDocumentClick);
|
|
2998
|
+
document.removeEventListener("keydown", this.handleDocumentKeydown);
|
|
2999
|
+
super.disconnectedCallback();
|
|
3000
|
+
}
|
|
3001
|
+
update(changedProperties) {
|
|
3002
|
+
this.stopContentObserver();
|
|
3003
|
+
super.update(changedProperties);
|
|
3004
|
+
this.startContentObserver();
|
|
3005
|
+
}
|
|
3006
|
+
startContentObserver() {
|
|
3007
|
+
if (this.contentObserver) {
|
|
3008
|
+
return;
|
|
3009
|
+
}
|
|
3010
|
+
this.contentObserver = new MutationObserver(() => {
|
|
3011
|
+
if (this.syncProjectedContent()) {
|
|
3012
|
+
this.requestUpdate();
|
|
3013
|
+
}
|
|
3014
|
+
});
|
|
3015
|
+
this.contentObserver.observe(this, { childList: true });
|
|
3016
|
+
}
|
|
3017
|
+
stopContentObserver() {
|
|
3018
|
+
this.contentObserver?.disconnect();
|
|
3019
|
+
this.contentObserver = void 0;
|
|
3020
|
+
}
|
|
3021
|
+
willUpdate(changedProperties) {
|
|
3022
|
+
if (changedProperties.has("fullWidth") && this.fullWidth == null) {
|
|
3023
|
+
this.fullWidth = false;
|
|
3024
|
+
}
|
|
3025
|
+
if (changedProperties.has("open") && this.open == null) {
|
|
3026
|
+
this.open = false;
|
|
3027
|
+
}
|
|
3028
|
+
if (changedProperties.has("placement") && (this.placement == null || !isDropdownPlacement(this.placement))) {
|
|
3029
|
+
this.placement = "bottom-start";
|
|
3030
|
+
}
|
|
3031
|
+
if (changedProperties.has("triggerLabel") && !this.triggerLabel) {
|
|
3032
|
+
this.triggerLabel = "Toggle menu";
|
|
3033
|
+
}
|
|
3034
|
+
}
|
|
3035
|
+
get triggerElement() {
|
|
3036
|
+
return this.querySelector("[data-sp-dropdown-trigger]");
|
|
3037
|
+
}
|
|
3038
|
+
toggle() {
|
|
3039
|
+
if (this.open) {
|
|
3040
|
+
this.close();
|
|
3041
|
+
} else {
|
|
3042
|
+
this.openMenu();
|
|
3043
|
+
}
|
|
3044
|
+
}
|
|
3045
|
+
openMenu() {
|
|
3046
|
+
if (this.open) {
|
|
3047
|
+
return;
|
|
3048
|
+
}
|
|
3049
|
+
this.open = true;
|
|
3050
|
+
this.dispatchEvent(new CustomEvent("sp-open", { bubbles: true }));
|
|
3051
|
+
}
|
|
3052
|
+
close() {
|
|
3053
|
+
if (!this.open) {
|
|
3054
|
+
return;
|
|
3055
|
+
}
|
|
3056
|
+
this.open = false;
|
|
3057
|
+
this.dispatchEvent(new CustomEvent("sp-close", { bubbles: true }));
|
|
3058
|
+
}
|
|
3059
|
+
get dropdownClasses() {
|
|
3060
|
+
return getDropdownClasses({ fullWidth: this.fullWidth ?? false });
|
|
3061
|
+
}
|
|
3062
|
+
get menuClasses() {
|
|
3063
|
+
return getDropdownMenuClasses({
|
|
3064
|
+
open: this.open ?? false,
|
|
3065
|
+
placement: this.placement
|
|
3066
|
+
});
|
|
3067
|
+
}
|
|
3068
|
+
render() {
|
|
3069
|
+
return html`<div
|
|
3070
|
+
class="${this.dropdownClasses}"
|
|
3071
|
+
id="${ifDefined(this.id || void 0)}"
|
|
3072
|
+
title="${ifDefined(this.title || void 0)}"
|
|
3073
|
+
>
|
|
3074
|
+
<button
|
|
3075
|
+
aria-expanded="${this.open ? "true" : "false"}"
|
|
3076
|
+
aria-haspopup="true"
|
|
3077
|
+
aria-label="${ifDefined(this.forwardedAriaLabel ?? this.triggerLabel)}"
|
|
3078
|
+
class="sp-dropdown__trigger"
|
|
3079
|
+
data-sp-dropdown-trigger
|
|
3080
|
+
type="button"
|
|
3081
|
+
@click="${() => this.toggle()}"
|
|
3082
|
+
>
|
|
3083
|
+
${this.hasTriggerContent ? this.triggerContent : this.triggerLabel}
|
|
3084
|
+
</button>
|
|
3085
|
+
<div class="${this.menuClasses}" data-sp-dropdown-menu>
|
|
3086
|
+
${this.hasMenuContent ? this.menuContent : nothing}
|
|
3087
|
+
</div>
|
|
3088
|
+
</div>`;
|
|
3089
|
+
}
|
|
3090
|
+
};
|
|
3091
|
+
SpectreDropdownElement.properties = {
|
|
3092
|
+
fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
|
|
3093
|
+
open: { type: Boolean, reflect: true },
|
|
3094
|
+
placement: { type: String, reflect: true },
|
|
3095
|
+
triggerLabel: { attribute: "trigger-label", type: String }
|
|
3096
|
+
};
|
|
3097
|
+
function defineSpectreDropdown(tagName = "sp-dropdown") {
|
|
3098
|
+
const existingElement = customElements.get(tagName);
|
|
3099
|
+
if (existingElement) {
|
|
3100
|
+
return existingElement;
|
|
3101
|
+
}
|
|
3102
|
+
customElements.define(tagName, SpectreDropdownElement);
|
|
3103
|
+
return SpectreDropdownElement;
|
|
3104
|
+
}
|
|
3105
|
+
var FOCUSABLE_SELECTOR = [
|
|
3106
|
+
"a[href]",
|
|
3107
|
+
"button:not([disabled])",
|
|
3108
|
+
"input:not([disabled])",
|
|
3109
|
+
"select:not([disabled])",
|
|
3110
|
+
"textarea:not([disabled])",
|
|
3111
|
+
'[tabindex]:not([tabindex="-1"])'
|
|
3112
|
+
].join(",");
|
|
3113
|
+
var SpectreModalElement = class extends SpectreProjectableElement {
|
|
3114
|
+
constructor() {
|
|
3115
|
+
super(...arguments);
|
|
3116
|
+
this.fullWidth = false;
|
|
3117
|
+
this.open = false;
|
|
3118
|
+
this.previouslyFocusedElement = null;
|
|
3119
|
+
this.handleDocumentKeydown = (event) => {
|
|
3120
|
+
if (!this.open) {
|
|
3121
|
+
return;
|
|
3122
|
+
}
|
|
3123
|
+
if (event.key === "Escape") {
|
|
3124
|
+
this.close();
|
|
3125
|
+
return;
|
|
3126
|
+
}
|
|
3127
|
+
if (event.key === "Tab") {
|
|
3128
|
+
this.trapFocus(event);
|
|
3129
|
+
}
|
|
3130
|
+
};
|
|
3131
|
+
}
|
|
3132
|
+
get id() {
|
|
3133
|
+
return super.id;
|
|
3134
|
+
}
|
|
3135
|
+
set id(value) {
|
|
3136
|
+
super.id = value;
|
|
3137
|
+
}
|
|
3138
|
+
get title() {
|
|
3139
|
+
return super.title;
|
|
3140
|
+
}
|
|
3141
|
+
set title(value) {
|
|
3142
|
+
super.title = value;
|
|
3143
|
+
}
|
|
3144
|
+
getContentContainer() {
|
|
3145
|
+
return this.querySelector("[data-sp-modal-native]");
|
|
3146
|
+
}
|
|
3147
|
+
isInternalNode(node) {
|
|
3148
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
3149
|
+
return false;
|
|
3150
|
+
}
|
|
3151
|
+
const el = node;
|
|
3152
|
+
return el.hasAttribute("data-sp-modal-native") || el.hasAttribute("data-sp-modal-overlay");
|
|
3153
|
+
}
|
|
3154
|
+
willUpdate(changedProperties) {
|
|
3155
|
+
if (changedProperties.has("fullWidth") && this.fullWidth == null) {
|
|
3156
|
+
this.fullWidth = false;
|
|
3157
|
+
}
|
|
3158
|
+
if (changedProperties.has("open") && this.open == null) {
|
|
3159
|
+
this.open = false;
|
|
3160
|
+
}
|
|
3161
|
+
}
|
|
3162
|
+
updated(changedProperties) {
|
|
3163
|
+
super.updated(changedProperties);
|
|
3164
|
+
if (!changedProperties.has("open")) {
|
|
3165
|
+
return;
|
|
3166
|
+
}
|
|
3167
|
+
if (this.open) {
|
|
3168
|
+
this.previouslyFocusedElement = document.activeElement;
|
|
3169
|
+
this.focusFirstElement();
|
|
3170
|
+
} else if (this.previouslyFocusedElement) {
|
|
3171
|
+
this.previouslyFocusedElement.focus();
|
|
3172
|
+
this.previouslyFocusedElement = null;
|
|
3173
|
+
}
|
|
3174
|
+
}
|
|
3175
|
+
connectedCallback() {
|
|
3176
|
+
super.connectedCallback();
|
|
3177
|
+
document.addEventListener("keydown", this.handleDocumentKeydown);
|
|
3178
|
+
}
|
|
3179
|
+
disconnectedCallback() {
|
|
3180
|
+
document.removeEventListener("keydown", this.handleDocumentKeydown);
|
|
3181
|
+
super.disconnectedCallback();
|
|
3182
|
+
}
|
|
3183
|
+
get modalElement() {
|
|
3184
|
+
return this.querySelector("[data-sp-modal-native]");
|
|
3185
|
+
}
|
|
3186
|
+
get focusableElements() {
|
|
3187
|
+
const modal = this.modalElement;
|
|
3188
|
+
if (!modal) {
|
|
3189
|
+
return [];
|
|
3190
|
+
}
|
|
3191
|
+
return Array.from(modal.querySelectorAll(FOCUSABLE_SELECTOR));
|
|
3192
|
+
}
|
|
3193
|
+
focusFirstElement() {
|
|
3194
|
+
const [first] = this.focusableElements;
|
|
3195
|
+
(first ?? this.modalElement)?.focus();
|
|
3196
|
+
}
|
|
3197
|
+
trapFocus(event) {
|
|
3198
|
+
const focusable = this.focusableElements;
|
|
3199
|
+
if (focusable.length === 0) {
|
|
3200
|
+
event.preventDefault();
|
|
3201
|
+
return;
|
|
3202
|
+
}
|
|
3203
|
+
const first = focusable[0];
|
|
3204
|
+
const last = focusable[focusable.length - 1];
|
|
3205
|
+
const active = document.activeElement;
|
|
3206
|
+
if (event.shiftKey && active === first) {
|
|
3207
|
+
event.preventDefault();
|
|
3208
|
+
last?.focus();
|
|
3209
|
+
} else if (!event.shiftKey && active === last) {
|
|
3210
|
+
event.preventDefault();
|
|
3211
|
+
first?.focus();
|
|
3212
|
+
}
|
|
3213
|
+
}
|
|
3214
|
+
close() {
|
|
3215
|
+
if (!this.open) {
|
|
3216
|
+
return;
|
|
3217
|
+
}
|
|
3218
|
+
this.open = false;
|
|
3219
|
+
this.dispatchEvent(new CustomEvent("sp-close", { bubbles: true }));
|
|
3220
|
+
}
|
|
3221
|
+
get overlayClasses() {
|
|
3222
|
+
return getModalOverlayClasses({ open: this.open ?? false });
|
|
3223
|
+
}
|
|
3224
|
+
get modalClasses() {
|
|
3225
|
+
return getModalClasses({
|
|
3226
|
+
open: this.open ?? false,
|
|
3227
|
+
fullWidth: this.fullWidth ?? false
|
|
3228
|
+
});
|
|
3229
|
+
}
|
|
3230
|
+
render() {
|
|
3231
|
+
const isHidden = !this.open;
|
|
3232
|
+
return html`<div
|
|
3233
|
+
aria-hidden="${ifDefined(isHidden ? "true" : void 0)}"
|
|
3234
|
+
class="${this.overlayClasses}"
|
|
3235
|
+
data-sp-modal-overlay
|
|
3236
|
+
@click="${(event) => {
|
|
3237
|
+
if (event.target === event.currentTarget) {
|
|
3238
|
+
this.close();
|
|
3239
|
+
}
|
|
3240
|
+
}}"
|
|
3241
|
+
>
|
|
3242
|
+
<div
|
|
3243
|
+
aria-describedby="${ifDefined(this.forwardedAriaDescribedBy)}"
|
|
3244
|
+
aria-hidden="${ifDefined(isHidden ? "true" : void 0)}"
|
|
3245
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
3246
|
+
aria-labelledby="${ifDefined(this.forwardedAriaLabelledBy)}"
|
|
3247
|
+
aria-modal="true"
|
|
3248
|
+
class="${this.modalClasses}"
|
|
3249
|
+
data-sp-modal-native
|
|
3250
|
+
id="${ifDefined(this.id || void 0)}"
|
|
3251
|
+
role="dialog"
|
|
3252
|
+
tabindex="-1"
|
|
3253
|
+
title="${ifDefined(this.title || void 0)}"
|
|
3254
|
+
>
|
|
3255
|
+
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
3256
|
+
</div>
|
|
3257
|
+
</div>`;
|
|
3258
|
+
}
|
|
3259
|
+
};
|
|
3260
|
+
SpectreModalElement.properties = {
|
|
3261
|
+
fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
|
|
3262
|
+
open: { type: Boolean, reflect: true }
|
|
3263
|
+
};
|
|
3264
|
+
function defineSpectreModal(tagName = "sp-modal") {
|
|
3265
|
+
const existingElement = customElements.get(tagName);
|
|
3266
|
+
if (existingElement) {
|
|
3267
|
+
return existingElement;
|
|
3268
|
+
}
|
|
3269
|
+
customElements.define(tagName, SpectreModalElement);
|
|
3270
|
+
return SpectreModalElement;
|
|
3271
|
+
}
|
|
3272
|
+
var SpectreNavElement = class extends SpectreProjectableElement {
|
|
3273
|
+
constructor() {
|
|
3274
|
+
super(...arguments);
|
|
3275
|
+
this.bordered = false;
|
|
3276
|
+
this.fullWidth = false;
|
|
3277
|
+
this.sticky = false;
|
|
3278
|
+
}
|
|
3279
|
+
get id() {
|
|
3280
|
+
return super.id;
|
|
3281
|
+
}
|
|
3282
|
+
set id(value) {
|
|
3283
|
+
super.id = value;
|
|
3284
|
+
}
|
|
3285
|
+
get title() {
|
|
3286
|
+
return super.title;
|
|
3287
|
+
}
|
|
3288
|
+
set title(value) {
|
|
3289
|
+
super.title = value;
|
|
3290
|
+
}
|
|
3291
|
+
getContentContainer() {
|
|
3292
|
+
return this.querySelector("[data-sp-nav-native]");
|
|
3293
|
+
}
|
|
3294
|
+
isInternalNode(node) {
|
|
3295
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
3296
|
+
return false;
|
|
3297
|
+
}
|
|
3298
|
+
const el = node;
|
|
3299
|
+
return el.hasAttribute("data-sp-nav-native");
|
|
3300
|
+
}
|
|
3301
|
+
willUpdate(changedProperties) {
|
|
3302
|
+
if (changedProperties.has("bordered") && this.bordered == null) {
|
|
3303
|
+
this.bordered = false;
|
|
3304
|
+
}
|
|
3305
|
+
if (changedProperties.has("fullWidth") && this.fullWidth == null) {
|
|
3306
|
+
this.fullWidth = false;
|
|
3307
|
+
}
|
|
3308
|
+
if (changedProperties.has("sticky") && this.sticky == null) {
|
|
3309
|
+
this.sticky = false;
|
|
3310
|
+
}
|
|
3311
|
+
}
|
|
3312
|
+
get navClasses() {
|
|
3313
|
+
return getNavClasses({
|
|
3314
|
+
bordered: this.bordered ?? false,
|
|
3315
|
+
fullWidth: this.fullWidth ?? false,
|
|
3316
|
+
sticky: this.sticky ?? false
|
|
3317
|
+
});
|
|
3318
|
+
}
|
|
3319
|
+
render() {
|
|
3320
|
+
return html`<nav
|
|
3321
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
3322
|
+
class="${this.navClasses}"
|
|
3323
|
+
data-sp-nav-native
|
|
3324
|
+
id="${ifDefined(this.id || void 0)}"
|
|
3325
|
+
title="${ifDefined(this.title || void 0)}"
|
|
3326
|
+
>
|
|
3327
|
+
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
3328
|
+
</nav>`;
|
|
3329
|
+
}
|
|
3330
|
+
};
|
|
3331
|
+
SpectreNavElement.properties = {
|
|
3332
|
+
bordered: { type: Boolean, reflect: true },
|
|
3333
|
+
fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
|
|
3334
|
+
sticky: { type: Boolean, reflect: true }
|
|
3335
|
+
};
|
|
3336
|
+
function defineSpectreNav(tagName = "sp-nav") {
|
|
3337
|
+
const existingElement = customElements.get(tagName);
|
|
3338
|
+
if (existingElement) {
|
|
3339
|
+
return existingElement;
|
|
3340
|
+
}
|
|
3341
|
+
customElements.define(tagName, SpectreNavElement);
|
|
3342
|
+
return SpectreNavElement;
|
|
3343
|
+
}
|
|
3344
|
+
var SpectreSidebarElement = class extends SpectreProjectableElement {
|
|
3345
|
+
constructor() {
|
|
3346
|
+
super(...arguments);
|
|
3347
|
+
this.bordered = false;
|
|
3348
|
+
this.open = false;
|
|
3349
|
+
this.toggleLabel = "Toggle sidebar";
|
|
3350
|
+
this.handleDocumentKeydown = (event) => {
|
|
3351
|
+
if (event.key === "Escape" && this.open) {
|
|
3352
|
+
this.close();
|
|
3353
|
+
}
|
|
3354
|
+
};
|
|
3355
|
+
}
|
|
3356
|
+
get id() {
|
|
3357
|
+
return super.id;
|
|
3358
|
+
}
|
|
3359
|
+
set id(value) {
|
|
3360
|
+
super.id = value;
|
|
3361
|
+
}
|
|
3362
|
+
get title() {
|
|
3363
|
+
return super.title;
|
|
3364
|
+
}
|
|
3365
|
+
set title(value) {
|
|
3366
|
+
super.title = value;
|
|
3367
|
+
}
|
|
3368
|
+
getContentContainer() {
|
|
3369
|
+
return this.querySelector("[data-sp-sidebar-native]");
|
|
3370
|
+
}
|
|
3371
|
+
isInternalNode(node) {
|
|
3372
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
3373
|
+
return false;
|
|
3374
|
+
}
|
|
3375
|
+
const el = node;
|
|
3376
|
+
return el.hasAttribute("data-sp-sidebar-native") || el.hasAttribute("data-sp-sidebar-toggle") || el.hasAttribute("data-sp-sidebar-backdrop");
|
|
3377
|
+
}
|
|
3378
|
+
willUpdate(changedProperties) {
|
|
3379
|
+
if (changedProperties.has("bordered") && this.bordered == null) {
|
|
3380
|
+
this.bordered = false;
|
|
3381
|
+
}
|
|
3382
|
+
if (changedProperties.has("open") && this.open == null) {
|
|
3383
|
+
this.open = false;
|
|
3384
|
+
}
|
|
3385
|
+
if (changedProperties.has("toggleLabel") && !this.toggleLabel) {
|
|
3386
|
+
this.toggleLabel = "Toggle sidebar";
|
|
3387
|
+
}
|
|
3388
|
+
if (changedProperties.has("open")) {
|
|
3389
|
+
HTMLElement.prototype.setAttribute.call(
|
|
3390
|
+
this,
|
|
3391
|
+
"data-sidebar-open",
|
|
3392
|
+
this.open ? "true" : "false"
|
|
3393
|
+
);
|
|
3394
|
+
}
|
|
3395
|
+
}
|
|
3396
|
+
connectedCallback() {
|
|
3397
|
+
super.connectedCallback();
|
|
3398
|
+
HTMLElement.prototype.setAttribute.call(
|
|
3399
|
+
this,
|
|
3400
|
+
"data-sidebar-open",
|
|
3401
|
+
this.open ? "true" : "false"
|
|
3402
|
+
);
|
|
3403
|
+
document.addEventListener("keydown", this.handleDocumentKeydown);
|
|
3404
|
+
}
|
|
3405
|
+
disconnectedCallback() {
|
|
3406
|
+
document.removeEventListener("keydown", this.handleDocumentKeydown);
|
|
3407
|
+
super.disconnectedCallback();
|
|
3408
|
+
}
|
|
3409
|
+
toggle() {
|
|
3410
|
+
if (this.open) {
|
|
3411
|
+
this.close();
|
|
3412
|
+
} else {
|
|
3413
|
+
this.openSidebar();
|
|
3414
|
+
}
|
|
3415
|
+
}
|
|
3416
|
+
openSidebar() {
|
|
3417
|
+
if (this.open) {
|
|
3418
|
+
return;
|
|
3419
|
+
}
|
|
3420
|
+
this.open = true;
|
|
3421
|
+
this.dispatchEvent(new CustomEvent("sp-open", { bubbles: true }));
|
|
3422
|
+
}
|
|
3423
|
+
close() {
|
|
3424
|
+
if (!this.open) {
|
|
3425
|
+
return;
|
|
3426
|
+
}
|
|
3427
|
+
this.open = false;
|
|
3428
|
+
this.dispatchEvent(new CustomEvent("sp-close", { bubbles: true }));
|
|
3429
|
+
}
|
|
3430
|
+
get sidebarClasses() {
|
|
3431
|
+
return getSidebarClasses({ bordered: this.bordered ?? false });
|
|
3432
|
+
}
|
|
3433
|
+
render() {
|
|
3434
|
+
return html`<button
|
|
3435
|
+
aria-expanded="${this.open ? "true" : "false"}"
|
|
3436
|
+
aria-label="${ifDefined(this.toggleLabel)}"
|
|
3437
|
+
class="${getSidebarToggleClasses()}"
|
|
3438
|
+
data-sp-sidebar-toggle
|
|
3439
|
+
type="button"
|
|
3440
|
+
@click="${() => this.toggle()}"
|
|
3441
|
+
>
|
|
3442
|
+
☰
|
|
3443
|
+
</button>
|
|
3444
|
+
<div
|
|
3445
|
+
class="${getSidebarBackdropClasses()}"
|
|
3446
|
+
data-sp-sidebar-backdrop
|
|
3447
|
+
@click="${() => this.close()}"
|
|
3448
|
+
></div>
|
|
3449
|
+
<aside
|
|
3450
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
3451
|
+
class="${this.sidebarClasses}"
|
|
3452
|
+
data-sp-sidebar-native
|
|
3453
|
+
id="${ifDefined(this.id || void 0)}"
|
|
3454
|
+
title="${ifDefined(this.title || void 0)}"
|
|
3455
|
+
>
|
|
3456
|
+
${this.hasProjectedContent ? this.projectedContent : nothing}
|
|
3457
|
+
</aside>`;
|
|
3458
|
+
}
|
|
3459
|
+
};
|
|
3460
|
+
SpectreSidebarElement.properties = {
|
|
3461
|
+
bordered: { type: Boolean, reflect: true },
|
|
3462
|
+
open: { type: Boolean, reflect: false },
|
|
3463
|
+
toggleLabel: { attribute: "toggle-label", type: String }
|
|
3464
|
+
};
|
|
3465
|
+
function defineSpectreSidebar(tagName = "sp-sidebar") {
|
|
3466
|
+
const existingElement = customElements.get(tagName);
|
|
3467
|
+
if (existingElement) {
|
|
3468
|
+
return existingElement;
|
|
3469
|
+
}
|
|
3470
|
+
customElements.define(tagName, SpectreSidebarElement);
|
|
3471
|
+
return SpectreSidebarElement;
|
|
3472
|
+
}
|
|
3473
|
+
var SpectreToastElement = class extends SpectreBaseElement {
|
|
3474
|
+
constructor() {
|
|
3475
|
+
super(...arguments);
|
|
3476
|
+
this.dismissed = false;
|
|
3477
|
+
this.fullWidth = false;
|
|
3478
|
+
this.variant = "info";
|
|
3479
|
+
this.iconContent = [];
|
|
3480
|
+
this.bodyContent = [];
|
|
3481
|
+
}
|
|
3482
|
+
get id() {
|
|
3483
|
+
return super.id;
|
|
3484
|
+
}
|
|
3485
|
+
set id(value) {
|
|
3486
|
+
super.id = value;
|
|
3487
|
+
}
|
|
3488
|
+
get title() {
|
|
3489
|
+
return super.title;
|
|
3490
|
+
}
|
|
3491
|
+
set title(value) {
|
|
3492
|
+
super.title = value;
|
|
3493
|
+
}
|
|
3494
|
+
isInternalNode(node) {
|
|
3495
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
3496
|
+
return false;
|
|
3497
|
+
}
|
|
3498
|
+
const el = node;
|
|
3499
|
+
return el.hasAttribute("data-sp-toast-native") || el.hasAttribute("data-sp-toast-icon");
|
|
3500
|
+
}
|
|
3501
|
+
syncProjectedContent() {
|
|
3502
|
+
const nextIconContent = [];
|
|
3503
|
+
const nextBodyContent = [];
|
|
3504
|
+
this.childNodes.forEach((node) => {
|
|
3505
|
+
if (this.isInternalNode(node)) {
|
|
3506
|
+
return;
|
|
3507
|
+
}
|
|
3508
|
+
const isIconSlot = node.nodeType === Node.ELEMENT_NODE && node.getAttribute("slot") === "icon";
|
|
3509
|
+
if (isIconSlot) {
|
|
3510
|
+
nextIconContent.push(node);
|
|
3511
|
+
} else {
|
|
3512
|
+
nextBodyContent.push(node);
|
|
3513
|
+
}
|
|
3514
|
+
});
|
|
3515
|
+
const changed = nextIconContent.length !== this.iconContent.length || nextIconContent.some((n, i) => n !== this.iconContent[i]) || nextBodyContent.length !== this.bodyContent.length || nextBodyContent.some((n, i) => n !== this.bodyContent[i]);
|
|
3516
|
+
if (changed) {
|
|
3517
|
+
this.iconContent = nextIconContent;
|
|
3518
|
+
this.bodyContent = nextBodyContent;
|
|
3519
|
+
}
|
|
3520
|
+
return changed;
|
|
3521
|
+
}
|
|
3522
|
+
get hasIconContent() {
|
|
3523
|
+
return hasMeaningfulContent(this.iconContent);
|
|
3524
|
+
}
|
|
3525
|
+
get hasBodyContent() {
|
|
3526
|
+
return hasMeaningfulContent(this.bodyContent);
|
|
3527
|
+
}
|
|
3528
|
+
connectedCallback() {
|
|
3529
|
+
super.connectedCallback();
|
|
3530
|
+
this.syncProjectedContent();
|
|
3531
|
+
this.startContentObserver();
|
|
3532
|
+
}
|
|
3533
|
+
disconnectedCallback() {
|
|
3534
|
+
this.stopContentObserver();
|
|
3535
|
+
this.clearAutoDismissTimer();
|
|
3536
|
+
super.disconnectedCallback();
|
|
3537
|
+
}
|
|
3538
|
+
update(changedProperties) {
|
|
3539
|
+
this.stopContentObserver();
|
|
3540
|
+
super.update(changedProperties);
|
|
3541
|
+
this.startContentObserver();
|
|
3542
|
+
}
|
|
3543
|
+
startContentObserver() {
|
|
3544
|
+
if (this.contentObserver) {
|
|
3545
|
+
return;
|
|
3546
|
+
}
|
|
3547
|
+
this.contentObserver = new MutationObserver(() => {
|
|
3548
|
+
if (this.syncProjectedContent()) {
|
|
3549
|
+
this.requestUpdate();
|
|
3550
|
+
}
|
|
3551
|
+
});
|
|
3552
|
+
this.contentObserver.observe(this, { childList: true });
|
|
3553
|
+
}
|
|
3554
|
+
stopContentObserver() {
|
|
3555
|
+
this.contentObserver?.disconnect();
|
|
3556
|
+
this.contentObserver = void 0;
|
|
3557
|
+
}
|
|
3558
|
+
willUpdate(changedProperties) {
|
|
3559
|
+
if (changedProperties.has("dismissed") && this.dismissed == null) {
|
|
3560
|
+
this.dismissed = false;
|
|
3561
|
+
}
|
|
3562
|
+
if (changedProperties.has("fullWidth") && this.fullWidth == null) {
|
|
3563
|
+
this.fullWidth = false;
|
|
3564
|
+
}
|
|
3565
|
+
if (changedProperties.has("variant") && (this.variant == null || !isToastVariant(this.variant))) {
|
|
3566
|
+
this.variant = "info";
|
|
3567
|
+
}
|
|
3568
|
+
if (changedProperties.has("autoDismiss")) {
|
|
3569
|
+
this.autoDismiss = normalizeInt(this.autoDismiss, void 0, 0);
|
|
3570
|
+
}
|
|
3571
|
+
}
|
|
3572
|
+
updated(changedProperties) {
|
|
3573
|
+
super.updated(changedProperties);
|
|
3574
|
+
if (changedProperties.has("dismissed") || changedProperties.has("autoDismiss")) {
|
|
3575
|
+
this.clearAutoDismissTimer();
|
|
3576
|
+
if (!this.dismissed && this.autoDismiss) {
|
|
3577
|
+
this.autoDismissTimer = setTimeout(() => {
|
|
3578
|
+
this.dismiss();
|
|
3579
|
+
}, this.autoDismiss);
|
|
3580
|
+
}
|
|
3581
|
+
}
|
|
3582
|
+
}
|
|
3583
|
+
clearAutoDismissTimer() {
|
|
3584
|
+
if (this.autoDismissTimer) {
|
|
3585
|
+
clearTimeout(this.autoDismissTimer);
|
|
3586
|
+
this.autoDismissTimer = void 0;
|
|
3587
|
+
}
|
|
3588
|
+
}
|
|
3589
|
+
show() {
|
|
3590
|
+
if (!this.dismissed) {
|
|
3591
|
+
return;
|
|
3592
|
+
}
|
|
3593
|
+
this.dismissed = false;
|
|
3594
|
+
this.dispatchEvent(new CustomEvent("sp-show", { bubbles: true }));
|
|
3595
|
+
}
|
|
3596
|
+
dismiss() {
|
|
3597
|
+
if (this.dismissed) {
|
|
3598
|
+
return;
|
|
3599
|
+
}
|
|
3600
|
+
this.dismissed = true;
|
|
3601
|
+
this.dispatchEvent(new CustomEvent("sp-dismiss", { bubbles: true }));
|
|
3602
|
+
}
|
|
3603
|
+
get toastClasses() {
|
|
3604
|
+
return getToastClasses({
|
|
3605
|
+
variant: this.variant,
|
|
3606
|
+
dismissed: this.dismissed ?? false,
|
|
3607
|
+
fullWidth: this.fullWidth ?? false
|
|
3608
|
+
});
|
|
3609
|
+
}
|
|
3610
|
+
get iconClasses() {
|
|
3611
|
+
return getToastIconClasses({ variant: this.variant });
|
|
3612
|
+
}
|
|
3613
|
+
render() {
|
|
3614
|
+
return html`<div
|
|
3615
|
+
aria-atomic="true"
|
|
3616
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
3617
|
+
aria-live="polite"
|
|
3618
|
+
class="${this.toastClasses}"
|
|
3619
|
+
data-sp-toast-native
|
|
3620
|
+
id="${ifDefined(this.id || void 0)}"
|
|
3621
|
+
role="status"
|
|
3622
|
+
title="${ifDefined(this.title || void 0)}"
|
|
3623
|
+
>
|
|
3624
|
+
${this.hasIconContent ? html`<div class="${this.iconClasses}" data-sp-toast-icon>
|
|
3625
|
+
${this.iconContent}
|
|
3626
|
+
</div>` : nothing}
|
|
3627
|
+
${this.hasBodyContent ? this.bodyContent : nothing}
|
|
3628
|
+
</div>`;
|
|
3629
|
+
}
|
|
3630
|
+
};
|
|
3631
|
+
SpectreToastElement.properties = {
|
|
3632
|
+
autoDismiss: { attribute: "auto-dismiss", type: Number },
|
|
3633
|
+
dismissed: { type: Boolean, reflect: true },
|
|
3634
|
+
fullWidth: { attribute: "full-width", type: Boolean, reflect: true },
|
|
3635
|
+
variant: { type: String, reflect: true }
|
|
3636
|
+
};
|
|
3637
|
+
function defineSpectreToast(tagName = "sp-toast") {
|
|
3638
|
+
const existingElement = customElements.get(tagName);
|
|
3639
|
+
if (existingElement) {
|
|
3640
|
+
return existingElement;
|
|
3641
|
+
}
|
|
3642
|
+
customElements.define(tagName, SpectreToastElement);
|
|
3643
|
+
return SpectreToastElement;
|
|
3644
|
+
}
|
|
3645
|
+
var SpectreTooltipElement = class extends SpectreBaseElement {
|
|
3646
|
+
constructor() {
|
|
3647
|
+
super(...arguments);
|
|
3648
|
+
this.placement = "top";
|
|
3649
|
+
this.visible = false;
|
|
3650
|
+
this.triggerContent = [];
|
|
3651
|
+
this.tooltipContent = [];
|
|
3652
|
+
}
|
|
3653
|
+
get id() {
|
|
3654
|
+
return super.id;
|
|
3655
|
+
}
|
|
3656
|
+
set id(value) {
|
|
3657
|
+
super.id = value;
|
|
3658
|
+
}
|
|
3659
|
+
get title() {
|
|
3660
|
+
return super.title;
|
|
3661
|
+
}
|
|
3662
|
+
set title(value) {
|
|
3663
|
+
super.title = value;
|
|
3664
|
+
}
|
|
3665
|
+
isInternalNode(node) {
|
|
3666
|
+
if (node.nodeType !== Node.ELEMENT_NODE) {
|
|
3667
|
+
return false;
|
|
3668
|
+
}
|
|
3669
|
+
const el = node;
|
|
3670
|
+
return el.hasAttribute("data-sp-tooltip-native") || el.hasAttribute("data-sp-tooltip-trigger");
|
|
3671
|
+
}
|
|
3672
|
+
syncProjectedContent() {
|
|
3673
|
+
const nextTooltipContent = [];
|
|
3674
|
+
const nextTriggerContent = [];
|
|
3675
|
+
this.childNodes.forEach((node) => {
|
|
3676
|
+
if (this.isInternalNode(node)) {
|
|
3677
|
+
return;
|
|
3678
|
+
}
|
|
3679
|
+
const isTooltipSlot = node.nodeType === Node.ELEMENT_NODE && node.getAttribute("slot") === "tooltip";
|
|
3680
|
+
if (isTooltipSlot) {
|
|
3681
|
+
nextTooltipContent.push(node);
|
|
3682
|
+
} else {
|
|
3683
|
+
nextTriggerContent.push(node);
|
|
3684
|
+
}
|
|
3685
|
+
});
|
|
3686
|
+
const changed = nextTooltipContent.length !== this.tooltipContent.length || nextTooltipContent.some((n, i) => n !== this.tooltipContent[i]) || nextTriggerContent.length !== this.triggerContent.length || nextTriggerContent.some((n, i) => n !== this.triggerContent[i]);
|
|
3687
|
+
if (changed) {
|
|
3688
|
+
this.tooltipContent = nextTooltipContent;
|
|
3689
|
+
this.triggerContent = nextTriggerContent;
|
|
3690
|
+
}
|
|
3691
|
+
return changed;
|
|
3692
|
+
}
|
|
3693
|
+
get hasTooltipContent() {
|
|
3694
|
+
return hasMeaningfulContent(this.tooltipContent);
|
|
3695
|
+
}
|
|
3696
|
+
connectedCallback() {
|
|
3697
|
+
var _a, _b;
|
|
3698
|
+
super.connectedCallback();
|
|
3699
|
+
this.syncProjectedContent();
|
|
3700
|
+
this.startContentObserver();
|
|
3701
|
+
(_a = this.style).position || (_a.position = "relative");
|
|
3702
|
+
(_b = this.style).display || (_b.display = "inline-block");
|
|
3703
|
+
}
|
|
3704
|
+
disconnectedCallback() {
|
|
3705
|
+
this.stopContentObserver();
|
|
3706
|
+
super.disconnectedCallback();
|
|
3707
|
+
}
|
|
3708
|
+
update(changedProperties) {
|
|
3709
|
+
this.stopContentObserver();
|
|
3710
|
+
super.update(changedProperties);
|
|
3711
|
+
this.startContentObserver();
|
|
3712
|
+
}
|
|
3713
|
+
startContentObserver() {
|
|
3714
|
+
if (this.contentObserver) {
|
|
3715
|
+
return;
|
|
3716
|
+
}
|
|
3717
|
+
this.contentObserver = new MutationObserver(() => {
|
|
3718
|
+
if (this.syncProjectedContent()) {
|
|
3719
|
+
this.requestUpdate();
|
|
3720
|
+
}
|
|
3721
|
+
});
|
|
3722
|
+
this.contentObserver.observe(this, { childList: true });
|
|
3723
|
+
}
|
|
3724
|
+
stopContentObserver() {
|
|
3725
|
+
this.contentObserver?.disconnect();
|
|
3726
|
+
this.contentObserver = void 0;
|
|
3727
|
+
}
|
|
3728
|
+
willUpdate(changedProperties) {
|
|
3729
|
+
if (changedProperties.has("placement") && (this.placement == null || !isTooltipPlacement(this.placement))) {
|
|
3730
|
+
this.placement = "top";
|
|
3731
|
+
}
|
|
3732
|
+
if (changedProperties.has("visible") && this.visible == null) {
|
|
3733
|
+
this.visible = false;
|
|
3734
|
+
}
|
|
3735
|
+
}
|
|
3736
|
+
show() {
|
|
3737
|
+
if (this.visible) {
|
|
3738
|
+
return;
|
|
3739
|
+
}
|
|
3740
|
+
this.visible = true;
|
|
3741
|
+
this.dispatchEvent(new CustomEvent("sp-show", { bubbles: true }));
|
|
3742
|
+
}
|
|
3743
|
+
hide() {
|
|
3744
|
+
if (!this.visible) {
|
|
3745
|
+
return;
|
|
3746
|
+
}
|
|
3747
|
+
this.visible = false;
|
|
3748
|
+
this.dispatchEvent(new CustomEvent("sp-hide", { bubbles: true }));
|
|
3749
|
+
}
|
|
3750
|
+
get tooltipClasses() {
|
|
3751
|
+
return getTooltipClasses({
|
|
3752
|
+
placement: this.placement,
|
|
3753
|
+
visible: this.visible ?? false
|
|
3754
|
+
});
|
|
3755
|
+
}
|
|
3756
|
+
render() {
|
|
3757
|
+
return html`<span
|
|
3758
|
+
data-sp-tooltip-trigger
|
|
3759
|
+
@focusin="${() => this.show()}"
|
|
3760
|
+
@focusout="${() => this.hide()}"
|
|
3761
|
+
@mouseenter="${() => this.show()}"
|
|
3762
|
+
@mouseleave="${() => this.hide()}"
|
|
3763
|
+
>
|
|
3764
|
+
${this.triggerContent}
|
|
3765
|
+
</span>
|
|
3766
|
+
<span
|
|
3767
|
+
aria-label="${ifDefined(this.forwardedAriaLabel)}"
|
|
3768
|
+
class="${this.tooltipClasses}"
|
|
3769
|
+
data-sp-tooltip-native
|
|
3770
|
+
id="${ifDefined(this.id || void 0)}"
|
|
3771
|
+
role="tooltip"
|
|
3772
|
+
title="${ifDefined(this.title || void 0)}"
|
|
3773
|
+
>
|
|
3774
|
+
${this.hasTooltipContent ? this.tooltipContent : nothing}
|
|
3775
|
+
</span>`;
|
|
3776
|
+
}
|
|
3777
|
+
};
|
|
3778
|
+
SpectreTooltipElement.properties = {
|
|
3779
|
+
placement: { type: String, reflect: true },
|
|
3780
|
+
visible: { type: Boolean, reflect: true }
|
|
3781
|
+
};
|
|
3782
|
+
function defineSpectreTooltip(tagName = "sp-tooltip") {
|
|
3783
|
+
const existingElement = customElements.get(tagName);
|
|
3784
|
+
if (existingElement) {
|
|
3785
|
+
return existingElement;
|
|
3786
|
+
}
|
|
3787
|
+
customElements.define(tagName, SpectreTooltipElement);
|
|
3788
|
+
return SpectreTooltipElement;
|
|
3789
|
+
}
|
|
2609
3790
|
|
|
2610
3791
|
// src/index.ts
|
|
2611
3792
|
function defineSpectreComponents() {
|
|
@@ -2627,8 +3808,18 @@ function defineSpectreComponents() {
|
|
|
2627
3808
|
defineSpectreSpinner();
|
|
2628
3809
|
defineSpectreTag();
|
|
2629
3810
|
defineSpectrePricingCard();
|
|
3811
|
+
defineSpectreContainer();
|
|
3812
|
+
defineSpectreGrid();
|
|
3813
|
+
defineSpectreSection();
|
|
3814
|
+
defineSpectreStack();
|
|
3815
|
+
defineSpectreDropdown();
|
|
3816
|
+
defineSpectreModal();
|
|
3817
|
+
defineSpectreNav();
|
|
3818
|
+
defineSpectreSidebar();
|
|
3819
|
+
defineSpectreToast();
|
|
3820
|
+
defineSpectreTooltip();
|
|
2630
3821
|
}
|
|
2631
3822
|
|
|
2632
|
-
export { SpectreAlertElement, SpectreAvatarElement, SpectreBadgeElement, SpectreButtonElement, SpectreCardElement, SpectreCheckboxElement, SpectreFieldsetElement, SpectreIconBoxElement, SpectreInputElement, SpectreLabelElement, SpectrePricingCardElement, SpectreRadioElement, SpectreRatingElement, SpectreSelectElement, SpectreSpinnerElement, SpectreTagElement, SpectreTestimonialElement, SpectreTextareaElement, defineSpectreAlert, defineSpectreAvatar, defineSpectreBadge, defineSpectreButton, defineSpectreCard, defineSpectreCheckbox, defineSpectreComponents, defineSpectreFieldset, defineSpectreIconBox, defineSpectreInput, defineSpectreLabel, defineSpectrePricingCard, defineSpectreRadio, defineSpectreRating, defineSpectreSelect, defineSpectreSpinner, defineSpectreTag, defineSpectreTestimonial, defineSpectreTextarea, spectreInputSizes as spectreAlertSizes, spectreAlertVariants, spectreAvatarShapes, spectreAvatarSizes, spectreInputSizes as spectreBadgeSizes, spectreBadgeVariants, spectreInputSizes as spectreButtonSizes, spectreButtonTypes, spectreButtonVariants, spectreCardVariants, spectreInputSizes as spectreIconBoxSizes, spectreIconBoxVariants, spectreInputSizes, spectreInputTypes, spectreInputSizes as spectreRatingSizes, spectreInputSizes as spectreSpinnerSizes, spectreSpinnerVariants, spectreInputSizes as spectreTagSizes, spectreTagVariants, spectreTestimonialVariants };
|
|
3823
|
+
export { SpectreAlertElement, SpectreAvatarElement, SpectreBadgeElement, SpectreButtonElement, SpectreCardElement, SpectreCheckboxElement, SpectreContainerElement, SpectreDropdownElement, SpectreFieldsetElement, SpectreGridElement, SpectreIconBoxElement, SpectreInputElement, SpectreLabelElement, SpectreModalElement, SpectreNavElement, SpectrePricingCardElement, SpectreRadioElement, SpectreRatingElement, SpectreSectionElement, SpectreSelectElement, SpectreSidebarElement, SpectreSpinnerElement, SpectreStackElement, SpectreTagElement, SpectreTestimonialElement, SpectreTextareaElement, SpectreToastElement, SpectreTooltipElement, defineSpectreAlert, defineSpectreAvatar, defineSpectreBadge, defineSpectreButton, defineSpectreCard, defineSpectreCheckbox, defineSpectreComponents, defineSpectreContainer, defineSpectreDropdown, defineSpectreFieldset, defineSpectreGrid, defineSpectreIconBox, defineSpectreInput, defineSpectreLabel, defineSpectreModal, defineSpectreNav, defineSpectrePricingCard, defineSpectreRadio, defineSpectreRating, defineSpectreSection, defineSpectreSelect, defineSpectreSidebar, defineSpectreSpinner, defineSpectreStack, defineSpectreTag, defineSpectreTestimonial, defineSpectreTextarea, defineSpectreToast, defineSpectreTooltip, spectreInputSizes as spectreAlertSizes, spectreAlertVariants, spectreAvatarShapes, spectreAvatarSizes, spectreInputSizes as spectreBadgeSizes, spectreBadgeVariants, spectreInputSizes as spectreButtonSizes, spectreButtonTypes, spectreButtonVariants, spectreCardVariants, spectreContainerMaxWidths, spectreDropdownPlacements, spectreGridColumns, spectreGridGaps, spectreInputSizes as spectreIconBoxSizes, spectreIconBoxVariants, spectreInputSizes, spectreInputTypes, spectreInputSizes as spectreRatingSizes, spectreInputSizes as spectreSpinnerSizes, spectreSpinnerVariants, spectreStackAligns, spectreStackBases, spectreStackDirections, spectreInputSizes as spectreTagSizes, spectreTagVariants, spectreTestimonialVariants, spectreToastVariants, spectreTooltipPlacements };
|
|
2633
3824
|
//# sourceMappingURL=index.js.map
|
|
2634
3825
|
//# sourceMappingURL=index.js.map
|