@cuby-ui/cdk 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +24 -0
- package/directives/auto-resizing.directive.d.ts +18 -0
- package/directives/index.d.ts +1 -0
- package/esm2020/cuby-ui-cdk.mjs +5 -0
- package/esm2020/directives/auto-resizing.directive.mjs +64 -0
- package/esm2020/directives/index.mjs +2 -0
- package/esm2020/index.mjs +5 -0
- package/esm2020/interfaces/index.mjs +3 -0
- package/esm2020/interfaces/on-change.mjs +2 -0
- package/esm2020/interfaces/on-touched.mjs +2 -0
- package/esm2020/services/destroy.service.mjs +15 -0
- package/esm2020/services/index.mjs +2 -0
- package/esm2020/types/index.mjs +3 -0
- package/esm2020/types/input-type.mjs +2 -0
- package/esm2020/types/nullable.mjs +2 -0
- package/fesm2015/cuby-ui-cdk.mjs +82 -0
- package/fesm2015/cuby-ui-cdk.mjs.map +1 -0
- package/fesm2020/cuby-ui-cdk.mjs +82 -0
- package/fesm2020/cuby-ui-cdk.mjs.map +1 -0
- package/index.d.ts +4 -0
- package/interfaces/index.d.ts +2 -0
- package/interfaces/on-change.d.ts +3 -0
- package/interfaces/on-touched.d.ts +3 -0
- package/package.json +33 -0
- package/services/destroy.service.d.ts +8 -0
- package/services/index.d.ts +1 -0
- package/types/index.d.ts +2 -0
- package/types/input-type.d.ts +1 -0
- package/types/nullable.d.ts +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Cdk
|
|
2
|
+
|
|
3
|
+
This library was generated with [Angular CLI](https://github.com/angular/angular-cli) version 15.2.0.
|
|
4
|
+
|
|
5
|
+
## Code scaffolding
|
|
6
|
+
|
|
7
|
+
Run `ng generate component component-name --project cdk` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module --project cdk`.
|
|
8
|
+
> Note: Don't forget to add `--project cdk` or else it will be added to the default project in your `angular.json` file.
|
|
9
|
+
|
|
10
|
+
## Build
|
|
11
|
+
|
|
12
|
+
Run `ng build cdk` to build the project. The build artifacts will be stored in the `dist/` directory.
|
|
13
|
+
|
|
14
|
+
## Publishing
|
|
15
|
+
|
|
16
|
+
After building your library with `ng build cdk`, go to the dist folder `cd dist/cdk` and run `npm publish`.
|
|
17
|
+
|
|
18
|
+
## Running unit tests
|
|
19
|
+
|
|
20
|
+
Run `ng test cdk` to execute the unit tests via [Karma](https://karma-runner.github.io).
|
|
21
|
+
|
|
22
|
+
## Further help
|
|
23
|
+
|
|
24
|
+
To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { AfterViewChecked, AfterViewInit, OnInit } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export declare class CuiAutoResizingDirective implements OnInit, AfterViewInit, AfterViewChecked {
|
|
4
|
+
private readonly element;
|
|
5
|
+
private readonly ngControl;
|
|
6
|
+
private readonly ngModel;
|
|
7
|
+
private readonly destroy$;
|
|
8
|
+
ngOnInit(): void;
|
|
9
|
+
ngAfterViewInit(): void;
|
|
10
|
+
ngAfterViewChecked(): void;
|
|
11
|
+
protected onInput(): void;
|
|
12
|
+
private initNgControlValueChangeSubscription;
|
|
13
|
+
private initNgModelValueChangeSubscription;
|
|
14
|
+
private initHiddenOverflow;
|
|
15
|
+
private resize;
|
|
16
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CuiAutoResizingDirective, never>;
|
|
17
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<CuiAutoResizingDirective, "textarea[cuiAutoResizing]", never, {}, {}, never, never, true, never>;
|
|
18
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './auto-resizing.directive';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VieS11aS1jZGsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jZGsvY3VieS11aS1jZGsudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { Directive, ElementRef, HostListener, inject } from '@angular/core';
|
|
2
|
+
import { NgControl, NgModel } from '@angular/forms';
|
|
3
|
+
import { takeUntil } from 'rxjs';
|
|
4
|
+
import { CuiDestroyService } from '../services';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export class CuiAutoResizingDirective {
|
|
7
|
+
constructor() {
|
|
8
|
+
this.element = inject(ElementRef).nativeElement;
|
|
9
|
+
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
10
|
+
this.ngModel = inject(NgModel, { self: true, optional: true });
|
|
11
|
+
this.destroy$ = inject(CuiDestroyService, { self: true });
|
|
12
|
+
}
|
|
13
|
+
ngOnInit() {
|
|
14
|
+
this.initNgControlValueChangeSubscription();
|
|
15
|
+
this.initNgModelValueChangeSubscription();
|
|
16
|
+
}
|
|
17
|
+
ngAfterViewInit() {
|
|
18
|
+
this.initHiddenOverflow();
|
|
19
|
+
}
|
|
20
|
+
// TODO: Бьёт по производительности - найти решение получше
|
|
21
|
+
ngAfterViewChecked() {
|
|
22
|
+
this.resize();
|
|
23
|
+
}
|
|
24
|
+
onInput() {
|
|
25
|
+
this.resize();
|
|
26
|
+
}
|
|
27
|
+
initNgControlValueChangeSubscription() {
|
|
28
|
+
if (!this.ngControl) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
this.ngControl.valueChanges
|
|
32
|
+
.pipe(takeUntil(this.destroy$))
|
|
33
|
+
.subscribe(this.resize.bind(this));
|
|
34
|
+
}
|
|
35
|
+
initNgModelValueChangeSubscription() {
|
|
36
|
+
if (!this.ngModel) {
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
this.ngModel.valueChanges
|
|
40
|
+
.pipe(takeUntil(this.destroy$))
|
|
41
|
+
.subscribe(this.resize.bind(this));
|
|
42
|
+
}
|
|
43
|
+
initHiddenOverflow() {
|
|
44
|
+
this.element.style.overflow = 'hidden';
|
|
45
|
+
}
|
|
46
|
+
resize() {
|
|
47
|
+
this.element.style.height = 'auto';
|
|
48
|
+
this.element.style.height = this.element.scrollHeight + 'px';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
CuiAutoResizingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiAutoResizingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
52
|
+
CuiAutoResizingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CuiAutoResizingDirective, isStandalone: true, selector: "textarea[cuiAutoResizing]", host: { listeners: { "input": "onInput()" } }, providers: [CuiDestroyService], ngImport: i0 });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiAutoResizingDirective, decorators: [{
|
|
54
|
+
type: Directive,
|
|
55
|
+
args: [{
|
|
56
|
+
standalone: true,
|
|
57
|
+
selector: 'textarea[cuiAutoResizing]',
|
|
58
|
+
providers: [CuiDestroyService]
|
|
59
|
+
}]
|
|
60
|
+
}], propDecorators: { onInput: [{
|
|
61
|
+
type: HostListener,
|
|
62
|
+
args: ['input']
|
|
63
|
+
}] } });
|
|
64
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1yZXNpemluZy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9hdXRvLXJlc2l6aW5nLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBR0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osTUFBTSxFQUVQLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVqQyxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxhQUFhLENBQUM7O0FBT2hELE1BQU0sT0FBTyx3QkFBd0I7SUFMckM7UUFNbUIsWUFBTyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxhQUE0QixDQUFDO1FBQzFELGNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RCxZQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBaUR2RTtJQS9DUSxRQUFRO1FBQ2IsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLENBQUM7UUFDNUMsSUFBSSxDQUFDLGtDQUFrQyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUVELDJEQUEyRDtJQUNwRCxrQkFBa0I7UUFDdkIsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFHUyxPQUFPO1FBQ2YsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxvQ0FBb0M7UUFDMUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbkIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFhO2FBQ3pCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxrQ0FBa0M7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFDakIsT0FBTztTQUNSO1FBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFhO2FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQzlCLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTyxrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUN6QyxDQUFDO0lBRU8sTUFBTTtRQUNaLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztJQUMvRCxDQUFDOztzSEFwRFUsd0JBQXdCOzBHQUF4Qix3QkFBd0IsdUhBRnhCLENBQUMsaUJBQWlCLENBQUM7NEZBRW5CLHdCQUF3QjtrQkFMcEMsU0FBUzttQkFBQztvQkFDVCxVQUFVLEVBQUUsSUFBSTtvQkFDaEIsUUFBUSxFQUFFLDJCQUEyQjtvQkFDckMsU0FBUyxFQUFFLENBQUMsaUJBQWlCLENBQUM7aUJBQy9COzhCQXNCVyxPQUFPO3NCQURoQixZQUFZO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBEaXJlY3RpdmUsXG4gIEVsZW1lbnRSZWYsXG4gIEhvc3RMaXN0ZW5lcixcbiAgaW5qZWN0LFxuICBPbkluaXRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOZ0NvbnRyb2wsIE5nTW9kZWwgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ3VpRGVzdHJveVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcyc7XG5cbkBEaXJlY3RpdmUoe1xuICBzdGFuZGFsb25lOiB0cnVlLFxuICBzZWxlY3RvcjogJ3RleHRhcmVhW2N1aUF1dG9SZXNpemluZ10nLFxuICBwcm92aWRlcnM6IFtDdWlEZXN0cm95U2VydmljZV1cbn0pXG5leHBvcnQgY2xhc3MgQ3VpQXV0b1Jlc2l6aW5nRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkIHtcbiAgcHJpdmF0ZSByZWFkb25seSBlbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWYpLm5hdGl2ZUVsZW1lbnQgYXMgSFRNTEVsZW1lbnQ7XG4gIHByaXZhdGUgcmVhZG9ubHkgbmdDb250cm9sID0gaW5qZWN0KE5nQ29udHJvbCwgeyBzZWxmOiB0cnVlLCBvcHRpb25hbDogdHJ1ZSB9KTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZ01vZGVsID0gaW5qZWN0KE5nTW9kZWwsIHsgc2VsZjogdHJ1ZSwgb3B0aW9uYWw6IHRydWUgfSk7XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBpbmplY3QoQ3VpRGVzdHJveVNlcnZpY2UsIHsgc2VsZjogdHJ1ZSB9KTtcblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0TmdDb250cm9sVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24oKTtcbiAgICB0aGlzLmluaXROZ01vZGVsVmFsdWVDaGFuZ2VTdWJzY3JpcHRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5pbml0SGlkZGVuT3ZlcmZsb3coKTtcbiAgfVxuXG4gIC8vIFRPRE86INCR0YzRkdGCINC/0L4g0L/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70YzQvdC+0YHRgtC4IC0g0L3QsNC50YLQuCDRgNC10YjQtdC90LjQtSDQv9C+0LvRg9GH0YjQtVxuICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplKCk7XG4gIH1cblxuICBASG9zdExpc3RlbmVyKCdpbnB1dCcpXG4gIHByb3RlY3RlZCBvbklucHV0KCk6IHZvaWQge1xuICAgIHRoaXMucmVzaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXROZ0NvbnRyb2xWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmdDb250cm9sKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzIVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSh0aGlzLnJlc2l6ZS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE5nTW9kZWxWYWx1ZUNoYW5nZVN1YnNjcmlwdGlvbigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMubmdNb2RlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMubmdNb2RlbC52YWx1ZUNoYW5nZXMhXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpXG4gICAgICAuc3Vic2NyaWJlKHRoaXMucmVzaXplLmJpbmQodGhpcykpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0SGlkZGVuT3ZlcmZsb3coKTogdm9pZCB7XG4gICAgdGhpcy5lbGVtZW50LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gIH1cblxuICBwcml2YXRlIHJlc2l6ZSgpOiB2b2lkIHtcbiAgICB0aGlzLmVsZW1lbnQuc3R5bGUuaGVpZ2h0ID0gJ2F1dG8nO1xuICAgIHRoaXMuZWxlbWVudC5zdHlsZS5oZWlnaHQgPSB0aGlzLmVsZW1lbnQuc2Nyb2xsSGVpZ2h0ICsgJ3B4JztcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './auto-resizing.directive';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvLXJlc2l6aW5nLmRpcmVjdGl2ZSc7XG4iXX0=
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './interfaces';
|
|
2
|
+
export * from './types';
|
|
3
|
+
export * from './directives';
|
|
4
|
+
export * from './services';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9wcm9qZWN0cy9jZGsvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxTQUFTLENBQUM7QUFDeEIsY0FBYyxjQUFjLENBQUM7QUFDN0IsY0FBYyxZQUFZLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2ludGVyZmFjZXMnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL2RpcmVjdGl2ZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9zZXJ2aWNlcyc7XG4iXX0=
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './on-change';
|
|
2
|
+
export * from './on-touched';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvaW50ZXJmYWNlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vb24tY2hhbmdlJztcbmV4cG9ydCAqIGZyb20gJy4vb24tdG91Y2hlZCc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tY2hhbmdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL2ludGVyZmFjZXMvb24tY2hhbmdlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEN1aU9uQ2hhbmdlPFQ+IHtcbiAgKHZhbHVlOiBUKTogdm9pZDtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib24tdG91Y2hlZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9pbnRlcmZhY2VzL29uLXRvdWNoZWQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgQ3VpT25Ub3VjaGVkIHtcbiAgKCk6IHZvaWQ7XG59XG4iXX0=
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export class CuiDestroyService extends Subject {
|
|
5
|
+
ngOnDestroy() {
|
|
6
|
+
this.next();
|
|
7
|
+
this.complete();
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
CuiDestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
11
|
+
CuiDestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService });
|
|
12
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService, decorators: [{
|
|
13
|
+
type: Injectable
|
|
14
|
+
}] });
|
|
15
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NlcnZpY2VzL2Rlc3Ryb3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxPQUFhO0lBQzNDLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7OytHQUpVLGlCQUFpQjttSEFBakIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEN1aURlc3Ryb3lTZXJ2aWNlIGV4dGVuZHMgU3ViamVjdDx2b2lkPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5leHQoKTtcbiAgICB0aGlzLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export * from './destroy.service';
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS5zZXJ2aWNlJztcbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export * from './nullable';
|
|
2
|
+
export * from './input-type';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdHlwZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxZQUFZLENBQUM7QUFDM0IsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL251bGxhYmxlJztcbmV4cG9ydCAqIGZyb20gJy4vaW5wdXQtdHlwZSc7XG4iXX0=
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtdHlwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay90eXBlcy9pbnB1dC10eXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgdHlwZSBDdWlJbnB1dFR5cGUgPSAndGV4dCcgfCAncGFzc3dvcmQnO1xuIl19
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVsbGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdHlwZXMvbnVsbGFibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEN1aU51bGxhYmxlPFQ+ID0gVCB8IG51bGw7XG4iXX0=
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, inject, ElementRef, Directive, HostListener } from '@angular/core';
|
|
3
|
+
import { NgControl, NgModel } from '@angular/forms';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
class CuiDestroyService extends Subject {
|
|
7
|
+
ngOnDestroy() {
|
|
8
|
+
this.next();
|
|
9
|
+
this.complete();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
CuiDestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
+
CuiDestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService, decorators: [{
|
|
15
|
+
type: Injectable
|
|
16
|
+
}] });
|
|
17
|
+
|
|
18
|
+
class CuiAutoResizingDirective {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.element = inject(ElementRef).nativeElement;
|
|
21
|
+
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
22
|
+
this.ngModel = inject(NgModel, { self: true, optional: true });
|
|
23
|
+
this.destroy$ = inject(CuiDestroyService, { self: true });
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.initNgControlValueChangeSubscription();
|
|
27
|
+
this.initNgModelValueChangeSubscription();
|
|
28
|
+
}
|
|
29
|
+
ngAfterViewInit() {
|
|
30
|
+
this.initHiddenOverflow();
|
|
31
|
+
}
|
|
32
|
+
// TODO: Бьёт по производительности - найти решение получше
|
|
33
|
+
ngAfterViewChecked() {
|
|
34
|
+
this.resize();
|
|
35
|
+
}
|
|
36
|
+
onInput() {
|
|
37
|
+
this.resize();
|
|
38
|
+
}
|
|
39
|
+
initNgControlValueChangeSubscription() {
|
|
40
|
+
if (!this.ngControl) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.ngControl.valueChanges
|
|
44
|
+
.pipe(takeUntil(this.destroy$))
|
|
45
|
+
.subscribe(this.resize.bind(this));
|
|
46
|
+
}
|
|
47
|
+
initNgModelValueChangeSubscription() {
|
|
48
|
+
if (!this.ngModel) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.ngModel.valueChanges
|
|
52
|
+
.pipe(takeUntil(this.destroy$))
|
|
53
|
+
.subscribe(this.resize.bind(this));
|
|
54
|
+
}
|
|
55
|
+
initHiddenOverflow() {
|
|
56
|
+
this.element.style.overflow = 'hidden';
|
|
57
|
+
}
|
|
58
|
+
resize() {
|
|
59
|
+
this.element.style.height = 'auto';
|
|
60
|
+
this.element.style.height = this.element.scrollHeight + 'px';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
CuiAutoResizingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiAutoResizingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
64
|
+
CuiAutoResizingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CuiAutoResizingDirective, isStandalone: true, selector: "textarea[cuiAutoResizing]", host: { listeners: { "input": "onInput()" } }, providers: [CuiDestroyService], ngImport: i0 });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiAutoResizingDirective, decorators: [{
|
|
66
|
+
type: Directive,
|
|
67
|
+
args: [{
|
|
68
|
+
standalone: true,
|
|
69
|
+
selector: 'textarea[cuiAutoResizing]',
|
|
70
|
+
providers: [CuiDestroyService]
|
|
71
|
+
}]
|
|
72
|
+
}], propDecorators: { onInput: [{
|
|
73
|
+
type: HostListener,
|
|
74
|
+
args: ['input']
|
|
75
|
+
}] } });
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Generated bundle index. Do not edit.
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
export { CuiAutoResizingDirective, CuiDestroyService };
|
|
82
|
+
//# sourceMappingURL=cuby-ui-cdk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class CuiDestroyService extends Subject<void> implements OnDestroy {\n public ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n inject,\n OnInit\n} from '@angular/core';\nimport { NgControl, NgModel } from '@angular/forms';\nimport { takeUntil } from 'rxjs';\n\nimport { CuiDestroyService } from '../services';\n\n@Directive({\n standalone: true,\n selector: 'textarea[cuiAutoResizing]',\n providers: [CuiDestroyService]\n})\nexport class CuiAutoResizingDirective implements OnInit, AfterViewInit, AfterViewChecked {\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly ngModel = inject(NgModel, { self: true, optional: true });\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n public ngOnInit(): void {\n this.initNgControlValueChangeSubscription();\n this.initNgModelValueChangeSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.initHiddenOverflow();\n }\n\n // TODO: Бьёт по производительности - найти решение получше\n public ngAfterViewChecked(): void {\n this.resize();\n }\n\n @HostListener('input')\n protected onInput(): void {\n this.resize();\n }\n\n private initNgControlValueChangeSubscription(): void {\n if (!this.ngControl) {\n return;\n }\n\n this.ngControl.valueChanges!\n .pipe(takeUntil(this.destroy$))\n .subscribe(this.resize.bind(this));\n }\n\n private initNgModelValueChangeSubscription(): void {\n if (!this.ngModel) {\n return;\n }\n\n this.ngModel.valueChanges!\n .pipe(takeUntil(this.destroy$))\n .subscribe(this.resize.bind(this));\n }\n\n private initHiddenOverflow(): void {\n this.element.style.overflow = 'hidden';\n }\n\n private resize(): void {\n this.element.style.height = 'auto';\n this.element.style.height = this.element.scrollHeight + 'px';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Injectable, inject, ElementRef, Directive, HostListener } from '@angular/core';
|
|
3
|
+
import { NgControl, NgModel } from '@angular/forms';
|
|
4
|
+
import { Subject, takeUntil } from 'rxjs';
|
|
5
|
+
|
|
6
|
+
class CuiDestroyService extends Subject {
|
|
7
|
+
ngOnDestroy() {
|
|
8
|
+
this.next();
|
|
9
|
+
this.complete();
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
CuiDestroyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService, deps: null, target: i0.ɵɵFactoryTarget.Injectable });
|
|
13
|
+
CuiDestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService });
|
|
14
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService, decorators: [{
|
|
15
|
+
type: Injectable
|
|
16
|
+
}] });
|
|
17
|
+
|
|
18
|
+
class CuiAutoResizingDirective {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.element = inject(ElementRef).nativeElement;
|
|
21
|
+
this.ngControl = inject(NgControl, { self: true, optional: true });
|
|
22
|
+
this.ngModel = inject(NgModel, { self: true, optional: true });
|
|
23
|
+
this.destroy$ = inject(CuiDestroyService, { self: true });
|
|
24
|
+
}
|
|
25
|
+
ngOnInit() {
|
|
26
|
+
this.initNgControlValueChangeSubscription();
|
|
27
|
+
this.initNgModelValueChangeSubscription();
|
|
28
|
+
}
|
|
29
|
+
ngAfterViewInit() {
|
|
30
|
+
this.initHiddenOverflow();
|
|
31
|
+
}
|
|
32
|
+
// TODO: Бьёт по производительности - найти решение получше
|
|
33
|
+
ngAfterViewChecked() {
|
|
34
|
+
this.resize();
|
|
35
|
+
}
|
|
36
|
+
onInput() {
|
|
37
|
+
this.resize();
|
|
38
|
+
}
|
|
39
|
+
initNgControlValueChangeSubscription() {
|
|
40
|
+
if (!this.ngControl) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
this.ngControl.valueChanges
|
|
44
|
+
.pipe(takeUntil(this.destroy$))
|
|
45
|
+
.subscribe(this.resize.bind(this));
|
|
46
|
+
}
|
|
47
|
+
initNgModelValueChangeSubscription() {
|
|
48
|
+
if (!this.ngModel) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
this.ngModel.valueChanges
|
|
52
|
+
.pipe(takeUntil(this.destroy$))
|
|
53
|
+
.subscribe(this.resize.bind(this));
|
|
54
|
+
}
|
|
55
|
+
initHiddenOverflow() {
|
|
56
|
+
this.element.style.overflow = 'hidden';
|
|
57
|
+
}
|
|
58
|
+
resize() {
|
|
59
|
+
this.element.style.height = 'auto';
|
|
60
|
+
this.element.style.height = this.element.scrollHeight + 'px';
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
CuiAutoResizingDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiAutoResizingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
64
|
+
CuiAutoResizingDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CuiAutoResizingDirective, isStandalone: true, selector: "textarea[cuiAutoResizing]", host: { listeners: { "input": "onInput()" } }, providers: [CuiDestroyService], ngImport: i0 });
|
|
65
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiAutoResizingDirective, decorators: [{
|
|
66
|
+
type: Directive,
|
|
67
|
+
args: [{
|
|
68
|
+
standalone: true,
|
|
69
|
+
selector: 'textarea[cuiAutoResizing]',
|
|
70
|
+
providers: [CuiDestroyService]
|
|
71
|
+
}]
|
|
72
|
+
}], propDecorators: { onInput: [{
|
|
73
|
+
type: HostListener,
|
|
74
|
+
args: ['input']
|
|
75
|
+
}] } });
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* Generated bundle index. Do not edit.
|
|
79
|
+
*/
|
|
80
|
+
|
|
81
|
+
export { CuiAutoResizingDirective, CuiDestroyService };
|
|
82
|
+
//# sourceMappingURL=cuby-ui-cdk.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject } from 'rxjs';\n\n@Injectable()\nexport class CuiDestroyService extends Subject<void> implements OnDestroy {\n public ngOnDestroy(): void {\n this.next();\n this.complete();\n }\n}\n","import {\n AfterViewChecked,\n AfterViewInit,\n Directive,\n ElementRef,\n HostListener,\n inject,\n OnInit\n} from '@angular/core';\nimport { NgControl, NgModel } from '@angular/forms';\nimport { takeUntil } from 'rxjs';\n\nimport { CuiDestroyService } from '../services';\n\n@Directive({\n standalone: true,\n selector: 'textarea[cuiAutoResizing]',\n providers: [CuiDestroyService]\n})\nexport class CuiAutoResizingDirective implements OnInit, AfterViewInit, AfterViewChecked {\n private readonly element = inject(ElementRef).nativeElement as HTMLElement;\n private readonly ngControl = inject(NgControl, { self: true, optional: true });\n private readonly ngModel = inject(NgModel, { self: true, optional: true });\n private readonly destroy$ = inject(CuiDestroyService, { self: true });\n\n public ngOnInit(): void {\n this.initNgControlValueChangeSubscription();\n this.initNgModelValueChangeSubscription();\n }\n\n public ngAfterViewInit(): void {\n this.initHiddenOverflow();\n }\n\n // TODO: Бьёт по производительности - найти решение получше\n public ngAfterViewChecked(): void {\n this.resize();\n }\n\n @HostListener('input')\n protected onInput(): void {\n this.resize();\n }\n\n private initNgControlValueChangeSubscription(): void {\n if (!this.ngControl) {\n return;\n }\n\n this.ngControl.valueChanges!\n .pipe(takeUntil(this.destroy$))\n .subscribe(this.resize.bind(this));\n }\n\n private initNgModelValueChangeSubscription(): void {\n if (!this.ngModel) {\n return;\n }\n\n this.ngModel.valueChanges!\n .pipe(takeUntil(this.destroy$))\n .subscribe(this.resize.bind(this));\n }\n\n private initHiddenOverflow(): void {\n this.element.style.overflow = 'hidden';\n }\n\n private resize(): void {\n this.element.style.height = 'auto';\n this.element.style.height = this.element.scrollHeight + 'px';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
package/index.d.ts
ADDED
package/package.json
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cuby-ui/cdk",
|
|
3
|
+
"version": "0.0.6",
|
|
4
|
+
"peerDependencies": {
|
|
5
|
+
"@angular/common": ">=15.0.0",
|
|
6
|
+
"@angular/core": ">=15.0.0",
|
|
7
|
+
"@angular/forms": ">=15.0.0",
|
|
8
|
+
"rxjs": ">=7.0.0"
|
|
9
|
+
},
|
|
10
|
+
"dependencies": {
|
|
11
|
+
"tslib": "^2.3.0"
|
|
12
|
+
},
|
|
13
|
+
"sideEffects": false,
|
|
14
|
+
"module": "fesm2015/cuby-ui-cdk.mjs",
|
|
15
|
+
"es2020": "fesm2020/cuby-ui-cdk.mjs",
|
|
16
|
+
"esm2020": "esm2020/cuby-ui-cdk.mjs",
|
|
17
|
+
"fesm2020": "fesm2020/cuby-ui-cdk.mjs",
|
|
18
|
+
"fesm2015": "fesm2015/cuby-ui-cdk.mjs",
|
|
19
|
+
"typings": "index.d.ts",
|
|
20
|
+
"exports": {
|
|
21
|
+
"./package.json": {
|
|
22
|
+
"default": "./package.json"
|
|
23
|
+
},
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./index.d.ts",
|
|
26
|
+
"esm2020": "./esm2020/cuby-ui-cdk.mjs",
|
|
27
|
+
"es2020": "./fesm2020/cuby-ui-cdk.mjs",
|
|
28
|
+
"es2015": "./fesm2015/cuby-ui-cdk.mjs",
|
|
29
|
+
"node": "./fesm2015/cuby-ui-cdk.mjs",
|
|
30
|
+
"default": "./fesm2020/cuby-ui-cdk.mjs"
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { OnDestroy } from '@angular/core';
|
|
2
|
+
import { Subject } from 'rxjs';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class CuiDestroyService extends Subject<void> implements OnDestroy {
|
|
5
|
+
ngOnDestroy(): void;
|
|
6
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CuiDestroyService, never>;
|
|
7
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<CuiDestroyService>;
|
|
8
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './destroy.service';
|
package/types/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type CuiInputType = 'text' | 'password';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type CuiNullable<T> = T | null;
|