npm i bulma --save
npm i --save @fortawesome/fontawesome-free
node_modules/bulma/css/bulma.min.css
node_modules/@fortawesome/fontawesome-free/css/fontawesome.min.css
server { | |
listen 80; | |
location / { | |
root /usr/share/nginx/html; | |
index index.html index.htm; | |
try_files $uri $uri/ /index.html =404; | |
} | |
} |
import requests | |
project_id = 'xxxxx' | |
labels = ['New funcionality', 'Support', 'Maintenance'] | |
milestone = 'v1.6.0' | |
state = 'closed' | |
url = f'https://gitlab.com/api/v4/projects/{project_id}/issues' | |
headers = {'Authorization': 'Bearer xxxxxxxx'} # https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#limiting-scopes-of-a-personal-access-token |
View: https://www.youtube.com/watch?v=t-hZa1mPPN0
map: any;
directionsService = new google.maps.DirectionsService();
import { Injectable } from '@angular/core'; | |
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http'; | |
import { Observable } from 'rxjs'; | |
@Injectable() | |
export class AuthInterceptor implements HttpInterceptor { | |
constructor() { } | |
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> { |
export class ValidateEmailNotTaken { | |
static createValidator(signupService: SignupService) { | |
return (control: AbstractControl) => { | |
return signupService.checkEmailNotTaken(control.value).map(res => { | |
return res ? null : { emailTaken: true }; | |
}); | |
}; | |
} | |
} |
static passwordMatchValidator(control: AbstractControl) { | |
const password: string = control.get('password').value; // get password from our password form control | |
const confirmPassword: string = control.get('confirmPassword').value; // get password from our confirmPassword form control | |
// compare is the password math | |
if (password !== confirmPassword) { | |
// if they don't match, set an error in our confirmPassword form control | |
control.get('confirmPassword').setErrors({ NoPassswordMatch: true }); | |
} | |
} |