@wireapp/react-ui-kit 8.13.7 → 8.13.8
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/CHANGELOG.md +11 -0
- package/package.json +2 -2
- package/src/Form/CodeInput.js +3 -3
- package/src/Form/CodeInput.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,17 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [8.13.8](https://github.com/wireapp/wire-web-packages/tree/main/packages/react-ui-kit/compare/@wireapp/react-ui-kit@8.13.7...@wireapp/react-ui-kit@8.13.8) (2022-09-08)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### Bug Fixes
|
|
10
|
+
|
|
11
|
+
* **react-ui-kit:** update CodeInput component to be visible on mobile devices ([#4380](https://github.com/wireapp/wire-web-packages/tree/main/packages/react-ui-kit/issues/4380)) ([876921d](https://github.com/wireapp/wire-web-packages/tree/main/packages/react-ui-kit/commit/876921dd047ca0884b972d24eb83a097fef294cd))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
6
17
|
## [8.13.7](https://github.com/wireapp/wire-web-packages/tree/main/packages/react-ui-kit/compare/@wireapp/react-ui-kit@8.13.6...@wireapp/react-ui-kit@8.13.7) (2022-09-02)
|
|
7
18
|
|
|
8
19
|
**Note:** Version bump only for package @wireapp/react-ui-kit
|
package/package.json
CHANGED
|
@@ -70,6 +70,6 @@
|
|
|
70
70
|
"test:update": "yarn test --updateSnapshot",
|
|
71
71
|
"test:project": "yarn dist && yarn test"
|
|
72
72
|
},
|
|
73
|
-
"version": "8.13.
|
|
74
|
-
"gitHead": "
|
|
73
|
+
"version": "8.13.8",
|
|
74
|
+
"gitHead": "4cc5f40299b0b8fb593f169073c5c6740a2939f1"
|
|
75
75
|
}
|
package/src/Form/CodeInput.js
CHANGED
|
@@ -41,7 +41,7 @@ var _ref = process.env.NODE_ENV === "production" ? {
|
|
|
41
41
|
} : {
|
|
42
42
|
name: "tvpiqi-CodeInputWrapper",
|
|
43
43
|
styles: "display:flex;justify-content:center;label:CodeInputWrapper;",
|
|
44
|
-
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvZGVJbnB1dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOEJJIiwiZmlsZSI6IkNvZGVJbnB1dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogV2lyZVxuICogQ29weXJpZ2h0IChDKSAyMDE4IFdpcmUgU3dpc3MgR21iSFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuLyoqIEBqc3gganN4ICovXG5pbXBvcnQge0NTU09iamVjdCwganN4fSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtUaGVtZX0gZnJvbSAnLi4vTGF5b3V0JztcbmltcG9ydCB7bm9vcH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQge0lucHV0UHJvcHMsIGlucHV0U3R5bGV9IGZyb20gJy4vSW5wdXQnO1xuaW1wb3J0IHtDT0xPUl9WMn0gZnJvbSAnLi4vSWRlbnRpdHknO1xuXG5jb25zdCBDb2RlSW5wdXRXcmFwcGVyID0gKHByb3BzOiBSZWFjdC5IVE1MUHJvcHM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbnR5cGUgRGlnaXRJbnB1dFByb3BzPFQgPSBIVE1MSW5wdXRFbGVtZW50PiA9IElucHV0UHJvcHM8VD47XG5cbmNvbnN0IGRpZ2l0SW5wdXRTdHlsZTogPFQ+
|
|
44
|
+
map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvZGVJbnB1dC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBOEJJIiwiZmlsZSI6IkNvZGVJbnB1dC50c3giLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogV2lyZVxuICogQ29weXJpZ2h0IChDKSAyMDE4IFdpcmUgU3dpc3MgR21iSFxuICpcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsXG4gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZlxuICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlXG4gKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLlxuICpcbiAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlXG4gKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLy5cbiAqXG4gKi9cblxuLyoqIEBqc3gganN4ICovXG5pbXBvcnQge0NTU09iamVjdCwganN4fSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgUmVhY3QsIHt1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCB0eXBlIHtUaGVtZX0gZnJvbSAnLi4vTGF5b3V0JztcbmltcG9ydCB7bm9vcH0gZnJvbSAnLi4vdXRpbCc7XG5pbXBvcnQge0lucHV0UHJvcHMsIGlucHV0U3R5bGV9IGZyb20gJy4vSW5wdXQnO1xuaW1wb3J0IHtDT0xPUl9WMn0gZnJvbSAnLi4vSWRlbnRpdHknO1xuXG5jb25zdCBDb2RlSW5wdXRXcmFwcGVyID0gKHByb3BzOiBSZWFjdC5IVE1MUHJvcHM8SFRNTERpdkVsZW1lbnQ+KSA9PiAoXG4gIDxkaXZcbiAgICBjc3M9e3tcbiAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICB9fVxuICAgIHsuLi5wcm9wc31cbiAgLz5cbik7XG5cbnR5cGUgRGlnaXRJbnB1dFByb3BzPFQgPSBIVE1MSW5wdXRFbGVtZW50PiA9IElucHV0UHJvcHM8VD47XG5cbmNvbnN0IGRpZ2l0SW5wdXRTdHlsZTogPFQ+KHRoZW1lOiBUaGVtZSwgcHJvcHM6IERpZ2l0SW5wdXRQcm9wczxUPikgPT4gQ1NTT2JqZWN0ID0gKHRoZW1lLCBwcm9wcykgPT4gKHtcbiAgLi4uaW5wdXRTdHlsZSh0aGVtZSwgcHJvcHMpLFxuICAnJiArICYnOiB7XG4gICAgbWFyZ2luTGVmdDogJ21pbigxOXB4LCAydncpJyxcbiAgfSxcbiAgJyY6aG92ZXInOiB7XG4gICAgYm94U2hhZG93OiBgMCAwIDAgMXB4ICR7Q09MT1JfVjIuR1JBWV82MH1gLFxuICB9LFxuICBmb250U2l6ZTogJzI0cHgnLFxuICBsaW5lSGVpZ2h0OiAnMjhweCcsXG4gIGJvcmRlclJhZGl1czogJzEycHgnLFxuICBwYWRkaW5nOiAwLFxuICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICB3aWR0aDogJ21pbig0OHB4LCAxM3Z3KScsXG4gIGhlaWdodDogJzU2cHgnLFxufSk7XG5cbmNvbnN0IERpZ2l0SW5wdXQ6IFJlYWN0LkZDPERpZ2l0SW5wdXRQcm9wczxIVE1MSW5wdXRFbGVtZW50Pj4gPSBSZWFjdC5mb3J3YXJkUmVmPFxuICBIVE1MSW5wdXRFbGVtZW50LFxuICBEaWdpdElucHV0UHJvcHM8SFRNTElucHV0RWxlbWVudD5cbj4oKHByb3BzLCByZWYpID0+IDxpbnB1dCByZWY9e3JlZn0gY3NzPXsodGhlbWU6IFRoZW1lKSA9PiBkaWdpdElucHV0U3R5bGUodGhlbWUsIHByb3BzKX0gey4uLnByb3BzfSB0eXBlPVwidGVsXCIgLz4pO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvZGVJbnB1dFByb3BzPFQgPSBIVE1MSW5wdXRFbGVtZW50PiBleHRlbmRzIElucHV0UHJvcHM8VD4ge1xuICBhdXRvRm9jdXM/OiBib29sZWFuO1xuICBkaWdpdHM/OiBudW1iZXI7XG4gIG1hcmtJbnZhbGlkPzogYm9vbGVhbjtcbiAgb25Db2RlQ29tcGxldGU/OiAoY29tcGxldGVDb2RlPzogc3RyaW5nKSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQ29kZUlucHV0ID0gKHtcbiAgc3R5bGUsXG4gIGRpZ2l0cyA9IDYsXG4gIGF1dG9Gb2N1cyA9IGZhbHNlLFxuICBtYXJrSW52YWxpZCxcbiAgb25Db2RlQ29tcGxldGUgPSBub29wLFxuICBkaXNhYmxlZCxcbn06IENvZGVJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IFt2YWx1ZXMsIHNldFZhbHVlc10gPSB1c2VTdGF0ZShBcnJheShkaWdpdHMpLmZpbGwoJycpKTtcbiAgY29uc3QgaW5wdXRzID0gQXJyYXkoZGlnaXRzKTtcblxuICBjb25zdCBmb3JjZVNlbGVjdGlvbiA9IChcbiAgICBldmVudDpcbiAgICAgIHwgUmVhY3QuTW91c2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PlxuICAgICAgfCBSZWFjdC5Ub3VjaEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+XG4gICAgICB8IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTElucHV0RWxlbWVudD5cbiAgICAgIHwgUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PixcbiAgKSA9PiB7XG4gICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgdGFyZ2V0LnNlbGVjdCgpO1xuICB9O1xuXG4gIGNvbnN0IGZvcmNlU2VsZWN0aW9uUHJldmVudERlZmF1bHQgPSAoXG4gICAgZXZlbnQ6IFJlYWN0Lk1vdXNlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4gfCBSZWFjdC5Ub3VjaEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+LFxuICApID0+IHtcbiAgICBmb3JjZVNlbGVjdGlvbihldmVudCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfTtcblxuICBjb25zdCBuZXh0RmllbGQgPSAoY3VycmVudEZpZWxkSW5kZXg6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IG5leHRGaWVsZEluZGV4ID0gY3VycmVudEZpZWxkSW5kZXggKyAxO1xuICAgIGlmIChuZXh0RmllbGRJbmRleCA8IGRpZ2l0cykge1xuICAgICAgaW5wdXRzW25leHRGaWVsZEluZGV4XS5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBwcmV2aW91c0ZpZWxkID0gKGN1cnJlbnRGaWVsZEluZGV4OiBudW1iZXIpID0+IHtcbiAgICBpZiAoY3VycmVudEZpZWxkSW5kZXggPiAwKSB7XG4gICAgICBpbnB1dHNbY3VycmVudEZpZWxkSW5kZXggLSAxXS5mb2N1cygpO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzZXRWYWx1ZSA9IChmaWVsZEluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoL15bMC05XT8kLy50ZXN0KHZhbHVlKSkge1xuICAgICAgY29uc3QgdmFsdWVzQ29weSA9IHZhbHVlcy5zbGljZSgpO1xuICAgICAgdmFsdWVzQ29weVtmaWVsZEluZGV4XSA9IHZhbHVlO1xuICAgICAgc2V0VmFsdWVzKHZhbHVlc0NvcHkpO1xuICAgICAgaWYgKHZhbHVlLmxlbmd0aCkge1xuICAgICAgICBuZXh0RmllbGQoZmllbGRJbmRleCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZmllbGRJbmRleDogbnVtYmVyLCB7a2V5fTogUmVhY3QuS2V5Ym9hcmRFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICBjYXNlICdCYWNrc3BhY2UnOlxuICAgICAgICBzZXRWYWx1ZShmaWVsZEluZGV4LCAnJyk7XG4gICAgICAgIHByZXZpb3VzRmllbGQoZmllbGRJbmRleCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgcHJldmlvdXNGaWVsZChmaWVsZEluZGV4KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdBcnJvd1JpZ2h0JzpcbiAgICAgICAgbmV4dEZpZWxkKGZpZWxkSW5kZXgpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gICAgaWYgKC9eWzAtOV0kLy50ZXN0KGtleSkpIHtcbiAgICAgIHNldFZhbHVlKGZpZWxkSW5kZXgsIGtleSk7XG4gICAgfVxuICB9O1xuXG4gIGNvbnN0IGhhbmRsZVBhc3RlID0gKGZpZWxkSW5kZXg6IG51bWJlciwgZXZlbnQ6IFJlYWN0LkNsaXBib2FyZEV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgcGFzdGVkVmFsdWUgPSBldmVudC5jbGlwYm9hcmREYXRhLmdldERhdGEoJ1RleHQnKTtcbiAgICBjb25zdCBjbGVhbmVkUGFzdGUgPSBwYXN0ZWRWYWx1ZS5yZXBsYWNlKC9bXjAtOV0vZywgJycpO1xuICAgIGlmICgvXlswLTldKyQvLnRlc3QoY2xlYW5lZFBhc3RlKSkge1xuICAgICAgc2V0VmFsdWVzKHZhbHVlcy5zbGljZSgwLCBmaWVsZEluZGV4KS5jb25jYXQoY2xlYW5lZFBhc3RlLnNwbGl0KCcnKSkuc2xpY2UoMCwgZGlnaXRzKSk7XG4gICAgfVxuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY29tcGxldGVDb2RlID0gdmFsdWVzLmpvaW4oJycpO1xuICAgIGlmIChjb21wbGV0ZUNvZGUubGVuZ3RoID09PSBkaWdpdHMpIHtcbiAgICAgIG9uQ29kZUNvbXBsZXRlKGNvbXBsZXRlQ29kZSk7XG4gICAgfVxuICB9LCBbdmFsdWVzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8Q29kZUlucHV0V3JhcHBlciBzdHlsZT17c3R5bGV9PlxuICAgICAge0FycmF5LmZyb20oe2xlbmd0aDogZGlnaXRzfSwgKF8sIGluZGV4KSA9PiAoXG4gICAgICAgIDxEaWdpdElucHV0XG4gICAgICAgICAgYXV0b0ZvY3VzPXtpbmRleCA9PT0gMCAmJiBhdXRvRm9jdXN9XG4gICAgICAgICAga2V5PXtpbmRleH1cbiAgICAgICAgICBvblBhc3RlPXtldmVudCA9PiBoYW5kbGVQYXN0ZShpbmRleCwgZXZlbnQpfVxuICAgICAgICAgIG9uRm9jdXM9e2ZvcmNlU2VsZWN0aW9ufVxuICAgICAgICAgIG9uTW91c2VEb3duPXtmb3JjZVNlbGVjdGlvblByZXZlbnREZWZhdWx0fVxuICAgICAgICAgIG9uVG91Y2hTdGFydD17Zm9yY2VTZWxlY3Rpb25QcmV2ZW50RGVmYXVsdH1cbiAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+IGhhbmRsZUtleURvd24oaW5kZXgsIGV2ZW50KX1cbiAgICAgICAgICBvbktleVVwPXtmb3JjZVNlbGVjdGlvbn1cbiAgICAgICAgICBtYXJrSW52YWxpZD17bWFya0ludmFsaWR9XG4gICAgICAgICAgcmVmPXtub2RlID0+IChpbnB1dHNbaW5kZXhdID0gbm9kZSl9XG4gICAgICAgICAgdmFsdWU9e3ZhbHVlc1tpbmRleF19XG4gICAgICAgICAgb25DaGFuZ2U9eygpID0+IHt9fVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgLz5cbiAgICAgICkpfVxuICAgIDwvQ29kZUlucHV0V3JhcHBlcj5cbiAgKTtcbn07XG4iXX0= */",
|
|
45
45
|
toString: _EMOTION_STRINGIFIED_CSS_ERROR__
|
|
46
46
|
};
|
|
47
47
|
|
|
@@ -54,7 +54,7 @@ var CodeInputWrapper = function CodeInputWrapper(props) {
|
|
|
54
54
|
var digitInputStyle = function digitInputStyle(theme, props) {
|
|
55
55
|
return _objectSpread(_objectSpread({}, (0, _Input.inputStyle)(theme, props)), {}, {
|
|
56
56
|
'& + &': {
|
|
57
|
-
marginLeft: '19px'
|
|
57
|
+
marginLeft: 'min(19px, 2vw)'
|
|
58
58
|
},
|
|
59
59
|
'&:hover': {
|
|
60
60
|
boxShadow: "0 0 0 1px ".concat(_Identity.COLOR_V2.GRAY_60)
|
|
@@ -64,7 +64,7 @@ var digitInputStyle = function digitInputStyle(theme, props) {
|
|
|
64
64
|
borderRadius: '12px',
|
|
65
65
|
padding: 0,
|
|
66
66
|
textAlign: 'center',
|
|
67
|
-
width: '48px',
|
|
67
|
+
width: 'min(48px, 13vw)',
|
|
68
68
|
height: '56px'
|
|
69
69
|
});
|
|
70
70
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["CodeInput.tsx"],"names":["CodeInputWrapper","props","digitInputStyle","theme","marginLeft","boxShadow","COLOR_V2","GRAY_60","fontSize","lineHeight","borderRadius","padding","textAlign","width","height","DigitInput","React","forwardRef","ref","CodeInput","style","digits","autoFocus","markInvalid","onCodeComplete","noop","disabled","Array","fill","values","setValues","inputs","forceSelection","event","target","select","forceSelectionPreventDefault","preventDefault","nextField","currentFieldIndex","nextFieldIndex","focus","previousField","setValue","fieldIndex","value","test","valuesCopy","slice","length","handleKeyDown","key","handlePaste","pastedValue","clipboardData","getData","cleanedPaste","replace","concat","split","completeCode","join","from","_","index","node"],"mappings":"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","sourcesContent":["/*\n * Wire\n * Copyright (C) 2018 Wire Swiss GmbH\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see http://www.gnu.org/licenses/.\n *\n */\n\n/** @jsx jsx */\nimport {CSSObject, jsx} from '@emotion/react';\nimport React, {useEffect, useState} from 'react';\n\nimport type {Theme} from '../Layout';\nimport {noop} from '../util';\nimport {InputProps, inputStyle} from './Input';\nimport {COLOR_V2} from '../Identity';\n\nconst CodeInputWrapper = (props: React.HTMLProps<HTMLDivElement>) => (\n <div\n css={{\n display: 'flex',\n justifyContent: 'center',\n }}\n {...props}\n />\n);\n\ntype DigitInputProps<T = HTMLInputElement> = InputProps<T>;\n\nconst digitInputStyle: <T>(theme: Theme, props: DigitInputProps<T>) => CSSObject = (theme, props) => ({\n ...inputStyle(theme, props),\n '& + &': {\n marginLeft: '19px',\n },\n '&:hover': {\n boxShadow: `0 0 0 1px ${COLOR_V2.GRAY_60}`,\n },\n fontSize: '24px',\n lineHeight: '28px',\n borderRadius: '12px',\n padding: 0,\n textAlign: 'center',\n width: '48px',\n height: '56px',\n});\n\nconst DigitInput: React.FC<DigitInputProps<HTMLInputElement>> = React.forwardRef<\n HTMLInputElement,\n DigitInputProps<HTMLInputElement>\n>((props, ref) => <input ref={ref} css={(theme: Theme) => digitInputStyle(theme, props)} {...props} type=\"tel\" />);\n\nexport interface CodeInputProps<T = HTMLInputElement> extends InputProps<T> {\n autoFocus?: boolean;\n digits?: number;\n markInvalid?: boolean;\n onCodeComplete?: (completeCode?: string) => void;\n}\n\nexport const CodeInput = ({\n style,\n digits = 6,\n autoFocus = false,\n markInvalid,\n onCodeComplete = noop,\n disabled,\n}: CodeInputProps) => {\n const [values, setValues] = useState(Array(digits).fill(''));\n const inputs = Array(digits);\n\n const forceSelection = (\n event:\n | React.MouseEvent<HTMLInputElement>\n | React.TouchEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n | React.FocusEvent<HTMLInputElement>,\n ) => {\n const target = event.target as HTMLInputElement;\n target.select();\n };\n\n const forceSelectionPreventDefault = (\n event: React.MouseEvent<HTMLInputElement> | React.TouchEvent<HTMLInputElement>,\n ) => {\n forceSelection(event);\n event.preventDefault();\n };\n\n const nextField = (currentFieldIndex: number) => {\n const nextFieldIndex = currentFieldIndex + 1;\n if (nextFieldIndex < digits) {\n inputs[nextFieldIndex].focus();\n }\n };\n\n const previousField = (currentFieldIndex: number) => {\n if (currentFieldIndex > 0) {\n inputs[currentFieldIndex - 1].focus();\n }\n };\n\n const setValue = (fieldIndex: number, value: string) => {\n if (/^[0-9]?$/.test(value)) {\n const valuesCopy = values.slice();\n valuesCopy[fieldIndex] = value;\n setValues(valuesCopy);\n if (value.length) {\n nextField(fieldIndex);\n }\n }\n };\n\n const handleKeyDown = (fieldIndex: number, {key}: React.KeyboardEvent<HTMLInputElement>) => {\n switch (key) {\n case 'Backspace':\n setValue(fieldIndex, '');\n previousField(fieldIndex);\n break;\n case 'ArrowLeft':\n previousField(fieldIndex);\n break;\n case 'ArrowRight':\n nextField(fieldIndex);\n break;\n }\n if (/^[0-9]$/.test(key)) {\n setValue(fieldIndex, key);\n }\n };\n\n const handlePaste = (fieldIndex: number, event: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedValue = event.clipboardData.getData('Text');\n const cleanedPaste = pastedValue.replace(/[^0-9]/g, '');\n if (/^[0-9]+$/.test(cleanedPaste)) {\n setValues(values.slice(0, fieldIndex).concat(cleanedPaste.split('')).slice(0, digits));\n }\n };\n\n useEffect(() => {\n const completeCode = values.join('');\n if (completeCode.length === digits) {\n onCodeComplete(completeCode);\n }\n }, [values]);\n\n return (\n <CodeInputWrapper style={style}>\n {Array.from({length: digits}, (_, index) => (\n <DigitInput\n autoFocus={index === 0 && autoFocus}\n key={index}\n onPaste={event => handlePaste(index, event)}\n onFocus={forceSelection}\n onMouseDown={forceSelectionPreventDefault}\n onTouchStart={forceSelectionPreventDefault}\n onKeyDown={event => handleKeyDown(index, event)}\n onKeyUp={forceSelection}\n markInvalid={markInvalid}\n ref={node => (inputs[index] = node)}\n value={values[index]}\n onChange={() => {}}\n disabled={disabled}\n />\n ))}\n </CodeInputWrapper>\n );\n};\n"],"file":"CodeInput.js"}
|
|
1
|
+
{"version":3,"sources":["CodeInput.tsx"],"names":["CodeInputWrapper","props","digitInputStyle","theme","marginLeft","boxShadow","COLOR_V2","GRAY_60","fontSize","lineHeight","borderRadius","padding","textAlign","width","height","DigitInput","React","forwardRef","ref","CodeInput","style","digits","autoFocus","markInvalid","onCodeComplete","noop","disabled","Array","fill","values","setValues","inputs","forceSelection","event","target","select","forceSelectionPreventDefault","preventDefault","nextField","currentFieldIndex","nextFieldIndex","focus","previousField","setValue","fieldIndex","value","test","valuesCopy","slice","length","handleKeyDown","key","handlePaste","pastedValue","clipboardData","getData","cleanedPaste","replace","concat","split","completeCode","join","from","_","index","node"],"mappings":"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","sourcesContent":["/*\n * Wire\n * Copyright (C) 2018 Wire Swiss GmbH\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU General Public License as published by\n * the Free Software Foundation, either version 3 of the License, or\n * (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU General Public License for more details.\n *\n * You should have received a copy of the GNU General Public License\n * along with this program. If not, see http://www.gnu.org/licenses/.\n *\n */\n\n/** @jsx jsx */\nimport {CSSObject, jsx} from '@emotion/react';\nimport React, {useEffect, useState} from 'react';\n\nimport type {Theme} from '../Layout';\nimport {noop} from '../util';\nimport {InputProps, inputStyle} from './Input';\nimport {COLOR_V2} from '../Identity';\n\nconst CodeInputWrapper = (props: React.HTMLProps<HTMLDivElement>) => (\n <div\n css={{\n display: 'flex',\n justifyContent: 'center',\n }}\n {...props}\n />\n);\n\ntype DigitInputProps<T = HTMLInputElement> = InputProps<T>;\n\nconst digitInputStyle: <T>(theme: Theme, props: DigitInputProps<T>) => CSSObject = (theme, props) => ({\n ...inputStyle(theme, props),\n '& + &': {\n marginLeft: 'min(19px, 2vw)',\n },\n '&:hover': {\n boxShadow: `0 0 0 1px ${COLOR_V2.GRAY_60}`,\n },\n fontSize: '24px',\n lineHeight: '28px',\n borderRadius: '12px',\n padding: 0,\n textAlign: 'center',\n width: 'min(48px, 13vw)',\n height: '56px',\n});\n\nconst DigitInput: React.FC<DigitInputProps<HTMLInputElement>> = React.forwardRef<\n HTMLInputElement,\n DigitInputProps<HTMLInputElement>\n>((props, ref) => <input ref={ref} css={(theme: Theme) => digitInputStyle(theme, props)} {...props} type=\"tel\" />);\n\nexport interface CodeInputProps<T = HTMLInputElement> extends InputProps<T> {\n autoFocus?: boolean;\n digits?: number;\n markInvalid?: boolean;\n onCodeComplete?: (completeCode?: string) => void;\n}\n\nexport const CodeInput = ({\n style,\n digits = 6,\n autoFocus = false,\n markInvalid,\n onCodeComplete = noop,\n disabled,\n}: CodeInputProps) => {\n const [values, setValues] = useState(Array(digits).fill(''));\n const inputs = Array(digits);\n\n const forceSelection = (\n event:\n | React.MouseEvent<HTMLInputElement>\n | React.TouchEvent<HTMLInputElement>\n | React.KeyboardEvent<HTMLInputElement>\n | React.FocusEvent<HTMLInputElement>,\n ) => {\n const target = event.target as HTMLInputElement;\n target.select();\n };\n\n const forceSelectionPreventDefault = (\n event: React.MouseEvent<HTMLInputElement> | React.TouchEvent<HTMLInputElement>,\n ) => {\n forceSelection(event);\n event.preventDefault();\n };\n\n const nextField = (currentFieldIndex: number) => {\n const nextFieldIndex = currentFieldIndex + 1;\n if (nextFieldIndex < digits) {\n inputs[nextFieldIndex].focus();\n }\n };\n\n const previousField = (currentFieldIndex: number) => {\n if (currentFieldIndex > 0) {\n inputs[currentFieldIndex - 1].focus();\n }\n };\n\n const setValue = (fieldIndex: number, value: string) => {\n if (/^[0-9]?$/.test(value)) {\n const valuesCopy = values.slice();\n valuesCopy[fieldIndex] = value;\n setValues(valuesCopy);\n if (value.length) {\n nextField(fieldIndex);\n }\n }\n };\n\n const handleKeyDown = (fieldIndex: number, {key}: React.KeyboardEvent<HTMLInputElement>) => {\n switch (key) {\n case 'Backspace':\n setValue(fieldIndex, '');\n previousField(fieldIndex);\n break;\n case 'ArrowLeft':\n previousField(fieldIndex);\n break;\n case 'ArrowRight':\n nextField(fieldIndex);\n break;\n }\n if (/^[0-9]$/.test(key)) {\n setValue(fieldIndex, key);\n }\n };\n\n const handlePaste = (fieldIndex: number, event: React.ClipboardEvent<HTMLInputElement>) => {\n const pastedValue = event.clipboardData.getData('Text');\n const cleanedPaste = pastedValue.replace(/[^0-9]/g, '');\n if (/^[0-9]+$/.test(cleanedPaste)) {\n setValues(values.slice(0, fieldIndex).concat(cleanedPaste.split('')).slice(0, digits));\n }\n };\n\n useEffect(() => {\n const completeCode = values.join('');\n if (completeCode.length === digits) {\n onCodeComplete(completeCode);\n }\n }, [values]);\n\n return (\n <CodeInputWrapper style={style}>\n {Array.from({length: digits}, (_, index) => (\n <DigitInput\n autoFocus={index === 0 && autoFocus}\n key={index}\n onPaste={event => handlePaste(index, event)}\n onFocus={forceSelection}\n onMouseDown={forceSelectionPreventDefault}\n onTouchStart={forceSelectionPreventDefault}\n onKeyDown={event => handleKeyDown(index, event)}\n onKeyUp={forceSelection}\n markInvalid={markInvalid}\n ref={node => (inputs[index] = node)}\n value={values[index]}\n onChange={() => {}}\n disabled={disabled}\n />\n ))}\n </CodeInputWrapper>\n );\n};\n"],"file":"CodeInput.js"}
|