@italia/radio 1.0.0-alpha.5 → 1.0.0-alpha.6

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.
@@ -664,7 +664,7 @@
664
664
  {
665
665
  "kind": "variable",
666
666
  "name": "meta",
667
- "default": "{ title: 'Componenti/Form/Radio', tags: ['alpha', 'a11y-ok', 'web-component'], component: 'it-radio-group', args: { id: '', name: 'gruppo1', // @ts-ignore these are docs disabled: false, supportText: '', grouped: false, inline: false, form: '', customValidation: false, validityMessage: '', required: false, }, argTypes: { id: { control: 'text', description: 'ID del campo', }, name: { control: 'text', description: 'Nome del campo. I radio dello stesso gruppo devono avere lo stesso name.', }, grouped: { control: 'boolean', type: 'boolean', description: 'Se il radio-group deve avere i suoi elementi raggruppati visivamente', table: { defaultValue: { summary: 'false' } }, }, // @ts-ignore these are docs disabled: { control: 'boolean', type: 'boolean', description: \"Se il gruppo di radio è disabilitato. Per l'omonimo attributo del componente it-radio, vedi la sezione dedicata\", table: { defaultValue: { summary: 'false' } }, }, inline: { control: 'boolean', type: 'boolean', description: 'Se il radio-group deve avere i suoi elementi visualizzati in linea', table: { defaultValue: { summary: 'false' } }, }, supportText: { name: 'support-text', control: 'text', description: 'Testo di supporto per un singolo componente it-radio', }, form: { control: 'text', description: \"ID html del form a cui è associato il componente it-radio-group, se non si trova all'interno di una form \", }, customValidation: { name: 'custom-validation', control: 'boolean', type: 'boolean', table: { defaultValue: { summary: 'false' } }, description: 'Se la validazione del radio group è fatta esternamente (lato server o con plugin js - validazione custom), impostare questo attributo a `true`.', }, validityMessage: { name: 'validity-message', control: 'text', description: \"Messaggio da mostrare quando il radio group è invalido nel caso di validazione esterna (validazione custom). Se impostato a '' (stringa vuota) il campo viene considerato valido.\", }, required: { control: 'boolean', type: 'boolean', description: 'Se il radio group è obbligatorio', table: { defaultValue: { summary: 'false' } }, }, }, } satisfies Meta<RadioProps>"
667
+ "default": "{ title: 'Componenti/Form/Radio button', tags: ['alpha', 'a11y-ok', 'web-component'], component: 'it-radio-group', args: { id: '', name: 'gruppo1', // @ts-ignore these are docs disabled: false, supportText: '', grouped: false, inline: false, form: '', customValidation: false, validityMessage: '', required: false, }, argTypes: { id: { control: 'text', description: 'ID del campo', }, name: { control: 'text', description: 'Nome del campo. I radio dello stesso gruppo devono avere lo stesso name.', }, grouped: { control: 'boolean', type: 'boolean', description: 'Se il radio-group deve avere i suoi elementi raggruppati visivamente', table: { defaultValue: { summary: 'false' } }, }, // @ts-ignore these are docs disabled: { control: 'boolean', type: 'boolean', description: \"Se il gruppo di radio è disabilitato. Per l'omonimo attributo del componente it-radio, vedi la sezione dedicata\", table: { defaultValue: { summary: 'false' } }, }, inline: { control: 'boolean', type: 'boolean', description: 'Se il radio-group deve avere i suoi elementi visualizzati in linea', table: { defaultValue: { summary: 'false' } }, }, supportText: { name: 'support-text', control: 'text', description: 'Testo di supporto per un singolo componente it-radio', }, form: { control: 'text', description: \"ID html del form a cui è associato il componente it-radio-group, se non si trova all'interno di una form \", }, customValidation: { name: 'custom-validation', control: 'boolean', type: 'boolean', table: { defaultValue: { summary: 'false' } }, description: 'Se la validazione del radio group è fatta esternamente (lato server o con plugin js - validazione custom), impostare questo attributo a `true`.', }, validityMessage: { name: 'validity-message', control: 'text', description: \"Messaggio da mostrare quando il radio group è invalido nel caso di validazione esterna (validazione custom). Se impostato a '' (stringa vuota) il campo viene considerato valido.\", }, required: { control: 'boolean', type: 'boolean', description: 'Se il radio group è obbligatorio', table: { defaultValue: { summary: 'false' } }, }, }, } satisfies Meta<RadioProps>"
668
668
  },
669
669
  {
670
670
  "kind": "variable",
package/dist/src/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  export { ItRadio } from './it-radio.js';
2
2
  export { ItRadioGroup } from './it-radio-group.js';
3
- import '../index-DETY_70L.js';
3
+ import '../index-TisXdfre.js';
4
4
  import 'lit/directive.js';
5
5
  import 'lit';
6
6
  import 'lit/decorators.js';
@@ -1,4 +1,4 @@
1
- import { _ as __decorate, a as __metadata, F as FormControl, b as FormControlController } from '../index-DETY_70L.js';
1
+ import { _ as __decorate, a as __metadata, F as FormControl, b as FormControlController } from '../index-TisXdfre.js';
2
2
  import { css, html } from 'lit';
3
3
  import { property, queryAssignedElements, customElement } from 'lit/decorators.js';
4
4
  import 'lit/directive.js';
@@ -330,6 +330,7 @@ a {
330
330
  }
331
331
  a:hover {
332
332
  color: var(--bsi-color-link-hover);
333
+ cursor: pointer;
333
334
  }
334
335
 
335
336
  pre,
@@ -894,6 +895,11 @@ input::-webkit-datetime-edit {
894
895
  .form-check input[type=radio]:disabled:checked + label::before {
895
896
  border-color: var(--bsi-color-border-disabled);
896
897
  }
898
+ .form-check .form-text {
899
+ display: block;
900
+ margin-bottom: 0.5rem;
901
+ padding-right: 3.25rem;
902
+ }
897
903
  .form-check.form-check-group {
898
904
  margin-bottom: 1rem;
899
905
  padding: 0 0 1rem 0;
@@ -917,11 +923,6 @@ input::-webkit-datetime-edit {
917
923
  .form-check.form-check-group input[type=radio]:checked + label::before {
918
924
  right: 0;
919
925
  }
920
- .form-check.form-check-group .form-text {
921
- display: block;
922
- margin-bottom: 0.5rem;
923
- padding-right: 3.25rem;
924
- }
925
926
  .form-check.form-check-group input.semi-checked:not(:checked) + label::before {
926
927
  right: 4px;
927
928
  left: auto;
@@ -1 +1 @@
1
- {"version":3,"file":"it-radio-group.js","sources":["../../../globals/dist/src/controllers/roving-tabindex-controller.js","../../../src/it-radio-group.ts"],"sourcesContent":["/**\n * Roving Tabindex Controller\n *\n * Implements the ARIA roving tabindex pattern for keyboard navigation.\n * See: https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n *\n * Usage:\n * ```ts\n * private rovingTabindex = new RovingTabindexController(this, {\n * getItems: () => Array.from(this.querySelectorAll('my-item')),\n * onSelect: (item) => this.selectItem(item),\n * });\n * ```\n */\nexport class RovingTabindexController {\n constructor(host, config) {\n this.host = host;\n this.config = {\n wrap: true,\n direction: 'both',\n selectOnFocus: false,\n skipItem: (item) => item.hasAttribute('disabled') || item.disabled === true,\n ...config,\n };\n host.addController(this);\n }\n // eslint-disable-next-line class-methods-use-this\n hostConnected() {\n // Controller is ready when host connects\n }\n // eslint-disable-next-line class-methods-use-this\n hostDisconnected() {\n // Cleanup if needed\n }\n /**\n * Update tabindex values for all items\n * @param activeIndex - Index of the item that should be tabbable (default: 0 or first non-disabled)\n */\n updateTabindices(activeIndex) {\n const items = this.config.getItems();\n if (!items || items.length === 0) {\n return;\n }\n // Find the active index\n let targetIndex = activeIndex ?? 0;\n // If no active index specified, use first non-disabled item\n if (activeIndex === undefined) {\n targetIndex = items.findIndex((item) => !this.config.skipItem(item));\n if (targetIndex === -1) {\n targetIndex = 0; // Fallback to first item if all disabled\n }\n }\n // Set tabindex for all items\n items.forEach((item, index) => {\n const itemElement = item;\n if (this.config.skipItem(itemElement)) {\n // eslint-disable-next-line no-param-reassign\n itemElement.tabIndex = -1;\n }\n else {\n // eslint-disable-next-line no-param-reassign\n itemElement.tabIndex = index === targetIndex ? 0 : -1;\n }\n });\n }\n /**\n * Handle keyboard navigation\n * @param currentItem - The currently focused item\n * @param event - The keyboard event\n * @returns true if the event was handled, false otherwise\n */\n handleKeydown(currentItem, event) {\n const { direction } = this.config;\n const { key } = event;\n // Determine if this key should be handled based on direction\n const isVertical = key === 'ArrowUp' || key === 'ArrowDown';\n const isHorizontal = key === 'ArrowLeft' || key === 'ArrowRight';\n const isHome = key === 'Home';\n const isEnd = key === 'End';\n const shouldHandle = isHome ||\n isEnd ||\n (direction === 'both' && (isVertical || isHorizontal)) ||\n (direction === 'vertical' && isVertical) ||\n (direction === 'horizontal' && isHorizontal);\n if (!shouldHandle) {\n return false;\n }\n // Prevent default behavior (page scrolling)\n event.preventDefault();\n const items = this.config.getItems();\n const currentIndex = items.indexOf(currentItem);\n if (currentIndex === -1) {\n return false;\n }\n let nextIndex = currentIndex;\n // Handle Home/End keys\n if (isHome) {\n nextIndex = 0;\n }\n else if (isEnd) {\n nextIndex = items.length - 1;\n }\n else {\n // Handle arrow keys\n const isNext = key === 'ArrowDown' || key === 'ArrowRight';\n const isPrev = key === 'ArrowUp' || key === 'ArrowLeft';\n if (isNext) {\n nextIndex = this.getNextIndex(items, currentIndex, 1);\n }\n else if (isPrev) {\n nextIndex = this.getNextIndex(items, currentIndex, -1);\n }\n }\n // Skip disabled items\n nextIndex = this.findNextValidIndex(items, nextIndex, nextIndex > currentIndex ? 1 : -1);\n if (nextIndex !== -1 && nextIndex !== currentIndex) {\n const nextItem = items[nextIndex];\n // Update tabindices\n this.updateTabindices(nextIndex);\n // Focus the next item\n nextItem.focus();\n // Optionally select/activate the item\n if (this.config.selectOnFocus && this.config.onSelect) {\n this.config.onSelect(nextItem, event);\n }\n return true;\n }\n return false;\n }\n /**\n * Get the next index based on direction\n */\n getNextIndex(items, currentIndex, direction) {\n const { wrap } = this.config;\n let nextIndex = currentIndex + direction;\n if (wrap) {\n // Wrap around\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n else if (nextIndex >= items.length) {\n nextIndex = 0;\n }\n }\n else {\n // Clamp to bounds\n nextIndex = Math.max(0, Math.min(items.length - 1, nextIndex));\n }\n return nextIndex;\n }\n /**\n * Find the next valid (non-disabled) index\n */\n findNextValidIndex(items, startIndex, direction) {\n const maxAttempts = items.length;\n let attempts = 0;\n let index = startIndex;\n while (attempts < maxAttempts) {\n if (!this.config.skipItem(items[index])) {\n return index;\n }\n index = this.getNextIndex(items, index, direction);\n attempts += 1;\n }\n // All items are disabled\n return -1;\n }\n /**\n * Set focus to a specific item\n */\n focusItem(item) {\n const items = this.config.getItems();\n const index = items.indexOf(item);\n if (index !== -1) {\n this.updateTabindices(index);\n item.focus();\n }\n }\n /**\n * Set focus to the first non-disabled item\n */\n focusFirst() {\n const items = this.config.getItems();\n const firstValidIndex = this.findNextValidIndex(items, 0, 1);\n if (firstValidIndex !== -1) {\n this.focusItem(items[firstValidIndex]);\n }\n }\n /**\n * Set focus to the last non-disabled item\n */\n focusLast() {\n const items = this.config.getItems();\n const lastValidIndex = this.findNextValidIndex(items, items.length - 1, -1);\n if (lastValidIndex !== -1) {\n this.focusItem(items[lastValidIndex]);\n }\n }\n}\n//# sourceMappingURL=roving-tabindex-controller.js.map","import { html, PropertyValues } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\nimport { FormControl, FormControlController, RovingTabindexController } from '@italia/globals';\nimport type { ItRadio } from '@italia/radio';\nimport styles from './radio-group.scss';\n\n/**\n * Radio group component - manages a collection of radio buttons\n *\n * @element it-radio-group\n * @slot - Contains the `<it-radio>` elements\n *\n */\n@customElement('it-radio-group')\nexport class ItRadioGroup extends FormControl {\n static styles = styles;\n\n static formAssociated = true;\n\n /**\n * The name of the radio group, used for form submission\n */\n @property({ type: String })\n name = '';\n\n /**\n * The currently selected value\n */\n @property({ type: String, reflect: true })\n value = '';\n\n /**\n * Whether the radio group is disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Whether a selection is required\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n /**\n * Optional prop for visual styling of grouped radios (borders between radios)\n */\n @property({ type: Boolean, reflect: true })\n grouped = false;\n\n /**\n * Whether the radios are displayed inline (horizontally) or stacked (vertically)\n */\n @property({ type: Boolean, reflect: true })\n inline = false;\n\n /**\n * Get all slotted radio buttons\n */\n @queryAssignedElements()\n protected _radios!: ItRadio[];\n\n @queryAssignedElements({ slot: 'label' })\n private _label!: HTMLElement[];\n\n /**\n * Roving tabindex controller for keyboard navigation\n */\n protected rovingTabindex = new RovingTabindexController<ItRadio>(this, {\n getItems: () => this._radios,\n onSelect: (radio, event) => this.selectRadio(radio, event),\n direction: 'both',\n selectOnFocus: true,\n });\n\n /**\n * Form control integration\n */\n private _formController = new FormControlController(this as any, {\n value: () => this.value,\n // disabled: () => this.disabled,\n setValue: (control: FormControl, value: unknown) => {\n const radioGroup = control as ItRadioGroup;\n radioGroup.value = value as string;\n },\n });\n\n /**\n * Override: Custom validity check for radio group\n */\n override get validity(): ValidityState {\n // Fallback: create a custom ValidityState-like object\n const valid = !this.required || !!this.value;\n return {\n valid,\n valueMissing: this.required && !this.value,\n typeMismatch: false,\n patternMismatch: false,\n tooLong: false,\n tooShort: false,\n rangeUnderflow: false,\n rangeOverflow: false,\n stepMismatch: false,\n badInput: false,\n customError: false,\n } as ValidityState;\n }\n\n /**\n * Override: Check validity for radio group\n */\n override checkValidity(): boolean {\n if (this.required && !this.value) {\n return false;\n }\n return true;\n }\n\n /**\n * Override: Report validity for radio group\n */\n override reportValidity(): boolean {\n const isValid = this.checkValidity();\n this.handleValidationMessages();\n this._updateInvalidState();\n return isValid;\n }\n\n /** Sets a custom validation message. Pass an empty string to restore validity. */\n public override setCustomValidity(message: string) {\n // Only trigger validation state if message is non-empty (actual error)\n // Empty message during init or after correction should not trigger invalid state initially\n\n this.validationMessage = message;\n this.formControlController.updateValidity();\n // Update aria-invalid on group and children immediately\n this._updateInvalidState();\n }\n\n protected override handleValidationMessages() {\n const _v = this.validity;\n if (!this.customValidation) {\n if (_v.valueMissing) {\n this.setCustomValidity(this.$t('validityRequired'));\n } else this.setCustomValidity('');\n }\n }\n\n private _updateInvalidState() {\n // Only show aria-invalid if validation has been triggered (ARIA best practice)\n if (!this.formControlController.submittedOnce) {\n return;\n }\n\n const invalid = this.checkValidity() === false || !!this.validationMessage;\n if (invalid) this.setAttribute('aria-invalid', 'true');\n else this.removeAttribute('aria-invalid');\n this._radios?.forEach((r) => {\n if (invalid) r.setAttribute('aria-invalid', 'true');\n else r.removeAttribute('aria-invalid');\n });\n\n // Update validation message in light DOM\n this._updateValidationMessage();\n }\n\n /**\n * Update validation message in light DOM (for aria-describedby cross-boundary support)\n */\n private _updateValidationMessage() {\n const validityMessage = this.validationMessage;\n const messageId = `invalid-feedback-${this._id}`;\n\n // Find or create validation message element in light DOM\n let messageEl = this.querySelector(`[slot=\"validation-message\"]`);\n\n if (validityMessage && validityMessage.length > 0) {\n // Create message element if it doesn't exist\n if (!messageEl) {\n messageEl = document.createElement('div');\n messageEl.setAttribute('slot', 'validation-message');\n this.appendChild(messageEl);\n }\n\n // Update message content and attributes\n messageEl.id = messageId;\n messageEl.className = 'form-feedback just-validate-error-label';\n messageEl.setAttribute('role', 'alert');\n messageEl.removeAttribute('hidden');\n\n const labelText = this._label?.[0]?.textContent || '';\n messageEl.innerHTML = `<span class=\"visually-hidden\">${labelText}: </span>${validityMessage}`;\n\n // Update aria-describedby on host\n const existingDescribedBy = this._ariaAttributes['aria-describedby'] || '';\n const ariaDescribedBy = existingDescribedBy ? `${existingDescribedBy} ${messageId}` : messageId;\n this.setAttribute('aria-describedby', ariaDescribedBy);\n } else {\n // Remove message element if validation passed\n if (messageEl) {\n messageEl.remove();\n }\n\n // Update aria-describedby (remove message id)\n const existingDescribedBy = this._ariaAttributes['aria-describedby'] || '';\n if (existingDescribedBy) {\n this.setAttribute('aria-describedby', existingDescribedBy);\n } else {\n this.removeAttribute('aria-describedby');\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback?.();\n this._handleReady();\n this.setAttribute('role', 'radiogroup');\n }\n\n firstUpdated() {\n const checkedRadio = this.querySelector<ItRadio>('it-radio[checked]');\n if (checkedRadio) {\n this.value = checkedRadio.value;\n }\n this.updateRadios();\n }\n\n private async updateRadios() {\n if (!this.hasUpdated) {\n // Initial validation has to happen after the initial render to allow\n // the buttons to be queries from the rendered <slot> element\n await this.updateComplete;\n }\n const radios = this.querySelectorAll<ItRadio>('it-radio');\n // eslint-disable-next-line no-return-assign, no-param-reassign\n radios.forEach((r) => {\n // eslint-disable-next-line no-param-reassign\n r.checked = r.value === this.value;\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback?.();\n }\n\n /**\n * Sync group value from checked radio (initialization)\n */\n private _syncValueFromRadios() {\n if (!this._radios) {\n return;\n }\n\n // Find the first checked radio\n const checkedRadio = this._radios.find((r) => r.checked);\n if (checkedRadio) {\n // Sync the group value from the checked radio\n this.value = checkedRadio.value;\n }\n }\n\n /**\n * PUBLIC API: Called by radio buttons to select themselves\n */\n selectRadio(radio: ItRadio, event: KeyboardEvent | PointerEvent | MouseEvent): void {\n if (radio.disabled || this.disabled) {\n return;\n }\n\n this.value = radio.value;\n\n // Uncheck other radios using their public API\n this._radios.forEach((r) => {\n if (r !== radio) {\n // eslint-disable-next-line no-param-reassign\n r.checked = false;\n } else {\n // eslint-disable-next-line no-param-reassign\n r.checked = true;\n }\n });\n\n // If validation was already triggered, update state after selection\n if (this.formControlController.submittedOnce) {\n // For native validation, clear error if now valid\n if (!this.customValidation) {\n this.handleValidationMessages();\n this._updateInvalidState();\n }\n // For custom validation (JustValidate), the external validator will call setCustomValidity\n // but we still update the state based on current validationMessage\n else {\n this._updateInvalidState();\n }\n }\n\n if (event.type === 'click' || event.type === 'pointerdown') {\n this._handleClick(event);\n } else {\n this._handleChange(event);\n }\n }\n\n /**\n * PUBLIC API: Handle keyboard navigation from radio buttons\n */\n handleRadioKeyDown(radio: ItRadio, event: KeyboardEvent): void {\n // Delegate to roving tabindex controller\n const handled = this.rovingTabindex.handleKeydown(radio, event);\n if (handled) this._handleFocus(event);\n else this._handleBlur(event);\n }\n\n /**\n * Synchronize radio button states with group state\n */\n protected _updateRadiosState() {\n if (!this._radios || this._radios.length === 0) {\n return;\n }\n\n this._radios.forEach((radio) => {\n // Set checked state based on value\n // eslint-disable-next-line no-param-reassign\n radio.checked = radio.value === this.value;\n\n // Sync disabled state from group to radios\n // Note: We don't override individual radio's disabled state\n // If the group is disabled, all radios should be disabled\n // But individual radios can be disabled independently\n if (this.disabled) {\n // eslint-disable-next-line no-param-reassign\n radio.disabled = true;\n }\n });\n\n // Update tabindex using roving tabindex controller\n // Priority: checked and enabled > first enabled > 0\n let tabbableIndex = 0;\n\n // First, try to find a checked radio that is not disabled\n const checkedEnabledIndex = this._radios.findIndex((r) => r.checked && !r.disabled);\n if (checkedEnabledIndex >= 0) {\n tabbableIndex = checkedEnabledIndex;\n } else {\n // If no checked enabled radio, find the first enabled radio\n const firstEnabledIndex = this._radios.findIndex((r) => !r.disabled);\n if (firstEnabledIndex >= 0) {\n tabbableIndex = firstEnabledIndex;\n }\n // If all radios are disabled, tabbableIndex stays 0 (but controller will set all to -1)\n }\n\n this.rovingTabindex.updateTabindices(tabbableIndex);\n }\n\n /**\n * Sync group state (name, grouped, inline, required) to child radios\n * This replaces the need for requestUpdate() calls\n */\n private _syncGroupStateToRadios() {\n if (!this._radios || this._radios.length === 0) {\n return;\n }\n\n const groupState = {\n name: this.name,\n grouped: this.grouped,\n inline: this.inline,\n required: this.required,\n };\n\n this._radios.forEach((radio) => {\n radio.syncFromGroup(groupState);\n });\n }\n\n updated(changed: PropertyValues) {\n super.updated(changed);\n\n // Update radios when value or name changes\n if (changed.has('value')) {\n this._updateRadiosState();\n this.dispatchEvent(new Event('it-change', { bubbles: true }));\n // Re-validate after value change (for native validation) only if validation was already triggered\n if (!this.customValidation && this.formControlController.submittedOnce) {\n this.handleValidationMessages();\n this._updateInvalidState();\n }\n }\n\n // If validation message changed, update aria-invalid on group and children\n if (changed.has('validationMessage')) {\n this._updateInvalidState();\n }\n\n // If relevant group properties changed, sync to child radios\n const relevant = ['grouped', 'inline', 'name', 'required', 'disabled'];\n const hasChanged = Array.from(changed.keys()).some((k) => relevant.includes(String(k)));\n if (hasChanged && this._radios?.length) {\n this._syncGroupStateToRadios();\n }\n }\n\n /**\n * Handle slot changes (when radios are added/removed)\n */\n protected _handleSlotChange = () => {\n this._syncValueFromRadios();\n this._updateRadiosState();\n // Sync group state to newly added radios\n this._syncGroupStateToRadios();\n };\n\n protected _handleLabelSlotChange = () => {\n const labelId = this.generateId('it-radio-group-label');\n this._label[0]?.setAttribute('id', labelId);\n this.setAttribute('aria-labelledby', labelId);\n };\n\n /**\n * Render the component\n */\n render() {\n const validityMessage = this.validationMessage;\n const invalid = validityMessage?.length > 0 || (!this.customValidation && this?.checkValidity() === false);\n\n const groupWrapperClasses = this.composeClass(\n 'it-radio-group',\n 'it-form__control',\n this.inline && !this.grouped ? 'it-radio-group-inline' : '',\n this.grouped && !this.inline ? 'it-radio-group-stacked' : '',\n invalid ? 'is-invalid' : '',\n );\n\n return html`<slot name=\"label\" @slotchange=${this._handleLabelSlotChange}></slot>\n <div class=${groupWrapperClasses}>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n <slot name=\"validation-message\"></slot>`;\n }\n}\n\n// Declare custom element\ndeclare global {\n interface HTMLElementTagNameMap {\n 'it-radio-group': ItRadioGroup;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"it-radio-group.js","sources":["../../../globals/dist/src/controllers/roving-tabindex-controller.js","../../../src/it-radio-group.ts"],"sourcesContent":["/**\n * Roving Tabindex Controller\n *\n * Implements the ARIA roving tabindex pattern for keyboard navigation.\n * See: https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n *\n * Usage:\n * ```ts\n * private rovingTabindex = new RovingTabindexController(this, {\n * getItems: () => Array.from(this.querySelectorAll('my-item')),\n * onSelect: (item) => this.selectItem(item),\n * });\n * ```\n */\nexport class RovingTabindexController {\n constructor(host, config) {\n this.host = host;\n this.config = {\n wrap: true,\n direction: 'both',\n selectOnFocus: false,\n skipItem: (item) => item.hasAttribute('disabled') || item.disabled === true,\n ...config,\n };\n host.addController(this);\n }\n // eslint-disable-next-line class-methods-use-this\n hostConnected() {\n // Controller is ready when host connects\n }\n // eslint-disable-next-line class-methods-use-this\n hostDisconnected() {\n // Cleanup if needed\n }\n /**\n * Update tabindex values for all items\n * @param activeIndex - Index of the item that should be tabbable (default: 0 or first non-disabled)\n */\n updateTabindices(activeIndex) {\n const items = this.config.getItems();\n if (!items || items.length === 0) {\n return;\n }\n // Find the active index\n let targetIndex = activeIndex ?? 0;\n // If no active index specified, use first non-disabled item\n if (activeIndex === undefined) {\n targetIndex = items.findIndex((item) => !this.config.skipItem(item));\n if (targetIndex === -1) {\n targetIndex = 0; // Fallback to first item if all disabled\n }\n }\n // Set tabindex for all items\n items.forEach((item, index) => {\n const itemElement = item;\n if (this.config.skipItem(itemElement)) {\n // eslint-disable-next-line no-param-reassign\n itemElement.tabIndex = -1;\n }\n else {\n // eslint-disable-next-line no-param-reassign\n itemElement.tabIndex = index === targetIndex ? 0 : -1;\n }\n });\n }\n /**\n * Handle keyboard navigation\n * @param currentItem - The currently focused item\n * @param event - The keyboard event\n * @returns true if the event was handled, false otherwise\n */\n handleKeydown(currentItem, event) {\n const { direction } = this.config;\n const { key } = event;\n // Determine if this key should be handled based on direction\n const isVertical = key === 'ArrowUp' || key === 'ArrowDown';\n const isHorizontal = key === 'ArrowLeft' || key === 'ArrowRight';\n const isHome = key === 'Home';\n const isEnd = key === 'End';\n const shouldHandle = isHome ||\n isEnd ||\n (direction === 'both' && (isVertical || isHorizontal)) ||\n (direction === 'vertical' && isVertical) ||\n (direction === 'horizontal' && isHorizontal);\n if (!shouldHandle) {\n return false;\n }\n // Prevent default behavior (page scrolling)\n event.preventDefault();\n const items = this.config.getItems();\n const currentIndex = items.indexOf(currentItem);\n if (currentIndex === -1) {\n return false;\n }\n let nextIndex = currentIndex;\n // Handle Home/End keys\n if (isHome) {\n nextIndex = 0;\n }\n else if (isEnd) {\n nextIndex = items.length - 1;\n }\n else {\n // Handle arrow keys\n const isNext = key === 'ArrowDown' || key === 'ArrowRight';\n const isPrev = key === 'ArrowUp' || key === 'ArrowLeft';\n if (isNext) {\n nextIndex = this.getNextIndex(items, currentIndex, 1);\n }\n else if (isPrev) {\n nextIndex = this.getNextIndex(items, currentIndex, -1);\n }\n }\n // Skip disabled items\n nextIndex = this.findNextValidIndex(items, nextIndex, nextIndex > currentIndex ? 1 : -1);\n if (nextIndex !== -1 && nextIndex !== currentIndex) {\n const nextItem = items[nextIndex];\n // Update tabindices\n this.updateTabindices(nextIndex);\n // Focus the next item\n nextItem.focus();\n // Optionally select/activate the item\n if (this.config.selectOnFocus && this.config.onSelect) {\n this.config.onSelect(nextItem, event);\n }\n return true;\n }\n return false;\n }\n /**\n * Get the next index based on direction\n */\n getNextIndex(items, currentIndex, direction) {\n const { wrap } = this.config;\n let nextIndex = currentIndex + direction;\n if (wrap) {\n // Wrap around\n if (nextIndex < 0) {\n nextIndex = items.length - 1;\n }\n else if (nextIndex >= items.length) {\n nextIndex = 0;\n }\n }\n else {\n // Clamp to bounds\n nextIndex = Math.max(0, Math.min(items.length - 1, nextIndex));\n }\n return nextIndex;\n }\n /**\n * Find the next valid (non-disabled) index\n */\n findNextValidIndex(items, startIndex, direction) {\n const maxAttempts = items.length;\n let attempts = 0;\n let index = startIndex;\n while (attempts < maxAttempts) {\n if (!this.config.skipItem(items[index])) {\n return index;\n }\n index = this.getNextIndex(items, index, direction);\n attempts += 1;\n }\n // All items are disabled\n return -1;\n }\n /**\n * Set focus to a specific item\n */\n focusItem(item) {\n const items = this.config.getItems();\n const index = items.indexOf(item);\n if (index !== -1) {\n this.updateTabindices(index);\n item.focus();\n }\n }\n /**\n * Set focus to the first non-disabled item\n */\n focusFirst() {\n const items = this.config.getItems();\n const firstValidIndex = this.findNextValidIndex(items, 0, 1);\n if (firstValidIndex !== -1) {\n this.focusItem(items[firstValidIndex]);\n }\n }\n /**\n * Set focus to the last non-disabled item\n */\n focusLast() {\n const items = this.config.getItems();\n const lastValidIndex = this.findNextValidIndex(items, items.length - 1, -1);\n if (lastValidIndex !== -1) {\n this.focusItem(items[lastValidIndex]);\n }\n }\n}\n//# sourceMappingURL=roving-tabindex-controller.js.map","import { html, PropertyValues } from 'lit';\nimport { customElement, property, queryAssignedElements } from 'lit/decorators.js';\nimport { FormControl, FormControlController, RovingTabindexController } from '@italia/globals';\nimport type { ItRadio } from '@italia/radio';\nimport styles from './radio-group.scss';\n\n/**\n * Radio group component - manages a collection of radio buttons\n *\n * @element it-radio-group\n * @slot - Contains the `<it-radio>` elements\n *\n */\n@customElement('it-radio-group')\nexport class ItRadioGroup extends FormControl {\n static styles = styles;\n\n static formAssociated = true;\n\n /**\n * The name of the radio group, used for form submission\n */\n @property({ type: String })\n name = '';\n\n /**\n * The currently selected value\n */\n @property({ type: String, reflect: true })\n value = '';\n\n /**\n * Whether the radio group is disabled\n */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /**\n * Whether a selection is required\n */\n @property({ type: Boolean, reflect: true })\n required = false;\n\n /**\n * Optional prop for visual styling of grouped radios (borders between radios)\n */\n @property({ type: Boolean, reflect: true })\n grouped = false;\n\n /**\n * Whether the radios are displayed inline (horizontally) or stacked (vertically)\n */\n @property({ type: Boolean, reflect: true })\n inline = false;\n\n /**\n * Get all slotted radio buttons\n */\n @queryAssignedElements()\n protected _radios!: ItRadio[];\n\n @queryAssignedElements({ slot: 'label' })\n private _label!: HTMLElement[];\n\n /**\n * Roving tabindex controller for keyboard navigation\n */\n protected rovingTabindex = new RovingTabindexController<ItRadio>(this, {\n getItems: () => this._radios,\n onSelect: (radio, event) => this.selectRadio(radio, event),\n direction: 'both',\n selectOnFocus: true,\n });\n\n /**\n * Form control integration\n */\n private _formController = new FormControlController(this as any, {\n value: () => this.value,\n // disabled: () => this.disabled,\n setValue: (control: FormControl, value: unknown) => {\n const radioGroup = control as ItRadioGroup;\n radioGroup.value = value as string;\n },\n });\n\n /**\n * Override: Custom validity check for radio group\n */\n override get validity(): ValidityState {\n // Fallback: create a custom ValidityState-like object\n const valid = !this.required || !!this.value;\n return {\n valid,\n valueMissing: this.required && !this.value,\n typeMismatch: false,\n patternMismatch: false,\n tooLong: false,\n tooShort: false,\n rangeUnderflow: false,\n rangeOverflow: false,\n stepMismatch: false,\n badInput: false,\n customError: false,\n } as ValidityState;\n }\n\n /**\n * Override: Check validity for radio group\n */\n override checkValidity(): boolean {\n if (this.required && !this.value) {\n return false;\n }\n return true;\n }\n\n /**\n * Override: Report validity for radio group\n */\n override reportValidity(): boolean {\n const isValid = this.checkValidity();\n this.handleValidationMessages();\n this._updateInvalidState();\n return isValid;\n }\n\n /** Sets a custom validation message. Pass an empty string to restore validity. */\n public override setCustomValidity(message: string) {\n // Only trigger validation state if message is non-empty (actual error)\n // Empty message during init or after correction should not trigger invalid state initially\n\n this.validationMessage = message;\n this.formControlController.updateValidity();\n // Update aria-invalid on group and children immediately\n this._updateInvalidState();\n }\n\n protected override handleValidationMessages() {\n const _v = this.validity;\n if (!this.customValidation) {\n if (_v.valueMissing) {\n this.setCustomValidity(this.$t('validityRequired'));\n } else this.setCustomValidity('');\n }\n }\n\n private _updateInvalidState() {\n // Only show aria-invalid if validation has been triggered (ARIA best practice)\n if (!this.formControlController.submittedOnce) {\n return;\n }\n\n const invalid = this.checkValidity() === false || !!this.validationMessage;\n if (invalid) this.setAttribute('aria-invalid', 'true');\n else this.removeAttribute('aria-invalid');\n this._radios?.forEach((r) => {\n if (invalid) r.setAttribute('aria-invalid', 'true');\n else r.removeAttribute('aria-invalid');\n });\n\n // Update validation message in light DOM\n this._updateValidationMessage();\n }\n\n /**\n * Update validation message in light DOM (for aria-describedby cross-boundary support)\n */\n private _updateValidationMessage() {\n const validityMessage = this.validationMessage;\n const messageId = `invalid-feedback-${this._id}`;\n\n // Find or create validation message element in light DOM\n let messageEl = this.querySelector(`[slot=\"validation-message\"]`);\n\n if (validityMessage && validityMessage.length > 0) {\n // Create message element if it doesn't exist\n if (!messageEl) {\n messageEl = document.createElement('div');\n messageEl.setAttribute('slot', 'validation-message');\n this.appendChild(messageEl);\n }\n\n // Update message content and attributes\n messageEl.id = messageId;\n messageEl.className = 'form-feedback just-validate-error-label';\n messageEl.setAttribute('role', 'alert');\n messageEl.removeAttribute('hidden');\n\n const labelText = this._label?.[0]?.textContent || '';\n messageEl.innerHTML = `<span class=\"visually-hidden\">${labelText}: </span>${validityMessage}`;\n\n // Update aria-describedby on host\n const existingDescribedBy = this._ariaAttributes['aria-describedby'] || '';\n const ariaDescribedBy = existingDescribedBy ? `${existingDescribedBy} ${messageId}` : messageId;\n this.setAttribute('aria-describedby', ariaDescribedBy);\n } else {\n // Remove message element if validation passed\n if (messageEl) {\n messageEl.remove();\n }\n\n // Update aria-describedby (remove message id)\n const existingDescribedBy = this._ariaAttributes['aria-describedby'] || '';\n if (existingDescribedBy) {\n this.setAttribute('aria-describedby', existingDescribedBy);\n } else {\n this.removeAttribute('aria-describedby');\n }\n }\n }\n\n connectedCallback() {\n super.connectedCallback?.();\n this._handleReady();\n this.setAttribute('role', 'radiogroup');\n }\n\n firstUpdated() {\n const checkedRadio = this.querySelector<ItRadio>('it-radio[checked]');\n if (checkedRadio) {\n this.value = checkedRadio.value;\n }\n this.updateRadios();\n }\n\n private async updateRadios() {\n if (!this.hasUpdated) {\n // Initial validation has to happen after the initial render to allow\n // the buttons to be queries from the rendered <slot> element\n await this.updateComplete;\n }\n const radios = this.querySelectorAll<ItRadio>('it-radio');\n // eslint-disable-next-line no-return-assign, no-param-reassign\n radios.forEach((r) => {\n // eslint-disable-next-line no-param-reassign\n r.checked = r.value === this.value;\n });\n }\n\n disconnectedCallback() {\n super.disconnectedCallback?.();\n }\n\n /**\n * Sync group value from checked radio (initialization)\n */\n private _syncValueFromRadios() {\n if (!this._radios) {\n return;\n }\n\n // Find the first checked radio\n const checkedRadio = this._radios.find((r) => r.checked);\n if (checkedRadio) {\n // Sync the group value from the checked radio\n this.value = checkedRadio.value;\n }\n }\n\n /**\n * PUBLIC API: Called by radio buttons to select themselves\n */\n selectRadio(radio: ItRadio, event: KeyboardEvent | PointerEvent | MouseEvent): void {\n if (radio.disabled || this.disabled) {\n return;\n }\n\n this.value = radio.value;\n\n // Uncheck other radios using their public API\n this._radios.forEach((r) => {\n if (r !== radio) {\n // eslint-disable-next-line no-param-reassign\n r.checked = false;\n } else {\n // eslint-disable-next-line no-param-reassign\n r.checked = true;\n }\n });\n\n // If validation was already triggered, update state after selection\n if (this.formControlController.submittedOnce) {\n // For native validation, clear error if now valid\n if (!this.customValidation) {\n this.handleValidationMessages();\n this._updateInvalidState();\n }\n // For custom validation (JustValidate), the external validator will call setCustomValidity\n // but we still update the state based on current validationMessage\n else {\n this._updateInvalidState();\n }\n }\n\n if (event.type === 'click' || event.type === 'pointerdown') {\n this._handleClick(event);\n } else {\n this._handleChange(event);\n }\n }\n\n /**\n * PUBLIC API: Handle keyboard navigation from radio buttons\n */\n handleRadioKeyDown(radio: ItRadio, event: KeyboardEvent): void {\n // Delegate to roving tabindex controller\n const handled = this.rovingTabindex.handleKeydown(radio, event);\n if (handled) this._handleFocus(event);\n else this._handleBlur(event);\n }\n\n /**\n * Synchronize radio button states with group state\n */\n protected _updateRadiosState() {\n if (!this._radios || this._radios.length === 0) {\n return;\n }\n\n this._radios.forEach((radio) => {\n // Set checked state based on value\n // eslint-disable-next-line no-param-reassign\n radio.checked = radio.value === this.value;\n\n // Sync disabled state from group to radios\n // Note: We don't override individual radio's disabled state\n // If the group is disabled, all radios should be disabled\n // But individual radios can be disabled independently\n if (this.disabled) {\n // eslint-disable-next-line no-param-reassign\n radio.disabled = true;\n }\n });\n\n // Update tabindex using roving tabindex controller\n // Priority: checked and enabled > first enabled > 0\n let tabbableIndex = 0;\n\n // First, try to find a checked radio that is not disabled\n const checkedEnabledIndex = this._radios.findIndex((r) => r.checked && !r.disabled);\n if (checkedEnabledIndex >= 0) {\n tabbableIndex = checkedEnabledIndex;\n } else {\n // If no checked enabled radio, find the first enabled radio\n const firstEnabledIndex = this._radios.findIndex((r) => !r.disabled);\n if (firstEnabledIndex >= 0) {\n tabbableIndex = firstEnabledIndex;\n }\n // If all radios are disabled, tabbableIndex stays 0 (but controller will set all to -1)\n }\n\n this.rovingTabindex.updateTabindices(tabbableIndex);\n }\n\n /**\n * Sync group state (name, grouped, inline, required) to child radios\n * This replaces the need for requestUpdate() calls\n */\n private _syncGroupStateToRadios() {\n if (!this._radios || this._radios.length === 0) {\n return;\n }\n\n const groupState = {\n name: this.name,\n grouped: this.grouped,\n inline: this.inline,\n required: this.required,\n };\n\n this._radios.forEach((radio) => {\n radio.syncFromGroup(groupState);\n });\n }\n\n updated(changed: PropertyValues) {\n super.updated(changed);\n\n // Update radios when value or name changes\n if (changed.has('value')) {\n this._updateRadiosState();\n this.dispatchEvent(new Event('it-change', { bubbles: true }));\n // Re-validate after value change (for native validation) only if validation was already triggered\n if (!this.customValidation && this.formControlController.submittedOnce) {\n this.handleValidationMessages();\n this._updateInvalidState();\n }\n }\n\n // If validation message changed, update aria-invalid on group and children\n if (changed.has('validationMessage')) {\n this._updateInvalidState();\n }\n\n // If relevant group properties changed, sync to child radios\n const relevant = ['grouped', 'inline', 'name', 'required', 'disabled'];\n const hasChanged = Array.from(changed.keys()).some((k) => relevant.includes(String(k)));\n if (hasChanged && this._radios?.length) {\n this._syncGroupStateToRadios();\n }\n }\n\n /**\n * Handle slot changes (when radios are added/removed)\n */\n protected _handleSlotChange = () => {\n this._syncValueFromRadios();\n this._updateRadiosState();\n // Sync group state to newly added radios\n this._syncGroupStateToRadios();\n };\n\n protected _handleLabelSlotChange = () => {\n const labelId = this.generateId('it-radio-group-label');\n this._label[0]?.setAttribute('id', labelId);\n this.setAttribute('aria-labelledby', labelId);\n };\n\n /**\n * Render the component\n */\n render() {\n const validityMessage = this.validationMessage;\n const invalid = validityMessage?.length > 0 || (!this.customValidation && this?.checkValidity() === false);\n\n const groupWrapperClasses = this.composeClass(\n 'it-radio-group',\n 'it-form__control',\n this.inline && !this.grouped ? 'it-radio-group-inline' : '',\n this.grouped && !this.inline ? 'it-radio-group-stacked' : '',\n invalid ? 'is-invalid' : '',\n );\n\n return html`<slot name=\"label\" @slotchange=${this._handleLabelSlotChange}></slot>\n <div class=${groupWrapperClasses}>\n <slot @slotchange=${this._handleSlotChange}></slot>\n </div>\n <slot name=\"validation-message\"></slot>`;\n }\n}\n\n// Declare custom element\ndeclare global {\n interface HTMLElementTagNameMap {\n 'it-radio-group': ItRadioGroup;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { _ as __decorate, a as __metadata, B as BaseComponent } from '../index-DETY_70L.js';
1
+ import { _ as __decorate, a as __metadata, B as BaseComponent } from '../index-TisXdfre.js';
2
2
  import { css, html } from 'lit';
3
3
  import { property, state, queryAssignedElements, customElement } from 'lit/decorators.js';
4
4
  import { when } from 'lit/directives/when.js';
@@ -133,6 +133,7 @@ a {
133
133
  }
134
134
  a:hover {
135
135
  color: var(--bsi-color-link-hover);
136
+ cursor: pointer;
136
137
  }
137
138
 
138
139
  pre,
@@ -697,6 +698,11 @@ input::-webkit-datetime-edit {
697
698
  .form-check input[type=radio]:disabled:checked + label::before {
698
699
  border-color: var(--bsi-color-border-disabled);
699
700
  }
701
+ .form-check .form-text {
702
+ display: block;
703
+ margin-bottom: 0.5rem;
704
+ padding-right: 3.25rem;
705
+ }
700
706
  .form-check.form-check-group {
701
707
  margin-bottom: 1rem;
702
708
  padding: 0 0 1rem 0;
@@ -720,11 +726,6 @@ input::-webkit-datetime-edit {
720
726
  .form-check.form-check-group input[type=radio]:checked + label::before {
721
727
  right: 0;
722
728
  }
723
- .form-check.form-check-group .form-text {
724
- display: block;
725
- margin-bottom: 0.5rem;
726
- padding-right: 3.25rem;
727
- }
728
729
  .form-check.form-check-group input.semi-checked:not(:checked) + label::before {
729
730
  right: 4px;
730
731
  left: auto;
@@ -1 +1 @@
1
- {"version":3,"file":"it-radio.js","sources":["../../../src/it-radio.ts"],"sourcesContent":["import { BaseComponent } from '@italia/globals';\nimport { html } from 'lit';\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js';\nimport { when } from 'lit/directives/when.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { type ItRadioGroup } from '@italia/radio';\n\nimport styles from './radio.scss';\n\n@customElement('it-radio')\nexport class ItRadio extends BaseComponent {\n static styles = styles;\n\n /** The radio's value attribute */\n @property({ type: String, reflect: true })\n value = '';\n\n /** Whether the radio is disabled */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Draws the radio in a checked state. */\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n /** The input's help text. */\n @property({ type: String, attribute: 'support-text' })\n supportText = '';\n\n /**\n * Internal reactive state synced from group\n * These replace the old getters that read from this.group\n */\n @state()\n private _name = '';\n\n @state()\n private _grouped = false;\n\n @state()\n private _required = false;\n\n @state()\n private _inline = false;\n\n @queryAssignedElements({ slot: 'label' })\n labelElements!: HTMLElement[];\n\n get label(): string {\n if (this.labelElements.length > 0) {\n return this.labelElements[0].innerText.trim();\n }\n return '';\n }\n\n get group(): ItRadioGroup | null {\n return this.closest('it-radio-group');\n }\n\n // Public getters now read from internal state (reactive)\n get name(): string {\n return this._name || this.group?.name || '';\n }\n\n get grouped(): boolean {\n return this._grouped;\n }\n\n get required(): boolean {\n return this._required;\n }\n\n get inline(): boolean {\n return this._inline;\n }\n\n get invalid(): boolean {\n // Read aria-invalid explicitly from the group: only the string \"true\" should be considered invalid\n const aria = this.group?.getAttribute ? this.group.getAttribute('aria-invalid') : null;\n return aria === 'true';\n }\n\n /**\n * PUBLIC API: Called by group to sync state\n * This replaces the need for requestUpdate() calls\n */\n syncFromGroup(groupState: { name?: string; grouped?: boolean; required?: boolean; inline?: boolean }): void {\n if (groupState.name !== undefined) this._name = groupState.name;\n if (groupState.grouped !== undefined) this._grouped = groupState.grouped;\n if (groupState.required !== undefined) this._required = groupState.required;\n if (groupState.inline !== undefined) this._inline = groupState.inline;\n }\n /**\n * Activate the radio via the group's public API\n */\n\n private activate(event: KeyboardEvent | PointerEvent | MouseEvent): void {\n if (this.checked || this.disabled) {\n return;\n }\n\n // Use the group's public API if available\n if (this.group) {\n this.group.selectRadio(this, event);\n } else {\n // Fallback if no group (shouldn't happen in normal usage)\n this.checked = true;\n }\n }\n\n /**\n * Handle keyup for Space key\n */\n private handleKeyup = (event: KeyboardEvent): void => {\n if (event.code === 'Space') {\n event.preventDefault();\n this.activate(event);\n }\n };\n\n /**\n * Handle keydown - delegate arrow keys to the group\n */\n private handleKeydown = (event: KeyboardEvent): void => {\n // Prevent Space from scrolling the page\n if (event.code === 'Space') {\n event.preventDefault();\n return;\n }\n\n // Let Tab and Shift+Tab work normally for navigation\n if (event.key === 'Tab') {\n this.group?.handleRadioKeyDown(this, event);\n return;\n }\n\n // Only prevent default for arrow keys (to prevent page scrolling)\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n // Delegate keyboard navigation to the group's public API\n this.group?.handleRadioKeyDown(this, event);\n };\n\n /**\n * Handle click on the host\n */\n private handleClick = (event: PointerEvent | MouseEvent): void => {\n this.activate(event);\n };\n\n override connectedCallback() {\n super.connectedCallback?.();\n\n // Set role on host for screen reader context\n this.setAttribute('role', 'radio');\n\n // Set initial tabindex if not already set (roving tabindex will be managed by group)\n if (!this.hasAttribute('tabindex')) {\n this.tabIndex = 0;\n }\n\n // Add event listeners on host\n this.addEventListener('click', this.handleClick);\n this.addEventListener('keydown', this.handleKeydown, { capture: true });\n this.addEventListener('keyup', this.handleKeyup, { capture: true });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback?.();\n this.removeEventListener('click', this.handleClick);\n this.removeEventListener('keydown', this.handleKeydown, { capture: true });\n this.removeEventListener('keyup', this.handleKeyup, { capture: true });\n }\n\n override updated(changedProperties: Map<string | number | symbol, unknown>) {\n super.updated?.(changedProperties);\n\n // Update ARIA attributes on host\n if (changedProperties.has('checked')) {\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n }\n\n if (changedProperties.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n\n // Sync name attribute from internal state\n if (changedProperties.has('_name')) {\n if (this._name) {\n this.setAttribute('name', this._name);\n } else {\n this.removeAttribute('name');\n }\n }\n\n // Sync aria-required from internal state\n if (changedProperties.has('_required')) {\n if (this._required) {\n this.setAttribute('aria-required', 'true');\n } else {\n this.removeAttribute('aria-required');\n }\n }\n\n // logger\n if (!this.label) {\n this.logger.warn(`Label is required to ensure accessibility. Please, define a label for <it-radio/> .`);\n }\n }\n\n /**\n * Render internal structure (like Spectrum)\n * Just visual elements, no role/aria/events here (they're on the host)\n * Protected to allow subclasses (like it-rating-item) to override\n */\n // eslint-disable-next-line class-methods-use-this\n protected _renderInput() {\n // Render visual elements like Spectrum does\n // #input = container, #button = visual circle\n const inputRender = html`\n <div id=\"input\" part=\"input\"></div>\n <span id=\"button\" part=\"button\" class=\"form-check-input\"></span>\n `;\n\n return inputRender;\n }\n\n // Render the UI as a function of component state\n override render() {\n const supportTextId = `${this._id}-support-text`;\n\n const supportTextRender = html` ${when(\n this.supportText,\n () =>\n html`<slot name=\"helpText\"><small class=\"form-text\" id=\"${supportTextId}\">${this.supportText}</small></slot>`,\n )}`;\n\n const wrapperClasses = this.composeClass(\n 'form-check',\n this.inline && !this.grouped ? 'form-check-inline' : '',\n this.grouped && !this.inline ? 'form-check-group' : '',\n );\n const ariaDescribedBy = this.composeClass(\n this.supportText?.length > 0 ? supportTextId : '',\n this._ariaAttributes['aria-describedby']?.length > 0 ? this._ariaAttributes['aria-describedby'] : '',\n );\n const controlClasses = this.composeClass('radio-control', this.grouped ? 'radio-control-grouped' : '');\n const labelClasses = this.composeClass('radio-control-label', this.disabled ? 'disabled' : '');\n\n return html`\n <div class=\"${wrapperClasses}\" part=\"input-wrapper\" aria-describedby=\"${ifDefined(ariaDescribedBy || undefined)}\">\n <div id=\"radio-control\" part=\"radio-control\" class=\"${controlClasses}\">\n ${this._renderInput()}\n <span part=\"label\" class=\"${labelClasses}\"><slot name=\"label\">${this.label}</slot></span>\n </div>\n ${supportTextRender}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'it-radio': ItRadio;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"it-radio.js","sources":["../../../src/it-radio.ts"],"sourcesContent":["import { BaseComponent } from '@italia/globals';\nimport { html } from 'lit';\nimport { customElement, property, queryAssignedElements, state } from 'lit/decorators.js';\nimport { when } from 'lit/directives/when.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { type ItRadioGroup } from '@italia/radio';\n\nimport styles from './radio.scss';\n\n@customElement('it-radio')\nexport class ItRadio extends BaseComponent {\n static styles = styles;\n\n /** The radio's value attribute */\n @property({ type: String, reflect: true })\n value = '';\n\n /** Whether the radio is disabled */\n @property({ type: Boolean, reflect: true })\n disabled = false;\n\n /** Draws the radio in a checked state. */\n @property({ type: Boolean, reflect: true })\n checked = false;\n\n /** The input's help text. */\n @property({ type: String, attribute: 'support-text' })\n supportText = '';\n\n /**\n * Internal reactive state synced from group\n * These replace the old getters that read from this.group\n */\n @state()\n private _name = '';\n\n @state()\n private _grouped = false;\n\n @state()\n private _required = false;\n\n @state()\n private _inline = false;\n\n @queryAssignedElements({ slot: 'label' })\n labelElements!: HTMLElement[];\n\n get label(): string {\n if (this.labelElements.length > 0) {\n return this.labelElements[0].innerText.trim();\n }\n return '';\n }\n\n get group(): ItRadioGroup | null {\n return this.closest('it-radio-group');\n }\n\n // Public getters now read from internal state (reactive)\n get name(): string {\n return this._name || this.group?.name || '';\n }\n\n get grouped(): boolean {\n return this._grouped;\n }\n\n get required(): boolean {\n return this._required;\n }\n\n get inline(): boolean {\n return this._inline;\n }\n\n get invalid(): boolean {\n // Read aria-invalid explicitly from the group: only the string \"true\" should be considered invalid\n const aria = this.group?.getAttribute ? this.group.getAttribute('aria-invalid') : null;\n return aria === 'true';\n }\n\n /**\n * PUBLIC API: Called by group to sync state\n * This replaces the need for requestUpdate() calls\n */\n syncFromGroup(groupState: { name?: string; grouped?: boolean; required?: boolean; inline?: boolean }): void {\n if (groupState.name !== undefined) this._name = groupState.name;\n if (groupState.grouped !== undefined) this._grouped = groupState.grouped;\n if (groupState.required !== undefined) this._required = groupState.required;\n if (groupState.inline !== undefined) this._inline = groupState.inline;\n }\n /**\n * Activate the radio via the group's public API\n */\n\n private activate(event: KeyboardEvent | PointerEvent | MouseEvent): void {\n if (this.checked || this.disabled) {\n return;\n }\n\n // Use the group's public API if available\n if (this.group) {\n this.group.selectRadio(this, event);\n } else {\n // Fallback if no group (shouldn't happen in normal usage)\n this.checked = true;\n }\n }\n\n /**\n * Handle keyup for Space key\n */\n private handleKeyup = (event: KeyboardEvent): void => {\n if (event.code === 'Space') {\n event.preventDefault();\n this.activate(event);\n }\n };\n\n /**\n * Handle keydown - delegate arrow keys to the group\n */\n private handleKeydown = (event: KeyboardEvent): void => {\n // Prevent Space from scrolling the page\n if (event.code === 'Space') {\n event.preventDefault();\n return;\n }\n\n // Let Tab and Shift+Tab work normally for navigation\n if (event.key === 'Tab') {\n this.group?.handleRadioKeyDown(this, event);\n return;\n }\n\n // Only prevent default for arrow keys (to prevent page scrolling)\n if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(event.key)) {\n event.preventDefault();\n }\n\n // Delegate keyboard navigation to the group's public API\n this.group?.handleRadioKeyDown(this, event);\n };\n\n /**\n * Handle click on the host\n */\n private handleClick = (event: PointerEvent | MouseEvent): void => {\n this.activate(event);\n };\n\n override connectedCallback() {\n super.connectedCallback?.();\n\n // Set role on host for screen reader context\n this.setAttribute('role', 'radio');\n\n // Set initial tabindex if not already set (roving tabindex will be managed by group)\n if (!this.hasAttribute('tabindex')) {\n this.tabIndex = 0;\n }\n\n // Add event listeners on host\n this.addEventListener('click', this.handleClick);\n this.addEventListener('keydown', this.handleKeydown, { capture: true });\n this.addEventListener('keyup', this.handleKeyup, { capture: true });\n }\n\n override disconnectedCallback() {\n super.disconnectedCallback?.();\n this.removeEventListener('click', this.handleClick);\n this.removeEventListener('keydown', this.handleKeydown, { capture: true });\n this.removeEventListener('keyup', this.handleKeyup, { capture: true });\n }\n\n override updated(changedProperties: Map<string | number | symbol, unknown>) {\n super.updated?.(changedProperties);\n\n // Update ARIA attributes on host\n if (changedProperties.has('checked')) {\n this.setAttribute('aria-checked', this.checked ? 'true' : 'false');\n }\n\n if (changedProperties.has('disabled')) {\n if (this.disabled) {\n this.setAttribute('aria-disabled', 'true');\n } else {\n this.removeAttribute('aria-disabled');\n }\n }\n\n // Sync name attribute from internal state\n if (changedProperties.has('_name')) {\n if (this._name) {\n this.setAttribute('name', this._name);\n } else {\n this.removeAttribute('name');\n }\n }\n\n // Sync aria-required from internal state\n if (changedProperties.has('_required')) {\n if (this._required) {\n this.setAttribute('aria-required', 'true');\n } else {\n this.removeAttribute('aria-required');\n }\n }\n\n // logger\n if (!this.label) {\n this.logger.warn(`Label is required to ensure accessibility. Please, define a label for <it-radio/> .`);\n }\n }\n\n /**\n * Render internal structure (like Spectrum)\n * Just visual elements, no role/aria/events here (they're on the host)\n * Protected to allow subclasses (like it-rating-item) to override\n */\n // eslint-disable-next-line class-methods-use-this\n protected _renderInput() {\n // Render visual elements like Spectrum does\n // #input = container, #button = visual circle\n const inputRender = html`\n <div id=\"input\" part=\"input\"></div>\n <span id=\"button\" part=\"button\" class=\"form-check-input\"></span>\n `;\n\n return inputRender;\n }\n\n // Render the UI as a function of component state\n override render() {\n const supportTextId = `${this._id}-support-text`;\n\n const supportTextRender = html` ${when(\n this.supportText,\n () =>\n html`<slot name=\"helpText\"><small class=\"form-text\" id=\"${supportTextId}\">${this.supportText}</small></slot>`,\n )}`;\n\n const wrapperClasses = this.composeClass(\n 'form-check',\n this.inline && !this.grouped ? 'form-check-inline' : '',\n this.grouped && !this.inline ? 'form-check-group' : '',\n );\n const ariaDescribedBy = this.composeClass(\n this.supportText?.length > 0 ? supportTextId : '',\n this._ariaAttributes['aria-describedby']?.length > 0 ? this._ariaAttributes['aria-describedby'] : '',\n );\n const controlClasses = this.composeClass('radio-control', this.grouped ? 'radio-control-grouped' : '');\n const labelClasses = this.composeClass('radio-control-label', this.disabled ? 'disabled' : '');\n\n return html`\n <div class=\"${wrapperClasses}\" part=\"input-wrapper\" aria-describedby=\"${ifDefined(ariaDescribedBy || undefined)}\">\n <div id=\"radio-control\" part=\"radio-control\" class=\"${controlClasses}\">\n ${this._renderInput()}\n <span part=\"label\" class=\"${labelClasses}\"><slot name=\"label\">${this.label}</slot></span>\n </div>\n ${supportTextRender}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'it-radio': ItRadio;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@italia/radio",
3
3
  "description": "Web component it-radio del Design system .italia",
4
- "version": "1.0.0-alpha.5",
4
+ "version": "1.0.0-alpha.6",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -34,9 +34,9 @@
34
34
  "custom-elements.json"
35
35
  ],
36
36
  "dependencies": {
37
- "bootstrap-italia": "3.0.0-alpha.0",
37
+ "bootstrap-italia": "3.0.0-alpha.4",
38
38
  "lit": "^3.3.0",
39
- "@italia/globals": "^1.0.0-alpha.5"
39
+ "@italia/globals": "^1.0.0-alpha.6"
40
40
  },
41
41
  "devDependencies": {
42
42
  "@custom-elements-manifest/analyzer": "^0.10.3",
@@ -50,8 +50,8 @@
50
50
  "rollup-plugin-scss-lit": "^2.1.0",
51
51
  "tslib": "^2.6.3",
52
52
  "typescript": "^5.5.3",
53
- "@italia/typescript-config": "^0.0.0",
54
- "@italia/test-config": "^0.0.0"
53
+ "@italia/test-config": "^0.0.0",
54
+ "@italia/typescript-config": "^0.0.0"
55
55
  },
56
56
  "customElements": "custom-elements.json",
57
57
  "scripts": {