@jobber/components 4.85.4-CJS-to-ESM.0 → 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 +224 -0
- 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 +8 -368
- 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.cjs.js +0 -6721
- package/dist/index.esm.js +0 -6603
- package/rollup.config.js +0 -75
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var classnames = require('classnames');
|
|
5
|
+
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
|
+
var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
|
|
11
|
+
|
|
12
|
+
var css_248z = "._4bvHwa3-qBA- > *:not(:last-child) {\n margin-bottom: -1px !important;\n}\n\n.bHm4WuX8ToY- {\n display: -ms-flexbox;\n display: flex;\n}\n\n.bHm4WuX8ToY- > *:not(:last-child) {\n margin-bottom: auto;\n margin-right: -1px;\n}\n\n/* Border corners are rounded on the outside edges of the group */\n\n.nmDPgrXofeE- {\n --public-field--top-left-radius: 0;\n --public-field--top-right-radius: 0;\n --public-field--bottom-left-radius: 0;\n --public-field--bottom-right-radius: 0;\n}\n\n._4bvHwa3-qBA- > :first-child:not(.bHm4WuX8ToY-) {\n --public-field--top-left-radius: var(--radius-base);\n --public-field--top-right-radius: var(--radius-base);\n}\n\n._4bvHwa3-qBA- > :last-child:not(.bHm4WuX8ToY-) {\n --public-field--bottom-left-radius: var(--radius-base);\n --public-field--bottom-right-radius: var(--radius-base);\n}\n\n/* First Horizontal Input Group */\n\n.bHm4WuX8ToY-:first-child > :first-child {\n --public-field--top-left-radius: var(--radius-base);\n}\n\n.bHm4WuX8ToY-:first-child > :last-child {\n --public-field--top-right-radius: var(--radius-base);\n}\n\n/* Last Horizontal Input Group */\n\n.bHm4WuX8ToY-:last-child > :first-child {\n --public-field--bottom-left-radius: var(--radius-base);\n}\n\n.bHm4WuX8ToY-:last-child > :last-child {\n --public-field--bottom-right-radius: var(--radius-base);\n}\n";
|
|
13
|
+
var styles = {"vertical":"_4bvHwa3-qBA-","horizontal":"bHm4WuX8ToY-","inputGroup":"nmDPgrXofeE-"};
|
|
14
|
+
styleInject_es.styleInject(css_248z);
|
|
15
|
+
|
|
16
|
+
function InputGroup({ children, flowDirection = "vertical", }) {
|
|
17
|
+
if (isInvalidGroupNesting(children))
|
|
18
|
+
return React__default["default"].createElement(React__default["default"].Fragment, null);
|
|
19
|
+
const className = classnames__default["default"](styles.inputGroup, styles[flowDirection]);
|
|
20
|
+
return React__default["default"].createElement("div", { className: className }, children);
|
|
21
|
+
}
|
|
22
|
+
function isInvalidGroupNesting(childs) {
|
|
23
|
+
return React__default["default"].Children.toArray(childs).some(child => {
|
|
24
|
+
if (child.type === InputGroup &&
|
|
25
|
+
child.props.flowDirection != "horizontal") {
|
|
26
|
+
console.error(`ERROR: InputGroup not rendered: nesting 'flowDirection="vertical"' columns not supported.`, `https://atlantis.getjobber.com/?path=/story/components-forms-and-inputs-inputgroup-web--nested`);
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
return false;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
exports.InputGroup = InputGroup;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var InputGroup = require('./InputGroup-8d4fd4eb.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('classnames');
|
|
8
|
+
require('./style-inject.es-9d2f5f4e.js');
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
exports.InputGroup = InputGroup.InputGroup;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import React, { forwardRef, createRef, useImperativeHandle } from 'react';
|
|
2
|
+
import { F as FormField } from './FormField-f1f405d2.js';
|
|
3
|
+
|
|
4
|
+
function InputNumberInternal(props, ref) {
|
|
5
|
+
var _a;
|
|
6
|
+
const inputRef = createRef();
|
|
7
|
+
useImperativeHandle(ref, () => ({
|
|
8
|
+
blur: () => {
|
|
9
|
+
const input = inputRef.current;
|
|
10
|
+
if (input) {
|
|
11
|
+
input.blur();
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
focus: () => {
|
|
15
|
+
const input = inputRef.current;
|
|
16
|
+
if (input) {
|
|
17
|
+
input.focus();
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
return (React.createElement(FormField, Object.assign({}, props, { type: "number", inputRef: inputRef, onChange: handleChange, validations: Object.assign(Object.assign({}, props.validations), { validate: customValidators((_a = props.validations) === null || _a === void 0 ? void 0 : _a.validate) }) })));
|
|
22
|
+
function customValidators(validators) {
|
|
23
|
+
if (validators == null) {
|
|
24
|
+
return getOverLimitMessage;
|
|
25
|
+
}
|
|
26
|
+
else if (typeof validators === "function") {
|
|
27
|
+
return {
|
|
28
|
+
customValidation: validators,
|
|
29
|
+
getOverLimitMessage,
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
return Object.assign(Object.assign({}, validators), { getOverLimitMessage });
|
|
33
|
+
}
|
|
34
|
+
function handleChange(newValue) {
|
|
35
|
+
props.onChange && props.onChange(newValue);
|
|
36
|
+
}
|
|
37
|
+
function getOverLimitMessage(value) {
|
|
38
|
+
const isOverMax = props.max != undefined && value && value > props.max;
|
|
39
|
+
const isUnderMin = props.min != undefined && value && value < props.min;
|
|
40
|
+
if (isOverMax || isUnderMin || (value && value.toString() === "")) {
|
|
41
|
+
if (props.min != undefined && props.max === undefined) {
|
|
42
|
+
return `Enter a number that is greater than or equal to ${props.min}`;
|
|
43
|
+
}
|
|
44
|
+
else if (props.max != undefined && props.min === undefined) {
|
|
45
|
+
return `Enter a number that is less than or equal to ${props.max}`;
|
|
46
|
+
}
|
|
47
|
+
else if (props.min != undefined && props.max != undefined) {
|
|
48
|
+
return `Enter a number between ${props.min} and ${props.max}`;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
const InputNumber = forwardRef(InputNumberInternal);
|
|
55
|
+
|
|
56
|
+
export { InputNumber as I };
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var FormField = require('./FormField-fc30bb1a.js');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
7
|
+
|
|
8
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
9
|
+
|
|
10
|
+
function InputNumberInternal(props, ref) {
|
|
11
|
+
var _a;
|
|
12
|
+
const inputRef = React.createRef();
|
|
13
|
+
React.useImperativeHandle(ref, () => ({
|
|
14
|
+
blur: () => {
|
|
15
|
+
const input = inputRef.current;
|
|
16
|
+
if (input) {
|
|
17
|
+
input.blur();
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
focus: () => {
|
|
21
|
+
const input = inputRef.current;
|
|
22
|
+
if (input) {
|
|
23
|
+
input.focus();
|
|
24
|
+
}
|
|
25
|
+
},
|
|
26
|
+
}));
|
|
27
|
+
return (React__default["default"].createElement(FormField.FormField, Object.assign({}, props, { type: "number", inputRef: inputRef, onChange: handleChange, validations: Object.assign(Object.assign({}, props.validations), { validate: customValidators((_a = props.validations) === null || _a === void 0 ? void 0 : _a.validate) }) })));
|
|
28
|
+
function customValidators(validators) {
|
|
29
|
+
if (validators == null) {
|
|
30
|
+
return getOverLimitMessage;
|
|
31
|
+
}
|
|
32
|
+
else if (typeof validators === "function") {
|
|
33
|
+
return {
|
|
34
|
+
customValidation: validators,
|
|
35
|
+
getOverLimitMessage,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
return Object.assign(Object.assign({}, validators), { getOverLimitMessage });
|
|
39
|
+
}
|
|
40
|
+
function handleChange(newValue) {
|
|
41
|
+
props.onChange && props.onChange(newValue);
|
|
42
|
+
}
|
|
43
|
+
function getOverLimitMessage(value) {
|
|
44
|
+
const isOverMax = props.max != undefined && value && value > props.max;
|
|
45
|
+
const isUnderMin = props.min != undefined && value && value < props.min;
|
|
46
|
+
if (isOverMax || isUnderMin || (value && value.toString() === "")) {
|
|
47
|
+
if (props.min != undefined && props.max === undefined) {
|
|
48
|
+
return `Enter a number that is greater than or equal to ${props.min}`;
|
|
49
|
+
}
|
|
50
|
+
else if (props.max != undefined && props.min === undefined) {
|
|
51
|
+
return `Enter a number that is less than or equal to ${props.max}`;
|
|
52
|
+
}
|
|
53
|
+
else if (props.min != undefined && props.max != undefined) {
|
|
54
|
+
return `Enter a number between ${props.min} and ${props.max}`;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
return true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
const InputNumber = React.forwardRef(InputNumberInternal);
|
|
61
|
+
|
|
62
|
+
exports.InputNumber = InputNumber;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var InputNumber = require('./InputNumber-df9cb825.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('./FormField-fc30bb1a.js');
|
|
8
|
+
require('./tslib.es6-754e2961.js');
|
|
9
|
+
require('react-hook-form');
|
|
10
|
+
require('./style-inject.es-9d2f5f4e.js');
|
|
11
|
+
require('classnames');
|
|
12
|
+
require('@jobber/hooks/useShowClear');
|
|
13
|
+
require('./Button-ec64869e.js');
|
|
14
|
+
require('react-router-dom');
|
|
15
|
+
require('./Icon-405a216c.js');
|
|
16
|
+
require('@jobber/design');
|
|
17
|
+
require('./Typography-fd88fcce.js');
|
|
18
|
+
require('./Text-714f7d14.js');
|
|
19
|
+
require('./InputValidation-4a61254d.js');
|
|
20
|
+
require('framer-motion');
|
|
21
|
+
require('./Spinner-3480bc34.js');
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
exports.InputNumber = InputNumber.InputNumber;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { I as InputNumber } from './InputNumber-4bd38b8e.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import './FormField-f1f405d2.js';
|
|
4
|
+
import './tslib.es6-c563c1dd.js';
|
|
5
|
+
import 'react-hook-form';
|
|
6
|
+
import './style-inject.es-a0e1a0ba.js';
|
|
7
|
+
import 'classnames';
|
|
8
|
+
import '@jobber/hooks/useShowClear';
|
|
9
|
+
import './Button-30154871.js';
|
|
10
|
+
import 'react-router-dom';
|
|
11
|
+
import './Icon-22723fe6.js';
|
|
12
|
+
import '@jobber/design';
|
|
13
|
+
import './Typography-52ed1386.js';
|
|
14
|
+
import './Text-c92ddeb3.js';
|
|
15
|
+
import './InputValidation-fe42fc3f.js';
|
|
16
|
+
import 'framer-motion';
|
|
17
|
+
import './Spinner-90081e20.js';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var FormField = require('./FormField-fc30bb1a.js');
|
|
5
|
+
|
|
6
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
7
|
+
|
|
8
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
9
|
+
|
|
10
|
+
function InputPassword(props) {
|
|
11
|
+
const { hasVisibility = false } = props;
|
|
12
|
+
const [visible, setVisibility] = React.useState(false);
|
|
13
|
+
return (React__default["default"].createElement(FormField.FormField, Object.assign({}, props, (hasVisibility && {
|
|
14
|
+
suffix: {
|
|
15
|
+
ariaLabel: visible ? "Hide password" : "Show password",
|
|
16
|
+
icon: visible ? "eye" : "eyeCrossed",
|
|
17
|
+
onClick: () => setVisibility(!visible),
|
|
18
|
+
},
|
|
19
|
+
}), { type: visible ? "text" : "password", onChange: handleChange })));
|
|
20
|
+
function handleChange(newValue) {
|
|
21
|
+
props.onChange && props.onChange(newValue);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
exports.InputPassword = InputPassword;
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { F as FormField } from './FormField-f1f405d2.js';
|
|
3
|
+
|
|
4
|
+
function InputPassword(props) {
|
|
5
|
+
const { hasVisibility = false } = props;
|
|
6
|
+
const [visible, setVisibility] = useState(false);
|
|
7
|
+
return (React.createElement(FormField, Object.assign({}, props, (hasVisibility && {
|
|
8
|
+
suffix: {
|
|
9
|
+
ariaLabel: visible ? "Hide password" : "Show password",
|
|
10
|
+
icon: visible ? "eye" : "eyeCrossed",
|
|
11
|
+
onClick: () => setVisibility(!visible),
|
|
12
|
+
},
|
|
13
|
+
}), { type: visible ? "text" : "password", onChange: handleChange })));
|
|
14
|
+
function handleChange(newValue) {
|
|
15
|
+
props.onChange && props.onChange(newValue);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { InputPassword as I };
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var InputPassword = require('./InputPassword-08d2dfa1.js');
|
|
6
|
+
require('react');
|
|
7
|
+
require('./FormField-fc30bb1a.js');
|
|
8
|
+
require('./tslib.es6-754e2961.js');
|
|
9
|
+
require('react-hook-form');
|
|
10
|
+
require('./style-inject.es-9d2f5f4e.js');
|
|
11
|
+
require('classnames');
|
|
12
|
+
require('@jobber/hooks/useShowClear');
|
|
13
|
+
require('./Button-ec64869e.js');
|
|
14
|
+
require('react-router-dom');
|
|
15
|
+
require('./Icon-405a216c.js');
|
|
16
|
+
require('@jobber/design');
|
|
17
|
+
require('./Typography-fd88fcce.js');
|
|
18
|
+
require('./Text-714f7d14.js');
|
|
19
|
+
require('./InputValidation-4a61254d.js');
|
|
20
|
+
require('framer-motion');
|
|
21
|
+
require('./Spinner-3480bc34.js');
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
exports.InputPassword = InputPassword.InputPassword;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { I as InputPassword } from './InputPassword-6b937a91.js';
|
|
2
|
+
import 'react';
|
|
3
|
+
import './FormField-f1f405d2.js';
|
|
4
|
+
import './tslib.es6-c563c1dd.js';
|
|
5
|
+
import 'react-hook-form';
|
|
6
|
+
import './style-inject.es-a0e1a0ba.js';
|
|
7
|
+
import 'classnames';
|
|
8
|
+
import '@jobber/hooks/useShowClear';
|
|
9
|
+
import './Button-30154871.js';
|
|
10
|
+
import 'react-router-dom';
|
|
11
|
+
import './Icon-22723fe6.js';
|
|
12
|
+
import '@jobber/design';
|
|
13
|
+
import './Typography-52ed1386.js';
|
|
14
|
+
import './Text-c92ddeb3.js';
|
|
15
|
+
import './InputValidation-fe42fc3f.js';
|
|
16
|
+
import 'framer-motion';
|
|
17
|
+
import './Spinner-90081e20.js';
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { _ as __rest } from './tslib.es6-c563c1dd.js';
|
|
2
|
+
import React, { useState, cloneElement } from 'react';
|
|
3
|
+
import { useFormContext, useForm } from 'react-hook-form';
|
|
4
|
+
import { s as styleInject } from './style-inject.es-a0e1a0ba.js';
|
|
5
|
+
import { F as FormField } from './FormField-f1f405d2.js';
|
|
6
|
+
|
|
7
|
+
var css_248z = ".L7WK-i5uaOk- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: var(--elevation-base);\n height: var(--field--height);\n padding-top: var(--field--padding-top);\n padding-bottom: var(--field--padding-bottom);\n padding-left: var(--field--padding-left);\n padding-right: var(--field--padding-right);\n color: var(--color-grey);\n font-family: inherit;\n font-size: inherit;\n line-height: var(--field--value-lineHeight);\n pointer-events: none;\n}\n\n.q1wXBupm5Xc- {\n visibility: hidden;\n opacity: 0;\n}\n";
|
|
8
|
+
var styles = {"mask":"L7WK-i5uaOk-","hiddenValue":"q1wXBupm5Xc-"};
|
|
9
|
+
styleInject(css_248z);
|
|
10
|
+
|
|
11
|
+
function InputMask({ children, delimiter = "*", pattern, strict = true, }) {
|
|
12
|
+
const { value: inputValue, onChange } = children.props;
|
|
13
|
+
const [isMasking, setIsMasking] = useState(!inputValue);
|
|
14
|
+
const stringifiedValue = String(inputValue || "");
|
|
15
|
+
const placeholderValue = pattern
|
|
16
|
+
.replace(new RegExp(`\\${delimiter}`, "g"), "_")
|
|
17
|
+
.slice(stringifiedValue.length);
|
|
18
|
+
const inputMask = (React.createElement("div", { className: styles.mask, "aria-hidden": "true" },
|
|
19
|
+
React.createElement("span", { className: styles.hiddenValue }, stringifiedValue),
|
|
20
|
+
placeholderValue));
|
|
21
|
+
return cloneElement(children, {
|
|
22
|
+
onChange: handleChange,
|
|
23
|
+
children: isMasking && inputMask,
|
|
24
|
+
});
|
|
25
|
+
function handleChange(value) {
|
|
26
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(formatValue(value));
|
|
27
|
+
}
|
|
28
|
+
function formatValue(value) {
|
|
29
|
+
const { cleanValueChars, patternChars, specialChars, isOverCharLimit } = getMaskingInfo(value);
|
|
30
|
+
if (!strict && isOverCharLimit) {
|
|
31
|
+
setIsMasking(false);
|
|
32
|
+
return cleanValueChars.join("");
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
setIsMasking(true);
|
|
36
|
+
return patternChars.reduce(getMaskedValue(cleanValueChars, specialChars), "");
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
function getMaskingInfo(value) {
|
|
40
|
+
const patternChars = pattern.split("");
|
|
41
|
+
const specialChars = patternChars.filter(char => char !== delimiter);
|
|
42
|
+
const cleanValueChars = value
|
|
43
|
+
.split("")
|
|
44
|
+
.filter(char => !specialChars.includes(char))
|
|
45
|
+
// Since this is only used in InputPhoneNumber, we can restrict it to
|
|
46
|
+
// just numbers for now.
|
|
47
|
+
.map(Number)
|
|
48
|
+
.filter(num => !isNaN(num));
|
|
49
|
+
const isOverCharLimit = cleanValueChars.length > patternChars.length - specialChars.length;
|
|
50
|
+
return { cleanValueChars, patternChars, specialChars, isOverCharLimit };
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function getMaskedValue(cleanVal, specialChars) {
|
|
54
|
+
return (result, nextCharacter) => {
|
|
55
|
+
if (!cleanVal.length)
|
|
56
|
+
return result;
|
|
57
|
+
if (specialChars.includes(nextCharacter))
|
|
58
|
+
return result + nextCharacter;
|
|
59
|
+
const nextValue = cleanVal.shift();
|
|
60
|
+
return result + nextValue;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
function InputPhoneNumber(_a) {
|
|
65
|
+
var { required } = _a, props = __rest(_a, ["required"]);
|
|
66
|
+
const { placeholder, validations, pattern = "(***) ***-****" } = props;
|
|
67
|
+
const errorSubject = placeholder || "Phone number";
|
|
68
|
+
const { getValues } = useFormContext() != undefined
|
|
69
|
+
? useFormContext()
|
|
70
|
+
: // If there isn't a Form Context being provided, get a form for this field.
|
|
71
|
+
useForm({ mode: "onTouched" });
|
|
72
|
+
return (React.createElement(InputMask, { pattern: pattern, strict: false },
|
|
73
|
+
React.createElement(FormField, Object.assign({}, props, { type: "tel", validations: Object.assign(Object.assign({ required: {
|
|
74
|
+
value: Boolean(required),
|
|
75
|
+
message: `${errorSubject} is required`,
|
|
76
|
+
} }, validations), { validate: getPhoneNumberValidation }) }))));
|
|
77
|
+
function getPhoneNumberValidation(value) {
|
|
78
|
+
// Get unique characters that aren't * in the pattern
|
|
79
|
+
const patternNonDelimterCharacters = pattern
|
|
80
|
+
.split("")
|
|
81
|
+
.filter(char => char !== "*")
|
|
82
|
+
.filter((char, index, arr) => arr.indexOf(char) === index);
|
|
83
|
+
const specialCharacters = patternNonDelimterCharacters.join(" ");
|
|
84
|
+
// Remove special characters from pattern
|
|
85
|
+
const cleanValue = value.replace(new RegExp(`[${specialCharacters}]`, "g"), "");
|
|
86
|
+
const cleanValueRequiredLength = (pattern.match(/\*/g) || []).length;
|
|
87
|
+
if (cleanValue.length > 0 && cleanValue.length < cleanValueRequiredLength) {
|
|
88
|
+
return `${errorSubject} must contain ${cleanValueRequiredLength} or more digits`;
|
|
89
|
+
}
|
|
90
|
+
if (typeof (validations === null || validations === void 0 ? void 0 : validations.validate) === "function") {
|
|
91
|
+
return validations.validate(value, getValues);
|
|
92
|
+
}
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export { InputPhoneNumber as I };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('./tslib.es6-754e2961.js');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var reactHookForm = require('react-hook-form');
|
|
6
|
+
var styleInject_es = require('./style-inject.es-9d2f5f4e.js');
|
|
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
|
+
|
|
13
|
+
var css_248z = ".L7WK-i5uaOk- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n z-index: var(--elevation-base);\n height: var(--field--height);\n padding-top: var(--field--padding-top);\n padding-bottom: var(--field--padding-bottom);\n padding-left: var(--field--padding-left);\n padding-right: var(--field--padding-right);\n color: var(--color-grey);\n font-family: inherit;\n font-size: inherit;\n line-height: var(--field--value-lineHeight);\n pointer-events: none;\n}\n\n.q1wXBupm5Xc- {\n visibility: hidden;\n opacity: 0;\n}\n";
|
|
14
|
+
var styles = {"mask":"L7WK-i5uaOk-","hiddenValue":"q1wXBupm5Xc-"};
|
|
15
|
+
styleInject_es.styleInject(css_248z);
|
|
16
|
+
|
|
17
|
+
function InputMask({ children, delimiter = "*", pattern, strict = true, }) {
|
|
18
|
+
const { value: inputValue, onChange } = children.props;
|
|
19
|
+
const [isMasking, setIsMasking] = React.useState(!inputValue);
|
|
20
|
+
const stringifiedValue = String(inputValue || "");
|
|
21
|
+
const placeholderValue = pattern
|
|
22
|
+
.replace(new RegExp(`\\${delimiter}`, "g"), "_")
|
|
23
|
+
.slice(stringifiedValue.length);
|
|
24
|
+
const inputMask = (React__default["default"].createElement("div", { className: styles.mask, "aria-hidden": "true" },
|
|
25
|
+
React__default["default"].createElement("span", { className: styles.hiddenValue }, stringifiedValue),
|
|
26
|
+
placeholderValue));
|
|
27
|
+
return React.cloneElement(children, {
|
|
28
|
+
onChange: handleChange,
|
|
29
|
+
children: isMasking && inputMask,
|
|
30
|
+
});
|
|
31
|
+
function handleChange(value) {
|
|
32
|
+
onChange === null || onChange === void 0 ? void 0 : onChange(formatValue(value));
|
|
33
|
+
}
|
|
34
|
+
function formatValue(value) {
|
|
35
|
+
const { cleanValueChars, patternChars, specialChars, isOverCharLimit } = getMaskingInfo(value);
|
|
36
|
+
if (!strict && isOverCharLimit) {
|
|
37
|
+
setIsMasking(false);
|
|
38
|
+
return cleanValueChars.join("");
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
setIsMasking(true);
|
|
42
|
+
return patternChars.reduce(getMaskedValue(cleanValueChars, specialChars), "");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function getMaskingInfo(value) {
|
|
46
|
+
const patternChars = pattern.split("");
|
|
47
|
+
const specialChars = patternChars.filter(char => char !== delimiter);
|
|
48
|
+
const cleanValueChars = value
|
|
49
|
+
.split("")
|
|
50
|
+
.filter(char => !specialChars.includes(char))
|
|
51
|
+
// Since this is only used in InputPhoneNumber, we can restrict it to
|
|
52
|
+
// just numbers for now.
|
|
53
|
+
.map(Number)
|
|
54
|
+
.filter(num => !isNaN(num));
|
|
55
|
+
const isOverCharLimit = cleanValueChars.length > patternChars.length - specialChars.length;
|
|
56
|
+
return { cleanValueChars, patternChars, specialChars, isOverCharLimit };
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function getMaskedValue(cleanVal, specialChars) {
|
|
60
|
+
return (result, nextCharacter) => {
|
|
61
|
+
if (!cleanVal.length)
|
|
62
|
+
return result;
|
|
63
|
+
if (specialChars.includes(nextCharacter))
|
|
64
|
+
return result + nextCharacter;
|
|
65
|
+
const nextValue = cleanVal.shift();
|
|
66
|
+
return result + nextValue;
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function InputPhoneNumber(_a) {
|
|
71
|
+
var { required } = _a, props = tslib_es6.__rest(_a, ["required"]);
|
|
72
|
+
const { placeholder, validations, pattern = "(***) ***-****" } = props;
|
|
73
|
+
const errorSubject = placeholder || "Phone number";
|
|
74
|
+
const { getValues } = reactHookForm.useFormContext() != undefined
|
|
75
|
+
? reactHookForm.useFormContext()
|
|
76
|
+
: // If there isn't a Form Context being provided, get a form for this field.
|
|
77
|
+
reactHookForm.useForm({ mode: "onTouched" });
|
|
78
|
+
return (React__default["default"].createElement(InputMask, { pattern: pattern, strict: false },
|
|
79
|
+
React__default["default"].createElement(FormField.FormField, Object.assign({}, props, { type: "tel", validations: Object.assign(Object.assign({ required: {
|
|
80
|
+
value: Boolean(required),
|
|
81
|
+
message: `${errorSubject} is required`,
|
|
82
|
+
} }, validations), { validate: getPhoneNumberValidation }) }))));
|
|
83
|
+
function getPhoneNumberValidation(value) {
|
|
84
|
+
// Get unique characters that aren't * in the pattern
|
|
85
|
+
const patternNonDelimterCharacters = pattern
|
|
86
|
+
.split("")
|
|
87
|
+
.filter(char => char !== "*")
|
|
88
|
+
.filter((char, index, arr) => arr.indexOf(char) === index);
|
|
89
|
+
const specialCharacters = patternNonDelimterCharacters.join(" ");
|
|
90
|
+
// Remove special characters from pattern
|
|
91
|
+
const cleanValue = value.replace(new RegExp(`[${specialCharacters}]`, "g"), "");
|
|
92
|
+
const cleanValueRequiredLength = (pattern.match(/\*/g) || []).length;
|
|
93
|
+
if (cleanValue.length > 0 && cleanValue.length < cleanValueRequiredLength) {
|
|
94
|
+
return `${errorSubject} must contain ${cleanValueRequiredLength} or more digits`;
|
|
95
|
+
}
|
|
96
|
+
if (typeof (validations === null || validations === void 0 ? void 0 : validations.validate) === "function") {
|
|
97
|
+
return validations.validate(value, getValues);
|
|
98
|
+
}
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
exports.InputPhoneNumber = InputPhoneNumber;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var InputPhoneNumber = require('./InputPhoneNumber-cbb2ca7d.js');
|
|
6
|
+
require('./tslib.es6-754e2961.js');
|
|
7
|
+
require('react');
|
|
8
|
+
require('react-hook-form');
|
|
9
|
+
require('./style-inject.es-9d2f5f4e.js');
|
|
10
|
+
require('./FormField-fc30bb1a.js');
|
|
11
|
+
require('classnames');
|
|
12
|
+
require('@jobber/hooks/useShowClear');
|
|
13
|
+
require('./Button-ec64869e.js');
|
|
14
|
+
require('react-router-dom');
|
|
15
|
+
require('./Icon-405a216c.js');
|
|
16
|
+
require('@jobber/design');
|
|
17
|
+
require('./Typography-fd88fcce.js');
|
|
18
|
+
require('./Text-714f7d14.js');
|
|
19
|
+
require('./InputValidation-4a61254d.js');
|
|
20
|
+
require('framer-motion');
|
|
21
|
+
require('./Spinner-3480bc34.js');
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
exports.InputPhoneNumber = InputPhoneNumber.InputPhoneNumber;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { I as InputPhoneNumber } from './InputPhoneNumber-947bdb49.js';
|
|
2
|
+
import './tslib.es6-c563c1dd.js';
|
|
3
|
+
import 'react';
|
|
4
|
+
import 'react-hook-form';
|
|
5
|
+
import './style-inject.es-a0e1a0ba.js';
|
|
6
|
+
import './FormField-f1f405d2.js';
|
|
7
|
+
import 'classnames';
|
|
8
|
+
import '@jobber/hooks/useShowClear';
|
|
9
|
+
import './Button-30154871.js';
|
|
10
|
+
import 'react-router-dom';
|
|
11
|
+
import './Icon-22723fe6.js';
|
|
12
|
+
import '@jobber/design';
|
|
13
|
+
import './Typography-52ed1386.js';
|
|
14
|
+
import './Text-c92ddeb3.js';
|
|
15
|
+
import './InputValidation-fe42fc3f.js';
|
|
16
|
+
import 'framer-motion';
|
|
17
|
+
import './Spinner-90081e20.js';
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var useSafeLayoutEffect = require('@jobber/hooks/useSafeLayoutEffect');
|
|
5
|
+
var FormField = require('./FormField-fc30bb1a.js');
|
|
6
|
+
|
|
7
|
+
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
8
|
+
|
|
9
|
+
var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
|
|
10
|
+
|
|
11
|
+
function InputTextInternal(props, ref) {
|
|
12
|
+
const inputRef = React.useRef(null);
|
|
13
|
+
const actionsRef = React.useRef(null);
|
|
14
|
+
const rowRange = getRowRange();
|
|
15
|
+
React.useImperativeHandle(ref, () => ({
|
|
16
|
+
insert: (text) => {
|
|
17
|
+
insertText(text);
|
|
18
|
+
},
|
|
19
|
+
blur: () => {
|
|
20
|
+
const input = inputRef.current;
|
|
21
|
+
if (input) {
|
|
22
|
+
input.blur();
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
focus: () => {
|
|
26
|
+
const input = inputRef.current;
|
|
27
|
+
if (input) {
|
|
28
|
+
input.focus();
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
scrollIntoView: arg => {
|
|
32
|
+
const input = inputRef.current;
|
|
33
|
+
if (input) {
|
|
34
|
+
input.scrollIntoView(arg);
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
}));
|
|
38
|
+
useSafeLayoutEffect.useSafeLayoutEffect(() => {
|
|
39
|
+
if (inputRef && inputRef.current instanceof HTMLTextAreaElement) {
|
|
40
|
+
resize(inputRef.current);
|
|
41
|
+
}
|
|
42
|
+
}, [inputRef.current]);
|
|
43
|
+
return (React__default["default"].createElement(FormField.FormField, Object.assign({}, props, { type: props.multiline ? "textarea" : "text", inputRef: inputRef, actionsRef: actionsRef, onChange: handleChange, rows: rowRange.min })));
|
|
44
|
+
function handleChange(newValue) {
|
|
45
|
+
props.onChange && props.onChange(newValue);
|
|
46
|
+
if (inputRef && inputRef.current instanceof HTMLTextAreaElement) {
|
|
47
|
+
resize(inputRef.current);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function getRowRange() {
|
|
51
|
+
if (props.rows === undefined) {
|
|
52
|
+
return { min: 3, max: 3 };
|
|
53
|
+
}
|
|
54
|
+
else if (typeof props.rows === "object") {
|
|
55
|
+
return { min: props.rows.min, max: props.rows.max };
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
return { min: props.rows, max: props.rows };
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
function resize(textArea) {
|
|
62
|
+
if (rowRange.min === rowRange.max)
|
|
63
|
+
return;
|
|
64
|
+
textArea.style.height = "auto";
|
|
65
|
+
textArea.style.height = textAreaHeight(textArea) + "px";
|
|
66
|
+
}
|
|
67
|
+
function textAreaHeight(textArea) {
|
|
68
|
+
const { lineHeight, borderBottomWidth, borderTopWidth, paddingBottom, paddingTop, } = window.getComputedStyle(textArea);
|
|
69
|
+
const maxHeight = rowRange.max * parseFloat(lineHeight) +
|
|
70
|
+
parseFloat(borderTopWidth) +
|
|
71
|
+
parseFloat(borderBottomWidth) +
|
|
72
|
+
parseFloat(paddingTop) +
|
|
73
|
+
parseFloat(paddingBottom);
|
|
74
|
+
const scrollHeight = textArea.scrollHeight +
|
|
75
|
+
parseFloat(borderTopWidth) +
|
|
76
|
+
parseFloat(borderBottomWidth);
|
|
77
|
+
return Math.min(scrollHeight, maxHeight);
|
|
78
|
+
}
|
|
79
|
+
function insertText(text) {
|
|
80
|
+
var _a;
|
|
81
|
+
const input = inputRef.current;
|
|
82
|
+
if (input) {
|
|
83
|
+
insertAtCursor(input, text);
|
|
84
|
+
const newValue = input.value;
|
|
85
|
+
(_a = actionsRef.current) === null || _a === void 0 ? void 0 : _a.setValue(newValue);
|
|
86
|
+
props.onChange && props.onChange(newValue);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
const InputText = React.forwardRef(InputTextInternal);
|
|
91
|
+
function insertAtCursor(input, newText) {
|
|
92
|
+
const start = input.selectionStart || 0;
|
|
93
|
+
const end = input.selectionEnd || 0;
|
|
94
|
+
const text = input.value;
|
|
95
|
+
const before = text.substring(0, start);
|
|
96
|
+
const after = text.substring(end, text.length);
|
|
97
|
+
input.value = before + newText + after;
|
|
98
|
+
input.selectionStart = input.selectionEnd = start + newText.length;
|
|
99
|
+
input.focus();
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
exports.InputText = InputText;
|