diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 775b9af66..38648c531 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -118,6 +118,14 @@ When designing a component's API, standard properties ("props") are generally us
There are some exceptions to this (e.g. when it significantly improves developer experience), but a good rule of thumbs is "will this need to change based on screen size?" If so, you probably want to use a CSS variable.
+### Custom event names
+
+All custom events must start with `sl-` as a namespace. For compatibility with frameworks that utilize DOM templates, custom events must have lowercase, kebab-style names. For example, use `sl-change` instead of `slChange`.
+
+This convention avoids the problem of browsers lowercasing attributes, causing some frameworks to be unable to listen to them. This problem isn't specific to one framework, but [Vue's documentation](https://vuejs.org/v2/guide/components-custom-events.html#Event-Names) provides a good explanation of the problem.
+
+> Additionally, `v-on` event listeners inside DOM templates will be automatically transformed to lowercase (due to HTML’s case-insensitivity), so `v-on:myEvent` would become `v-on:myevent` – making `myEvent` impossible to listen to.
+
### When to use a CSS custom property vs. a CSS part
There are two ways to enable customizations for components. One way is with CSS custom properties ("CSS variables"), the other is with CSS parts ("parts").
diff --git a/docs/components/alert.md b/docs/components/alert.md
index b5076bda0..976e1a517 100644
--- a/docs/components/alert.md
+++ b/docs/components/alert.md
@@ -69,7 +69,7 @@ Add the `closable` attribute to show a close button that will hide the alert.
diff --git a/docs/components/animation.md b/docs/components/animation.md
index d29a43620..43b490b5d 100644
--- a/docs/components/animation.md
+++ b/docs/components/animation.md
@@ -73,9 +73,9 @@ This example demonstrates all of the baked-in animations and easings. All animat
});
});
- animationName.addEventListener('slChange', () => animation.name = animationName.value);
- easingName.addEventListener('slChange', () => animation.easing = easingName.value);
- playbackRate.addEventListener('slChange', () => animation.playbackRate = playbackRate.value);
+ animationName.addEventListener('sl-change', () => animation.name = animationName.value);
+ easingName.addEventListener('sl-change', () => animation.easing = easingName.value);
+ playbackRate.addEventListener('sl-change', () => animation.playbackRate = playbackRate.value);
playbackRate.tooltipFormatter = val => `Playback Rate = ${val}`;
diff --git a/docs/components/details.md b/docs/components/details.md
index 09b9fc3c3..e88845c3a 100644
--- a/docs/components/details.md
+++ b/docs/components/details.md
@@ -50,7 +50,7 @@ Details are designed to function independently, but you can simulate a group or
const container = document.querySelector('.details-group-example');
// Close all other details when one is shown
- container.addEventListener('slShow', event => {
+ container.addEventListener('sl-show', event => {
[...container.querySelectorAll('sl-details')].map(details => (details.open = event.target === details));
});
diff --git a/docs/components/dialog.md b/docs/components/dialog.md
index baf4e18c7..1f9d1c24a 100644
--- a/docs/components/dialog.md
+++ b/docs/components/dialog.md
@@ -103,7 +103,7 @@ By default, dialogs are closed when the user clicks or taps on the overlay. To p
openButton.addEventListener('click', () => dialog.show());
closeButton.addEventListener('click', () => dialog.hide());
- dialog.addEventListener('slOverlayDismiss', event => event.preventDefault());
+ dialog.addEventListener('sl-overlay-dismiss', event => event.preventDefault());
})();
```
diff --git a/docs/components/drawer.md b/docs/components/drawer.md
index ce7a75eb0..f23767d77 100644
--- a/docs/components/drawer.md
+++ b/docs/components/drawer.md
@@ -199,7 +199,7 @@ By default, drawers are closed when the user clicks or taps on the overlay. To p
openButton.addEventListener('click', () => drawer.show());
closeButton.addEventListener('click', () => drawer.hide());
- drawer.addEventListener('slOverlayDismiss', event => event.preventDefault());
+ drawer.addEventListener('sl-overlay-dismiss', event => event.preventDefault());
})();
```
diff --git a/docs/components/dropdown.md b/docs/components/dropdown.md
index cfec44962..493c3042c 100644
--- a/docs/components/dropdown.md
+++ b/docs/components/dropdown.md
@@ -141,7 +141,7 @@ When dropdowns are used with [menus](/components/menu.md), you can listen for th
const container = document.querySelector('.dropdown-selection');
const dropdown = container.querySelector('sl-dropdown');
- dropdown.addEventListener('slSelect', event => {
+ dropdown.addEventListener('sl-select', event => {
const selectedItem = event.detail.item;
console.log(selectedItem.value);
});
diff --git a/docs/components/form.md b/docs/components/form.md
index 92fa9f44a..263253795 100644
--- a/docs/components/form.md
+++ b/docs/components/form.md
@@ -31,7 +31,7 @@ Shoelace forms don't make use of `action` and `method` attributes and they don't
const form = document.querySelector('.form-overview');
// Watch for the slSubmit event
- form.addEventListener('slSubmit', event => {
+ form.addEventListener('sl-submit', event => {
const formData = event.detail.formData;
let output = '';
@@ -69,7 +69,7 @@ Shoelace forms don't make use of `action` and `method` attributes and they don't
## Form Control Validation
-Client-side validation can be enabled through the browser's [constraint validations API](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation) for many form controls. You can enable it using props such as `required`, `pattern`, `minlength`, and `maxlength`. As the user interacts with the form control, the `invalid` attribute will reflect its validity based on its current value and the constraints that have been defined.
+Client-side validation can be enabled through the browser's [Constraint Validation API](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation) for many form controls. You can enable it using props such as `required`, `pattern`, `minlength`, and `maxlength`. As the user interacts with the form control, the `invalid` attribute will reflect its validity based on its current value and the constraints that have been defined.
When a form control is invalid, the containing form will not be submitted. Instead, the browser will show the user a relevant error message. If you don't want to use client-side validation, you can suppress this behavior by adding `novalidate` to the `` element.
@@ -103,7 +103,7 @@ To make a field required, use the `required` prop. The form will not be submitte
```
@@ -120,7 +120,7 @@ To restrict a value to a specific [pattern](https://developer.mozilla.org/en-US/
```
@@ -139,7 +139,7 @@ Some input types will automatically trigger constraints, such as `email` and `ur
```
@@ -158,8 +158,8 @@ To create a custom validation error, use the `setCustomValidity` method. The for
const form = document.querySelector('.input-validation-custom');
const input = form.querySelector('sl-input');
- form.addEventListener('slSubmit', () => alert('All fields are valid!'));
- input.addEventListener('slInput', () => {
+ form.addEventListener('sl-submit', () => alert('All fields are valid!'));
+ input.addEventListener('sl-input', () => {
if (input.value === 'shoelace') {
input.setCustomValidity('');
} else {
@@ -204,7 +204,7 @@ The `invalid` attribute reflects the form control's validity, so you can style i
To opt out of the browser's built-in validation and use your own, add the `novalidate` attribute to the form. This will ignore all constraints and prevent the browser from showing its own warnings when form controls are invalid.
-Remember that the `invalid` prop on form controls reflects validity as defined by the [constraint validation API](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation). You can set it initially, but the `invalid` prop will update as the user interacts with the form control. As such, you should not rely on it to set invalid styles using a custom validation library.
+Remember that the `invalid` prop on form controls reflects validity as defined by the [Constraint Validation API](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/HTML5/Constraint_validation). You can set it initially, but the `invalid` prop will update as the user interacts with the form control. As such, you should not rely on it to set invalid styles using a custom validation library.
Instead, toggle a class and target it in your stylesheet as shown below.
diff --git a/docs/components/format-bytes.md b/docs/components/format-bytes.md
index 227d1691e..f2f642b28 100644
--- a/docs/components/format-bytes.md
+++ b/docs/components/format-bytes.md
@@ -16,7 +16,7 @@ Formats a number as a human readable bytes value.
const formatter = container.querySelector('sl-format-bytes');
const input = container.querySelector('sl-input');
- input.addEventListener('slInput', () => formatter.value = input.value || 0);
+ input.addEventListener('sl-input', () => formatter.value = input.value || 0);
```
diff --git a/docs/components/icon.md b/docs/components/icon.md
index d39028d09..e30c1f0c8 100644
--- a/docs/components/icon.md
+++ b/docs/components/icon.md
@@ -103,7 +103,7 @@ Custom icons can be loaded individually with the `src` attribute. Only SVGs on a
});
// Filter as the user types
- input.addEventListener('slInput', () => {
+ input.addEventListener('sl-input', () => {
[...list.querySelectorAll('.icon-list-item')].map(item => {
const filter = input.value.toLowerCase();
if (filter === '') {
@@ -119,7 +119,7 @@ Custom icons can be loaded individually with the `src` attribute. Only SVGs on a
const iconType = localStorage.getItem('sl-icon:type') || 'outline';
select.value = iconType;
list.setAttribute('data-type', select.value);
- select.addEventListener('slChange', () => {
+ select.addEventListener('sl-change', () => {
list.setAttribute('data-type', select.value);
localStorage.setItem('sl-icon:type', select.value);
});
diff --git a/docs/components/input.md b/docs/components/input.md
index 778d2ebd4..6f15e1627 100644
--- a/docs/components/input.md
+++ b/docs/components/input.md
@@ -146,7 +146,7 @@ Dropdowns can be used in the `prefix` or `suffix` slot to make inputs more versa
const dropdown = container.querySelector('sl-dropdown');
const trigger = dropdown.querySelector('sl-button');
- dropdown.addEventListener('slSelect', event => {
+ dropdown.addEventListener('sl-select', event => {
const selectedItem = event.detail.item;
trigger.textContent = selectedItem.textContent;
[...dropdown.querySelectorAll('sl-menu-item')].map(item => item.checked = item === selectedItem);
diff --git a/docs/components/tag.md b/docs/components/tag.md
index 6529eff03..d0d046d23 100644
--- a/docs/components/tag.md
+++ b/docs/components/tag.md
@@ -48,7 +48,7 @@ Use the `clearable` attribute to add a clear button to the tag.
diff --git a/src/components.d.ts b/src/components.d.ts
index d6bf94643..177d852ce 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -297,7 +297,7 @@ export namespace Components {
*/
"setCustomValidity": (message: string) => Promise;
/**
- * When `inline` is true, this determines the size of the color picker's trigger.
+ * Determines the size of the color picker's trigger. This has no effect on inline color pickers.
*/
"size": 'small' | 'medium' | 'large';
/**
@@ -1468,19 +1468,19 @@ declare namespace LocalJSX {
/**
* Emitted after the alert closes and all transitions are complete.
*/
- "onSlAfterHide"?: (event: CustomEvent) => void;
+ "onSl-after-hide"?: (event: CustomEvent) => void;
/**
* Emitted after the alert opens and all transitions are complete.
*/
- "onSlAfterShow"?: (event: CustomEvent) => void;
+ "onSl-after-show"?: (event: CustomEvent) => void;
/**
* Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed.
*/
- "onSlHide"?: (event: CustomEvent) => void;
+ "onSl-hide"?: (event: CustomEvent) => void;
/**
* Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened.
*/
- "onSlShow"?: (event: CustomEvent) => void;
+ "onSl-show"?: (event: CustomEvent) => void;
/**
* Indicates whether or not the alert is open. You can use this in lieu of the show/hide methods.
*/
@@ -1534,15 +1534,15 @@ declare namespace LocalJSX {
/**
* Emitted when the animation is canceled.
*/
- "onSlCancel"?: (event: CustomEvent) => void;
+ "onSl-cancel"?: (event: CustomEvent) => void;
/**
* Emitted when the animation finishes.
*/
- "onSlFinish"?: (event: CustomEvent) => void;
+ "onSl-finish"?: (event: CustomEvent) => void;
/**
* Emitted when the animation starts or restarts.
*/
- "onSlStart"?: (event: CustomEvent) => void;
+ "onSl-start"?: (event: CustomEvent) => void;
/**
* Pauses the animation. The animation will resume when this prop is removed.
*/
@@ -1616,11 +1616,11 @@ declare namespace LocalJSX {
/**
* Emitted when the button loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the button gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* Set to true to draw a pill-style button with rounded edges.
*/
@@ -1678,15 +1678,15 @@ declare namespace LocalJSX {
/**
* Emitted when the control loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the control's checked state changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the control gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* Set to true to make the checkbox a required field.
*/
@@ -1724,29 +1724,29 @@ declare namespace LocalJSX {
/**
* Emitted after the color picker closes and all transitions are complete.
*/
- "onSlAfterHide"?: (event: CustomEvent) => void;
+ "onSl-after-hide"?: (event: CustomEvent) => void;
/**
* Emitted after the color picker opens and all transitions are complete.
*/
- "onSlAfterShow"?: (event: CustomEvent) => void;
+ "onSl-after-show"?: (event: CustomEvent) => void;
/**
* Emitted when the color picker's value changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the color picker closes. Calling `event.preventDefault()` will prevent it from being closed.
*/
- "onSlHide"?: (event: CustomEvent) => void;
+ "onSl-hide"?: (event: CustomEvent) => void;
/**
* Emitted when the color picker opens. Calling `event.preventDefault()` will prevent it from being opened.
*/
- "onSlShow"?: (event: CustomEvent) => void;
+ "onSl-show"?: (event: CustomEvent) => void;
/**
* Whether to show the opacity slider.
*/
"opacity"?: boolean;
/**
- * When `inline` is true, this determines the size of the color picker's trigger.
+ * Determines the size of the color picker's trigger. This has no effect on inline color pickers.
*/
"size"?: 'small' | 'medium' | 'large';
/**
@@ -1770,19 +1770,19 @@ declare namespace LocalJSX {
/**
* Emitted after the details closes and all transitions are complete.
*/
- "onSlAfterHide"?: (event: CustomEvent) => void;
+ "onSl-after-hide"?: (event: CustomEvent) => void;
/**
* Emitted after the details opens and all transitions are complete.
*/
- "onSlAfterShow"?: (event: CustomEvent) => void;
+ "onSl-after-show"?: (event: CustomEvent) => void;
/**
* Emitted when the details closes. Calling `event.preventDefault()` will prevent it from being closed.
*/
- "onSlHide"?: (event: CustomEvent) => void;
+ "onSl-hide"?: (event: CustomEvent) => void;
/**
* Emitted when the details opens. Calling `event.preventDefault()` will prevent it from being opened.
*/
- "onSlShow"?: (event: CustomEvent) => void;
+ "onSl-show"?: (event: CustomEvent) => void;
/**
* Indicates whether or not the details is open. You can use this in lieu of the show/hide methods.
*/
@@ -1804,23 +1804,23 @@ declare namespace LocalJSX {
/**
* Emitted after the dialog closes and all transitions are complete.
*/
- "onSlAfterHide"?: (event: CustomEvent) => void;
+ "onSl-after-hide"?: (event: CustomEvent) => void;
/**
* Emitted after the dialog opens and all transitions are complete.
*/
- "onSlAfterShow"?: (event: CustomEvent) => void;
+ "onSl-after-show"?: (event: CustomEvent) => void;
/**
* Emitted when the dialog closes. Calling `event.preventDefault()` will prevent it from being closed.
*/
- "onSlHide"?: (event: CustomEvent) => void;
+ "onSl-hide"?: (event: CustomEvent) => void;
/**
* Emitted when the overlay is clicked. Calling `event.preventDefault()` will prevent the dialog from closing.
*/
- "onSlOverlayDismiss"?: (event: CustomEvent) => void;
+ "onSl-overlay-dismiss"?: (event: CustomEvent) => void;
/**
* Emitted when the dialog opens. Calling `event.preventDefault()` will prevent it from being opened.
*/
- "onSlShow"?: (event: CustomEvent) => void;
+ "onSl-show"?: (event: CustomEvent) => void;
/**
* Indicates whether or not the dialog is open. You can use this in lieu of the show/hide methods.
*/
@@ -1842,23 +1842,23 @@ declare namespace LocalJSX {
/**
* Emitted after the drawer closes and all transitions are complete.
*/
- "onSlAfterHide"?: (event: CustomEvent) => void;
+ "onSl-after-hide"?: (event: CustomEvent) => void;
/**
* Emitted after the drawer opens and all transitions are complete.
*/
- "onSlAfterShow"?: (event: CustomEvent) => void;
+ "onSl-after-show"?: (event: CustomEvent) => void;
/**
* Emitted when the drawer closes. Calling `event.preventDefault()` will prevent it from being closed.
*/
- "onSlHide"?: (event: CustomEvent) => void;
+ "onSl-hide"?: (event: CustomEvent) => void;
/**
* Emitted when the overlay is clicked. Calling `event.preventDefault()` will prevent the drawer from closing.
*/
- "onSlOverlayDismiss"?: (event: CustomEvent) => void;
+ "onSl-overlay-dismiss"?: (event: CustomEvent) => void;
/**
* Emitted when the drawer opens. Calling `event.preventDefault()` will prevent it from being opened.
*/
- "onSlShow"?: (event: CustomEvent) => void;
+ "onSl-show"?: (event: CustomEvent) => void;
/**
* Indicates whether or not the drawer is open. You can use this in lieu of the show/hide methods.
*/
@@ -1888,19 +1888,19 @@ declare namespace LocalJSX {
/**
* Emitted after the dropdown closes and all transitions are complete.
*/
- "onSlAfterHide"?: (event: CustomEvent) => void;
+ "onSl-after-hide"?: (event: CustomEvent) => void;
/**
* Emitted after the dropdown opens and all transitions are complete.
*/
- "onSlAfterShow"?: (event: CustomEvent) => void;
+ "onSl-after-show"?: (event: CustomEvent) => void;
/**
* Emitted when the dropdown closes. Calling `event.preventDefault()` will prevent it from being closed.
*/
- "onSlHide"?: (event: CustomEvent) => void;
+ "onSl-hide"?: (event: CustomEvent) => void;
/**
* Emitted when the dropdown opens. Calling `event.preventDefault()` will prevent it from being opened.
*/
- "onSlShow"?: (event: CustomEvent) => void;
+ "onSl-show"?: (event: CustomEvent) => void;
/**
* Indicates whether or not the dropdown is open. You can use this in lieu of the show/hide methods.
*/
@@ -1933,7 +1933,7 @@ declare namespace LocalJSX {
/**
* Emitted when the form is submitted. This event will not be emitted if any form control inside of it is in an invalid state, unless the form has the `novalidate` attribute. Note that there is never a need to prevent this event, since it doen't send a GET or POST request like native forms. To "prevent" submission, use a conditional around the XHR request you use to submit the form's data with.
*/
- "onSlSubmit"?: (event: CustomEvent) => void;
+ "onSl-submit"?: (event: CustomEvent) => void;
}
interface SlFormatBytes {
/**
@@ -1965,11 +1965,11 @@ declare namespace LocalJSX {
/**
* Emitted when the icon failed to load.
*/
- "onSlError"?: (event: CustomEvent) => void;
+ "onSl-error"?: (event: CustomEvent) => void;
/**
* Emitted when the icon has loaded.
*/
- "onSlLoad"?: (event: CustomEvent) => void;
+ "onSl-load"?: (event: CustomEvent) => void;
/**
* An external URL of an SVG file.
*/
@@ -2015,7 +2015,7 @@ declare namespace LocalJSX {
/**
* Emitted when the slider position changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* The position of the divider as a percentage.
*/
@@ -2081,23 +2081,23 @@ declare namespace LocalJSX {
/**
* Emitted when the control loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the control's value changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the clear button is activated.
*/
- "onSlClear"?: (event: CustomEvent) => void;
+ "onSl-clear"?: (event: CustomEvent) => void;
/**
* Emitted when the control gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* Emitted when the control receives input.
*/
- "onSlInput"?: (event: CustomEvent) => void;
+ "onSl-input"?: (event: CustomEvent) => void;
/**
* A pattern to validate input against.
*/
@@ -2147,15 +2147,15 @@ declare namespace LocalJSX {
/**
* Emitted when the menu loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the menu gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* Emitted when a menu item is selected.
*/
- "onSlSelect"?: (event: CustomEvent) => void;
+ "onSl-select"?: (event: CustomEvent) => void;
}
interface SlMenuDivider {
}
@@ -2175,11 +2175,11 @@ declare namespace LocalJSX {
/**
* Emitted when the menu item becomes active.
*/
- "onSlActivate"?: (event: CustomEvent) => void;
+ "onSl-activate"?: (event: CustomEvent) => void;
/**
* Emitted when the menu item becomes inactive.
*/
- "onSlDeactivate"?: (event: CustomEvent) => void;
+ "onSl-deactivate"?: (event: CustomEvent) => void;
/**
* A unique value to store in the menu item.
*/
@@ -2227,15 +2227,15 @@ declare namespace LocalJSX {
/**
* Emitted when the control loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the control's checked state changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the control gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* The radio's value attribute.
*/
@@ -2265,15 +2265,15 @@ declare namespace LocalJSX {
/**
* Emitted when the control loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the control's value changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the control gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* The input's step attribute.
*/
@@ -2307,7 +2307,7 @@ declare namespace LocalJSX {
/**
* Emitted when the rating's value changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* The minimum increment value allowed by the control.
*/
@@ -2363,15 +2363,15 @@ declare namespace LocalJSX {
/**
* Emitted when the control loses focus
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the control's value changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the control gains focus
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* Set to true to draw a pill-style select with rounded edges.
*/
@@ -2421,15 +2421,15 @@ declare namespace LocalJSX {
/**
* Emitted when the control loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the control's checked state changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the control gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* Set to true to make the switch a required field.
*/
@@ -2457,11 +2457,11 @@ declare namespace LocalJSX {
/**
* Emitted when a tab is hidden.
*/
- "onSlTabHide"?: (event: CustomEvent) => void;
+ "onSl-tab-hide"?: (event: CustomEvent) => void;
/**
* Emitted when a tab is shown.
*/
- "onSlTabShow"?: (event: CustomEvent) => void;
+ "onSl-tab-show"?: (event: CustomEvent) => void;
/**
* The placement of the tabs.
*/
@@ -2485,7 +2485,7 @@ declare namespace LocalJSX {
/**
* Emitted when the clear button is activated.
*/
- "onSlClear"?: (event: CustomEvent) => void;
+ "onSl-clear"?: (event: CustomEvent) => void;
/**
* Set to true to draw a pill-style tag with rounded edges.
*/
@@ -2547,19 +2547,19 @@ declare namespace LocalJSX {
/**
* Emitted when the control loses focus.
*/
- "onSlBlur"?: (event: CustomEvent) => void;
+ "onSl-blur"?: (event: CustomEvent) => void;
/**
* Emitted when the control's value changes.
*/
- "onSlChange"?: (event: CustomEvent) => void;
+ "onSl-change"?: (event: CustomEvent) => void;
/**
* Emitted when the control gains focus.
*/
- "onSlFocus"?: (event: CustomEvent) => void;
+ "onSl-focus"?: (event: CustomEvent) => void;
/**
* Emitted when the control receives input.
*/
- "onSlInput"?: (event: CustomEvent) => void;
+ "onSl-input"?: (event: CustomEvent) => void;
/**
* The textarea's placeholder text.
*/
@@ -2609,19 +2609,19 @@ declare namespace LocalJSX {
/**
* Emitted after the tooltip has hidden and all transitions are complete.
*/
- "onSlAfterHide"?: (event: CustomEvent) => void;
+ "onSl-after-hide"?: (event: CustomEvent) => void;
/**
* Emitted after the tooltip has shown and all transitions are complete.
*/
- "onSlAfterShow"?: (event: CustomEvent) => void;
+ "onSl-aftershow"?: (event: CustomEvent) => void;
/**
* Emitted when the tooltip begins to hide. Calling `event.preventDefault()` will prevent it from being hidden.
*/
- "onSlHide"?: (event: CustomEvent) => void;
+ "onSl-hide"?: (event: CustomEvent) => void;
/**
* Emitted when the tooltip begins to show. Calling `event.preventDefault()` will prevent it from being shown.
*/
- "onSlShow"?: (event: CustomEvent) => void;
+ "onSl-show"?: (event: CustomEvent) => void;
/**
* Indicates whether or not the tooltip is open. You can use this in lieu of the show/hide methods.
*/
diff --git a/src/components/alert/alert.tsx b/src/components/alert/alert.tsx
index 201357b72..ba9996cc7 100644
--- a/src/components/alert/alert.tsx
+++ b/src/components/alert/alert.tsx
@@ -53,16 +53,16 @@ export class Alert {
}
/** Emitted when the alert opens. Calling `event.preventDefault()` will prevent it from being opened. */
- @Event() slShow: EventEmitter;
+ @Event({ eventName: 'sl-show' }) slShow: EventEmitter;
/** Emitted after the alert opens and all transitions are complete. */
- @Event() slAfterShow: EventEmitter;
+ @Event({ eventName: 'sl-after-show' }) slAfterShow: EventEmitter;
/** Emitted when the alert closes. Calling `event.preventDefault()` will prevent it from being closed. */
- @Event() slHide: EventEmitter;
+ @Event({ eventName: 'sl-hide' }) slHide: EventEmitter;
/** Emitted after the alert closes and all transitions are complete. */
- @Event() slAfterHide: EventEmitter;
+ @Event({ eventName: 'sl-after-hide' }) slAfterHide: EventEmitter;
connectedCallback() {
this.handleCloseClick = this.handleCloseClick.bind(this);
@@ -136,7 +136,7 @@ export class Alert {
this.show();
this.host.addEventListener(
- 'slAfterHide',
+ 'sl-after-hide',
() => {
this.host.remove();
resolve();
diff --git a/src/components/animation/animation.tsx b/src/components/animation/animation.tsx
index a80ee69fe..c791cc4d7 100644
--- a/src/components/animation/animation.tsx
+++ b/src/components/animation/animation.tsx
@@ -89,13 +89,13 @@ export class Animate {
}
/** Emitted when the animation is canceled. */
- @Event() slCancel: EventEmitter;
+ @Event({ eventName: 'sl-cancel' }) slCancel: EventEmitter;
/** Emitted when the animation finishes. */
- @Event() slFinish: EventEmitter;
+ @Event({ eventName: 'sl-finish' }) slFinish: EventEmitter;
/** Emitted when the animation starts or restarts. */
- @Event() slStart: EventEmitter;
+ @Event({ eventName: 'sl-start' }) slStart: EventEmitter;
connectedCallback() {
this.handleAnimationFinish = this.handleAnimationFinish.bind(this);
diff --git a/src/components/button-group/button-group.tsx b/src/components/button-group/button-group.tsx
index e9bf0027e..c69ec1bab 100644
--- a/src/components/button-group/button-group.tsx
+++ b/src/components/button-group/button-group.tsx
@@ -26,13 +26,13 @@ export class ButtonGroup {
}
componentDidLoad() {
- this.buttonGroup.addEventListener('slFocus', this.handleFocus);
- this.buttonGroup.addEventListener('slBlur', this.handleBlur);
+ this.buttonGroup.addEventListener('sl-focus', this.handleFocus);
+ this.buttonGroup.addEventListener('sl-blur', this.handleBlur);
}
disconnectedCallback() {
- this.buttonGroup.removeEventListener('slFocus', this.handleFocus);
- this.buttonGroup.removeEventListener('slBlur', this.handleBlur);
+ this.buttonGroup.removeEventListener('sl-focus', this.handleFocus);
+ this.buttonGroup.removeEventListener('sl-blur', this.handleBlur);
}
handleFocus(event: CustomEvent) {
diff --git a/src/components/button/button.tsx b/src/components/button/button.tsx
index 5b93e311f..091c24ad8 100644
--- a/src/components/button/button.tsx
+++ b/src/components/button/button.tsx
@@ -65,10 +65,10 @@ export class Button {
@Prop() download: string;
/** Emitted when the button loses focus. */
- @Event() slBlur: EventEmitter;
+ @Event({ eventName: 'sl-blur' }) slBlur: EventEmitter;
/** Emitted when the button gains focus. */
- @Event() slFocus: EventEmitter;
+ @Event({ eventName: 'sl-focus' }) slFocus: EventEmitter;
connectedCallback() {
this.handleBlur = this.handleBlur.bind(this);
diff --git a/src/components/checkbox/checkbox.tsx b/src/components/checkbox/checkbox.tsx
index bd6b5f8a6..2ebe7702c 100644
--- a/src/components/checkbox/checkbox.tsx
+++ b/src/components/checkbox/checkbox.tsx
@@ -49,13 +49,13 @@ export class Checkbox {
@Prop({ mutable: true, reflect: true }) invalid = false;
/** Emitted when the control loses focus. */
- @Event() slBlur: EventEmitter;
+ @Event({ eventName: 'sl-blur' }) slBlur: EventEmitter;
/** Emitted when the control's checked state changes. */
- @Event() slChange: EventEmitter;
+ @Event({ eventName: 'sl-change' }) slChange: EventEmitter;
/** Emitted when the control gains focus. */
- @Event() slFocus: EventEmitter;
+ @Event({ eventName: 'sl-focus' }) slFocus: EventEmitter;
@Watch('checked')
@Watch('indeterminate')
diff --git a/src/components/color-picker/color-picker.tsx b/src/components/color-picker/color-picker.tsx
index 914e5a0cd..b4e73eb97 100644
--- a/src/components/color-picker/color-picker.tsx
+++ b/src/components/color-picker/color-picker.tsx
@@ -58,7 +58,7 @@ export class ColorPicker {
/** Set to true to render the color picker inline rather than inside a dropdown. */
@Prop() inline = false;
- /** When `inline` is true, this determines the size of the color picker's trigger. */
+ /** Determines the size of the color picker's trigger. This has no effect on inline color pickers. */
@Prop() size: 'small' | 'medium' | 'large' = 'medium';
/** The input's name attribute. */
@@ -109,19 +109,19 @@ export class ColorPicker {
];
/** Emitted when the color picker's value changes. */
- @Event() slChange: EventEmitter;
+ @Event({ eventName: 'sl-change' }) slChange: EventEmitter;
/** Emitted when the color picker opens. Calling `event.preventDefault()` will prevent it from being opened. */
- @Event() slShow: EventEmitter;
+ @Event({ eventName: 'sl-show' }) slShow: EventEmitter;
/** Emitted after the color picker opens and all transitions are complete. */
- @Event() slAfterShow: EventEmitter;
+ @Event({ eventName: 'sl-after-show' }) slAfterShow: EventEmitter;
/** Emitted when the color picker closes. Calling `event.preventDefault()` will prevent it from being closed. */
- @Event() slHide: EventEmitter;
+ @Event({ eventName: 'sl-hide' }) slHide: EventEmitter;
/** Emitted after the color picker closes and all transitions are complete. */
- @Event() slAfterHide: EventEmitter;
+ @Event({ eventName: 'sl-after-hide' }) slAfterHide: EventEmitter;
@Watch('value')
handleValueChange(newValue: string, oldValue: string) {
@@ -189,7 +189,7 @@ export class ColorPicker {
return new Promise(resolve => {
this.dropdown.addEventListener(
- 'slAfterShow',
+ 'sl-after-show',
() => {
this.input.reportValidity();
resolve();
@@ -740,7 +740,7 @@ export class ColorPicker {
value={this.inputValue}
disabled={this.disabled}
onKeyDown={this.handleInputKeyDown}
- onSlChange={this.handleInputChange}
+ onSl-change={this.handleInputChange}
/>
(this.copyButton = el)}
@@ -789,10 +789,10 @@ export class ColorPicker {
aria-disabled={this.disabled}
containingElement={this.host}
hoist={this.hoist}
- onSlShow={this.handleDropdownShow}
- onSlAfterShow={this.handleDropdownAfterShow}
- onSlHide={this.handleDropdownHide}
- onSlAfterHide={this.handleDropdownAfterHide}
+ onSl-show={this.handleDropdownShow}
+ onSl-after-show={this.handleDropdownAfterShow}
+ onSl-hide={this.handleDropdownHide}
+ onSl-after-hide={this.handleDropdownAfterHide}
>