@dooboostore/simple-web-component 1.0.34 → 1.0.36

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.
Files changed (170) hide show
  1. package/README.md +44 -51
  2. package/dist/cjs/decorators/addEventListener.js +12 -4
  3. package/dist/cjs/decorators/addEventListener.js.map +2 -2
  4. package/dist/cjs/decorators/applyAttribute.js +19 -18
  5. package/dist/cjs/decorators/applyAttribute.js.map +2 -2
  6. package/dist/cjs/decorators/applyClass.js +23 -22
  7. package/dist/cjs/decorators/applyClass.js.map +2 -2
  8. package/dist/cjs/decorators/applyNode.js +22 -17
  9. package/dist/cjs/decorators/applyNode.js.map +2 -2
  10. package/dist/cjs/decorators/applyStyle.js +20 -19
  11. package/dist/cjs/decorators/applyStyle.js.map +2 -2
  12. package/dist/cjs/decorators/attribute.js +17 -16
  13. package/dist/cjs/decorators/attribute.js.map +2 -2
  14. package/dist/cjs/decorators/{changedAttributeHost.js → changedAttributeThis.js} +6 -6
  15. package/dist/cjs/decorators/changedAttributeThis.js.map +7 -0
  16. package/dist/cjs/decorators/elementDefine.js +234 -188
  17. package/dist/cjs/decorators/elementDefine.js.map +2 -2
  18. package/dist/cjs/decorators/emitCustomEvent.js +24 -16
  19. package/dist/cjs/decorators/emitCustomEvent.js.map +2 -2
  20. package/dist/cjs/decorators/index.js +1 -1
  21. package/dist/cjs/decorators/index.js.map +1 -1
  22. package/dist/cjs/decorators/lifecycles.js +15 -17
  23. package/dist/cjs/decorators/lifecycles.js.map +2 -2
  24. package/dist/cjs/decorators/query.js +38 -60
  25. package/dist/cjs/decorators/query.js.map +2 -2
  26. package/dist/cjs/decorators/queryAll.js +31 -63
  27. package/dist/cjs/decorators/queryAll.js.map +2 -2
  28. package/dist/cjs/decorators/setProperty.js +13 -12
  29. package/dist/cjs/decorators/setProperty.js.map +2 -2
  30. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -2
  31. package/dist/cjs/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
  32. package/dist/cjs/elements/SwcAppEngine.js +8 -2
  33. package/dist/cjs/elements/SwcAppEngine.js.map +2 -2
  34. package/dist/cjs/elements/SwcAppMixin.js +120 -65
  35. package/dist/cjs/elements/SwcAppMixin.js.map +2 -2
  36. package/dist/cjs/elements/SwcAsync.js +31 -21
  37. package/dist/cjs/elements/SwcAsync.js.map +2 -2
  38. package/dist/cjs/elements/SwcChoose.js +53 -34
  39. package/dist/cjs/elements/SwcChoose.js.map +2 -2
  40. package/dist/cjs/elements/SwcIf.js +54 -32
  41. package/dist/cjs/elements/SwcIf.js.map +2 -2
  42. package/dist/cjs/elements/SwcLoop.js +111 -37
  43. package/dist/cjs/elements/SwcLoop.js.map +2 -2
  44. package/dist/cjs/elements/register.js +249 -122
  45. package/dist/cjs/elements/register.js.map +2 -2
  46. package/dist/cjs/router/ElementRouter.js +4 -2
  47. package/dist/cjs/router/ElementRouter.js.map +1 -1
  48. package/dist/cjs/types.js.map +1 -1
  49. package/dist/cjs/utils/Utils.js +31 -17
  50. package/dist/cjs/utils/Utils.js.map +2 -2
  51. package/dist/esm/decorators/addEventListener.js +12 -4
  52. package/dist/esm/decorators/addEventListener.js.map +2 -2
  53. package/dist/esm/decorators/applyAttribute.js +19 -18
  54. package/dist/esm/decorators/applyAttribute.js.map +2 -2
  55. package/dist/esm/decorators/applyClass.js +23 -22
  56. package/dist/esm/decorators/applyClass.js.map +2 -2
  57. package/dist/esm/decorators/applyNode.js +22 -17
  58. package/dist/esm/decorators/applyNode.js.map +2 -2
  59. package/dist/esm/decorators/applyStyle.js +20 -19
  60. package/dist/esm/decorators/applyStyle.js.map +2 -2
  61. package/dist/esm/decorators/attribute.js +17 -16
  62. package/dist/esm/decorators/attribute.js.map +2 -2
  63. package/dist/esm/decorators/{changedAttributeHost.js → changedAttributeThis.js} +3 -3
  64. package/dist/esm/decorators/changedAttributeThis.js.map +7 -0
  65. package/dist/esm/decorators/elementDefine.js +233 -187
  66. package/dist/esm/decorators/elementDefine.js.map +2 -2
  67. package/dist/esm/decorators/emitCustomEvent.js +24 -16
  68. package/dist/esm/decorators/emitCustomEvent.js.map +2 -2
  69. package/dist/esm/decorators/index.js +1 -1
  70. package/dist/esm/decorators/index.js.map +1 -1
  71. package/dist/esm/decorators/lifecycles.js +15 -17
  72. package/dist/esm/decorators/lifecycles.js.map +2 -2
  73. package/dist/esm/decorators/query.js +38 -60
  74. package/dist/esm/decorators/query.js.map +2 -2
  75. package/dist/esm/decorators/queryAll.js +31 -63
  76. package/dist/esm/decorators/queryAll.js.map +2 -2
  77. package/dist/esm/decorators/setProperty.js +13 -12
  78. package/dist/esm/decorators/setProperty.js.map +2 -2
  79. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js +2 -2
  80. package/dist/esm/decorators/subscribeSwcAppRouteChangeWhileConnected.js.map +2 -2
  81. package/dist/esm/elements/SwcAppEngine.js +9 -2
  82. package/dist/esm/elements/SwcAppEngine.js.map +2 -2
  83. package/dist/esm/elements/SwcAppMixin.js +122 -66
  84. package/dist/esm/elements/SwcAppMixin.js.map +2 -2
  85. package/dist/esm/elements/SwcAsync.js +32 -22
  86. package/dist/esm/elements/SwcAsync.js.map +2 -2
  87. package/dist/esm/elements/SwcChoose.js +54 -35
  88. package/dist/esm/elements/SwcChoose.js.map +2 -2
  89. package/dist/esm/elements/SwcIf.js +55 -33
  90. package/dist/esm/elements/SwcIf.js.map +2 -2
  91. package/dist/esm/elements/SwcLoop.js +112 -38
  92. package/dist/esm/elements/SwcLoop.js.map +2 -2
  93. package/dist/esm/elements/register.js +250 -123
  94. package/dist/esm/elements/register.js.map +2 -2
  95. package/dist/esm/router/ElementRouter.js +5 -2
  96. package/dist/esm/router/ElementRouter.js.map +1 -1
  97. package/dist/esm/types.js.map +1 -1
  98. package/dist/esm/utils/Utils.js +31 -17
  99. package/dist/esm/utils/Utils.js.map +2 -2
  100. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js +563 -557
  101. package/dist/esm-bundle/dooboostore-simple-web-component.esm.js.map +4 -4
  102. package/dist/types/decorators/addEventListener.d.ts +5 -7
  103. package/dist/types/decorators/addEventListener.d.ts.map +1 -1
  104. package/dist/types/decorators/applyAttribute.d.ts +4 -4
  105. package/dist/types/decorators/applyAttribute.d.ts.map +1 -1
  106. package/dist/types/decorators/applyClass.d.ts +6 -6
  107. package/dist/types/decorators/applyClass.d.ts.map +1 -1
  108. package/dist/types/decorators/applyNode.d.ts +7 -6
  109. package/dist/types/decorators/applyNode.d.ts.map +1 -1
  110. package/dist/types/decorators/applyStyle.d.ts +4 -4
  111. package/dist/types/decorators/applyStyle.d.ts.map +1 -1
  112. package/dist/types/decorators/attribute.d.ts +5 -5
  113. package/dist/types/decorators/attribute.d.ts.map +1 -1
  114. package/dist/types/decorators/changedAttributeThis.d.ts +18 -0
  115. package/dist/types/decorators/changedAttributeThis.d.ts.map +1 -0
  116. package/dist/types/decorators/elementDefine.d.ts.map +1 -1
  117. package/dist/types/decorators/emitCustomEvent.d.ts +11 -12
  118. package/dist/types/decorators/emitCustomEvent.d.ts.map +1 -1
  119. package/dist/types/decorators/index.d.ts +1 -1
  120. package/dist/types/decorators/lifecycles.d.ts +10 -7
  121. package/dist/types/decorators/lifecycles.d.ts.map +1 -1
  122. package/dist/types/decorators/query.d.ts +17 -63
  123. package/dist/types/decorators/query.d.ts.map +1 -1
  124. package/dist/types/decorators/queryAll.d.ts +6 -63
  125. package/dist/types/decorators/queryAll.d.ts.map +1 -1
  126. package/dist/types/decorators/setProperty.d.ts +1 -1
  127. package/dist/types/decorators/setProperty.d.ts.map +1 -1
  128. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts +4 -5
  129. package/dist/types/decorators/subscribeSwcAppRouteChangeWhileConnected.d.ts.map +1 -1
  130. package/dist/types/elements/SwcAppEngine.d.ts +4 -1
  131. package/dist/types/elements/SwcAppEngine.d.ts.map +1 -1
  132. package/dist/types/elements/SwcAppMixin.d.ts +11 -8
  133. package/dist/types/elements/SwcAppMixin.d.ts.map +1 -1
  134. package/dist/types/elements/register.d.ts.map +1 -1
  135. package/dist/types/types.d.ts +3 -2
  136. package/dist/types/types.d.ts.map +1 -1
  137. package/dist/types/utils/Utils.d.ts +11 -8
  138. package/dist/types/utils/Utils.d.ts.map +1 -1
  139. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js +563 -557
  140. package/dist/umd-bundle/dooboostore-simple-web-component.umd.js.map +4 -4
  141. package/package.json +3 -3
  142. package/src/decorators/addEventListener.ts +11 -9
  143. package/src/decorators/applyAttribute.ts +16 -15
  144. package/src/decorators/applyClass.ts +18 -17
  145. package/src/decorators/applyNode.ts +34 -21
  146. package/src/decorators/applyStyle.ts +17 -16
  147. package/src/decorators/attribute.ts +21 -20
  148. package/src/decorators/{changedAttributeHost.ts → changedAttributeThis.ts} +13 -14
  149. package/src/decorators/elementDefine.ts +402 -358
  150. package/src/decorators/emitCustomEvent.ts +40 -31
  151. package/src/decorators/index.ts +1 -1
  152. package/src/decorators/lifecycles.ts +11 -10
  153. package/src/decorators/query.ts +51 -124
  154. package/src/decorators/queryAll.ts +30 -127
  155. package/src/decorators/setProperty.ts +12 -11
  156. package/src/decorators/subscribeSwcAppRouteChangeWhileConnected.ts +10 -10
  157. package/src/elements/SwcAppEngine.ts +10 -3
  158. package/src/elements/SwcAppMixin.ts +177 -97
  159. package/src/elements/SwcAsync.ts +32 -21
  160. package/src/elements/SwcChoose.ts +74 -37
  161. package/src/elements/SwcIf.ts +60 -23
  162. package/src/elements/SwcLoop.ts +141 -28
  163. package/src/elements/register.ts +300 -102
  164. package/src/types.ts +6 -5
  165. package/src/utils/Utils.ts +40 -23
  166. package/tsconfig.json +2 -2
  167. package/dist/cjs/decorators/changedAttributeHost.js.map +0 -7
  168. package/dist/esm/decorators/changedAttributeHost.js.map +0 -7
  169. package/dist/types/decorators/changedAttributeHost.d.ts +0 -19
  170. package/dist/types/decorators/changedAttributeHost.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dooboostore/simple-web-component",
3
- "version": "1.0.34",
3
+ "version": "1.0.36",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/cjs/index.js",
@@ -93,9 +93,9 @@
93
93
  "webpack-cli": "^5.1.4",
94
94
  "webpack-dev-server": "^5.2.0",
95
95
  "@dooboostore/core": "1.0.31",
96
- "@dooboostore/simple-boot": "1.0.55",
96
+ "@dooboostore/core-node": "1.0.12",
97
97
  "@dooboostore/core-web": "1.0.10",
98
- "@dooboostore/core-node": "1.0.12"
98
+ "@dooboostore/simple-boot": "1.0.55"
99
99
  },
100
100
  "scripts": {
101
101
  "clean": "rm -rf dist",
@@ -47,19 +47,21 @@ export const getAddEventListenerMetadata = (target: any): AddEventListenerMetada
47
47
  };
48
48
 
49
49
  /**
50
- * @addEventListenerHost decorator - simplified version of @addEventListener for :host selector
51
- * Usage: @addEventListenerHost('click')
52
- * Usage: @addEventListenerHost('click', { stopPropagation: true })
50
+ * @addEventListenerThis decorator - simplified version of @addEventListener for $this selector
53
51
  */
54
- export function addEventListenerHost(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {
55
- return addEventListener(':host', type, options);
52
+ export function addEventListenerThis(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {
53
+ return addEventListener('$this', type, options);
56
54
  }
57
55
 
58
56
  /**
59
- * @addEventListenerAppHost decorator - simplified version of @addEventListener for :appHost selector
60
- * Usage: @addEventListenerAppHost('click')
61
- * Usage: @addEventListenerAppHost('click', { stopPropagation: true })
57
+ * @addEventListenerAppHost decorator - simplified version of @addEventListener for $appHost selector
62
58
  */
63
59
  export function addEventListenerAppHost(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {
64
- return addEventListener(':appHost', type, options);
60
+ return addEventListener('$appHost', type, options);
61
+ }
62
+ export function addEventListenerWindow(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {
63
+ return addEventListener('$window', type, options);
64
+ }
65
+ export function addEventListenerDocument(type: string, options?: AddEventListenerBaseOptions & SwcQueryOptions): MethodDecorator {
66
+ return addEventListener('$document', type, options);
65
67
  }
@@ -61,15 +61,16 @@ function createAttributeDecorator(action: AttributeAction) {
61
61
  targetEls.push(t);
62
62
  };
63
63
 
64
- if (selector === ':parentHost') applyRoot(hostSet.$parentHost);
65
- else if (selector === ':appHost') applyRoot(hostSet.$appHost);
66
- else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);
67
- else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);
68
- else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);
69
- else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);
70
- else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);
71
- else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);
72
- else if (selector === ':host' || !selector) applyRoot(host);
64
+ if (selector === '$this' || !selector) applyRoot(host);
65
+ else if (selector === '$host') applyRoot(hostSet.$host);
66
+ else if (selector === '$parentHost') applyRoot(hostSet.$parentHost);
67
+ else if (selector === '$appHost') applyRoot(hostSet.$appHost);
68
+ else if (selector === '$firstHost') applyRoot(hostSet.$firstHost);
69
+ else if (selector === '$lastHost') applyRoot(hostSet.$lastHost);
70
+ else if (selector === '$firstAppHost') applyRoot(hostSet.$firstAppHost);
71
+ else if (selector === '$lastAppHost') applyRoot(hostSet.$lastAppHost);
72
+ else if (selector === '$hosts') hostSet.$hosts.forEach(applyRoot);
73
+ else if (selector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);
73
74
  else {
74
75
  const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);
75
76
  if (targetRoot) {
@@ -140,13 +141,13 @@ export const setAttribute = (selector: string, nameOrOptions?: string | Attribut
140
141
  export const updateAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('update')(selector, nameOrOptions, options);
141
142
  export const removeAttribute = (selector: string, nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('remove')(selector, nameOrOptions, options);
142
143
 
143
- // Host versions
144
- export function applyAttributeHost(action: AttributeAction = 'update', options: AttributeApplyOptions = {}): MethodDecorator {
145
- return createAttributeDecorator(action)(':host', options);
144
+ // This versions
145
+ export function applyAttributeThis(action: AttributeAction = 'update', options: AttributeApplyOptions = {}): MethodDecorator {
146
+ return createAttributeDecorator(action)('$this', options);
146
147
  }
147
- export const setAttributeHost = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('set')(':host', nameOrOptions, options);
148
- export const updateAttributeHost = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('update')(':host', nameOrOptions, options);
149
- export const removeAttributeHost = (nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('remove')(':host', nameOrOptions, options);
148
+ export const setAttributeThis = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('set')('$this', nameOrOptions, options);
149
+ export const updateAttributeThis = (nameOrOptions: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('update')('$this', nameOrOptions, options);
150
+ export const removeAttributeThis = (nameOrOptions?: string | AttributeApplyOptions, options: AttributeApplyOptions = {}) => createAttributeDecorator('remove')('$this', nameOrOptions, options);
150
151
 
151
152
  export const findAllAttributeApplyMetadata = (target: any): Map<string | symbol, AttributeApplyMetadata> => {
152
153
  const result = new Map<string | symbol, AttributeApplyMetadata>();
@@ -57,15 +57,16 @@ function createClassDecorator(action: ClassAction) {
57
57
  targetEls.push(t);
58
58
  };
59
59
 
60
- if (selector === ':parentHost') applyRoot(hostSet.$parentHost);
61
- else if (selector === ':appHost') applyRoot(hostSet.$appHost);
62
- else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);
63
- else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);
64
- else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);
65
- else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);
66
- else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);
67
- else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);
68
- else if (selector === ':host' || !selector) applyRoot(host);
60
+ if (selector === '$this' || !selector) applyRoot(host);
61
+ else if (selector === '$host') applyRoot(hostSet.$host);
62
+ else if (selector === '$parentHost') applyRoot(hostSet.$parentHost);
63
+ else if (selector === '$appHost') applyRoot(hostSet.$appHost);
64
+ else if (selector === '$firstHost') applyRoot(hostSet.$firstHost);
65
+ else if (selector === '$lastHost') applyRoot(hostSet.$lastHost);
66
+ else if (selector === '$firstAppHost') applyRoot(hostSet.$firstAppHost);
67
+ else if (selector === '$lastAppHost') applyRoot(hostSet.$lastAppHost);
68
+ else if (selector === '$hosts') hostSet.$hosts.forEach(applyRoot);
69
+ else if (selector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);
69
70
  else {
70
71
  const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);
71
72
  if (targetRoot) {
@@ -150,15 +151,15 @@ export const addClass = (selector: string, classMapOrOptions?: string | { [class
150
151
  export const removeClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')(selector, classMapOrOptions, options);
151
152
  export const toggleClass = (selector: string, classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')(selector, classMapOrOptions, options);
152
153
 
153
- // Host versions
154
- export function applyClassHost(action: ClassAction = 'update', options: ClassApplyOptions = {}): MethodDecorator {
155
- return createClassDecorator(action)(':host', options);
154
+ // This versions
155
+ export function applyClassThis(action: ClassAction = 'update', options: ClassApplyOptions = {}): MethodDecorator {
156
+ return createClassDecorator(action)('$this', options);
156
157
  }
157
- export const setClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('set')(':host', classMapOrOptions, options);
158
- export const updateClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('update')(':host', classMapOrOptions, options);
159
- export const addClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('add')(':host', classMapOrOptions, options);
160
- export const removeClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')(':host', classMapOrOptions, options);
161
- export const toggleClassHost = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')(':host', classMapOrOptions, options);
158
+ export const setClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('set')('$this', classMapOrOptions, options);
159
+ export const updateClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('update')('$this', classMapOrOptions, options);
160
+ export const addClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('add')('$this', classMapOrOptions, options);
161
+ export const removeClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('remove')('$this', classMapOrOptions, options);
162
+ export const toggleClassThis = (classMapOrOptions?: string | { [className: string]: (el: HTMLElement, value: any, helper: HelperHostSet & { $this: any }) => boolean } | ClassApplyOptions, options: ClassApplyOptions = {}) => createClassDecorator('toggle')('$this', classMapOrOptions, options);
162
163
 
163
164
  export const findAllClassMetadata = (target: any): Map<string | symbol, ClassApplyMetadata> => {
164
165
  const result = new Map<string | symbol, ClassApplyMetadata>();
@@ -2,7 +2,15 @@ import { ReflectUtils } from '@dooboostore/core';
2
2
  import { ensureInit, getElementConfig } from './elementDefine';
3
3
  import { HelperHostSet, SwcRootType } from '../types';
4
4
  import { SwcUtils } from "../utils/Utils";
5
-
5
+ /*
6
+ <!-- beforebegin -->
7
+ <p>
8
+ <!-- afterbegin -->
9
+ foo
10
+ <!-- beforeend -->
11
+ </p>
12
+ <!-- afterend -->
13
+ */
6
14
  export type ApplyNodePosition = 'beforeBegin' | 'afterBegin' | 'beforeEnd' | 'afterEnd' | 'replace' | 'replaceChildren' | 'innerHtml' | 'innerText' | 'remove';
7
15
 
8
16
  export interface ApplyNodeOptions {
@@ -97,11 +105,12 @@ export function applyNode(selector: string, options: ApplyNodeOptions = { positi
97
105
  return t;
98
106
  };
99
107
 
100
- if (selector === ':host') return applyRoot(this);
101
- if (selector === ':parentHost') return applyRoot(hostSet.$parentHost);
102
- if (selector === ':appHost') return applyRoot(hostSet.$appHost);
103
- if (selector === ':firstHost') return applyRoot(hostSet.$firstHost);
104
- if (selector === ':lastHost') return applyRoot(hostSet.$lastHost);
108
+ if (selector === '$this') return applyRoot(this);
109
+ if (selector === '$host') return applyRoot(hostSet.$host);
110
+ if (selector === '$parentHost') return applyRoot(hostSet.$parentHost);
111
+ if (selector === '$appHost') return applyRoot(hostSet.$appHost);
112
+ if (selector === '$firstHost') return applyRoot(hostSet.$firstHost);
113
+ if (selector === '$lastHost') return applyRoot(hostSet.$lastHost);
105
114
 
106
115
  const targetRoot = applyRoot(this);
107
116
  return targetRoot ? targetRoot.querySelector(selector) : null;
@@ -149,28 +158,28 @@ export const findAllApplyNodeMetadata = (target: any): Map<string | symbol, Appl
149
158
  return result;
150
159
  };
151
160
 
152
- export function applyNodeHost(options: ApplyNodeOptions): MethodDecorator;
153
- export function applyNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
154
- export function applyNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {
155
- if (propertyKey !== undefined) return applyNode(':host', { position: 'beforeEnd' })(targetOrOptions, propertyKey, descriptor);
161
+ export function applyNodeThis(options: ApplyNodeOptions): MethodDecorator;
162
+ export function applyNodeThis(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
163
+ export function applyNodeThis(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {
164
+ if (propertyKey !== undefined) return applyNode('$this', { position: 'beforeEnd' })(targetOrOptions, propertyKey, descriptor);
156
165
  const opt = targetOrOptions || {};
157
- return applyNode(':host', { position: 'beforeEnd', ...opt });
166
+ return applyNode('$this', { position: 'beforeEnd', ...opt });
158
167
  }
159
168
 
160
- export function applyReplaceChildrenNodeHost(options: ApplyNodeOptions): MethodDecorator;
161
- export function applyReplaceChildrenNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
162
- export function applyReplaceChildrenNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {
163
- if (propertyKey !== undefined) return applyNode(':host', { position: 'replaceChildren' })(targetOrOptions, propertyKey, descriptor);
169
+ export function applyReplaceChildrenNodeThis(options: ApplyNodeOptions): MethodDecorator;
170
+ export function applyReplaceChildrenNodeThis(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
171
+ export function applyReplaceChildrenNodeThis(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {
172
+ if (propertyKey !== undefined) return applyNode('$this', { position: 'replaceChildren' })(targetOrOptions, propertyKey, descriptor);
164
173
  const opt = targetOrOptions || {};
165
- return applyNode(':host', { position: 'replaceChildren', ...opt });
174
+ return applyNode('$this', { position: 'replaceChildren', ...opt });
166
175
  }
167
176
 
168
- export function applyInnerHtmlNodeHost(options: ApplyNodeOptions): MethodDecorator;
169
- export function applyInnerHtmlNodeHost(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
170
- export function applyInnerHtmlNodeHost(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {
171
- if (propertyKey !== undefined) return applyNode(':host', { position: 'innerHtml' })(targetOrOptions, propertyKey, descriptor);
177
+ export function applyInnerHtmlNodeThis(options: ApplyNodeOptions): MethodDecorator;
178
+ export function applyInnerHtmlNodeThis(target: Object, propertyKey: string | symbol, descriptor: PropertyDescriptor): void;
179
+ export function applyInnerHtmlNodeThis(targetOrOptions?: any, propertyKey?: string | symbol, descriptor?: PropertyDescriptor): any {
180
+ if (propertyKey !== undefined) return applyNode('$this', { position: 'innerHtml' })(targetOrOptions, propertyKey, descriptor);
172
181
  const opt = targetOrOptions || {};
173
- return applyNode(':host', { position: 'innerHtml', ...opt });
182
+ return applyNode('$this', { position: 'innerHtml', ...opt });
174
183
  }
175
184
 
176
185
  export function applyReplaceChildrenNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {
@@ -180,3 +189,7 @@ export function applyReplaceChildrenNode(selector: string, options: ApplyNodeOpt
180
189
  export function applyInnerHtmlNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {
181
190
  return applyNode(selector, { ...options, position: 'innerHtml' });
182
191
  }
192
+
193
+ export function applyInnerTextNode(selector: string, options: ApplyNodeOptions = {}): MethodDecorator {
194
+ return applyNode(selector, { ...options, position: 'innerText' });
195
+ }
@@ -38,7 +38,7 @@ function createStyleDecorator(action: StyleAction) {
38
38
  if (resolvedValue !== undefined) {
39
39
  const win = (this as any).ownerDocument?.defaultView || window;
40
40
  const host = this as unknown as HTMLElement;
41
- const hostSet = SwcUtils.getHelperAndHostSet(win, host);
41
+ const hostSet = { ...SwcUtils.getHelperAndHostSet(win, host), $this: this };
42
42
  const r = options.root || 'auto';
43
43
  const targetEls: HTMLElement[] = [];
44
44
 
@@ -47,15 +47,16 @@ function createStyleDecorator(action: StyleAction) {
47
47
  targetEls.push(t);
48
48
  };
49
49
 
50
- if (selector === ':parentHost') applyRoot(hostSet.$parentHost);
51
- else if (selector === ':appHost') applyRoot(hostSet.$appHost);
52
- else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);
53
- else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);
54
- else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost);
55
- else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost);
56
- else if (selector === ':hosts') hostSet.$hosts.forEach(applyRoot);
57
- else if (selector === ':appHosts') hostSet.$appHosts.forEach(applyRoot);
58
- else if (selector === ':host' || !selector) applyRoot(host);
50
+ if (selector === '$this' || !selector) applyRoot(host);
51
+ else if (selector === '$host') applyRoot(hostSet.$host);
52
+ else if (selector === '$parentHost') applyRoot(hostSet.$parentHost);
53
+ else if (selector === '$appHost') applyRoot(hostSet.$appHost);
54
+ else if (selector === '$firstHost') applyRoot(hostSet.$firstHost);
55
+ else if (selector === '$lastHost') applyRoot(hostSet.$lastHost);
56
+ else if (selector === '$firstAppHost') applyRoot(hostSet.$firstAppHost);
57
+ else if (selector === '$lastAppHost') applyRoot(hostSet.$lastAppHost);
58
+ else if (selector === '$hosts') hostSet.$hosts.forEach(applyRoot);
59
+ else if (selector === '$appHosts') hostSet.$appHosts.forEach(applyRoot);
59
60
  else {
60
61
  const targetRoot = r === 'auto' ? (host.shadowRoot || host) : (r === 'shadow' ? host.shadowRoot : host);
61
62
  if (targetRoot) {
@@ -122,13 +123,13 @@ export const setStyle = (selector: string, options: StyleApplyOptions = {}) => c
122
123
  export const updateStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('update')(selector, options);
123
124
  export const removeStyle = (selector: string, options: StyleApplyOptions = {}) => createStyleDecorator('remove')(selector, options);
124
125
 
125
- // Host versions
126
- export function applyStyleHost(action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {
127
- return createStyleDecorator(action)(':host', options);
126
+ // This versions
127
+ export function applyStyleThis(action: StyleAction = 'update', options: StyleApplyOptions = {}): MethodDecorator {
128
+ return createStyleDecorator(action)('$this', options);
128
129
  }
129
- export const setStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('set')(':host', options);
130
- export const updateStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('update')(':host', options);
131
- export const removeStyleHost = (options: StyleApplyOptions = {}) => createStyleDecorator('remove')(':host', options);
130
+ export const setStyleThis = (options: StyleApplyOptions = {}) => createStyleDecorator('set')('$this', options);
131
+ export const updateStyleThis = (options: StyleApplyOptions = {}) => createStyleDecorator('update')('$this', options);
132
+ export const removeStyleThis = (options: StyleApplyOptions = {}) => createStyleDecorator('remove')('$this', options);
132
133
 
133
134
  export const findAllStyleMetadata = (target: any): Map<string | symbol, StyleApplyMetadata> => {
134
135
  const result = new Map<string | symbol, StyleApplyMetadata>();
@@ -41,7 +41,7 @@ export const getAttributeValue = (inst: any, attrName: string, options?: Attribu
41
41
 
42
42
  // 표현식 체크
43
43
  const ae = new ActionExpression(domVal);
44
- const expr = ae.getFirstExpression('call-return');
44
+ const expr = ae.getFirstExpression('callReturn');
45
45
  if (expr) {
46
46
  try {
47
47
  const result = FunctionUtils.executeReturn({
@@ -77,20 +77,21 @@ export const resolveTargetEls = (inst: any, selector: string, options: Attribute
77
77
  }
78
78
  };
79
79
 
80
- if (selector === ':host' || !selector) {
80
+ if (selector === '$this' || !selector) {
81
81
  applyRoot(inst);
82
- } else if (selector === ':window') {
82
+ } else if (selector === '$window') {
83
83
  results.push(currentWin);
84
- } else if (selector === ':document') {
84
+ } else if (selector === '$document') {
85
85
  results.push(currentWin.document);
86
86
  } else {
87
87
  const hostSet = SwcUtils.getHostSet(inst);
88
- if (selector === ':parentHost') applyRoot(hostSet.$parentHost);
89
- else if (selector === ':appHost') applyRoot(hostSet.$appHost as any);
90
- else if (selector === ':firstHost') applyRoot(hostSet.$firstHost);
91
- else if (selector === ':lastHost') applyRoot(hostSet.$lastHost);
92
- else if (selector === ':firstAppHost') applyRoot(hostSet.$firstAppHost as any);
93
- else if (selector === ':lastAppHost') applyRoot(hostSet.$lastAppHost as any);
88
+ if (selector === '$host') applyRoot(hostSet.$host);
89
+ else if (selector === '$parentHost') applyRoot(hostSet.$parentHost);
90
+ else if (selector === '$appHost') applyRoot(hostSet.$appHost as any);
91
+ else if (selector === '$firstHost') applyRoot(hostSet.$firstHost);
92
+ else if (selector === '$lastHost') applyRoot(hostSet.$lastHost);
93
+ else if (selector === '$firstAppHost') applyRoot(hostSet.$firstAppHost as any);
94
+ else if (selector === '$lastAppHost') applyRoot(hostSet.$lastAppHost as any);
94
95
  else {
95
96
  if (r === 'shadow') {
96
97
  const found = inst.shadowRoot?.querySelectorAll(selector);
@@ -189,29 +190,29 @@ export function attribute(selector: string, options: AttributeFieldOptions = {})
189
190
  }
190
191
 
191
192
  /**
192
- * @attributeHost decorator to sync a field value with the :host element's attribute.
193
+ * @attributeThis decorator to sync a field value with the $this element's attribute.
193
194
  */
194
- export function attributeHost(target: Object, propertyKey: string | symbol): void;
195
- export function attributeHost(options: AttributeFieldOptions): PropertyDecorator;
196
- export function attributeHost(attrName: string): PropertyDecorator;
197
- export function attributeHost(attrName: string, options: AttributeFieldOptions): PropertyDecorator;
198
- export function attributeHost(targetOrAttrOrOptions?: any, propertyKeyOrOptions?: any): any {
195
+ export function attributeThis(target: Object, propertyKey: string | symbol): void;
196
+ export function attributeThis(options: AttributeFieldOptions): PropertyDecorator;
197
+ export function attributeThis(attrName: string): PropertyDecorator;
198
+ export function attributeThis(attrName: string, options: AttributeFieldOptions): PropertyDecorator;
199
+ export function attributeThis(targetOrAttrOrOptions?: any, propertyKeyOrOptions?: any): any {
199
200
  if (propertyKeyOrOptions !== undefined && (typeof propertyKeyOrOptions === 'string' || typeof propertyKeyOrOptions === 'symbol')) {
200
- return attribute(':host', { name: String(propertyKeyOrOptions) })(targetOrAttrOrOptions, propertyKeyOrOptions);
201
+ return attribute('$this', { name: String(propertyKeyOrOptions) })(targetOrAttrOrOptions, propertyKeyOrOptions);
201
202
  }
202
203
 
203
204
  if (typeof targetOrAttrOrOptions === 'string') {
204
205
  const attrName = targetOrAttrOrOptions;
205
206
  const options = (typeof propertyKeyOrOptions === 'object' ? propertyKeyOrOptions : {}) as AttributeFieldOptions;
206
- return attribute(':host', { ...options, name: attrName });
207
+ return attribute('$this', { ...options, name: attrName });
207
208
  } else if (typeof targetOrAttrOrOptions === 'object') {
208
209
  const options = targetOrAttrOrOptions as AttributeFieldOptions;
209
210
  return (target: Object, propertyKey: string | symbol) => {
210
- return attribute(':host', { ...options, name: String(propertyKey) })(target, propertyKey);
211
+ return attribute('$this', { ...options, name: String(propertyKey) })(target, propertyKey);
211
212
  };
212
213
  } else {
213
214
  return (target: Object, propertyKey: string | symbol) => {
214
- return attribute(':host', { name: String(propertyKey) })(target, propertyKey);
215
+ return attribute('$this', { name: String(propertyKey) })(target, propertyKey);
215
216
  };
216
217
  }
217
218
  }
@@ -1,15 +1,16 @@
1
- import {ReflectUtils} from '@dooboostore/core';
1
+ import { ReflectUtils } from '@dooboostore/core';
2
2
 
3
3
  export const ON_ATTRIBUTE_CHANGED_METADATA_KEY = Symbol.for('simple-web-component:on-attribute-changed');
4
4
 
5
- export interface ChangedAttributeHostOptions {
5
+ export interface ChangedAttributeThisOptions {
6
6
  type?: typeof Number | typeof Boolean | typeof String;
7
+ while?: 'connected';
7
8
  }
8
9
 
9
- export interface ChangedAttributeHostMetadata {
10
+ export interface ChangedAttributeThisMetadata {
10
11
  attributeName: string;
11
12
  propertyKey: string | symbol;
12
- options: ChangedAttributeHostOptions;
13
+ options: ChangedAttributeThisOptions;
13
14
  }
14
15
 
15
16
  const convertValue = (val: any, type: any): any => {
@@ -20,14 +21,12 @@ const convertValue = (val: any, type: any): any => {
20
21
  };
21
22
 
22
23
  /**
23
- * @changedAttributeHost decorator - fires when any attribute on :host changes
24
- * Usage: @changedAttributeHost('data-product-id')
25
- * @changedAttributeHost('count', { type: Number })
24
+ * @changedAttributeThis decorator - fires when any attribute on $this changes
26
25
  */
27
- export function changedAttributeHost(attributeName?: string, options: ChangedAttributeHostOptions = {}): MethodDecorator {
26
+ export function changedAttributeThis(attributeName?: string, options: ChangedAttributeThisOptions = {}): MethodDecorator {
28
27
  return (target: Object, propertyKey: string | symbol) => {
29
28
  const constructor = target.constructor;
30
- let metaList = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) as ChangedAttributeHostMetadata[];
29
+ let metaList = ReflectUtils.getOwnMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) as ChangedAttributeThisMetadata[];
31
30
  if (!metaList) {
32
31
  metaList = [];
33
32
  ReflectUtils.defineMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, metaList, constructor);
@@ -42,16 +41,16 @@ export function changedAttributeHost(attributeName?: string, options: ChangedAtt
42
41
  };
43
42
  }
44
43
 
45
- export const getChangedAttributeMetadata = (target: any): ChangedAttributeHostMetadata[] | undefined => {
44
+ export const getChangedAttributeMetadata = (target: any): ChangedAttributeThisMetadata[] | undefined => {
46
45
  const constructor = target instanceof Function ? target : target.constructor;
47
46
  return ReflectUtils.getMetadata(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor);
48
47
  };
49
48
 
50
- export const findAllAttributeChangedMetadata = (target: any): Map<string, ChangedAttributeHostMetadata[]> => {
49
+ export const findAllAttributeChangedMetadata = (target: any): Map<string, ChangedAttributeThisMetadata[]> => {
51
50
  const constructor = target instanceof Function ? target : target.constructor;
52
- const metaList = ReflectUtils.findAllMetadata<ChangedAttributeHostMetadata[]>(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) || [];
53
-
54
- const result = new Map<string, ChangedAttributeHostMetadata[]>();
51
+ const metaList = ReflectUtils.findAllMetadata<ChangedAttributeThisMetadata[]>(ON_ATTRIBUTE_CHANGED_METADATA_KEY, constructor) || [];
52
+
53
+ const result = new Map<string, ChangedAttributeThisMetadata[]>();
55
54
  metaList.forEach(meta => {
56
55
  meta.forEach(item => {
57
56
  if (!result.has(item.attributeName)) {