@dooboostore/simple-web-component 1.0.43 → 1.0.45
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 +312 -63
- package/dist/cjs/SwcAppEngine.js +3 -1
- package/dist/cjs/SwcAppEngine.js.map +2 -2
- package/dist/cjs/decorators/addEventListener.js.map +2 -2
- package/dist/cjs/decorators/applyAttribute.js +66 -43
- package/dist/cjs/decorators/applyAttribute.js.map +2 -2
- package/dist/cjs/decorators/applyClass.js +110 -43
- package/dist/cjs/decorators/applyClass.js.map +3 -3
- package/dist/cjs/decorators/applyNode.js +200 -112
- package/dist/cjs/decorators/applyNode.js.map +2 -2
- package/dist/cjs/decorators/applyProperty.js +49 -45
- package/dist/cjs/decorators/applyProperty.js.map +2 -2
- package/dist/cjs/decorators/applyStyle.js +92 -37
- package/dist/cjs/decorators/applyStyle.js.map +3 -3
- package/dist/cjs/decorators/{changedAttributeThis.js → changedAttribute.js} +6 -6
- package/dist/cjs/decorators/changedAttribute.js.map +7 -0
- package/dist/cjs/decorators/elementDefine.js +81 -31
- package/dist/cjs/decorators/elementDefine.js.map +3 -3
- package/dist/cjs/decorators/emitCustomEvent.js +80 -52
- package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
- package/dist/cjs/decorators/index.js +1 -1
- package/dist/cjs/decorators/index.js.map +2 -2
- package/dist/cjs/decorators/publishSwcAppMessage.js +5 -5
- package/dist/cjs/decorators/publishSwcAppMessage.js.map +3 -3
- package/dist/cjs/decorators/query.js +133 -147
- package/dist/cjs/decorators/query.js.map +3 -3
- package/dist/cjs/decorators/queryAll.js +143 -132
- package/dist/cjs/decorators/queryAll.js.map +3 -3
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js +2 -0
- package/dist/cjs/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -0
- package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/cjs/elements/SwcAppMixin.js +17 -2
- package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
- package/dist/cjs/examples/RxJSOperatorsExample.js +285 -0
- package/dist/cjs/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/cjs/index.js +1 -0
- package/dist/cjs/index.js.map +2 -2
- package/dist/cjs/router/ElementRouter.js +4 -0
- package/dist/cjs/router/ElementRouter.js.map +2 -2
- package/dist/cjs/types/window.d.js.map +1 -1
- package/dist/esm/SwcAppEngine.js +3 -1
- package/dist/esm/SwcAppEngine.js.map +2 -2
- package/dist/esm/decorators/addEventListener.js.map +2 -2
- package/dist/esm/decorators/applyAttribute.js +66 -43
- package/dist/esm/decorators/applyAttribute.js.map +2 -2
- package/dist/esm/decorators/applyClass.js +110 -43
- package/dist/esm/decorators/applyClass.js.map +3 -3
- package/dist/esm/decorators/applyNode.js +200 -112
- package/dist/esm/decorators/applyNode.js.map +2 -2
- package/dist/esm/decorators/applyProperty.js +49 -45
- package/dist/esm/decorators/applyProperty.js.map +2 -2
- package/dist/esm/decorators/applyStyle.js +92 -37
- package/dist/esm/decorators/applyStyle.js.map +3 -3
- package/dist/esm/decorators/{changedAttributeThis.js → changedAttribute.js} +3 -3
- package/dist/esm/decorators/changedAttribute.js.map +7 -0
- package/dist/esm/decorators/elementDefine.js +79 -29
- package/dist/esm/decorators/elementDefine.js.map +2 -2
- package/dist/esm/decorators/emitCustomEvent.js +80 -52
- package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
- package/dist/esm/decorators/index.js +1 -1
- package/dist/esm/decorators/index.js.map +1 -1
- package/dist/esm/decorators/publishSwcAppMessage.js +5 -5
- package/dist/esm/decorators/publishSwcAppMessage.js.map +3 -3
- package/dist/esm/decorators/query.js +133 -147
- package/dist/esm/decorators/query.js.map +3 -3
- package/dist/esm/decorators/queryAll.js +143 -132
- package/dist/esm/decorators/queryAll.js.map +3 -3
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js +2 -0
- package/dist/esm/decorators/subscribeSwcAppMessageWhileConnected.js.map +2 -2
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -0
- package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
- package/dist/esm/elements/SwcAppMixin.js +18 -3
- package/dist/esm/elements/SwcAppMixin.js.map +2 -2
- package/dist/esm/examples/RxJSOperatorsExample.js +266 -0
- package/dist/esm/examples/RxJSOperatorsExample.js.map +7 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +2 -2
- package/dist/esm/router/ElementRouter.js +4 -0
- package/dist/esm/router/ElementRouter.js.map +2 -2
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +1118 -633
- package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
- package/dist/types/SwcAppEngine.d.ts.map +1 -1
- package/dist/types/decorators/addEventListener.d.ts +19 -15
- package/dist/types/decorators/addEventListener.d.ts.map +1 -1
- package/dist/types/decorators/applyAttribute.d.ts +45 -26
- package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
- package/dist/types/decorators/applyClass.d.ts +19 -38
- package/dist/types/decorators/applyClass.d.ts.map +1 -1
- package/dist/types/decorators/applyNode.d.ts +175 -32
- package/dist/types/decorators/applyNode.d.ts.map +1 -1
- package/dist/types/decorators/applyProperty.d.ts +38 -25
- package/dist/types/decorators/applyProperty.d.ts.map +1 -1
- package/dist/types/decorators/applyStyle.d.ts +10 -9
- package/dist/types/decorators/applyStyle.d.ts.map +1 -1
- package/dist/types/decorators/{changedAttributeThis.d.ts → changedAttribute.d.ts} +2 -2
- package/dist/types/decorators/changedAttribute.d.ts.map +1 -0
- package/dist/types/decorators/elementDefine.d.ts.map +1 -1
- package/dist/types/decorators/emitCustomEvent.d.ts +6 -12
- package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
- package/dist/types/decorators/index.d.ts +1 -1
- package/dist/types/decorators/index.d.ts.map +1 -1
- package/dist/types/decorators/publishSwcAppMessage.d.ts +1 -1
- package/dist/types/decorators/publishSwcAppMessage.d.ts.map +1 -1
- package/dist/types/decorators/query.d.ts +16 -29
- package/dist/types/decorators/query.d.ts.map +1 -1
- package/dist/types/decorators/queryAll.d.ts +16 -23
- package/dist/types/decorators/queryAll.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts +1 -0
- package/dist/types/decorators/subscribeSwcAppMessageWhileConnected.d.ts.map +1 -1
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +2 -0
- package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +1 -1
- package/dist/types/elements/SwcAppMixin.d.ts +4 -4
- package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
- package/dist/types/examples/RxJSOperatorsExample.d.ts +94 -0
- package/dist/types/examples/RxJSOperatorsExample.d.ts.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/router/ElementRouter.d.ts.map +1 -1
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +1118 -633
- package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
- package/package.json +1 -1
- package/src/SwcAppEngine.ts +3 -1
- package/src/decorators/addEventListener.ts +31 -25
- package/src/decorators/applyAttribute.ts +164 -86
- package/src/decorators/applyClass.ts +161 -41
- package/src/decorators/applyNode.ts +408 -108
- package/src/decorators/applyProperty.ts +100 -89
- package/src/decorators/applyStyle.ts +131 -37
- package/src/decorators/{changedAttributeThis.ts → changedAttribute.ts} +1 -1
- package/src/decorators/elementDefine.ts +96 -30
- package/src/decorators/emitCustomEvent.ts +92 -60
- package/src/decorators/index.ts +1 -1
- package/src/decorators/publishSwcAppMessage.ts +1 -1
- package/src/decorators/query.ts +155 -162
- package/src/decorators/queryAll.ts +157 -139
- package/src/decorators/subscribeSwcAppMessageWhileConnected.ts +1 -0
- package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +3 -1
- package/src/elements/SwcAppMixin.ts +43 -24
- package/src/examples/RxJSOperatorsExample.ts +279 -0
- package/src/index.ts +2 -0
- package/src/router/ElementRouter.ts +4 -0
- package/src/types/window.d.ts +3 -0
- package/dist/cjs/decorators/changedAttributeThis.js.map +0 -7
- package/dist/esm/decorators/changedAttributeThis.js.map +0 -7
- package/dist/types/decorators/changedAttributeThis.d.ts.map +0 -1
|
@@ -7,6 +7,73 @@ export const CLASS_METADATA_KEY = Symbol.for('simple-web-component:class');
|
|
|
7
7
|
|
|
8
8
|
export type ClassAction = 'set' | 'update' | 'add' | 'remove' | 'toggle';
|
|
9
9
|
|
|
10
|
+
/**
|
|
11
|
+
* Resolve selector to string or elements
|
|
12
|
+
* Handles function-based selectors and returns elements if applicable
|
|
13
|
+
*/
|
|
14
|
+
const resolveSelector = (selector: ClassSelector, inst: any, win: Window): string | HTMLElement[] => {
|
|
15
|
+
if (typeof selector === 'function') {
|
|
16
|
+
const hostSet = SwcUtils.getHelperAndHostSet(win, inst);
|
|
17
|
+
const result = selector(inst, hostSet);
|
|
18
|
+
|
|
19
|
+
if (result instanceof win.Element) {
|
|
20
|
+
return [result as HTMLElement];
|
|
21
|
+
}
|
|
22
|
+
if (result instanceof win.NodeList) {
|
|
23
|
+
return Array.from(result) as HTMLElement[];
|
|
24
|
+
}
|
|
25
|
+
if (Array.isArray(result)) {
|
|
26
|
+
return result as HTMLElement[];
|
|
27
|
+
}
|
|
28
|
+
if (result === null) {
|
|
29
|
+
return [];
|
|
30
|
+
}
|
|
31
|
+
return result as string;
|
|
32
|
+
}
|
|
33
|
+
return selector as string;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Get target elements from selector
|
|
38
|
+
*/
|
|
39
|
+
const getTargetElements = (selector: ClassSelector, inst: any, win: Window, root: string): HTMLElement[] => {
|
|
40
|
+
const resolved = resolveSelector(selector, inst, win);
|
|
41
|
+
|
|
42
|
+
if (Array.isArray(resolved)) {
|
|
43
|
+
return resolved;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const stringSelector = resolved as string;
|
|
47
|
+
const targetEls: HTMLElement[] = [];
|
|
48
|
+
const host = inst as unknown as HTMLElement;
|
|
49
|
+
const hostSet = SwcUtils.getHelperAndHostSet(win, inst);
|
|
50
|
+
|
|
51
|
+
const applyRoot = (t: any) => {
|
|
52
|
+
if (!t || !(t instanceof win.HTMLElement)) return;
|
|
53
|
+
targetEls.push(t);
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
if (stringSelector === '$this' || !stringSelector) applyRoot(host);
|
|
57
|
+
else if (stringSelector === '$host') applyRoot(hostSet.$host);
|
|
58
|
+
else if (stringSelector === '$parentHost') applyRoot(hostSet.$parentHost);
|
|
59
|
+
else if (stringSelector === '$appHost') applyRoot(hostSet.$appHost);
|
|
60
|
+
else if (stringSelector === '$firstHost') applyRoot(hostSet.$firstHost);
|
|
61
|
+
else if (stringSelector === '$lastHost') applyRoot(hostSet.$lastHost);
|
|
62
|
+
else if (stringSelector === '$firstAppHost') applyRoot(hostSet.$firstAppHost);
|
|
63
|
+
else if (stringSelector === '$lastAppHost') applyRoot(hostSet.$lastAppHost);
|
|
64
|
+
else if (stringSelector === '$hosts') hostSet.$hosts.forEach(applyRoot);
|
|
65
|
+
else if (stringSelector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);
|
|
66
|
+
else {
|
|
67
|
+
const targetRoot = root === 'auto' ? (host.shadowRoot || host) : (root === 'shadow' ? host.shadowRoot : host);
|
|
68
|
+
if (targetRoot) {
|
|
69
|
+
const found = targetRoot.querySelectorAll(stringSelector);
|
|
70
|
+
if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return targetEls;
|
|
75
|
+
};
|
|
76
|
+
|
|
10
77
|
export interface ClassApplyOptions extends SwcQueryOptions {
|
|
11
78
|
filter?: (target: HTMLElement, value: any, meta: {currentThis: any, helper: HelperHostSet}) => boolean;
|
|
12
79
|
/**
|
|
@@ -17,15 +84,17 @@ export interface ClassApplyOptions extends SwcQueryOptions {
|
|
|
17
84
|
valueKey?: symbol | string;
|
|
18
85
|
}
|
|
19
86
|
|
|
87
|
+
export type ClassSelector = string | ((currentThis: any, helper: HelperHostSet) => NodeList | Element | Element[] | null);
|
|
88
|
+
|
|
20
89
|
export interface ClassApplyMetadata {
|
|
21
90
|
propertyKey: string | symbol;
|
|
22
|
-
selector:
|
|
91
|
+
selector: ClassSelector;
|
|
23
92
|
action: ClassAction;
|
|
24
93
|
options: ClassApplyOptions;
|
|
25
94
|
}
|
|
26
95
|
|
|
27
96
|
function createClassDecorator(action: ClassAction) {
|
|
28
|
-
return (selector:
|
|
97
|
+
return (selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}): MethodDecorator => {
|
|
29
98
|
return (target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor) => {
|
|
30
99
|
const constructor = target.constructor;
|
|
31
100
|
let metaList = ReflectUtils.getOwnMetadata(CLASS_METADATA_KEY, constructor) as Map<string | symbol, ClassApplyMetadata>;
|
|
@@ -72,30 +141,7 @@ function createClassDecorator(action: ClassAction) {
|
|
|
72
141
|
const host = this as unknown as HTMLElement;
|
|
73
142
|
const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };
|
|
74
143
|
const r = finalOptions.root || 'auto';
|
|
75
|
-
const targetEls
|
|
76
|
-
|
|
77
|
-
const applyRoot = (t: any) => {
|
|
78
|
-
if (!t || !(t instanceof win.HTMLElement)) return;
|
|
79
|
-
targetEls.push(t);
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
if (selector === '$this' || !selector) applyRoot(host);
|
|
83
|
-
else if (selector === '$host') applyRoot(hostSet.$host);
|
|
84
|
-
else if (selector === '$parentHost') applyRoot(hostSet.$parentHost);
|
|
85
|
-
else if (selector === '$appHost') applyRoot(hostSet.$appHost);
|
|
86
|
-
else if (selector === '$firstHost') applyRoot(hostSet.$firstHost);
|
|
87
|
-
else if (selector === '$lastHost') applyRoot(hostSet.$lastHost);
|
|
88
|
-
else if (selector === '$firstAppHost') applyRoot(hostSet.$firstAppHost);
|
|
89
|
-
else if (selector === '$lastAppHost') applyRoot(hostSet.$lastAppHost);
|
|
90
|
-
else if (selector === '$hosts') hostSet.$hosts.forEach(applyRoot);
|
|
91
|
-
else if (selector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);
|
|
92
|
-
else {
|
|
93
|
-
const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);
|
|
94
|
-
if (targetRoot) {
|
|
95
|
-
const found = targetRoot.querySelectorAll(selector);
|
|
96
|
-
if (found) targetEls.push(...(Array.from(found) as HTMLElement[]));
|
|
97
|
-
}
|
|
98
|
-
}
|
|
144
|
+
const targetEls = getTargetElements(selector, this, win, r);
|
|
99
145
|
|
|
100
146
|
targetEls.forEach(targetEl => {
|
|
101
147
|
if (finalOptions.filter && !finalOptions.filter(targetEl, resolvedValue, {currentThis: this, helper: hostSet})) {
|
|
@@ -163,25 +209,99 @@ function createClassDecorator(action: ClassAction) {
|
|
|
163
209
|
};
|
|
164
210
|
}
|
|
165
211
|
|
|
166
|
-
export function applyClass(
|
|
167
|
-
|
|
212
|
+
export function applyClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
|
|
213
|
+
export function applyClass(selector: ClassSelector, action?: ClassAction, options?: ClassApplyOptions): MethodDecorator;
|
|
214
|
+
export function applyClass(selectorOrTarget?: any, actionOrPropertyKey?: any, optionsOrDescriptor?: any): any {
|
|
215
|
+
// Bare decorator: @applyClass
|
|
216
|
+
if (optionsOrDescriptor !== undefined && (typeof actionOrPropertyKey === 'string' || typeof actionOrPropertyKey === 'symbol')) {
|
|
217
|
+
return createClassDecorator('update')('$this', {})(selectorOrTarget as Object, actionOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);
|
|
218
|
+
}
|
|
219
|
+
// With selector
|
|
220
|
+
if (typeof selectorOrTarget === 'string') {
|
|
221
|
+
const action = (typeof actionOrPropertyKey === 'string' ? actionOrPropertyKey : 'update') as ClassAction;
|
|
222
|
+
const options = (typeof actionOrPropertyKey === 'object' ? actionOrPropertyKey : optionsOrDescriptor) as ClassApplyOptions | undefined;
|
|
223
|
+
return createClassDecorator(action)(selectorOrTarget, options);
|
|
224
|
+
}
|
|
225
|
+
// Without selector (defaults to $this)
|
|
226
|
+
const action = (typeof selectorOrTarget === 'string' ? selectorOrTarget : 'update') as ClassAction;
|
|
227
|
+
const options = (typeof selectorOrTarget === 'object' ? selectorOrTarget : actionOrPropertyKey) as ClassApplyOptions | undefined;
|
|
228
|
+
return createClassDecorator(action)('$this', options);
|
|
168
229
|
}
|
|
169
230
|
|
|
170
|
-
export
|
|
171
|
-
export
|
|
172
|
-
export
|
|
173
|
-
|
|
174
|
-
|
|
231
|
+
export function setClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
|
|
232
|
+
export function setClass(selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options?: ClassApplyOptions): MethodDecorator;
|
|
233
|
+
export function setClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {
|
|
234
|
+
// Bare decorator: @setClass
|
|
235
|
+
if (optionsOrDescriptor !== undefined && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {
|
|
236
|
+
return createClassDecorator('set')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);
|
|
237
|
+
}
|
|
238
|
+
// With selector
|
|
239
|
+
if (typeof selectorOrTarget === 'string') {
|
|
240
|
+
return createClassDecorator('set')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);
|
|
241
|
+
}
|
|
242
|
+
// Without selector (defaults to $this)
|
|
243
|
+
return createClassDecorator('set')('$this', selectorOrTarget as ClassApplyOptions);
|
|
244
|
+
}
|
|
175
245
|
|
|
176
|
-
|
|
177
|
-
export function
|
|
178
|
-
|
|
246
|
+
export function updateClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
|
|
247
|
+
export function updateClass(selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options?: ClassApplyOptions): MethodDecorator;
|
|
248
|
+
export function updateClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {
|
|
249
|
+
// Bare decorator: @updateClass
|
|
250
|
+
if (optionsOrDescriptor !== undefined && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {
|
|
251
|
+
return createClassDecorator('update')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);
|
|
252
|
+
}
|
|
253
|
+
// With selector
|
|
254
|
+
if (typeof selectorOrTarget === 'string') {
|
|
255
|
+
return createClassDecorator('update')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);
|
|
256
|
+
}
|
|
257
|
+
// Without selector (defaults to $this)
|
|
258
|
+
return createClassDecorator('update')('$this', selectorOrTarget as ClassApplyOptions);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
export function addClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
|
|
262
|
+
export function addClass(selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options?: ClassApplyOptions): MethodDecorator;
|
|
263
|
+
export function addClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {
|
|
264
|
+
// Bare decorator: @addClass
|
|
265
|
+
if (optionsOrDescriptor !== undefined && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {
|
|
266
|
+
return createClassDecorator('add')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);
|
|
267
|
+
}
|
|
268
|
+
// With selector
|
|
269
|
+
if (typeof selectorOrTarget === 'string') {
|
|
270
|
+
return createClassDecorator('add')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);
|
|
271
|
+
}
|
|
272
|
+
// Without selector (defaults to $this)
|
|
273
|
+
return createClassDecorator('add')('$this', selectorOrTarget as ClassApplyOptions);
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
export function removeClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
|
|
277
|
+
export function removeClass(selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options?: ClassApplyOptions): MethodDecorator;
|
|
278
|
+
export function removeClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {
|
|
279
|
+
// Bare decorator: @removeClass
|
|
280
|
+
if (optionsOrDescriptor !== undefined && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {
|
|
281
|
+
return createClassDecorator('remove')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);
|
|
282
|
+
}
|
|
283
|
+
// With selector
|
|
284
|
+
if (typeof selectorOrTarget === 'string') {
|
|
285
|
+
return createClassDecorator('remove')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);
|
|
286
|
+
}
|
|
287
|
+
// Without selector (defaults to $this)
|
|
288
|
+
return createClassDecorator('remove')('$this', selectorOrTarget as ClassApplyOptions);
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export function toggleClass(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): PropertyDescriptor | void;
|
|
292
|
+
export function toggleClass(selector: ClassSelector, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options?: ClassApplyOptions): MethodDecorator;
|
|
293
|
+
export function toggleClass(selectorOrTarget?: any, classMapOrOptionsOrPropertyKey?: any, optionsOrDescriptor?: any): any {
|
|
294
|
+
// Bare decorator: @toggleClass
|
|
295
|
+
if (optionsOrDescriptor !== undefined && (typeof classMapOrOptionsOrPropertyKey === 'string' || typeof classMapOrOptionsOrPropertyKey === 'symbol')) {
|
|
296
|
+
return createClassDecorator('toggle')('$this', {})(selectorOrTarget as Object, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as PropertyDescriptor);
|
|
297
|
+
}
|
|
298
|
+
// With selector
|
|
299
|
+
if (typeof selectorOrTarget === 'string') {
|
|
300
|
+
return createClassDecorator('toggle')(selectorOrTarget, classMapOrOptionsOrPropertyKey, optionsOrDescriptor as ClassApplyOptions);
|
|
301
|
+
}
|
|
302
|
+
// Without selector (defaults to $this)
|
|
303
|
+
return createClassDecorator('toggle')('$this', selectorOrTarget as ClassApplyOptions);
|
|
179
304
|
}
|
|
180
|
-
export const setClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('set')('$this', classMapOrOptions, options);
|
|
181
|
-
export const updateClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('update')('$this', classMapOrOptions, options);
|
|
182
|
-
export const addClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('add')('$this', classMapOrOptions, options);
|
|
183
|
-
export const removeClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')('$this', classMapOrOptions, options);
|
|
184
|
-
export const toggleClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')('$this', classMapOrOptions, options);
|
|
185
305
|
|
|
186
306
|
export const findAllClassMetadata = (target: any): Map<string | symbol, ClassApplyMetadata> => {
|
|
187
307
|
const result = new Map<string | symbol, ClassApplyMetadata>();
|