@wordpress/components 19.8.4 → 19.11.0
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 +60 -0
- package/CONTRIBUTING.md +80 -7
- package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js +11 -11
- package/build/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
- package/build/border-box-control/border-box-control/component.js +22 -7
- package/build/border-box-control/border-box-control/component.js.map +1 -1
- package/build/border-box-control/border-box-control-linked-button/hook.js +3 -2
- package/build/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
- package/build/border-box-control/border-box-control-split-controls/component.js +21 -8
- package/build/border-box-control/border-box-control-split-controls/component.js.map +1 -1
- package/build/border-box-control/border-box-control-visualizer/hook.js +3 -2
- package/build/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
- package/build/border-box-control/styles.js +11 -15
- package/build/border-box-control/styles.js.map +1 -1
- package/build/border-control/border-control/component.js +5 -3
- package/build/border-control/border-control/component.js.map +1 -1
- package/build/border-control/border-control/hook.js +6 -3
- package/build/border-control/border-control/hook.js.map +1 -1
- package/build/border-control/border-control-dropdown/component.js +6 -2
- package/build/border-control/border-control-dropdown/component.js.map +1 -1
- package/build/border-control/border-control-dropdown/hook.js +5 -5
- package/build/border-control/border-control-dropdown/hook.js.map +1 -1
- package/build/border-control/styles.js +58 -29
- package/build/border-control/styles.js.map +1 -1
- package/build/box-control/index.js +0 -21
- package/build/box-control/index.js.map +1 -1
- package/build/box-control/utils.js +1 -8
- package/build/box-control/utils.js.map +1 -1
- package/build/button/index.js +3 -5
- package/build/button/index.js.map +1 -1
- package/build/button/index.native.js +16 -2
- package/build/button/index.native.js.map +1 -1
- package/build/button-group/index.js +24 -7
- package/build/button-group/index.js.map +1 -1
- package/build/{flyout → button-group}/types.js +0 -0
- package/build/button-group/types.js.map +1 -0
- package/build/checkbox-control/index.js +34 -7
- package/build/checkbox-control/index.js.map +1 -1
- package/build/checkbox-control/types.js +6 -0
- package/build/checkbox-control/types.js.map +1 -0
- package/build/circular-option-picker/index.js +1 -2
- package/build/circular-option-picker/index.js.map +1 -1
- package/build/color-palette/index.js +5 -12
- package/build/color-palette/index.js.map +1 -1
- package/build/date-time/date.js +43 -19
- package/build/date-time/date.js.map +1 -1
- package/build/date-time/index.js +28 -3
- package/build/date-time/index.js.map +1 -1
- package/build/date-time/time.js +42 -40
- package/build/date-time/time.js.map +1 -1
- package/build/date-time/timezone.js +4 -3
- package/build/date-time/timezone.js.map +1 -1
- package/build/date-time/types.js +6 -0
- package/build/date-time/types.js.map +1 -0
- package/build/date-time/utils.js +6 -4
- package/build/date-time/utils.js.map +1 -1
- package/build/disabled/index.js +4 -76
- package/build/disabled/index.js.map +1 -1
- package/build/draggable/index.native.js +223 -0
- package/build/draggable/index.native.js.map +1 -0
- package/build/dropdown/index.js +7 -5
- package/build/dropdown/index.js.map +1 -1
- package/build/focal-point-picker/index.native.js +3 -3
- package/build/focal-point-picker/index.native.js.map +1 -1
- package/build/heading/hook.js +1 -1
- package/build/heading/hook.js.map +1 -1
- package/build/index.js +0 -8
- package/build/index.js.map +1 -1
- package/build/index.native.js +16 -0
- package/build/index.native.js.map +1 -1
- package/build/input-control/index.js +27 -4
- package/build/input-control/index.js.map +1 -1
- package/build/input-control/styles/input-control-styles.js +42 -30
- package/build/input-control/styles/input-control-styles.js.map +1 -1
- package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
- package/build/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
- package/build/mobile/bottom-sheet/index.native.js +1 -1
- package/build/mobile/bottom-sheet/index.native.js.map +1 -1
- package/build/mobile/bottom-sheet-select-control/index.native.js +4 -2
- package/build/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
- package/build/mobile/html-text-input/index.native.js +19 -8
- package/build/mobile/html-text-input/index.native.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/index.android.js +28 -5
- package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/index.ios.js +47 -24
- package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build/navigation/styles/navigation-styles.js +12 -12
- package/build/navigation/styles/navigation-styles.js.map +1 -1
- package/build/notice/index.native.js +44 -40
- package/build/notice/index.native.js.map +1 -1
- package/build/notice/list.native.js +27 -45
- package/build/notice/list.native.js.map +1 -1
- package/build/palette-edit/index.js +38 -7
- package/build/palette-edit/index.js.map +1 -1
- package/build/popover/index.js +223 -323
- package/build/popover/index.js.map +1 -1
- package/build/resizable-box/resize-tooltip/utils.js +5 -8
- package/build/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build/sandbox/index.js +2 -2
- package/build/sandbox/index.js.map +1 -1
- package/build/sandbox/index.native.js +1 -1
- package/build/sandbox/index.native.js.map +1 -1
- package/build/select-control/index.js +31 -4
- package/build/select-control/index.js.map +1 -1
- package/build/select-control/styles/select-control-styles.js +17 -14
- package/build/select-control/styles/select-control-styles.js.map +1 -1
- package/build/surface/styles.js +8 -8
- package/build/surface/styles.js.map +1 -1
- package/build/text/hook.js +5 -5
- package/build/text/hook.js.map +1 -1
- package/build/text/styles/text-mixins.native.js +1 -1
- package/build/text/styles/text-mixins.native.js.map +1 -1
- package/build/text/styles.js +7 -7
- package/build/text/styles.js.map +1 -1
- package/build/text-control/index.js +35 -28
- package/build/text-control/index.js.map +1 -1
- package/build/text-control/types.js +6 -0
- package/build/text-control/types.js.map +1 -0
- package/build/toggle-group-control/toggle-group-control/component.js +1 -3
- package/build/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build/toggle-group-control/toggle-group-control-option-icon/component.js +6 -4
- package/build/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
- package/build/tools-panel/tools-panel-header/component.js +52 -36
- package/build/tools-panel/tools-panel-header/component.js.map +1 -1
- package/build/tooltip/index.js +2 -2
- package/build/tooltip/index.js.map +1 -1
- package/build/ui/spinner/component.js +1 -1
- package/build/ui/spinner/component.js.map +1 -1
- package/build/unit-control/index.js +3 -3
- package/build/unit-control/index.js.map +1 -1
- package/build/unit-control/styles/unit-control-styles.js +11 -20
- package/build/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build/unit-control/utils.js.map +1 -1
- package/build/utils/colors-values.js +9 -24
- package/build/utils/colors-values.js.map +1 -1
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js +11 -11
- package/build-module/alignment-matrix-control/styles/alignment-matrix-control-styles.js.map +1 -1
- package/build-module/border-box-control/border-box-control/component.js +22 -7
- package/build-module/border-box-control/border-box-control/component.js.map +1 -1
- package/build-module/border-box-control/border-box-control-linked-button/hook.js +3 -2
- package/build-module/border-box-control/border-box-control-linked-button/hook.js.map +1 -1
- package/build-module/border-box-control/border-box-control-split-controls/component.js +21 -8
- package/build-module/border-box-control/border-box-control-split-controls/component.js.map +1 -1
- package/build-module/border-box-control/border-box-control-visualizer/hook.js +3 -2
- package/build-module/border-box-control/border-box-control-visualizer/hook.js.map +1 -1
- package/build-module/border-box-control/styles.js +9 -15
- package/build-module/border-box-control/styles.js.map +1 -1
- package/build-module/border-control/border-control/component.js +5 -3
- package/build-module/border-control/border-control/component.js.map +1 -1
- package/build-module/border-control/border-control/hook.js +6 -3
- package/build-module/border-control/border-control/hook.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/component.js +6 -2
- package/build-module/border-control/border-control-dropdown/component.js.map +1 -1
- package/build-module/border-control/border-control-dropdown/hook.js +5 -5
- package/build-module/border-control/border-control-dropdown/hook.js.map +1 -1
- package/build-module/border-control/styles.js +56 -29
- package/build-module/border-control/styles.js.map +1 -1
- package/build-module/box-control/index.js +1 -20
- package/build-module/box-control/index.js.map +1 -1
- package/build-module/box-control/utils.js +0 -6
- package/build-module/box-control/utils.js.map +1 -1
- package/build-module/button/index.js +3 -4
- package/build-module/button/index.js.map +1 -1
- package/build-module/button/index.native.js +16 -3
- package/build-module/button/index.native.js.map +1 -1
- package/build-module/button-group/index.js +27 -7
- package/build-module/button-group/index.js.map +1 -1
- package/build-module/{flyout → button-group}/types.js +0 -0
- package/build-module/{flyout → button-group}/types.js.map +0 -0
- package/build-module/checkbox-control/index.js +31 -7
- package/build-module/checkbox-control/index.js.map +1 -1
- package/build-module/checkbox-control/types.js +2 -0
- package/{build/flyout → build-module/checkbox-control}/types.js.map +0 -0
- package/build-module/circular-option-picker/index.js +1 -2
- package/build-module/circular-option-picker/index.js.map +1 -1
- package/build-module/color-palette/index.js +5 -11
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/date-time/date.js +44 -19
- package/build-module/date-time/date.js.map +1 -1
- package/build-module/date-time/index.js +28 -4
- package/build-module/date-time/index.js.map +1 -1
- package/build-module/date-time/time.js +43 -41
- package/build-module/date-time/time.js.map +1 -1
- package/build-module/date-time/timezone.js +4 -3
- package/build-module/date-time/timezone.js.map +1 -1
- package/build-module/date-time/types.js +2 -0
- package/build-module/date-time/types.js.map +1 -0
- package/build-module/date-time/utils.js +6 -4
- package/build-module/date-time/utils.js.map +1 -1
- package/build-module/disabled/index.js +5 -76
- package/build-module/disabled/index.js.map +1 -1
- package/build-module/draggable/index.native.js +206 -0
- package/build-module/draggable/index.native.js.map +1 -0
- package/build-module/dropdown/index.js +7 -5
- package/build-module/dropdown/index.js.map +1 -1
- package/build-module/focal-point-picker/index.native.js +3 -3
- package/build-module/focal-point-picker/index.native.js.map +1 -1
- package/build-module/heading/hook.js +1 -1
- package/build-module/heading/hook.js.map +1 -1
- package/build-module/index.js +0 -1
- package/build-module/index.js.map +1 -1
- package/build-module/index.native.js +2 -1
- package/build-module/index.native.js.map +1 -1
- package/build-module/input-control/index.js +24 -3
- package/build-module/input-control/index.js.map +1 -1
- package/build-module/input-control/styles/input-control-styles.js +42 -30
- package/build-module/input-control/styles/input-control-styles.js.map +1 -1
- package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
- package/build-module/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/index.native.js +1 -1
- package/build-module/mobile/bottom-sheet/index.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet-select-control/index.native.js +4 -2
- package/build-module/mobile/bottom-sheet-select-control/index.native.js.map +1 -1
- package/build-module/mobile/html-text-input/index.native.js +20 -9
- package/build-module/mobile/html-text-input/index.native.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/index.android.js +21 -5
- package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +42 -25
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build-module/navigation/styles/navigation-styles.js +13 -13
- package/build-module/navigation/styles/navigation-styles.js.map +1 -1
- package/build-module/notice/index.native.js +45 -41
- package/build-module/notice/index.native.js.map +1 -1
- package/build-module/notice/list.native.js +28 -46
- package/build-module/notice/list.native.js.map +1 -1
- package/build-module/palette-edit/index.js +37 -7
- package/build-module/palette-edit/index.js.map +1 -1
- package/build-module/popover/index.js +225 -325
- package/build-module/popover/index.js.map +1 -1
- package/build-module/resizable-box/resize-tooltip/utils.js +4 -5
- package/build-module/resizable-box/resize-tooltip/utils.js.map +1 -1
- package/build-module/sandbox/index.js +2 -2
- package/build-module/sandbox/index.js.map +1 -1
- package/build-module/sandbox/index.native.js +1 -1
- package/build-module/sandbox/index.native.js.map +1 -1
- package/build-module/select-control/index.js +29 -3
- package/build-module/select-control/index.js.map +1 -1
- package/build-module/select-control/styles/select-control-styles.js +17 -14
- package/build-module/select-control/styles/select-control-styles.js.map +1 -1
- package/build-module/surface/styles.js +8 -8
- package/build-module/surface/styles.js.map +1 -1
- package/build-module/text/hook.js +5 -5
- package/build-module/text/hook.js.map +1 -1
- package/build-module/text/styles/text-mixins.native.js +2 -2
- package/build-module/text/styles/text-mixins.native.js.map +1 -1
- package/build-module/text/styles.js +7 -7
- package/build-module/text/styles.js.map +1 -1
- package/build-module/text-control/index.js +35 -27
- package/build-module/text-control/index.js.map +1 -1
- package/build-module/text-control/types.js +2 -0
- package/build-module/text-control/types.js.map +1 -0
- package/build-module/toggle-group-control/toggle-group-control/component.js +2 -3
- package/build-module/toggle-group-control/toggle-group-control/component.js.map +1 -1
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js +1 -5
- package/build-module/toggle-group-control/toggle-group-control-option-icon/component.js.map +1 -1
- package/build-module/tools-panel/tools-panel-header/component.js +51 -36
- package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
- package/build-module/tooltip/index.js +2 -2
- package/build-module/tooltip/index.js.map +1 -1
- package/build-module/ui/spinner/component.js +1 -1
- package/build-module/ui/spinner/component.js.map +1 -1
- package/build-module/unit-control/index.js +3 -3
- package/build-module/unit-control/index.js.map +1 -1
- package/build-module/unit-control/styles/unit-control-styles.js +11 -20
- package/build-module/unit-control/styles/unit-control-styles.js.map +1 -1
- package/build-module/unit-control/utils.js.map +1 -1
- package/build-module/utils/colors-values.js +19 -23
- package/build-module/utils/colors-values.js.map +1 -1
- package/build-style/style-rtl.css +55 -170
- package/build-style/style.css +51 -170
- package/build-types/border-box-control/border-box-control/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts +3 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/component.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +3 -1
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts.map +1 -1
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts.map +1 -1
- package/build-types/border-box-control/styles.d.ts +2 -2
- package/build-types/border-box-control/styles.d.ts.map +1 -1
- package/build-types/border-box-control/types.d.ts +40 -13
- package/build-types/border-box-control/types.d.ts.map +1 -1
- package/build-types/border-control/border-control/component.d.ts.map +1 -1
- package/build-types/border-control/border-control/hook.d.ts +2 -1
- package/build-types/border-control/border-control/hook.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/component.d.ts.map +1 -1
- package/build-types/border-control/border-control-dropdown/hook.d.ts +1 -0
- package/build-types/border-control/border-control-dropdown/hook.d.ts.map +1 -1
- package/build-types/border-control/styles.d.ts +2 -1
- package/build-types/border-control/styles.d.ts.map +1 -1
- package/build-types/border-control/types.d.ts +18 -6
- package/build-types/border-control/types.d.ts.map +1 -1
- package/build-types/button/index.d.ts.map +1 -1
- package/build-types/button-group/index.d.ts +25 -0
- package/build-types/button-group/index.d.ts.map +1 -0
- package/build-types/button-group/stories/index.d.ts +12 -0
- package/build-types/button-group/stories/index.d.ts.map +1 -0
- package/build-types/button-group/types.d.ts +11 -0
- package/build-types/button-group/types.d.ts.map +1 -0
- package/build-types/checkbox-control/index.d.ts +26 -0
- package/build-types/checkbox-control/index.d.ts.map +1 -0
- package/build-types/checkbox-control/stories/index.d.ts +13 -0
- package/build-types/checkbox-control/stories/index.d.ts.map +1 -0
- package/build-types/checkbox-control/types.d.ts +35 -0
- package/build-types/checkbox-control/types.d.ts.map +1 -0
- package/build-types/circular-option-picker/index.d.ts.map +1 -1
- package/build-types/color-palette/index.d.ts.map +1 -1
- package/build-types/color-picker/styles.d.ts +3 -3
- package/build-types/date-time/date.d.ts +24 -0
- package/build-types/date-time/date.d.ts.map +1 -0
- package/build-types/date-time/index.d.ts +35 -0
- package/build-types/date-time/index.d.ts.map +1 -0
- package/build-types/date-time/stories/date.d.ts +14 -0
- package/build-types/date-time/stories/date.d.ts.map +1 -0
- package/build-types/date-time/stories/index.d.ts +14 -0
- package/build-types/date-time/stories/index.d.ts.map +1 -0
- package/build-types/date-time/stories/time.d.ts +12 -0
- package/build-types/date-time/stories/time.d.ts.map +1 -0
- package/build-types/date-time/stories/utils.d.ts +3 -0
- package/build-types/date-time/stories/utils.d.ts.map +1 -0
- package/build-types/date-time/test/date.d.ts +2 -0
- package/build-types/date-time/test/date.d.ts.map +1 -0
- package/build-types/date-time/test/time.d.ts +2 -0
- package/build-types/date-time/test/time.d.ts.map +1 -0
- package/build-types/date-time/test/utils.d.ts +2 -0
- package/build-types/date-time/test/utils.d.ts.map +1 -0
- package/build-types/date-time/time.d.ts +25 -0
- package/build-types/date-time/time.d.ts.map +1 -0
- package/build-types/date-time/timezone.d.ts +8 -0
- package/build-types/date-time/timezone.d.ts.map +1 -0
- package/build-types/date-time/types.d.ts +91 -0
- package/build-types/date-time/types.d.ts.map +1 -0
- package/build-types/date-time/utils.d.ts +15 -0
- package/build-types/date-time/utils.d.ts.map +1 -0
- package/build-types/disabled/index.d.ts.map +1 -1
- package/build-types/dropdown/index.d.ts.map +1 -1
- package/build-types/input-control/index.d.ts +23 -3
- package/build-types/input-control/index.d.ts.map +1 -1
- package/build-types/input-control/input-field.d.ts +1 -1
- package/build-types/input-control/input-field.d.ts.map +1 -1
- package/build-types/input-control/stories/index.d.ts +5 -5
- package/build-types/input-control/stories/index.d.ts.map +1 -1
- package/build-types/input-control/styles/input-control-styles.d.ts +1 -0
- package/build-types/input-control/styles/input-control-styles.d.ts.map +1 -1
- package/build-types/input-control/types.d.ts +79 -3
- package/build-types/input-control/types.d.ts.map +1 -1
- package/build-types/number-control/styles/number-control-styles.d.ts +1 -1
- package/build-types/popover/index.d.ts +5 -8
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/resizable-box/index.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/utils.d.ts.map +1 -1
- package/build-types/select-control/index.d.ts +30 -26
- package/build-types/select-control/index.d.ts.map +1 -1
- package/build-types/select-control/stories/index.d.ts +23 -0
- package/build-types/select-control/stories/index.d.ts.map +1 -0
- package/build-types/select-control/styles/select-control-styles.d.ts +3 -4
- package/build-types/select-control/styles/select-control-styles.d.ts.map +1 -1
- package/build-types/select-control/test/select-control.d.ts +2 -0
- package/build-types/select-control/test/select-control.d.ts.map +1 -0
- package/build-types/select-control/types.d.ts +52 -1
- package/build-types/select-control/types.d.ts.map +1 -1
- package/build-types/text-control/index.d.ts +2 -2
- package/build-types/toggle-group-control/toggle-group-control/component.d.ts.map +1 -1
- package/build-types/toggle-group-control/toggle-group-control-option-icon/component.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
- package/build-types/tools-panel/types.d.ts +0 -1
- package/build-types/tools-panel/types.d.ts.map +1 -1
- package/build-types/tooltip/index.d.ts.map +1 -1
- package/build-types/unit-control/index.d.ts +2 -2
- package/build-types/unit-control/index.d.ts.map +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts.map +1 -1
- package/build-types/unit-control/test/index.d.ts +2 -0
- package/build-types/unit-control/test/index.d.ts.map +1 -0
- package/build-types/unit-control/test/utils.d.ts +2 -0
- package/build-types/unit-control/test/utils.d.ts.map +1 -0
- package/build-types/unit-control/types.d.ts +1 -1
- package/build-types/unit-control/types.d.ts.map +1 -1
- package/build-types/unit-control/utils.d.ts +3 -3
- package/build-types/unit-control/utils.d.ts.map +1 -1
- package/build-types/utils/colors-values.d.ts +6 -146
- package/build-types/utils/colors-values.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/alignment-matrix-control/styles/alignment-matrix-control-styles.js +5 -3
- package/src/autocomplete/style.scss +1 -1
- package/src/border-box-control/border-box-control/README.md +10 -14
- package/src/border-box-control/border-box-control/component.tsx +21 -4
- package/src/border-box-control/border-box-control-linked-button/hook.ts +10 -6
- package/src/border-box-control/border-box-control-split-controls/component.tsx +24 -7
- package/src/border-box-control/border-box-control-visualizer/hook.ts +11 -6
- package/src/border-box-control/stories/index.js +1 -0
- package/src/border-box-control/styles.ts +15 -8
- package/src/border-box-control/types.ts +40 -14
- package/src/border-control/border-control/README.md +0 -7
- package/src/border-control/border-control/component.tsx +4 -2
- package/src/border-control/border-control/hook.ts +5 -2
- package/src/border-control/border-control-dropdown/component.tsx +18 -11
- package/src/border-control/border-control-dropdown/hook.ts +7 -5
- package/src/border-control/stories/index.js +1 -0
- package/src/border-control/styles.ts +82 -22
- package/src/border-control/types.ts +18 -6
- package/src/box-control/README.md +0 -74
- package/src/box-control/index.js +0 -15
- package/src/box-control/stories/index.js +0 -29
- package/src/box-control/utils.js +0 -7
- package/src/button/index.js +2 -4
- package/src/button/index.native.js +33 -18
- package/src/button/test/index.js +16 -1
- package/src/button-group/index.tsx +47 -0
- package/src/button-group/stories/index.tsx +41 -0
- package/src/button-group/types.ts +11 -0
- package/src/checkbox-control/README.md +10 -8
- package/src/checkbox-control/{index.js → index.tsx} +49 -14
- package/src/checkbox-control/stories/{index.js → index.tsx} +49 -27
- package/src/checkbox-control/types.ts +36 -0
- package/src/circular-option-picker/index.js +1 -2
- package/src/circular-option-picker/style.scss +1 -0
- package/src/color-palette/README.md +0 -1
- package/src/color-palette/index.js +6 -13
- package/src/color-palette/style.scss +3 -18
- package/src/color-palette/test/__snapshots__/index.js.snap +2 -3
- package/src/confirm-dialog/stories/index.js +87 -99
- package/src/date-time/README.md +13 -10
- package/src/date-time/{date.js → date.tsx} +49 -20
- package/src/date-time/{index.js → index.tsx} +31 -5
- package/src/date-time/stories/date.tsx +73 -0
- package/src/date-time/stories/index.tsx +75 -0
- package/src/date-time/stories/time.tsx +51 -0
- package/src/date-time/stories/utils.ts +9 -0
- package/src/date-time/test/date.tsx +127 -0
- package/src/date-time/test/{time.js → time.tsx} +34 -19
- package/src/date-time/test/{utils.js → utils.ts} +1 -1
- package/src/date-time/{time.js → time.tsx} +57 -46
- package/src/date-time/{timezone.js → timezone.tsx} +4 -3
- package/src/date-time/types.ts +106 -0
- package/src/date-time/utils.ts +20 -0
- package/src/dimension-control/test/__snapshots__/index.test.js.snap +4 -4
- package/src/disabled/index.js +5 -90
- package/src/draggable/index.native.js +215 -0
- package/src/draggable/style.native.scss +3 -0
- package/src/dropdown/index.js +9 -4
- package/src/dropdown/style.scss +1 -1
- package/src/focal-point-picker/index.native.js +3 -3
- package/src/form-file-upload/test/index.js +20 -13
- package/src/heading/hook.ts +1 -1
- package/src/heading/test/__snapshots__/index.js.snap +3 -3
- package/src/index.js +0 -1
- package/src/index.native.js +1 -0
- package/src/input-control/README.md +3 -3
- package/src/input-control/index.tsx +23 -3
- package/src/input-control/stories/index.tsx +63 -0
- package/src/input-control/styles/input-control-styles.tsx +20 -7
- package/src/input-control/types.ts +79 -2
- package/src/item-group/stories/index.js +22 -18
- package/src/menu-item/style.scss +10 -0
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/navigation-screen.native.js +1 -1
- package/src/mobile/bottom-sheet/bottom-sheet-navigation/test/navigation-container.native.js +9 -2
- package/src/mobile/bottom-sheet/index.native.js +1 -1
- package/src/mobile/bottom-sheet-select-control/index.native.js +8 -2
- package/src/mobile/html-text-input/index.native.js +45 -29
- package/src/mobile/html-text-input/style.android.scss +2 -15
- package/src/mobile/html-text-input/style.ios.scss +2 -15
- package/src/mobile/html-text-input/{style-common.native.scss → style.scss} +16 -0
- package/src/mobile/keyboard-aware-flat-list/index.android.js +15 -5
- package/src/mobile/keyboard-aware-flat-list/index.ios.js +75 -46
- package/src/mobile/link-settings/test/link-settings-navigation.native.js +9 -1
- package/src/navigation/styles/navigation-styles.js +5 -5
- package/src/navigator/stories/index.js +16 -10
- package/src/notice/index.native.js +44 -54
- package/src/notice/list.native.js +27 -51
- package/src/notice/style.native.scss +1 -0
- package/src/palette-edit/index.js +37 -9
- package/src/palette-edit/style.scss +0 -7
- package/src/palette-edit/test/index.js +63 -0
- package/src/panel/README.md +1 -1
- package/src/placeholder/test/index.js +7 -0
- package/src/popover/README.md +7 -9
- package/src/popover/index.js +242 -417
- package/src/popover/style.scss +20 -190
- package/src/popover/test/__snapshots__/index.js.snap +6 -18
- package/src/query-controls/README.md +2 -2
- package/src/resizable-box/resize-tooltip/utils.ts +4 -5
- package/src/sandbox/index.js +2 -2
- package/src/sandbox/index.native.js +1 -1
- package/src/select-control/README.md +2 -2
- package/src/select-control/index.tsx +30 -29
- package/src/select-control/stories/index.tsx +90 -0
- package/src/select-control/styles/select-control-styles.ts +16 -12
- package/src/select-control/test/{select-control.js → select-control.tsx} +2 -2
- package/src/select-control/types.ts +66 -1
- package/src/surface/styles.js +1 -1
- package/src/tab-panel/style.scss +1 -1
- package/src/text/hook.js +1 -1
- package/src/text/styles/text-mixins.native.js +2 -2
- package/src/text/styles.js +1 -1
- package/src/text/test/__snapshots__/{index.js.snap → index.tsx.snap} +16 -0
- package/src/text/test/{index.js → index.tsx} +12 -6
- package/src/text-control/index.tsx +84 -0
- package/src/text-control/stories/index.tsx +66 -0
- package/src/text-control/types.ts +29 -0
- package/src/toggle-group-control/test/__snapshots__/index.js.snap +4 -10
- package/src/toggle-group-control/toggle-group-control/component.tsx +7 -3
- package/src/toggle-group-control/toggle-group-control-option-icon/component.tsx +1 -5
- package/src/toolbar-group/style.scss +20 -0
- package/src/tools-panel/test/__snapshots__/index.js.snap +2 -2
- package/src/tools-panel/test/index.js +71 -18
- package/src/tools-panel/tools-panel-header/component.tsx +75 -33
- package/src/tools-panel/types.ts +0 -1
- package/src/tooltip/index.js +8 -2
- package/src/tooltip/style.scss +2 -4
- package/src/tooltip/test/index.js +6 -0
- package/src/tooltip/test/index.native.js +1 -1
- package/src/ui/spinner/component.js +1 -1
- package/src/ui/spinner/test/__snapshots__/index.js.snap +3 -3
- package/src/unit-control/index.tsx +2 -5
- package/src/unit-control/styles/unit-control-styles.ts +3 -13
- package/src/unit-control/test/__snapshots__/index.tsx.snap +33 -0
- package/src/unit-control/test/{index.js → index.tsx} +295 -166
- package/src/unit-control/test/{utils.js → utils.ts} +38 -19
- package/src/unit-control/types.ts +4 -1
- package/src/unit-control/utils.ts +5 -3
- package/src/utils/colors-values.js +18 -22
- package/tsconfig.json +14 -3
- package/tsconfig.tsbuildinfo +1 -1
- package/build/box-control/visualizer.js +0 -165
- package/build/box-control/visualizer.js.map +0 -1
- package/build/flyout/context.js +0 -23
- package/build/flyout/context.js.map +0 -1
- package/build/flyout/flyout/component.js +0 -106
- package/build/flyout/flyout/component.js.map +0 -1
- package/build/flyout/flyout/hook.js +0 -53
- package/build/flyout/flyout/hook.js.map +0 -1
- package/build/flyout/flyout/index.js +0 -24
- package/build/flyout/flyout/index.js.map +0 -1
- package/build/flyout/flyout-content/component.js +0 -65
- package/build/flyout/flyout-content/component.js.map +0 -1
- package/build/flyout/flyout-content/index.js +0 -16
- package/build/flyout/flyout-content/index.js.map +0 -1
- package/build/flyout/index.js +0 -16
- package/build/flyout/index.js.map +0 -1
- package/build/flyout/styles.js +0 -46
- package/build/flyout/styles.js.map +0 -1
- package/build/flyout/utils.js +0 -36
- package/build/flyout/utils.js.map +0 -1
- package/build/mobile/html-text-input/container.android.js +0 -41
- package/build/mobile/html-text-input/container.android.js.map +0 -1
- package/build/mobile/html-text-input/container.ios.js +0 -60
- package/build/mobile/html-text-input/container.ios.js.map +0 -1
- package/build/popover/utils.js +0 -322
- package/build/popover/utils.js.map +0 -1
- package/build-module/box-control/visualizer.js +0 -154
- package/build-module/box-control/visualizer.js.map +0 -1
- package/build-module/flyout/context.js +0 -11
- package/build-module/flyout/context.js.map +0 -1
- package/build-module/flyout/flyout/component.js +0 -89
- package/build-module/flyout/flyout/component.js.map +0 -1
- package/build-module/flyout/flyout/hook.js +0 -44
- package/build-module/flyout/flyout/hook.js.map +0 -1
- package/build-module/flyout/flyout/index.js +0 -3
- package/build-module/flyout/flyout/index.js.map +0 -1
- package/build-module/flyout/flyout-content/component.js +0 -51
- package/build-module/flyout/flyout-content/component.js.map +0 -1
- package/build-module/flyout/flyout-content/index.js +0 -2
- package/build-module/flyout/flyout-content/index.js.map +0 -1
- package/build-module/flyout/index.js +0 -2
- package/build-module/flyout/index.js.map +0 -1
- package/build-module/flyout/styles.js +0 -27
- package/build-module/flyout/styles.js.map +0 -1
- package/build-module/flyout/utils.js +0 -25
- package/build-module/flyout/utils.js.map +0 -1
- package/build-module/mobile/html-text-input/container.android.js +0 -29
- package/build-module/mobile/html-text-input/container.android.js.map +0 -1
- package/build-module/mobile/html-text-input/container.ios.js +0 -48
- package/build-module/mobile/html-text-input/container.ios.js.map +0 -1
- package/build-module/popover/utils.js +0 -308
- package/build-module/popover/utils.js.map +0 -1
- package/build-types/flyout/context.d.ts +0 -6
- package/build-types/flyout/context.d.ts.map +0 -1
- package/build-types/flyout/flyout/component.d.ts +0 -21
- package/build-types/flyout/flyout/component.d.ts.map +0 -1
- package/build-types/flyout/flyout/hook.d.ts +0 -270
- package/build-types/flyout/flyout/hook.d.ts.map +0 -1
- package/build-types/flyout/flyout/index.d.ts +0 -3
- package/build-types/flyout/flyout/index.d.ts.map +0 -1
- package/build-types/flyout/flyout-content/component.d.ts +0 -3
- package/build-types/flyout/flyout-content/component.d.ts.map +0 -1
- package/build-types/flyout/flyout-content/index.d.ts +0 -2
- package/build-types/flyout/flyout-content/index.d.ts.map +0 -1
- package/build-types/flyout/index.d.ts +0 -2
- package/build-types/flyout/index.d.ts.map +0 -1
- package/build-types/flyout/styles.d.ts +0 -22
- package/build-types/flyout/styles.d.ts.map +0 -1
- package/build-types/flyout/types.d.ts +0 -80
- package/build-types/flyout/types.d.ts.map +0 -1
- package/build-types/flyout/utils.d.ts +0 -8
- package/build-types/flyout/utils.d.ts.map +0 -1
- package/build-types/popover/utils.d.ts +0 -70
- package/build-types/popover/utils.d.ts.map +0 -1
- package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts +0 -19
- package/build-types/toggle-group-control/toggle-group-control-option/styles.d.ts.map +0 -1
- package/src/box-control/visualizer.js +0 -116
- package/src/button-group/index.js +0 -17
- package/src/button-group/stories/index.js +0 -21
- package/src/date-time/stories/date.js +0 -17
- package/src/date-time/stories/index.js +0 -72
- package/src/date-time/stories/time.js +0 -32
- package/src/date-time/test/date.js +0 -97
- package/src/date-time/utils.js +0 -18
- package/src/flyout/context.js +0 -10
- package/src/flyout/flyout/README.md +0 -98
- package/src/flyout/flyout/component.js +0 -111
- package/src/flyout/flyout/hook.js +0 -45
- package/src/flyout/flyout/index.js +0 -2
- package/src/flyout/flyout-content/component.js +0 -53
- package/src/flyout/flyout-content/index.js +0 -1
- package/src/flyout/index.js +0 -1
- package/src/flyout/stories/index.js +0 -24
- package/src/flyout/styles.ts +0 -41
- package/src/flyout/test/__snapshots__/index.js.snap +0 -186
- package/src/flyout/test/index.js +0 -103
- package/src/flyout/types.ts +0 -84
- package/src/flyout/utils.js +0 -23
- package/src/input-control/stories/index.js +0 -71
- package/src/mobile/html-text-input/container.android.js +0 -23
- package/src/mobile/html-text-input/container.ios.js +0 -50
- package/src/popover/test/utils.js +0 -304
- package/src/popover/utils.js +0 -396
- package/src/select-control/stories/index.js +0 -104
- package/src/text-control/index.js +0 -72
- package/src/text-control/stories/index.js +0 -46
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { useState, useEffect } from '@wordpress/element';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import DateTimePicker from '..';
|
|
15
|
+
import { daysFromNow, isWeekend } from './utils';
|
|
16
|
+
|
|
17
|
+
const meta: ComponentMeta< typeof DateTimePicker > = {
|
|
18
|
+
title: 'Components/DateTimePicker',
|
|
19
|
+
component: DateTimePicker,
|
|
20
|
+
argTypes: {
|
|
21
|
+
currentDate: { control: 'date' },
|
|
22
|
+
onChange: { action: 'onChange', control: { type: null } },
|
|
23
|
+
},
|
|
24
|
+
parameters: {
|
|
25
|
+
controls: { expanded: true },
|
|
26
|
+
docs: { source: { state: 'open' } },
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
export default meta;
|
|
30
|
+
|
|
31
|
+
const Template: ComponentStory< typeof DateTimePicker > = ( {
|
|
32
|
+
currentDate,
|
|
33
|
+
onChange,
|
|
34
|
+
...args
|
|
35
|
+
} ) => {
|
|
36
|
+
const [ date, setDate ] = useState( currentDate );
|
|
37
|
+
useEffect( () => {
|
|
38
|
+
setDate( currentDate );
|
|
39
|
+
}, [ currentDate ] );
|
|
40
|
+
return (
|
|
41
|
+
<DateTimePicker
|
|
42
|
+
{ ...args }
|
|
43
|
+
currentDate={ date }
|
|
44
|
+
onChange={ ( newDate ) => {
|
|
45
|
+
setDate( newDate );
|
|
46
|
+
onChange?.( newDate );
|
|
47
|
+
} }
|
|
48
|
+
/>
|
|
49
|
+
);
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
export const Default: ComponentStory< typeof DateTimePicker > = Template.bind(
|
|
53
|
+
{}
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
export const WithEvents: ComponentStory<
|
|
57
|
+
typeof DateTimePicker
|
|
58
|
+
> = Template.bind( {} );
|
|
59
|
+
WithEvents.args = {
|
|
60
|
+
currentDate: new Date(),
|
|
61
|
+
events: [
|
|
62
|
+
{ date: daysFromNow( 2 ) },
|
|
63
|
+
{ date: daysFromNow( 4 ) },
|
|
64
|
+
{ date: daysFromNow( 6 ) },
|
|
65
|
+
{ date: daysFromNow( 8 ) },
|
|
66
|
+
],
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export const WithInvalidDates: ComponentStory<
|
|
70
|
+
typeof DateTimePicker
|
|
71
|
+
> = Template.bind( {} );
|
|
72
|
+
WithInvalidDates.args = {
|
|
73
|
+
currentDate: new Date(),
|
|
74
|
+
isInvalidDate: isWeekend,
|
|
75
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import type { ComponentMeta, ComponentStory } from '@storybook/react';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* WordPress dependencies
|
|
8
|
+
*/
|
|
9
|
+
import { useState, useEffect } from '@wordpress/element';
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Internal dependencies
|
|
13
|
+
*/
|
|
14
|
+
import TimePicker from '../time';
|
|
15
|
+
|
|
16
|
+
const meta: ComponentMeta< typeof TimePicker > = {
|
|
17
|
+
title: 'Components/TimePicker',
|
|
18
|
+
component: TimePicker,
|
|
19
|
+
argTypes: {
|
|
20
|
+
currentTime: { control: 'date' },
|
|
21
|
+
onChange: { action: 'onChange', control: { type: null } },
|
|
22
|
+
},
|
|
23
|
+
parameters: {
|
|
24
|
+
controls: { expanded: true },
|
|
25
|
+
docs: { source: { state: 'open' } },
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
export default meta;
|
|
29
|
+
|
|
30
|
+
const Template: ComponentStory< typeof TimePicker > = ( {
|
|
31
|
+
currentTime,
|
|
32
|
+
onChange,
|
|
33
|
+
...args
|
|
34
|
+
} ) => {
|
|
35
|
+
const [ time, setTime ] = useState( currentTime );
|
|
36
|
+
useEffect( () => {
|
|
37
|
+
setTime( currentTime );
|
|
38
|
+
}, [ currentTime ] );
|
|
39
|
+
return (
|
|
40
|
+
<TimePicker
|
|
41
|
+
{ ...args }
|
|
42
|
+
currentTime={ time }
|
|
43
|
+
onChange={ ( newTime ) => {
|
|
44
|
+
setTime( newTime );
|
|
45
|
+
onChange?.( newTime );
|
|
46
|
+
} }
|
|
47
|
+
/>
|
|
48
|
+
);
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export const Default: ComponentStory< typeof TimePicker > = Template.bind( {} );
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import moment from 'moment';
|
|
5
|
+
import { render, screen } from '@testing-library/react';
|
|
6
|
+
import userEvent from '@testing-library/user-event';
|
|
7
|
+
import 'react-dates/initialize';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Internal dependencies
|
|
11
|
+
*/
|
|
12
|
+
import DatePicker from '../date';
|
|
13
|
+
|
|
14
|
+
describe( 'DatePicker', () => {
|
|
15
|
+
it( 'should highlight the current date', () => {
|
|
16
|
+
render( <DatePicker currentDate="2022-05-02T11:00:00" /> );
|
|
17
|
+
|
|
18
|
+
expect(
|
|
19
|
+
screen.getByRole( 'button', { name: 'Monday, May 2, 2022' } )
|
|
20
|
+
).toHaveClass( 'CalendarDay__selected' );
|
|
21
|
+
|
|
22
|
+
// Expect React deprecation warning due to 'react-dates' using outdated
|
|
23
|
+
// React lifecycle methods.
|
|
24
|
+
// https://github.com/react-dates/react-dates/issues/1748
|
|
25
|
+
expect( console ).toHaveWarned();
|
|
26
|
+
} );
|
|
27
|
+
|
|
28
|
+
it( "should highlight today's date when not provided a currentDate", () => {
|
|
29
|
+
render( <DatePicker /> );
|
|
30
|
+
|
|
31
|
+
const todayDescription = moment().format( 'dddd, MMM D, YYYY' );
|
|
32
|
+
expect(
|
|
33
|
+
screen.getByRole( 'button', { name: todayDescription } )
|
|
34
|
+
).toHaveClass( 'CalendarDay__selected' );
|
|
35
|
+
} );
|
|
36
|
+
|
|
37
|
+
it( 'should call onChange when a day is selected', async () => {
|
|
38
|
+
const user = userEvent.setup( { delay: null } );
|
|
39
|
+
|
|
40
|
+
const onChange = jest.fn();
|
|
41
|
+
|
|
42
|
+
render(
|
|
43
|
+
<DatePicker
|
|
44
|
+
currentDate="2022-05-02T11:00:00"
|
|
45
|
+
onChange={ onChange }
|
|
46
|
+
/>
|
|
47
|
+
);
|
|
48
|
+
|
|
49
|
+
await user.click(
|
|
50
|
+
screen.getByRole( 'button', { name: 'Friday, May 20, 2022' } )
|
|
51
|
+
);
|
|
52
|
+
|
|
53
|
+
expect( onChange ).toHaveBeenCalledWith( '2022-05-20T11:00:00' );
|
|
54
|
+
} );
|
|
55
|
+
|
|
56
|
+
it( 'should call onMonthPreviewed and onChange when a day in a different month is selected', async () => {
|
|
57
|
+
const user = userEvent.setup( { delay: null } );
|
|
58
|
+
|
|
59
|
+
const onMonthPreviewed = jest.fn();
|
|
60
|
+
const onChange = jest.fn();
|
|
61
|
+
|
|
62
|
+
render(
|
|
63
|
+
<DatePicker
|
|
64
|
+
currentDate="2022-05-02T11:00:00"
|
|
65
|
+
onMonthPreviewed={ onMonthPreviewed }
|
|
66
|
+
onChange={ onChange }
|
|
67
|
+
/>
|
|
68
|
+
);
|
|
69
|
+
|
|
70
|
+
await user.click(
|
|
71
|
+
screen.getByRole( 'button', {
|
|
72
|
+
name: 'Move forward to switch to the next month.',
|
|
73
|
+
} )
|
|
74
|
+
);
|
|
75
|
+
|
|
76
|
+
expect( onMonthPreviewed ).toHaveBeenCalledWith(
|
|
77
|
+
expect.stringMatching( /^2022-06/ )
|
|
78
|
+
);
|
|
79
|
+
|
|
80
|
+
await user.click(
|
|
81
|
+
screen.getByRole( 'button', { name: 'Monday, June 20, 2022' } )
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
expect( onChange ).toHaveBeenCalledWith( '2022-06-20T11:00:00' );
|
|
85
|
+
} );
|
|
86
|
+
|
|
87
|
+
it( 'should highlight events on the calendar', () => {
|
|
88
|
+
render(
|
|
89
|
+
<DatePicker
|
|
90
|
+
currentDate="2022-05-02T11:00:00"
|
|
91
|
+
events={ [
|
|
92
|
+
{ date: new Date( '2022-05-04T00:00:00' ) },
|
|
93
|
+
{ date: new Date( '2022-05-19T00:00:00' ) },
|
|
94
|
+
] }
|
|
95
|
+
/>
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
expect(
|
|
99
|
+
screen
|
|
100
|
+
.getAllByLabelText( 'There is 1 event.', { exact: false } )
|
|
101
|
+
.map( ( day ) => day.getAttribute( 'aria-label' ) )
|
|
102
|
+
).toEqual( [
|
|
103
|
+
'Wednesday, May 4, 2022. There is 1 event.',
|
|
104
|
+
'Thursday, May 19, 2022. There is 1 event.',
|
|
105
|
+
] );
|
|
106
|
+
} );
|
|
107
|
+
|
|
108
|
+
it( 'should not allow invalid date to be selected', async () => {
|
|
109
|
+
const user = userEvent.setup( { delay: null } );
|
|
110
|
+
|
|
111
|
+
const onChange = jest.fn();
|
|
112
|
+
|
|
113
|
+
render(
|
|
114
|
+
<DatePicker
|
|
115
|
+
currentDate="2022-05-02T11:00:00"
|
|
116
|
+
onChange={ onChange }
|
|
117
|
+
isInvalidDate={ ( date ) => date.getDate() === 20 }
|
|
118
|
+
/>
|
|
119
|
+
);
|
|
120
|
+
|
|
121
|
+
await user.click(
|
|
122
|
+
screen.getByRole( 'button', { name: 'Friday, May 20, 2022' } )
|
|
123
|
+
);
|
|
124
|
+
|
|
125
|
+
expect( onChange ).not.toHaveBeenCalledWith( '2022-05-20T11:00:00' );
|
|
126
|
+
} );
|
|
127
|
+
} );
|
|
@@ -237,11 +237,21 @@ describe( 'TimePicker', () => {
|
|
|
237
237
|
/>
|
|
238
238
|
);
|
|
239
239
|
|
|
240
|
-
expect(
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
expect(
|
|
244
|
-
|
|
240
|
+
expect(
|
|
241
|
+
( screen.getByLabelText( 'Month' ) as HTMLInputElement ).value
|
|
242
|
+
).toBe( '07' );
|
|
243
|
+
expect(
|
|
244
|
+
( screen.getByLabelText( 'Day' ) as HTMLInputElement ).value
|
|
245
|
+
).toBe( '13' );
|
|
246
|
+
expect(
|
|
247
|
+
( screen.getByLabelText( 'Year' ) as HTMLInputElement ).value
|
|
248
|
+
).toBe( '2020' );
|
|
249
|
+
expect(
|
|
250
|
+
( screen.getByLabelText( 'Hours' ) as HTMLInputElement ).value
|
|
251
|
+
).toBe( '06' );
|
|
252
|
+
expect(
|
|
253
|
+
( screen.getByLabelText( 'Minutes' ) as HTMLInputElement ).value
|
|
254
|
+
).toBe( '00' );
|
|
245
255
|
/**
|
|
246
256
|
* This is not ideal, but best of we can do for now until we refactor
|
|
247
257
|
* AM/PM into accessible elements, like radio buttons.
|
|
@@ -267,14 +277,12 @@ describe( 'TimePicker', () => {
|
|
|
267
277
|
</form>
|
|
268
278
|
);
|
|
269
279
|
|
|
270
|
-
const form = screen.getByRole( 'form' );
|
|
280
|
+
const form = screen.getByRole( 'form' ) as HTMLFormElement;
|
|
271
281
|
|
|
272
|
-
let monthInputIndex =
|
|
273
|
-
form.elements,
|
|
282
|
+
let monthInputIndex = Array.from( form.elements ).indexOf(
|
|
274
283
|
screen.getByLabelText( 'Month' )
|
|
275
284
|
);
|
|
276
|
-
let dayInputIndex =
|
|
277
|
-
form.elements,
|
|
285
|
+
let dayInputIndex = Array.from( form.elements ).indexOf(
|
|
278
286
|
screen.getByLabelText( 'Day' )
|
|
279
287
|
);
|
|
280
288
|
|
|
@@ -290,12 +298,10 @@ describe( 'TimePicker', () => {
|
|
|
290
298
|
</form>
|
|
291
299
|
);
|
|
292
300
|
|
|
293
|
-
monthInputIndex =
|
|
294
|
-
form.elements,
|
|
301
|
+
monthInputIndex = Array.from( form.elements ).indexOf(
|
|
295
302
|
screen.getByLabelText( 'Month' )
|
|
296
303
|
);
|
|
297
|
-
dayInputIndex =
|
|
298
|
-
form.elements,
|
|
304
|
+
dayInputIndex = Array.from( form.elements ).indexOf(
|
|
299
305
|
screen.getByLabelText( 'Day' )
|
|
300
306
|
);
|
|
301
307
|
|
|
@@ -313,11 +319,20 @@ describe( 'TimePicker', () => {
|
|
|
313
319
|
/>
|
|
314
320
|
);
|
|
315
321
|
|
|
316
|
-
const monthInput = screen.getByLabelText(
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
const
|
|
320
|
-
|
|
322
|
+
const monthInput = ( screen.getByLabelText(
|
|
323
|
+
'Month'
|
|
324
|
+
) as HTMLInputElement ).value;
|
|
325
|
+
const dayInput = ( screen.getByLabelText( 'Day' ) as HTMLInputElement )
|
|
326
|
+
.value;
|
|
327
|
+
const yearInput = ( screen.getByLabelText(
|
|
328
|
+
'Year'
|
|
329
|
+
) as HTMLInputElement ).value;
|
|
330
|
+
const hoursInput = ( screen.getByLabelText(
|
|
331
|
+
'Hours'
|
|
332
|
+
) as HTMLInputElement ).value;
|
|
333
|
+
const minutesInput = ( screen.getByLabelText(
|
|
334
|
+
'Minutes'
|
|
335
|
+
) as HTMLInputElement ).value;
|
|
321
336
|
|
|
322
337
|
expect( Number.isNaN( parseInt( monthInput, 10 ) ) ).toBe( false );
|
|
323
338
|
expect( Number.isNaN( parseInt( dayInput, 10 ) ) ).toBe( false );
|
|
@@ -14,7 +14,7 @@ describe( 'getMomentDate', () => {
|
|
|
14
14
|
const momentDate = getMomentDate( currentDate );
|
|
15
15
|
|
|
16
16
|
expect( moment.isMoment( momentDate ) ).toBe( true );
|
|
17
|
-
expect( momentDate
|
|
17
|
+
expect( momentDate?.isSame( moment( currentDate ) ) ).toBe( true );
|
|
18
18
|
} );
|
|
19
19
|
|
|
20
20
|
it( 'should return null when given a null argument', () => {
|
|
@@ -4,6 +4,8 @@
|
|
|
4
4
|
import classnames from 'classnames';
|
|
5
5
|
import { isInteger } from 'lodash';
|
|
6
6
|
import moment from 'moment';
|
|
7
|
+
import type { FocusEvent } from 'react';
|
|
8
|
+
import type { Moment } from 'moment';
|
|
7
9
|
|
|
8
10
|
/**
|
|
9
11
|
* WordPress dependencies
|
|
@@ -22,25 +24,18 @@ import { __ } from '@wordpress/i18n';
|
|
|
22
24
|
import Button from '../button';
|
|
23
25
|
import ButtonGroup from '../button-group';
|
|
24
26
|
import TimeZone from './timezone';
|
|
27
|
+
import type { WordPressComponentProps } from '../ui/context';
|
|
28
|
+
import type { UpdateOnBlurAsIntegerFieldProps, TimePickerProps } from './types';
|
|
25
29
|
|
|
26
|
-
/**
|
|
27
|
-
* Module Constants
|
|
28
|
-
*/
|
|
29
30
|
const TIMEZONELESS_FORMAT = 'YYYY-MM-DDTHH:mm:ss';
|
|
30
31
|
|
|
31
|
-
function from12hTo24h( hours, isPm ) {
|
|
32
|
+
function from12hTo24h( hours: number, isPm: boolean ) {
|
|
32
33
|
return isPm ? ( ( hours % 12 ) + 12 ) % 24 : hours % 12;
|
|
33
34
|
}
|
|
34
35
|
|
|
35
36
|
/**
|
|
36
|
-
*
|
|
37
|
-
*
|
|
38
|
-
*
|
|
39
|
-
* @param {Object} props Component props.
|
|
40
|
-
* @param {string} props.as Render the component as specific element tag, defaults to "input".
|
|
41
|
-
* @param {number|string} props.value The default value of the component which will be parsed to integer.
|
|
42
|
-
* @param {Function} props.onUpdate Call back when blurred and validated.
|
|
43
|
-
* @param {string} [props.className]
|
|
37
|
+
* A shared component to parse, validate, and handle remounting of the
|
|
38
|
+
* underlying form field element like <input> and <select>.
|
|
44
39
|
*/
|
|
45
40
|
function UpdateOnBlurAsIntegerField( {
|
|
46
41
|
as,
|
|
@@ -48,11 +43,11 @@ function UpdateOnBlurAsIntegerField( {
|
|
|
48
43
|
onUpdate,
|
|
49
44
|
className,
|
|
50
45
|
...props
|
|
51
|
-
} ) {
|
|
52
|
-
function handleBlur( event ) {
|
|
46
|
+
}: WordPressComponentProps< UpdateOnBlurAsIntegerFieldProps, 'input', true > ) {
|
|
47
|
+
function handleBlur( event: FocusEvent< HTMLInputElement > ) {
|
|
53
48
|
const { target } = event;
|
|
54
49
|
|
|
55
|
-
if ( value === target.value ) {
|
|
50
|
+
if ( String( value ) === target.value ) {
|
|
56
51
|
return;
|
|
57
52
|
}
|
|
58
53
|
|
|
@@ -65,10 +60,10 @@ function UpdateOnBlurAsIntegerField( {
|
|
|
65
60
|
( typeof props.min !== 'undefined' && parsedValue < props.min )
|
|
66
61
|
) {
|
|
67
62
|
// If validation failed, reset the value to the previous valid value.
|
|
68
|
-
target.value = value;
|
|
63
|
+
target.value = String( value );
|
|
69
64
|
} else {
|
|
70
65
|
// Otherwise, it's valid, call onUpdate.
|
|
71
|
-
onUpdate(
|
|
66
|
+
onUpdate( parsedValue );
|
|
72
67
|
}
|
|
73
68
|
}
|
|
74
69
|
|
|
@@ -86,19 +81,33 @@ function UpdateOnBlurAsIntegerField( {
|
|
|
86
81
|
}
|
|
87
82
|
|
|
88
83
|
/**
|
|
89
|
-
*
|
|
84
|
+
* TimePicker is a React component that renders a clock for time selection.
|
|
85
|
+
*
|
|
86
|
+
* ```jsx
|
|
87
|
+
* import { TimePicker } from '@wordpress/components';
|
|
88
|
+
* import { useState } from '@wordpress/element';
|
|
90
89
|
*
|
|
91
|
-
*
|
|
90
|
+
* const MyTimePicker = () => {
|
|
91
|
+
* const [ time, setTime ] = useState( new Date() );
|
|
92
92
|
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
93
|
+
* return (
|
|
94
|
+
* <TimePicker
|
|
95
|
+
* currentTime={ date }
|
|
96
|
+
* onChange={ ( newTime ) => setTime( newTime ) }
|
|
97
|
+
* is12Hour
|
|
98
|
+
* />
|
|
99
|
+
* );
|
|
100
|
+
* };
|
|
101
|
+
* ```
|
|
97
102
|
*/
|
|
98
|
-
export function TimePicker( {
|
|
103
|
+
export function TimePicker( {
|
|
104
|
+
is12Hour,
|
|
105
|
+
currentTime,
|
|
106
|
+
onChange,
|
|
107
|
+
}: TimePickerProps ) {
|
|
99
108
|
const [ date, setDate ] = useState( () =>
|
|
100
109
|
// Truncate the date at the minutes, see: #15495.
|
|
101
|
-
moment( currentTime ).startOf( 'minutes' )
|
|
110
|
+
currentTime ? moment( currentTime ).startOf( 'minutes' ) : moment()
|
|
102
111
|
);
|
|
103
112
|
|
|
104
113
|
// Reset the state when currentTime changed.
|
|
@@ -115,7 +124,7 @@ export function TimePicker( { is12Hour, currentTime, onChange } ) {
|
|
|
115
124
|
year: date.format( 'YYYY' ),
|
|
116
125
|
minutes: date.format( 'mm' ),
|
|
117
126
|
hours: date.format( is12Hour ? 'hh' : 'HH' ),
|
|
118
|
-
am: date.format( 'H' ) <= 11 ? 'AM' : 'PM',
|
|
127
|
+
am: Number( date.format( 'H' ) ) <= 11 ? 'AM' : 'PM',
|
|
119
128
|
} ),
|
|
120
129
|
[ date, is12Hour ]
|
|
121
130
|
);
|
|
@@ -124,28 +133,30 @@ export function TimePicker( { is12Hour, currentTime, onChange } ) {
|
|
|
124
133
|
* Function that sets the date state and calls the onChange with a new date.
|
|
125
134
|
* The date is truncated at the minutes.
|
|
126
135
|
*
|
|
127
|
-
* @param {
|
|
136
|
+
* @param {Moment} newDate The date object.
|
|
128
137
|
*/
|
|
129
|
-
function changeDate( newDate ) {
|
|
138
|
+
function changeDate( newDate: Moment ) {
|
|
130
139
|
setDate( newDate );
|
|
131
|
-
onChange( newDate.format( TIMEZONELESS_FORMAT ) );
|
|
140
|
+
onChange?.( newDate.format( TIMEZONELESS_FORMAT ) );
|
|
132
141
|
}
|
|
133
142
|
|
|
134
|
-
function update( name
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
143
|
+
function update( name: 'date' | 'month' | 'year' | 'hours' | 'minutes' ) {
|
|
144
|
+
return ( value: number ) => {
|
|
145
|
+
// If the 12-hour format is being used and the 'PM' period is selected, then
|
|
146
|
+
// the incoming value (which ranges 1-12) should be increased by 12 to match
|
|
147
|
+
// the expected 24-hour format.
|
|
148
|
+
let adjustedValue = value;
|
|
149
|
+
if ( name === 'hours' && is12Hour ) {
|
|
150
|
+
adjustedValue = from12hTo24h( value, am === 'PM' );
|
|
151
|
+
}
|
|
142
152
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
153
|
+
// Clone the date and call the specific setter function according to `name`.
|
|
154
|
+
const newDate = date.clone()[ name ]( adjustedValue );
|
|
155
|
+
changeDate( newDate );
|
|
156
|
+
};
|
|
146
157
|
}
|
|
147
158
|
|
|
148
|
-
function updateAmPm( value ) {
|
|
159
|
+
function updateAmPm( value: 'AM' | 'PM' ) {
|
|
149
160
|
return () => {
|
|
150
161
|
if ( am === value ) {
|
|
151
162
|
return;
|
|
@@ -173,7 +184,7 @@ export function TimePicker( { is12Hour, currentTime, onChange } ) {
|
|
|
173
184
|
step={ 1 }
|
|
174
185
|
min={ 1 }
|
|
175
186
|
max={ 31 }
|
|
176
|
-
onUpdate={ update }
|
|
187
|
+
onUpdate={ update( 'date' ) }
|
|
177
188
|
/>
|
|
178
189
|
</div>
|
|
179
190
|
);
|
|
@@ -187,7 +198,7 @@ export function TimePicker( { is12Hour, currentTime, onChange } ) {
|
|
|
187
198
|
name="month"
|
|
188
199
|
value={ month }
|
|
189
200
|
// The value starts from 0, so we have to -1 when setting month.
|
|
190
|
-
onUpdate={ (
|
|
201
|
+
onUpdate={ ( value ) => update( 'month' )( value - 1 ) }
|
|
191
202
|
>
|
|
192
203
|
<option value="01">{ __( 'January' ) }</option>
|
|
193
204
|
<option value="02">{ __( 'February' ) }</option>
|
|
@@ -236,7 +247,7 @@ export function TimePicker( { is12Hour, currentTime, onChange } ) {
|
|
|
236
247
|
min={ 0 }
|
|
237
248
|
max={ 9999 }
|
|
238
249
|
value={ year }
|
|
239
|
-
onUpdate={ update }
|
|
250
|
+
onUpdate={ update( 'year' ) }
|
|
240
251
|
/>
|
|
241
252
|
</div>
|
|
242
253
|
</div>
|
|
@@ -257,7 +268,7 @@ export function TimePicker( { is12Hour, currentTime, onChange } ) {
|
|
|
257
268
|
min={ is12Hour ? 1 : 0 }
|
|
258
269
|
max={ is12Hour ? 12 : 23 }
|
|
259
270
|
value={ hours }
|
|
260
|
-
onUpdate={ update }
|
|
271
|
+
onUpdate={ update( 'hours' ) }
|
|
261
272
|
/>
|
|
262
273
|
<span
|
|
263
274
|
className="components-datetime__time-separator"
|
|
@@ -274,7 +285,7 @@ export function TimePicker( { is12Hour, currentTime, onChange } ) {
|
|
|
274
285
|
min={ 0 }
|
|
275
286
|
max={ 59 }
|
|
276
287
|
value={ minutes }
|
|
277
|
-
onUpdate={ update }
|
|
288
|
+
onUpdate={ update( 'minutes' ) }
|
|
278
289
|
/>
|
|
279
290
|
</div>
|
|
280
291
|
{ is12Hour && (
|
|
@@ -10,7 +10,8 @@ import { __experimentalGetSettings as getDateSettings } from '@wordpress/date';
|
|
|
10
10
|
import Tooltip from '../tooltip';
|
|
11
11
|
|
|
12
12
|
/**
|
|
13
|
-
* Displays timezone information when user timezone is different from site
|
|
13
|
+
* Displays timezone information when user timezone is different from site
|
|
14
|
+
* timezone.
|
|
14
15
|
*/
|
|
15
16
|
const TimeZone = () => {
|
|
16
17
|
const { timezone } = getDateSettings();
|
|
@@ -24,9 +25,9 @@ const TimeZone = () => {
|
|
|
24
25
|
return null;
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
const offsetSymbol = timezone.offset >= 0 ? '+' : '';
|
|
28
|
+
const offsetSymbol = Number( timezone.offset ) >= 0 ? '+' : '';
|
|
28
29
|
const zoneAbbr =
|
|
29
|
-
'' !== timezone.abbr && isNaN( timezone.abbr )
|
|
30
|
+
'' !== timezone.abbr && isNaN( Number( timezone.abbr ) )
|
|
30
31
|
? timezone.abbr
|
|
31
32
|
: `UTC${ offsetSymbol }${ timezone.offset }`;
|
|
32
33
|
|