Skip to content

Instantly share code, notes, and snippets.

View AhsanAyaz's full-sized avatar

Muhammad Ahsan Ayaz AhsanAyaz

View GitHub Profile
@AhsanAyaz
AhsanAyaz / pointy-little-popovers__src__styles.scss
Last active February 19, 2021 21:27
Global Styles for Pointy Little Popover Recipe
/* You can add global styles to this file, and also import other style files */
.cdk-overlay-container {
display: block;
&.z-index-top {
z-index: 2050;
}
}
.duplicate-modal-overlay {
@AhsanAyaz
AhsanAyaz / angular-title-case-extended.pipe.html
Last active September 18, 2019 12:56
Custom Angular title case pipe built on top of Angular's titleCase pipe
<!-- USAGE -->
<!-- Transoforming strings -->
<div class="users">
<div class="users__user" *ngFor="let user of users">
{{user.name | appTitleCase}}
</div>
</div>
<!-- Transforming Arrays -->
@AhsanAyaz
AhsanAyaz / du-type-guards-final.ts
Created September 6, 2019 07:20
Understanding Discriminated Unions in Typescript
function evaluatePrice(vehicle: Vehicle) {
switch(vehicle.vType) {
case "car":
return vehicle.transmission * evaluationFactor;
case "truck":
return vehicle.capacity * evaluationFactor;
case "motorcycle":
return vehicle.make * evaluationFactor;
case "bicycle":
return vehicle.make * evaluationFactor;
@AhsanAyaz
AhsanAyaz / du-type-guards-update.ts
Created September 6, 2019 07:17
Understanding Discriminated Unions in Typescript
function evaluatePrice(vehicle: Vehicle) {
switch(vehicle.vType) {
case "car":
return vehicle.transmission * evaluationFactor;
case "truck":
return vehicle.capacity * evaluationFactor;
case "motorcycle":
return vehicle.make * evaluationFactor;
default:
const invalidVehicle: never = vehicle;
@AhsanAyaz
AhsanAyaz / du-bicycle-interface-addition.ts
Created September 6, 2019 07:16
Understanding Discriminated Unions in Typescript
interface IBicycle {
vType: "bicycle";
make: number;
}
type Vehicle = IMotorcycle | ICar | ITruck | IBicycle;
@AhsanAyaz
AhsanAyaz / du-type-guards.ts
Created September 6, 2019 07:15
Understanding Discriminated Unions in Typescript
function evaluatePrice(vehicle: Vehicle) {
switch(vehicle.vType) {
case "car":
return vehicle.transmission * evaluationFactor;
case "truck":
return vehicle.capacity * evaluationFactor;
case "motorcycle":
return vehicle.make * evaluationFactor;
}
}
@AhsanAyaz
AhsanAyaz / du-type-guards-example.ts
Last active September 6, 2019 07:15
Understanding Discriminated Unions in Typescript
const evaluationFactor = Math.PI; // some global factor
function evaluatePrice(vehicle: Vehicle) {
return vehicle.capacity * evaluationFactor;
}
const myTruck: ITruck = {vType: "truck", capacity: 9.5};
evaluatePrice(myTruck);
@AhsanAyaz
AhsanAyaz / du-union.ts
Created September 6, 2019 07:12
Understanding Discriminated Unions in Typescript
type Vehicle = IMotorcycle | ICar | ITruck;
@AhsanAyaz
AhsanAyaz / du-interfaces_initial.ts
Created September 6, 2019 07:05
Discriminated Unions in Typescript
enum CarTransmission {
Automatic = 200,
Manual = 300
}
interface IMotorcycle {
vType: "motorcycle"; // discriminant
make: number; // year
}
@AhsanAyaz
AhsanAyaz / logger.ts
Last active May 22, 2019 18:36
Custom logging service for Angular
import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
export interface LoggerConfig {
prefix?: string;
color?: string;
enabled: boolean;
}
@Injectable({