diff --git a/packages/core/biome.jsonc b/packages/core/biome.jsonc index 685804e..dd107bf 100644 --- a/packages/core/biome.jsonc +++ b/packages/core/biome.jsonc @@ -12,9 +12,6 @@ "noAssignInExpressions": "off", "noConfusingVoidType": "off" }, - "complexity": { - "noForEach": "warn" // Should be error before v1 for increase the performance - }, "correctness": { "useJsxKeyInIterable": "off" // Stencil generate jsx key for us }, diff --git a/packages/core/plugins/api-spec-generator.ts b/packages/core/plugins/api-spec-generator.ts index 8297413..bba86b3 100644 --- a/packages/core/plugins/api-spec-generator.ts +++ b/packages/core/plugins/api-spec-generator.ts @@ -17,7 +17,9 @@ export function apiSpecGenerator(opts: ApiSpecOption): OutputTargetDocsCustom { type: 'docs-custom', generator: docsData => { const content: string[] = []; - docsData.components.forEach(cmp => generateComponent(cmp, content)); + for (const component of docsData.components) { + generateComponent(component, content); + } const contentStr = content.join('\n'); return new Promise(resolve => { @@ -33,21 +35,21 @@ function generateComponent(component: JsonDocsComponent, content: string[]) { content.push(''); content.push(`${component.tag},${component.encapsulation}`); - component.props.forEach(prop => { + for (const prop of component.props) { content.push( `${component.tag},prop,${prop.name},${prop.type},${prop.default},${prop.required},${prop.reflectToAttr}`, ); - }); - component.methods.forEach(prop => { - content.push(`${component.tag},method,${prop.name},${prop.signature}`); - }); - component.events.forEach(prop => { - content.push(`${component.tag},event,${prop.event},${prop.detail},${prop.bubbles}`); - }); - component.styles.forEach(prop => { - content.push(`${component.tag},css-prop,${prop.name}`); - }); - component.parts.forEach(part => { + } + for (const method of component.methods) { + content.push(`${component.tag},method,${method.name},${method.signature}`); + } + for (const event of component.events) { + content.push(`${component.tag},event,${event.event},${event.detail},${event.bubbles}`); + } + for (const style of component.styles) { + content.push(`${component.tag},css-prop,${style.name}`); + } + for (const part of component.parts) { content.push(`${component.tag},part,${part.name}`); - }); + } } diff --git a/packages/core/src/components/accordion-group/accordion-group.tsx b/packages/core/src/components/accordion-group/accordion-group.tsx index 93458c4..3ca8d44 100644 --- a/packages/core/src/components/accordion-group/accordion-group.tsx +++ b/packages/core/src/components/accordion-group/accordion-group.tsx @@ -66,10 +66,10 @@ export class AccordionGroup implements ComponentInterface { } componentDidLoad(): void { - this.accordions.forEach(accordion => { + for (const accordion of this.accordions) { if (this.readonly) accordion.readonly = this.readonly; if (this.disabled) accordion.disabled = this.disabled; - }); + } this.applyOpen(); } diff --git a/packages/core/src/components/input-file/input-file.tsx b/packages/core/src/components/input-file/input-file.tsx index 3e13711..c91fb45 100644 --- a/packages/core/src/components/input-file/input-file.tsx +++ b/packages/core/src/components/input-file/input-file.tsx @@ -184,6 +184,7 @@ export class InputFile implements ComponentInterface { componentDidLoad(): void { const { value } = this; const files = Array.isArray(value) ? value : [value]; + files.forEach((file, idx) => (this.nativeInput.files[idx] = file)); } diff --git a/packages/core/src/components/radio-group/radio-group.tsx b/packages/core/src/components/radio-group/radio-group.tsx index 6e4feff..3630ede 100644 --- a/packages/core/src/components/radio-group/radio-group.tsx +++ b/packages/core/src/components/radio-group/radio-group.tsx @@ -139,32 +139,24 @@ export class RadioGroup implements ComponentInterface { } componentDidLoad(): void { - this.radios.forEach(radio => { + for (const radio of this.radios) { radio.name = this.name; - if (this.required) radio.required = this.required; - if (this.disabled) radio.disabled = this.disabled; - }); - this.applyColor(); - this.applySize(); - this.applyCheck(); - } - private applyColor(): void { - if (!this.color) return; - this.radios - .filter(radio => !radio.color) - .forEach(radio => { + if (this.required) { + radio.required = this.required; + } + if (this.disabled) { + radio.disabled = this.disabled; + } + if (this.color) { radio.color = this.color; - }); - } - - private applySize(): void { - if (!this.size) return; - this.radios - .filter(radio => !radio.size) - .forEach(radio => { + } + if (this.size) { radio.size = this.size; - }); + } + } + + this.applyCheck(); } private applyCheck(): void { diff --git a/packages/core/src/config/components.config.ts b/packages/core/src/config/components.config.ts index d64d594..564512f 100755 --- a/packages/core/src/config/components.config.ts +++ b/packages/core/src/config/components.config.ts @@ -21,7 +21,9 @@ export class ComponentConfig { const component = this.get(tag); const uniqueKeys = new Set([...Object.keys(component), ...Object.keys(defaultValue)]); - [...uniqueKeys].forEach(key => (ref[key] ??= component[key] ?? defaultValue[key])); + for (const key of uniqueKeys) { + ref[key] ??= component[key] ?? defaultValue[key]; + } } setProp( diff --git a/packages/core/src/utils/click-outside.ts b/packages/core/src/utils/click-outside.ts index c83bc77..be77036 100644 --- a/packages/core/src/utils/click-outside.ts +++ b/packages/core/src/utils/click-outside.ts @@ -54,7 +54,7 @@ export function registerClickOutside( opt: ClickOutsideOptions = ClickOutsideOptionsDefaults, ): void { const excludedNodes = getExcludedNodes(opt); - getTriggerEvents(opt).forEach(triggerEvent => { + for (const triggerEvent of getTriggerEvents(opt)) { window.addEventListener( triggerEvent, (e: Event) => { @@ -62,7 +62,7 @@ export function registerClickOutside( }, false, ); - }); + } } /** @@ -74,7 +74,7 @@ export function removeClickOutside( callback: () => void, opt: ClickOutsideOptions = ClickOutsideOptionsDefaults, ): void { - getTriggerEvents(opt).forEach(triggerEvent => { + for (const triggerEvent of getTriggerEvents(opt)) { window.removeEventListener( triggerEvent, (e: Event) => { @@ -82,7 +82,7 @@ export function removeClickOutside( }, false, ); - }); + } } function initClickOutside( diff --git a/packages/core/src/utils/helpers.ts b/packages/core/src/utils/helpers.ts index 932204b..e43a0ab 100644 --- a/packages/core/src/utils/helpers.ts +++ b/packages/core/src/utils/helpers.ts @@ -17,15 +17,17 @@ export type Attributes = { [key: string]: any }; export const inheritAttributes = (el: HTMLElement, attributes: string[] = []) => { const attributeObject: Attributes = {}; - attributes.forEach(attr => { - if (el.hasAttribute(attr)) { - const value = el.getAttribute(attr); - if (value !== null) { - attributeObject[attr] = el.getAttribute(attr); - } - el.removeAttribute(attr); + for (const attr of attributes) { + if (!el.hasAttribute(attr)) { + continue; } - }); + + const value = el.getAttribute(attr); + if (value !== null) { + attributeObject[attr] = el.getAttribute(attr); + } + el.removeAttribute(attr); + } return attributeObject; };