@pregular/core
v0.0.0
Published
:zap:Ai based, :rocket:Fast, :gem:Lightweight Angular alternative with the same modern API thats compile directly to WebComponents
Downloads
3
Maintainers
Readme
Pregular
Meanings
| Icon | | | --- | --- | | :heavy_check_mark: | will implemented | | :alarm_clock: | will developed when first alpha is released | | :star: | new feature | | :question: | not sure if this will be implemented | | :warning: | experimental | | :x: | will not be implemented |
Features
| | Planned | Implemented |
| --- | ---| --- |
| Component Class decorator | | |
| @Component()
| :heavy_check_mark: | No |
| @Injectable()
| :alarm_clock: | No |
| @Directive()
| :alarm_clock: | No |
| @Pipe()
| :alarm_clock: | No |
| | | |
| | | |
| Component configuration | | |
| selector
| :heavy_check_mark: | No |
| template
| :heavy_check_mark: | No |
| templateUrl
| :heavy_check_mark: | No |
| styles
| :heavy_check_mark: | No |
| styleUrls
| :heavy_check_mark: | No |
| encapsulation
| :heavy_check_mark: | No |
| interpolation
| :heavy_check_mark: | No |
| host
| :alarm_clock: | No |
| exportAs
| :alarm_clock: | No |
| elementType
@Component({ selector: 'my-real-image-component' elementType: 'img'})<img is="my-real-image-component" src="image/url.jpg">
* Safari needs polyfill | :star::alarm_clock::warning: | No |
| inputs
| :question: | No |
| outputs
| :question: | No |
| providers
| :question: | No |
| animations
| :question: | No |
| queries
| :question: | No |
| viewProviders
| :x: | - |
| changeDetection
| :x: | - |
| entryComponents
| :x: | - |
| preserveWhitespaces
| :x: | - |
| module.id
| :x: | - |
| jit
| :x: | - |
| | | |
| | | |
| Class field decorators for components | | |
| @Input()
| :heavy_check_mark: | No |
| @Output()
| :heavy_check_mark: | No |
| @HostBinding('class.valid')
| :alarm_clock: | No |
| @HostListener('click', ['$event'])
| :alarm_clock: | No |
| @ContentChild(myPredicate)
| :alarm_clock: | No |
| @ContentChildren(myPredicate)
| :alarm_clock: | No |
| @ViewChild(myPredicate)
| :alarm_clock: | No |
| @ViewChildren(myPredicate)
| :alarm_clock: | No |
| @Query(myPredicate)
Alias for:@ContentChild
, @ContentChildren
, @ViewChild
and @ViewChildren
| :star::alarm_clock::warning: | No |
| @On('click .foo')
(1) Defining an event with a selector in a class method(2) Alias for @HostBinding
=> @On('click')
| :star::alarm_clock::warning: | No |
| @Route('/name/{{value}}', myPredicate, {name: 'myOutlet'})
@Component({ selector: 'some-component', template: <router-outlet name="myOutlet"></router-outlet>
})class Foo { @Route('/name1/{{value}}', {name: 'myOutlet'}, BarComponent) route1 = 'myRoute1';} | :star::alarm_clock::warning: | No |
| | | |
| | | |
| Built-in Services| | |
| ElementRef, constructor(private elr: ElementRef)
| :heavy_check_mark: | No |
| TemplateRef
| :alarm_clock: | No |
| ViewContainerRef
| :alarm_clock: | No |
| | | |
| | | |
| Component lifecycle hooks| | |
| constructor()
| :heavy_check_mark: | No |
| ngOnChanges(changeRecord)
| :heavy_check_mark: | No |
| ngOnInit()
| :heavy_check_mark: | No |
| ngAfterViewInit()
| :heavy_check_mark: | No |
| ngOnDestroy()
| :heavy_check_mark: | No |
| ngAfterContentInit()
| :alarm_clock: | No |
| ngAfterViewChecked()
| :x: | - |
| ngDoCheck()
| :x: | - |
| ngAfterContentChecked()
| :x: | - |
| | | |
| | | |
| Built-in Services| | |
| ElementRef
| :heavy_check_mark: | No |
| TemplateRef
| :alarm_clock: | No |
| ViewContainerRef
| :alarm_clock: | No |
| | | |
| | | |
| Template syntax| | |
| Hello {{ponyName}}
| :heavy_check_mark: | No |
| <div title="Hello {{ponyName}}">
| :heavy_check_mark: | No |
| (click)="foo($event)"
| :heavy_check_mark: | No |
| [value]="firstName"
| :alarm_clock: | No |
| [attr.role]="myAriaRole"
| :alarm_clock: | No |
| [class.extra-sparkle]="isDelightful"
| :alarm_clock: | No |
| [style.width.px]="mySize"
| :alarm_clock: | No |
| Sum{{1 + 1 + getVal()}}
| :alarm_clock: | No |
| [(title)]="name"
| :alarm_clock: | No |
| <video #movieplayer
<button (click)="movieplayer.play()">
</video>
| :alarm_clock: | No |
| *myUnless="myExpression"
| :alarm_clock: | No |
| Employer: {{employer?.companyName}}
| :alarm_clock: | No |
| <ng-template>
| :alarm_clock: | No |
| <ng-content>
| :alarm_clock: | No |
| <router-outlet>
, <router-outlet name="myOutlet">
| :alarm_clock: | No |
| <svg:rect x="0" y="0" width="100" height="100"/>
| :alarm_clock: | No |
| <svg>
<rect x="0" y="0" width="100" height="100"/>
</svg>
| :alarm_clock: | No |
| <ng-container>
| :alarm_clock: | No |
| <ng-container *ngTemplateOutlet>
| :alarm_clock: | No |
| (keydown.enter.esc)="bar($event)"
| :alarm_clock: | No |
| (ngSubmit)="bar(...)"
| :alarm_clock: | No |
| | | |
| | | |
| Built-in directives| | |
| *ngIf="showSection"
| :heavy_check_mark: | No |
| *ngIf="condition; else elseBlock"
| :heavy_check_mark: | No |
| *ngIf="condition; then thenBlock else elseBlock"
| :alarm_clock: | No |
| *ngFor="let item of list; index as i"
| :alarm_clock: | No |
| *ngFor="let item of list; first as isFirst"
| :alarm_clock: | No |
| *ngFor="let item of list; even as isEven"
| :alarm_clock: | No |
| *ngFor="let item of list; odd as isOdd"
| :alarm_clock: | No |
| *ngFor="let item of items; index as i; trackBy: trackByFn
| :alarm_clock: | No |
| [ngSwitch], [ngSwitchCase], ...
| :alarm_clock: | No |
| [ngClass]
| :alarm_clock: | No |
| [ngStyle]
| :alarm_clock: | No |
| | | |
| | | |
| Built-in pipes| | |
| {{ observableOrPromise
| async }}
| :heavy_check_mark: | No |
| {{ value_expression
| json }}
| :alarm_clock: | No |
| {{ value_expression
| uppercase }}
| :alarm_clock: | No |
| {{ value_expression
| lowercase }}
| :alarm_clock: | No |
| {{ input_expression
| keyvalue }}
| :alarm_clock: | No |
| {{ value_expression
| number }}
| :alarm_clock: | No |
| {{ value_expression
| percent}}
| :alarm_clock: | No |
| {{ value_expression
| uppercase }}
| :alarm_clock: | No |
| {{ value_expression
| currency }}
| :alarm_clock: | No |
| {{ value_expression
| i18nPlural }}
| :alarm_clock: | No |
| {{ value_expression
| slice }}
| :alarm_clock: | No |
| {{ value_expression
| date }}
| :alarm_clock: | No |
| {{ value_expression
| i18nSelect }}
| :alarm_clock: | No |
| {{ value_expression
| titlecase }}
| :alarm_clock: | No |
| | | |
| | | |
| Dependency injection decorators | | |
| @Self()
| :alarm_clock: | No |
| @Optional()
| :alarm_clock: | No |
| @SkipSelf()
| :alarm_clock: | No |
| @Host()
| :alarm_clock: | No |
| @Attribute()
| :alarm_clock: | No |
| @Inject(<any_token>)
| :alarm_clock: | No |
| @Inject(DOCUMENT)
| :alarm_clock: | No |
| @Inject(WINDOW)
| :star::alarm_clock: | No |
| @Inject(LOCATION)
| :star::alarm_clock: | No |
| @Inject(NAVIGATOR)
| :star::alarm_clock: | No |
| @Inject(HISTORY)
| :star::alarm_clock: | No |
| @Inject(LOCALSTORAGE)
| :star::alarm_clock: | No |
| | | |
| | | |
| State | :alarm_clock: | No |
| | | |
| | | |
| Routing and navigation | :alarm_clock: | No |
| | | |
| | | |
| Directive configuration | :alarm_clock: | No |
| | | |
| | | |
| NgModules| :x: | - |
Browser Support
| Chrome*| Firefox* | Edge | Safari* | IE11+ | Chrome Android* | Mobile Safari* | | --- | --- | --- | --- | --- | --- | --- | | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: | :x: | :heavy_check_mark: | :heavy_check_mark:|
* Indicates the current version of the browser In special cases lazy load polyfills for older browsers (+IE11 excluded) but not in first step of pregular