Sari la conținut

Proiect open-source independent. Domeniul oficial este sistem.digital.

Sistem DigitalCatalog versionatsistem.digital
Meniu

Catalog · Formulare

Numărător de caractere

Numără caracterele rămase într-un câmp cu limită, actualizat live pentru cititoare de ecran.

AlphaComponentăFormulare

Prezentare

Numără caracterele rămase într-un câmp cu limită, actualizat live, vizibil deopotrivă pentru utilizatori văzători și pentru cititoare de ecran.

Când se folosește

  • pentru orice `textarea` sau `input` cu o limită reală de caractere impusă la trimitere.

Când nu se folosește

  • ca decor pe un câmp fără limită reală — dacă nu există o validare reală de lungime, numărătoarea induce o constrângere falsă.

Anatomie

Un `<div data-sd-character-count="N">` care încadrează câmpul (`sd-character-count__field`, cu atributul `data-sd-character-count-field`) și un status text (`<p class="sd-character-count__status" data-sd-character-count-status aria-live="polite">`).

Variante

  • implicit
  • `sd-character-count--error` — aplicată automat de JavaScript când limita e depășită

Stări

  • implicit (sub limită)
  • peste limită — text de status îngroșat, culoare de eroare

Comportament

Fără JavaScript: câmpul rămâne complet funcțional, iar limita e comunicată doar static, prin textul scris în `hint`/status inițial din markup. Cu JavaScript (`enhanceCharacterCount`): la fiecare eveniment `input`, textul din regiunea `aria-live="polite"` se actualizează cu numărul de caractere rămase (sau depășirea, ca număr pozitiv de caractere „peste limita permisă”), iar clasa `--error` se comută în timp real.

Reguli de conținut

  • textul de status e mereu în cuvinte complete („Mai aveți 200 caractere”), nu doar o cifră izolată, pentru claritate la citire audio.

Responsabilitățile implementatorului

  • inițializează `data-sd-character-count` cu limita reală, identică celei aplicate la validarea server-side — o neconcordanță ar induce persoana în eroare.

Cercetare

Istoric

Istoricul modificărilor relevante
VersiuneDatăModificare
0.1.0-alpha.4Adăugat în @sistem-digital/components, împreună cu alte patru componente noi și pachetul @sistem-digital/web-components (PR #89).

Structura completă a acestei secțiuni urmează șablonul canonic al paginii unei componente. Accesibilitatea (semantică, tastatură, focus) rămâne documentată separat, conform șablonului de accesibilitate.

Preview și markup canonic

Previzualizarea de mai jos redă exact șirul HTML afișat în exemplul de cod. Nu există o implementare paralelă pentru documentație.

Previzualizare din markup-ul canonic

Mai aveți 200 caractere

Instalare și importuri

pnpm add @sistem-digital/tokens @sistem-digital/components
Import CSS
@import '@sistem-digital/components/forms.css';
Import JavaScript opțional
import { enhanceCharacterCount } from '@sistem-digital/components';
Markup canonic
<div class="sd-form-group" data-sd-character-count="200"><label class="sd-label" for="catalog-comment">Motivul cererii</label><textarea class="sd-textarea sd-character-count__field" id="catalog-comment" data-sd-character-count-field rows="4"></textarea><p class="sd-character-count__status" data-sd-character-count-status aria-live="polite">Mai aveți 200 caractere</p></div>

Contract și surse

Schimbarea claselor publice, a markup-ului canonic sau a comportamentului helperelor necesită versionare și instrucțiuni de migrare.

Matricea design–cod

Disponibilitatea reală a acestei componente, calculată din pachetele publicate, conform schemei matricei design–cod. Rândurile Figma, testare cu tastatura și testare cu cititor de ecran rămân „Indisponibil” până la dovezi publicate separat (kit Figma, respectiv auditul manual de accesibilitate).

Matricea design–cod pentru Numărător de caractere
CanalDisponibilitate
FigmaIndisponibil
HTML/CSSDisponibil
Web ComponentsDisponibil
ReactDisponibil
DocumentațieDisponibil
Teste automateDisponibil
Testare cu tastaturaIndisponibil
Testare cu cititor de ecranIndisponibil

A fost utilă această pagină?

Linkul deschide un formular GitHub precompletat. Nu transmitem nimic până când alegi să publici feedback-ul și îți recomandăm să nu incluzi date personale.