@jobber/components 4.62.0 → 4.62.1-JOB-83556-.7

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.
@@ -13,10 +13,10 @@ var useOnKeyDown = require('@jobber/hooks/useOnKeyDown');
13
13
  var Text = require('../Text-54334431.js');
14
14
  var Icon = require('../Icon-405a216c.js');
15
15
  var Heading = require('../Heading-4cde9989.js');
16
- var InputText = require('../InputText-3ca5c1c8.js');
16
+ var InputText = require('../InputText-07e4594b.js');
17
17
  require('../Typography-83915c54.js');
18
18
  require('@jobber/design');
19
- require('../FormField-3a4f196c.js');
19
+ require('../FormField-61709fa0.js');
20
20
  require('uuid');
21
21
  require('react-hook-form');
22
22
  require('../Button-db6114a6.js');
@@ -17,8 +17,8 @@ export declare namespace DataList {
17
17
  var Filters: typeof DataListFilters;
18
18
  var Search: typeof DataListSearch;
19
19
  var ItemActions: typeof DataListItemActions;
20
- var BulkActions: typeof DataListBulkActions;
21
20
  var ItemAction: typeof DataListAction;
21
+ var BatchActions: typeof DataListBulkActions;
22
22
  var BatchAction: (props: DataListBulkActionProps) => JSX.Element;
23
23
  var StatusBar: typeof DataListStatusBar;
24
24
  }
@@ -92,16 +92,38 @@ export interface DataListProps<T extends DataListObject> {
92
92
  readonly state: DataListSorting | undefined;
93
93
  readonly onSort: (sorting?: DataListSorting) => void;
94
94
  };
95
+ /**
96
+ * The list of Selected Item ids
97
+ */
98
+ readonly selected?: DataListSelectedType<T["id"]>;
95
99
  /**
96
100
  * Callback when an item checkbox is clicked.
97
101
  */
98
- readonly onSelect?: (items: T["id"][]) => void;
102
+ readonly onSelect?: (selected: DataListSelectedType<T["id"]>) => void;
99
103
  /**
100
- * The list of Selected Item ids
104
+ * Callback when the select all checkbox is clicked.
105
+ */
106
+ readonly onSelectAll?: (selected: DataListSelectedType<T["id"]>) => void;
107
+ }
108
+ /**
109
+ * Select all items in the DataList except the ones in the unselected array.
110
+ *
111
+ * This is used in scenarios where we need to select all items in the DataList
112
+ * but couldn't query all the ID's. So instead of feeding all the ID's to the
113
+ * DataList, we set all checkboxes to be checked except for the items that are
114
+ * in the unselected array.
115
+ */
116
+ export interface DataListSelectedAllType<T extends DataListObject = DataListObject> {
117
+ /**
118
+ * The total number of selected items in the DataList.
119
+ */
120
+ readonly totalCount: number;
121
+ /**
122
+ * Track the ID's of the unchecked items.
101
123
  */
102
- readonly selected?: T["id"][];
103
- readonly onSelectAll?: () => void;
124
+ readonly unselected: T["id"][];
104
125
  }
126
+ export type DataListSelectedType<T extends string | number = DataListObject["id"]> = T[] | DataListSelectedAllType;
105
127
  export type LayoutRenderer<T extends DataListObject> = (item: DataListItemType<T[]>) => JSX.Element;
106
128
  export interface DataListLayoutProps<T extends DataListObject> {
107
129
  readonly children: LayoutRenderer<T>;
@@ -0,0 +1,13 @@
1
+ import { DataListSelectedType } from "../DataList.types";
2
+ export declare function useBatchSelect(): {
3
+ canSelect: boolean;
4
+ canSelectAll: boolean;
5
+ hasAtLeastOneSelected: boolean;
6
+ isSelectAll: boolean;
7
+ isSelectSome: boolean;
8
+ selectedCount: number;
9
+ selectedIDs: (string | number)[];
10
+ selected: DataListSelectedType<string | number> | undefined;
11
+ onSelect: ((selected: DataListSelectedType<string | number>) => void) | undefined;
12
+ onSelectAll: ((selected: DataListSelectedType<string | number>) => void) | undefined;
13
+ };
@@ -1,2 +1,2 @@
1
1
  export * from "./DataList";
2
- export { DataListItemType, DataListSorting } from "./DataList.types";
2
+ export { DataListItemType, DataListSorting, DataListSelectedType, DataListSelectedAllType, } from "./DataList.types";
@@ -29,7 +29,7 @@ var Combobox = require('../Combobox-c6ec6d59.js');
29
29
  var Chip = require('../Chip-a1bdcab2.js');
30
30
  var Icon = require('../Icon-405a216c.js');
31
31
  var debounce = require('lodash/debounce');
32
- var InputText = require('../InputText-3ca5c1c8.js');
32
+ var InputText = require('../InputText-07e4594b.js');
33
33
  var Spinner = require('../Spinner-9d8fc7ff.js');
34
34
  var Typography = require('../Typography-83915c54.js');
35
35
  require('../Content-2ca1ffe1.js');
@@ -39,7 +39,7 @@ require('react-hook-form');
39
39
  require('@jobber/hooks/useAssert');
40
40
  require('../Avatar-1aa30ee1.js');
41
41
  require('color');
42
- require('../FormField-3a4f196c.js');
42
+ require('../FormField-61709fa0.js');
43
43
  require('../InputValidation-377d6c62.js');
44
44
 
45
45
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
@@ -452,6 +452,9 @@ function DataListItemActionsOverflow({ actions, }) {
452
452
  // Prevent firing the parent's onClick event when it is nested
453
453
  // within a clickable list item
454
454
  event.stopPropagation();
455
+ // Prevent navigating to the parent's href event when it is nested within a
456
+ // linked list item
457
+ event.preventDefault();
455
458
  setShowMenu(true);
456
459
  const rect = event.currentTarget.getBoundingClientRect();
457
460
  const posX = rect.x;
@@ -509,22 +512,79 @@ function handleContextMenu(event) {
509
512
  event.stopPropagation();
510
513
  }
511
514
 
515
+ function useBatchSelect() {
516
+ const { selected, onSelect, onSelectAll } = useDataListContext();
517
+ const isArray = Array.isArray(selected);
518
+ const selectedIDs = getIDs(selected);
519
+ const isSelectAll = !isArray;
520
+ return {
521
+ canSelect: Boolean(selected && onSelect),
522
+ canSelectAll: Boolean(onSelect && onSelectAll),
523
+ hasAtLeastOneSelected: isSelectAll || selectedIDs.length > 0,
524
+ isSelectAll,
525
+ isSelectSome: isArray,
526
+ selectedCount: getSelectedCount(selected),
527
+ selectedIDs,
528
+ selected,
529
+ onSelect,
530
+ onSelectAll,
531
+ };
532
+ }
533
+ function getIDs(selected) {
534
+ if (Array.isArray(selected))
535
+ return selected;
536
+ if (selected === undefined)
537
+ return [];
538
+ return selected.unselected;
539
+ }
540
+ function getSelectedCount(selected) {
541
+ if (Array.isArray(selected))
542
+ return selected.length;
543
+ if (selected === undefined)
544
+ return 0;
545
+ return selected.totalCount - selected.unselected.length;
546
+ }
547
+
512
548
  function DataListItemInternal({ children, item, }) {
513
- const { selected, onSelect } = useDataListContext();
514
- if (selected !== undefined && onSelect) {
515
- return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$f.selectable, {
516
- [styles$f.selected]: selected === null || selected === void 0 ? void 0 : selected.length,
517
- }) },
518
- children,
519
- React__default["default"].createElement(Checkbox.Checkbox, { checked: selected === null || selected === void 0 ? void 0 : selected.includes(item.id), onChange: handleChange })));
549
+ const { canSelect, hasAtLeastOneSelected, isSelectAll, selectedIDs, selected, onSelect, } = useBatchSelect();
550
+ if (!canSelect)
551
+ return children;
552
+ return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$f.selectable, {
553
+ [styles$f.selected]: hasAtLeastOneSelected,
554
+ }) },
555
+ children,
556
+ React__default["default"].createElement(Checkbox.Checkbox, { checked: getIsChecked(), onChange: handleChange })));
557
+ function getIsChecked() {
558
+ const isItemInSelectedIDs = selectedIDs.includes(item.id);
559
+ // If we're in a "select all" state, the selectedID's becomes a list of
560
+ // unchecked ID's.
561
+ if (isSelectAll)
562
+ return !isItemInSelectedIDs;
563
+ // Otherwise, we're in a "select some" state, so we can just check if the
564
+ // item is in the selectedIDs list.
565
+ return isItemInSelectedIDs;
520
566
  }
521
- return children;
522
567
  function handleChange() {
523
- if (selected === null || selected === void 0 ? void 0 : selected.includes(item.id)) {
524
- onSelect === null || onSelect === void 0 ? void 0 : onSelect(selected === null || selected === void 0 ? void 0 : selected.filter(id => id !== item.id));
568
+ if (isSelectAll)
569
+ return handleSelectAllChange();
570
+ return handleSelectSomeChange();
571
+ }
572
+ function handleSelectAllChange() {
573
+ if (!selected || Array.isArray(selected))
574
+ return;
575
+ if (selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.includes(item.id)) {
576
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(Object.assign(Object.assign({}, selected), { unselected: selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.filter(id => id !== item.id) }));
577
+ }
578
+ else if (selectedIDs) {
579
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(Object.assign(Object.assign({}, selected), { unselected: [...selectedIDs, item.id] }));
580
+ }
581
+ }
582
+ function handleSelectSomeChange() {
583
+ if (selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.includes(item.id)) {
584
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.filter(id => id !== item.id));
525
585
  }
526
- else if (selected) {
527
- onSelect === null || onSelect === void 0 ? void 0 : onSelect([...selected, item.id]);
586
+ else if (selectedIDs) {
587
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect([...selectedIDs, item.id]);
528
588
  }
529
589
  }
530
590
  }
@@ -674,47 +734,69 @@ function InternalDataListBulkActions() {
674
734
  }
675
735
 
676
736
  function DataListHeaderCheckbox({ children }) {
677
- const { data, totalCount, selected = [], onSelectAll, onSelect, } = useDataListContext();
678
- if (!onSelectAll && !onSelect)
679
- return children;
680
737
  const { sm } = useResponsiveSizing();
681
- // Show "Deselect All" if breakpoint is sm or higher
738
+ const { data, totalCount } = useDataListContext();
739
+ const { canSelectAll, hasAtLeastOneSelected, isSelectAll, selectedCount, selectedIDs, selected, onSelectAll, onSelect, } = useBatchSelect();
740
+ // If there's no onSelectAll or onSelect, we don't need to render the checkbox.
741
+ if (!canSelectAll)
742
+ return children;
682
743
  const deselectText = sm ? "Deselect All" : "Deselect";
683
- const selectedLabel = selected.length ? `${selected.length} selected` : "";
684
- return (React__default["default"].createElement("div", { className: classnames__default["default"](styles$f.selectable) },
744
+ const selectedLabel = selectedCount ? `${selectedCount} selected` : "";
745
+ return (React__default["default"].createElement("div", { className: styles$f.selectable },
685
746
  React__default["default"].createElement("div", { className: classnames__default["default"](styles$f.selectAllCheckbox, {
686
- [styles$f.visible]: Boolean(onSelectAll),
747
+ [styles$f.visible]: canSelectAll,
687
748
  }) },
688
- React__default["default"].createElement(Checkbox.Checkbox, { checked: isAllSelected(), indeterminate: selected.length > 0 && !isAllSelected(), onChange: onSelectAll },
749
+ React__default["default"].createElement(Checkbox.Checkbox, { checked: isAllSelected(), indeterminate: isIndeterminate(), onChange: handleSelectAll },
689
750
  React__default["default"].createElement("div", { className: styles$f.srOnly }, selectedLabel))),
690
- React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: Boolean(selected.length), initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$f.batchSelectContainer },
751
+ React__default["default"].createElement(AnimatedSwitcher.AnimatedSwitcher, { switched: hasAtLeastOneSelected, initialChild: children, switchTo: React__default["default"].createElement("div", { className: styles$f.batchSelectContainer },
691
752
  React__default["default"].createElement("div", { className: styles$f.headerBatchSelect },
692
- React__default["default"].createElement(Text.Text, null,
693
- selected.length,
753
+ Boolean(selectedCount) && React__default["default"].createElement(Text.Text, null,
754
+ selectedCount,
694
755
  " selected"),
695
756
  React__default["default"].createElement(Button.Button, { label: deselectText, onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect([]), type: "tertiary" })),
696
757
  React__default["default"].createElement(InternalDataListBulkActions, null)) })));
758
+ function isIndeterminate() {
759
+ if (isSelectAll)
760
+ return selectedIDs.length > 0;
761
+ return selectedCount > 0 && !isAllSelected();
762
+ }
697
763
  function isAllSelected() {
764
+ if (isSelectAll)
765
+ return true;
698
766
  // If there's a totalCount, we can use that to accurately determine if the
699
767
  // user have "selected all".
700
768
  if (totalCount) {
701
- return totalCount === selected.length;
769
+ return totalCount === selectedCount;
702
770
  }
703
771
  // Otherwise, we'll use the total count of data. This is not as reliable, as
704
772
  // it's possible that the would select all loaded data while we're
705
773
  // loading more. It's still hard to get to that state as the load more
706
774
  // triggers before you see the last item.
707
- return data.length > 0 && selected.length >= data.length;
775
+ return data.length > 0 && selectedCount >= data.length;
776
+ }
777
+ function handleSelectAll() {
778
+ if (isAllSelected()) {
779
+ return onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll([]);
780
+ }
781
+ onSelectAll === null || onSelectAll === void 0 ? void 0 : onSelectAll({ totalCount: getTotalCount(), unselected: [] });
782
+ }
783
+ function getTotalCount() {
784
+ if (selected && "totalCount" in selected)
785
+ return selected.totalCount;
786
+ if (totalCount)
787
+ return totalCount;
788
+ return 0;
708
789
  }
709
790
  }
710
791
 
711
792
  function DataListHeader() {
712
793
  const breakpoints = useResponsiveSizing();
713
- const { headerVisibility = { xs: true, sm: true, md: true, lg: true, xl: true }, headers, selected, layoutBreakpoints, } = useDataListContext();
794
+ const { headerVisibility = { xs: true, sm: true, md: true, lg: true, xl: true }, headers, layoutBreakpoints, } = useDataListContext();
795
+ const { selectedIDs } = useBatchSelect();
714
796
  const size = getVisibleSize();
715
797
  const { layout } = useActiveLayout();
716
798
  const visible = headerVisibility[size];
717
- const noItemsSelected = (selected === null || selected === void 0 ? void 0 : selected.length) === 0;
799
+ const noItemsSelected = (selectedIDs === null || selectedIDs === void 0 ? void 0 : selectedIDs.length) === 0;
718
800
  if ((!visible && noItemsSelected) || !layout)
719
801
  return null;
720
802
  const headerData = generateHeaderElements(headers);
@@ -1123,18 +1205,18 @@ DataList.Search = DataListSearch;
1123
1205
  * Defines the group actions you could do on a single DataList item.
1124
1206
  */
1125
1207
  DataList.ItemActions = DataListItemActions;
1126
- /**
1127
- * Defines the group actions you could do on multiple DataList items.
1128
- */
1129
- DataList.BulkActions = DataListBulkActions;
1130
1208
  /**
1131
1209
  * Defines the action in a DataList. This should be used inside the
1132
1210
  * DataListItemActions component.
1133
1211
  */
1134
1212
  DataList.ItemAction = DataListAction;
1213
+ /**
1214
+ * Defines the group actions you could do on multiple DataList items.
1215
+ */
1216
+ DataList.BatchActions = DataListBulkActions;
1135
1217
  /**
1136
1218
  * Defines the batch action in a DataList. This should be used inside the
1137
- * DataListBulkActions component.
1219
+ * DataListBatchActions component.
1138
1220
  */
1139
1221
  DataList.BatchAction = function DataListBatchAction(props) {
1140
1222
  return React__default["default"].createElement(DataListAction, Object.assign({}, props));
@@ -9,11 +9,11 @@ var jobberHooks = require('@jobber/hooks/useResizeObserver');
9
9
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
10
10
  var Glimmer = require('../Glimmer-cfa92a88.js');
11
11
  var tslib_es6 = require('../tslib.es6-5b8768b7.js');
12
- var Option = require('../Option-0abeda54.js');
12
+ var Option = require('../Option-381be6f7.js');
13
13
  var Button = require('../Button-db6114a6.js');
14
14
  var Text = require('../Text-54334431.js');
15
15
  require('../Content-2ca1ffe1.js');
16
- require('../FormField-3a4f196c.js');
16
+ require('../FormField-61709fa0.js');
17
17
  require('uuid');
18
18
  require('react-hook-form');
19
19
  require('../Icon-405a216c.js');
@@ -139,6 +139,10 @@ export interface FormFieldProps extends CommonFormFieldProps {
139
139
  * Blur callback.
140
140
  */
141
141
  onBlur?(): void;
142
+ /**
143
+ * Click callback.
144
+ */
145
+ onClick?(event: React.MouseEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>): void;
142
146
  /**
143
147
  * Exclusively for textareas. Specifies the visible height of a textarea.
144
148
  */
@@ -1,9 +1,9 @@
1
1
  import { PropsWithChildren } from "react";
2
2
  import { FormFieldProps } from "./FormFieldTypes";
3
3
  interface FormFieldWrapperProps extends FormFieldProps {
4
- error: string;
5
- identifier: string;
6
- descriptionIdentifier: string;
4
+ readonly error: string;
5
+ readonly identifier: string;
6
+ readonly descriptionIdentifier: string;
7
7
  }
8
8
  export declare function FormFieldWrapper({ align, description, descriptionIdentifier, placeholder, value, children, invalid, error, size, prefix, suffix, max, maxLength, type, disabled, inline, identifier, }: PropsWithChildren<FormFieldWrapperProps>): JSX.Element;
9
9
  export {};
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var FormField = require('../FormField-3a4f196c.js');
5
+ var FormField = require('../FormField-61709fa0.js');
6
6
  require('../tslib.es6-5b8768b7.js');
7
7
  require('react');
8
8
  require('uuid');
@@ -17,8 +17,8 @@ function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'defau
17
17
  var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
18
18
  var classnames__default = /*#__PURE__*/_interopDefaultLegacy(classnames);
19
19
 
20
- var css_248z = ":root {\n /**\n * These `--public-field` properties are used in other components such\n * as InputGroup, therefore they must stay on :root\n **/\n --public-field--top-left-radius: var(--radius-base);\n --public-field--top-right-radius: var(--radius-base);\n --public-field--bottom-left-radius: var(--radius-base);\n --public-field--bottom-right-radius: var(--radius-base);\n}\n\n.geR7qBhrMfk- {\n width: 100%;\n}\n\n/**\n * Wrapper\n **/\n\n.nPGhTEEzsoU- {\n --field--placeholder-color: var(--color-greyBlue--light);\n --field--placeholder-offset: 50%;\n --field--placeholder-transform: -50%;\n\n --field--textAlign: left;\n\n --field--height: var(--space-largest);\n\n --field--padding-top: calc(var(--space-base) - var(--space-smallest));\n --field--padding-bottom: calc(var(--space-base) - var(--space-smallest));\n --field--padding-left: var(--space-base);\n --field--padding-right: var(--space-base);\n\n --field--value-color: var(--color-heading);\n --field--value-lineHeight: calc(var(--base-unit) * 1.25);\n\n --field--border-color: var(--color-border);\n --field--background-color: var(--color-surface);\n\n --field--base-elevation: var(--elevation-base);\n --field--label-elevation: calc(var(--field--base-elevation) + 1);\n --field--postfix-elevation: calc(var(--field--base-elevation) - 1);\n --field--postfix-action-elevation: calc(var(--field--base-elevation) + 2);\n\n display: -ms-flexbox;\n\n display: flex;\n width: 100%;\n height: calc(16px * 3);\n height: var(--field--height);\n border: calc(16px / 16) solid rgb(225, 225, 225);\n border: var(--border-base) solid var(--field--border-color);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n border-top-right-radius: calc(16px / 8);\n border-top-right-radius: var(--public-field--top-right-radius);\n border-bottom-right-radius: calc(16px / 8);\n border-bottom-right-radius: var(--public-field--bottom-right-radius);\n border-bottom-left-radius: calc(16px / 8);\n border-bottom-left-radius: var(--public-field--bottom-left-radius);\n border-top-left-radius: calc(16px / 8);\n border-top-left-radius: var(--public-field--top-left-radius);\n color: rgb(1, 41, 57);\n color: var(--field--value-color);\n font-size: calc((16px * 1) * 0.875);\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--field--background-color);\n}\n\n.nPGhTEEzsoU- * {\n box-sizing: border-box;\n}\n\n.nPGhTEEzsoU-:focus-within {\n position: relative;\n z-index: var(--field--base-elevation);\n box-shadow: 0px 0px calc(16px / 4) calc(16px / 8)\n rgb(231, 213, 87);\n box-shadow: var(--shadow-focus);\n}\n\n.UIZq8hTmJVU- {\n --field--placeholder-color: var(--color-text--secondary);\n --field--placeholder-offset: var(--space-smallest);\n --field--placeholder-transform: 0;\n --field--padding-top: calc(var(--space-base) + var(--space-smaller));\n --field--padding-bottom: var(--space-small);\n}\n\n.UIZq8hTmJVU-.Ku8sWS0mLew- {\n --field--padding-top: calc(var(--space-large) + var(--space-smaller));\n}\n\n.nPGhTEEzsoU-.mgPacJ6Z71Y- {\n --field--placeholder-offset: 0;\n --field--placeholder-transform: 0;\n height: auto;\n min-height: auto;\n}\n\n.gJ-15M615eY-,\n.gJ-15M615eY-:focus-within {\n --field--border-color: var(--color-critical);\n position: relative;\n}\n\n._1rsTLm5GwcM- {\n --field--placeholder-color: var(--color-disabled);\n --field--value-color: var(--color-disabled);\n --field--background-color: var(--color-surface--background);\n --field--border-color: var(--color-disabled--secondary);\n}\n\n/* override iOS default styling for disabled input */\n\n._1rsTLm5GwcM- :disabled {\n -webkit-text-fill-color: var(--field--value-color);\n opacity: 1;\n}\n\n.o8D-H-lKfDk- {\n --field--padding-left: calc(var(--space-base) - var(--space-smaller));\n --field--padding-right: calc(var(--space-base) - var(--space-smaller));\n --field--padding-top: var(--space-small);\n --field--padding-bottom: var(--space-small);\n --field--height: calc(var(--space-larger) + var(--space-smaller));\n}\n\n.Ku8sWS0mLew- {\n --field--padding-left: var(--space-large);\n --field--padding-right: var(--space-large);\n --field--height: calc(var(--space-extravagant));\n}\n\n._5Hu2F3cBvng- {\n display: inline-block;\n width: auto;\n}\n\n.s1WLQs6ffD8- {\n --field--textAlign: center;\n}\n\n.a2r4QheWYIA- {\n --field--textAlign: right;\n}\n\n/**\n * The custom property --formField-maxLength is getting defined inside the\n * component.\n */\n\n.KdAnXK1gClo- {\n width: calc(\n (16px * var(--formField-maxLength)) + var(--field--padding-left) +\n var(--field--padding-right)\n );\n width: calc(\n (var(--base-unit) * var(--formField-maxLength)) + var(--field--padding-left) +\n var(--field--padding-right)\n );\n}\n\n/**\n * Input Wrapper\n **/\n\n.iQFhpFYnz-8- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1;\n flex: 1;\n position: relative;\n /* Ensure input stays with the rest of the element stack */\n z-index: 0;\n z-index: var(--elevation-default);\n}\n\n.Yo2Wi9dpa-Y- {\n position: relative;\n -ms-flex: 1;\n flex: 1;\n}\n\n/**\n * Input\n **/\n\n.LSHPV7PwOTg- {\n position: relative;\n z-index: var(--field--base-elevation);\n width: 100%;\n height: 100%;\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 border: none;\n border-radius: 0;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n line-height: var(--field--value-lineHeight);\n text-align: var(--field--textAlign);\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.LSHPV7PwOTg-:focus {\n outline: none;\n}\n\n.mgPacJ6Z71Y- .LSHPV7PwOTg- {\n resize: vertical;\n}\n\n.i31GQXcMz54- .LSHPV7PwOTg- {\n z-index: var(--field--label-elevation);\n}\n\n.LSHPV7PwOTg-:-webkit-autofill,\n.LSHPV7PwOTg-:-webkit-autofill:hover,\n.LSHPV7PwOTg-:-webkit-autofill:focus,\n.LSHPV7PwOTg-:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 30px rgba(255, 255, 255, 1) inset !important;\n -webkit-box-shadow: 0 0 0 30px var(--color-surface) inset !important;\n}\n\n/**\n * Label\n **/\n\n._3xREbTN5pPg- {\n position: absolute;\n top: var(--field--placeholder-offset);\n z-index: var(--field--label-elevation);\n width: 100%;\n padding-left: var(--field--padding-left);\n padding-right: var(--field--padding-right);\n overflow: hidden;\n color: var(--field--placeholder-color);\n line-height: var(--field--value-lineHeight);\n text-align: var(--field--textAlign);\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n -webkit-transform: translateY(var(--field--placeholder-transform));\n transform: translateY(var(--field--placeholder-transform));\n transition: all 100ms;\n transition: all var(--timing-quick);\n}\n\n.UIZq8hTmJVU- ._3xREbTN5pPg- {\n font-size: calc((16px * 1) * 0.75);\n font-size: calc(calc(16px * 1) * 0.75);\n font-size: var(--typography--fontSize-small);\n}\n\n.mgPacJ6Z71Y- ._3xREbTN5pPg- {\n /* Changes the width so that the scrollbar on the textarea doesn't get cut off */\n width: calc(100% - var(--field--padding-right));\n padding-top: var(--field--padding-top);\n /* Remove padding on right to make use of the entire width */\n padding-right: 0;\n -webkit-transform: translateY(--field--placeholder-transform);\n transform: translateY(--field--placeholder-transform);\n}\n\n.mgPacJ6Z71Y-.UIZq8hTmJVU- ._3xREbTN5pPg- {\n padding-top: calc(16px / 8);\n padding-top: var(--space-smallest);\n background-color: var(--field--background-color);\n}\n\n.o8D-H-lKfDk-.UIZq8hTmJVU- ._3xREbTN5pPg- {\n display: none;\n}\n\n.Ku8sWS0mLew-.UIZq8hTmJVU- ._3xREbTN5pPg- {\n padding-top: calc(16px / 2);\n padding-top: var(--space-small);\n}\n\n/**\n * Postfix\n **/\n\n.VtnAk1HYMMk- {\n position: absolute;\n top: 50%;\n right: calc(16px * 1);\n right: var(--space-base);\n z-index: var(--field--postfix-elevation);\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n}\n\n/**\n * Affix\n **/\n\n.uPLklxvtfJw- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 0 calc(var(--field--padding-left) * -1) 0 0;\n padding: 0 var(--field--padding-right) 0 var(--field--padding-left);\n}\n\n@supports (aspect-ratio: 1/1) {\n .uPLklxvtfJw- {\n /*\n * disabling property-no-unknown here as this is a real property\n * that stylelint just doesn't know about. We may be able to remove\n * this when we update our stylelint to not care about IE11.\n */\n /* stylelint-disable-next-line property-no-unknown */\n aspect-ratio: 1/1;\n padding: 0;\n }\n}\n\n.uPLklxvtfJw-.pYqqDvv57JE- {\n margin: 0 0 0 calc(var(--field--padding-right) * -1);\n}\n\n.uPLklxvtfJw-.eI44oQpuVlk- {\n position: relative;\n z-index: var(--field--postfix-action-elevation);\n}\n\n.jO8P2iSHilM- {\n display: -ms-flexbox;\n display: flex;\n margin: 0 calc((var(--field--padding-left) - calc(16px / 8)) * -1) 0 0;\n margin: 0 calc((var(--field--padding-left) - var(--space-smallest)) * -1) 0 0;\n padding: 0 0 0 var(--field--padding-left);\n line-height: var(--field--value-lineHeight);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n\n.jO8P2iSHilM-.pYqqDvv57JE- {\n margin: 0 0 0 calc((var(--field--padding-left) - calc(16px / 8)) * -1);\n margin: 0 0 0 calc((var(--field--padding-left) - var(--space-smallest)) * -1);\n padding: 0 var(--field--padding-left) 0 0;\n}\n\n.UIZq8hTmJVU-:not(.o8D-H-lKfDk-) .jO8P2iSHilM- {\n padding-top: var(--field--padding-top);\n padding-bottom: var(--field--padding-bottom);\n}\n\n._2GfgzNnLOSI- {\n margin-top: calc(16px / 4);\n margin-top: var(--space-smaller);\n}\n";
21
- var styles = {"container":"geR7qBhrMfk-","wrapper":"nPGhTEEzsoU-","miniLabel":"UIZq8hTmJVU-","large":"Ku8sWS0mLew-","textarea":"mgPacJ6Z71Y-","invalid":"gJ-15M615eY-","disabled":"_1rsTLm5GwcM-","small":"o8D-H-lKfDk-","inline":"_5Hu2F3cBvng-","center":"s1WLQs6ffD8-","right":"a2r4QheWYIA-","maxLength":"KdAnXK1gClo-","inputWrapper":"iQFhpFYnz-8-","childrenWrapper":"Yo2Wi9dpa-Y-","input":"LSHPV7PwOTg-","select":"i31GQXcMz54-","label":"_3xREbTN5pPg-","postfix":"VtnAk1HYMMk-","affixIcon":"uPLklxvtfJw-","suffix":"pYqqDvv57JE-","hasAction":"eI44oQpuVlk-","affixLabel":"jO8P2iSHilM-","description":"_2GfgzNnLOSI-"};
20
+ var css_248z = ":root {\n /**\n * These `--public-field` properties are used in other components such\n * as InputGroup, therefore they must stay on :root\n **/\n --public-field--top-left-radius: var(--radius-base);\n --public-field--top-right-radius: var(--radius-base);\n --public-field--bottom-left-radius: var(--radius-base);\n --public-field--bottom-right-radius: var(--radius-base);\n}\n\n.geR7qBhrMfk- {\n width: 100%;\n}\n\n/**\n * Wrapper\n **/\n\n.nPGhTEEzsoU- {\n --field--placeholder-color: var(--color-greyBlue--light);\n --field--placeholder-offset: 50%;\n --field--placeholder-transform: -50%;\n\n --field--textAlign: left;\n\n --field--height: var(--space-largest);\n\n --field--padding-top: calc(var(--space-base) - var(--space-smallest));\n --field--padding-bottom: calc(var(--space-base) - var(--space-smallest));\n --field--padding-left: var(--space-base);\n --field--padding-right: var(--space-base);\n\n --field--value-color: var(--color-heading);\n --field--value-lineHeight: calc(var(--base-unit) * 1.25);\n\n --field--border-color: var(--color-border);\n --field--background-color: var(--color-surface);\n\n --field--base-elevation: var(--elevation-base);\n --field--label-elevation: calc(var(--field--base-elevation) + 1);\n --field--postfix-elevation: calc(var(--field--base-elevation) - 1);\n --field--postfix-action-elevation: calc(var(--field--base-elevation) + 2);\n\n display: -ms-flexbox;\n\n display: flex;\n width: 100%;\n height: calc(16px * 3);\n height: var(--field--height);\n border: calc(16px / 16) solid rgb(225, 225, 225);\n border: var(--border-base) solid var(--field--border-color);\n border-radius: calc(16px / 8);\n border-radius: var(--radius-base);\n border-top-right-radius: calc(16px / 8);\n border-top-right-radius: var(--public-field--top-right-radius);\n border-bottom-right-radius: calc(16px / 8);\n border-bottom-right-radius: var(--public-field--bottom-right-radius);\n border-bottom-left-radius: calc(16px / 8);\n border-bottom-left-radius: var(--public-field--bottom-left-radius);\n border-top-left-radius: calc(16px / 8);\n border-top-left-radius: var(--public-field--top-left-radius);\n color: rgb(1, 41, 57);\n color: var(--field--value-color);\n font-size: calc((16px * 1) * 0.875);\n font-size: calc(calc(16px * 1) * 0.875);\n font-size: var(--typography--fontSize-base);\n background-color: rgba(255, 255, 255, 1);\n background-color: var(--field--background-color);\n}\n\n.nPGhTEEzsoU- * {\n box-sizing: border-box;\n}\n\n.nPGhTEEzsoU-:focus-within {\n position: relative;\n z-index: var(--field--base-elevation);\n box-shadow: 0px 0px calc(16px / 4) calc(16px / 8)\n rgb(231, 213, 87);\n box-shadow: var(--shadow-focus);\n}\n\n.YhserUiOeFE-:not(:focus-within) input {\n color: var(--field--background-color);\n -webkit-text-fill-color: var(--field--background-color);\n}\n\n.YhserUiOeFE-:focus-within,\n.UIZq8hTmJVU- {\n --field--placeholder-color: var(--color-text--secondary);\n --field--placeholder-offset: var(--space-smallest);\n --field--placeholder-transform: 0;\n --field--padding-top: calc(var(--space-base) + var(--space-smaller));\n --field--padding-bottom: var(--space-small);\n}\n\n.YhserUiOeFE-.Ku8sWS0mLew-:focus-within,\n.UIZq8hTmJVU-.Ku8sWS0mLew- {\n --field--padding-top: calc(var(--space-large) + var(--space-smaller));\n}\n\n.nPGhTEEzsoU-.mgPacJ6Z71Y- {\n --field--placeholder-offset: 0;\n --field--placeholder-transform: 0;\n height: auto;\n min-height: auto;\n}\n\n.gJ-15M615eY-,\n.gJ-15M615eY-:focus-within {\n --field--border-color: var(--color-critical);\n position: relative;\n}\n\n._1rsTLm5GwcM- {\n --field--placeholder-color: var(--color-disabled);\n --field--value-color: var(--color-disabled);\n --field--background-color: var(--color-surface--background);\n --field--border-color: var(--color-disabled--secondary);\n}\n\n/* override iOS default styling for disabled input */\n\n._1rsTLm5GwcM- :disabled {\n -webkit-text-fill-color: var(--field--value-color);\n opacity: 1;\n}\n\n.o8D-H-lKfDk- {\n --field--padding-left: calc(var(--space-base) - var(--space-smaller));\n --field--padding-right: calc(var(--space-base) - var(--space-smaller));\n --field--padding-top: var(--space-small);\n --field--padding-bottom: var(--space-small);\n --field--height: calc(var(--space-larger) + var(--space-smaller));\n}\n\n.Ku8sWS0mLew- {\n --field--padding-left: var(--space-large);\n --field--padding-right: var(--space-large);\n --field--height: calc(var(--space-extravagant));\n}\n\n._5Hu2F3cBvng- {\n display: inline-block;\n width: auto;\n}\n\n.s1WLQs6ffD8- {\n --field--textAlign: center;\n}\n\n.a2r4QheWYIA- {\n --field--textAlign: right;\n}\n\n/**\n * The custom property --formField-maxLength is getting defined inside the\n * component.\n */\n\n.KdAnXK1gClo- {\n width: calc(\n (16px * var(--formField-maxLength)) + var(--field--padding-left) +\n var(--field--padding-right)\n );\n width: calc(\n (var(--base-unit) * var(--formField-maxLength)) + var(--field--padding-left) +\n var(--field--padding-right)\n );\n}\n\n/**\n * Input Wrapper\n **/\n\n.iQFhpFYnz-8- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex: 1;\n flex: 1;\n position: relative;\n /* Ensure input stays with the rest of the element stack */\n z-index: 0;\n z-index: var(--elevation-default);\n}\n\n.Yo2Wi9dpa-Y- {\n position: relative;\n -ms-flex: 1;\n flex: 1;\n}\n\n/**\n * Input\n **/\n\n.LSHPV7PwOTg- {\n position: relative;\n z-index: var(--field--base-elevation);\n width: 100%;\n height: 100%;\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 border: none;\n border-radius: 0;\n color: inherit;\n font-family: inherit;\n font-size: inherit;\n line-height: var(--field--value-lineHeight);\n text-align: var(--field--textAlign);\n background: transparent;\n -webkit-appearance: none;\n appearance: none;\n}\n\n.LSHPV7PwOTg-::-webkit-calendar-picker-indicator {\n display: none;\n}\n\n.LSHPV7PwOTg-:focus {\n outline: none;\n}\n\n.mgPacJ6Z71Y- .LSHPV7PwOTg- {\n resize: vertical;\n}\n\n.i31GQXcMz54- .LSHPV7PwOTg- {\n z-index: var(--field--label-elevation);\n}\n\n.LSHPV7PwOTg-:-webkit-autofill,\n.LSHPV7PwOTg-:-webkit-autofill:hover,\n.LSHPV7PwOTg-:-webkit-autofill:focus,\n.LSHPV7PwOTg-:-webkit-autofill:active {\n -webkit-box-shadow: 0 0 0 30px rgba(255, 255, 255, 1) inset !important;\n -webkit-box-shadow: 0 0 0 30px var(--color-surface) inset !important;\n}\n\n/**\n * Label\n **/\n\n._3xREbTN5pPg- {\n position: absolute;\n top: var(--field--placeholder-offset);\n z-index: var(--field--label-elevation);\n width: 100%;\n padding-left: var(--field--padding-left);\n padding-right: var(--field--padding-right);\n overflow: hidden;\n color: var(--field--placeholder-color);\n line-height: var(--field--value-lineHeight);\n text-align: var(--field--textAlign);\n text-overflow: ellipsis;\n white-space: nowrap;\n pointer-events: none;\n -webkit-transform: translateY(var(--field--placeholder-transform));\n transform: translateY(var(--field--placeholder-transform));\n transition: all 100ms;\n transition: all var(--timing-quick);\n}\n\n.mgPacJ6Z71Y- ._3xREbTN5pPg- {\n /* Changes the width so that the scrollbar on the textarea doesn't get cut off */\n width: calc(100% - var(--field--padding-right));\n padding-top: var(--field--padding-top);\n /* Remove padding on right to make use of the entire width */\n padding-right: 0;\n -webkit-transform: translateY(--field--placeholder-transform);\n transform: translateY(--field--placeholder-transform);\n}\n\n.UIZq8hTmJVU- ._3xREbTN5pPg-,\n.YhserUiOeFE-:focus-within ._3xREbTN5pPg- {\n font-size: calc((16px * 1) * 0.75);\n font-size: calc(calc(16px * 1) * 0.75);\n font-size: var(--typography--fontSize-small);\n}\n\n.mgPacJ6Z71Y-.UIZq8hTmJVU- ._3xREbTN5pPg- {\n padding-top: calc(16px / 8);\n padding-top: var(--space-smallest);\n background-color: var(--field--background-color);\n}\n\n.o8D-H-lKfDk-.UIZq8hTmJVU- ._3xREbTN5pPg-,\n.YhserUiOeFE-.o8D-H-lKfDk-.UIZq8hTmJVU-:focus-within ._3xREbTN5pPg- {\n display: none;\n}\n\n/**This is valid cascading order **/\n\n/* stylelint-disable-next-line no-descending-specificity */\n\n.Ku8sWS0mLew-.UIZq8hTmJVU- ._3xREbTN5pPg-,\n.YhserUiOeFE-.Ku8sWS0mLew-.UIZq8hTmJVU-:focus-within ._3xREbTN5pPg- {\n padding-top: calc(16px / 2);\n padding-top: var(--space-small);\n}\n\n/**\n * Postfix\n **/\n\n.VtnAk1HYMMk- {\n position: absolute;\n top: 50%;\n right: calc(16px * 1);\n right: var(--space-base);\n z-index: var(--field--postfix-elevation);\n -webkit-transform: translateY(-50%);\n transform: translateY(-50%);\n}\n\n/**\n * Affix\n **/\n\n.uPLklxvtfJw- {\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n margin: 0 calc(var(--field--padding-left) * -1) 0 0;\n padding: 0 var(--field--padding-right) 0 var(--field--padding-left);\n}\n\n@supports (aspect-ratio: 1/1) {\n .uPLklxvtfJw- {\n /*\n * disabling property-no-unknown here as this is a real property\n * that stylelint just doesn't know about. We may be able to remove\n * this when we update our stylelint to not care about IE11.\n */\n /* stylelint-disable-next-line property-no-unknown */\n aspect-ratio: 1/1;\n padding: 0;\n }\n}\n\n.uPLklxvtfJw-.pYqqDvv57JE- {\n margin: 0 0 0 calc(var(--field--padding-right) * -1);\n}\n\n.uPLklxvtfJw-.eI44oQpuVlk- {\n position: relative;\n z-index: var(--field--postfix-action-elevation);\n}\n\n.jO8P2iSHilM- {\n display: -ms-flexbox;\n display: flex;\n margin: 0 calc((var(--field--padding-left) - calc(16px / 8)) * -1) 0 0;\n margin: 0 calc((var(--field--padding-left) - var(--space-smallest)) * -1) 0 0;\n padding: 0 0 0 var(--field--padding-left);\n line-height: var(--field--value-lineHeight);\n -ms-flex-align: center;\n align-items: center;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n}\n\n.jO8P2iSHilM-.pYqqDvv57JE- {\n margin: 0 0 0 calc((var(--field--padding-left) - calc(16px / 8)) * -1);\n margin: 0 0 0 calc((var(--field--padding-left) - var(--space-smallest)) * -1);\n padding: 0 var(--field--padding-left) 0 0;\n}\n\n.UIZq8hTmJVU-:not(.o8D-H-lKfDk-) .jO8P2iSHilM- {\n padding-top: var(--field--padding-top);\n padding-bottom: var(--field--padding-bottom);\n}\n\n._2GfgzNnLOSI- {\n margin-top: calc(16px / 4);\n margin-top: var(--space-smaller);\n}\n";
21
+ var styles = {"container":"geR7qBhrMfk-","wrapper":"nPGhTEEzsoU-","timeInputLabel":"YhserUiOeFE-","miniLabel":"UIZq8hTmJVU-","large":"Ku8sWS0mLew-","textarea":"mgPacJ6Z71Y-","invalid":"gJ-15M615eY-","disabled":"_1rsTLm5GwcM-","small":"o8D-H-lKfDk-","inline":"_5Hu2F3cBvng-","center":"s1WLQs6ffD8-","right":"a2r4QheWYIA-","maxLength":"KdAnXK1gClo-","inputWrapper":"iQFhpFYnz-8-","childrenWrapper":"Yo2Wi9dpa-Y-","input":"LSHPV7PwOTg-","select":"i31GQXcMz54-","label":"_3xREbTN5pPg-","postfix":"VtnAk1HYMMk-","affixIcon":"uPLklxvtfJw-","suffix":"pYqqDvv57JE-","hasAction":"eI44oQpuVlk-","affixLabel":"jO8P2iSHilM-","description":"_2GfgzNnLOSI-"};
22
22
  styleInject_es.styleInject(css_248z);
23
23
 
24
24
  function AffixLabel({ label, variation = "prefix", labelRef, }) {
@@ -57,7 +57,6 @@ function FormFieldWrapper({ align, description, descriptionIdentifier, placehold
57
57
  const wrapperClasses = classnames__default["default"](styles.wrapper, size && styles[size], align && styles[align], {
58
58
  [styles.miniLabel]: (placeholder && value !== "") ||
59
59
  (placeholder && type === "select") ||
60
- (placeholder && type === "time") ||
61
60
  // Naively assume that if the the type is tel, it is the InputPhoneNumber
62
61
  (placeholder && type === "tel"),
63
62
  [styles.textarea]: type === "textarea",
@@ -65,6 +64,7 @@ function FormFieldWrapper({ align, description, descriptionIdentifier, placehold
65
64
  [styles.invalid]: invalid !== null && invalid !== void 0 ? invalid : error,
66
65
  [styles.disabled]: disabled,
67
66
  [styles.maxLength]: maxLength,
67
+ [styles.timeInputLabel]: placeholder && type === "time" && placeholder && value === "",
68
68
  });
69
69
  const containerClasses = classnames__default["default"](styles.container, {
70
70
  [styles.inline]: inline,
@@ -82,7 +82,7 @@ function FormFieldWrapper({ align, description, descriptionIdentifier, placehold
82
82
  setLabelStyle(getAffixPaddding);
83
83
  }, [value]);
84
84
  return (React__default["default"].createElement("div", { className: containerClasses },
85
- React__default["default"].createElement("div", { className: wrapperClasses, style: wrapperInlineStyle },
85
+ React__default["default"].createElement("div", { className: wrapperClasses, style: wrapperInlineStyle, "data-testid": "Form-Field-Wrapper" },
86
86
  (prefix === null || prefix === void 0 ? void 0 : prefix.icon) && React__default["default"].createElement(AffixIcon, Object.assign({}, prefix, { size: size })),
87
87
  React__default["default"].createElement("div", { className: styles.inputWrapper },
88
88
  placeholder && (React__default["default"].createElement("label", { className: styles.label, htmlFor: identifier, style: (prefixRef === null || prefixRef === void 0 ? void 0 : prefixRef.current) || (suffixRef === null || suffixRef === void 0 ? void 0 : suffixRef.current)
@@ -126,7 +126,7 @@ function FormFieldPostFix({ variation }) {
126
126
  /*eslint max-statements: ["error", 13]*/
127
127
  function FormField(props) {
128
128
  var _a, _b;
129
- const { actionsRef, autocomplete = true, children, defaultValue, description, disabled, inputRef, inline, keyboard, max, maxLength, min, name, readonly, rows, loading, type = "text", validations, value, onChange, onEnter, onFocus, onBlur, onValidation, } = props;
129
+ const { actionsRef, autocomplete = true, children, defaultValue, description, disabled, inputRef, inline, keyboard, max, maxLength, min, name, readonly, rows, loading, type = "text", validations, value, onChange, onEnter, onFocus, onBlur, onValidation, onClick, } = props;
130
130
  const { control, formState: { errors }, setValue, watch, } = reactHookForm.useFormContext() != undefined
131
131
  ? reactHookForm.useFormContext()
132
132
  : // If there isn't a Form Context being provided, get a form for this field.
@@ -162,13 +162,13 @@ function FormField(props) {
162
162
  switch (type) {
163
163
  case "select":
164
164
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
165
- React__default["default"].createElement("select", Object.assign({}, fieldProps), children),
165
+ React__default["default"].createElement("select", Object.assign({}, fieldProps, { onClick: onClick }), children),
166
166
  React__default["default"].createElement(FormFieldPostFix, { variation: "select" })));
167
167
  case "textarea":
168
- return (React__default["default"].createElement("textarea", Object.assign({}, textFieldProps, { rows: rows, ref: inputRef })));
168
+ return (React__default["default"].createElement("textarea", Object.assign({}, textFieldProps, { rows: rows, ref: inputRef, onClick: onClick })));
169
169
  default:
170
170
  return (React__default["default"].createElement(React__default["default"].Fragment, null,
171
- React__default["default"].createElement("input", Object.assign({}, textFieldProps, { autoComplete: setAutocomplete(autocomplete), type: type, maxLength: maxLength, max: max, min: min, ref: inputRef })),
171
+ React__default["default"].createElement("input", Object.assign({}, textFieldProps, { autoComplete: setAutocomplete(autocomplete), type: type, maxLength: maxLength, max: max, min: min, ref: inputRef, onClick: onClick })),
172
172
  loading && React__default["default"].createElement(FormFieldPostFix, { variation: "spinner" }),
173
173
  children));
174
174
  }
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var omit = require('lodash/omit');
6
6
  var React = require('react');
7
- var FormField = require('../FormField-3a4f196c.js');
7
+ var FormField = require('../FormField-61709fa0.js');
8
8
  var DatePicker = require('../DatePicker-49213434.js');
9
9
  require('../tslib.es6-5b8768b7.js');
10
10
  require('uuid');
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var FormField = require('../FormField-3a4f196c.js');
6
+ var FormField = require('../FormField-61709fa0.js');
7
7
  require('../tslib.es6-5b8768b7.js');
8
8
  require('uuid');
9
9
  require('react-hook-form');
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var InputNumber = require('../InputNumber-50eb0958.js');
5
+ var InputNumber = require('../InputNumber-e4e77cf0.js');
6
6
  require('react');
7
- require('../FormField-3a4f196c.js');
7
+ require('../FormField-61709fa0.js');
8
8
  require('../tslib.es6-5b8768b7.js');
9
9
  require('uuid');
10
10
  require('react-hook-form');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FormField = require('./FormField-3a4f196c.js');
4
+ var FormField = require('./FormField-61709fa0.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var React = require('react');
6
- var FormField = require('../FormField-3a4f196c.js');
6
+ var FormField = require('../FormField-61709fa0.js');
7
7
  require('../tslib.es6-5b8768b7.js');
8
8
  require('uuid');
9
9
  require('react-hook-form');
@@ -6,7 +6,7 @@ var tslib_es6 = require('../tslib.es6-5b8768b7.js');
6
6
  var React = require('react');
7
7
  var reactHookForm = require('react-hook-form');
8
8
  var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
9
- var FormField = require('../FormField-3a4f196c.js');
9
+ var FormField = require('../FormField-61709fa0.js');
10
10
  require('uuid');
11
11
  require('classnames');
12
12
  require('../Button-db6114a6.js');
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var InputText = require('../InputText-3ca5c1c8.js');
5
+ var InputText = require('../InputText-07e4594b.js');
6
6
  require('react');
7
- require('../FormField-3a4f196c.js');
7
+ require('../FormField-61709fa0.js');
8
8
  require('../tslib.es6-5b8768b7.js');
9
9
  require('uuid');
10
10
  require('react-hook-form');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FormField = require('./FormField-3a4f196c.js');
4
+ var FormField = require('./FormField-61709fa0.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -6,7 +6,7 @@ var tslib_es6 = require('../tslib.es6-5b8768b7.js');
6
6
  var React = require('react');
7
7
  var debounce = require('lodash/debounce');
8
8
  var temporal = require('@std-proposal/temporal');
9
- var FormField = require('../FormField-3a4f196c.js');
9
+ var FormField = require('../FormField-61709fa0.js');
10
10
  require('uuid');
11
11
  require('react-hook-form');
12
12
  require('../style-inject.es-9d2f5f4e.js');
@@ -791,7 +791,7 @@ function InputTime(_a) {
791
791
  onChange && onChange(htmlTimeToCivilTime(newValue));
792
792
  };
793
793
  if (supportsTime) {
794
- const fieldProps = Object.assign(Object.assign(Object.assign({ onChange: handleChange }, (defaultValue && { defaultValue: civilTimeToHTMLTime(defaultValue) })), (!defaultValue && { value: civilTimeToHTMLTime(value) })), params);
794
+ const fieldProps = Object.assign(Object.assign(Object.assign({ onChange: handleChange, onClick: event => event.currentTarget.showPicker() }, (defaultValue && { defaultValue: civilTimeToHTMLTime(defaultValue) })), (!defaultValue && { value: civilTimeToHTMLTime(value) })), params);
795
795
  return React__default["default"].createElement(FormField.FormField, Object.assign({ type: "time" }, fieldProps));
796
796
  }
797
797
  else {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var React = require('react');
4
- var FormField = require('./FormField-3a4f196c.js');
4
+ var FormField = require('./FormField-61709fa0.js');
5
5
 
6
6
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
7
7
 
@@ -9,11 +9,11 @@ var RadioGroup = require('../RadioGroup-9bdd8a59.js');
9
9
  var Text = require('../Text-54334431.js');
10
10
  require('classnames');
11
11
  require('../Typography-83915c54.js');
12
- var Option = require('../Option-0abeda54.js');
13
- var InputNumber = require('../InputNumber-50eb0958.js');
12
+ var Option = require('../Option-381be6f7.js');
13
+ var InputNumber = require('../InputNumber-e4e77cf0.js');
14
14
  var InputGroup = require('../InputGroup-3fdde16b.js');
15
15
  var Content = require('../Content-2ca1ffe1.js');
16
- require('../FormField-3a4f196c.js');
16
+ require('../FormField-61709fa0.js');
17
17
  require('../tslib.es6-5b8768b7.js');
18
18
  require('react-hook-form');
19
19
  require('../Button-db6114a6.js');
@@ -2,9 +2,9 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var Option = require('../Option-0abeda54.js');
5
+ var Option = require('../Option-381be6f7.js');
6
6
  require('react');
7
- require('../FormField-3a4f196c.js');
7
+ require('../FormField-61709fa0.js');
8
8
  require('../tslib.es6-5b8768b7.js');
9
9
  require('uuid');
10
10
  require('react-hook-form');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jobber/components",
3
- "version": "4.62.0",
3
+ "version": "4.62.1-JOB-83556-.7+808eafc6",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -20,7 +20,7 @@
20
20
  ],
21
21
  "dependencies": {
22
22
  "@jobber/design": "^0.47.2",
23
- "@jobber/formatters": "*",
23
+ "@jobber/formatters": "^0.2.2",
24
24
  "@jobber/hooks": "^2.7.2",
25
25
  "@popperjs/core": "^2.0.6",
26
26
  "@std-proposal/temporal": "0.0.1",
@@ -83,5 +83,5 @@
83
83
  "> 1%",
84
84
  "IE 10"
85
85
  ],
86
- "gitHead": "fc326c01fb124414c9a84198655d88476c40e7ae"
86
+ "gitHead": "808eafc66b64cfe3559680cb09d271f069e4e93f"
87
87
  }