@jobber/components 4.85.4-CJS-to-ESM.1 → 4.85.4-CJS-to-ESM.2
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/dist/AnimatedPresence-20a02aaa.js +104 -0
- package/dist/AnimatedPresence-bbccdaf7.js +98 -0
- package/dist/AnimatedPresence.cjs +12 -0
- package/dist/AnimatedPresence.js +4 -0
- package/dist/AnimatedSwitcher-3aff3d12.js +90 -0
- package/dist/AnimatedSwitcher-3d45ec5d.js +96 -0
- package/dist/AnimatedSwitcher.cjs +13 -0
- package/dist/AnimatedSwitcher.js +5 -0
- package/dist/Autocomplete-b35c7ff5.js +196 -0
- package/dist/Autocomplete-dc7a4b9e.js +188 -0
- package/dist/Autocomplete.cjs +33 -0
- package/dist/Autocomplete.js +25 -0
- package/dist/Avatar-229083ec.js +70 -0
- package/dist/Avatar-cccf72b9.js +78 -0
- package/dist/Avatar.cjs +15 -0
- package/dist/Avatar.js +7 -0
- package/dist/Banner-18d94700.js +105 -0
- package/dist/Banner-5475a9ea.js +98 -0
- package/dist/Banner.cjs +20 -0
- package/dist/Banner.js +12 -0
- package/dist/Body-22878526.js +64 -0
- package/dist/Body-4fbe21ac.js +50 -0
- package/dist/Button-30154871.js +50 -0
- package/dist/Button-ec64869e.js +57 -0
- package/dist/Button.cjs +16 -0
- package/dist/Button.js +8 -0
- package/dist/ButtonDismiss-a11eef74.js +8 -0
- package/dist/ButtonDismiss-d7417429.js +14 -0
- package/dist/ButtonDismiss.cjs +17 -0
- package/dist/ButtonDismiss.js +9 -0
- package/dist/Card-27375ded.js +93 -0
- package/dist/Card-35bd61ce.js +86 -0
- package/dist/Card.cjs +24 -0
- package/dist/Card.js +16 -0
- package/dist/Checkbox-a91b14f7.js +56 -0
- package/dist/Checkbox-b6e46d80.js +63 -0
- package/dist/Checkbox.cjs +18 -0
- package/dist/Checkbox.js +10 -0
- package/dist/Chip-01343f8b.js +81 -0
- package/dist/Chip-24613c57.js +89 -0
- package/dist/Chip.cjs +27 -0
- package/dist/Chip.js +17 -0
- package/dist/ChipDismissible-1f2754bd.js +19 -0
- package/dist/ChipDismissible-a8ecc894.js +26 -0
- package/dist/Chips-7c44a2f9.js +494 -0
- package/dist/Chips-a8f4c9f2.js +505 -0
- package/dist/Chips.cjs +46 -0
- package/dist/Chips.js +37 -0
- package/dist/Combobox-44f0ec2a.js +468 -0
- package/dist/Combobox-d8d28b1e.js +479 -0
- package/dist/Combobox.cjs +40 -0
- package/dist/Combobox.js +31 -0
- package/dist/ConfirmationModal-09ec5d02.js +100 -0
- package/dist/ConfirmationModal-64f82a31.js +94 -0
- package/dist/ConfirmationModal.cjs +31 -0
- package/dist/ConfirmationModal.js +23 -0
- package/dist/Content-60a3452a.js +24 -0
- package/dist/Content-c96e9299.js +18 -0
- package/dist/Content.cjs +12 -0
- package/dist/Content.js +4 -0
- package/dist/Countdown-961d8a6e.js +70 -0
- package/dist/Countdown-ac081ced.js +63 -0
- package/dist/Countdown.cjs +12 -0
- package/dist/Countdown.js +4 -0
- package/dist/DataDump-6fae2727.js +15 -0
- package/dist/DataDump-f427abfe.js +21 -0
- package/dist/DataDump.cjs +27 -0
- package/dist/DataDump.js +19 -0
- package/dist/DataList-18f2d692.js +1310 -0
- package/dist/DataList-4b0f9e5d.js +1320 -0
- package/dist/DataList.cjs +52 -0
- package/dist/DataList.js +44 -0
- package/dist/DataTable-0f6649e0.js +245 -0
- package/dist/DataTable-aab7f6b9.js +252 -0
- package/dist/DataTable.cjs +65 -0
- package/dist/DataTable.js +36 -0
- package/dist/DatePicker-5d0c0353.js +125 -0
- package/dist/DatePicker-c091c0d2.js +134 -0
- package/dist/DatePicker.cjs +20 -0
- package/dist/DatePicker.js +12 -0
- package/dist/DescriptionList-2cb975a9.js +15 -0
- package/dist/DescriptionList-74db99a5.js +21 -0
- package/dist/DescriptionList.cjs +13 -0
- package/dist/DescriptionList.js +5 -0
- package/dist/Disclosure-00a9459b.js +36 -0
- package/dist/Disclosure-56309ff3.js +42 -0
- package/dist/Disclosure.cjs +16 -0
- package/dist/Disclosure.js +8 -0
- package/dist/Divider-1e6ac1ec.js +27 -0
- package/dist/Divider-589745c1.js +20 -0
- package/dist/Divider.cjs +12 -0
- package/dist/Divider.js +4 -0
- package/dist/Drawer.cjs +21 -0
- package/dist/Drawer.js +12 -0
- package/dist/DrawerGrid-0861e529.js +33 -0
- package/dist/DrawerGrid-b233d837.js +41 -0
- package/dist/Emphasis-2a640962.js +13 -0
- package/dist/Emphasis-84de1f3f.js +19 -0
- package/dist/Emphasis.cjs +13 -0
- package/dist/Emphasis.js +5 -0
- package/dist/FeatureSwitch-ddaebf27.js +62 -0
- package/dist/FeatureSwitch-e33e30a9.js +55 -0
- package/dist/FeatureSwitch.cjs +26 -0
- package/dist/FeatureSwitch.js +18 -0
- package/dist/Flex-041db5c8.js +31 -0
- package/dist/Flex-ddf28839.js +38 -0
- package/dist/Flex.cjs +12 -0
- package/dist/Flex.js +4 -0
- package/dist/Form-6a161b07.js +48 -0
- package/dist/Form-927647ef.js +54 -0
- package/dist/Form.cjs +12 -0
- package/dist/Form.js +4 -0
- package/dist/FormField-f1f405d2.js +246 -0
- package/dist/FormField-fc30bb1a.js +253 -0
- package/dist/FormField.cjs +24 -0
- package/dist/FormField.js +16 -0
- package/dist/FormatDate-70ea5b43.js +34 -0
- package/dist/FormatDate-720b39cf.js +27 -0
- package/dist/FormatDate.cjs +11 -0
- package/dist/FormatDate.js +2 -0
- package/dist/FormatEmail-04ee4085.js +14 -0
- package/dist/FormatEmail-298393bb.js +21 -0
- package/dist/FormatEmail.cjs +12 -0
- package/dist/FormatEmail.js +4 -0
- package/dist/FormatFile-648aea3e.js +154 -0
- package/dist/FormatFile-d57b8dfa.js +162 -0
- package/dist/FormatFile.cjs +36 -0
- package/dist/FormatFile.js +28 -0
- package/dist/FormatRelativeDateTime-529dc36b.js +64 -0
- package/dist/FormatRelativeDateTime-6336002d.js +70 -0
- package/dist/FormatRelativeDateTime.cjs +10 -0
- package/dist/FormatRelativeDateTime.js +2 -0
- package/dist/FormatTime-20538519.js +34 -0
- package/dist/FormatTime-764fd3c8.js +28 -0
- package/dist/FormatTime.cjs +10 -0
- package/dist/FormatTime.js +2 -0
- package/dist/Gallery-7760f21f.js +66 -0
- package/dist/Gallery-8d4d79a2.js +73 -0
- package/dist/Gallery.cjs +39 -0
- package/dist/Gallery.js +31 -0
- package/dist/Glimmer-3fcdae65.js +77 -0
- package/dist/Glimmer-6bf75ae0.js +69 -0
- package/dist/Glimmer.cjs +15 -0
- package/dist/Glimmer.js +6 -0
- package/dist/Grid-c28e226d.js +66 -0
- package/dist/Grid-cce44c9d.js +74 -0
- package/dist/Grid.cjs +14 -0
- package/dist/Grid.js +5 -0
- package/dist/Heading-a8a24775.js +55 -0
- package/dist/Heading-dfd4f1cf.js +49 -0
- package/dist/Heading.cjs +14 -0
- package/dist/Heading.js +6 -0
- package/dist/Icon-22723fe6.js +34 -0
- package/dist/Icon-405a216c.js +40 -0
- package/dist/Icon.cjs +11 -0
- package/dist/Icon.js +3 -0
- package/dist/InlineLabel-20f9095e.js +21 -0
- package/dist/InlineLabel-5144fa06.js +28 -0
- package/dist/InlineLabel.cjs +13 -0
- package/dist/InlineLabel.js +5 -0
- package/dist/InputAvatar-3a10bdb1.js +50 -0
- package/dist/InputAvatar-95c98620.js +56 -0
- package/dist/InputAvatar.cjs +28 -0
- package/dist/InputAvatar.js +20 -0
- package/dist/InputDate-c258f5cb.js +32 -0
- package/dist/InputDate-c5f19423.js +39 -0
- package/dist/InputDate.cjs +29 -0
- package/dist/InputDate.js +21 -0
- package/dist/InputEmail-4efba03d.js +27 -0
- package/dist/InputEmail-812bdffe.js +20 -0
- package/dist/InputEmail.cjs +26 -0
- package/dist/InputEmail.js +17 -0
- package/dist/InputFile-921c050e.js +190 -0
- package/dist/InputFile-d089b486.js +181 -0
- package/dist/InputFile.cjs +25 -0
- package/dist/InputFile.js +16 -0
- package/dist/InputGroup-436859cf.js +26 -0
- package/dist/InputGroup-8d4fd4eb.js +33 -0
- package/dist/InputGroup.cjs +12 -0
- package/dist/InputGroup.js +4 -0
- package/dist/InputNumber-4bd38b8e.js +56 -0
- package/dist/InputNumber-df9cb825.js +62 -0
- package/dist/InputNumber.cjs +25 -0
- package/dist/InputNumber.js +17 -0
- package/dist/InputPassword-08d2dfa1.js +25 -0
- package/dist/InputPassword-6b937a91.js +19 -0
- package/dist/InputPassword.cjs +25 -0
- package/dist/InputPassword.js +17 -0
- package/dist/InputPhoneNumber-947bdb49.js +97 -0
- package/dist/InputPhoneNumber-cbb2ca7d.js +103 -0
- package/dist/InputPhoneNumber.cjs +25 -0
- package/dist/InputPhoneNumber.js +17 -0
- package/dist/InputText-125769fd.js +102 -0
- package/dist/InputText-2fd8f942.js +96 -0
- package/dist/InputText.cjs +26 -0
- package/dist/InputText.js +18 -0
- package/dist/InputTime-3c4bdff0.js +194 -0
- package/dist/InputTime-ef8af2d9.js +187 -0
- package/dist/InputTime.cjs +27 -0
- package/dist/InputTime.js +19 -0
- package/dist/InputValidation-4a61254d.js +29 -0
- package/dist/InputValidation-fe42fc3f.js +23 -0
- package/dist/InputValidation.cjs +17 -0
- package/dist/InputValidation.js +9 -0
- package/dist/LightBox-3d6e74ba.js +117 -0
- package/dist/LightBox-8cc72953.js +109 -0
- package/dist/LightBox.cjs +24 -0
- package/dist/LightBox.js +16 -0
- package/dist/Link-b41bc1d3.js +7 -0
- package/dist/Link-fd7301ec.js +13 -0
- package/dist/Link.cjs +10 -0
- package/dist/Link.js +2 -0
- package/dist/List-4fe52f57.js +77 -0
- package/dist/List-821f249d.js +87 -0
- package/dist/List.cjs +25 -0
- package/dist/List.js +16 -0
- package/dist/Markdown-36854bd5.js +62 -0
- package/dist/Markdown-7b84fcdb.js +55 -0
- package/dist/Markdown.cjs +19 -0
- package/dist/Markdown.js +11 -0
- package/dist/Menu-5ce3cf41.js +139 -0
- package/dist/Menu-fb0b2e9b.js +132 -0
- package/dist/Menu.cjs +21 -0
- package/dist/Menu.js +13 -0
- package/dist/Modal-cda55f02.js +71 -0
- package/dist/Modal-eeb52d66.js +63 -0
- package/dist/Modal.cjs +25 -0
- package/dist/Modal.js +17 -0
- package/dist/MultiSelect-0af9c956.js +169 -0
- package/dist/MultiSelect-707000e1.js +176 -0
- package/dist/MultiSelect.cjs +19 -0
- package/dist/MultiSelect.js +11 -0
- package/dist/Option-58d7cab6.js +12 -0
- package/dist/Option-73515eec.js +19 -0
- package/dist/Page-0b334096.js +59 -0
- package/dist/Page-fdb087db.js +66 -0
- package/dist/Page.cjs +30 -0
- package/dist/Page.js +22 -0
- package/dist/Popover-798f548e.js +47 -0
- package/dist/Popover-968c63b2.js +53 -0
- package/dist/Popover.cjs +20 -0
- package/dist/Popover.js +12 -0
- package/dist/ProgressBar-022ef3f6.js +36 -0
- package/dist/ProgressBar-4ee648b7.js +43 -0
- package/dist/ProgressBar.cjs +12 -0
- package/dist/ProgressBar.js +4 -0
- package/dist/RadioGroup-68edd1e3.js +46 -0
- package/dist/RadioGroup-a089f132.js +39 -0
- package/dist/RadioGroup.cjs +15 -0
- package/dist/RadioGroup.js +6 -0
- package/dist/RecurringSelect-2de4014c.js +208 -0
- package/dist/RecurringSelect-e391af31.js +214 -0
- package/dist/RecurringSelect.cjs +38 -0
- package/dist/RecurringSelect.js +22 -0
- package/dist/Select.cjs +26 -0
- package/dist/Select.js +17 -0
- package/dist/Spinner-3480bc34.js +24 -0
- package/dist/Spinner-90081e20.js +17 -0
- package/dist/Spinner.cjs +12 -0
- package/dist/Spinner.js +4 -0
- package/dist/StatusIndicator-0c680acb.js +18 -0
- package/dist/StatusIndicator-d6f9aefa.js +12 -0
- package/dist/StatusIndicator.cjs +11 -0
- package/dist/StatusIndicator.js +3 -0
- package/dist/StatusLabel-5bf96fdb.js +26 -0
- package/dist/StatusLabel-66214fc7.js +19 -0
- package/dist/StatusLabel.cjs +15 -0
- package/dist/StatusLabel.js +7 -0
- package/dist/Switch-6c6c727b.js +56 -0
- package/dist/Switch-87706cde.js +49 -0
- package/dist/Switch.cjs +13 -0
- package/dist/Switch.js +5 -0
- package/dist/Table.cjs +20 -0
- package/dist/Table.js +5 -0
- package/dist/Tabs-109f1f10.js +70 -0
- package/dist/Tabs-d6c8b965.js +78 -0
- package/dist/Tabs.cjs +14 -0
- package/dist/Tabs.js +5 -0
- package/dist/Text-714f7d14.js +31 -0
- package/dist/Text-c92ddeb3.js +25 -0
- package/dist/Text.cjs +13 -0
- package/dist/Text.js +5 -0
- package/dist/Toast.cjs +19 -0
- package/dist/Toast.js +11 -0
- package/dist/Tooltip-2e477150.js +112 -0
- package/dist/Tooltip-a40fffbd.js +104 -0
- package/dist/Tooltip.cjs +16 -0
- package/dist/Tooltip.js +8 -0
- package/dist/Typography-52ed1386.js +55 -0
- package/dist/Typography-fd88fcce.js +62 -0
- package/dist/Typography.cjs +12 -0
- package/dist/Typography.js +4 -0
- package/dist/getAtlantisConfig-0f3e8af2.js +13 -0
- package/dist/getAtlantisConfig-5b50057c.js +11 -0
- package/dist/index.cjs +216 -6713
- package/dist/index.js +112 -0
- package/dist/showToast-63be1cf0.js +106 -0
- package/dist/showToast-ff666be8.js +100 -0
- package/dist/style-inject.es-9d2f5f4e.js +30 -0
- package/dist/style-inject.es-a0e1a0ba.js +28 -0
- package/dist/tslib.es6-754e2961.js +46 -0
- package/dist/tslib.es6-c563c1dd.js +43 -0
- package/package.json +6 -365
- package/AnimatedPresence.d.ts +0 -1
- package/AnimatedPresence.js +0 -17
- package/AnimatedSwitcher.d.ts +0 -1
- package/AnimatedSwitcher.js +0 -17
- package/Autocomplete.d.ts +0 -1
- package/Autocomplete.js +0 -17
- package/Avatar.d.ts +0 -1
- package/Avatar.js +0 -17
- package/Banner.d.ts +0 -1
- package/Banner.js +0 -17
- package/Button.d.ts +0 -1
- package/Button.js +0 -17
- package/ButtonDismiss.d.ts +0 -1
- package/ButtonDismiss.js +0 -17
- package/Card.d.ts +0 -1
- package/Card.js +0 -17
- package/Checkbox.d.ts +0 -1
- package/Checkbox.js +0 -17
- package/Chip.d.ts +0 -1
- package/Chip.js +0 -17
- package/Chips.d.ts +0 -1
- package/Chips.js +0 -17
- package/Combobox.d.ts +0 -1
- package/Combobox.js +0 -17
- package/ConfirmationModal.d.ts +0 -1
- package/ConfirmationModal.js +0 -17
- package/Content.d.ts +0 -1
- package/Content.js +0 -17
- package/Countdown.d.ts +0 -1
- package/Countdown.js +0 -17
- package/DataDump.d.ts +0 -1
- package/DataDump.js +0 -17
- package/DataList.d.ts +0 -1
- package/DataList.js +0 -17
- package/DataTable.d.ts +0 -1
- package/DataTable.js +0 -17
- package/DatePicker.d.ts +0 -1
- package/DatePicker.js +0 -17
- package/DescriptionList.d.ts +0 -1
- package/DescriptionList.js +0 -17
- package/Disclosure.d.ts +0 -1
- package/Disclosure.js +0 -17
- package/Divider.d.ts +0 -1
- package/Divider.js +0 -17
- package/Drawer.d.ts +0 -1
- package/Drawer.js +0 -17
- package/Emphasis.d.ts +0 -1
- package/Emphasis.js +0 -17
- package/FeatureSwitch.d.ts +0 -1
- package/FeatureSwitch.js +0 -17
- package/Flex.d.ts +0 -1
- package/Flex.js +0 -17
- package/Form.d.ts +0 -1
- package/Form.js +0 -17
- package/FormField.d.ts +0 -1
- package/FormField.js +0 -17
- package/FormatDate.d.ts +0 -1
- package/FormatDate.js +0 -17
- package/FormatEmail.d.ts +0 -1
- package/FormatEmail.js +0 -17
- package/FormatFile.d.ts +0 -1
- package/FormatFile.js +0 -17
- package/FormatRelativeDateTime.d.ts +0 -1
- package/FormatRelativeDateTime.js +0 -17
- package/FormatTime.d.ts +0 -1
- package/FormatTime.js +0 -17
- package/Gallery.d.ts +0 -1
- package/Gallery.js +0 -17
- package/Glimmer.d.ts +0 -1
- package/Glimmer.js +0 -17
- package/Grid.d.ts +0 -1
- package/Grid.js +0 -17
- package/Heading.d.ts +0 -1
- package/Heading.js +0 -17
- package/Icon.d.ts +0 -1
- package/Icon.js +0 -17
- package/InlineLabel.d.ts +0 -1
- package/InlineLabel.js +0 -17
- package/InputAvatar.d.ts +0 -1
- package/InputAvatar.js +0 -17
- package/InputDate.d.ts +0 -1
- package/InputDate.js +0 -17
- package/InputEmail.d.ts +0 -1
- package/InputEmail.js +0 -17
- package/InputFile.d.ts +0 -1
- package/InputFile.js +0 -17
- package/InputGroup.d.ts +0 -1
- package/InputGroup.js +0 -17
- package/InputNumber.d.ts +0 -1
- package/InputNumber.js +0 -17
- package/InputPassword.d.ts +0 -1
- package/InputPassword.js +0 -17
- package/InputPhoneNumber.d.ts +0 -1
- package/InputPhoneNumber.js +0 -17
- package/InputText.d.ts +0 -1
- package/InputText.js +0 -17
- package/InputTime.d.ts +0 -1
- package/InputTime.js +0 -17
- package/InputValidation.d.ts +0 -1
- package/InputValidation.js +0 -17
- package/LightBox.d.ts +0 -1
- package/LightBox.js +0 -17
- package/Link.d.ts +0 -1
- package/Link.js +0 -17
- package/List.d.ts +0 -1
- package/List.js +0 -17
- package/Markdown.d.ts +0 -1
- package/Markdown.js +0 -17
- package/Menu.d.ts +0 -1
- package/Menu.js +0 -17
- package/Modal.d.ts +0 -1
- package/Modal.js +0 -17
- package/MultiSelect.d.ts +0 -1
- package/MultiSelect.js +0 -17
- package/Page.d.ts +0 -1
- package/Page.js +0 -17
- package/Popover.d.ts +0 -1
- package/Popover.js +0 -17
- package/ProgressBar.d.ts +0 -1
- package/ProgressBar.js +0 -17
- package/RadioGroup.d.ts +0 -1
- package/RadioGroup.js +0 -17
- package/RecurringSelect.d.ts +0 -1
- package/RecurringSelect.js +0 -17
- package/Select.d.ts +0 -1
- package/Select.js +0 -17
- package/Spinner.d.ts +0 -1
- package/Spinner.js +0 -17
- package/StatusIndicator.d.ts +0 -1
- package/StatusIndicator.js +0 -17
- package/StatusLabel.d.ts +0 -1
- package/StatusLabel.js +0 -17
- package/Switch.d.ts +0 -1
- package/Switch.js +0 -17
- package/Table.d.ts +0 -1
- package/Table.js +0 -17
- package/Tabs.d.ts +0 -1
- package/Tabs.js +0 -17
- package/Text.d.ts +0 -1
- package/Text.js +0 -17
- package/Toast.d.ts +0 -1
- package/Toast.js +0 -17
- package/Tooltip.d.ts +0 -1
- package/Tooltip.js +0 -17
- package/Typography.d.ts +0 -1
- package/Typography.js +0 -17
- package/dist/index.esm.js +0 -6603
- package/rollup.config.js +0 -75
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import React, { forwardRef, useRef, useImperativeHandle } from 'react';
|
|
2
|
+
import { useSafeLayoutEffect } from '@jobber/hooks/useSafeLayoutEffect';
|
|
3
|
+
import { F as FormField } from './FormField-f1f405d2.js';
|
|
4
|
+
|
|
5
|
+
function InputTextInternal(props, ref) {
|
|
6
|
+
const inputRef = useRef(null);
|
|
7
|
+
const actionsRef = useRef(null);
|
|
8
|
+
const rowRange = getRowRange();
|
|
9
|
+
useImperativeHandle(ref, () => ({
|
|
10
|
+
insert: (text) => {
|
|
11
|
+
insertText(text);
|
|
12
|
+
},
|
|
13
|
+
blur: () => {
|
|
14
|
+
const input = inputRef.current;
|
|
15
|
+
if (input) {
|
|
16
|
+
input.blur();
|
|
17
|
+
}
|
|
18
|
+
},
|
|
19
|
+
focus: () => {
|
|
20
|
+
const input = inputRef.current;
|
|
21
|
+
if (input) {
|
|
22
|
+
input.focus();
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
scrollIntoView: arg => {
|
|
26
|
+
const input = inputRef.current;
|
|
27
|
+
if (input) {
|
|
28
|
+
input.scrollIntoView(arg);
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
}));
|
|
32
|
+
useSafeLayoutEffect(() => {
|
|
33
|
+
if (inputRef && inputRef.current instanceof HTMLTextAreaElement) {
|
|
34
|
+
resize(inputRef.current);
|
|
35
|
+
}
|
|
36
|
+
}, [inputRef.current]);
|
|
37
|
+
return (React.createElement(FormField, Object.assign({}, props, { type: props.multiline ? "textarea" : "text", inputRef: inputRef, actionsRef: actionsRef, onChange: handleChange, rows: rowRange.min })));
|
|
38
|
+
function handleChange(newValue) {
|
|
39
|
+
props.onChange && props.onChange(newValue);
|
|
40
|
+
if (inputRef && inputRef.current instanceof HTMLTextAreaElement) {
|
|
41
|
+
resize(inputRef.current);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
function getRowRange() {
|
|
45
|
+
if (props.rows === undefined) {
|
|
46
|
+
return { min: 3, max: 3 };
|
|
47
|
+
}
|
|
48
|
+
else if (typeof props.rows === "object") {
|
|
49
|
+
return { min: props.rows.min, max: props.rows.max };
|
|
50
|
+
}
|
|
51
|
+
else {
|
|
52
|
+
return { min: props.rows, max: props.rows };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
function resize(textArea) {
|
|
56
|
+
if (rowRange.min === rowRange.max)
|
|
57
|
+
return;
|
|
58
|
+
textArea.style.height = "auto";
|
|
59
|
+
textArea.style.height = textAreaHeight(textArea) + "px";
|
|
60
|
+
}
|
|
61
|
+
function textAreaHeight(textArea) {
|
|
62
|
+
const { lineHeight, borderBottomWidth, borderTopWidth, paddingBottom, paddingTop, } = window.getComputedStyle(textArea);
|
|
63
|
+
const maxHeight = rowRange.max * parseFloat(lineHeight) +
|
|
64
|
+
parseFloat(borderTopWidth) +
|
|
65
|
+
parseFloat(borderBottomWidth) +
|
|
66
|
+
parseFloat(paddingTop) +
|
|
67
|
+
parseFloat(paddingBottom);
|
|
68
|
+
const scrollHeight = textArea.scrollHeight +
|
|
69
|
+
parseFloat(borderTopWidth) +
|
|
70
|
+
parseFloat(borderBottomWidth);
|
|
71
|
+
return Math.min(scrollHeight, maxHeight);
|
|
72
|
+
}
|
|
73
|
+
function insertText(text) {
|
|
74
|
+
var _a;
|
|
75
|
+
const input = inputRef.current;
|
|
76
|
+
if (input) {
|
|
77
|
+
insertAtCursor(input, text);
|
|
78
|
+
const newValue = input.value;
|
|
79
|
+
(_a = actionsRef.current) === null || _a === void 0 ? void 0 : _a.setValue(newValue);
|
|
80
|
+
props.onChange && props.onChange(newValue);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
const InputText = forwardRef(InputTextInternal);
|
|
85
|
+
function insertAtCursor(input, newText) {
|
|
86
|
+
const start = input.selectionStart || 0;
|
|
87
|
+
const end = input.selectionEnd || 0;
|
|
88
|
+
const text = input.value;
|
|
89
|
+
const before = text.substring(0, start);
|
|
90
|
+
const after = text.substring(end, text.length);
|
|
91
|
+
input.value = before + newText + after;
|
|
92
|
+
input.selectionStart = input.selectionEnd = start + newText.length;
|
|
93
|
+
input.focus();
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
export { InputText as I };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var InputText = require('./InputText-125769fd.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('@jobber/hooks/useSafeLayoutEffect');
|
|
8
|
+
require('./FormField-fc30bb1a.js');
|
|
9
|
+
require('./tslib.es6-754e2961.js');
|
|
10
|
+
require('react-hook-form');
|
|
11
|
+
require('./style-inject.es-9d2f5f4e.js');
|
|
12
|
+
require('classnames');
|
|
13
|
+
require('@jobber/hooks/useShowClear');
|
|
14
|
+
require('./Button-ec64869e.js');
|
|
15
|
+
require('react-router-dom');
|
|
16
|
+
require('./Icon-405a216c.js');
|
|
17
|
+
require('@jobber/design');
|
|
18
|
+
require('./Typography-fd88fcce.js');
|
|
19
|
+
require('./Text-714f7d14.js');
|
|
20
|
+
require('./InputValidation-4a61254d.js');
|
|
21
|
+
require('framer-motion');
|
|
22
|
+
require('./Spinner-3480bc34.js');
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
exports.InputText = InputText.InputText;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export { I as InputText } from './InputText-2fd8f942.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import '@jobber/hooks/useSafeLayoutEffect';
|
|
4
|
+
import './FormField-f1f405d2.js';
|
|
5
|
+
import './tslib.es6-c563c1dd.js';
|
|
6
|
+
import 'react-hook-form';
|
|
7
|
+
import './style-inject.es-a0e1a0ba.js';
|
|
8
|
+
import 'classnames';
|
|
9
|
+
import '@jobber/hooks/useShowClear';
|
|
10
|
+
import './Button-30154871.js';
|
|
11
|
+
import 'react-router-dom';
|
|
12
|
+
import './Icon-22723fe6.js';
|
|
13
|
+
import '@jobber/design';
|
|
14
|
+
import './Typography-52ed1386.js';
|
|
15
|
+
import './Text-c92ddeb3.js';
|
|
16
|
+
import './InputValidation-fe42fc3f.js';
|
|
17
|
+
import 'framer-motion';
|
|
18
|
+
import './Spinner-90081e20.js';
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('./tslib.es6-754e2961.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var temporal = require('@std-proposal/temporal');
|
|
6
|
+
var debounce = require('lodash/debounce');
|
|
7
|
+
var FormField = require('./FormField-fc30bb1a.js');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
12
|
+
var debounce__default = /*#__PURE__*/_interopDefaultLegacy(debounce);
|
|
13
|
+
|
|
14
|
+
function civilTimeToHTMLTime(civilTime) {
|
|
15
|
+
if (civilTime == undefined) {
|
|
16
|
+
return "";
|
|
17
|
+
}
|
|
18
|
+
const timeString = civilTime.toString();
|
|
19
|
+
return timeString.slice(0, 5);
|
|
20
|
+
}
|
|
21
|
+
function htmlTimeToCivilTime(timeString) {
|
|
22
|
+
try {
|
|
23
|
+
return temporal.CivilTime.fromString(timeString + ":00.000000000");
|
|
24
|
+
}
|
|
25
|
+
catch (_a) {
|
|
26
|
+
return undefined;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const DEBOUNCE_TIME = 300;
|
|
31
|
+
function useTimePredict({ value, handleChange }) {
|
|
32
|
+
const IS_12_HOUR_FORMAT = React.useRef(Intl.DateTimeFormat(navigator.language, {
|
|
33
|
+
hour: "numeric",
|
|
34
|
+
}).resolvedOptions().hour12);
|
|
35
|
+
const [typedTime, setTypedTime] = React.useState("");
|
|
36
|
+
const predictTime = React.useCallback(debounce__default["default"](() => {
|
|
37
|
+
if (value)
|
|
38
|
+
return;
|
|
39
|
+
handleChange(predictHours(typedTime, IS_12_HOUR_FORMAT.current));
|
|
40
|
+
}, DEBOUNCE_TIME), [typedTime, value, handleChange]);
|
|
41
|
+
/**
|
|
42
|
+
* Predict the hour when user types a number
|
|
43
|
+
*/
|
|
44
|
+
React.useEffect(() => {
|
|
45
|
+
/**
|
|
46
|
+
* Don't try to predict if the user types 0 as the user would almost always
|
|
47
|
+
* type another number after 0.
|
|
48
|
+
*/
|
|
49
|
+
if (typedTime && typedTime !== "0") {
|
|
50
|
+
predictTime();
|
|
51
|
+
if ((IS_12_HOUR_FORMAT && typedTime !== "1") || typedTime.length === 2) {
|
|
52
|
+
// Immediately predict the hour
|
|
53
|
+
predictTime.flush();
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
return predictTime.cancel;
|
|
57
|
+
}, [typedTime]);
|
|
58
|
+
/**
|
|
59
|
+
* Reset typed time when the value changed
|
|
60
|
+
*/
|
|
61
|
+
React.useEffect(() => {
|
|
62
|
+
setTypedTime("");
|
|
63
|
+
}, [value]);
|
|
64
|
+
return {
|
|
65
|
+
setTypedTime,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function predictHours(time, is12HourFormat = false) {
|
|
69
|
+
const today = new Date();
|
|
70
|
+
const currentHour = today.getHours();
|
|
71
|
+
const parsedTime = parseInt(time, 10);
|
|
72
|
+
let predictedTime;
|
|
73
|
+
if (is12HourFormat) {
|
|
74
|
+
predictedTime = predict12Hours(parsedTime, currentHour);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
predictedTime = predict24Hours(time, parsedTime, currentHour);
|
|
78
|
+
}
|
|
79
|
+
return formatHour(predictedTime);
|
|
80
|
+
}
|
|
81
|
+
function predict12Hours(parsedTime, currentHour) {
|
|
82
|
+
/**
|
|
83
|
+
* We need to predict what the user wants when they type 1 since it could be
|
|
84
|
+
* 10, 11, 12, or 1.
|
|
85
|
+
*
|
|
86
|
+
* If the current hour is over 12PM, we can skip this and go to the next logic.
|
|
87
|
+
*/
|
|
88
|
+
if (parsedTime === 1 && currentHour < 12) {
|
|
89
|
+
if (currentHour < 10) {
|
|
90
|
+
return 10;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
return currentHour + 1;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Typing 1-5 predicts that the user want that exact hour on the afternoon.
|
|
98
|
+
*/
|
|
99
|
+
if (parsedTime <= 5) {
|
|
100
|
+
return parsedTime + 12;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Typing 13-15 predicts that the user want the 2nd number as the minute interval.
|
|
104
|
+
*/
|
|
105
|
+
if (parsedTime > 12 && parsedTime <= 15) {
|
|
106
|
+
const timeArray = parsedTime.toString().split("").map(Number); // 13 -> [1, 3]
|
|
107
|
+
const convertToHoursAndMinutes = timeArray.map((time, i) => {
|
|
108
|
+
if (i === 0)
|
|
109
|
+
return time + 12; // 1 -> 13 as 1PM
|
|
110
|
+
if (i === 1)
|
|
111
|
+
return time * 10; // 3 -> 30 as 30 minutes
|
|
112
|
+
});
|
|
113
|
+
return Number(convertToHoursAndMinutes.join("")); // [13, 30] -> 1330
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Anything after 5 will be predicted to be set as AM.
|
|
117
|
+
*/
|
|
118
|
+
return parsedTime;
|
|
119
|
+
}
|
|
120
|
+
function predict24Hours(time, parsedTime, currentHour) {
|
|
121
|
+
/**
|
|
122
|
+
* Typing 1 could be predicted from 10 to 19.
|
|
123
|
+
* Typing 01 skips this logic and sets the time to 01:00.
|
|
124
|
+
*/
|
|
125
|
+
if (parsedTime === 1 && time !== "01") {
|
|
126
|
+
if (currentHour < 10 || currentHour > 19) {
|
|
127
|
+
return 10;
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
return currentHour + 1;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Typing 2 could be predicted from 20 to 24.
|
|
135
|
+
* Typing 02 skips this logic and sets the time to 02:00.
|
|
136
|
+
*/
|
|
137
|
+
if (parsedTime === 2 && time !== "02") {
|
|
138
|
+
if (currentHour < 20) {
|
|
139
|
+
return 20;
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return currentHour + 1;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Typing 24 or 00 is set to midnight. This ensures the time doesn't get set
|
|
147
|
+
* to 24 as that would be invalid.
|
|
148
|
+
*/
|
|
149
|
+
if (parsedTime === 24 || time === "00") {
|
|
150
|
+
return 0;
|
|
151
|
+
}
|
|
152
|
+
return parsedTime;
|
|
153
|
+
}
|
|
154
|
+
function formatHour(time) {
|
|
155
|
+
if (time > 99) {
|
|
156
|
+
const splitTime = time.toString().split("");
|
|
157
|
+
if (splitTime.length === 3)
|
|
158
|
+
splitTime.unshift("0"); // 130 -> 0130
|
|
159
|
+
splitTime.splice(2, 0, ":"); // 0130 -> 01:30
|
|
160
|
+
return splitTime.join("");
|
|
161
|
+
}
|
|
162
|
+
if (time < 10) {
|
|
163
|
+
return `0${time}:00`;
|
|
164
|
+
}
|
|
165
|
+
return `${time}:00`;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function InputTime(_a) {
|
|
169
|
+
var { defaultValue, value, onChange } = _a, params = tslib_es6.__rest(_a, ["defaultValue", "value", "onChange"]);
|
|
170
|
+
const ref = React.useRef(null);
|
|
171
|
+
const { setTypedTime } = useTimePredict({ value, handleChange });
|
|
172
|
+
const fieldProps = Object.assign(Object.assign(Object.assign({ onChange: handleChange }, (defaultValue && { defaultValue: civilTimeToHTMLTime(defaultValue) })), (!defaultValue && { value: civilTimeToHTMLTime(value) })), params);
|
|
173
|
+
return (React__default["default"].createElement(FormField.FormField, Object.assign({ inputRef: ref, type: "time" }, fieldProps, { onBlur: handleBlur, onKeyUp: e => {
|
|
174
|
+
var _a;
|
|
175
|
+
(_a = fieldProps.onKeyUp) === null || _a === void 0 ? void 0 : _a.call(fieldProps, e);
|
|
176
|
+
!isNaN(parseInt(e.key, 10)) && setTypedTime(prev => prev + e.key);
|
|
177
|
+
} })));
|
|
178
|
+
function handleChange(newValue) {
|
|
179
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(htmlTimeToCivilTime(newValue));
|
|
180
|
+
}
|
|
181
|
+
function handleBlur() {
|
|
182
|
+
var _a;
|
|
183
|
+
(_a = params.onBlur) === null || _a === void 0 ? void 0 : _a.call(params);
|
|
184
|
+
// Time inputs doesn't clear the typed value when it's invalid. This should
|
|
185
|
+
// force it to reset the input value when the typed value is invalid.
|
|
186
|
+
if (ref.current) {
|
|
187
|
+
if (!ref.current.checkValidity()) {
|
|
188
|
+
ref.current.value = "";
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
exports.InputTime = InputTime;
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import { _ as __rest } from './tslib.es6-c563c1dd.js';
|
|
2
|
+
import React, { useRef, useState, useCallback, useEffect } from 'react';
|
|
3
|
+
import { CivilTime } from '@std-proposal/temporal';
|
|
4
|
+
import debounce from 'lodash/debounce';
|
|
5
|
+
import { F as FormField } from './FormField-f1f405d2.js';
|
|
6
|
+
|
|
7
|
+
function civilTimeToHTMLTime(civilTime) {
|
|
8
|
+
if (civilTime == undefined) {
|
|
9
|
+
return "";
|
|
10
|
+
}
|
|
11
|
+
const timeString = civilTime.toString();
|
|
12
|
+
return timeString.slice(0, 5);
|
|
13
|
+
}
|
|
14
|
+
function htmlTimeToCivilTime(timeString) {
|
|
15
|
+
try {
|
|
16
|
+
return CivilTime.fromString(timeString + ":00.000000000");
|
|
17
|
+
}
|
|
18
|
+
catch (_a) {
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const DEBOUNCE_TIME = 300;
|
|
24
|
+
function useTimePredict({ value, handleChange }) {
|
|
25
|
+
const IS_12_HOUR_FORMAT = useRef(Intl.DateTimeFormat(navigator.language, {
|
|
26
|
+
hour: "numeric",
|
|
27
|
+
}).resolvedOptions().hour12);
|
|
28
|
+
const [typedTime, setTypedTime] = useState("");
|
|
29
|
+
const predictTime = useCallback(debounce(() => {
|
|
30
|
+
if (value)
|
|
31
|
+
return;
|
|
32
|
+
handleChange(predictHours(typedTime, IS_12_HOUR_FORMAT.current));
|
|
33
|
+
}, DEBOUNCE_TIME), [typedTime, value, handleChange]);
|
|
34
|
+
/**
|
|
35
|
+
* Predict the hour when user types a number
|
|
36
|
+
*/
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
/**
|
|
39
|
+
* Don't try to predict if the user types 0 as the user would almost always
|
|
40
|
+
* type another number after 0.
|
|
41
|
+
*/
|
|
42
|
+
if (typedTime && typedTime !== "0") {
|
|
43
|
+
predictTime();
|
|
44
|
+
if ((IS_12_HOUR_FORMAT && typedTime !== "1") || typedTime.length === 2) {
|
|
45
|
+
// Immediately predict the hour
|
|
46
|
+
predictTime.flush();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return predictTime.cancel;
|
|
50
|
+
}, [typedTime]);
|
|
51
|
+
/**
|
|
52
|
+
* Reset typed time when the value changed
|
|
53
|
+
*/
|
|
54
|
+
useEffect(() => {
|
|
55
|
+
setTypedTime("");
|
|
56
|
+
}, [value]);
|
|
57
|
+
return {
|
|
58
|
+
setTypedTime,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function predictHours(time, is12HourFormat = false) {
|
|
62
|
+
const today = new Date();
|
|
63
|
+
const currentHour = today.getHours();
|
|
64
|
+
const parsedTime = parseInt(time, 10);
|
|
65
|
+
let predictedTime;
|
|
66
|
+
if (is12HourFormat) {
|
|
67
|
+
predictedTime = predict12Hours(parsedTime, currentHour);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
predictedTime = predict24Hours(time, parsedTime, currentHour);
|
|
71
|
+
}
|
|
72
|
+
return formatHour(predictedTime);
|
|
73
|
+
}
|
|
74
|
+
function predict12Hours(parsedTime, currentHour) {
|
|
75
|
+
/**
|
|
76
|
+
* We need to predict what the user wants when they type 1 since it could be
|
|
77
|
+
* 10, 11, 12, or 1.
|
|
78
|
+
*
|
|
79
|
+
* If the current hour is over 12PM, we can skip this and go to the next logic.
|
|
80
|
+
*/
|
|
81
|
+
if (parsedTime === 1 && currentHour < 12) {
|
|
82
|
+
if (currentHour < 10) {
|
|
83
|
+
return 10;
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
return currentHour + 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Typing 1-5 predicts that the user want that exact hour on the afternoon.
|
|
91
|
+
*/
|
|
92
|
+
if (parsedTime <= 5) {
|
|
93
|
+
return parsedTime + 12;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Typing 13-15 predicts that the user want the 2nd number as the minute interval.
|
|
97
|
+
*/
|
|
98
|
+
if (parsedTime > 12 && parsedTime <= 15) {
|
|
99
|
+
const timeArray = parsedTime.toString().split("").map(Number); // 13 -> [1, 3]
|
|
100
|
+
const convertToHoursAndMinutes = timeArray.map((time, i) => {
|
|
101
|
+
if (i === 0)
|
|
102
|
+
return time + 12; // 1 -> 13 as 1PM
|
|
103
|
+
if (i === 1)
|
|
104
|
+
return time * 10; // 3 -> 30 as 30 minutes
|
|
105
|
+
});
|
|
106
|
+
return Number(convertToHoursAndMinutes.join("")); // [13, 30] -> 1330
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Anything after 5 will be predicted to be set as AM.
|
|
110
|
+
*/
|
|
111
|
+
return parsedTime;
|
|
112
|
+
}
|
|
113
|
+
function predict24Hours(time, parsedTime, currentHour) {
|
|
114
|
+
/**
|
|
115
|
+
* Typing 1 could be predicted from 10 to 19.
|
|
116
|
+
* Typing 01 skips this logic and sets the time to 01:00.
|
|
117
|
+
*/
|
|
118
|
+
if (parsedTime === 1 && time !== "01") {
|
|
119
|
+
if (currentHour < 10 || currentHour > 19) {
|
|
120
|
+
return 10;
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
return currentHour + 1;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Typing 2 could be predicted from 20 to 24.
|
|
128
|
+
* Typing 02 skips this logic and sets the time to 02:00.
|
|
129
|
+
*/
|
|
130
|
+
if (parsedTime === 2 && time !== "02") {
|
|
131
|
+
if (currentHour < 20) {
|
|
132
|
+
return 20;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
return currentHour + 1;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Typing 24 or 00 is set to midnight. This ensures the time doesn't get set
|
|
140
|
+
* to 24 as that would be invalid.
|
|
141
|
+
*/
|
|
142
|
+
if (parsedTime === 24 || time === "00") {
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
return parsedTime;
|
|
146
|
+
}
|
|
147
|
+
function formatHour(time) {
|
|
148
|
+
if (time > 99) {
|
|
149
|
+
const splitTime = time.toString().split("");
|
|
150
|
+
if (splitTime.length === 3)
|
|
151
|
+
splitTime.unshift("0"); // 130 -> 0130
|
|
152
|
+
splitTime.splice(2, 0, ":"); // 0130 -> 01:30
|
|
153
|
+
return splitTime.join("");
|
|
154
|
+
}
|
|
155
|
+
if (time < 10) {
|
|
156
|
+
return `0${time}:00`;
|
|
157
|
+
}
|
|
158
|
+
return `${time}:00`;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
function InputTime(_a) {
|
|
162
|
+
var { defaultValue, value, onChange } = _a, params = __rest(_a, ["defaultValue", "value", "onChange"]);
|
|
163
|
+
const ref = useRef(null);
|
|
164
|
+
const { setTypedTime } = useTimePredict({ value, handleChange });
|
|
165
|
+
const fieldProps = Object.assign(Object.assign(Object.assign({ onChange: handleChange }, (defaultValue && { defaultValue: civilTimeToHTMLTime(defaultValue) })), (!defaultValue && { value: civilTimeToHTMLTime(value) })), params);
|
|
166
|
+
return (React.createElement(FormField, Object.assign({ inputRef: ref, type: "time" }, fieldProps, { onBlur: handleBlur, onKeyUp: e => {
|
|
167
|
+
var _a;
|
|
168
|
+
(_a = fieldProps.onKeyUp) === null || _a === void 0 ? void 0 : _a.call(fieldProps, e);
|
|
169
|
+
!isNaN(parseInt(e.key, 10)) && setTypedTime(prev => prev + e.key);
|
|
170
|
+
} })));
|
|
171
|
+
function handleChange(newValue) {
|
|
172
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(htmlTimeToCivilTime(newValue));
|
|
173
|
+
}
|
|
174
|
+
function handleBlur() {
|
|
175
|
+
var _a;
|
|
176
|
+
(_a = params.onBlur) === null || _a === void 0 ? void 0 : _a.call(params);
|
|
177
|
+
// Time inputs doesn't clear the typed value when it's invalid. This should
|
|
178
|
+
// force it to reset the input value when the typed value is invalid.
|
|
179
|
+
if (ref.current) {
|
|
180
|
+
if (!ref.current.checkValidity()) {
|
|
181
|
+
ref.current.value = "";
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
export { InputTime as I };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var InputTime = require('./InputTime-3c4bdff0.js');
|
|
6
|
+
require('./tslib.es6-754e2961.js');
|
|
7
|
+
require('react');
|
|
8
|
+
require('@std-proposal/temporal');
|
|
9
|
+
require('lodash/debounce');
|
|
10
|
+
require('./FormField-fc30bb1a.js');
|
|
11
|
+
require('react-hook-form');
|
|
12
|
+
require('./style-inject.es-9d2f5f4e.js');
|
|
13
|
+
require('classnames');
|
|
14
|
+
require('@jobber/hooks/useShowClear');
|
|
15
|
+
require('./Button-ec64869e.js');
|
|
16
|
+
require('react-router-dom');
|
|
17
|
+
require('./Icon-405a216c.js');
|
|
18
|
+
require('@jobber/design');
|
|
19
|
+
require('./Typography-fd88fcce.js');
|
|
20
|
+
require('./Text-714f7d14.js');
|
|
21
|
+
require('./InputValidation-4a61254d.js');
|
|
22
|
+
require('framer-motion');
|
|
23
|
+
require('./Spinner-3480bc34.js');
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
exports.InputTime = InputTime.InputTime;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { I as InputTime } from './InputTime-ef8af2d9.js';
|
|
2
|
+
import './tslib.es6-c563c1dd.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import '@std-proposal/temporal';
|
|
5
|
+
import 'lodash/debounce';
|
|
6
|
+
import './FormField-f1f405d2.js';
|
|
7
|
+
import 'react-hook-form';
|
|
8
|
+
import './style-inject.es-a0e1a0ba.js';
|
|
9
|
+
import 'classnames';
|
|
10
|
+
import '@jobber/hooks/useShowClear';
|
|
11
|
+
import './Button-30154871.js';
|
|
12
|
+
import 'react-router-dom';
|
|
13
|
+
import './Icon-22723fe6.js';
|
|
14
|
+
import '@jobber/design';
|
|
15
|
+
import './Typography-52ed1386.js';
|
|
16
|
+
import './Text-c92ddeb3.js';
|
|
17
|
+
import './InputValidation-fe42fc3f.js';
|
|
18
|
+
import 'framer-motion';
|
|
19
|
+
import './Spinner-90081e20.js';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var framerMotion = require('framer-motion');
|
|
5
|
+
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
6
|
+
var Text = require('./Text-714f7d14.js');
|
|
7
|
+
var Icon = require('./Icon-405a216c.js');
|
|
8
|
+
|
|
9
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
10
|
+
|
|
11
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
12
|
+
|
|
13
|
+
var css_248z = ".sc-bFJieXBA- {\n margin-top: var(--space-smaller);\n}\n\n.xybhC5Y6mk4- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n padding: var(--space-smaller);\n padding-left: 0;\n}\n\n.xybhC5Y6mk4- > svg {\n margin-right: var(--space-smaller);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n\n.xybhC5Y6mk4-:focus {\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n";
|
|
14
|
+
var styles = {"hasValidationMessage":"sc-bFJieXBA-","message":"xybhC5Y6mk4-"};
|
|
15
|
+
styleInject_es.styleInject(css_248z);
|
|
16
|
+
|
|
17
|
+
function InputValidation({ message }) {
|
|
18
|
+
const messages = [message];
|
|
19
|
+
const variants = {
|
|
20
|
+
slideOut: { y: "5%", opacity: 0 },
|
|
21
|
+
slideIn: { y: 0, opacity: 1 },
|
|
22
|
+
};
|
|
23
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, messages && messages.length > 0 && (React__default["default"].createElement(framerMotion.AnimatePresence, { mode: "wait" }, messages.map(msg => (React__default["default"].createElement(framerMotion.motion.div, { key: `validation-${msg}`, variants: variants, initial: "slideOut", animate: "slideIn", exit: "slideOut", transition: { duration: 0.2 } },
|
|
24
|
+
React__default["default"].createElement("div", { className: styles.message, "aria-live": "assertive", role: "alert", tabIndex: 0 },
|
|
25
|
+
React__default["default"].createElement(Icon.Icon, { name: "alert", size: "small", color: "critical" }),
|
|
26
|
+
React__default["default"].createElement(Text.Text, { size: "small", variation: "error" }, msg)))))))));
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
exports.InputValidation = InputValidation;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { AnimatePresence, motion } from 'framer-motion';
|
|
3
|
+
import { s as styleInject } from './style-inject.es-a0e1a0ba.js';
|
|
4
|
+
import { T as Text } from './Text-c92ddeb3.js';
|
|
5
|
+
import { I as Icon } from './Icon-22723fe6.js';
|
|
6
|
+
|
|
7
|
+
var css_248z = ".sc-bFJieXBA- {\n margin-top: var(--space-smaller);\n}\n\n.xybhC5Y6mk4- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n padding: var(--space-smaller);\n padding-left: 0;\n}\n\n.xybhC5Y6mk4- > svg {\n margin-right: var(--space-smaller);\n -ms-flex-negative: 0;\n flex-shrink: 0;\n -ms-flex-item-align: start;\n align-self: flex-start;\n}\n\n.xybhC5Y6mk4-:focus {\n box-shadow: var(--shadow-focus);\n outline: none;\n}\n";
|
|
8
|
+
var styles = {"hasValidationMessage":"sc-bFJieXBA-","message":"xybhC5Y6mk4-"};
|
|
9
|
+
styleInject(css_248z);
|
|
10
|
+
|
|
11
|
+
function InputValidation({ message }) {
|
|
12
|
+
const messages = [message];
|
|
13
|
+
const variants = {
|
|
14
|
+
slideOut: { y: "5%", opacity: 0 },
|
|
15
|
+
slideIn: { y: 0, opacity: 1 },
|
|
16
|
+
};
|
|
17
|
+
return (React.createElement(React.Fragment, null, messages && messages.length > 0 && (React.createElement(AnimatePresence, { mode: "wait" }, messages.map(msg => (React.createElement(motion.div, { key: `validation-${msg}`, variants: variants, initial: "slideOut", animate: "slideIn", exit: "slideOut", transition: { duration: 0.2 } },
|
|
18
|
+
React.createElement("div", { className: styles.message, "aria-live": "assertive", role: "alert", tabIndex: 0 },
|
|
19
|
+
React.createElement(Icon, { name: "alert", size: "small", color: "critical" }),
|
|
20
|
+
React.createElement(Text, { size: "small", variation: "error" }, msg)))))))));
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export { InputValidation as I };
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var InputValidation = require('./InputValidation-4a61254d.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('framer-motion');
|
|
8
|
+
require('./style-inject.es-9d2f5f4e.js');
|
|
9
|
+
require('./Text-714f7d14.js');
|
|
10
|
+
require('./Typography-fd88fcce.js');
|
|
11
|
+
require('classnames');
|
|
12
|
+
require('./Icon-405a216c.js');
|
|
13
|
+
require('@jobber/design');
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
exports.InputValidation = InputValidation.InputValidation;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { I as InputValidation } from './InputValidation-fe42fc3f.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import 'framer-motion';
|
|
4
|
+
import './style-inject.es-a0e1a0ba.js';
|
|
5
|
+
import './Text-c92ddeb3.js';
|
|
6
|
+
import './Typography-52ed1386.js';
|
|
7
|
+
import 'classnames';
|
|
8
|
+
import './Icon-22723fe6.js';
|
|
9
|
+
import '@jobber/design';
|