# smartadmin-components ## Komponenty ### `w-radio-list`, `WRadioList` Lista radio, na podstawie property `values` Lista radio ```HTML <w-radio-list :model="$schema.FormaPrawna" title="To jest tytuĹ" :values="values"></w-radio-list> ``` Lista radio z polem do wpisania wĹasnej wartoĹci, pod etykietÄ `other-label` ```HTML <w-radio-list other-label="Inne" :model="$schema.FormaPrawna" title="To jest tytuĹ" :values="values"></w-radio-list> ``` values sÄ tablicÄ : ```JavaScript values: [ { value: 'Stowarzyszenie Rejestrowe', text: 'Stowarzyszenie rejestrowe' }, { value: 'Stowarzyszenie ZwykĹe', text: 'Stowarzyszenie zwykĹe' } ] ``` MoĹźna rĂłwnieĹź elementy wrzuciÄ jako tagi `<item>`: ```HTML <w-radio-list model="$schema.FormaPrawna" title="To jest tytuĹ"> <item :value="Stowarzyszenie Rejestrowe">Stowarzyszenie rejestrowe</item> <item :value="Stowarzyszenie ZwykĹe">Stowarzyszenie zwykĹe</item> <item :value="Inne" disabled>Opcja wyĹÄ czona</item> </w-radio-list> ``` ## _Tabele_ _Komponenty uĹźywane wyĹÄ cznie do konstrukcji tabel bazujÄ ce na `$schema`_ ## `w-lp-cell` Pozwala wygenerowaÄ wiersz lp po podaniu `:index` ## `w-table-cell` Generuje `td` wraz z polem input, textarea, select itd. wewnÄ trz. ## `w-tblock` Generuje wiersz na bazie schemy. Automatycznie tworzy `w-lp-cell` lub wiersz z tytuĹem ze schemy. UĹźycie slotĂłw czyt. [w-schema-title sloty dynamiczne](w-schema-table). `:prefix` jest dodawany na poczÄ tek nazwy dynamicznych slotĂłw - domyĹlnie `""`. Aby wiersz z tytuĹem miaĹ odpowiedniÄ iloĹÄ column naleĹźy podaÄ sumÄ colspanĂłw uĹźywanÄ w naszej tabeli w `:properties-count`. `:index` jest przekazywany do `w-lp-cell`. Przycisk usuwania w `w-row-buttons` ukrywa siÄ, gdy w schemie zadeklarowano `length`. ## `w-thead` DziaĹanie takie jak w `w-block` z tÄ róşnicÄ , Ĺźe zamiast pĂłl generuje tytuĹy z schemy. UĹźycie slotĂłw czyt. [w-schema-title sloty dynamiczne](w-schema-table). ## `w-tbody` Wielokrotnie wypisuje `w-block` uĹźywajÄ c `v-for`. Dodatkowo generuje wiersz zawierajÄ cy `w-add-row`, ktĂłrego liczbÄ kolumn moĹźemy zmieniÄ przez `:colspan`. `:add-row` pozwala na zmianÄ treĹci przycisku, gdy parametr zawiera `false` caĹy wiersz siÄ nie pokaĹźe. Wiersz nie pokaĹźe siÄ rĂłwnieĹź, gdy w schemie znajdzie siÄ pole `length`. Ukryje siÄ on rĂłwnieĹź, gdy iloĹÄ wierszy osiÄ gnie wartoĹÄ `maxItems` ze schemy. UĹźycie slotĂłw czyt. [w-schema-title sloty dynamiczne](w-schema-table). ## `w-form-table` Podstawowy komponent budujÄ cy tabelÄ. Jako najprostszy element wzglÄdem slotĂłw pola `:model` uĹźywa opcjonalnie w celu wyĹwietlenia `w-error` nad tabelÄ . ## `w-schema-table` Bazuje na wszystkich wczeĹniejszych komponentach, ktĂłre generuje na bazie schemy. Wymagane jest przekazanie pola typu `array` ze schemy do property `:model`. Opcjonalnie, aby wygenerowaÄ wiersz w podsumowaniu naleĹźy przekazaÄ obiekt ze schemy do property `:modelSum` IloĹÄ kolumn, oraz ich nagĹĂłwki w `thead` bazujÄ na property itemĂłw przekazanych w `:model`. NagĹĂłwki sÄ zaciÄ gane z pola `title`. KolejnoĹÄ kolumn wynika z kolejnoĹci pĂłl w schemie. Pola `disabled: true` oraz zawierajÄ ce `guid` w nazwie sÄ pomijane w wyĹwietlaniu. UĹźycie szerokoĹci kolumn czyt. [w-thead](w-thead). Schema-table uĹźywa pĹywajÄ cego thead. **Sloty statyczne** - `beforeThead` - w celu umieszczenia wĹasnego thead przed gĹĂłwnym - `thead` - w celu podmiany gĹĂłwnego thead - `beforeTbody` - w celu umieszczenia wĹasnego tbody przed generowanym - `tbody` - w celu podmiany gĹĂłwnego tbody - `afterTbody` - w celu umieszczenia wĹasnego tbody po generowanym - `tfoot` - w celu podmiany tfoot **Sloty dynamiczne** KaĹźde pole moĹźna podmieniÄ uĹźywajÄ c slota o nazwie identycznej z nazwÄ property w schemie np: ```html <template v-slot:Nazwisko><td>Pole zawierajÄ ce Nazwisko</td></template> ``` Sloty mogÄ zwracaÄ zmienne `item` (_z wyjÄ tkiem slotĂłw w `thead`_), `property`, `propertyName`. Aby umieĹciÄ slot w nagĹĂłwku lub stopce naleĹźy nazwÄ property poprzedziÄ odpowiedno: `th_` dla th wewnÄ trz `thead` oraz `tf_` dla `tfoot`. ```html <template slot="th_Imie" slot-scope="{ propertyName, property }"> <th>Pole zawierajÄ ce {{propertyName}} - {{property.$schema.title}}</th> </template> ``` **Przekazywanie atrybutĂłw** Do kaĹźdego automatycznie wygenerowanego pola moĹźemy dodaÄ wĹasne atrybuty poprzez property `:fields`, w ktĂłrym naleĹźy umieĹciÄ obiekt zawierajÄ cy property o tej samej nazwie co nasze pole ze schemy (ew. poprzedzone prefiksem czyt. uĹźycie **slot**) ```html <w-schema-table :fields="{ th_Nazwisko: {colspan: 2}, Nazwisko: {field: 'w-textarea', colspan: 2}, tf_Lp: {class: 'text-italic', colspan: 2}}" :add-row-colspan="4" /> ``` Aby zmieniÄ colspan w wierszu zawierajÄ cym `w-add-row` naleĹźy uĹźyÄ `:add-row-colspan`. ## Project setup ``` npm install ``` ### Kompilacja komponentĂłw ``` npm run build ``` ### PrzeglÄ danie komponentĂłw, storybook ``` npm run storybook ``` ### Testy jednostkowe jest ``` npm run test:unit ``` ### Budowanie i publikcaja ``` npm run fullPublish ``` ### Run your unit tests ``` npm run test:unit ```