@sd-angular/core 1.0.67 → 1.0.70
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/bundles/sd-angular-core-grid-material.umd.js +50 -17
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-popover.umd.js +17 -1
- package/bundles/sd-angular-core-popover.umd.js.map +1 -1
- package/bundles/sd-angular-core-popover.umd.min.js +2 -2
- package/bundles/sd-angular-core-popover.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-setting.umd.js +30 -8
- package/bundles/sd-angular-core-setting.umd.js.map +1 -1
- package/bundles/sd-angular-core-setting.umd.min.js +1 -1
- package/bundles/sd-angular-core-setting.umd.min.js.map +1 -1
- package/esm2015/grid-material/src/lib/grid-material.component.js +16 -8
- package/esm2015/grid-material/src/lib/models/grid-action.model.js +1 -1
- package/esm2015/grid-material/src/lib/models/grid.model.js +1 -1
- package/esm2015/grid-material/src/lib/pipes/selection-visible.pipe.js +31 -6
- package/esm2015/popover/src/lib/popover/popover.component.js +19 -3
- package/esm2015/setting/src/lib/setting.service.js +31 -9
- package/fesm2015/sd-angular-core-grid-material.js +45 -12
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-popover.js +17 -1
- package/fesm2015/sd-angular-core-popover.js.map +1 -1
- package/fesm2015/sd-angular-core-setting.js +30 -8
- package/fesm2015/sd-angular-core-setting.js.map +1 -1
- package/grid-material/src/lib/grid-material.component.d.ts +1 -1
- package/grid-material/src/lib/models/grid-action.model.d.ts +2 -0
- package/grid-material/src/lib/models/grid.model.d.ts +4 -3
- package/package.json +1 -1
- package/popover/sd-angular-core-popover.metadata.json +1 -1
- package/popover/src/lib/popover/popover.component.d.ts +4 -2
- package/{sd-angular-core-1.0.67.tgz → sd-angular-core-1.0.70.tgz} +0 -0
|
@@ -24,6 +24,7 @@ class PopoverComponent {
|
|
|
24
24
|
this.panelClass = "";
|
|
25
25
|
this.width = "sm";
|
|
26
26
|
this.height = "auto";
|
|
27
|
+
this.type = "normal";
|
|
27
28
|
_xPosition.set(this, void 0);
|
|
28
29
|
this.closed = new EventEmitter();
|
|
29
30
|
this.close = () => {
|
|
@@ -80,6 +81,20 @@ class PopoverComponent {
|
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
83
|
}
|
|
84
|
+
ngOnChanges(changes) {
|
|
85
|
+
var _a;
|
|
86
|
+
if (changes.type) {
|
|
87
|
+
const type = changes.type.currentValue;
|
|
88
|
+
const preType = changes.type.previousValue;
|
|
89
|
+
const classes = (_a = this.classList) !== null && _a !== void 0 ? _a : {};
|
|
90
|
+
if (preType) {
|
|
91
|
+
classes[`sd-popover--${preType}`] = false;
|
|
92
|
+
}
|
|
93
|
+
if (type) {
|
|
94
|
+
classes[`sd-popover--${type}`] = true;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
83
98
|
ngOnInit() {
|
|
84
99
|
this.setPositionClasses();
|
|
85
100
|
this.width = this.width || "80vw";
|
|
@@ -110,7 +125,7 @@ PopoverComponent.decorators = [
|
|
|
110
125
|
encapsulation: ViewEncapsulation.None,
|
|
111
126
|
exportAs: "sdPopover",
|
|
112
127
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
113
|
-
styles: [".sd-popover-panel{
|
|
128
|
+
styles: [".text-black400{color:#757575}.sd-popover-panel{position:relative}.sd-popover-panel .sd-popover-arrow{clear:both;height:0;left:50%;position:absolute;width:0}.sd-popover-panel.sd-popover-above .sd-popover-arrow{border-color:#fff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%;transform:translateX(-6px) translateY(-1px)}.sd-popover-panel.sd-popover-above:after{content:\" \";display:block;height:16px;position:absolute;width:100%}.sd-popover-panel.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #fff;border-style:solid;border-width:0 12px 12px;bottom:100%;transform:translateX(-6px) translateY(1px)}.sd-popover-panel.sd-popover-below:before{content:\" \";display:block;height:16px;position:absolute;width:100%}.sd-popover--normal{background:#fff;color:#000}.sd-popover--normal.sd-popover-above .sd-popover-arrow{border-color:#fff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--normal.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #fff;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--primary{background:#e7e9ff;color:#2962ff}.sd-popover--primary.sd-popover-above .sd-popover-arrow{border-color:#e7e9ff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--primary.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #e7e9ff;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--info{background:#e7e9ff;color:#2962ff}.sd-popover--info.sd-popover-above .sd-popover-arrow{border-color:#e7e9ff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--info.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #e7e9ff;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--success{background:#dbefdc;color:#4caf50}.sd-popover--success.sd-popover-above .sd-popover-arrow{border-color:#dbefdc transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--success.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #dbefdc;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--warning{background:#ffeacc;color:#ff9600}.sd-popover--warning.sd-popover-above .sd-popover-arrow{border-color:#ffeacc transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--warning.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #ffeacc;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--danger{background:#fed5d0;color:#f82c13}.sd-popover--danger.sd-popover-above .sd-popover-arrow{border-color:#fed5d0 transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--danger.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #fed5d0;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover-content{padding:16px}"]
|
|
114
129
|
},] }
|
|
115
130
|
];
|
|
116
131
|
PopoverComponent.ctorParameters = () => [
|
|
@@ -123,6 +138,7 @@ PopoverComponent.propDecorators = {
|
|
|
123
138
|
panelClass: [{ type: Input }],
|
|
124
139
|
width: [{ type: Input }],
|
|
125
140
|
height: [{ type: Input }],
|
|
141
|
+
type: [{ type: Input }],
|
|
126
142
|
position: [{ type: Input }],
|
|
127
143
|
closed: [{ type: Output }],
|
|
128
144
|
_hostClick: [{ type: HostListener, args: ['document:click', ['$event.target'],] }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-popover.js","sources":["../../../../projects/sd-core/popover/src/lib/popover/popover.component.ts","../../../../projects/sd-core/popover/src/lib/directives/popover-trigger.directive.ts","../../../../projects/sd-core/popover/src/lib/popover.module.ts","../../../../projects/sd-core/popover/src/public-api.ts","../../../../projects/sd-core/popover/sd-angular-core-popover.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { Position } from \"../popover.model\";\r\nimport * as uuid from \"uuid\";\r\nimport { DeviceDetectorService } from \"ngx-device-detector\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { PopoverTriggerDirective } from \"../directives/popover-trigger.directive\";\r\n\r\nexport interface SdPopover {\r\n close: () => void;\r\n}\r\n\r\n@Component({\r\n selector: \"sd-popover\",\r\n templateUrl: \"./popover.component.html\",\r\n styleUrls: [\"./popover.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: \"sdPopover\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PopoverComponent implements SdPopover, OnInit, OnDestroy {\r\n classList: Record<string, boolean> = {};\r\n panelId = `sd-popover-panel-${uuid.v4()}`;\r\n isMobileOrTablet = false;\r\n mouseState$ = new BehaviorSubject<boolean>(false);\r\n trigger: PopoverTriggerDirective = null;\r\n\r\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\r\n @ViewChild(\"panel\") panel: ElementRef<HTMLDivElement>;\r\n\r\n @Input() panelClass: string = \"\";\r\n @Input() width: \"lg\" | \"md\" | \"sm\" | string = \"sm\";\r\n @Input() height: string = \"auto\";\r\n @Input()\r\n get position(): Position {\r\n return this.#xPosition;\r\n }\r\n set position(value: Position) {\r\n this.#xPosition = value;\r\n this.setPositionClasses();\r\n }\r\n #xPosition: Position;\r\n\r\n @Output() readonly closed = new EventEmitter<void>();\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n _hostClick(targetElement) {\r\n if (this.panel?.nativeElement) {\r\n const isInside = this.panel.nativeElement.contains(targetElement);\r\n if (!isInside) {\r\n this.setMouseState(false);\r\n }\r\n }\r\n }\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setPositionClasses();\r\n this.width = this.width || \"80vw\";\r\n if (!this.isMobileOrTablet) {\r\n switch (this.width) {\r\n case \"lg\":\r\n this.width = \"80vw\";\r\n break;\r\n case \"md\":\r\n this.width = \"60vw\";\r\n break;\r\n case \"sm\":\r\n this.width = \"40vw\";\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closed.complete();\r\n this.mouseState$.complete();\r\n }\r\n\r\n close = () => {\r\n this.mouseState$.next(false);\r\n this.closed.emit();\r\n };\r\n\r\n setPositionClasses = (pos: Position = this.position) => {\r\n const classes = this.classList;\r\n classes[\"sd-popover-above\"] = pos === \"above\";\r\n classes[\"sd-popover-below\"] = pos === \"below\";\r\n\r\n this.cdRef?.markForCheck();\r\n };\r\n\r\n addArrowTranslateX = (offset: number) => {\r\n const arrowElement: HTMLElement = document.querySelector(`#${this.panelId} .sd-popover-arrow`);\r\n if (arrowElement && offset) {\r\n try {\r\n const style = window.getComputedStyle(arrowElement);\r\n const matrix = new WebKitCSSMatrix(style.transform);\r\n const translateX = matrix.m41 + offset;\r\n const translateY = matrix.m42;\r\n arrowElement.style.transform = `translateX(${translateX}px) translateY(${translateY}px)`;\r\n } catch (error) {}\r\n }\r\n };\r\n\r\n setMouseState = (visible: boolean) => {\r\n if (!visible) {\r\n // chỉ được tắt khi đang không focus element nào bên trong panel\r\n // tránh lỗi có control mở overlay khiến cho mất mouseenter ở panel\r\n const activeElement = document.activeElement;\r\n const panelElement = this.panel.nativeElement;\r\n if (panelElement?.contains(activeElement)) {\r\n return;\r\n }\r\n }\r\n this.mouseState$.next(visible);\r\n };\r\n}\r\n","import { Directionality } from \"@angular/cdk/bidi\";\r\nimport {\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef,\r\n} from \"@angular/cdk/overlay\";\r\nimport { Platform } from \"@angular/cdk/platform\";\r\nimport { TemplatePortal } from \"@angular/cdk/portal\";\r\nimport {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n ViewContainerRef,\r\n} from \"@angular/core\";\r\nimport { fromEvent, merge, Subject, Subscription } from \"rxjs\";\r\nimport {\r\n auditTime,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n mapTo,\r\n takeUntil,\r\n tap,\r\n} from \"rxjs/operators\";\r\nimport { Position } from \"../popover.model\";\r\nimport { PopoverComponent } from \"../popover/popover.component\";\r\n\r\n@Directive({\r\n selector: \"[sdPopoverTriggerFor]\",\r\n host: {\r\n \"aria-haspopup\": \"true\",\r\n class: \"sd-popover-trigger\",\r\n },\r\n exportAs: \"sdPopoverTrigger\",\r\n})\r\nexport class PopoverTriggerDirective implements AfterViewInit, OnDestroy {\r\n #overlayRef: OverlayRef | null = null;\r\n #popoverClose$ = Subscription.EMPTY;\r\n #portal: TemplatePortal;\r\n #destroy$ = new Subject();\r\n\r\n popoverOpen = false;\r\n\r\n @Input(\"sdPopoverTriggerFor\")\r\n get popover() {\r\n return this.#popover;\r\n }\r\n set popover(popover: PopoverComponent) {\r\n if (popover === this.#popover) {\r\n return;\r\n }\r\n this.#popover = popover;\r\n this.#popoverClose$.unsubscribe();\r\n if (popover) {\r\n this.#popoverClose$ = popover.closed.subscribe(() => {\r\n this.#destroyPopover();\r\n });\r\n }\r\n }\r\n #popover: PopoverComponent;\r\n\r\n @Output() popoverOpened = new EventEmitter<void>();\r\n @Output() popoverClosed = new EventEmitter<void>();\r\n\r\n constructor(\r\n private _overlay: Overlay,\r\n private _element: ElementRef<HTMLElement>,\r\n private _ngZone: NgZone,\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef,\r\n private platform: Platform,\r\n @Optional() private _dir: Directionality\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.popover) {\r\n const nativeElement = this.elementRef.nativeElement;\r\n\r\n const hostMouseState$ = merge(\r\n fromEvent(nativeElement, \"mouseenter\").pipe(mapTo(true)),\r\n fromEvent(nativeElement, \"mouseleave\").pipe(mapTo(false))\r\n );\r\n\r\n const popoverMouseState$ = this.popover.mouseState$.pipe(\r\n // chỉ lấy luồng emit open bởi chính trigger (tránh lỗi nhiều trigger cho một popover)\r\n filter((v) => !this.popover.trigger || this.popover.trigger == this)\r\n );\r\n\r\n const mergedMouseState$ = merge(popoverMouseState$, hostMouseState$);\r\n\r\n mergedMouseState$\r\n .pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n filter(() => this.platform.isBrowser),\r\n takeUntil(this.#destroy$)\r\n )\r\n .subscribe((visible) => {\r\n if (visible) {\r\n this.openPopover();\r\n } else {\r\n this.closePopover();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#destroy$.next();\r\n this.#destroy$.complete();\r\n if (this.#overlayRef) {\r\n this.#overlayRef.dispose();\r\n this.#overlayRef = null;\r\n }\r\n }\r\n\r\n openPopover = () => {\r\n if (this.popoverOpen) {\r\n return;\r\n }\r\n\r\n const overlayRef = this.#createOverlay();\r\n const overlayConfig = overlayRef.getConfig();\r\n const positionStrategy =\r\n overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy;\r\n this.#setPosition(positionStrategy);\r\n overlayConfig.hasBackdrop = false;\r\n overlayRef.attach(this.#getPortal());\r\n this.popover.trigger = this;\r\n this.#setIsPopoverOpen(true);\r\n };\r\n\r\n closePopover = () => {\r\n this.popover.closed.emit();\r\n };\r\n\r\n #setIsPopoverOpen = (isOpen: boolean) => {\r\n this.popoverOpen = isOpen;\r\n this.popoverOpen ? this.popoverOpened.emit() : this.popoverClosed.emit();\r\n };\r\n\r\n #getPortal = (): TemplatePortal => {\r\n if (\r\n !this.#portal ||\r\n this.#portal.templateRef !== this.popover.templateRef\r\n ) {\r\n this.#portal = new TemplatePortal(\r\n this.popover.templateRef,\r\n this.viewContainerRef\r\n );\r\n }\r\n\r\n return this.#portal;\r\n };\r\n\r\n #createOverlay = () => {\r\n if (!this.#overlayRef) {\r\n const config = this.#getOverlayConfig();\r\n this.#subscribeToPositions(\r\n config.positionStrategy as FlexibleConnectedPositionStrategy\r\n );\r\n this.#overlayRef = this._overlay.create(config);\r\n }\r\n\r\n return this.#overlayRef;\r\n };\r\n\r\n #setPosition = (positionStrategy: FlexibleConnectedPositionStrategy) => {\r\n let originX: \"start\" | \"center\" | \"end\" = \"center\";\r\n let originY: \"top\" | \"center\" | \"bottom\" = \"top\";\r\n let overlayX: \"start\" | \"center\" | \"end\" = \"center\";\r\n let overlayY: \"top\" | \"center\" | \"bottom\" = \"bottom\";\r\n let offsetX = 0;\r\n let offsetY = 16;\r\n\r\n switch (this.popover.position) {\r\n case \"above\":\r\n originY = \"top\";\r\n overlayY = \"bottom\";\r\n break;\r\n case \"below\":\r\n originY = \"bottom\";\r\n overlayY = \"top\";\r\n break;\r\n }\r\n\r\n positionStrategy.withPositions([\r\n // theo input\r\n { originX, originY, overlayX, overlayY, offsetY: originY == \"top\" ? -offsetY : offsetY },\r\n // giữa trên\r\n {\r\n originX: \"center\",\r\n originY: \"top\",\r\n overlayX: \"center\",\r\n overlayY: \"bottom\",\r\n offsetX,\r\n offsetY: -offsetY,\r\n },\r\n // giữa dưới\r\n {\r\n originX: \"center\",\r\n originY: \"bottom\",\r\n overlayX: \"center\",\r\n overlayY: \"top\",\r\n offsetX,\r\n offsetY,\r\n },\r\n ]);\r\n };\r\n\r\n #getOverlayConfig = () => {\r\n return new OverlayConfig({\r\n positionStrategy: this._overlay\r\n .position()\r\n .flexibleConnectedTo(this._element)\r\n .withLockedPosition()\r\n .withGrowAfterOpen()\r\n .withTransformOriginOn(\".sd-popover-panel\"),\r\n backdropClass: \"cdk-overlay-transparent-backdrop\",\r\n panelClass: this.popover.panelClass,\r\n direction: this._dir,\r\n width: this.popover.width,\r\n height: this.popover.height,\r\n });\r\n };\r\n\r\n #subscribeToPositions = (position: FlexibleConnectedPositionStrategy) => {\r\n if (this.popover.setPositionClasses) {\r\n position.positionChanges.subscribe((change) => {\r\n const pos: Position =\r\n change.connectionPair.overlayY === \"top\" ? \"below\" : \"above\";\r\n\r\n if (this._ngZone) {\r\n this._ngZone.run(() => this.popover.setPositionClasses(pos));\r\n } else {\r\n this.popover.setPositionClasses(pos);\r\n }\r\n\r\n const originElement: HTMLElement = this.elementRef.nativeElement;\r\n const overlayElement: HTMLElement = (\r\n this.viewContainerRef.get(0) as any\r\n )?.rootNodes[0];\r\n if (originElement && overlayElement) {\r\n const originRect = originElement.getBoundingClientRect();\r\n const overlayRect = overlayElement.getBoundingClientRect();\r\n const originLeft = originRect.left + originRect.width / 2;\r\n const overlayLeft = overlayRect.left + overlayRect.width / 2;\r\n\r\n const offset = originLeft - overlayLeft;\r\n\r\n this.popover.addArrowTranslateX(offset);\r\n }\r\n });\r\n }\r\n };\r\n\r\n #destroyPopover = () => {\r\n if (!this.#overlayRef || !this.popoverOpen) {\r\n return;\r\n }\r\n this.#overlayRef.detach();\r\n this.#setIsPopoverOpen(false);\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PopoverComponent } from './popover/popover.component';\r\nimport { PopoverTriggerDirective } from './directives/popover-trigger.directive';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n PopoverComponent, \r\n PopoverTriggerDirective\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule\r\n ],\r\n exports: [\r\n PopoverComponent, \r\n PopoverTriggerDirective\r\n ]\r\n})\r\nexport class SdPopoverModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport { SdPopoverModule } from './lib/popover.module';\r\n\r\nexport * from './lib/popover/popover.component';\r\nexport * from './lib/directives/popover-trigger.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-popover.js","sources":["../../../../projects/sd-core/popover/src/lib/popover/popover.component.ts","../../../../projects/sd-core/popover/src/lib/directives/popover-trigger.directive.ts","../../../../projects/sd-core/popover/src/lib/popover.module.ts","../../../../projects/sd-core/popover/src/public-api.ts","../../../../projects/sd-core/popover/sd-angular-core-popover.ts"],"sourcesContent":["import {\r\n ChangeDetectionStrategy,\r\n ChangeDetectorRef,\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n TemplateRef,\r\n ViewChild,\r\n ViewEncapsulation,\r\n OnChanges,\r\n SimpleChanges\r\n} from \"@angular/core\";\r\nimport { Position } from \"../popover.model\";\r\nimport * as uuid from \"uuid\";\r\nimport { DeviceDetectorService } from \"ngx-device-detector\";\r\nimport { BehaviorSubject } from \"rxjs\";\r\nimport { PopoverTriggerDirective } from \"../directives/popover-trigger.directive\";\r\n\r\nexport interface SdPopover {\r\n close: () => void;\r\n}\r\n\r\n@Component({\r\n selector: \"sd-popover\",\r\n templateUrl: \"./popover.component.html\",\r\n styleUrls: [\"./popover.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n exportAs: \"sdPopover\",\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class PopoverComponent implements SdPopover, OnChanges, OnInit, OnDestroy {\r\n classList: Record<string, boolean> = {};\r\n panelId = `sd-popover-panel-${uuid.v4()}`;\r\n isMobileOrTablet = false;\r\n mouseState$ = new BehaviorSubject<boolean>(false);\r\n trigger: PopoverTriggerDirective = null;\r\n\r\n @ViewChild(TemplateRef) templateRef: TemplateRef<any>;\r\n @ViewChild(\"panel\") panel: ElementRef<HTMLDivElement>;\r\n\r\n @Input() panelClass: string = \"\";\r\n @Input() width: \"lg\" | \"md\" | \"sm\" | string = \"sm\";\r\n @Input() height: string = \"auto\";\r\n @Input() type: 'normal' | 'primary' | 'info' | 'success' | 'warning' | 'danger' = \"normal\";\r\n @Input()\r\n get position(): Position {\r\n return this.#xPosition;\r\n }\r\n set position(value: Position) {\r\n this.#xPosition = value;\r\n this.setPositionClasses();\r\n }\r\n #xPosition: Position;\r\n\r\n @Output() readonly closed = new EventEmitter<void>();\r\n\r\n @HostListener('document:click', ['$event.target'])\r\n _hostClick(targetElement) {\r\n if (this.panel?.nativeElement) {\r\n const isInside = this.panel.nativeElement.contains(targetElement);\r\n if (!isInside) {\r\n this.setMouseState(false);\r\n }\r\n }\r\n }\r\n\r\n constructor(\r\n private cdRef: ChangeDetectorRef,\r\n private deviceService: DeviceDetectorService\r\n ) {\r\n this.isMobileOrTablet = !deviceService.isDesktop();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if(changes.type) {\r\n const type = changes.type.currentValue;\r\n const preType = changes.type.previousValue;\r\n const classes = this.classList ?? {};\r\n if (preType) {\r\n classes[`sd-popover--${preType}`] = false;\r\n }\r\n if (type) {\r\n classes[`sd-popover--${type}`] = true;\r\n }\r\n }\r\n }\r\n\r\n ngOnInit(): void {\r\n this.setPositionClasses();\r\n this.width = this.width || \"80vw\";\r\n if (!this.isMobileOrTablet) {\r\n switch (this.width) {\r\n case \"lg\":\r\n this.width = \"80vw\";\r\n break;\r\n case \"md\":\r\n this.width = \"60vw\";\r\n break;\r\n case \"sm\":\r\n this.width = \"40vw\";\r\n break;\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.closed.complete();\r\n this.mouseState$.complete();\r\n }\r\n\r\n close = () => {\r\n this.mouseState$.next(false);\r\n this.closed.emit();\r\n };\r\n\r\n setPositionClasses = (pos: Position = this.position) => {\r\n const classes = this.classList;\r\n classes[\"sd-popover-above\"] = pos === \"above\";\r\n classes[\"sd-popover-below\"] = pos === \"below\";\r\n\r\n this.cdRef?.markForCheck();\r\n };\r\n\r\n addArrowTranslateX = (offset: number) => {\r\n const arrowElement: HTMLElement = document.querySelector(`#${this.panelId} .sd-popover-arrow`);\r\n if (arrowElement && offset) {\r\n try {\r\n const style = window.getComputedStyle(arrowElement);\r\n const matrix = new WebKitCSSMatrix(style.transform);\r\n const translateX = matrix.m41 + offset;\r\n const translateY = matrix.m42;\r\n arrowElement.style.transform = `translateX(${translateX}px) translateY(${translateY}px)`;\r\n } catch (error) {}\r\n }\r\n };\r\n\r\n setMouseState = (visible: boolean) => {\r\n if (!visible) {\r\n // chỉ được tắt khi đang không focus element nào bên trong panel\r\n // tránh lỗi có control mở overlay khiến cho mất mouseenter ở panel\r\n const activeElement = document.activeElement;\r\n const panelElement = this.panel.nativeElement;\r\n if (panelElement?.contains(activeElement)) {\r\n return;\r\n }\r\n }\r\n this.mouseState$.next(visible);\r\n };\r\n}\r\n","import { Directionality } from \"@angular/cdk/bidi\";\r\nimport {\r\n FlexibleConnectedPositionStrategy,\r\n Overlay,\r\n OverlayConfig,\r\n OverlayRef,\r\n} from \"@angular/cdk/overlay\";\r\nimport { Platform } from \"@angular/cdk/platform\";\r\nimport { TemplatePortal } from \"@angular/cdk/portal\";\r\nimport {\r\n AfterViewInit,\r\n Directive,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n NgZone,\r\n OnDestroy,\r\n Optional,\r\n Output,\r\n ViewContainerRef,\r\n} from \"@angular/core\";\r\nimport { fromEvent, merge, Subject, Subscription } from \"rxjs\";\r\nimport {\r\n auditTime,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n map,\r\n mapTo,\r\n takeUntil,\r\n tap,\r\n} from \"rxjs/operators\";\r\nimport { Position } from \"../popover.model\";\r\nimport { PopoverComponent } from \"../popover/popover.component\";\r\n\r\n@Directive({\r\n selector: \"[sdPopoverTriggerFor]\",\r\n host: {\r\n \"aria-haspopup\": \"true\",\r\n class: \"sd-popover-trigger\",\r\n },\r\n exportAs: \"sdPopoverTrigger\",\r\n})\r\nexport class PopoverTriggerDirective implements AfterViewInit, OnDestroy {\r\n #overlayRef: OverlayRef | null = null;\r\n #popoverClose$ = Subscription.EMPTY;\r\n #portal: TemplatePortal;\r\n #destroy$ = new Subject();\r\n\r\n popoverOpen = false;\r\n\r\n @Input(\"sdPopoverTriggerFor\")\r\n get popover() {\r\n return this.#popover;\r\n }\r\n set popover(popover: PopoverComponent) {\r\n if (popover === this.#popover) {\r\n return;\r\n }\r\n this.#popover = popover;\r\n this.#popoverClose$.unsubscribe();\r\n if (popover) {\r\n this.#popoverClose$ = popover.closed.subscribe(() => {\r\n this.#destroyPopover();\r\n });\r\n }\r\n }\r\n #popover: PopoverComponent;\r\n\r\n @Output() popoverOpened = new EventEmitter<void>();\r\n @Output() popoverClosed = new EventEmitter<void>();\r\n\r\n constructor(\r\n private _overlay: Overlay,\r\n private _element: ElementRef<HTMLElement>,\r\n private _ngZone: NgZone,\r\n private viewContainerRef: ViewContainerRef,\r\n private elementRef: ElementRef,\r\n private platform: Platform,\r\n @Optional() private _dir: Directionality\r\n ) {}\r\n\r\n ngAfterViewInit(): void {\r\n if (this.popover) {\r\n const nativeElement = this.elementRef.nativeElement;\r\n\r\n const hostMouseState$ = merge(\r\n fromEvent(nativeElement, \"mouseenter\").pipe(mapTo(true)),\r\n fromEvent(nativeElement, \"mouseleave\").pipe(mapTo(false))\r\n );\r\n\r\n const popoverMouseState$ = this.popover.mouseState$.pipe(\r\n // chỉ lấy luồng emit open bởi chính trigger (tránh lỗi nhiều trigger cho một popover)\r\n filter((v) => !this.popover.trigger || this.popover.trigger == this)\r\n );\r\n\r\n const mergedMouseState$ = merge(popoverMouseState$, hostMouseState$);\r\n\r\n mergedMouseState$\r\n .pipe(\r\n debounceTime(100),\r\n distinctUntilChanged(),\r\n filter(() => this.platform.isBrowser),\r\n takeUntil(this.#destroy$)\r\n )\r\n .subscribe((visible) => {\r\n if (visible) {\r\n this.openPopover();\r\n } else {\r\n this.closePopover();\r\n }\r\n });\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.#destroy$.next();\r\n this.#destroy$.complete();\r\n if (this.#overlayRef) {\r\n this.#overlayRef.dispose();\r\n this.#overlayRef = null;\r\n }\r\n }\r\n\r\n openPopover = () => {\r\n if (this.popoverOpen) {\r\n return;\r\n }\r\n\r\n const overlayRef = this.#createOverlay();\r\n const overlayConfig = overlayRef.getConfig();\r\n const positionStrategy =\r\n overlayConfig.positionStrategy as FlexibleConnectedPositionStrategy;\r\n this.#setPosition(positionStrategy);\r\n overlayConfig.hasBackdrop = false;\r\n overlayRef.attach(this.#getPortal());\r\n this.popover.trigger = this;\r\n this.#setIsPopoverOpen(true);\r\n };\r\n\r\n closePopover = () => {\r\n this.popover.closed.emit();\r\n };\r\n\r\n #setIsPopoverOpen = (isOpen: boolean) => {\r\n this.popoverOpen = isOpen;\r\n this.popoverOpen ? this.popoverOpened.emit() : this.popoverClosed.emit();\r\n };\r\n\r\n #getPortal = (): TemplatePortal => {\r\n if (\r\n !this.#portal ||\r\n this.#portal.templateRef !== this.popover.templateRef\r\n ) {\r\n this.#portal = new TemplatePortal(\r\n this.popover.templateRef,\r\n this.viewContainerRef\r\n );\r\n }\r\n\r\n return this.#portal;\r\n };\r\n\r\n #createOverlay = () => {\r\n if (!this.#overlayRef) {\r\n const config = this.#getOverlayConfig();\r\n this.#subscribeToPositions(\r\n config.positionStrategy as FlexibleConnectedPositionStrategy\r\n );\r\n this.#overlayRef = this._overlay.create(config);\r\n }\r\n\r\n return this.#overlayRef;\r\n };\r\n\r\n #setPosition = (positionStrategy: FlexibleConnectedPositionStrategy) => {\r\n let originX: \"start\" | \"center\" | \"end\" = \"center\";\r\n let originY: \"top\" | \"center\" | \"bottom\" = \"top\";\r\n let overlayX: \"start\" | \"center\" | \"end\" = \"center\";\r\n let overlayY: \"top\" | \"center\" | \"bottom\" = \"bottom\";\r\n let offsetX = 0;\r\n let offsetY = 16;\r\n\r\n switch (this.popover.position) {\r\n case \"above\":\r\n originY = \"top\";\r\n overlayY = \"bottom\";\r\n break;\r\n case \"below\":\r\n originY = \"bottom\";\r\n overlayY = \"top\";\r\n break;\r\n }\r\n\r\n positionStrategy.withPositions([\r\n // theo input\r\n { originX, originY, overlayX, overlayY, offsetY: originY == \"top\" ? -offsetY : offsetY },\r\n // giữa trên\r\n {\r\n originX: \"center\",\r\n originY: \"top\",\r\n overlayX: \"center\",\r\n overlayY: \"bottom\",\r\n offsetX,\r\n offsetY: -offsetY,\r\n },\r\n // giữa dưới\r\n {\r\n originX: \"center\",\r\n originY: \"bottom\",\r\n overlayX: \"center\",\r\n overlayY: \"top\",\r\n offsetX,\r\n offsetY,\r\n },\r\n ]);\r\n };\r\n\r\n #getOverlayConfig = () => {\r\n return new OverlayConfig({\r\n positionStrategy: this._overlay\r\n .position()\r\n .flexibleConnectedTo(this._element)\r\n .withLockedPosition()\r\n .withGrowAfterOpen()\r\n .withTransformOriginOn(\".sd-popover-panel\"),\r\n backdropClass: \"cdk-overlay-transparent-backdrop\",\r\n panelClass: this.popover.panelClass,\r\n direction: this._dir,\r\n width: this.popover.width,\r\n height: this.popover.height,\r\n });\r\n };\r\n\r\n #subscribeToPositions = (position: FlexibleConnectedPositionStrategy) => {\r\n if (this.popover.setPositionClasses) {\r\n position.positionChanges.subscribe((change) => {\r\n const pos: Position =\r\n change.connectionPair.overlayY === \"top\" ? \"below\" : \"above\";\r\n\r\n if (this._ngZone) {\r\n this._ngZone.run(() => this.popover.setPositionClasses(pos));\r\n } else {\r\n this.popover.setPositionClasses(pos);\r\n }\r\n\r\n const originElement: HTMLElement = this.elementRef.nativeElement;\r\n const overlayElement: HTMLElement = (\r\n this.viewContainerRef.get(0) as any\r\n )?.rootNodes[0];\r\n if (originElement && overlayElement) {\r\n const originRect = originElement.getBoundingClientRect();\r\n const overlayRect = overlayElement.getBoundingClientRect();\r\n const originLeft = originRect.left + originRect.width / 2;\r\n const overlayLeft = overlayRect.left + overlayRect.width / 2;\r\n\r\n const offset = originLeft - overlayLeft;\r\n\r\n this.popover.addArrowTranslateX(offset);\r\n }\r\n });\r\n }\r\n };\r\n\r\n #destroyPopover = () => {\r\n if (!this.#overlayRef || !this.popoverOpen) {\r\n return;\r\n }\r\n this.#overlayRef.detach();\r\n this.#setIsPopoverOpen(false);\r\n };\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PopoverComponent } from './popover/popover.component';\r\nimport { PopoverTriggerDirective } from './directives/popover-trigger.directive';\r\nimport { A11yModule } from '@angular/cdk/a11y';\r\n\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n PopoverComponent, \r\n PopoverTriggerDirective\r\n ],\r\n imports: [\r\n CommonModule,\r\n A11yModule\r\n ],\r\n exports: [\r\n PopoverComponent, \r\n PopoverTriggerDirective\r\n ]\r\n})\r\nexport class SdPopoverModule { }\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport { SdPopoverModule } from './lib/popover.module';\r\n\r\nexport * from './lib/popover/popover.component';\r\nexport * from './lib/directives/popover-trigger.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uuid.v4"],"mappings":"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"}
|
|
@@ -34,6 +34,9 @@ class SdSettingService {
|
|
|
34
34
|
if (!cache) {
|
|
35
35
|
return option === null || option === void 0 ? void 0 : option.default;
|
|
36
36
|
}
|
|
37
|
+
if (cache.data === undefined) {
|
|
38
|
+
return undefined;
|
|
39
|
+
}
|
|
37
40
|
return JSON.parse(JSON.stringify(cache.data));
|
|
38
41
|
};
|
|
39
42
|
});
|
|
@@ -50,15 +53,26 @@ class SdSettingService {
|
|
|
50
53
|
if (!cache) {
|
|
51
54
|
return option === null || option === void 0 ? void 0 : option.default;
|
|
52
55
|
}
|
|
56
|
+
if (cache.data === undefined) {
|
|
57
|
+
return undefined;
|
|
58
|
+
}
|
|
53
59
|
return JSON.parse(JSON.stringify(cache.data));
|
|
54
60
|
});
|
|
55
61
|
});
|
|
56
62
|
_set.set(this, (key, option) => {
|
|
57
63
|
return (data) => {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
64
|
+
if (data === undefined) {
|
|
65
|
+
__classPrivateFieldGet(this, _cache)[key] = {
|
|
66
|
+
data: undefined,
|
|
67
|
+
createdOn: new Date()
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
__classPrivateFieldGet(this, _cache)[key] = {
|
|
72
|
+
data: JSON.parse(JSON.stringify(data)),
|
|
73
|
+
createdOn: new Date()
|
|
74
|
+
};
|
|
75
|
+
}
|
|
62
76
|
if ((option === null || option === void 0 ? void 0 : option.type) === 'session') {
|
|
63
77
|
try {
|
|
64
78
|
sessionStorage.setItem(key, JSON.stringify(__classPrivateFieldGet(this, _cache)[key]));
|
|
@@ -82,10 +96,18 @@ class SdSettingService {
|
|
|
82
96
|
_setServer.set(this, (key, option) => {
|
|
83
97
|
return (data) => __awaiter(this, void 0, void 0, function* () {
|
|
84
98
|
var _a;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
99
|
+
if (data === undefined) {
|
|
100
|
+
__classPrivateFieldGet(this, _cache)[key] = {
|
|
101
|
+
data: undefined,
|
|
102
|
+
createdOn: new Date()
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
else {
|
|
106
|
+
__classPrivateFieldGet(this, _cache)[key] = {
|
|
107
|
+
data: JSON.parse(JSON.stringify(data)),
|
|
108
|
+
createdOn: new Date()
|
|
109
|
+
};
|
|
110
|
+
}
|
|
89
111
|
try {
|
|
90
112
|
yield ((_a = this.configuration) === null || _a === void 0 ? void 0 : _a.set(key, __classPrivateFieldGet(this, _cache)[key]));
|
|
91
113
|
__classPrivateFieldGet(this, _subject)[key].next(__classPrivateFieldGet(this, _cache)[key].data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-setting.js","sources":["../../../../projects/sd-core/setting/src/lib/setting.model.ts","../../../../projects/sd-core/setting/src/lib/setting.service.ts","../../../../projects/sd-core/setting/src/public-api.ts","../../../../projects/sd-core/setting/sd-angular-core-setting.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\n\r\nexport interface SdSettingOption<T = any> {\r\n type?: 'session';\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\nexport interface SdSettingOptionServer<T = any> {\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\n\r\nexport interface SdSetting<T = any> {\r\n get: () => T;\r\n set: (data: T) => void;\r\n has: () => boolean;\r\n remove: () => void;\r\n subject: BehaviorSubject<T>;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface SdSettingServer<T = any> {\r\n get: () => Promise<T>;\r\n set: (data: T) => Promise<void>;\r\n has: () => Promise<boolean>;\r\n remove: () => Promise<void>;\r\n subject: BehaviorSubject<T>;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface ISettingConfiguration {\r\n convertKey?: (key: string) => string;\r\n set?: (key: string, value: { data: any, createdOn: Date }, args?: SdSettingOptionServer) => Promise<void>;\r\n get?: (key: string, args?: SdSettingOptionServer) => Promise<{\r\n data: any,\r\n createdOn: Date\r\n }>;\r\n remove?: (key: string, args?: SdSettingOptionServer) => Promise<void>;\r\n}\r\n\r\nexport const SETTING_CONFIG = new InjectionToken<ISettingConfiguration>('setting.configuration');\r\n","import { Optional } from '@angular/core';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { startWith, switchMap } from 'rxjs/operators';\r\nimport { SETTING_CONFIG, ISettingConfiguration, SdSettingOption, SdSetting, SdSettingServer, SdSettingOptionServer } from './setting.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdSettingService {\r\n #cache: {\r\n [key: string]: {\r\n data: any,\r\n createdOn: Date\r\n }\r\n } = {};\r\n\r\n #subject: {\r\n [key: string]: BehaviorSubject<any>;\r\n } = {};\r\n\r\n constructor(@Inject(SETTING_CONFIG) @Optional() private configuration: ISettingConfiguration) { }\r\n\r\n create<T = any>(key: string | object, option?: SdSettingOption<T>): SdSetting<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (this.configuration?.convertKey) {\r\n hashKey = this.configuration.convertKey(hashKey);\r\n }\r\n \r\n const get = this.#get<T>(hashKey, option);\r\n const set = this.#set<T>(hashKey, option);\r\n const has = this.#has(hashKey, option);\r\n const remove = this.#remove(hashKey, option);\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<T>(get());\r\n }\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n subject: this.#subject[hashKey],\r\n observer: this.#subject[hashKey]\r\n };\r\n }\r\n\r\n createServer<T = any>(key: string | object, option?: SdSettingOptionServer<T>): SdSettingServer<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (this.configuration?.convertKey) {\r\n hashKey = this.configuration.convertKey(hashKey);\r\n }\r\n if (!this.configuration?.get) {\r\n throw new Error('Please init setting configuration method get for type server');\r\n }\r\n if (!this.configuration?.set) {\r\n throw new Error('Please init setting configuration method set for type server');\r\n }\r\n if (!this.configuration?.remove) {\r\n throw new Error('Please init setting configuration method remove for type server');\r\n }\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<any>(option?.default);\r\n }\r\n const get = this.#getServer<T>(hashKey, option);\r\n const set = this.#setServer<T>(hashKey, option);\r\n const has = this.#hasServer(hashKey, option);\r\n const remove = this.#remove(hashKey, option);\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n subject: this.#subject[hashKey],\r\n observer: this.#subject[hashKey].pipe(startWith(this.#subject[hashKey].getValue()), switchMap(get))\r\n };\r\n }\r\n\r\n #get = <T = any>(key: string, option?: SdSettingOption<T>): (() => T) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n } else {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #getServer = <T = any>(key: string, option?: SdSettingOptionServer<T>): (() => Promise<T>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n try {\r\n cache = await this.configuration?.get(key, option);\r\n } catch {\r\n cache = undefined;\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #set = <T = any>(key: string, option?: SdSettingOption<T>): ((data: T) => void) => {\r\n return (data: T) => {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n if (option?.type === 'session') {\r\n try {\r\n sessionStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n this.#subject[key].next(this.#cache[key].data);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n } else {\r\n try {\r\n localStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n this.#subject[key].next(this.#cache[key].data);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n };\r\n }\r\n\r\n #setServer = <T = any>(key: string, option?: SdSettingOption<T>): ((data: T) => Promise<void>) => {\r\n return async (data: T) => {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n try {\r\n await this.configuration?.set(key, this.#cache[key]);\r\n this.#subject[key].next(this.#cache[key].data);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n }\r\n\r\n #has = (key: string, option?: SdSettingOption): (() => boolean) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n } else {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n }\r\n\r\n #hasServer = (key: string, option?: SdSettingOptionServer): (() => Promise<boolean>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n try {\r\n cache = await this.configuration?.get(key, option);\r\n } catch {\r\n cache = undefined;\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n }\r\n\r\n #remove = (key: string, option?: SdSettingOption): (() => Promise<void>) => {\r\n return async () => {\r\n try {\r\n if (option?.type === 'session') {\r\n sessionStorage.removeItem(key);\r\n } else {\r\n localStorage.removeItem(key);\r\n }\r\n this.#cache[key] = undefined;\r\n this.#subject[key].next(undefined);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n }\r\n\r\n #removeServer = (key: string, option?: SdSettingOptionServer): (() => Promise<void>) => {\r\n return async () => {\r\n try {\r\n await this.configuration?.remove(key, option);\r\n this.#cache[key] = undefined;\r\n this.#subject[key].next(undefined);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/setting.model';\r\nexport * from './lib/setting.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-setting.js","sources":["../../../../projects/sd-core/setting/src/lib/setting.model.ts","../../../../projects/sd-core/setting/src/lib/setting.service.ts","../../../../projects/sd-core/setting/src/public-api.ts","../../../../projects/sd-core/setting/sd-angular-core-setting.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\nimport { BehaviorSubject, Observable, Subject } from 'rxjs';\r\n\r\nexport interface SdSettingOption<T = any> {\r\n type?: 'session';\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\nexport interface SdSettingOptionServer<T = any> {\r\n default?: T;\r\n args?: {\r\n [key: string]: any\r\n };\r\n}\r\n\r\nexport interface SdSetting<T = any> {\r\n get: () => T;\r\n set: (data: T) => void;\r\n has: () => boolean;\r\n remove: () => void;\r\n subject: BehaviorSubject<T>;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface SdSettingServer<T = any> {\r\n get: () => Promise<T>;\r\n set: (data: T) => Promise<void>;\r\n has: () => Promise<boolean>;\r\n remove: () => Promise<void>;\r\n subject: BehaviorSubject<T>;\r\n observer: Observable<T>;\r\n}\r\n\r\nexport interface ISettingConfiguration {\r\n convertKey?: (key: string) => string;\r\n set?: (key: string, value: { data: any, createdOn: Date }, args?: SdSettingOptionServer) => Promise<void>;\r\n get?: (key: string, args?: SdSettingOptionServer) => Promise<{\r\n data: any,\r\n createdOn: Date\r\n }>;\r\n remove?: (key: string, args?: SdSettingOptionServer) => Promise<void>;\r\n}\r\n\r\nexport const SETTING_CONFIG = new InjectionToken<ISettingConfiguration>('setting.configuration');\r\n","import { Optional } from '@angular/core';\r\nimport { Injectable, Inject } from '@angular/core';\r\nimport hash from 'object-hash';\r\nimport { BehaviorSubject, Subject } from 'rxjs';\r\nimport { startWith, switchMap } from 'rxjs/operators';\r\nimport { SETTING_CONFIG, ISettingConfiguration, SdSettingOption, SdSetting, SdSettingServer, SdSettingOptionServer } from './setting.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class SdSettingService {\r\n #cache: {\r\n [key: string]: {\r\n data: any,\r\n createdOn: Date\r\n }\r\n } = {};\r\n\r\n #subject: {\r\n [key: string]: BehaviorSubject<any>;\r\n } = {};\r\n\r\n constructor(@Inject(SETTING_CONFIG) @Optional() private configuration: ISettingConfiguration) { }\r\n\r\n create<T = any>(key: string | object, option?: SdSettingOption<T>): SdSetting<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (this.configuration?.convertKey) {\r\n hashKey = this.configuration.convertKey(hashKey);\r\n }\r\n\r\n const get = this.#get<T>(hashKey, option);\r\n const set = this.#set<T>(hashKey, option);\r\n const has = this.#has(hashKey, option);\r\n const remove = this.#remove(hashKey, option);\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<T>(get());\r\n }\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n subject: this.#subject[hashKey],\r\n observer: this.#subject[hashKey]\r\n };\r\n }\r\n\r\n createServer<T = any>(key: string | object, option?: SdSettingOptionServer<T>): SdSettingServer<T> {\r\n if (!key) {\r\n throw new Error('Key is required');\r\n }\r\n let hashKey: string = null;\r\n if (typeof (key) === 'string') {\r\n hashKey = key;\r\n } else if (typeof (key) === 'object') {\r\n hashKey = hash(key);\r\n } else {\r\n throw new Error('Invalid key');\r\n }\r\n if (this.configuration?.convertKey) {\r\n hashKey = this.configuration.convertKey(hashKey);\r\n }\r\n if (!this.configuration?.get) {\r\n throw new Error('Please init setting configuration method get for type server');\r\n }\r\n if (!this.configuration?.set) {\r\n throw new Error('Please init setting configuration method set for type server');\r\n }\r\n if (!this.configuration?.remove) {\r\n throw new Error('Please init setting configuration method remove for type server');\r\n }\r\n if (!this.#subject[hashKey]) {\r\n this.#subject[hashKey] = new BehaviorSubject<any>(option?.default);\r\n }\r\n const get = this.#getServer<T>(hashKey, option);\r\n const set = this.#setServer<T>(hashKey, option);\r\n const has = this.#hasServer(hashKey, option);\r\n const remove = this.#remove(hashKey, option);\r\n return {\r\n get,\r\n set,\r\n has,\r\n remove,\r\n subject: this.#subject[hashKey],\r\n observer: this.#subject[hashKey].pipe(startWith(this.#subject[hashKey].getValue()), switchMap(get))\r\n };\r\n }\r\n\r\n #get = <T = any>(key: string, option?: SdSettingOption<T>): (() => T) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n } else {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n if (cache.data === undefined) {\r\n return undefined;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #getServer = <T = any>(key: string, option?: SdSettingOptionServer<T>): (() => Promise<T>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n try {\r\n cache = await this.configuration?.get(key, option);\r\n } catch {\r\n cache = undefined;\r\n }\r\n if (!cache) {\r\n return option?.default;\r\n }\r\n if (cache.data === undefined) {\r\n return undefined;\r\n }\r\n return JSON.parse(JSON.stringify(cache.data));\r\n };\r\n }\r\n\r\n #set = <T = any>(key: string, option?: SdSettingOption<T>): ((data: T) => void) => {\r\n return (data: T) => {\r\n if (data === undefined) {\r\n this.#cache[key] = {\r\n data: undefined,\r\n createdOn: new Date()\r\n };\r\n } else {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n }\r\n if (option?.type === 'session') {\r\n try {\r\n sessionStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n this.#subject[key].next(this.#cache[key].data);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n } else {\r\n try {\r\n localStorage.setItem(key, JSON.stringify(this.#cache[key]));\r\n this.#subject[key].next(this.#cache[key].data);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n }\r\n };\r\n }\r\n\r\n #setServer = <T = any>(key: string, option?: SdSettingOption<T>): ((data: T) => Promise<void>) => {\r\n return async (data: T) => {\r\n if (data === undefined) {\r\n this.#cache[key] = {\r\n data: undefined,\r\n createdOn: new Date()\r\n };\r\n } else {\r\n this.#cache[key] = {\r\n data: JSON.parse(JSON.stringify(data)),\r\n createdOn: new Date()\r\n };\r\n }\r\n try {\r\n await this.configuration?.set(key, this.#cache[key]);\r\n this.#subject[key].next(this.#cache[key].data);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n }\r\n\r\n #has = (key: string, option?: SdSettingOption): (() => boolean) => {\r\n return () => {\r\n let cache = this.#cache[key];\r\n if (option?.type === 'session') {\r\n try {\r\n cache = JSON.parse(sessionStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n } else {\r\n try {\r\n cache = JSON.parse(localStorage.getItem(key));\r\n } catch {\r\n cache = undefined;\r\n }\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n }\r\n\r\n #hasServer = (key: string, option?: SdSettingOptionServer): (() => Promise<boolean>) => {\r\n return async () => {\r\n let cache = this.#cache[key];\r\n try {\r\n cache = await this.configuration?.get(key, option);\r\n } catch {\r\n cache = undefined;\r\n }\r\n if (!cache) {\r\n return false;\r\n }\r\n return true;\r\n };\r\n }\r\n\r\n #remove = (key: string, option?: SdSettingOption): (() => Promise<void>) => {\r\n return async () => {\r\n try {\r\n if (option?.type === 'session') {\r\n sessionStorage.removeItem(key);\r\n } else {\r\n localStorage.removeItem(key);\r\n }\r\n this.#cache[key] = undefined;\r\n this.#subject[key].next(undefined);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n }\r\n\r\n #removeServer = (key: string, option?: SdSettingOptionServer): (() => Promise<void>) => {\r\n return async () => {\r\n try {\r\n await this.configuration?.remove(key, option);\r\n this.#cache[key] = undefined;\r\n this.#subject[key].next(undefined);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n }\r\n}\r\n","/*\r\n * Public API Surface of superdev-angular-core\r\n */\r\n\r\nexport * from './lib/setting.model';\r\nexport * from './lib/setting.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export declare class SdGridMaterial<T = any> implements OnInit, AfterViewInit, O
|
|
|
77
77
|
}) => Promise<void>;
|
|
78
78
|
onFilterChange: () => void;
|
|
79
79
|
onExpand: (rowData: SdGridMaterialItem) => Promise<void>;
|
|
80
|
-
onSelect: (rowData: SdGridMaterialItem) => void;
|
|
80
|
+
onSelect: (rowData: SdGridMaterialItem<T>) => void;
|
|
81
81
|
onSelectAll: () => void;
|
|
82
82
|
onClearSelection: () => void;
|
|
83
83
|
clearFilter: () => void;
|
|
@@ -7,6 +7,7 @@ export interface SdGridMaterialActionNormal<T = any> {
|
|
|
7
7
|
color?: 'primary' | 'accent' | 'warn' | 'info' | 'success' | 'warning' | 'danger' | 'secondary';
|
|
8
8
|
type?: 'fill' | 'light' | 'outline' | 'link';
|
|
9
9
|
hidden?: boolean | ((rowData?: T) => boolean);
|
|
10
|
+
isGrouped?: boolean;
|
|
10
11
|
click: (selectedItems?: T[]) => void;
|
|
11
12
|
}
|
|
12
13
|
interface SdGridMaterialActionChildren<T = any> {
|
|
@@ -16,6 +17,7 @@ interface SdGridMaterialActionChildren<T = any> {
|
|
|
16
17
|
title?: string;
|
|
17
18
|
color?: 'primary' | 'accent' | 'warn' | 'info' | 'success' | 'warning' | 'danger' | 'secondary';
|
|
18
19
|
type?: 'fill' | 'light' | 'outline' | 'link';
|
|
20
|
+
isGrouped?: boolean;
|
|
19
21
|
children: SdGridMaterialActionNormal<T>[];
|
|
20
22
|
}
|
|
21
23
|
export declare type SdGridMaterialActionSimple<T = any> = SdGridMaterialActionSimpleNormal<T> | SdGridMaterialActionSimpleChildren<T>;
|
|
@@ -5,12 +5,13 @@ export interface EditorHandler {
|
|
|
5
5
|
items?: any[] | Observable<any[]>;
|
|
6
6
|
};
|
|
7
7
|
}
|
|
8
|
-
export interface SdItem {
|
|
8
|
+
export interface SdItem<T = any> {
|
|
9
9
|
sdId?: string;
|
|
10
10
|
originItem?: any;
|
|
11
11
|
selectable?: boolean;
|
|
12
12
|
isSelected?: boolean;
|
|
13
13
|
actions?: string[];
|
|
14
|
+
groupedActions?: string[];
|
|
14
15
|
isExpanded?: boolean;
|
|
15
16
|
isExpanding?: boolean;
|
|
16
17
|
expandDetail?: any;
|
|
@@ -25,7 +26,7 @@ export interface SdItem {
|
|
|
25
26
|
};
|
|
26
27
|
sdGroup?: {
|
|
27
28
|
htmlTemplate: string;
|
|
28
|
-
items:
|
|
29
|
+
items: (T & SdItem<T>)[];
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
export interface EditorHandlerRow {
|
|
@@ -39,4 +40,4 @@ export interface EditorHandlerRow {
|
|
|
39
40
|
temporary?: any;
|
|
40
41
|
saving?: boolean;
|
|
41
42
|
}
|
|
42
|
-
export declare type SdGridMaterialItem<T = any> = T & SdItem
|
|
43
|
+
export declare type SdGridMaterialItem<T = any> = T & SdItem<T>;
|
package/package.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"metadata":{"SdPopoverModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"PopoverComponent"},{"__symbolic":"reference","name":"PopoverTriggerDirective"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":15,"character":4}],"exports":[{"__symbolic":"reference","name":"PopoverComponent"},{"__symbolic":"reference","name":"PopoverTriggerDirective"}]}]}],"members":{}},"SdPopover":{"__symbolic":"interface"},"PopoverComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":
|
|
1
|
+
{"__symbolic":"module","version":4,"metadata":{"SdPopoverModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"PopoverComponent"},{"__symbolic":"reference","name":"PopoverTriggerDirective"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"A11yModule","line":15,"character":4}],"exports":[{"__symbolic":"reference","name":"PopoverComponent"},{"__symbolic":"reference","name":"PopoverTriggerDirective"}]}]}],"members":{}},"SdPopover":{"__symbolic":"interface"},"PopoverComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":27,"character":1},"arguments":[{"selector":"sd-popover","encapsulation":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewEncapsulation","line":31,"character":17},"member":"None"},"exportAs":"sdPopover","changeDetection":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectionStrategy","line":33,"character":19},"member":"OnPush"},"template":"<ng-template>\r\n <div\r\n class=\"sd-popover-panel mat-elevation-z6\"\r\n [id]=\"panelId\"\r\n [ngClass]=\"classList\"\r\n tabindex=\"-1\"\r\n role=\"menu\"\r\n (mouseenter)=\"setMouseState(true)\"\r\n (mouseleave)=\"setMouseState(false)\"\r\n cdkTrapFocus\r\n #panel\r\n >\r\n <div class=\"sd-popover-content p-16\">\r\n <ng-content></ng-content>\r\n </div>\r\n <div class=\"sd-popover-arrow\"></div>\r\n </div>\r\n</ng-template>","styles":[".text-black400{color:#757575}.sd-popover-panel{position:relative}.sd-popover-panel .sd-popover-arrow{clear:both;height:0;left:50%;position:absolute;width:0}.sd-popover-panel.sd-popover-above .sd-popover-arrow{border-color:#fff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%;transform:translateX(-6px) translateY(-1px)}.sd-popover-panel.sd-popover-above:after{content:\" \";display:block;height:16px;position:absolute;width:100%}.sd-popover-panel.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #fff;border-style:solid;border-width:0 12px 12px;bottom:100%;transform:translateX(-6px) translateY(1px)}.sd-popover-panel.sd-popover-below:before{content:\" \";display:block;height:16px;position:absolute;width:100%}.sd-popover--normal{background:#fff;color:#000}.sd-popover--normal.sd-popover-above .sd-popover-arrow{border-color:#fff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--normal.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #fff;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--primary{background:#e7e9ff;color:#2962ff}.sd-popover--primary.sd-popover-above .sd-popover-arrow{border-color:#e7e9ff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--primary.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #e7e9ff;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--info{background:#e7e9ff;color:#2962ff}.sd-popover--info.sd-popover-above .sd-popover-arrow{border-color:#e7e9ff transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--info.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #e7e9ff;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--success{background:#dbefdc;color:#4caf50}.sd-popover--success.sd-popover-above .sd-popover-arrow{border-color:#dbefdc transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--success.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #dbefdc;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--warning{background:#ffeacc;color:#ff9600}.sd-popover--warning.sd-popover-above .sd-popover-arrow{border-color:#ffeacc transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--warning.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #ffeacc;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover--danger{background:#fed5d0;color:#f82c13}.sd-popover--danger.sd-popover-above .sd-popover-arrow{border-color:#fed5d0 transparent transparent;border-style:solid;border-width:12px 12px 0;top:100%}.sd-popover--danger.sd-popover-below .sd-popover-arrow{border-color:transparent transparent #fed5d0;border-style:solid;border-width:0 12px 12px;bottom:100%}.sd-popover-content{padding:16px}"]}]}],"members":{"templateRef":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":42,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/core","name":"TemplateRef","line":42,"character":13}]}]}],"panel":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":43,"character":3},"arguments":["panel"]}]}],"panelClass":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":45,"character":3}}]}],"width":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":46,"character":3}}]}],"height":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":47,"character":3}}]}],"type":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":48,"character":3}}]}],"position":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":49,"character":3}}]}],"closed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":59,"character":3}}]}],"_hostClick":[{"__symbolic":"method","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"HostListener","line":61,"character":3},"arguments":["document:click",["$event.target"]]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":72,"character":19},{"__symbolic":"reference","module":"ngx-device-detector","name":"DeviceDetectorService","line":73,"character":27}]}],"ngOnChanges":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"PopoverTriggerDirective":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":35,"character":1},"arguments":[{"selector":"[sdPopoverTriggerFor]","host":{"aria-haspopup":"true","class":"sd-popover-trigger","$quoted$":["aria-haspopup"]},"exportAs":"sdPopoverTrigger"}]}],"members":{"popover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3},"arguments":["sdPopoverTriggerFor"]}]}],"popoverOpened":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":69,"character":3}}]}],"popoverClosed":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":70,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":79,"character":5}}]],"parameters":[{"__symbolic":"reference","module":"@angular/cdk/overlay","name":"Overlay","line":73,"character":22},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":74,"character":33,"context":{"typeName":"HTMLElement"},"module":"./src/lib/directives/popover-trigger.directive"}]},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":75,"character":21},{"__symbolic":"reference","module":"@angular/core","name":"ViewContainerRef","line":76,"character":30},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":74,"character":33,"context":{"typeName":"HTMLElement"},"module":"./src/lib/directives/popover-trigger.directive"}]},{"__symbolic":"reference","module":"@angular/cdk/platform","name":"Platform","line":78,"character":22},{"__symbolic":"reference","module":"@angular/cdk/bidi","name":"Directionality","line":79,"character":30}]}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}}},"origins":{"SdPopoverModule":"./src/lib/popover.module","SdPopover":"./src/lib/popover/popover.component","PopoverComponent":"./src/lib/popover/popover.component","PopoverTriggerDirective":"./src/lib/directives/popover-trigger.directive"},"importAs":"@sd-angular/core/popover"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef } from "@angular/core";
|
|
1
|
+
import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, TemplateRef, OnChanges, SimpleChanges } from "@angular/core";
|
|
2
2
|
import { Position } from "../popover.model";
|
|
3
3
|
import { DeviceDetectorService } from "ngx-device-detector";
|
|
4
4
|
import { BehaviorSubject } from "rxjs";
|
|
@@ -6,7 +6,7 @@ import { PopoverTriggerDirective } from "../directives/popover-trigger.directive
|
|
|
6
6
|
export interface SdPopover {
|
|
7
7
|
close: () => void;
|
|
8
8
|
}
|
|
9
|
-
export declare class PopoverComponent implements SdPopover, OnInit, OnDestroy {
|
|
9
|
+
export declare class PopoverComponent implements SdPopover, OnChanges, OnInit, OnDestroy {
|
|
10
10
|
#private;
|
|
11
11
|
private cdRef;
|
|
12
12
|
private deviceService;
|
|
@@ -20,11 +20,13 @@ export declare class PopoverComponent implements SdPopover, OnInit, OnDestroy {
|
|
|
20
20
|
panelClass: string;
|
|
21
21
|
width: "lg" | "md" | "sm" | string;
|
|
22
22
|
height: string;
|
|
23
|
+
type: 'normal' | 'primary' | 'info' | 'success' | 'warning' | 'danger';
|
|
23
24
|
get position(): Position;
|
|
24
25
|
set position(value: Position);
|
|
25
26
|
readonly closed: EventEmitter<void>;
|
|
26
27
|
_hostClick(targetElement: any): void;
|
|
27
28
|
constructor(cdRef: ChangeDetectorRef, deviceService: DeviceDetectorService);
|
|
29
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
28
30
|
ngOnInit(): void;
|
|
29
31
|
ngOnDestroy(): void;
|
|
30
32
|
close: () => void;
|
|
index c5a8346..307d205 100644
|
|
|
Binary file
|