Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Node update #2695

Draft
wants to merge 8 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 4 additions & 4 deletions .github/workflows/coverage.yml
Expand Up @@ -2,9 +2,9 @@ name: Test Coverage

on:
push:
branches: [ master, bootstrap5 ]
branches: [ master, bootstrap5, v10 ]
pull_request:
branches: [ master, bootstrap5 ]
branches: [ master, bootstrap5, v10 ]

jobs:

Expand All @@ -14,10 +14,10 @@ jobs:

- uses: actions/checkout@v2

- name: Use Node.js 12.x
- name: Use Node.js 16.x
uses: actions/setup-node@v1
with:
node-version: 12.x
node-version: 16.x
cache: 'yarn'

- run: rm -rf node_modules && yarn install --frozen-lockfile
Expand Down
32 changes: 32 additions & 0 deletions .github/workflows/prerelease.yml
@@ -0,0 +1,32 @@
on:
pull_request:
branches: [master]
name: prerelease
jobs:
prerelease:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js 16
uses: actions/setup-node@v2
with:
node-version: 16
registry-url: 'https://registry.npmjs.org'
- run: yarn install --frozen-lockfile
- run: npm version prerelease --preid=$GITHUB_HEAD_REF-`git rev-parse --short HEAD` --git-tag-version=false --commit-hooks=false
- run: npm publish --tag prerelease-$GITHUB_HEAD_REF
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Extract NPM package name
run: echo "::set-output name=npm-name::`node -p -e "require('./package.json').name"`"
id: npm-name
- name: Extract npm package version
run: echo "::set-output name=npm-version::`node -p -e "require('./package.json').version"`"
id: npm-version
- name: Comment PR
uses: marocchino/sticky-pull-request-comment@v2
with:
recreate: true
message: |
Released prerelease version `${{ steps.npm-version.outputs.npm-version }}`.
You may now run `npm install ${{ steps.npm-name.outputs.npm-name }}@${{ github.head_ref }}`
6 changes: 3 additions & 3 deletions .github/workflows/test.yml
Expand Up @@ -5,9 +5,9 @@ name: Node.js CI

on:
push:
branches: [ master, release-* ]
branches: [ master, release-*, v10 ]
pull_request:
branches: [ master ]
branches: [ master, v10 ]

jobs:
build:
Expand All @@ -16,7 +16,7 @@ jobs:

strategy:
matrix:
node-version: [12.x, 14.x, 16.x]
node-version: [14.x, 16.x]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can add node 18.x also.

# See supported Node.js release schedule at https://nodejs.org/en/about/releases/

steps:
Expand Down
2 changes: 1 addition & 1 deletion .nvmrc
@@ -1 +1 @@
12
16
5 changes: 4 additions & 1 deletion package.json
Expand Up @@ -15,6 +15,9 @@
"types": "types/index.d.ts",
"esnext": "src/index.js",
"sideEffects": false,
"engines": {
"node": ">=14"
},
"scripts": {
"test": "jest --watch",
"test:ci": "jest",
Expand Down Expand Up @@ -311,7 +314,7 @@
"eslint-plugin-react": "^7.30.0",
"eslint-plugin-storybook": "^0.6.1",
"holderjs": "^2.9.3",
"jest": "28.1.3",
"jest": "^29.4.1",
"jest-environment-jsdom": "28.1.3",
"jsdom": "^19.0.0",
"json-loader": "^0.5.7",
Expand Down
6 changes: 3 additions & 3 deletions src/Accordion.js
Expand Up @@ -29,15 +29,15 @@ const defaultProps = {
tag: 'div',
};

function Accordion(props) {
const Accordion = React.forwardRef((props, ref) => {
const {
flush,
open,
toggle,
className,
cssModule,
tag: Tag,
innerRef,
innerRef = ref,
...attributes
} = props;
const classes = mapToCssModules(
Expand All @@ -57,7 +57,7 @@ function Accordion(props) {
<Tag {...attributes} className={classes} ref={innerRef} />
</AccordionContext.Provider>
);
}
})

Accordion.propTypes = propTypes;
Accordion.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/AccordionBody.js
Expand Up @@ -27,12 +27,12 @@ const defaultProps = {
tag: 'div',
};

function AccordionBody(props) {
const AccordionBody = React.forwardRef((props, ref) => {
const {
className,
cssModule,
tag: Tag,
innerRef,
innerRef = ref,
children,
accordionId,
...attributes
Expand All @@ -57,7 +57,7 @@ function AccordionBody(props) {
<Tag className="accordion-body">{children}</Tag>
</Collapse>
);
}
})

AccordionBody.propTypes = propTypes;
AccordionBody.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/AccordionHeader.js
Expand Up @@ -25,12 +25,12 @@ const defaultProps = {
tag: 'h2',
};

function AccordionHeader(props) {
const AccordionHeader = React.forwardRef((props, ref) => {
const {
className,
cssModule,
tag: Tag,
innerRef,
innerRef = ref,
children,
targetId,
...attributes
Expand Down Expand Up @@ -62,7 +62,7 @@ function AccordionHeader(props) {
</button>
</Tag>
);
}
})

AccordionHeader.propTypes = propTypes;
AccordionHeader.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/AccordionItem.js
Expand Up @@ -22,15 +22,15 @@ const defaultProps = {
tag: 'div',
};

function AccordionItem(props) {
const { className, cssModule, tag: Tag, innerRef, ...attributes } = props;
const AccordionItem = React.forwardRef((props, ref) => {
const { className, cssModule, tag: Tag, innerRef = ref, ...attributes } = props;
const classes = mapToCssModules(
classNames(className, 'accordion-item'),
cssModule,
);

return <Tag {...attributes} className={classes} ref={innerRef} />;
}
})

AccordionItem.propTypes = propTypes;
AccordionItem.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/Alert.js
Expand Up @@ -46,7 +46,7 @@ const defaultProps = {
},
};

function Alert(props) {
const Alert = React.forwardRef((props, ref) => {
const {
className,
closeClassName,
Expand All @@ -59,7 +59,7 @@ function Alert(props) {
children,
transition,
fade,
innerRef,
innerRef = ref,
...attributes
} = props;

Expand Down Expand Up @@ -103,7 +103,7 @@ function Alert(props) {
{children}
</Fade>
);
}
});

Alert.propTypes = propTypes;
Alert.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/Badge.js
Expand Up @@ -29,12 +29,12 @@ const defaultProps = {
tag: 'span',
};

function Badge(props) {
const Badge = React.forwardRef((props, ref) => {
let {
className,
cssModule,
color,
innerRef,
innerRef = ref,
pill,
tag: Tag,
...attributes
Expand All @@ -55,7 +55,7 @@ function Badge(props) {
}

return <Tag {...attributes} className={classes} ref={innerRef} />;
}
});

Badge.propTypes = propTypes;
Badge.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/Button.js
Expand Up @@ -42,7 +42,7 @@ const defaultProps = {
tag: 'button',
};

function Button(props) {
const Button = React.forwardRef((props, ref) => {
const onClick = useCallback(
(e) => {
if (props.disabled) {
Expand All @@ -68,7 +68,7 @@ function Button(props) {
outline,
size,
tag: Tag,
innerRef,
innerRef = ref,
...attributes
} = props;

Expand Down Expand Up @@ -104,7 +104,7 @@ function Button(props) {
aria-label={ariaLabel}
/>
);
}
});

Button.propTypes = propTypes;
Button.defaultProps = defaultProps;
Expand Down
2 changes: 1 addition & 1 deletion src/Card.js
Expand Up @@ -58,4 +58,4 @@ function Card(props) {
Card.propTypes = propTypes;
Card.defaultProps = defaultProps;

export default Card;
export default React.forwardRef((props, ref) => <Card innerRef={ref} {...props} />);
6 changes: 3 additions & 3 deletions src/CardBody.js
Expand Up @@ -21,15 +21,15 @@ const defaultProps = {
tag: 'div',
};

function CardBody(props) {
const { className, cssModule, innerRef, tag: Tag, ...attributes } = props;
const CardBody = React.forwardRef((props, ref) => {
const { className, cssModule, innerRef = ref, tag: Tag, ...attributes } = props;
const classes = mapToCssModules(
classNames(className, 'card-body'),
cssModule,
);

return <Tag {...attributes} className={classes} ref={innerRef} />;
}
});

CardBody.propTypes = propTypes;
CardBody.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/CardLink.js
Expand Up @@ -18,15 +18,15 @@ const defaultProps = {
tag: 'a',
};

function CardLink(props) {
const { className, cssModule, tag: Tag, innerRef, ...attributes } = props;
const CardLink = React.forwardRef((props, ref) => {
const { className, cssModule, tag: Tag, innerRef = ref, ...attributes } = props;
const classes = mapToCssModules(
classNames(className, 'card-link'),
cssModule,
);

return <Tag {...attributes} ref={innerRef} className={classes} />;
}
})

CardLink.propTypes = propTypes;
CardLink.defaultProps = defaultProps;
Expand Down
6 changes: 3 additions & 3 deletions src/CloseButton.js
Expand Up @@ -25,8 +25,8 @@ const defaultProps = {
'aria-label': 'close',
};

function CloseButton(props) {
const { className, cssModule, variant, innerRef, ...attributes } = props;
const CloseButton = React.forwardRef((props, ref) => {
const { className, cssModule, variant, innerRef = ref, ...attributes } = props;

const classes = mapToCssModules(
classNames(className, 'btn-close', variant && `btn-close-${variant}`),
Expand All @@ -35,7 +35,7 @@ function CloseButton(props) {
return (
<button ref={innerRef} type="button" className={classes} {...attributes} />
);
}
});

CloseButton.propTypes = propTypes;
CloseButton.defaultProps = defaultProps;
Expand Down
2 changes: 1 addition & 1 deletion src/Collapse.js
Expand Up @@ -172,4 +172,4 @@ class Collapse extends Component {

Collapse.propTypes = propTypes;
Collapse.defaultProps = defaultProps;
export default Collapse;
export default React.forwardRef((props, ref) => <Collapse innerRef={ref} {...props} />);
2 changes: 1 addition & 1 deletion src/Dropdown.js
Expand Up @@ -371,4 +371,4 @@ Dropdown.propTypes = propTypes;
Dropdown.defaultProps = defaultProps;
Dropdown.contextType = InputGroupContext;

export default Dropdown;
export default React.forwardRef((props, ref) => <Dropdown innerRef={ref} {...props} />);
2 changes: 1 addition & 1 deletion src/DropdownToggle.js
Expand Up @@ -143,4 +143,4 @@ DropdownToggle.propTypes = propTypes;
DropdownToggle.defaultProps = defaultProps;
DropdownToggle.contextType = DropdownContext;

export default DropdownToggle;
export default React.forwardRef((props, ref) => <DropdownToggle innerRef={ref} {...props} />);
6 changes: 3 additions & 3 deletions src/Fade.js
Expand Up @@ -41,15 +41,15 @@ const defaultProps = {
in: true,
};

function Fade(props) {
const Fade = React.forwardRef((props, ref) => {
const {
tag: Tag,
baseClass,
baseClassActive,
className,
cssModule,
children,
innerRef,
innerRef = ref,
...otherProps
} = props;

Expand All @@ -72,7 +72,7 @@ function Fade(props) {
}}
</Transition>
);
}
});

Fade.propTypes = propTypes;
Fade.defaultProps = defaultProps;
Expand Down
4 changes: 3 additions & 1 deletion src/Form.js
Expand Up @@ -17,6 +17,8 @@ const propTypes = {
const defaultProps = {
tag: 'form',
};

// TODO: Simple conversion of functional component "good-first-task"
class Form extends Component {
constructor(props) {
super(props);
Expand Down Expand Up @@ -54,4 +56,4 @@ class Form extends Component {
Form.propTypes = propTypes;
Form.defaultProps = defaultProps;

export default Form;
export default React.forwardRef((props, ref) => <Form innerRef={ref} {...props} />);