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} >