עיצוב מסך בסיסי

כתבנו את התוכנית ללא עיצוב של הרכיבים שבה, כאן נדבר על הוספת ספריית עיצוב על מנת שהמסך יראה טוב יותר.

על מנת לתת עיצוב למסך התוכנית אפשר לכתוב קוד css בקובץ ה-css של הקומפוננטה או בקובץ css הכללי של האפליקציה. קל ופשוט יותר להשתמש בספריית עיצוב קיימת כמו Bootstrap.

התקנת Bootstrap

התקנה של ספריית Bootstrap:

npm i bootstrap

ספרייה נוספת שמצוי שמשתמשים בה היא Font-Awesome:

npm i font-awesome

בקובץ angular.json בחלק של styles צריך להוסיף:

"styles": [
    "./node_modules/bootstrap/dist/css/bootstrap.min.css",
    "./node_modules/font-awesome/css/font-awesome.min.css",
    "src/styles.scss"
],

כדי שהאנימציות יעבדו כמו שצריך תוסיפו לייבוא בקובץ app.module.ts את BrowserAnimationModule.

להתחיל את הסרבר מחדש אחרי השינויים.

עיצוב עם Bootstrap

את כל ה-classes שמשתמשים בהם אפשר למצוא בקישור: תיעוד Bootstrap.

זה קוד הטופס לאחר העיצוב עם הספרייה:

<div class="container p-4 border mt-5">
  <h1>Password Generator</h1>

  <div class="mb-3">
    <label class="form-label">Enter Length</label>
    <input (input)="onChangeLength(getValue($event))" class="form-control"/>
  </div>

  <div class="form-check">
    <input type="checkbox" (change)="onChangeUseLetters()" class="form-check-input" id="changeUseLetters">
    <label class="form-check-label" for="changeUseLetters">Use Letters</label>
  </div>

  <div class="form-check">
    <label class="form-check-label" for="changeUseNumbers">Use Numbers</label>
    <input type="checkbox" (change)="onChangeUseNumbers()" class="form-check-input" id="changeUseNumbers">
  </div>

  <div class="form-check">
    <label class="form-check-label" for="changeUseSymbols">Use Symbols</label>
    <input type="checkbox" (change)="onChangeUseSymbols()" class="form-check-input" id="changeUseSymbols">
  </div>

  <div class="mt-3">
    <button [disabled]="!(length && (includeLetters || includeNumbers || includeSymbols))"
    (click)="onButtonClick()" type="button" class="btn btn-primary">Generate</button>
  </div>

  <div class="mt-3">
    <label class="form-label">Your Password</label>
    <input [value]="password" class="form-control"/>
  </div>
</div>

הוספת תנאים

עוד דבר שאנחנו רוצים לעשות זה להסתיר את החלק שמראה את הסיסמא המוכנה לפני שאנחנו מייצרים את הסיסמא. בשביל לעשות את זה נשתמש ב-directive שמשנה את המבנה של התוכנית.

כדי להוסיף את התנאי, נמצא את ה-div שמראה את הסיסמא. את החלק הזה נרצה להראות רק במידה ויש לנו סיסמא להציג.

<div class="mt-3" *ngIf="password">
    <label class="form-label">Your Password</label>
    <input [value]="password" class="form-control"/>
  </div>

עכשיו יש לנו תנאי שאומר שרק אם יש ערך למשתנה password ה-div הזה יוצג.

העלאת האפליקציה לרשת

אם אתם רוצים שעוד אנשים יראו את מה שפיתחתם, יש שירות חינם (בזמן הכתיבה של המאמר) שאפשר להעלות אליו את מה שפיתחתם: vercel.