Skip to content
This repository was archived by the owner on Sep 20, 2023. It is now read-only.

Commit d63e853

Browse files
authored
Merge pull request #8 from rpearce/use-with-forwarded-ref
Use with forwarded ref and rename source file to index.js
2 parents 8589f31 + a64a6d7 commit d63e853

File tree

8 files changed

+84
-78
lines changed

8 files changed

+84
-78
lines changed

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
55
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
66

7+
## [1.0.1] - 2018-12-19
8+
9+
### Fixed
10+
* fixed forwarding refs eating the display name by including
11+
`react-with-forwarded-refs` as a dependency
12+
713
## [1.0.0] - 2018-12-18
814

915
### Fixed

docs/app.js

Lines changed: 57 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ var container = document.querySelector('[data-app]');
6565

6666
_reactDom.default.render(_react.default.createElement(App, null), container);
6767

68-
},{"../":2,"react":12,"react-dom":9}],2:[function(require,module,exports){
68+
},{"../":2,"react":14,"react-dom":9}],2:[function(require,module,exports){
6969
'use strict';
7070

71-
module.exports = require('./src/react-button-a11y.js');
71+
module.exports = require('./src');
7272

73-
},{"./src/react-button-a11y.js":19}],3:[function(require,module,exports){
73+
},{"./src":21}],3:[function(require,module,exports){
7474
/*
7575
object-assign
7676
(c) Sindre Sorhus
@@ -20188,7 +20188,7 @@ module.exports = reactDom;
2018820188
}
2018920189

2019020190
}).call(this,require('_process'))
20191-
},{"_process":4,"object-assign":3,"prop-types/checkPropTypes":5,"react":12,"scheduler":17,"scheduler/tracing":18}],8:[function(require,module,exports){
20191+
},{"_process":4,"object-assign":3,"prop-types/checkPropTypes":5,"react":14,"scheduler":19,"scheduler/tracing":20}],8:[function(require,module,exports){
2019220192
/** @license React v16.6.1
2019320193
* react-dom.production.min.js
2019420194
*
@@ -20439,7 +20439,7 @@ void 0:t("40");return a._reactRootContainer?(Oh(function(){$h(null,null,a,!1,fun
2043920439
Ka,La,Ca.injectEventPluginsByName,qa,Ra,function(a){za(a,Qa)},Ib,Jb,Jd,Ea]},unstable_createRoot:function(a,b){Yh(a)?void 0:t("299","unstable_createRoot");return new Xh(a,!0,null!=b&&!0===b.hydrate)}};(function(a){var b=a.findFiberByHostInstance;return Ve(n({},a,{findHostInstanceByFiber:function(a){a=nd(a);return null===a?null:a.stateNode},findFiberByHostInstance:function(a){return b?b(a):null}}))})({findFiberByHostInstance:Ia,bundleType:0,version:"16.6.3",rendererPackageName:"react-dom"});
2044020440
var ei={default:bi},fi=ei&&bi||ei;module.exports=fi.default||fi;
2044120441

20442-
},{"object-assign":3,"react":12,"scheduler":17}],9:[function(require,module,exports){
20442+
},{"object-assign":3,"react":14,"scheduler":19}],9:[function(require,module,exports){
2044320443
(function (process){
2044420444
'use strict';
2044520445

@@ -20482,6 +20482,39 @@ if (process.env.NODE_ENV === 'production') {
2048220482

2048320483
}).call(this,require('_process'))
2048420484
},{"./cjs/react-dom.development.js":7,"./cjs/react-dom.production.min.js":8,"_process":4}],10:[function(require,module,exports){
20485+
'use strict'
20486+
20487+
module.exports = require('./src')
20488+
20489+
},{"./src":11}],11:[function(require,module,exports){
20490+
"use strict";
20491+
20492+
Object.defineProperty(exports, "__esModule", {
20493+
value: true
20494+
});
20495+
exports.default = void 0;
20496+
20497+
var _react = _interopRequireWildcard(require("react"));
20498+
20499+
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
20500+
20501+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
20502+
20503+
var withForwardedRef = function withForwardedRef(Comp) {
20504+
var handle = function handle(props, ref) {
20505+
return _react.default.createElement(Comp, _extends({}, props, {
20506+
forwardedRef: ref
20507+
}));
20508+
};
20509+
20510+
var name = Comp.displayName || Comp.name;
20511+
handle.displayName = "withForwardedRef(".concat(name, ")");
20512+
return (0, _react.forwardRef)(handle);
20513+
};
20514+
20515+
var _default = withForwardedRef;
20516+
exports.default = _default;
20517+
},{"react":14}],12:[function(require,module,exports){
2048520518
(function (process){
2048620519
/** @license React v16.6.1
2048720520
* react.development.js
@@ -22325,7 +22358,7 @@ module.exports = react;
2232522358
}
2232622359

2232722360
}).call(this,require('_process'))
22328-
},{"_process":4,"object-assign":3,"prop-types/checkPropTypes":5}],11:[function(require,module,exports){
22361+
},{"_process":4,"object-assign":3,"prop-types/checkPropTypes":5}],13:[function(require,module,exports){
2232922362
/** @license React v16.6.1
2233022363
* react.production.min.js
2233122364
*
@@ -22351,7 +22384,7 @@ _currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null};a.P
2235122384
if(null!=b){void 0!==b.ref&&(h=b.ref,f=K.current);void 0!==b.key&&(g=""+b.key);var l=void 0;a.type&&a.type.defaultProps&&(l=a.type.defaultProps);for(c in b)L.call(b,c)&&!M.hasOwnProperty(c)&&(d[c]=void 0===b[c]&&void 0!==l?l[c]:b[c])}c=arguments.length-2;if(1===c)d.children=e;else if(1<c){l=Array(c);for(var m=0;m<c;m++)l[m]=arguments[m+2];d.children=l}return{$$typeof:p,type:a.type,key:g,ref:h,props:d,_owner:f}},createFactory:function(a){var b=N.bind(null,a);b.type=a;return b},isValidElement:O,version:"16.6.3",
2235222385
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED:{ReactCurrentOwner:K,assign:k}};X.unstable_ConcurrentMode=x;X.unstable_Profiler=u;var Y={default:X},Z=Y&&X||Y;module.exports=Z.default||Z;
2235322386

22354-
},{"object-assign":3}],12:[function(require,module,exports){
22387+
},{"object-assign":3}],14:[function(require,module,exports){
2235522388
(function (process){
2235622389
'use strict';
2235722390

@@ -22362,7 +22395,7 @@ if (process.env.NODE_ENV === 'production') {
2236222395
}
2236322396

2236422397
}).call(this,require('_process'))
22365-
},{"./cjs/react.development.js":10,"./cjs/react.production.min.js":11,"_process":4}],13:[function(require,module,exports){
22398+
},{"./cjs/react.development.js":12,"./cjs/react.production.min.js":13,"_process":4}],15:[function(require,module,exports){
2236622399
(function (process){
2236722400
/** @license React v0.11.3
2236822401
* scheduler-tracing.development.js
@@ -22786,7 +22819,7 @@ exports.unstable_unsubscribe = unstable_unsubscribe;
2278622819
}
2278722820

2278822821
}).call(this,require('_process'))
22789-
},{"_process":4}],14:[function(require,module,exports){
22822+
},{"_process":4}],16:[function(require,module,exports){
2279022823
/** @license React v0.11.3
2279122824
* scheduler-tracing.production.min.js
2279222825
*
@@ -22798,7 +22831,7 @@ exports.unstable_unsubscribe = unstable_unsubscribe;
2279822831

2279922832
'use strict';Object.defineProperty(exports,"__esModule",{value:!0});var b=0;exports.__interactionsRef=null;exports.__subscriberRef=null;exports.unstable_clear=function(a){return a()};exports.unstable_getCurrent=function(){return null};exports.unstable_getThreadID=function(){return++b};exports.unstable_trace=function(a,d,c){return c()};exports.unstable_wrap=function(a){return a};exports.unstable_subscribe=function(){};exports.unstable_unsubscribe=function(){};
2280022833

22801-
},{}],15:[function(require,module,exports){
22834+
},{}],17:[function(require,module,exports){
2280222835
(function (process,global){
2280322836
/** @license React v0.11.3
2280422837
* scheduler.development.js
@@ -23436,7 +23469,7 @@ exports.unstable_shouldYield = unstable_shouldYield;
2343623469
}
2343723470

2343823471
}).call(this,require('_process'),typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23439-
},{"_process":4}],16:[function(require,module,exports){
23472+
},{"_process":4}],18:[function(require,module,exports){
2344023473
(function (global){
2344123474
/** @license React v0.11.3
2344223475
* scheduler.production.min.js
@@ -23461,7 +23494,7 @@ b=c.previous;b.next=c.previous=a;a.next=c;a.previous=b}return a};exports.unstabl
2346123494
exports.unstable_shouldYield=function(){return!f&&(null!==d&&d.expirationTime<l||w())};
2346223495

2346323496
}).call(this,typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {})
23464-
},{}],17:[function(require,module,exports){
23497+
},{}],19:[function(require,module,exports){
2346523498
(function (process){
2346623499
'use strict';
2346723500

@@ -23472,7 +23505,7 @@ if (process.env.NODE_ENV === 'production') {
2347223505
}
2347323506

2347423507
}).call(this,require('_process'))
23475-
},{"./cjs/scheduler.development.js":15,"./cjs/scheduler.production.min.js":16,"_process":4}],18:[function(require,module,exports){
23508+
},{"./cjs/scheduler.development.js":17,"./cjs/scheduler.production.min.js":18,"_process":4}],20:[function(require,module,exports){
2347623509
(function (process){
2347723510
'use strict';
2347823511

@@ -23483,7 +23516,7 @@ if (process.env.NODE_ENV === 'production') {
2348323516
}
2348423517

2348523518
}).call(this,require('_process'))
23486-
},{"./cjs/scheduler-tracing.development.js":13,"./cjs/scheduler-tracing.production.min.js":14,"_process":4}],19:[function(require,module,exports){
23519+
},{"./cjs/scheduler-tracing.development.js":15,"./cjs/scheduler-tracing.production.min.js":16,"_process":4}],21:[function(require,module,exports){
2348723520
"use strict";
2348823521

2348923522
function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
@@ -23493,31 +23526,14 @@ Object.defineProperty(exports, "__esModule", {
2349323526
});
2349423527
exports.default = exports.ButtonA11y = void 0;
2349523528

23496-
var _react = _interopRequireWildcard(require("react"));
23497-
23498-
function _interopRequireWildcard(obj) {
23499-
if (obj && obj.__esModule) {
23500-
return obj;
23501-
} else {
23502-
var newObj = {};
23503-
23504-
if (obj != null) {
23505-
for (var key in obj) {
23506-
if (Object.prototype.hasOwnProperty.call(obj, key)) {
23507-
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
23529+
var _react = require("react");
2350823530

23509-
if (desc.get || desc.set) {
23510-
Object.defineProperty(newObj, key, desc);
23511-
} else {
23512-
newObj[key] = obj[key];
23513-
}
23514-
}
23515-
}
23516-
}
23531+
var _reactWithForwardedRef = _interopRequireDefault(require("react-with-forwarded-ref"));
2351723532

23518-
newObj.default = obj;
23519-
return newObj;
23520-
}
23533+
function _interopRequireDefault(obj) {
23534+
return obj && obj.__esModule ? obj : {
23535+
default: obj
23536+
};
2352123537
}
2352223538

2352323539
function _typeof(obj) {
@@ -23534,24 +23550,6 @@ function _typeof(obj) {
2353423550
return _typeof(obj);
2353523551
}
2353623552

23537-
function _extends() {
23538-
_extends = Object.assign || function (target) {
23539-
for (var i = 1; i < arguments.length; i++) {
23540-
var source = arguments[i];
23541-
23542-
for (var key in source) {
23543-
if (Object.prototype.hasOwnProperty.call(source, key)) {
23544-
target[key] = source[key];
23545-
}
23546-
}
23547-
}
23548-
23549-
return target;
23550-
};
23551-
23552-
return _extends.apply(this, arguments);
23553-
}
23554-
2355523553
function _objectSpread(target) {
2355623554
for (var i = 1; i < arguments.length; i++) {
2355723555
var source = arguments[i] != null ? arguments[i] : {};
@@ -23764,12 +23762,9 @@ ButtonA11y.defaultProps = {
2376423762
onKeyDown: Function.prototype,
2376523763
strictMode: true
2376623764
};
23767-
var WrappedComponent = (0, _react.forwardRef)(function (props, ref) {
23768-
return _react.default.createElement(ButtonA11y, _extends({}, props, {
23769-
forwardedRef: ref
23770-
}));
23771-
});
23772-
var _default = WrappedComponent;
23765+
23766+
var _default = (0, _reactWithForwardedRef.default)(ButtonA11y);
23767+
2377323768
exports.default = _default;
2377423769

23775-
},{"react":12}]},{},[1]);
23770+
},{"react":14,"react-with-forwarded-ref":10}]},{},[1]);

index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
'use strict'
22

3-
module.exports = require('./src/react-button-a11y.js')
3+
module.exports = require('./src')

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
"react-dom": ">= 16.3"
8080
},
8181
"dependencies": {
82-
"@babel/polyfill": "^7.0.0"
82+
"@babel/polyfill": "^7.0.0",
83+
"react-with-forwarded-ref": "^0.1.0"
8384
}
8485
}

source/react-button-a11y.js renamed to source/index.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import React, { PureComponent, createElement, forwardRef } from 'react'
1+
import { PureComponent, createElement } from 'react'
2+
import withForwardedRef from 'react-with-forwarded-ref'
23

34
// isSelect :: KeyboardEvent -> Bool
45
const isSelect = e =>
@@ -50,8 +51,4 @@ ButtonA11y.defaultProps = {
5051
strictMode: true
5152
}
5253

53-
const WrappedComponent = forwardRef((props, ref) =>
54-
<ButtonA11y {...props} forwardedRef={ref} />
55-
)
56-
57-
export default WrappedComponent
54+
export default withForwardedRef(ButtonA11y)

test/__snapshots__/react-button-a11y.test.js.snap renamed to test/__snapshots__/index.test.js.snap

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// Jest Snapshot v1, https://goo.gl/fbAQLP
22

3-
exports[`react-button-a11y component renders, children 1`] = `
3+
exports[`ButtonA11y component renders, children 1`] = `
44
<div
55
aria-label="Mock Label"
66
className="mock-className"
@@ -13,7 +13,7 @@ exports[`react-button-a11y component renders, children 1`] = `
1313
</div>
1414
`;
1515

16-
exports[`react-button-a11y component renders, no children 1`] = `
16+
exports[`ButtonA11y component renders, no children 1`] = `
1717
<div
1818
aria-label="Mock Label"
1919
className="mock-className"
@@ -24,7 +24,7 @@ exports[`react-button-a11y component renders, no children 1`] = `
2424
/>
2525
`;
2626

27-
exports[`react-button-a11y component renders, ref passed in 1`] = `
27+
exports[`ButtonA11y component renders, ref passed in 1`] = `
2828
<ButtonA11y
2929
aria-label="Mock Label"
3030
className="mock-className"
@@ -54,7 +54,7 @@ exports[`react-button-a11y component renders, ref passed in 1`] = `
5454
</ButtonA11y>
5555
`;
5656

57-
exports[`react-button-a11y component renders, span element 1`] = `
57+
exports[`ButtonA11y component renders, span element 1`] = `
5858
<span
5959
aria-label="Mock Label"
6060
className="mock-className"
@@ -65,7 +65,7 @@ exports[`react-button-a11y component renders, span element 1`] = `
6565
/>
6666
`;
6767

68-
exports[`react-button-a11y component renders, strict mode disabled 1`] = `
68+
exports[`ButtonA11y component renders, strict mode disabled 1`] = `
6969
<div
7070
aria-label="Mock Label"
7171
className="mock-className"
@@ -76,7 +76,7 @@ exports[`react-button-a11y component renders, strict mode disabled 1`] = `
7676
/>
7777
`;
7878

79-
exports[`react-button-a11y container renders 1`] = `
79+
exports[`ButtonA11y container renders 1`] = `
8080
<ButtonA11y
8181
aria-label="Mock Label"
8282
className="mock-className"

test/react-button-a11y.test.js renamed to test/index.test.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ import { renderIntoDocument } from 'react-dom/test-utils'
33
import { mount, shallow } from 'enzyme'
44
import toJson from 'enzyme-to-json'
55

6-
import Container, { ButtonA11y } from '../source/react-button-a11y'
6+
import Container, { ButtonA11y } from '../source'
77

8-
describe('react-button-a11y', () => {
8+
describe('ButtonA11y', () => {
99

1010
describe('container', () => {
1111

yarn.lock

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4977,6 +4977,13 @@ react-test-renderer@^16.0.0-0:
49774977
react-is "^16.6.3"
49784978
scheduler "^0.11.2"
49794979

4980+
react-with-forwarded-ref@^0.1.0:
4981+
version "0.1.0"
4982+
resolved "https://registry.yarnpkg.com/react-with-forwarded-ref/-/react-with-forwarded-ref-0.1.0.tgz#105658548957dec5fdd6c01f5ecda5f7a44020ab"
4983+
integrity sha512-2VjYW1qwMxbUqnJwsS8CAcZSYB7gp4fxg2fucLK8y5tnuXGQxtbAGKajLuT7gZHWODzmesW0dm4RkvafWoNz7A==
4984+
dependencies:
4985+
"@babel/polyfill" "^7.0.0"
4986+
49804987
react@^16.6.3:
49814988
version "16.6.3"
49824989
resolved "https://registry.yarnpkg.com/react/-/react-16.6.3.tgz#25d77c91911d6bbdd23db41e70fb094cc1e0871c"

0 commit comments

Comments
 (0)