@zohodesk/components 1.0.0-alpha-245 → 1.0.0-alpha-248
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/README.md +1071 -1061
- package/docs/external/active-line.js +72 -72
- package/docs/external/autorefresh.js +47 -47
- package/docs/external/codemirror.js +9681 -9681
- package/docs/external/css/hopscotch.css +576 -576
- package/docs/external/css/styleGuide.css +1100 -1100
- package/docs/external/css.js +466 -466
- package/docs/external/designTokens.js +1 -1
- package/docs/external/foldcode.js +151 -151
- package/docs/external/format.js +129 -129
- package/docs/external/htmlmixed.js +84 -84
- package/docs/external/index.html +127 -127
- package/docs/external/javascript.js +422 -422
- package/docs/external/jsx.js +147 -147
- package/docs/external/matchbrackets.js +145 -145
- package/docs/external/xml.js +322 -322
- package/docs/package.json +41 -41
- package/docs/src/index.js +1311 -1311
- package/es/AppContainer/AppContainer.module.css +18 -18
- package/es/Avatar/Avatar.js +9 -9
- package/es/Avatar/Avatar.module.css +117 -117
- package/es/Avatar/__tests__/__snapshots__/Avatar.spec.js.snap +288 -288
- package/es/AvatarTeam/AvatarTeam.js +7 -7
- package/es/AvatarTeam/AvatarTeam.module.css +161 -161
- package/es/AvatarTeam/__tests__/__snapshots__/AvatarTeam.spec.js.snap +226 -226
- package/es/AvatarTeam/docs/AvatarTeam__custom.docs.js +0 -0
- package/es/AvatarTeam/docs/AvatarTeam__default.docs.js +0 -0
- package/es/AvatarTeam/docs/AvatarTeam__palette.docs.js +0 -0
- package/es/AvatarTeam/docs/AvatarTeam__size.docs.js +0 -0
- package/es/Button/Button.js +4 -4
- package/es/Button/Button.module.css +521 -521
- package/es/Button/__tests__/__snapshots__/Button.spec.js.snap +191 -191
- package/es/Button/docs/Button__custom.docs.js +0 -0
- package/es/Button/docs/Button__default.docs.js +0 -0
- package/es/Buttongroup/Buttongroup.js +1 -1
- package/es/Buttongroup/Buttongroup.module.css +89 -89
- package/es/Buttongroup/__test__/__snapshots__/Buttongroup.spec.js.snap +146 -146
- package/es/Card/Card.js +12 -7
- package/es/Card/Card.module.css +20 -20
- package/es/Card/docs/Card__Custom.docs.js +0 -0
- package/es/Card/docs/Card__Default.docs.js +0 -0
- package/es/Card/docs/Card__Scroll.docs.js +0 -0
- package/es/CheckBox/CheckBox.js +0 -0
- package/es/CheckBox/CheckBox.module.css +157 -153
- package/es/CheckBox/docs/CheckBox__custom.docs.js +0 -0
- package/es/CheckBox/docs/CheckBox__default.docs.js +0 -0
- package/es/DateTime/CalendarView.js +0 -0
- package/es/DateTime/DateTime.js +0 -0
- package/es/DateTime/DateTime.module.css +187 -187
- package/es/DateTime/DateWidget.js +0 -0
- package/es/DateTime/DateWidget.module.css +38 -38
- package/es/DateTime/YearView.js +0 -0
- package/es/DateTime/YearView.module.css +81 -81
- package/es/DateTime/common.js +0 -0
- package/es/DateTime/docs/DateTime__default.docs.js +0 -0
- package/es/DateTime/docs/DateWidget__default.docs.js +0 -0
- package/es/DateTime/index.js +0 -0
- package/es/DateTime/objectUtils.js +0 -0
- package/es/DateTime/typeChecker.js +0 -0
- package/es/DateTime/validator.js +0 -0
- package/es/DropBox/DropBox.js +0 -0
- package/es/DropBox/DropBox.module.css +406 -406
- package/es/DropBox/DropBoxPositionMapping.json +144 -144
- package/es/DropDown/DropDown.js +0 -0
- package/es/DropDown/DropDown.module.css +5 -5
- package/es/DropDown/DropDownHeading.js +0 -0
- package/es/DropDown/DropDownHeading.module.css +53 -53
- package/es/DropDown/DropDownItem.js +0 -0
- package/es/DropDown/DropDownItem.module.css +94 -94
- package/es/DropDown/DropDownSearch.js +0 -0
- package/es/DropDown/DropDownSearch.module.css +14 -14
- package/es/DropDown/DropDownSeparator.js +0 -0
- package/es/DropDown/DropDownSeparator.module.css +7 -7
- package/es/Label/Label.js +2 -2
- package/es/Label/Label.module.css +52 -52
- package/es/Label/LabelColors.module.css +20 -20
- package/es/Label/__tests__/__snapshots__/Label.spec.js.snap +101 -101
- package/es/Label/docs/Label__clipped.docs.js +0 -0
- package/es/Label/docs/Label__custom.docs.js +0 -0
- package/es/Label/docs/Label__palette.docs.js +0 -0
- package/es/Label/docs/Label__size.docs.js +0 -0
- package/es/Label/docs/Label__type.docs.js +0 -0
- package/es/Layout/Box.js +15 -30
- package/es/Layout/Container.js +15 -27
- package/es/Layout/Layout.module.css +336 -324
- package/es/Layout/docs/Layout__default.docs.js +0 -0
- package/es/Layout/docs/Layout__four_Column.docs.js +16 -22
- package/es/Layout/props/defaultProps.js +12 -0
- package/es/Layout/props/propTypes.js +42 -0
- package/es/Layout/utils.js +0 -0
- package/es/LightNightMode/Colors.json +496 -496
- package/es/ListItem/ListItem.js +0 -0
- package/es/ListItem/ListItem.module.css +209 -205
- package/es/MultiSelect/AdvancedGroupMultiSelect.js +6 -6
- package/es/MultiSelect/MultiSelect.js +5 -5
- package/es/MultiSelect/MultiSelect.module.css +205 -205
- package/es/MultiSelect/MultiSelectWithAvatar.js +0 -0
- package/es/MultiSelect/SelectedOptions.module.css +15 -15
- package/es/MultiSelect/__tests__/MultiSelect.spec.js +0 -0
- package/es/PopOver/PopOver.module.css +8 -8
- package/es/Popup/Popup.js +0 -0
- package/es/Popup/PositionMapping.json +73 -73
- package/es/Radio/Radio.js +0 -0
- package/es/Radio/Radio.module.css +112 -110
- package/es/Radio/docs/Radio__custom.docs.js +0 -0
- package/es/Radio/docs/Radio__default.docs.js +0 -0
- package/es/Responsive/CustomResponsive.js +0 -0
- package/es/Responsive/docs/Responsive__Custom.docs.js +0 -0
- package/es/Responsive/docs/style.module.css +55 -55
- package/es/ResponsiveDropBox/ResponsiveDropBox.module.css +6 -6
- package/es/Ribbon/Ribbon.js +0 -0
- package/es/Ribbon/Ribbon.module.css +376 -376
- package/es/Ribbon/__tests__/__snapshots__/Ribbon.spec.js.snap +163 -163
- package/es/Ribbon/docs/Ribbon__custom.docs.js +0 -0
- package/es/Ribbon/docs/Ribbon__default.docs.js +0 -0
- package/es/RippleEffect/RippleEffect.module.css +92 -70
- package/es/Select/GroupSelect.js +0 -0
- package/es/Select/Select.js +0 -0
- package/es/Select/Select.module.css +106 -106
- package/es/Select/SelectWithAvatar.js +0 -0
- package/es/Select/SelectWithIcon.js +0 -0
- package/es/Select/__tests__/Select.spec.js +0 -0
- package/es/Select/docs/SelectWithIcon__default.docs.js +0 -0
- package/es/Select/docs/Select__default.docs.js +0 -0
- package/es/Stencils/Stencils.js +0 -0
- package/es/Stencils/Stencils.module.css +96 -96
- package/es/Stencils/__tests__/__snapshots__/Stencils.spec.js.snap +49 -49
- package/es/Switch/Switch.js +0 -0
- package/es/Switch/Switch.module.css +110 -109
- package/es/Switch/docs/Switch__custom.docs.js +0 -0
- package/es/Switch/docs/Switch__default.docs.js +0 -0
- package/es/Tab/Tab.module.css +101 -101
- package/es/Tab/TabContent.module.css +4 -4
- package/es/Tab/Tabs.js +17 -17
- package/es/Tab/Tabs.module.css +141 -141
- package/es/Tab/docs/tabdocs.module.css +29 -29
- package/es/Tag/Tag.js +8 -8
- package/es/Tag/Tag.module.css +254 -254
- package/es/Tag/docs/Tag__custom.docs.js +0 -0
- package/es/Tag/docs/Tag__default.docs.js +0 -0
- package/es/TextBox/TextBox.js +0 -0
- package/es/TextBox/TextBox.module.css +157 -157
- package/es/TextBox/__tests__/__snapshots__/TextBox.spec.js.snap +127 -127
- package/es/TextBox/docs/TextBox__custom.docs.js +0 -0
- package/es/TextBox/docs/TextBox__default.docs.js +0 -0
- package/es/TextBox/docs/TextBox__variant.docs.js +0 -0
- package/es/TextBoxIcon/TextBoxIcon.js +0 -0
- package/es/TextBoxIcon/TextBoxIcon.module.css +78 -78
- package/es/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +334 -334
- package/es/TextBoxIcon/docs/TextBoxIcon__custom.docs.js +0 -0
- package/es/TextBoxIcon/docs/TextBoxIcon__default.docs.js +0 -0
- package/es/Textarea/Textarea.js +0 -0
- package/es/Textarea/Textarea.module.css +139 -139
- package/es/Textarea/__tests__/__snapshots__/Textarea.spec.js.snap +97 -97
- package/es/Textarea/docs/Textarea__custom.docs.js +0 -0
- package/es/Textarea/docs/Textarea__default.docs.js +0 -0
- package/es/Textarea/docs/Textarea__disabled.docs.js +0 -0
- package/es/Tooltip/Tooltip.module.css +109 -109
- package/es/common/animation.module.css +624 -624
- package/es/common/avatarsizes.module.css +44 -44
- package/es/common/basic.module.css +33 -33
- package/es/common/basicReset.module.css +40 -40
- package/es/common/common.module.css +525 -502
- package/es/common/customscroll.module.css +89 -89
- package/es/common/docStyle.module.css +766 -766
- package/es/common/reset.module.css +12 -12
- package/es/common/transition.module.css +146 -146
- package/es/deprecated/AdvancedMultiSelect.module.css +126 -126
- package/es/index.js +0 -4
- package/es/semantic/Button/semanticButton.module.css +9 -9
- package/es/utils/Common.js +0 -0
- package/es/utils/dropDownUtils.js +0 -0
- package/lib/AppContainer/AppContainer.module.css +18 -18
- package/lib/Avatar/Avatar.js +9 -9
- package/lib/Avatar/Avatar.module.css +117 -117
- package/lib/Avatar/__tests__/__snapshots__/Avatar.spec.js.snap +288 -288
- package/lib/AvatarTeam/AvatarTeam.js +7 -7
- package/lib/AvatarTeam/AvatarTeam.module.css +161 -161
- package/lib/AvatarTeam/__tests__/__snapshots__/AvatarTeam.spec.js.snap +226 -226
- package/lib/AvatarTeam/docs/AvatarTeam__custom.docs.js +0 -0
- package/lib/AvatarTeam/docs/AvatarTeam__default.docs.js +0 -0
- package/lib/AvatarTeam/docs/AvatarTeam__palette.docs.js +0 -0
- package/lib/AvatarTeam/docs/AvatarTeam__size.docs.js +0 -0
- package/lib/Button/Button.js +4 -4
- package/lib/Button/Button.module.css +521 -521
- package/lib/Button/__tests__/__snapshots__/Button.spec.js.snap +191 -191
- package/lib/Button/docs/Button__custom.docs.js +0 -0
- package/lib/Button/docs/Button__default.docs.js +0 -0
- package/lib/Buttongroup/Buttongroup.js +1 -1
- package/lib/Buttongroup/Buttongroup.module.css +89 -89
- package/lib/Buttongroup/__test__/__snapshots__/Buttongroup.spec.js.snap +146 -146
- package/lib/Card/Card.js +12 -7
- package/lib/Card/Card.module.css +20 -20
- package/lib/Card/docs/Card__Custom.docs.js +0 -0
- package/lib/Card/docs/Card__Default.docs.js +0 -0
- package/lib/Card/docs/Card__Scroll.docs.js +0 -0
- package/lib/CheckBox/CheckBox.js +0 -0
- package/lib/CheckBox/CheckBox.module.css +157 -153
- package/lib/CheckBox/docs/CheckBox__custom.docs.js +0 -0
- package/lib/CheckBox/docs/CheckBox__default.docs.js +0 -0
- package/lib/DateTime/CalendarView.js +0 -0
- package/lib/DateTime/DateTime.js +0 -0
- package/lib/DateTime/DateTime.module.css +187 -187
- package/lib/DateTime/DateWidget.js +0 -0
- package/lib/DateTime/DateWidget.module.css +38 -38
- package/lib/DateTime/YearView.js +0 -0
- package/lib/DateTime/YearView.module.css +81 -81
- package/lib/DateTime/common.js +0 -0
- package/lib/DateTime/docs/DateTime__default.docs.js +0 -0
- package/lib/DateTime/docs/DateWidget__default.docs.js +0 -0
- package/lib/DateTime/index.js +0 -0
- package/lib/DateTime/objectUtils.js +0 -0
- package/lib/DateTime/typeChecker.js +0 -0
- package/lib/DateTime/validator.js +0 -0
- package/lib/DropBox/DropBox.js +0 -0
- package/lib/DropBox/DropBox.module.css +406 -406
- package/lib/DropBox/DropBoxPositionMapping.json +144 -144
- package/lib/DropDown/DropDown.js +0 -0
- package/lib/DropDown/DropDown.module.css +5 -5
- package/lib/DropDown/DropDownHeading.js +0 -0
- package/lib/DropDown/DropDownHeading.module.css +53 -53
- package/lib/DropDown/DropDownItem.js +0 -0
- package/lib/DropDown/DropDownItem.module.css +94 -94
- package/lib/DropDown/DropDownSearch.js +0 -0
- package/lib/DropDown/DropDownSearch.module.css +14 -14
- package/lib/DropDown/DropDownSeparator.js +0 -0
- package/lib/DropDown/DropDownSeparator.module.css +7 -7
- package/lib/Label/Label.js +0 -0
- package/lib/Label/Label.module.css +52 -52
- package/lib/Label/LabelColors.module.css +20 -20
- package/lib/Label/__tests__/__snapshots__/Label.spec.js.snap +101 -101
- package/lib/Label/docs/Label__clipped.docs.js +0 -0
- package/lib/Label/docs/Label__custom.docs.js +0 -0
- package/lib/Label/docs/Label__palette.docs.js +0 -0
- package/lib/Label/docs/Label__size.docs.js +0 -0
- package/lib/Label/docs/Label__type.docs.js +0 -0
- package/lib/Layout/Box.js +18 -32
- package/lib/Layout/Container.js +18 -29
- package/lib/Layout/Layout.module.css +336 -324
- package/lib/Layout/docs/Layout__default.docs.js +0 -0
- package/lib/Layout/docs/Layout__four_Column.docs.js +16 -22
- package/lib/Layout/props/defaultProps.js +20 -0
- package/lib/Layout/props/propTypes.js +54 -0
- package/lib/Layout/utils.js +0 -0
- package/lib/LightNightMode/Colors.json +496 -496
- package/lib/ListItem/ListItem.js +0 -0
- package/lib/ListItem/ListItem.module.css +209 -205
- package/lib/MultiSelect/AdvancedGroupMultiSelect.js +6 -6
- package/lib/MultiSelect/MultiSelect.js +5 -5
- package/lib/MultiSelect/MultiSelect.module.css +205 -205
- package/lib/MultiSelect/MultiSelectWithAvatar.js +0 -0
- package/lib/MultiSelect/SelectedOptions.module.css +15 -15
- package/lib/MultiSelect/__tests__/MultiSelect.spec.js +0 -0
- package/lib/PopOver/PopOver.module.css +8 -8
- package/lib/Popup/Popup.js +0 -0
- package/lib/Popup/PositionMapping.json +73 -73
- package/lib/Radio/Radio.js +0 -0
- package/lib/Radio/Radio.module.css +112 -110
- package/lib/Radio/docs/Radio__custom.docs.js +0 -0
- package/lib/Radio/docs/Radio__default.docs.js +0 -0
- package/lib/Responsive/CustomResponsive.js +0 -0
- package/lib/Responsive/docs/Responsive__Custom.docs.js +0 -0
- package/lib/Responsive/docs/style.module.css +55 -55
- package/lib/ResponsiveDropBox/ResponsiveDropBox.module.css +6 -6
- package/lib/Ribbon/Ribbon.js +0 -0
- package/lib/Ribbon/Ribbon.module.css +376 -376
- package/lib/Ribbon/__tests__/__snapshots__/Ribbon.spec.js.snap +163 -163
- package/lib/Ribbon/docs/Ribbon__custom.docs.js +0 -0
- package/lib/Ribbon/docs/Ribbon__default.docs.js +0 -0
- package/lib/RippleEffect/RippleEffect.module.css +92 -70
- package/lib/Select/GroupSelect.js +0 -0
- package/lib/Select/Select.js +0 -0
- package/lib/Select/Select.module.css +106 -106
- package/lib/Select/SelectWithAvatar.js +0 -0
- package/lib/Select/SelectWithIcon.js +0 -0
- package/lib/Select/__tests__/Select.spec.js +0 -0
- package/lib/Select/docs/SelectWithIcon__default.docs.js +0 -0
- package/lib/Select/docs/Select__default.docs.js +0 -0
- package/lib/Stencils/Stencils.js +0 -0
- package/lib/Stencils/Stencils.module.css +96 -96
- package/lib/Stencils/__tests__/__snapshots__/Stencils.spec.js.snap +49 -49
- package/lib/Switch/Switch.js +0 -0
- package/lib/Switch/Switch.module.css +110 -109
- package/lib/Switch/docs/Switch__custom.docs.js +0 -0
- package/lib/Switch/docs/Switch__default.docs.js +0 -0
- package/lib/Tab/Tab.module.css +101 -101
- package/lib/Tab/TabContent.module.css +4 -4
- package/lib/Tab/Tabs.js +11 -11
- package/lib/Tab/Tabs.module.css +141 -141
- package/lib/Tab/docs/tabdocs.module.css +29 -29
- package/lib/Tag/Tag.js +8 -8
- package/lib/Tag/Tag.module.css +254 -254
- package/lib/Tag/docs/Tag__custom.docs.js +0 -0
- package/lib/Tag/docs/Tag__default.docs.js +0 -0
- package/lib/TextBox/TextBox.js +0 -0
- package/lib/TextBox/TextBox.module.css +157 -157
- package/lib/TextBox/__tests__/__snapshots__/TextBox.spec.js.snap +127 -127
- package/lib/TextBox/docs/TextBox__custom.docs.js +0 -0
- package/lib/TextBox/docs/TextBox__default.docs.js +0 -0
- package/lib/TextBox/docs/TextBox__variant.docs.js +0 -0
- package/lib/TextBoxIcon/TextBoxIcon.js +0 -0
- package/lib/TextBoxIcon/TextBoxIcon.module.css +78 -78
- package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +334 -334
- package/lib/TextBoxIcon/docs/TextBoxIcon__custom.docs.js +0 -0
- package/lib/TextBoxIcon/docs/TextBoxIcon__default.docs.js +0 -0
- package/lib/Textarea/Textarea.js +0 -0
- package/lib/Textarea/Textarea.module.css +139 -139
- package/lib/Textarea/__tests__/__snapshots__/Textarea.spec.js.snap +97 -97
- package/lib/Textarea/docs/Textarea__custom.docs.js +0 -0
- package/lib/Textarea/docs/Textarea__default.docs.js +0 -0
- package/lib/Textarea/docs/Textarea__disabled.docs.js +0 -0
- package/lib/Tooltip/Tooltip.module.css +109 -109
- package/lib/common/animation.module.css +624 -624
- package/lib/common/avatarsizes.module.css +44 -44
- package/lib/common/basic.module.css +33 -33
- package/lib/common/basicReset.module.css +40 -40
- package/lib/common/common.module.css +525 -502
- package/lib/common/customscroll.module.css +89 -89
- package/lib/common/docStyle.module.css +766 -766
- package/lib/common/reset.module.css +12 -12
- package/lib/common/transition.module.css +146 -146
- package/lib/deprecated/AdvancedMultiSelect.module.css +126 -126
- package/lib/index.js +0 -36
- package/lib/semantic/Button/semanticButton.module.css +9 -9
- package/lib/utils/Common.js +0 -0
- package/lib/utils/dropDownUtils.js +0 -0
- package/package.json +76 -75
- package/es/a11y/FocusScope/FocusScope.js +0 -370
- package/es/a11y/FocusScope/docs/FocusScope__default.docs.js +0 -139
- package/es/beta/FocusRing/FocusRing.js +0 -281
- package/es/beta/FocusRing/FocusRing.module.css +0 -152
- package/es/beta/FocusRing/docs/FocusRing__default.docs.js +0 -48
- package/lib/a11y/FocusScope/FocusScope.js +0 -443
- package/lib/a11y/FocusScope/docs/FocusScope__default.docs.js +0 -191
- package/lib/beta/FocusRing/FocusRing.js +0 -338
- package/lib/beta/FocusRing/FocusRing.module.css +0 -152
- package/lib/beta/FocusRing/docs/FocusRing__default.docs.js +0 -101
package/package.json
CHANGED
|
@@ -1,75 +1,76 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@zohodesk/components",
|
|
3
|
-
"version": "1.0.0-alpha-
|
|
4
|
-
"main": "lib/index.js",
|
|
5
|
-
"module": "es/index.js",
|
|
6
|
-
"jsnext:main": "es/index.js",
|
|
7
|
-
"private": false,
|
|
8
|
-
"umdVar": "Component",
|
|
9
|
-
"scripts": {
|
|
10
|
-
"build:docs": "react-cli build:docs",
|
|
11
|
-
"lint": "react-cli lint",
|
|
12
|
-
"lintAll": "react-cli lint ./src",
|
|
13
|
-
"lintAllFix": "npm run lintAll --eslint:fix=true",
|
|
14
|
-
"clean": "react-cli clean build unittest coverage es lib assets && mkdir assets",
|
|
15
|
-
"dubCheck": "node dubFinder node_modules/@zohodesk/icons/lib node_modules/@zohodesk/variables/lib",
|
|
16
|
-
"init": "npm run clean && cd ../assets && npm run componentsassets && cd ../components && npm run build:variables",
|
|
17
|
-
"build:variables": "node ./preprocess/index",
|
|
18
|
-
"rtl": "react-cli rtl ./src ./lib && react-cli rtl ./src ./es",
|
|
19
|
-
"
|
|
20
|
-
"
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"build:
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"
|
|
33
|
-
"
|
|
34
|
-
"
|
|
35
|
-
"
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"@zohodesk/
|
|
40
|
-
"@zohodesk/
|
|
41
|
-
"@zohodesk/
|
|
42
|
-
"
|
|
43
|
-
"react
|
|
44
|
-
"
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
"react-
|
|
49
|
-
"
|
|
50
|
-
"
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
"@zohodesk/
|
|
55
|
-
"@zohodesk/
|
|
56
|
-
"@zohodesk/
|
|
57
|
-
"
|
|
58
|
-
"react
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
"
|
|
67
|
-
"
|
|
68
|
-
"
|
|
69
|
-
|
|
70
|
-
"@zohodesk/
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@zohodesk/components",
|
|
3
|
+
"version": "1.0.0-alpha-248",
|
|
4
|
+
"main": "lib/index.js",
|
|
5
|
+
"module": "es/index.js",
|
|
6
|
+
"jsnext:main": "es/index.js",
|
|
7
|
+
"private": false,
|
|
8
|
+
"umdVar": "Component",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"build:docs": "react-cli build:docs",
|
|
11
|
+
"lint": "react-cli lint",
|
|
12
|
+
"lintAll": "react-cli lint ./src",
|
|
13
|
+
"lintAllFix": "npm run lintAll --eslint:fix=true",
|
|
14
|
+
"clean": "react-cli clean build unittest coverage es lib assets && mkdir assets",
|
|
15
|
+
"dubCheck": "node dubFinder node_modules/@zohodesk/icons/lib node_modules/@zohodesk/variables/lib",
|
|
16
|
+
"init": "npm run clean && cd ../assets && npm run componentsassets && cd ../components && npm run build:variables",
|
|
17
|
+
"build:variables": "node ./preprocess/index",
|
|
18
|
+
"rtl": "react-cli rtl ./src ./lib && react-cli rtl ./src ./es",
|
|
19
|
+
"common_package_build":"cd ../common && npm run build && cd ../components",
|
|
20
|
+
"start": "react-cli start",
|
|
21
|
+
"docs": "npm run common_package_build && npm run dubCheck && react-cli docs",
|
|
22
|
+
"build": " react-cli build:component:cmjs",
|
|
23
|
+
"buildlocal": " react-cli build:component:cmjs && npm run rtl",
|
|
24
|
+
"build:dev": "npm run build:variables && npm run build && npm run build:es --module:mode=dev -- -w",
|
|
25
|
+
"build:es": "react-cli build:library:es",
|
|
26
|
+
"rtl:watch": "react-cli rtl ./src ./es -w",
|
|
27
|
+
"build:css:umd": "npm run clean && npm run init && react-cli build:css:umd",
|
|
28
|
+
"coverage": "react-cli coverage",
|
|
29
|
+
"prepare": "react-cli clean assets && npm run init && npm run build && npm run build:es && npm run rtl",
|
|
30
|
+
"postpublish": "react-cli postpublish",
|
|
31
|
+
"report": "react-cli publish:report",
|
|
32
|
+
"test": "react-cli test",
|
|
33
|
+
"sstest": "npm run init && react-cli sstest",
|
|
34
|
+
"build:external": "npm run clean && npm run init && npm run docsjs:build && npm run build:externalDocCopy && react-cli build:component:umd && npm run externalDocHTMLChange",
|
|
35
|
+
"download": "rm package-lock.json && rm -rf node_modules/ && npm install",
|
|
36
|
+
"expublish": "npm publish --tag experimental-version"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@zohodesk/docstool": "1.0.0-alpha-2",
|
|
40
|
+
"@zohodesk/variables": "1.0.0-beta.29",
|
|
41
|
+
"@zohodesk/icons": "1.0.0-beta.109",
|
|
42
|
+
"@zohodesk/virtualizer": "1.0.3",
|
|
43
|
+
"velocity-react": "1.4.3",
|
|
44
|
+
"react-sortable-hoc": "^0.8.3",
|
|
45
|
+
"@zohodesk/svg": "1.0.0-beta.48"
|
|
46
|
+
},
|
|
47
|
+
"dependencies": {
|
|
48
|
+
"hoist-non-react-statics": "3.0.1",
|
|
49
|
+
"react-transition-group": "2.5.0",
|
|
50
|
+
"reselect": "4.0.0",
|
|
51
|
+
"selectn": "1.1.2"
|
|
52
|
+
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"@zohodesk/icons": "1.0.0-beta.109",
|
|
55
|
+
"@zohodesk/variables": "1.0.0-beta.29",
|
|
56
|
+
"@zohodesk/svg": "1.0.0-beta.49",
|
|
57
|
+
"@zohodesk/virtualizer": "1.0.3",
|
|
58
|
+
"velocity-react": "1.4.3",
|
|
59
|
+
"react-sortable-hoc": "^0.8.3"
|
|
60
|
+
},
|
|
61
|
+
"react-cli": {
|
|
62
|
+
"preprocess": {
|
|
63
|
+
"runner": "./preprocess/index.js"
|
|
64
|
+
},
|
|
65
|
+
"docs": {
|
|
66
|
+
"disableES5Transpile": true,
|
|
67
|
+
"componentFolder": "./src",
|
|
68
|
+
"cssUniqueness": "false",
|
|
69
|
+
"rtlExclude": [
|
|
70
|
+
"@zohodesk/icons",
|
|
71
|
+
"@zohodesk/variables"
|
|
72
|
+
],
|
|
73
|
+
"hasRTL": true
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -1,370 +0,0 @@
|
|
|
1
|
-
import React, { useContext, useEffect, useRef } from 'react';
|
|
2
|
-
let scopes = new Set();
|
|
3
|
-
let activeScope = null;
|
|
4
|
-
const FocusContext = /*#__PURE__*/React.createContext(null); // interface FocusManager {
|
|
5
|
-
// /** Moves focus to the next focusable or tabbable element in the focus scope. */
|
|
6
|
-
// focusNext(opts?: FocusManagerOptions): HTMLElement,
|
|
7
|
-
// /** Moves focus to the previous focusable or tabbable element in the focus scope. */
|
|
8
|
-
// focusPrevious(opts?: FocusManagerOptions): HTMLElement
|
|
9
|
-
// }
|
|
10
|
-
|
|
11
|
-
export const useLayoutEffect = window !== 'undefined' ? React.useLayoutEffect : () => {};
|
|
12
|
-
export default function FocusScope(props) {
|
|
13
|
-
let {
|
|
14
|
-
children,
|
|
15
|
-
contain = true,
|
|
16
|
-
restoreFocus = true,
|
|
17
|
-
autoFocus = true
|
|
18
|
-
} = props;
|
|
19
|
-
let startRef = useRef();
|
|
20
|
-
let endRef = useRef();
|
|
21
|
-
let scopeRef = useRef([]);
|
|
22
|
-
useLayoutEffect(() => {
|
|
23
|
-
// Find all rendered nodes between the sentinels and add them to the scope.
|
|
24
|
-
let node = startRef.current.nextSibling;
|
|
25
|
-
let nodes = [];
|
|
26
|
-
|
|
27
|
-
while (node && node !== endRef.current) {
|
|
28
|
-
nodes.push(node);
|
|
29
|
-
node = node.nextSibling;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
scopeRef.current = nodes;
|
|
33
|
-
scopes.add(scopeRef);
|
|
34
|
-
return () => {
|
|
35
|
-
scopes.delete(scopeRef);
|
|
36
|
-
};
|
|
37
|
-
}, [children]);
|
|
38
|
-
useFocusContainment(scopeRef, contain);
|
|
39
|
-
useRestoreFocus(scopeRef, restoreFocus, contain);
|
|
40
|
-
useAutoFocus(scopeRef, autoFocus);
|
|
41
|
-
let focusManager = createFocusManager(scopeRef);
|
|
42
|
-
return /*#__PURE__*/React.createElement(FocusContext.Provider, {
|
|
43
|
-
value: focusManager
|
|
44
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
45
|
-
hidden: true,
|
|
46
|
-
ref: startRef
|
|
47
|
-
}), children, /*#__PURE__*/React.createElement("span", {
|
|
48
|
-
hidden: true,
|
|
49
|
-
ref: endRef
|
|
50
|
-
}));
|
|
51
|
-
}
|
|
52
|
-
export function useFocusManager() {
|
|
53
|
-
return useContext(FocusContext);
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
function createFocusManager(scopeRef) {
|
|
57
|
-
return {
|
|
58
|
-
focusNext(opts) {
|
|
59
|
-
let node = opts.from || document.activeElement;
|
|
60
|
-
let focusable = getFocusableElementsInScope(scopeRef.current, opts);
|
|
61
|
-
let nextNode = focusable.find(n => !!(node.compareDocumentPosition(n) & (Node.DOCUMENT_POSITION_FOLLOWING | Node.DOCUMENT_POSITION_CONTAINED_BY)));
|
|
62
|
-
|
|
63
|
-
if (!nextNode && opts.wrap) {
|
|
64
|
-
nextNode = focusable[0];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
if (nextNode) {
|
|
68
|
-
nextNode.focus();
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
return nextNode;
|
|
72
|
-
},
|
|
73
|
-
|
|
74
|
-
focusPrevious(opts) {
|
|
75
|
-
let node = opts.from || document.activeElement;
|
|
76
|
-
let focusable = getFocusableElementsInScope(scopeRef.current, opts).reverse();
|
|
77
|
-
let previousNode = focusable.find(n => !!(node.compareDocumentPosition(n) & (Node.DOCUMENT_POSITION_PRECEDING | Node.DOCUMENT_POSITION_CONTAINED_BY)));
|
|
78
|
-
|
|
79
|
-
if (!previousNode && opts.wrap) {
|
|
80
|
-
previousNode = focusable[0];
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (previousNode) {
|
|
84
|
-
previousNode.focus();
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
return previousNode;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
const focusableElements = ['input:not([disabled]):not([type=hidden])', 'select:not([disabled])', 'textarea:not([disabled])', 'button:not([disabled])', 'a[href]', 'audio[controls]', 'video[controls]', '[contenteditable]:not([contenteditable="false"])', 'details>summary:first-of-type', 'details', 'area[href]', 'summary', 'iframe', 'object', 'embed'];
|
|
94
|
-
const FOCUSABLE_ELEMENT_SELECTOR = focusableElements.join(',') + ',[tabindex]';
|
|
95
|
-
focusableElements.push('[tabindex]:not([tabindex="-1"])');
|
|
96
|
-
const TABBABLE_ELEMENT_SELECTOR = focusableElements.join(':not([tabindex="-1"]),');
|
|
97
|
-
|
|
98
|
-
function useAutoFocus(scopeRef, autoFocus) {
|
|
99
|
-
useEffect(() => {
|
|
100
|
-
if (autoFocus) {
|
|
101
|
-
activeScope = scopeRef;
|
|
102
|
-
|
|
103
|
-
if (!isElementInScope(document.activeElement, activeScope.current)) {
|
|
104
|
-
focusFirstInScope(scopeRef.current);
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}, [scopeRef, autoFocus]);
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function getFocusableElementsInScope(scope, opts) {
|
|
111
|
-
let res = [],
|
|
112
|
-
response = [];
|
|
113
|
-
let selector = opts.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;
|
|
114
|
-
|
|
115
|
-
for (let node of scope) {
|
|
116
|
-
if (node.matches(selector)) {
|
|
117
|
-
res.push(node);
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
response.push(...Array.from(node.querySelectorAll(selector)));
|
|
121
|
-
res = response.filter(element => {
|
|
122
|
-
return !(window.getComputedStyle(element).display === 'none');
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
;
|
|
127
|
-
return res;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
function useFocusContainment(scopeRef, contain) {
|
|
131
|
-
let focusedNode = useRef();
|
|
132
|
-
let raf = useRef(null);
|
|
133
|
-
useEffect(() => {
|
|
134
|
-
let scope = scopeRef.current;
|
|
135
|
-
|
|
136
|
-
if (!contain) {
|
|
137
|
-
return;
|
|
138
|
-
} // Handle the Tab key to contain focus within the scope
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
let onKeyDown = e => {
|
|
142
|
-
if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
let elements = getFocusableElementsInScope(scope, {
|
|
147
|
-
tabbable: true
|
|
148
|
-
});
|
|
149
|
-
let focusedElement = document.activeElement;
|
|
150
|
-
|
|
151
|
-
if (!isElementInScope(focusedElement, scope)) {
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
let position = elements.indexOf(focusedElement);
|
|
156
|
-
let lastPosition = elements.length - 1;
|
|
157
|
-
let nextElement = null;
|
|
158
|
-
|
|
159
|
-
if (e.shiftKey) {
|
|
160
|
-
if (position <= 0) {
|
|
161
|
-
nextElement = elements[lastPosition];
|
|
162
|
-
} else {
|
|
163
|
-
nextElement = elements[position - 1];
|
|
164
|
-
}
|
|
165
|
-
} else {
|
|
166
|
-
if (position === lastPosition) {
|
|
167
|
-
nextElement = elements[0];
|
|
168
|
-
} else {
|
|
169
|
-
nextElement = elements[position + 1];
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
e.preventDefault();
|
|
174
|
-
|
|
175
|
-
if (nextElement) {
|
|
176
|
-
focusElement(nextElement, true);
|
|
177
|
-
}
|
|
178
|
-
};
|
|
179
|
-
|
|
180
|
-
let onFocus = e => {
|
|
181
|
-
// If a focus event occurs outside the active scope (e.g. user tabs from browser location bar),
|
|
182
|
-
// restore focus to the previously focused node or the first tabbable element in the active scope.
|
|
183
|
-
let isInAnyScope = isElementInAnyScope(e.target, scopes);
|
|
184
|
-
|
|
185
|
-
if (!isInAnyScope) {
|
|
186
|
-
if (focusedNode.current) {
|
|
187
|
-
focusedNode.current.focus();
|
|
188
|
-
} else if (activeScope) {
|
|
189
|
-
focusFirstInScope(activeScope.current);
|
|
190
|
-
}
|
|
191
|
-
} else {
|
|
192
|
-
activeScope = scopeRef;
|
|
193
|
-
focusedNode.current = e.target;
|
|
194
|
-
}
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
let onBlur = e => {
|
|
198
|
-
// Firefox doesn't shift focus back to the Dialog properly without this
|
|
199
|
-
raf.current = requestAnimationFrame(() => {
|
|
200
|
-
// Use document.activeElement instead of e.relatedTarget so we can tell if user clicked into iframe
|
|
201
|
-
let isInAnyScope = isElementInAnyScope(document.activeElement, scopes);
|
|
202
|
-
|
|
203
|
-
if (!isInAnyScope) {
|
|
204
|
-
activeScope = scopeRef;
|
|
205
|
-
focusedNode.current = e.target;
|
|
206
|
-
focusedNode.current.focus();
|
|
207
|
-
}
|
|
208
|
-
});
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
document.addEventListener('keydown', onKeyDown, false);
|
|
212
|
-
document.addEventListener('focusin', onFocus, false);
|
|
213
|
-
scope.forEach(element => element.addEventListener('focusin', onFocus, false));
|
|
214
|
-
scope.forEach(element => element.addEventListener('focusout', onBlur, false));
|
|
215
|
-
return () => {
|
|
216
|
-
document.removeEventListener('keydown', onKeyDown, false);
|
|
217
|
-
document.removeEventListener('focusin', onFocus, false);
|
|
218
|
-
scope.forEach(element => element.removeEventListener('focusin', onFocus, false));
|
|
219
|
-
scope.forEach(element => element.removeEventListener('focusout', onBlur, false));
|
|
220
|
-
};
|
|
221
|
-
}, [scopeRef, contain]); // eslint-disable-next-line arrow-body-style
|
|
222
|
-
|
|
223
|
-
useEffect(() => {
|
|
224
|
-
return () => cancelAnimationFrame(raf.current);
|
|
225
|
-
}, [raf]);
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
function isElementInAnyScope(element) {
|
|
229
|
-
let scopes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
230
|
-
|
|
231
|
-
for (let scope of scopes.values()) {
|
|
232
|
-
if (isElementInScope(element, scope.current)) {
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
return false;
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
function isElementInScope(element) {
|
|
241
|
-
let scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
242
|
-
return scope.some(node => node.contains(element));
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
function focusElement() {
|
|
246
|
-
let element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
|
247
|
-
|
|
248
|
-
if (element != null) {
|
|
249
|
-
element.focus();
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
function findElement(elements) {
|
|
254
|
-
let ele = [];
|
|
255
|
-
|
|
256
|
-
for (let element = 0; element < elements.length; element++) {
|
|
257
|
-
let elem = elements[element];
|
|
258
|
-
|
|
259
|
-
if (elem.getAttribute('data-auto-focus')) {
|
|
260
|
-
ele.push(elem);
|
|
261
|
-
}
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
return ele.length ? ele[0] : null;
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
function focusFirstInScope() {
|
|
268
|
-
let scope = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
|
|
269
|
-
let elements = getFocusableElementsInScope(scope, {
|
|
270
|
-
tabbable: true
|
|
271
|
-
});
|
|
272
|
-
let element = findElement(elements);
|
|
273
|
-
focusElement(element ? element : elements[0]);
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
function useRestoreFocus(scopeRef, restoreFocus, contain) {
|
|
277
|
-
// useLayoutEffect instead of useEffect so the active element is saved synchronously instead of asynchronously.
|
|
278
|
-
useLayoutEffect(() => {
|
|
279
|
-
let scope = scopeRef.current;
|
|
280
|
-
let nodeToRestore = document.activeElement; // Handle the Tab key so that tabbing out of the scope goes to the next element
|
|
281
|
-
// after the node that had focus when the scope mounted. This is important when
|
|
282
|
-
// using portals for overlays, so that focus goes to the expected element when
|
|
283
|
-
// tabbing out of the overlay.
|
|
284
|
-
|
|
285
|
-
let onKeyDown = e => {
|
|
286
|
-
if (e.key !== 'Tab' || e.altKey || e.ctrlKey || e.metaKey) {
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
let focusedElement = document.activeElement;
|
|
291
|
-
|
|
292
|
-
if (!isElementInScope(focusedElement, scope)) {
|
|
293
|
-
return;
|
|
294
|
-
} // Create a DOM tree walker that matches all tabbable elements
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
let walker = getFocusableTreeWalker(document.body, {
|
|
298
|
-
tabbable: true
|
|
299
|
-
}); // Find the next tabbable element after the currently focused element
|
|
300
|
-
|
|
301
|
-
walker.currentNode = focusedElement;
|
|
302
|
-
let nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode(); // If there is no next element, or it is outside the current scope, move focus to the
|
|
303
|
-
// next element after the node to restore to instead.
|
|
304
|
-
|
|
305
|
-
if ((!nextElement || !isElementInScope(nextElement, scope)) && nodeToRestore) {
|
|
306
|
-
walker.currentNode = nodeToRestore; // Skip over elements within the scope, in case the scope immediately follows the node to restore.
|
|
307
|
-
|
|
308
|
-
do {
|
|
309
|
-
nextElement = e.shiftKey ? walker.previousNode() : walker.nextNode();
|
|
310
|
-
} while (isElementInScope(nextElement, scope));
|
|
311
|
-
|
|
312
|
-
e.preventDefault();
|
|
313
|
-
e.stopPropagation();
|
|
314
|
-
|
|
315
|
-
if (nextElement) {
|
|
316
|
-
nextElement.focus();
|
|
317
|
-
} else {
|
|
318
|
-
// If there is no next element, blur the focused element to move focus to the body.
|
|
319
|
-
focusedElement.blur();
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
};
|
|
323
|
-
|
|
324
|
-
if (!contain) {
|
|
325
|
-
document.addEventListener('keydown', onKeyDown, true);
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
return () => {
|
|
329
|
-
if (!contain) {
|
|
330
|
-
document.removeEventListener('keydown', onKeyDown, true);
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
if (restoreFocus && nodeToRestore && isElementInScope(document.activeElement, scope)) {
|
|
334
|
-
requestAnimationFrame(() => {
|
|
335
|
-
if (document.body.contains(nodeToRestore)) {
|
|
336
|
-
focusElement(nodeToRestore);
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
}
|
|
340
|
-
};
|
|
341
|
-
}, [scopeRef, restoreFocus, contain]);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
export function getFocusableTreeWalker(root, opts) {
|
|
345
|
-
let selector = opts && opts.tabbable ? TABBABLE_ELEMENT_SELECTOR : FOCUSABLE_ELEMENT_SELECTOR;
|
|
346
|
-
let walker = document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, {
|
|
347
|
-
acceptNode(node) {
|
|
348
|
-
// Skip nodes inside the starting node.
|
|
349
|
-
if (opts && opts.from && opts.from.contains(node)) {
|
|
350
|
-
return NodeFilter.FILTER_REJECT;
|
|
351
|
-
}
|
|
352
|
-
|
|
353
|
-
if (node.matches(selector)) {
|
|
354
|
-
return NodeFilter.FILTER_ACCEPT;
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
return NodeFilter.FILTER_SKIP;
|
|
358
|
-
}
|
|
359
|
-
|
|
360
|
-
}, false);
|
|
361
|
-
|
|
362
|
-
if (opts && opts.from) {
|
|
363
|
-
walker.currentNode = opts.from;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
return walker;
|
|
367
|
-
}
|
|
368
|
-
FocusScope.docs = {
|
|
369
|
-
componentGroup: 'Atom'
|
|
370
|
-
};
|
|
@@ -1,139 +0,0 @@
|
|
|
1
|
-
import React from 'react';
|
|
2
|
-
import PropTypes from 'prop-types';
|
|
3
|
-
import FocusScope, { useFocusManager } from '../FocusScope';
|
|
4
|
-
import style from '../../../beta/FocusRing/FocusRing.module.css';
|
|
5
|
-
export default class FocusScope__default extends React.Component {
|
|
6
|
-
constructor(props) {
|
|
7
|
-
super(props);
|
|
8
|
-
this.state = {
|
|
9
|
-
isOpen: false,
|
|
10
|
-
isSub: false
|
|
11
|
-
};
|
|
12
|
-
this.handleSubmit = this.handleSubmit.bind(this);
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
handleSubmit(e, issub) {
|
|
16
|
-
this.setState({
|
|
17
|
-
isSub: issub,
|
|
18
|
-
isOpen: e
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
render() {
|
|
23
|
-
const {
|
|
24
|
-
isOpen,
|
|
25
|
-
isSub
|
|
26
|
-
} = this.state;
|
|
27
|
-
console.log(this.state);
|
|
28
|
-
return /*#__PURE__*/React.createElement("div", null, /*#__PURE__*/React.createElement("button", {
|
|
29
|
-
className: style.primary,
|
|
30
|
-
type: "button",
|
|
31
|
-
onClick: this.handleSubmit.bind(this, true, false)
|
|
32
|
-
}, "Focusscope"), isOpen ? /*#__PURE__*/React.createElement("div", {
|
|
33
|
-
className: style.freezeLayer
|
|
34
|
-
}, /*#__PURE__*/React.createElement(FocusScope, {
|
|
35
|
-
contain: true,
|
|
36
|
-
autoFocus: true,
|
|
37
|
-
restoreFocus: true
|
|
38
|
-
}, /*#__PURE__*/React.createElement(FormContainer, {
|
|
39
|
-
onSubmit: this.handleSubmit.bind(this, true, true),
|
|
40
|
-
onCancel: this.handleSubmit.bind(this, false, false)
|
|
41
|
-
}), isSub ? /*#__PURE__*/React.createElement(FocusScope, {
|
|
42
|
-
contain: true,
|
|
43
|
-
restoreFocus: true,
|
|
44
|
-
autoFocus: true
|
|
45
|
-
}, /*#__PURE__*/React.createElement("span", {
|
|
46
|
-
className: `${style.container} ${isSub && style.box1} ${isSub && style.manage}`
|
|
47
|
-
}, /*#__PURE__*/React.createElement(ToolbarButton, null, "Cut"), /*#__PURE__*/React.createElement(ToolbarButton, null, "Copy"), /*#__PURE__*/React.createElement(ToolbarButton, null, "Paste"), /*#__PURE__*/React.createElement(ToolbarButton, {
|
|
48
|
-
onClick: this.handleSubmit.bind(this, true, false)
|
|
49
|
-
}, "Close"))) : null)) : null);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
function ToolbarButton(props) {
|
|
55
|
-
const focusManager = useFocusManager();
|
|
56
|
-
|
|
57
|
-
const onKeyDown = e => {
|
|
58
|
-
switch (e.key) {
|
|
59
|
-
case 'ArrowRight':
|
|
60
|
-
focusManager.focusNext({
|
|
61
|
-
wrap: true
|
|
62
|
-
});
|
|
63
|
-
break;
|
|
64
|
-
|
|
65
|
-
case 'ArrowLeft':
|
|
66
|
-
focusManager.focusPrevious({
|
|
67
|
-
wrap: true
|
|
68
|
-
});
|
|
69
|
-
break;
|
|
70
|
-
|
|
71
|
-
default:
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
const {
|
|
76
|
-
onClick,
|
|
77
|
-
children
|
|
78
|
-
} = props;
|
|
79
|
-
return /*#__PURE__*/React.createElement("button", {
|
|
80
|
-
className: style.primary,
|
|
81
|
-
type: "button",
|
|
82
|
-
onClick: onClick,
|
|
83
|
-
onKeyDown: onKeyDown
|
|
84
|
-
}, children);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
ToolbarButton.propTypes = {
|
|
88
|
-
children: PropTypes.string.isRequired,
|
|
89
|
-
onClick: PropTypes.func
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
function FormContainer(props) {
|
|
93
|
-
const {
|
|
94
|
-
onSubmit,
|
|
95
|
-
onCancel
|
|
96
|
-
} = props;
|
|
97
|
-
const options = ['apple', 'MSoffice'];
|
|
98
|
-
return /*#__PURE__*/React.createElement("div", {
|
|
99
|
-
className: `${style.container} ${style.box1}`
|
|
100
|
-
}, /*#__PURE__*/React.createElement("button", {
|
|
101
|
-
className: style.secondary,
|
|
102
|
-
type: "button",
|
|
103
|
-
onClick: onCancel
|
|
104
|
-
}, "close"), /*#__PURE__*/React.createElement("form", {
|
|
105
|
-
className: style.formContainer
|
|
106
|
-
}, /*#__PURE__*/React.createElement("h3", null, "name"), /*#__PURE__*/React.createElement("input", {
|
|
107
|
-
type: "text",
|
|
108
|
-
value: "Input A",
|
|
109
|
-
className: `${style.input} ${style.inpFocus}`,
|
|
110
|
-
name: "name"
|
|
111
|
-
}), /*#__PURE__*/React.createElement("h3", null, "contact"), /*#__PURE__*/React.createElement("input", {
|
|
112
|
-
type: "text",
|
|
113
|
-
value: "Input A",
|
|
114
|
-
className: `${style.input} ${style.inpFocus}`,
|
|
115
|
-
name: "contact"
|
|
116
|
-
}), /*#__PURE__*/React.createElement("h3", null, "select"), /*#__PURE__*/React.createElement("select", {
|
|
117
|
-
options: options,
|
|
118
|
-
name: "select",
|
|
119
|
-
className: `${style.input} ${style.inpFocus}`
|
|
120
|
-
}, options.map((item, i) => /*#__PURE__*/React.createElement("option", {
|
|
121
|
-
key: `item-${i}`
|
|
122
|
-
}, item)))), /*#__PURE__*/React.createElement("button", {
|
|
123
|
-
className: style.primary,
|
|
124
|
-
type: "submit",
|
|
125
|
-
onClick: onSubmit
|
|
126
|
-
}, "Submit"), /*#__PURE__*/React.createElement("button", {
|
|
127
|
-
className: style.secondary,
|
|
128
|
-
type: "button",
|
|
129
|
-
onClick: onCancel
|
|
130
|
-
}, "Cancel"));
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
FormContainer.propTypes = {
|
|
134
|
-
onCancel: PropTypes.func,
|
|
135
|
-
onSubmit: PropTypes.func
|
|
136
|
-
};
|
|
137
|
-
FocusScope__default.docs = {
|
|
138
|
-
componentGroup: 'Atom'
|
|
139
|
-
};
|