@dooboostore/dom-render 1.0.110 → 1.0.112
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.MD +1 -2
- package/dist/cjs/DomRenderProxy.js +89 -48
- package/dist/cjs/DomRenderProxy.js.map +2 -2
- package/dist/cjs/components/ComponentBase.js +47 -1
- package/dist/cjs/components/ComponentBase.js.map +2 -2
- package/dist/cjs/components/a/A.js +22 -0
- package/dist/cjs/components/a/A.js.map +2 -2
- package/dist/cjs/components/appender/Appender.js +21 -4
- package/dist/cjs/components/appender/Appender.js.map +2 -2
- package/dist/cjs/components/details/Details.js +5 -0
- package/dist/cjs/components/details/Details.js.map +2 -2
- package/dist/cjs/components/forOf/ForOf.js +2 -2
- package/dist/cjs/components/forOf/ForOf.js.map +1 -1
- package/dist/cjs/components/if/If.js +1 -1
- package/dist/cjs/components/if/If.js.map +2 -2
- package/dist/cjs/components/index.js +3 -1
- package/dist/cjs/components/index.js.map +3 -3
- package/dist/cjs/components/router/RouterOutlet.js +41 -10
- package/dist/cjs/components/router/RouterOutlet.js.map +2 -2
- package/dist/cjs/components/select/Select.js +39 -1
- package/dist/cjs/components/select/Select.js.map +2 -2
- package/dist/cjs/components/this/This.js +33 -5
- package/dist/cjs/components/this/This.js.map +2 -2
- package/dist/cjs/decorators/DomRenderNoProxy.js +3 -9
- package/dist/cjs/decorators/DomRenderNoProxy.js.map +2 -2
- package/dist/cjs/events/EventManager.js +103 -37
- package/dist/cjs/events/EventManager.js.map +2 -2
- package/dist/cjs/lifecycle/OnChangeAttrRender.js.map +1 -1
- package/dist/cjs/lifecycle/OnChildRawSetRendered.js +26 -0
- package/dist/cjs/lifecycle/OnChildRawSetRendered.js.map +7 -0
- package/dist/cjs/lifecycle/OnRawSetRendered.js.map +2 -2
- package/dist/cjs/operators/Appender.js +8 -1
- package/dist/cjs/operators/Appender.js.map +2 -2
- package/dist/cjs/operators/Dr.js +2 -2
- package/dist/cjs/operators/Dr.js.map +2 -2
- package/dist/cjs/operators/DrAppender.js +2 -2
- package/dist/cjs/operators/DrAppender.js.map +2 -2
- package/dist/cjs/operators/DrFor.js +2 -2
- package/dist/cjs/operators/DrFor.js.map +2 -2
- package/dist/cjs/operators/DrForOf.js +34 -6
- package/dist/cjs/operators/DrForOf.js.map +2 -2
- package/dist/cjs/operators/DrForm.js +6 -6
- package/dist/cjs/operators/DrForm.js.map +2 -2
- package/dist/cjs/operators/DrInnerHTML.js +2 -2
- package/dist/cjs/operators/DrInnerHTML.js.map +2 -2
- package/dist/cjs/operators/DrRepeat.js +2 -2
- package/dist/cjs/operators/DrRepeat.js.map +2 -2
- package/dist/cjs/operators/DrStripElement.js +2 -2
- package/dist/cjs/operators/DrStripElement.js.map +2 -2
- package/dist/cjs/operators/DrTargetElement.js +14 -5
- package/dist/cjs/operators/DrTargetElement.js.map +2 -2
- package/dist/cjs/operators/DrTargetElementIsElement.js +2 -2
- package/dist/cjs/operators/DrTargetElementIsElement.js.map +2 -2
- package/dist/cjs/operators/DrThis.js +2 -2
- package/dist/cjs/operators/DrThis.js.map +2 -2
- package/dist/cjs/operators/DrThisProperty.js +2 -1
- package/dist/cjs/operators/DrThisProperty.js.map +2 -2
- package/dist/cjs/rawsets/RawSet.js +87 -160
- package/dist/cjs/rawsets/RawSet.js.map +2 -2
- package/dist/cjs/routers/HashRouter.js +3 -0
- package/dist/cjs/routers/HashRouter.js.map +2 -2
- package/dist/cjs/routers/PathRouter.js +3 -0
- package/dist/cjs/routers/PathRouter.js.map +2 -2
- package/dist/cjs/routers/Router.js +25 -21
- package/dist/cjs/routers/Router.js.map +2 -2
- package/dist/esm/DomRenderProxy.js +89 -48
- package/dist/esm/DomRenderProxy.js.map +2 -2
- package/dist/esm/components/ComponentBase.js +47 -1
- package/dist/esm/components/ComponentBase.js.map +2 -2
- package/dist/esm/components/a/A.js +22 -0
- package/dist/esm/components/a/A.js.map +2 -2
- package/dist/esm/components/appender/Appender.js +22 -5
- package/dist/esm/components/appender/Appender.js.map +2 -2
- package/dist/esm/components/details/Details.js +5 -0
- package/dist/esm/components/details/Details.js.map +2 -2
- package/dist/esm/components/forOf/ForOf.js +2 -2
- package/dist/esm/components/forOf/ForOf.js.map +1 -1
- package/dist/esm/components/if/If.js +1 -1
- package/dist/esm/components/if/If.js.map +2 -2
- package/dist/esm/components/index.js +3 -1
- package/dist/esm/components/index.js.map +2 -2
- package/dist/esm/components/router/RouterOutlet.js +41 -10
- package/dist/esm/components/router/RouterOutlet.js.map +2 -2
- package/dist/esm/components/select/Select.js +39 -1
- package/dist/esm/components/select/Select.js.map +2 -2
- package/dist/esm/components/this/This.js +33 -5
- package/dist/esm/components/this/This.js.map +2 -2
- package/dist/esm/decorators/DomRenderNoProxy.js +3 -9
- package/dist/esm/decorators/DomRenderNoProxy.js.map +2 -2
- package/dist/esm/events/EventManager.js +103 -37
- package/dist/esm/events/EventManager.js.map +2 -2
- package/dist/esm/lifecycle/OnChangeAttrRender.js.map +1 -1
- package/dist/esm/lifecycle/OnChildRawSetRendered.js +7 -0
- package/dist/esm/lifecycle/OnChildRawSetRendered.js.map +7 -0
- package/dist/esm/lifecycle/OnRawSetRendered.js.map +2 -2
- package/dist/esm/operators/Appender.js +8 -1
- package/dist/esm/operators/Appender.js.map +2 -2
- package/dist/esm/operators/Dr.js +2 -2
- package/dist/esm/operators/Dr.js.map +2 -2
- package/dist/esm/operators/DrAppender.js +2 -2
- package/dist/esm/operators/DrAppender.js.map +2 -2
- package/dist/esm/operators/DrFor.js +2 -2
- package/dist/esm/operators/DrFor.js.map +2 -2
- package/dist/esm/operators/DrForOf.js +34 -6
- package/dist/esm/operators/DrForOf.js.map +2 -2
- package/dist/esm/operators/DrForm.js +6 -6
- package/dist/esm/operators/DrForm.js.map +2 -2
- package/dist/esm/operators/DrInnerHTML.js +2 -2
- package/dist/esm/operators/DrInnerHTML.js.map +2 -2
- package/dist/esm/operators/DrRepeat.js +2 -2
- package/dist/esm/operators/DrRepeat.js.map +2 -2
- package/dist/esm/operators/DrStripElement.js +2 -2
- package/dist/esm/operators/DrStripElement.js.map +2 -2
- package/dist/esm/operators/DrTargetElement.js +14 -5
- package/dist/esm/operators/DrTargetElement.js.map +2 -2
- package/dist/esm/operators/DrTargetElementIsElement.js +2 -2
- package/dist/esm/operators/DrTargetElementIsElement.js.map +2 -2
- package/dist/esm/operators/DrThis.js +2 -2
- package/dist/esm/operators/DrThis.js.map +2 -2
- package/dist/esm/operators/DrThisProperty.js +2 -1
- package/dist/esm/operators/DrThisProperty.js.map +2 -2
- package/dist/esm/rawsets/RawSet.js +87 -160
- package/dist/esm/rawsets/RawSet.js.map +2 -2
- package/dist/esm/routers/HashRouter.js +3 -0
- package/dist/esm/routers/HashRouter.js.map +2 -2
- package/dist/esm/routers/PathRouter.js +3 -0
- package/dist/esm/routers/PathRouter.js.map +2 -2
- package/dist/esm/routers/Router.js +25 -21
- package/dist/esm/routers/Router.js.map +2 -2
- package/dist/esm-bundle/dooboostore-dom-render.esm.js +830 -1533
- package/dist/esm-bundle/dooboostore-dom-render.esm.js.map +4 -4
- package/dist/types/DomRenderProxy.d.ts.map +1 -1
- package/dist/types/components/ComponentBase.d.ts +12 -1
- package/dist/types/components/ComponentBase.d.ts.map +1 -1
- package/dist/types/components/a/A.d.ts +6 -0
- package/dist/types/components/a/A.d.ts.map +1 -1
- package/dist/types/components/appender/Appender.d.ts +1 -0
- package/dist/types/components/appender/Appender.d.ts.map +1 -1
- package/dist/types/components/details/Details.d.ts +2 -0
- package/dist/types/components/details/Details.d.ts.map +1 -1
- package/dist/types/components/forOf/ForOf.d.ts +1 -1
- package/dist/types/components/forOf/ForOf.d.ts.map +1 -1
- package/dist/types/components/if/If.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +1 -0
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/components/router/RouterOutlet.d.ts +6 -3
- package/dist/types/components/router/RouterOutlet.d.ts.map +1 -1
- package/dist/types/components/select/Select.d.ts +5 -3
- package/dist/types/components/select/Select.d.ts.map +1 -1
- package/dist/types/components/this/This.d.ts +5 -1
- package/dist/types/components/this/This.d.ts.map +1 -1
- package/dist/types/decorators/DomRenderNoProxy.d.ts.map +1 -1
- package/dist/types/events/EventManager.d.ts +1 -0
- package/dist/types/events/EventManager.d.ts.map +1 -1
- package/dist/types/lifecycle/OnChangeAttrRender.d.ts +1 -1
- package/dist/types/lifecycle/OnChangeAttrRender.d.ts.map +1 -1
- package/dist/types/lifecycle/OnChildRawSetRendered.d.ts +9 -0
- package/dist/types/lifecycle/OnChildRawSetRendered.d.ts.map +1 -0
- package/dist/types/lifecycle/OnRawSetRendered.d.ts +2 -0
- package/dist/types/lifecycle/OnRawSetRendered.d.ts.map +1 -1
- package/dist/types/operators/Appender.d.ts +1 -0
- package/dist/types/operators/Appender.d.ts.map +1 -1
- package/dist/types/operators/Dr.d.ts.map +1 -1
- package/dist/types/operators/DrAppender.d.ts.map +1 -1
- package/dist/types/operators/DrFor.d.ts.map +1 -1
- package/dist/types/operators/DrForOf.d.ts.map +1 -1
- package/dist/types/operators/DrForm.d.ts.map +1 -1
- package/dist/types/operators/DrInnerHTML.d.ts.map +1 -1
- package/dist/types/operators/DrRepeat.d.ts.map +1 -1
- package/dist/types/operators/DrStripElement.d.ts.map +1 -1
- package/dist/types/operators/DrTargetElement.d.ts.map +1 -1
- package/dist/types/operators/DrThisProperty.d.ts.map +1 -1
- package/dist/types/rawsets/RawSet.d.ts +4 -1
- package/dist/types/rawsets/RawSet.d.ts.map +1 -1
- package/dist/types/routers/HashRouter.d.ts +1 -0
- package/dist/types/routers/HashRouter.d.ts.map +1 -1
- package/dist/types/routers/PathRouter.d.ts +1 -0
- package/dist/types/routers/PathRouter.d.ts.map +1 -1
- package/dist/types/routers/Router.d.ts +3 -0
- package/dist/types/routers/Router.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-dom-render.umd.js +830 -1533
- package/dist/umd-bundle/dooboostore-dom-render.umd.js.map +4 -4
- package/package.json +4 -4
- package/src/DomRenderProxy.ts +169 -75
- package/src/DomRenderProxy.ts_cache_back +1031 -0
- package/src/components/ComponentBase.ts +61 -5
- package/src/components/a/A.ts +25 -0
- package/src/components/appender/Appender.ts +3 -3
- package/src/components/details/Details.ts +7 -0
- package/src/components/forOf/ForOf.ts +2 -2
- package/src/components/if/If.ts +3 -2
- package/src/components/index.ts +3 -0
- package/src/components/router/RouterOutlet.ts +60 -22
- package/src/components/select/Select.ts +69 -30
- package/src/components/this/This.ts +41 -6
- package/src/decorators/DomRenderNoProxy.ts +17 -14
- package/src/events/EventManager.ts +180 -77
- package/src/lifecycle/OnChangeAttrRender.ts +1 -1
- package/src/lifecycle/OnChildRawSetRendered.ts +13 -0
- package/src/lifecycle/OnRawSetRendered.ts +3 -1
- package/src/operators/Appender.ts +8 -1
- package/src/operators/Dr.ts +2 -1
- package/src/operators/DrAppender.ts +2 -1
- package/src/operators/DrFor.ts +2 -1
- package/src/operators/DrForOf.ts +36 -6
- package/src/operators/DrForm.ts +6 -5
- package/src/operators/DrInnerHTML.ts +2 -1
- package/src/operators/DrRepeat.ts +2 -1
- package/src/operators/DrStripElement.ts +2 -1
- package/src/operators/DrTargetElement.ts +17 -5
- package/src/operators/DrTargetElementIsElement.ts +2 -2
- package/src/operators/DrThis.ts +2 -2
- package/src/operators/DrThisProperty.ts +2 -1
- package/src/rawsets/RawSet.ts +161 -237
- package/src/routers/HashRouter.ts +4 -0
- package/src/routers/PathRouter.ts +5 -0
- package/src/routers/Router.ts +64 -47
- package/src/node_modules/.bin/acorn +0 -17
- package/src/node_modules/.bin/browserslist +0 -17
- package/src/node_modules/.bin/eslint +0 -17
- package/src/node_modules/.bin/sbf +0 -17
- package/src/node_modules/.bin/ts-node +0 -17
- package/src/node_modules/.bin/ts-node-cwd +0 -17
- package/src/node_modules/.bin/ts-node-dev +0 -17
- package/src/node_modules/.bin/ts-node-esm +0 -17
- package/src/node_modules/.bin/ts-node-script +0 -17
- package/src/node_modules/.bin/ts-node-transpile-only +0 -17
- package/src/node_modules/.bin/ts-script +0 -17
- package/src/node_modules/.bin/tsc +0 -17
- package/src/node_modules/.bin/tsnd +0 -17
- package/src/node_modules/.bin/tsserver +0 -17
- package/src/node_modules/.bin/webpack +0 -17
- package/src/node_modules/.bin/webpack-cli +0 -17
- package/src/node_modules/.bin/webpack-dev-server +0 -17
|
@@ -17,6 +17,8 @@ import { Subject } from '@dooboostore/core/message/Subject';
|
|
|
17
17
|
import { debounceTime } from '@dooboostore/core/message/operators/debounceTime';
|
|
18
18
|
import type { Subscription } from '@dooboostore/core/message/Subscription';
|
|
19
19
|
import { OnRawSetRendered, OnRawSetRenderedOtherData } from "../lifecycle/OnRawSetRendered";
|
|
20
|
+
import {bufferTime} from "@dooboostore/core/message/operators/bufferTime";
|
|
21
|
+
import {OnChildRawSetRendered} from "../lifecycle/OnChildRawSetRendered";
|
|
20
22
|
|
|
21
23
|
|
|
22
24
|
export const ATTRIBUTE_METADATA_KEY = Symbol('attribute');
|
|
@@ -131,11 +133,15 @@ export function event(options: { query: string, name: string, onDestroy?: (compo
|
|
|
131
133
|
}
|
|
132
134
|
|
|
133
135
|
|
|
134
|
-
export type ComponentBaseConfig = { onlyParentType?: ConstructorType<any>[] | ConstructorType<any>,
|
|
136
|
+
export type ComponentBaseConfig = { onlyParentType?: ConstructorType<any>[] | ConstructorType<any>,
|
|
137
|
+
createChildrenDebounce?: number,
|
|
138
|
+
onRawSetRenderedOtherDataDebounce?: number
|
|
139
|
+
onChildRawSetRenderedOtherDataDebounce?: number
|
|
140
|
+
};
|
|
135
141
|
|
|
136
142
|
export type ChildrenSet = { instance: any, data: OnCreateRenderDataParams };
|
|
137
143
|
|
|
138
|
-
export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBaseConfig> implements OnChangeAttrRender, OnCreateRenderData, OnCreatedThisChild, OnDrThisBind, OnDrThisUnBind, OnInitRender, OnDestroyRender, OnRawSetRendered {
|
|
144
|
+
export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBaseConfig> implements OnChangeAttrRender, OnCreateRenderData, OnCreatedThisChild, OnDrThisBind, OnDrThisUnBind, OnInitRender, OnDestroyRender, OnRawSetRendered, OnChildRawSetRendered {
|
|
139
145
|
@DomRenderNoProxy
|
|
140
146
|
private _rawSet?: RawSet;
|
|
141
147
|
@DomRenderNoProxy
|
|
@@ -157,6 +163,14 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
157
163
|
private childrenSetSubject = new Subject<ChildrenSet[]>();
|
|
158
164
|
@DomRenderNoProxy
|
|
159
165
|
private createChildrenDebounceSubscription?: Subscription | undefined;
|
|
166
|
+
@DomRenderNoProxy
|
|
167
|
+
private onRawSetRenderedOtherDataSubject = new Subject<OnRawSetRenderedOtherData>();
|
|
168
|
+
@DomRenderNoProxy
|
|
169
|
+
private onChildRawSetRenderedOtherDataSubject = new Subject<void>();
|
|
170
|
+
@DomRenderNoProxy
|
|
171
|
+
private onRawSetRenderedOtherDataSubjectSubscription?: Subscription | undefined;
|
|
172
|
+
@DomRenderNoProxy
|
|
173
|
+
private onChildRawSetRenderedOtherDataSubjectSubscription?: Subscription | undefined;
|
|
160
174
|
|
|
161
175
|
constructor(private _config?: C) {
|
|
162
176
|
}
|
|
@@ -374,6 +388,11 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
374
388
|
}
|
|
375
389
|
|
|
376
390
|
async onRawSetRendered(rawSet: RawSet, otherData: OnRawSetRenderedOtherData): Promise<void> {
|
|
391
|
+
this.onRawSetRenderedOtherDataSubject.next(otherData);
|
|
392
|
+
// this.onRawSetRenderedOtherDataSubjectSubscription = this.onRawSetRenderedOtherDataSubject.pipe(debounceTime(this.componentConfig?.onRawSetRenderedOtherDataDebounce??0)).subscribe(it => {
|
|
393
|
+
// this.onRawSetRenderedDebounce(it);
|
|
394
|
+
// });
|
|
395
|
+
|
|
377
396
|
const queries = ReflectUtils.getMetadata<QueryMetadata[]>(QUERY_METADATA_KEY, this.constructor);
|
|
378
397
|
if (queries) {
|
|
379
398
|
queries.filter(it => it.refreshRawSetRendered).forEach(queryInfo => {
|
|
@@ -388,6 +407,11 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
388
407
|
});
|
|
389
408
|
}
|
|
390
409
|
}
|
|
410
|
+
|
|
411
|
+
async onChildRawSetRendered(): Promise<void> {
|
|
412
|
+
this.onChildRawSetRenderedOtherDataSubject.next();
|
|
413
|
+
}
|
|
414
|
+
|
|
391
415
|
/**
|
|
392
416
|
* Manually refresh all query and event decorators
|
|
393
417
|
* Useful when DOM elements are dynamically added/removed and you want to update bindings
|
|
@@ -517,7 +541,20 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
517
541
|
}
|
|
518
542
|
}
|
|
519
543
|
}
|
|
520
|
-
|
|
544
|
+
getAttributeNames(attribute = this._attribute): string[] {
|
|
545
|
+
const target = attribute as any;
|
|
546
|
+
if (!target) return [];
|
|
547
|
+
const keys = Object.keys(target);
|
|
548
|
+
const names = new Set<string>();
|
|
549
|
+
for (const k of keys) {
|
|
550
|
+
names.add(k);
|
|
551
|
+
// names.add(ConvertUtils.camelToSnakeCase(k));
|
|
552
|
+
// names.add(ConvertUtils.snakeToCamelCase(k));
|
|
553
|
+
// names.add(k.toLowerCase());
|
|
554
|
+
// names.add(k.toUpperCase());
|
|
555
|
+
}
|
|
556
|
+
return Array.from(names);
|
|
557
|
+
}
|
|
521
558
|
getAttribute<K extends keyof T>(name: K, attribute = this._attribute): T[K] | null {
|
|
522
559
|
const target = attribute as any;
|
|
523
560
|
if (!target) {
|
|
@@ -624,6 +661,10 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
624
661
|
}
|
|
625
662
|
|
|
626
663
|
onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {
|
|
664
|
+
}
|
|
665
|
+
onRawSetRenderedDebounce(childrenSet: OnRawSetRenderedOtherData[]) {
|
|
666
|
+
}
|
|
667
|
+
onChildRawSetRenderedDebounce(){
|
|
627
668
|
|
|
628
669
|
}
|
|
629
670
|
|
|
@@ -641,7 +682,7 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
641
682
|
}
|
|
642
683
|
|
|
643
684
|
onChangeAttrRender(name: string, value: any, other: OtherData): void {
|
|
644
|
-
if (other
|
|
685
|
+
if (other?.rawSet) {
|
|
645
686
|
this.setRawSet(other.rawSet);
|
|
646
687
|
}
|
|
647
688
|
|
|
@@ -664,9 +705,22 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
664
705
|
}
|
|
665
706
|
|
|
666
707
|
async onInitRender(param: any, rawSet: RawSet) {
|
|
667
|
-
this.createChildrenDebounceSubscription = this.childrenSetSubject.pipe(
|
|
708
|
+
this.createChildrenDebounceSubscription = this.childrenSetSubject.pipe(
|
|
709
|
+
debounceTime(this.componentConfig?.createChildrenDebounce??0)
|
|
710
|
+
).subscribe(it => {
|
|
711
|
+
// console.log('call onCreatedThisChildDebounce', it);
|
|
668
712
|
this.onCreatedThisChildDebounce(it);
|
|
669
713
|
});
|
|
714
|
+
this.onRawSetRenderedOtherDataSubjectSubscription = this.onRawSetRenderedOtherDataSubject.pipe(
|
|
715
|
+
bufferTime(this.componentConfig?.onRawSetRenderedOtherDataDebounce??0)
|
|
716
|
+
).subscribe(it => {
|
|
717
|
+
this.onRawSetRenderedDebounce(it);
|
|
718
|
+
});
|
|
719
|
+
this.onChildRawSetRenderedOtherDataSubjectSubscription = this.onChildRawSetRenderedOtherDataSubject.pipe(
|
|
720
|
+
debounceTime(this.componentConfig?.onChildRawSetRenderedOtherDataDebounce??0)
|
|
721
|
+
).subscribe(it => {
|
|
722
|
+
this.onChildRawSetRenderedDebounce();
|
|
723
|
+
});
|
|
670
724
|
if (rawSet) {
|
|
671
725
|
this.setRawSet(rawSet);
|
|
672
726
|
|
|
@@ -699,6 +753,8 @@ export class ComponentBase<T = any, C extends ComponentBaseConfig = ComponentBas
|
|
|
699
753
|
this._cleanupEventBindings();
|
|
700
754
|
this._clearAllRefreshTimers();
|
|
701
755
|
this.createChildrenDebounceSubscription?.unsubscribe();
|
|
756
|
+
this.onRawSetRenderedOtherDataSubjectSubscription?.unsubscribe();
|
|
757
|
+
this.onChildRawSetRenderedOtherDataSubjectSubscription?.unsubscribe();
|
|
702
758
|
}
|
|
703
759
|
|
|
704
760
|
}
|
package/src/components/a/A.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { attribute, ComponentBase } from '../ComponentBase';
|
|
2
2
|
import { DomRender, DomRenderRunConfig } from '../../DomRender';
|
|
3
3
|
import { RawSet } from '../../rawsets/RawSet';
|
|
4
|
+
import {OtherData} from "../../lifecycle";
|
|
4
5
|
|
|
5
6
|
export namespace A {
|
|
6
7
|
export const selector = 'dr-a';
|
|
@@ -23,6 +24,7 @@ export namespace A {
|
|
|
23
24
|
style?: string | null;
|
|
24
25
|
class?: string | null;
|
|
25
26
|
click?: ((data: ClickCallbackData) => void) | null;
|
|
27
|
+
onInit?: (e: HTMLAnchorElement) => void;
|
|
26
28
|
replace?: boolean | null;
|
|
27
29
|
scrollToTop?: boolean | null;
|
|
28
30
|
};
|
|
@@ -32,9 +34,11 @@ export namespace A {
|
|
|
32
34
|
@attribute({ converter: v => v || null }) target: string | null = null;
|
|
33
35
|
@attribute({ converter: v => v || null }) style: string | null = null;
|
|
34
36
|
@attribute({ name: 'class', converter: v => v || null }) classAttr: string | null = null;
|
|
37
|
+
@attribute({ name: 'dr-class', converter: v => v || null }) drClass: string | null = null;
|
|
35
38
|
@attribute() click?: ((data: ClickCallbackData) => void) | null = null;
|
|
36
39
|
@attribute({ converter: v => v !== null && String(v) !== 'false' }) replace = false;
|
|
37
40
|
@attribute({ converter: v => v !== null && String(v) !== 'false' }) scrollToTop = true;
|
|
41
|
+
private element?: HTMLElement;
|
|
38
42
|
|
|
39
43
|
onClick(event: MouseEvent) {
|
|
40
44
|
if (this.click) {
|
|
@@ -59,6 +63,25 @@ export namespace A {
|
|
|
59
63
|
this.domRenderConfig?.router?.go({path: this.href, replace: this.replace, scrollToTop: this.scrollToTop });
|
|
60
64
|
}
|
|
61
65
|
}
|
|
66
|
+
|
|
67
|
+
onChangeAttrRender(name: string, value: any, other: OtherData) {
|
|
68
|
+
super.onChangeAttrRender(name, value, other);
|
|
69
|
+
if (this.element && name.startsWith('attribute-')) {
|
|
70
|
+
this.element.setAttribute(name, value);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
onAElementInit($element: HTMLElement) {
|
|
75
|
+
this.element = $element;
|
|
76
|
+
this.getAttribute('onInit')?.($element as HTMLAnchorElement);
|
|
77
|
+
this.getAttributeNames()
|
|
78
|
+
.filter(it => it.startsWith('attribute-'))
|
|
79
|
+
.forEach(it => {
|
|
80
|
+
const attrName = it.replace(/^attribute-/, '');
|
|
81
|
+
const attrValue = this.getAttribute(it as any);
|
|
82
|
+
this.element.setAttribute(attrName, attrValue);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
62
85
|
}
|
|
63
86
|
}
|
|
64
87
|
|
|
@@ -72,6 +95,8 @@ export default {
|
|
|
72
95
|
style="\${@this@.style}$"
|
|
73
96
|
class="\${@this@.classAttr}$"
|
|
74
97
|
dr-event-click="@this@.onClick($event)"
|
|
98
|
+
dr-class="\${@this@.drClass}$"
|
|
99
|
+
dr-on-init="@this@.onAElementInit($element)"
|
|
75
100
|
>#innerHTML#</a>`,
|
|
76
101
|
objFactory: (e, o, r2, constructorParam) => {
|
|
77
102
|
return DomRender.run({ rootObject: new A.A(...constructorParam), config });
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentBase
|
|
1
|
+
import {attribute, ComponentBase} from '../ComponentBase';
|
|
2
2
|
import { DomRender, DomRenderRunConfig } from '../../DomRender';
|
|
3
3
|
import { RawSet } from '../../rawsets/RawSet';
|
|
4
4
|
import { OtherData } from '../../lifecycle/OnChangeAttrRender';
|
|
@@ -25,7 +25,7 @@ export namespace Appender {
|
|
|
25
25
|
// })
|
|
26
26
|
export class Appender<D> extends ComponentBase<Attribute<D>> implements OnInitRender {
|
|
27
27
|
private value?:DomRenderAppender
|
|
28
|
-
|
|
28
|
+
@attribute({ name: 'dr-option-item-variable-name', converter: v => v || null }) drOptionItemVariableName: string | null = null;
|
|
29
29
|
// onCreateRender(...param: any) {
|
|
30
30
|
// console.log('--onCreateRender')
|
|
31
31
|
// }
|
|
@@ -70,7 +70,7 @@ export default {
|
|
|
70
70
|
appender: (config?: DomRenderRunConfig) => {
|
|
71
71
|
return RawSet.createComponentTargetElement({
|
|
72
72
|
name: Appender.selector,
|
|
73
|
-
template: '<div dr-appender="@this@.value" dr-option-strip="true">#innerHTML#</div>',
|
|
73
|
+
template: '<div dr-appender="@this@.value" dr-option-item-variable-name="${@this@.drOptionItemVariableName}$" dr-option-strip="true">#innerHTML#</div>',
|
|
74
74
|
objFactory: (e,o,r2, counstructorParam) => {
|
|
75
75
|
return DomRender.run({rootObject: new Appender.Appender(...counstructorParam), config: config});
|
|
76
76
|
}
|
|
@@ -16,6 +16,8 @@ export namespace Details {
|
|
|
16
16
|
class?: string;
|
|
17
17
|
toggle_form_reset?: boolean;
|
|
18
18
|
disableOtherClickClose?: boolean;
|
|
19
|
+
onOpen?: () => void;
|
|
20
|
+
onClose?: () => void;
|
|
19
21
|
toggle?: (open: boolean) => void;
|
|
20
22
|
};
|
|
21
23
|
export type BodyAttribute = {
|
|
@@ -101,6 +103,11 @@ export namespace Details {
|
|
|
101
103
|
if (toggleAttribute) {
|
|
102
104
|
toggleAttribute?.(element.open);
|
|
103
105
|
}
|
|
106
|
+
if (element.open) {
|
|
107
|
+
this.getAttribute('onOpen')?.();
|
|
108
|
+
} else {
|
|
109
|
+
this.getAttribute('onClose')?.();
|
|
110
|
+
}
|
|
104
111
|
}
|
|
105
112
|
async onInitRender(param: any, rawSet: RawSet) {
|
|
106
113
|
await super.onInitRender(param, rawSet);
|
|
@@ -4,7 +4,7 @@ import { RawSet } from '../../rawsets/RawSet';
|
|
|
4
4
|
import { OtherData } from '../../lifecycle/OnChangeAttrRender';
|
|
5
5
|
|
|
6
6
|
export namespace ForOf {
|
|
7
|
-
export const selector = '
|
|
7
|
+
export const selector = 'dr-for-of';
|
|
8
8
|
export type Attribute<D> = {
|
|
9
9
|
value: D;
|
|
10
10
|
};
|
|
@@ -29,7 +29,7 @@ export default {
|
|
|
29
29
|
forOf: (config?: DomRenderRunConfig) => {
|
|
30
30
|
return RawSet.createComponentTargetElement({
|
|
31
31
|
name: ForOf.selector,
|
|
32
|
-
template: '<div dr-for-of="@this@.
|
|
32
|
+
template: '<div dr-for-of="@this@.value" >#innerHTML#</div>',
|
|
33
33
|
objFactory: (e, o, r2, counstructorParam) => {
|
|
34
34
|
return DomRender.run({ rootObject: new ForOf.ForOf(...counstructorParam), config: config });
|
|
35
35
|
}
|
package/src/components/if/If.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { DomRenderConfig } from '../../configs/DomRenderConfig';
|
|
|
7
7
|
|
|
8
8
|
export namespace If {
|
|
9
9
|
export const selector = 'dr-if';
|
|
10
|
+
|
|
10
11
|
// export type AppenderInterface<D> = {
|
|
11
12
|
// push(...data:D[]):void;
|
|
12
13
|
// set(key: string, ...v:D[]):void
|
|
@@ -19,7 +20,6 @@ export namespace If {
|
|
|
19
20
|
|
|
20
21
|
export class If<D> extends ComponentBase<Attribute<D>> implements OnInitRender {
|
|
21
22
|
private sw: boolean = false;
|
|
22
|
-
|
|
23
23
|
async onInitRender(param: any, rawSet: RawSet) {
|
|
24
24
|
super.onInitRender(param, rawSet);
|
|
25
25
|
}
|
|
@@ -50,9 +50,10 @@ export default {
|
|
|
50
50
|
// });
|
|
51
51
|
// }
|
|
52
52
|
|
|
53
|
+
|
|
53
54
|
return RawSet.createComponentTargetElement({
|
|
54
55
|
name: If.selector,
|
|
55
|
-
template: '<div dr-if="@this@.sw" >#innerHTML#</div>',
|
|
56
|
+
template: '<div dr-if="@this@.sw" dr-option-strip="true" >#innerHTML#</div>',
|
|
56
57
|
objFactory: (e, o, r2, counstructorParam) => {
|
|
57
58
|
return DomRender.run({ rootObject: new If.If(...counstructorParam), config: config });
|
|
58
59
|
}
|
package/src/components/index.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
export * from './ComponentBase';
|
|
2
3
|
export * from './ComponentRouterBase';
|
|
3
4
|
export * from './ComponentSet';
|
|
@@ -30,6 +31,7 @@ import Details from './details/Details';
|
|
|
30
31
|
import Input from './input/Input';
|
|
31
32
|
import Route from './router/Route';
|
|
32
33
|
import A from './a/A';
|
|
34
|
+
import ForOf from './forOf/ForOf';
|
|
33
35
|
|
|
34
36
|
export const drComponent = {
|
|
35
37
|
...If,
|
|
@@ -46,4 +48,5 @@ export const drComponent = {
|
|
|
46
48
|
...Route,
|
|
47
49
|
...RouterOutlet,
|
|
48
50
|
...A,
|
|
51
|
+
...ForOf
|
|
49
52
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { OtherData
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
1
|
+
import {ChildrenSet, ComponentBase} from '../ComponentBase';
|
|
2
|
+
import {DomRenderRunConfig} from '../../DomRender';
|
|
3
|
+
import {RawSet} from '../../rawsets/RawSet';
|
|
4
|
+
import {isOnChangeAttrRender, OtherData} from '../../lifecycle/OnChangeAttrRender';
|
|
5
|
+
import {OnInitRender} from '../../lifecycle/OnInitRender';
|
|
6
|
+
import {ComponentSet} from '../../components/ComponentSet';
|
|
7
|
+
import {OnDestroyRenderParams} from '../../lifecycle/OnDestroyRender';
|
|
8
|
+
import {ComponentRouterBase, isOnCreatedOutletDebounce} from '../../components/ComponentRouterBase';
|
|
9
|
+
import {OnCreateRenderDataParams} from '../../lifecycle';
|
|
10
10
|
|
|
11
11
|
export namespace RouterOutlet {
|
|
12
12
|
export const selector = 'dr-router-outlet';
|
|
13
13
|
export type Attribute = {
|
|
14
|
-
value: ComponentSet;
|
|
14
|
+
value: ComponentSet | string;
|
|
15
15
|
if: boolean | null;
|
|
16
16
|
createArguments: any[];
|
|
17
17
|
onCreated?: (value: any) => void;
|
|
@@ -23,20 +23,32 @@ export namespace RouterOutlet {
|
|
|
23
23
|
private value?: ComponentSet;
|
|
24
24
|
private if?: boolean | null = null;
|
|
25
25
|
private createArguments?: any[];
|
|
26
|
+
private childObject?: any;
|
|
27
|
+
private childRawSet?: RawSet;
|
|
28
|
+
private sw = false;
|
|
26
29
|
|
|
27
30
|
setValue(value: ComponentSet) {
|
|
28
|
-
this.
|
|
31
|
+
this.sw = false;
|
|
32
|
+
setTimeout(() => {
|
|
33
|
+
this.value = value;
|
|
34
|
+
}, 0)
|
|
35
|
+
|
|
36
|
+
setTimeout(() => {
|
|
37
|
+
this.sw = true;
|
|
38
|
+
}, 0)
|
|
29
39
|
// console.log('sssssssssss');
|
|
30
40
|
}
|
|
31
41
|
|
|
32
42
|
async onInitRender(param: any, rawSet: RawSet) {
|
|
33
43
|
await super.onInitRender(param, rawSet);
|
|
34
|
-
const c = this.getParentThis();
|
|
44
|
+
const c = this.getParentThis<any>();
|
|
35
45
|
const userValue = this.getAttribute('value');
|
|
36
|
-
if (userValue) {
|
|
37
|
-
this.
|
|
38
|
-
} else if (
|
|
39
|
-
this.
|
|
46
|
+
if (typeof userValue === 'string') {
|
|
47
|
+
this.setValue(c[userValue]);
|
|
48
|
+
} else if (userValue instanceof ComponentSet) {
|
|
49
|
+
this.setValue(userValue);
|
|
50
|
+
} else if (!userValue && c instanceof ComponentRouterBase) {
|
|
51
|
+
this.setValue(c.child);
|
|
40
52
|
}
|
|
41
53
|
// console.log('------',c);
|
|
42
54
|
}
|
|
@@ -47,8 +59,9 @@ export namespace RouterOutlet {
|
|
|
47
59
|
|
|
48
60
|
onChangeAttrRender(name: string, value: any, other: OtherData) {
|
|
49
61
|
super.onChangeAttrRender(name, value, other);
|
|
62
|
+
// console.log('--------------', name, value);
|
|
50
63
|
if (this.equalsAttributeName(name, 'value')) {
|
|
51
|
-
this.value
|
|
64
|
+
this.setValue(value);
|
|
52
65
|
}
|
|
53
66
|
if (this.equalsAttributeName(name, 'if')) {
|
|
54
67
|
this.if = value;
|
|
@@ -56,6 +69,10 @@ export namespace RouterOutlet {
|
|
|
56
69
|
if (this.equalsAttributeName(name, 'createArguments')) {
|
|
57
70
|
this.createArguments = value;
|
|
58
71
|
}
|
|
72
|
+
|
|
73
|
+
if (this.childObject && this.childRawSet && isOnChangeAttrRender(this.childObject)) {
|
|
74
|
+
this.childObject.onChangeAttrRender(name, value, {rawSet: this.childRawSet});
|
|
75
|
+
}
|
|
59
76
|
}
|
|
60
77
|
|
|
61
78
|
onCreatedThisChild(child: any, data: OnCreateRenderDataParams) {
|
|
@@ -72,9 +89,26 @@ export namespace RouterOutlet {
|
|
|
72
89
|
}
|
|
73
90
|
this.getAttribute('onCreatedDebounce')?.(this.value?.obj);
|
|
74
91
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
onCreateDrThis($component: any, $rawSet: RawSet) {
|
|
95
|
+
this.childObject = $component ??= this.value?.obj;
|
|
96
|
+
this.childRawSet = $rawSet;
|
|
97
|
+
if ($component) {
|
|
98
|
+
this.getAttribute('onCreated')?.($component);
|
|
99
|
+
// console.log('21222');
|
|
100
|
+
if (isOnChangeAttrRender($component)) {
|
|
101
|
+
this.getAttributeNames()
|
|
102
|
+
.filter(it => it.startsWith('attribute-'))
|
|
103
|
+
.forEach(it => {
|
|
104
|
+
const attrName = it.replace(/^attribute-/, '');
|
|
105
|
+
const attrValue = this.getAttribute(it as any);
|
|
106
|
+
$rawSet.dataSet.render.attribute ??= {};
|
|
107
|
+
$rawSet.dataSet.render.attribute[attrName] = attrValue;
|
|
108
|
+
$component.onChangeAttrRender(attrName, attrValue, {rawSet: $rawSet});
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
}
|
|
78
112
|
}
|
|
79
113
|
}
|
|
80
114
|
}
|
|
@@ -85,9 +119,13 @@ export default {
|
|
|
85
119
|
return RawSet.createComponentTargetElement({
|
|
86
120
|
name: RouterOutlet.selector,
|
|
87
121
|
template:
|
|
88
|
-
|
|
122
|
+
`
|
|
123
|
+
<dr-if value="\${@this@.sw}$">
|
|
124
|
+
<div dr-this="@this@.value" dr-detect-option-if="@this@?.value && @this@?.if" dr-option-strip="true" dr-on-create:arguments="@this@.createArguments" dr-on-create:callback="@this@?.onCreateDrThis?.($component, $rawSet)">#innerHTML#</div>
|
|
125
|
+
</dr-if>
|
|
126
|
+
`,
|
|
89
127
|
objFactory: (e, o, r2, counstructorParam) => {
|
|
90
|
-
return executer?.run({
|
|
128
|
+
return executer?.run({rootObject: new RouterOutlet.RouterOutlet(...counstructorParam), config: config});
|
|
91
129
|
}
|
|
92
130
|
});
|
|
93
131
|
}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
1
|
+
import {attribute, ChildrenSet, ComponentBase} from '../ComponentBase';
|
|
2
|
+
import {DomRender, DomRenderRunConfig} from '../../DomRender';
|
|
3
|
+
import {RawSet} from '../../rawsets/RawSet';
|
|
4
|
+
import {OnCreateRenderData} from '../../lifecycle/OnCreateRenderData';
|
|
5
|
+
import {OnInitRender} from '../../lifecycle/OnInitRender';
|
|
6
|
+
import {OnDestroyRender} from '../../lifecycle/OnDestroyRender';
|
|
7
|
+
import {EventUtils} from '@dooboostore/core-web/event/EventUtils';
|
|
8
|
+
import {type Subscription} from '@dooboostore/core/message/Subscription';
|
|
9
|
+
import {ValidUtils} from '@dooboostore/core-web/valid/ValidUtils';
|
|
10
|
+
import {DomRenderNoProxy} from '../../decorators/DomRenderNoProxy';
|
|
11
|
+
import {OnCreateRender} from '../../lifecycle/OnCreateRender';
|
|
12
|
+
import {DomRenderConfig} from '../../configs/DomRenderConfig';
|
|
13
|
+
import {WindowUtils} from '@dooboostore/core-web/window/WindowUtils';
|
|
14
|
+
import {OnRawSetRenderedOtherData} from '../../lifecycle';
|
|
15
15
|
|
|
16
16
|
/** 사용법
|
|
17
17
|
<dr-select class="card-select-container" changeSelected="${(data) => @this@.changeSelected(data)}$"> <!-- multiple attribute optional-->
|
|
@@ -150,7 +150,7 @@ export namespace Select {
|
|
|
150
150
|
toggleSelected(event: Event) {
|
|
151
151
|
// console.log('isMultiple', this.isMultiple())
|
|
152
152
|
if (!this.disabled) {
|
|
153
|
-
this.selected = this.isMultiple()? !this.selected : true;
|
|
153
|
+
this.selected = this.isMultiple() ? !this.selected : true;
|
|
154
154
|
// this.selected = !this.selected;
|
|
155
155
|
this.updateStatus();
|
|
156
156
|
this.getParentThis<SelectBody>().changeOptionState(this);
|
|
@@ -215,7 +215,7 @@ export namespace Select {
|
|
|
215
215
|
|
|
216
216
|
// --- Summary Component ---
|
|
217
217
|
export class Summary extends ComponentBase implements OnInitRender {
|
|
218
|
-
@attribute({
|
|
218
|
+
@attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;
|
|
219
219
|
private options: Select.Option[] = [];
|
|
220
220
|
private disabled: boolean = false;
|
|
221
221
|
public element?: HTMLElement;
|
|
@@ -290,18 +290,18 @@ export namespace Select {
|
|
|
290
290
|
|
|
291
291
|
|
|
292
292
|
export class SelectBody extends ComponentBase<SelectBodyAttribute> {
|
|
293
|
-
@attribute({
|
|
294
|
-
@attribute({
|
|
293
|
+
@attribute({name: 'class', converter: v => (v === '' ? null : v)}) public classAttr: string | null = null;
|
|
294
|
+
@attribute({name: 'float'}) public float: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right' | null = null;
|
|
295
295
|
|
|
296
296
|
constructor() {
|
|
297
|
-
super({
|
|
297
|
+
super({onlyParentType: Select});
|
|
298
298
|
}
|
|
299
299
|
|
|
300
300
|
async onRawSetRendered(rawSet: RawSet, otherData: OnRawSetRenderedOtherData): Promise<void> {
|
|
301
301
|
await super.onRawSetRendered(rawSet, otherData);
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
302
|
+
// }
|
|
303
|
+
// onCreatedThisChildDebounce(childrenSet: ChildrenSet[]) {
|
|
304
|
+
// super.onCreatedThisChildDebounce(childrenSet);
|
|
305
305
|
this.changeOptionState();
|
|
306
306
|
}
|
|
307
307
|
|
|
@@ -337,7 +337,8 @@ export namespace Select {
|
|
|
337
337
|
// --- Main Select Component ---
|
|
338
338
|
export type SelectAttribute = {
|
|
339
339
|
multiple?: boolean | null; class?: string;
|
|
340
|
-
|
|
340
|
+
onchange?: (value?: string) => void;
|
|
341
|
+
onchangeValues?: (value: string[]) => void;
|
|
341
342
|
name?: string;
|
|
342
343
|
float?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
|
|
343
344
|
disableOtherClickClose?: boolean;
|
|
@@ -354,7 +355,7 @@ export namespace Select {
|
|
|
354
355
|
// public isOpen = false;
|
|
355
356
|
public selectedValues: (string | null)[] = [];
|
|
356
357
|
public selectedOptions: Option[] = [];
|
|
357
|
-
|
|
358
|
+
private value: string | (string | null)[] | null | undefined;
|
|
358
359
|
|
|
359
360
|
@DomRenderNoProxy private element?: HTMLDetailsElement;
|
|
360
361
|
@DomRenderNoProxy private documentClickSubscription?: Subscription;
|
|
@@ -368,6 +369,14 @@ export namespace Select {
|
|
|
368
369
|
// console.log('----Select constructor')
|
|
369
370
|
}
|
|
370
371
|
|
|
372
|
+
// get value(): string | (string | null)[] | null | undefined {
|
|
373
|
+
// return this._value;
|
|
374
|
+
// }
|
|
375
|
+
// set value(val: string | (string | null)[] | null | undefined) {
|
|
376
|
+
// console.log('value set', val)
|
|
377
|
+
// this._value = val;
|
|
378
|
+
// }
|
|
379
|
+
|
|
371
380
|
get optionComponents(): Option[] {
|
|
372
381
|
return this.getChildren(Option);
|
|
373
382
|
}
|
|
@@ -431,13 +440,17 @@ export namespace Select {
|
|
|
431
440
|
this.options = options;
|
|
432
441
|
|
|
433
442
|
const values = this.options.filter(it => it.selected && !it.disabled).map(it => it.value)
|
|
434
|
-
this.getAttribute('changeSelected')?.(values);
|
|
435
443
|
summaries?.forEach(it => {
|
|
436
444
|
it.setDisabled(this.disabled);
|
|
437
445
|
if (!this.disabled) {
|
|
438
446
|
it.setOptions(options);
|
|
439
447
|
}
|
|
440
|
-
})
|
|
448
|
+
});
|
|
449
|
+
this.selectedValues = values;
|
|
450
|
+
this.selectedOptions = this.options.filter(it => it.selected && !it.disabled);
|
|
451
|
+
this.value = this.selectedValues[0];
|
|
452
|
+
this.getAttribute('onchange')?.(this.value);
|
|
453
|
+
this.getAttribute('onchangeValues')?.(values);
|
|
441
454
|
}
|
|
442
455
|
|
|
443
456
|
onInitDetailsElement(detailsElement: HTMLDetailsElement) {
|
|
@@ -456,6 +469,32 @@ export namespace Select {
|
|
|
456
469
|
this.windowBlurSubscription?.unsubscribe();
|
|
457
470
|
}
|
|
458
471
|
|
|
472
|
+
@attribute('value')
|
|
473
|
+
setValue(value: string | null | undefined) {
|
|
474
|
+
this.value = value;
|
|
475
|
+
if (this.options) {
|
|
476
|
+
|
|
477
|
+
// clear
|
|
478
|
+
this.options.forEach(it=> {
|
|
479
|
+
it.selected = false;
|
|
480
|
+
it.updateStatus();
|
|
481
|
+
});
|
|
482
|
+
for (let option of this.options) {
|
|
483
|
+
if (option.value === value) {
|
|
484
|
+
option.selected = true;
|
|
485
|
+
if (!this.multiple) {
|
|
486
|
+
// 하나만 선택
|
|
487
|
+
break;
|
|
488
|
+
}
|
|
489
|
+
} else {
|
|
490
|
+
option.selected = false;
|
|
491
|
+
}
|
|
492
|
+
option.updateStatus()
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
console.log('value set', value)
|
|
496
|
+
}
|
|
497
|
+
|
|
459
498
|
test() {
|
|
460
499
|
console.log('tttttttt')
|
|
461
500
|
}
|
|
@@ -467,7 +506,7 @@ const stateComponentFactory = (name: string, type: any) => {
|
|
|
467
506
|
RawSet.createComponentTargetElement({
|
|
468
507
|
name,
|
|
469
508
|
template: '<div dr-if="!@this@.hidden" dr-option-strip="true">#innerHTML#</div>\n',
|
|
470
|
-
objFactory: (e, o, r2, constructorParam) => DomRender.run({
|
|
509
|
+
objFactory: (e, o, r2, constructorParam) => DomRender.run({rootObject: new type(), config})
|
|
471
510
|
});
|
|
472
511
|
};
|
|
473
512
|
|
|
@@ -550,7 +589,7 @@ export default {
|
|
|
550
589
|
'<select hidden="hidden" name="${@this@.name}$" disabled="${@this@.disabled ? \'disabled\' : null}$" style="width: 1500px; height:500px" multiple>\n' +
|
|
551
590
|
' <option dr-for-of="@this@.options" value="${#it#.value}$" selected="${#it#.selected ? \'selected\' : null}$">#it# ${#it#.value}$</option>\n' +
|
|
552
591
|
'</select>',
|
|
553
|
-
objFactory: (e, o, r2, constructorParam) => DomRender.run({
|
|
592
|
+
objFactory: (e, o, r2, constructorParam) => DomRender.run({rootObject: new Select.Select(config), config})
|
|
554
593
|
});
|
|
555
594
|
},
|
|
556
595
|
selectSummary: (config?: DomRenderRunConfig) => {
|
|
@@ -563,7 +602,7 @@ export default {
|
|
|
563
602
|
'>\n' +
|
|
564
603
|
'#innerHTML#\n' +
|
|
565
604
|
'</summary>',
|
|
566
|
-
objFactory: (e, o, r2, constructorParam) => DomRender.run({
|
|
605
|
+
objFactory: (e, o, r2, constructorParam) => DomRender.run({rootObject: new Select.Summary(), config})
|
|
567
606
|
});
|
|
568
607
|
},
|
|
569
608
|
selectSummaryPlaceholder: stateComponentFactory(`${Select.selector}-summary-placeholder`, Select.SummaryPlaceholder),
|
|
@@ -585,7 +624,7 @@ export default {
|
|
|
585
624
|
name: `${Select.selector}-option`,
|
|
586
625
|
template:
|
|
587
626
|
'<a dr-class="{[@this@.classAttr]: @this@.classAttr}" dr-event-click="@this@.toggleSelected($event)">#innerHTML#</a>\n',
|
|
588
|
-
objFactory: (e, o, r2, constructorParam) => DomRender.run({
|
|
627
|
+
objFactory: (e, o, r2, constructorParam) => DomRender.run({rootObject: new Select.Option(), config})
|
|
589
628
|
});
|
|
590
629
|
},
|
|
591
630
|
selectOptionSelected: stateComponentFactory(`${Select.selector}-option-selected`, Select.OptionSelected),
|