@cuby-ui/cdk 0.0.13 → 0.0.15

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.
@@ -0,0 +1,8 @@
1
+ import { ElementRef } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class CuiElementDirective<T extends Element = HTMLElement> implements ElementRef<T> {
4
+ nativeElement: any;
5
+ constructor();
6
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiElementDirective<any>, never>;
7
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CuiElementDirective<any>, "[cuiElement]", ["elementRef"], {}, {}, never, never, true, never>;
8
+ }
@@ -1 +1,2 @@
1
1
  export * from './auto-resizing.directive';
2
+ export * from './element.directive';
@@ -0,0 +1,19 @@
1
+ import { Directive, ElementRef, inject } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class CuiElementDirective {
4
+ constructor() {
5
+ this.nativeElement = inject((ElementRef)).nativeElement;
6
+ return new ElementRef(this.nativeElement);
7
+ }
8
+ }
9
+ CuiElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
10
+ CuiElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CuiElementDirective, isStandalone: true, selector: "[cuiElement]", exportAs: ["elementRef"], ngImport: i0 });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiElementDirective, decorators: [{
12
+ type: Directive,
13
+ args: [{
14
+ standalone: true,
15
+ selector: '[cuiElement]',
16
+ exportAs: 'elementRef',
17
+ }]
18
+ }], ctorParameters: function () { return []; } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWxlbWVudC5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9lbGVtZW50LmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBTzlELE1BQU0sT0FBTyxtQkFBbUI7SUFHOUI7UUFGTyxrQkFBYSxHQUFHLE1BQU0sQ0FBQyxDQUFBLFVBQWEsQ0FBQSxDQUFDLENBQUMsYUFBYSxDQUFDO1FBR3pELE9BQU8sSUFBSSxVQUFVLENBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQy9DLENBQUM7O2lIQUxVLG1CQUFtQjtxR0FBbkIsbUJBQW1COzRGQUFuQixtQkFBbUI7a0JBTC9CLFNBQVM7bUJBQUM7b0JBQ1QsVUFBVSxFQUFFLElBQUk7b0JBQ2hCLFFBQVEsRUFBRSxjQUFjO29CQUN4QixRQUFRLEVBQUUsWUFBWTtpQkFDdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ARGlyZWN0aXZlKHtcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgc2VsZWN0b3I6ICdbY3VpRWxlbWVudF0nLFxuICBleHBvcnRBczogJ2VsZW1lbnRSZWYnLFxufSlcbmV4cG9ydCBjbGFzcyBDdWlFbGVtZW50RGlyZWN0aXZlPFQgZXh0ZW5kcyBFbGVtZW50ID0gSFRNTEVsZW1lbnQ+IGltcGxlbWVudHMgRWxlbWVudFJlZjxUPiB7XG4gIHB1YmxpYyBuYXRpdmVFbGVtZW50ID0gaW5qZWN0KEVsZW1lbnRSZWY8VD4pLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgcmV0dXJuIG5ldyBFbGVtZW50UmVmPFQ+KHRoaXMubmF0aXZlRWxlbWVudCk7XG4gIH1cbn1cbiJdfQ==
@@ -1,2 +1,3 @@
1
1
  export * from './auto-resizing.directive';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvLXJlc2l6aW5nLmRpcmVjdGl2ZSc7XG4iXX0=
2
+ export * from './element.directive';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvZGlyZWN0aXZlcy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLDJCQUEyQixDQUFDO0FBQzFDLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2F1dG8tcmVzaXppbmcuZGlyZWN0aXZlJztcbmV4cG9ydCAqIGZyb20gJy4vZWxlbWVudC5kaXJlY3RpdmUnO1xuIl19
@@ -12,4 +12,4 @@ CuiDestroyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", ve
12
12
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiDestroyService, decorators: [{
13
13
  type: Injectable
14
14
  }] });
15
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NlcnZpY2VzL2Rlc3Ryb3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFhLE1BQU0sZUFBZSxDQUFDO0FBQ3RELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxPQUFhO0lBQzNDLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7OytHQUpVLGlCQUFpQjttSEFBakIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBPbkRlc3Ryb3kgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEN1aURlc3Ryb3lTZXJ2aWNlIGV4dGVuZHMgU3ViamVjdDx2b2lkPiBpbXBsZW1lbnRzIE9uRGVzdHJveSB7XG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLm5leHQoKTtcbiAgICB0aGlzLmNvbXBsZXRlKCk7XG4gIH1cbn1cbiJdfQ==
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdHJveS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NlcnZpY2VzL2Rlc3Ryb3kuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7O0FBRy9CLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxPQUFhO0lBQzNDLFdBQVc7UUFDaEIsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xCLENBQUM7OytHQUpVLGlCQUFpQjttSEFBakIsaUJBQWlCOzRGQUFqQixpQkFBaUI7a0JBRDdCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE9uRGVzdHJveSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gJ3J4anMnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgQ3VpRGVzdHJveVNlcnZpY2UgZXh0ZW5kcyBTdWJqZWN0PHZvaWQ+IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMubmV4dCgpO1xuICAgIHRoaXMuY29tcGxldGUoKTtcbiAgfVxufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { Injectable } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ const CUI = 'cui_';
4
+ export class CuiIdService {
5
+ generate() {
6
+ return `${CUI}${CuiIdService.autoId++}${Date.now()}`;
7
+ }
8
+ }
9
+ CuiIdService.autoId = 0;
10
+ CuiIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
11
+ CuiIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, providedIn: 'root' });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, decorators: [{
13
+ type: Injectable,
14
+ args: [{
15
+ providedIn: 'root'
16
+ }]
17
+ }] });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWQuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zZXJ2aWNlcy9pZC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRTNDLE1BQU0sR0FBRyxHQUFHLE1BQU0sQ0FBQztBQUtuQixNQUFNLE9BQU8sWUFBWTtJQUdoQixRQUFRO1FBQ2IsT0FBTyxHQUFHLEdBQUcsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7SUFDdkQsQ0FBQzs7QUFKYyxtQkFBTSxHQUFHLENBQUMsQ0FBQzswR0FEZixZQUFZOzhHQUFaLFlBQVksY0FGWCxNQUFNOzRGQUVQLFlBQVk7a0JBSHhCLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5jb25zdCBDVUkgPSAnY3VpXyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIEN1aUlkU2VydmljZSB7XG4gIHByaXZhdGUgc3RhdGljIGF1dG9JZCA9IDA7XG5cbiAgcHVibGljIGdlbmVyYXRlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke0NVSX0ke0N1aUlkU2VydmljZS5hdXRvSWQrK30ke0RhdGUubm93KCl9YDtcbiAgfVxufVxuIl19
@@ -1,2 +1,3 @@
1
1
  export * from './destroy.service';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGVzdHJveS5zZXJ2aWNlJztcbiJdfQ==
2
+ export * from './popover.service';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc2VydmljZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxtQkFBbUIsQ0FBQztBQUNsQyxjQUFjLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9kZXN0cm95LnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wb3BvdmVyLnNlcnZpY2UnO1xuIl19
@@ -0,0 +1,34 @@
1
+ import { inject, Injectable } from '@angular/core';
2
+ import { Observable } from 'rxjs';
3
+ import { CuiIdService } from './id.service';
4
+ import * as i0 from "@angular/core";
5
+ export class CuiPopoverService {
6
+ constructor(items, component, options = {}) {
7
+ this.options = options;
8
+ this.cuiIdService = inject(CuiIdService);
9
+ this.items$ = inject(items);
10
+ this.component = component;
11
+ }
12
+ open(content, options = {}) {
13
+ return new Observable(observer => {
14
+ const item = {
15
+ ...this.options,
16
+ ...options,
17
+ $implicit: observer,
18
+ id: this.cuiIdService.generate(),
19
+ component: this.component,
20
+ content: content
21
+ };
22
+ this.items$.next([...this.items$.value, item]);
23
+ return () => {
24
+ this.items$.next(this.items$.value.filter(value => value !== item));
25
+ };
26
+ });
27
+ }
28
+ }
29
+ CuiPopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
30
+ CuiPopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService, decorators: [{
32
+ type: Injectable
33
+ }], ctorParameters: function () { return [{ type: undefined }, { type: i0.Type }, { type: undefined }]; } });
34
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG9wb3Zlci5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3NlcnZpY2VzL3BvcG92ZXIuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFFckYsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFDOztBQVk1QyxNQUFNLE9BQWdCLGlCQUFpQjtJQUtyQyxZQUNFLEtBQW1FLEVBQ25FLFNBQW9CLEVBQ0gsVUFBYSxFQUFPO1FBQXBCLFlBQU8sR0FBUCxPQUFPLENBQWE7UUFQdEIsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFTbkQsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDN0IsQ0FBQztJQUVNLElBQUksQ0FDVCxPQUFxQyxFQUNyQyxVQUFzQixFQUFFO1FBRXhCLE9BQU8sSUFBSSxVQUFVLENBQUMsUUFBUSxDQUFDLEVBQUU7WUFDL0IsTUFBTSxJQUFJLEdBQWtCO2dCQUMxQixHQUFHLElBQUksQ0FBQyxPQUFPO2dCQUNmLEdBQUcsT0FBTztnQkFDVixTQUFTLEVBQUUsUUFBUTtnQkFDbkIsRUFBRSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFO2dCQUNoQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7Z0JBQ3pCLE9BQU8sRUFBRSxPQUFPO2FBQ2pCLENBQUM7WUFFRixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUUvQyxPQUFPLEdBQUcsRUFBRTtnQkFDVixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQztZQUN0RSxDQUFDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OytHQWxDbUIsaUJBQWlCO21IQUFqQixpQkFBaUI7NEZBQWpCLGlCQUFpQjtrQkFEdEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCwgSW5qZWN0YWJsZSwgUHJvdmlkZXJUb2tlbiwgVGVtcGxhdGVSZWYsIFR5cGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB0eXBlIHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZlciB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBDdWlJZFNlcnZpY2UgfSBmcm9tICcuL2lkLnNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEN1aVBvcG92ZXJDb250ZXh0IHtcbiAgcmVhZG9ubHkgJGltcGxpY2l0OiBPYnNlcnZlcjxhbnk+O1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBjb21wb25lbnQ6IFR5cGU8dW5rbm93bj47XG4gIHJlYWRvbmx5IGNvbnRlbnQ6IFR5cGU8dW5rbm93bj4gfCBUZW1wbGF0ZVJlZjx1bmtub3duPjtcbn1cblxuZXhwb3J0IHR5cGUgQ3VpUG9wb3ZlcjxUPiA9IFQgJiBDdWlQb3BvdmVyQ29udGV4dDtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEN1aVBvcG92ZXJTZXJ2aWNlPFQ+IHtcbiAgcHJpdmF0ZSByZWFkb25seSBjdWlJZFNlcnZpY2UgPSBpbmplY3QoQ3VpSWRTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByZWFkb25seSBpdGVtcyQ6IEJlaGF2aW9yU3ViamVjdDxSZWFkb25seUFycmF5PEN1aVBvcG92ZXI8VD4+PjtcbiAgcHJpdmF0ZSByZWFkb25seSBjb21wb25lbnQ6IFR5cGU8YW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBpdGVtczogUHJvdmlkZXJUb2tlbjxCZWhhdmlvclN1YmplY3Q8UmVhZG9ubHlBcnJheTxDdWlQb3BvdmVyPFQ+Pj4+LFxuICAgIGNvbXBvbmVudDogVHlwZTxhbnk+LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogVCA9IHt9IGFzIFRcbiAgKSB7XG4gICAgdGhpcy5pdGVtcyQgPSBpbmplY3QoaXRlbXMpO1xuICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICB9XG5cbiAgcHVibGljIG9wZW4oXG4gICAgY29udGVudDogQ3VpUG9wb3ZlckNvbnRleHRbJ2NvbnRlbnQnXSxcbiAgICBvcHRpb25zOiBQYXJ0aWFsPFQ+ID0ge31cbiAgKTogT2JzZXJ2YWJsZTx2b2lkPiB7XG4gICAgcmV0dXJuIG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIGNvbnN0IGl0ZW06IEN1aVBvcG92ZXI8VD4gPSB7XG4gICAgICAgIC4uLnRoaXMub3B0aW9ucyxcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgJGltcGxpY2l0OiBvYnNlcnZlcixcbiAgICAgICAgaWQ6IHRoaXMuY3VpSWRTZXJ2aWNlLmdlbmVyYXRlKCksXG4gICAgICAgIGNvbXBvbmVudDogdGhpcy5jb21wb25lbnQsXG4gICAgICAgIGNvbnRlbnQ6IGNvbnRlbnRcbiAgICAgIH07XG5cbiAgICAgIHRoaXMuaXRlbXMkLm5leHQoWy4uLnRoaXMuaXRlbXMkLnZhbHVlLCBpdGVtXSk7XG5cbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIHRoaXMuaXRlbXMkLm5leHQodGhpcy5pdGVtcyQudmFsdWUuZmlsdGVyKHZhbHVlID0+IHZhbHVlICE9PSBpdGVtKSk7XG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,2 +1,2 @@
1
- export * from './provide';
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxXQUFXLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Byb3ZpZGUnO1xuIl19
1
+ export * from './token';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3Rva2VuJztcbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export function cuiCreateToken(defaults) {
3
+ return cuiCreateTokenFromFactory(() => defaults);
4
+ }
5
+ export function cuiCreateTokenFromFactory(factory) {
6
+ return new InjectionToken('', { factory });
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlLXRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2RrL3V0aWxzL3Rva2VuL2NyZWF0ZS10b2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRS9DLE1BQU0sVUFBVSxjQUFjLENBQUksUUFBVztJQUMzQyxPQUFPLHlCQUF5QixDQUFDLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFFRCxNQUFNLFVBQVUseUJBQXlCLENBQUksT0FBZ0I7SUFDM0QsT0FBTyxJQUFJLGNBQWMsQ0FBSSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQ2hELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3Rpb25Ub2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VpQ3JlYXRlVG9rZW48VD4oZGVmYXVsdHM6IFQpOiBJbmplY3Rpb25Ub2tlbjxUPiB7XG4gIHJldHVybiBjdWlDcmVhdGVUb2tlbkZyb21GYWN0b3J5KCgpID0+IGRlZmF1bHRzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGN1aUNyZWF0ZVRva2VuRnJvbUZhY3Rvcnk8VD4oZmFjdG9yeTogKCkgPT4gVCk6IEluamVjdGlvblRva2VuPFQ+IHtcbiAgcmV0dXJuIG5ldyBJbmplY3Rpb25Ub2tlbjxUPignJywgeyBmYWN0b3J5IH0pO1xufVxuIl19
@@ -0,0 +1,3 @@
1
+ export * from './create-token';
2
+ export * from './provide';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvdXRpbHMvdG9rZW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vY3JlYXRlLXRva2VuJztcbmV4cG9ydCAqIGZyb20gJy4vcHJvdmlkZSc7XG4iXX0=
@@ -0,0 +1,4 @@
1
+ export function cuiProvide(provide, useExisting, multi = false) {
2
+ return { provide, useExisting, multi };
3
+ }
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy90b2tlbi9wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sVUFBVSxVQUFVLENBQ3hCLE9BQXlCLEVBQ3pCLFdBQTZCLEVBQzdCLEtBQUssR0FBRyxLQUFLO0lBRWIsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRXhpc3RpbmdQcm92aWRlciwgUHJvdmlkZXJUb2tlbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3VpUHJvdmlkZTxUPihcbiAgcHJvdmlkZTogUHJvdmlkZXJUb2tlbjxUPixcbiAgdXNlRXhpc3Rpbmc6IFByb3ZpZGVyVG9rZW48VD4sXG4pOiBFeGlzdGluZ1Byb3ZpZGVyO1xuZXhwb3J0IGZ1bmN0aW9uIGN1aVByb3ZpZGU8VD4oXG4gIHByb3ZpZGU6IFByb3ZpZGVyVG9rZW48VCB8IFRbXT4sXG4gIHVzZUV4aXN0aW5nOiBQcm92aWRlclRva2VuPFQ+LFxuICBtdWx0aTogYm9vbGVhbixcbik6IEV4aXN0aW5nUHJvdmlkZXI7XG5leHBvcnQgZnVuY3Rpb24gY3VpUHJvdmlkZTxUPihcbiAgcHJvdmlkZTogUHJvdmlkZXJUb2tlbjxUPixcbiAgdXNlRXhpc3Rpbmc6IFByb3ZpZGVyVG9rZW48VD4sXG4gIG11bHRpID0gZmFsc2UsXG4pOiBFeGlzdGluZ1Byb3ZpZGVyIHtcbiAgcmV0dXJuIHsgcHJvdmlkZSwgdXNlRXhpc3RpbmcsIG11bHRpIH07XG59XG4iXX0=
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, ElementRef, Directive, HostListener } from '@angular/core';
2
+ import { Injectable, inject, ElementRef, Directive, HostListener, InjectionToken } from '@angular/core';
3
3
  import { NgControl, NgModel } from '@angular/forms';
4
- import { Subject, takeUntil } from 'rxjs';
4
+ import { Subject, Observable, takeUntil } from 'rxjs';
5
5
 
6
6
  class CuiDestroyService extends Subject {
7
7
  ngOnDestroy() {
@@ -15,6 +15,45 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
15
15
  type: Injectable
16
16
  }] });
17
17
 
18
+ const CUI = 'cui_';
19
+ class CuiIdService {
20
+ generate() {
21
+ return `${CUI}${CuiIdService.autoId++}${Date.now()}`;
22
+ }
23
+ }
24
+ CuiIdService.autoId = 0;
25
+ CuiIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
+ CuiIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, providedIn: 'root' });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, decorators: [{
28
+ type: Injectable,
29
+ args: [{
30
+ providedIn: 'root'
31
+ }]
32
+ }] });
33
+
34
+ class CuiPopoverService {
35
+ constructor(items, component, options = {}) {
36
+ this.options = options;
37
+ this.cuiIdService = inject(CuiIdService);
38
+ this.items$ = inject(items);
39
+ this.component = component;
40
+ }
41
+ open(content, options = {}) {
42
+ return new Observable(observer => {
43
+ const item = Object.assign(Object.assign(Object.assign({}, this.options), options), { $implicit: observer, id: this.cuiIdService.generate(), component: this.component, content: content });
44
+ this.items$.next([...this.items$.value, item]);
45
+ return () => {
46
+ this.items$.next(this.items$.value.filter(value => value !== item));
47
+ };
48
+ });
49
+ }
50
+ }
51
+ CuiPopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
52
+ CuiPopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService });
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService, decorators: [{
54
+ type: Injectable
55
+ }], ctorParameters: function () { return [{ type: undefined }, { type: i0.Type }, { type: undefined }]; } });
56
+
18
57
  class CuiAutoResizingDirective {
19
58
  constructor() {
20
59
  this.element = inject(ElementRef).nativeElement;
@@ -74,6 +113,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
74
113
  args: ['input']
75
114
  }] } });
76
115
 
116
+ class CuiElementDirective {
117
+ constructor() {
118
+ this.nativeElement = inject((ElementRef)).nativeElement;
119
+ return new ElementRef(this.nativeElement);
120
+ }
121
+ }
122
+ CuiElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
123
+ CuiElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CuiElementDirective, isStandalone: true, selector: "[cuiElement]", exportAs: ["elementRef"], ngImport: i0 });
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiElementDirective, decorators: [{
125
+ type: Directive,
126
+ args: [{
127
+ standalone: true,
128
+ selector: '[cuiElement]',
129
+ exportAs: 'elementRef',
130
+ }]
131
+ }], ctorParameters: function () { return []; } });
132
+
133
+ function cuiCreateToken(defaults) {
134
+ return cuiCreateTokenFromFactory(() => defaults);
135
+ }
136
+ function cuiCreateTokenFromFactory(factory) {
137
+ return new InjectionToken('', { factory });
138
+ }
139
+
77
140
  function cuiProvide(provide, useExisting, multi = false) {
78
141
  return { provide, useExisting, multi };
79
142
  }
@@ -82,5 +145,5 @@ function cuiProvide(provide, useExisting, multi = false) {
82
145
  * Generated bundle index. Do not edit.
83
146
  */
84
147
 
85
- export { CuiAutoResizingDirective, CuiDestroyService, cuiProvide };
148
+ export { CuiAutoResizingDirective, CuiDestroyService, CuiElementDirective, CuiPopoverService, cuiCreateToken, cuiCreateTokenFromFactory, cuiProvide };
86
149
  //# sourceMappingURL=cuby-ui-cdk.mjs.map
@@ -1 +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/utils/provide.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","import { ExistingProvider, ProviderToken } from '@angular/core';\n\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return { provide, useExisting, multi };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/directives/element.directive.ts","../../../projects/cdk/utils/token/create-token.ts","../../../projects/cdk/utils/token/provide.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import type { OnDestroy } from '@angular/core';\nimport { Injectable } 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 { Injectable } from '@angular/core';\n\nconst CUI = 'cui_';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiIdService {\n private static autoId = 0;\n\n public generate(): string {\n return `${CUI}${CuiIdService.autoId++}${Date.now()}`;\n }\n}\n","import { inject, Injectable, ProviderToken, TemplateRef, Type } from '@angular/core';\nimport type { BehaviorSubject, Observer } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nimport { CuiIdService } from './id.service';\n\nexport interface CuiPopoverContext {\n readonly $implicit: Observer<any>;\n readonly id: string;\n readonly component: Type<unknown>;\n readonly content: Type<unknown> | TemplateRef<unknown>;\n}\n\nexport type CuiPopover<T> = T & CuiPopoverContext;\n\n@Injectable()\nexport abstract class CuiPopoverService<T> {\n private readonly cuiIdService = inject(CuiIdService);\n private readonly items$: BehaviorSubject<ReadonlyArray<CuiPopover<T>>>;\n private readonly component: Type<any>;\n\n constructor(\n items: ProviderToken<BehaviorSubject<ReadonlyArray<CuiPopover<T>>>>,\n component: Type<any>,\n private readonly options: T = {} as T\n ) {\n this.items$ = inject(items);\n this.component = component;\n }\n\n public open(\n content: CuiPopoverContext['content'],\n options: Partial<T> = {}\n ): Observable<void> {\n return new Observable(observer => {\n const item: CuiPopover<T> = {\n ...this.options,\n ...options,\n $implicit: observer,\n id: this.cuiIdService.generate(),\n component: this.component,\n content: content\n };\n\n this.items$.next([...this.items$.value, item]);\n\n return () => {\n this.items$.next(this.items$.value.filter(value => value !== item));\n };\n });\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","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[cuiElement]',\n exportAs: 'elementRef',\n})\nexport class CuiElementDirective<T extends Element = HTMLElement> implements ElementRef<T> {\n public nativeElement = inject(ElementRef<T>).nativeElement;\n\n constructor() {\n return new ElementRef<T>(this.nativeElement);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport function cuiCreateToken<T>(defaults: T): InjectionToken<T> {\n return cuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function cuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\n return new InjectionToken<T>('', { factory });\n}\n","import type { ExistingProvider, ProviderToken } from '@angular/core';\n\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return { provide, useExisting, multi };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Injectable, inject, ElementRef, Directive, HostListener } from '@angular/core';
2
+ import { Injectable, inject, ElementRef, Directive, HostListener, InjectionToken } from '@angular/core';
3
3
  import { NgControl, NgModel } from '@angular/forms';
4
- import { Subject, takeUntil } from 'rxjs';
4
+ import { Subject, Observable, takeUntil } from 'rxjs';
5
5
 
6
6
  class CuiDestroyService extends Subject {
7
7
  ngOnDestroy() {
@@ -15,6 +15,52 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
15
15
  type: Injectable
16
16
  }] });
17
17
 
18
+ const CUI = 'cui_';
19
+ class CuiIdService {
20
+ generate() {
21
+ return `${CUI}${CuiIdService.autoId++}${Date.now()}`;
22
+ }
23
+ }
24
+ CuiIdService.autoId = 0;
25
+ CuiIdService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
26
+ CuiIdService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, providedIn: 'root' });
27
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiIdService, decorators: [{
28
+ type: Injectable,
29
+ args: [{
30
+ providedIn: 'root'
31
+ }]
32
+ }] });
33
+
34
+ class CuiPopoverService {
35
+ constructor(items, component, options = {}) {
36
+ this.options = options;
37
+ this.cuiIdService = inject(CuiIdService);
38
+ this.items$ = inject(items);
39
+ this.component = component;
40
+ }
41
+ open(content, options = {}) {
42
+ return new Observable(observer => {
43
+ const item = {
44
+ ...this.options,
45
+ ...options,
46
+ $implicit: observer,
47
+ id: this.cuiIdService.generate(),
48
+ component: this.component,
49
+ content: content
50
+ };
51
+ this.items$.next([...this.items$.value, item]);
52
+ return () => {
53
+ this.items$.next(this.items$.value.filter(value => value !== item));
54
+ };
55
+ });
56
+ }
57
+ }
58
+ CuiPopoverService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService, deps: "invalid", target: i0.ɵɵFactoryTarget.Injectable });
59
+ CuiPopoverService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService });
60
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiPopoverService, decorators: [{
61
+ type: Injectable
62
+ }], ctorParameters: function () { return [{ type: undefined }, { type: i0.Type }, { type: undefined }]; } });
63
+
18
64
  class CuiAutoResizingDirective {
19
65
  constructor() {
20
66
  this.element = inject(ElementRef).nativeElement;
@@ -74,6 +120,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
74
120
  args: ['input']
75
121
  }] } });
76
122
 
123
+ class CuiElementDirective {
124
+ constructor() {
125
+ this.nativeElement = inject((ElementRef)).nativeElement;
126
+ return new ElementRef(this.nativeElement);
127
+ }
128
+ }
129
+ CuiElementDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiElementDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
130
+ CuiElementDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "15.2.10", type: CuiElementDirective, isStandalone: true, selector: "[cuiElement]", exportAs: ["elementRef"], ngImport: i0 });
131
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: CuiElementDirective, decorators: [{
132
+ type: Directive,
133
+ args: [{
134
+ standalone: true,
135
+ selector: '[cuiElement]',
136
+ exportAs: 'elementRef',
137
+ }]
138
+ }], ctorParameters: function () { return []; } });
139
+
140
+ function cuiCreateToken(defaults) {
141
+ return cuiCreateTokenFromFactory(() => defaults);
142
+ }
143
+ function cuiCreateTokenFromFactory(factory) {
144
+ return new InjectionToken('', { factory });
145
+ }
146
+
77
147
  function cuiProvide(provide, useExisting, multi = false) {
78
148
  return { provide, useExisting, multi };
79
149
  }
@@ -82,5 +152,5 @@ function cuiProvide(provide, useExisting, multi = false) {
82
152
  * Generated bundle index. Do not edit.
83
153
  */
84
154
 
85
- export { CuiAutoResizingDirective, CuiDestroyService, cuiProvide };
155
+ export { CuiAutoResizingDirective, CuiDestroyService, CuiElementDirective, CuiPopoverService, cuiCreateToken, cuiCreateTokenFromFactory, cuiProvide };
86
156
  //# sourceMappingURL=cuby-ui-cdk.mjs.map
@@ -1 +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/utils/provide.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","import { ExistingProvider, ProviderToken } from '@angular/core';\n\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return { provide, useExisting, multi };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cuby-ui-cdk.mjs","sources":["../../../projects/cdk/services/destroy.service.ts","../../../projects/cdk/services/id.service.ts","../../../projects/cdk/services/popover.service.ts","../../../projects/cdk/directives/auto-resizing.directive.ts","../../../projects/cdk/directives/element.directive.ts","../../../projects/cdk/utils/token/create-token.ts","../../../projects/cdk/utils/token/provide.ts","../../../projects/cdk/cuby-ui-cdk.ts"],"sourcesContent":["import type { OnDestroy } from '@angular/core';\nimport { Injectable } 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 { Injectable } from '@angular/core';\n\nconst CUI = 'cui_';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CuiIdService {\n private static autoId = 0;\n\n public generate(): string {\n return `${CUI}${CuiIdService.autoId++}${Date.now()}`;\n }\n}\n","import { inject, Injectable, ProviderToken, TemplateRef, Type } from '@angular/core';\nimport type { BehaviorSubject, Observer } from 'rxjs';\nimport { Observable } from 'rxjs';\n\nimport { CuiIdService } from './id.service';\n\nexport interface CuiPopoverContext {\n readonly $implicit: Observer<any>;\n readonly id: string;\n readonly component: Type<unknown>;\n readonly content: Type<unknown> | TemplateRef<unknown>;\n}\n\nexport type CuiPopover<T> = T & CuiPopoverContext;\n\n@Injectable()\nexport abstract class CuiPopoverService<T> {\n private readonly cuiIdService = inject(CuiIdService);\n private readonly items$: BehaviorSubject<ReadonlyArray<CuiPopover<T>>>;\n private readonly component: Type<any>;\n\n constructor(\n items: ProviderToken<BehaviorSubject<ReadonlyArray<CuiPopover<T>>>>,\n component: Type<any>,\n private readonly options: T = {} as T\n ) {\n this.items$ = inject(items);\n this.component = component;\n }\n\n public open(\n content: CuiPopoverContext['content'],\n options: Partial<T> = {}\n ): Observable<void> {\n return new Observable(observer => {\n const item: CuiPopover<T> = {\n ...this.options,\n ...options,\n $implicit: observer,\n id: this.cuiIdService.generate(),\n component: this.component,\n content: content\n };\n\n this.items$.next([...this.items$.value, item]);\n\n return () => {\n this.items$.next(this.items$.value.filter(value => value !== item));\n };\n });\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","import { Directive, ElementRef, inject } from '@angular/core';\n\n@Directive({\n standalone: true,\n selector: '[cuiElement]',\n exportAs: 'elementRef',\n})\nexport class CuiElementDirective<T extends Element = HTMLElement> implements ElementRef<T> {\n public nativeElement = inject(ElementRef<T>).nativeElement;\n\n constructor() {\n return new ElementRef<T>(this.nativeElement);\n }\n}\n","import { InjectionToken } from '@angular/core';\n\nexport function cuiCreateToken<T>(defaults: T): InjectionToken<T> {\n return cuiCreateTokenFromFactory(() => defaults);\n}\n\nexport function cuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T> {\n return new InjectionToken<T>('', { factory });\n}\n","import type { ExistingProvider, ProviderToken } from '@angular/core';\n\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T | T[]>,\n useExisting: ProviderToken<T>,\n multi: boolean,\n): ExistingProvider;\nexport function cuiProvide<T>(\n provide: ProviderToken<T>,\n useExisting: ProviderToken<T>,\n multi = false,\n): ExistingProvider {\n return { provide, useExisting, multi };\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cuby-ui/cdk",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "peerDependencies": {
5
5
  "@angular/common": ">=15.0.0",
6
6
  "@angular/core": ">=15.0.0",
@@ -1,4 +1,4 @@
1
- import { OnDestroy } from '@angular/core';
1
+ import type { OnDestroy } from '@angular/core';
2
2
  import { Subject } from 'rxjs';
3
3
  import * as i0 from "@angular/core";
4
4
  export declare class CuiDestroyService extends Subject<void> implements OnDestroy {
@@ -0,0 +1,7 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class CuiIdService {
3
+ private static autoId;
4
+ generate(): string;
5
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiIdService, never>;
6
+ static ɵprov: i0.ɵɵInjectableDeclaration<CuiIdService>;
7
+ }
@@ -1 +1,2 @@
1
1
  export * from './destroy.service';
2
+ export * from './popover.service';
@@ -0,0 +1,21 @@
1
+ import { ProviderToken, TemplateRef, Type } from '@angular/core';
2
+ import type { BehaviorSubject, Observer } from 'rxjs';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export interface CuiPopoverContext {
6
+ readonly $implicit: Observer<any>;
7
+ readonly id: string;
8
+ readonly component: Type<unknown>;
9
+ readonly content: Type<unknown> | TemplateRef<unknown>;
10
+ }
11
+ export type CuiPopover<T> = T & CuiPopoverContext;
12
+ export declare abstract class CuiPopoverService<T> {
13
+ private readonly options;
14
+ private readonly cuiIdService;
15
+ private readonly items$;
16
+ private readonly component;
17
+ constructor(items: ProviderToken<BehaviorSubject<ReadonlyArray<CuiPopover<T>>>>, component: Type<any>, options?: T);
18
+ open(content: CuiPopoverContext['content'], options?: Partial<T>): Observable<void>;
19
+ static ɵfac: i0.ɵɵFactoryDeclaration<CuiPopoverService<any>, never>;
20
+ static ɵprov: i0.ɵɵInjectableDeclaration<CuiPopoverService<any>>;
21
+ }
package/utils/index.d.ts CHANGED
@@ -1 +1 @@
1
- export * from './provide';
1
+ export * from './token';
@@ -0,0 +1,3 @@
1
+ import { InjectionToken } from '@angular/core';
2
+ export declare function cuiCreateToken<T>(defaults: T): InjectionToken<T>;
3
+ export declare function cuiCreateTokenFromFactory<T>(factory: () => T): InjectionToken<T>;
@@ -0,0 +1,2 @@
1
+ export * from './create-token';
2
+ export * from './provide';
@@ -1,3 +1,3 @@
1
- import { ExistingProvider, ProviderToken } from '@angular/core';
1
+ import type { ExistingProvider, ProviderToken } from '@angular/core';
2
2
  export declare function cuiProvide<T>(provide: ProviderToken<T>, useExisting: ProviderToken<T>): ExistingProvider;
3
3
  export declare function cuiProvide<T>(provide: ProviderToken<T | T[]>, useExisting: ProviderToken<T>, multi: boolean): ExistingProvider;
@@ -1,4 +0,0 @@
1
- export function cuiProvide(provide, useExisting, multi = false) {
2
- return { provide, useExisting, multi };
3
- }
4
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvdmlkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay91dGlscy9wcm92aWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE1BQU0sVUFBVSxVQUFVLENBQ3hCLE9BQXlCLEVBQ3pCLFdBQTZCLEVBQzdCLEtBQUssR0FBRyxLQUFLO0lBRWIsT0FBTyxFQUFFLE9BQU8sRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLENBQUM7QUFDekMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV4aXN0aW5nUHJvdmlkZXIsIFByb3ZpZGVyVG9rZW4gfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuZXhwb3J0IGZ1bmN0aW9uIGN1aVByb3ZpZGU8VD4oXG4gIHByb3ZpZGU6IFByb3ZpZGVyVG9rZW48VD4sXG4gIHVzZUV4aXN0aW5nOiBQcm92aWRlclRva2VuPFQ+LFxuKTogRXhpc3RpbmdQcm92aWRlcjtcbmV4cG9ydCBmdW5jdGlvbiBjdWlQcm92aWRlPFQ+KFxuICBwcm92aWRlOiBQcm92aWRlclRva2VuPFQgfCBUW10+LFxuICB1c2VFeGlzdGluZzogUHJvdmlkZXJUb2tlbjxUPixcbiAgbXVsdGk6IGJvb2xlYW4sXG4pOiBFeGlzdGluZ1Byb3ZpZGVyO1xuZXhwb3J0IGZ1bmN0aW9uIGN1aVByb3ZpZGU8VD4oXG4gIHByb3ZpZGU6IFByb3ZpZGVyVG9rZW48VD4sXG4gIHVzZUV4aXN0aW5nOiBQcm92aWRlclRva2VuPFQ+LFxuICBtdWx0aSA9IGZhbHNlLFxuKTogRXhpc3RpbmdQcm92aWRlciB7XG4gIHJldHVybiB7IHByb3ZpZGUsIHVzZUV4aXN0aW5nLCBtdWx0aSB9O1xufVxuIl19