@digital-ai/dot-components 2.8.1 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/CHANGE_LOG.md +49 -8
  2. package/index.esm.js +85 -42
  3. package/index.umd.js +114 -65
  4. package/lib/components/accordion/Accordion.stories.d.ts +5 -5
  5. package/lib/components/auto-complete/AutoComplete.d.ts +1 -16
  6. package/lib/components/auto-complete/AutoComplete.stories.d.ts +2 -1
  7. package/lib/components/auto-complete/Autocomplete.stories.data.d.ts +2 -1
  8. package/lib/components/auto-complete/index.d.ts +1 -0
  9. package/lib/components/auto-complete/utils/helpers.d.ts +1 -1
  10. package/lib/components/auto-complete/utils/interface.d.ts +17 -0
  11. package/lib/components/avatar/Avatar.d.ts +3 -1
  12. package/lib/components/avatar/Avatar.stories.d.ts +6 -5
  13. package/lib/components/badge/Badge.stories.d.ts +5 -5
  14. package/lib/components/checkbox/Checkbox.stories.d.ts +6 -6
  15. package/lib/components/checkbox/CheckboxGroup.stories.d.ts +3 -3
  16. package/lib/components/chip/Chip.stories.d.ts +5 -5
  17. package/lib/components/dynamic-form/models.d.ts +1 -2
  18. package/lib/components/dynamic-form/sample.spec.data.d.ts +22 -0
  19. package/lib/components/dynamic-form/utils/formHelpers.d.ts +1 -1
  20. package/lib/components/file-upload/FileUpload.stories.d.ts +5 -5
  21. package/lib/components/inline-edit/InlineEdit.stories.d.ts +4 -5
  22. package/lib/components/linear-progress/LinearProgress.stories.d.ts +2 -2
  23. package/lib/components/list/List.stories.d.ts +3 -3
  24. package/lib/components/progress/Progress.stories.d.ts +2 -2
  25. package/lib/components/progress-button/ProgressButton.d.ts +1 -1
  26. package/lib/components/progress-button/ProgressButton.stories.d.ts +1 -1
  27. package/lib/components/radio/RadioGroup.stories.d.ts +2 -2
  28. package/lib/components/snackbar/Snackbar.stories.d.ts +3 -3
  29. package/lib/components/split-button/SplitButton.stories.d.ts +6 -6
  30. package/lib/components/stepper/Stepper.d.ts +3 -1
  31. package/lib/components/stepper/Stepper.stories.d.ts +8 -8
  32. package/lib/components/stepper/Stepper.stories.data.d.ts +6 -0
  33. package/lib/components/switch/Switch.stories.d.ts +9 -9
  34. package/lib/components/truncate-with-tooltip/TruncateWithTooltip.stories.d.ts +5 -5
  35. package/lib/components/typography/Typography.stories.d.ts +4 -4
  36. package/package.json +1 -1
  37. package/lib/components/dynamic-form/sample.d.ts +0 -2
package/CHANGE_LOG.md CHANGED
@@ -1,5 +1,46 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.9.0](https://www.npmjs.com/package/@digital-ai/dot-components) (06/07/2023)
4
+
5
+ [Full Changelog](https://digital-ai.github.io/dot-components/?path=/story/introduction--page/digital-ai/dot-components/compare/2.8.2...2.9.0)
6
+
7
+ **Features:**
8
+
9
+ - S-90959: `DotAvatar` support numbers [\#1515](https://github.com/digital-ai/dot-components/pull/1515) ([CWSites](https://github.com/CWSites))
10
+
11
+ **Fixed bugs:**
12
+
13
+ - S-90959: Update breadcrumb separator alignment [\#1517](https://github.com/digital-ai/dot-components/pull/1517) ([CWSites](https://github.com/CWSites))
14
+ - D-25282: parse defaultValue according to multiple true/false [\#1510](https://github.com/digital-ai/dot-components/pull/1510) ([CWSites](https://github.com/CWSites))
15
+ - D-25283: AutoComplete options should default to an empty array [\#1509](https://github.com/digital-ai/dot-components/pull/1509) ([CWSites](https://github.com/CWSites))
16
+
17
+ **Misc:**
18
+
19
+ - S-91984: add default ariaLabel to DotIconButton for a11y [\#1514](https://github.com/digital-ai/dot-components/pull/1514) ([CWSites](https://github.com/CWSites))
20
+ - Refactor Autocomplete Popper to be separate file [\#1513](https://github.com/digital-ai/dot-components/pull/1513) ([CWSites](https://github.com/CWSites))
21
+
22
+ ## [2.8.2](https://www.npmjs.com/package/@digital-ai/dot-components) (05/26/2023)
23
+
24
+ [Full Changelog](https://digital-ai.github.io/dot-components/?path=/story/introduction--page/digital-ai/dot-components/compare/1.21.11...2.8.2)
25
+
26
+ **Fixed bugs:**
27
+
28
+ - S-91947: DotStepper step onClick validation [\#1503](https://github.com/digital-ai/dot-components/pull/1503) ([ryangamble](https://github.com/ryangamble))
29
+ - S-92200: Dynamic form autocomplete needs to handle free-form input [\#1490](https://github.com/digital-ai/dot-components/pull/1490) ([jmcnally](https://github.com/jmcnally))
30
+
31
+ **Misc:**
32
+
33
+ - S-91987: update drawer to have correct aria attributes [\#1506](https://github.com/digital-ai/dot-components/pull/1506) ([CWSites](https://github.com/CWSites))
34
+ - S-91988: components missing focus visibility indicator [\#1504](https://github.com/digital-ai/dot-components/pull/1504) ([CWSites](https://github.com/CWSites))
35
+
36
+ ## [1.21.11](https://www.npmjs.com/package/@digital-ai/dot-components) (05/25/2023)
37
+
38
+ [Full Changelog](https://digital-ai.github.io/dot-components/?path=/story/introduction--page/digital-ai/dot-components/compare/2.8.1...1.21.11)
39
+
40
+ **Features:**
41
+
42
+ - S-92577 `DotAutoComplete`: expose `inputValue` prop [\#1502](https://github.com/digital-ai/dot-components/pull/1502) ([angel-git](https://github.com/angel-git))
43
+
3
44
  ## [2.8.1](https://www.npmjs.com/package/@digital-ai/dot-components) (05/17/2023)
4
45
 
5
46
  [Full Changelog](https://digital-ai.github.io/dot-components/?path=/story/introduction--page/digital-ai/dot-components/compare/2.8.0...2.8.1)
@@ -118,7 +159,6 @@
118
159
  **Features:**
119
160
 
120
161
  - S-90954: `TimePicker` component [\#1432](https://github.com/digital-ai/dot-components/pull/1432) ([dmiletic85](https://github.com/dmiletic85))
121
- - \[Freestyle Week\] Utilize `dot-icons` package [\#1393](https://github.com/digital-ai/dot-components/pull/1393) ([CWSites](https://github.com/CWSites))
122
162
  - S-87859: Stepper component [\#1392](https://github.com/digital-ai/dot-components/pull/1392) ([nikolinadapic](https://github.com/nikolinadapic))
123
163
 
124
164
  ## [2.5.5](https://www.npmjs.com/package/@digital-ai/dot-components) (03/31/2023)
@@ -212,6 +252,10 @@
212
252
 
213
253
  [Full Changelog](https://digital-ai.github.io/dot-components/?path=/story/introduction--page/digital-ai/dot-components/compare/2.3.2...2.4.0)
214
254
 
255
+ **Features:**
256
+
257
+ - \[Freestyle Week\] Utilize `dot-icons` package [\#1393](https://github.com/digital-ai/dot-components/pull/1393) ([CWSites](https://github.com/CWSites))
258
+
215
259
  **Fixed bugs:**
216
260
 
217
261
  - \#1390: Addressing some SQ review items-Issue\#1390 [\#1391](https://github.com/digital-ai/dot-components/pull/1391) ([jmcnally](https://github.com/jmcnally))
@@ -445,10 +489,6 @@
445
489
 
446
490
  - D-22241: `DotFileListItem`: fix focus states and expose `onKeyPress` [\#1254](https://github.com/digital-ai/dot-components/pull/1254) ([dmiletic85](https://github.com/dmiletic85))
447
491
 
448
- **Misc:**
449
-
450
- - S-86694: Extract agility theme [\#1242](https://github.com/digital-ai/dot-components/pull/1242) ([CWSites](https://github.com/CWSites))
451
-
452
492
  ## [2.0.0-rc.1](https://www.npmjs.com/package/@digital-ai/dot-components) (08/31/2022)
453
493
 
454
494
  [Full Changelog](https://digital-ai.github.io/dot-components/?path=/story/introduction--page/digital-ai/dot-components/compare/1.21.1...2.0.0-rc.1)
@@ -462,6 +502,7 @@
462
502
 
463
503
  - Release Candidate Workflow [\#1251](https://github.com/digital-ai/dot-components/pull/1251) ([CWSites](https://github.com/CWSites))
464
504
  - S-85001: add support for react 18 [\#1244](https://github.com/digital-ai/dot-components/pull/1244) ([CWSites](https://github.com/CWSites))
505
+ - S-86694: Extract agility theme [\#1242](https://github.com/digital-ai/dot-components/pull/1242) ([CWSites](https://github.com/CWSites))
465
506
 
466
507
  ## [1.21.1](https://www.npmjs.com/package/@digital-ai/dot-components) (08/31/2022)
467
508
 
@@ -910,6 +951,7 @@
910
951
  **Fixed bugs:**
911
952
 
912
953
  - D-19337: `List`: Circular dependency [\#897](https://github.com/digital-ai/dot-components/pull/897) ([dmiletic85](https://github.com/dmiletic85))
954
+ - D-19330: `AppToolbar` shouldn't have grey dividers [\#891](https://github.com/digital-ai/dot-components/pull/891) ([dmiletic85](https://github.com/dmiletic85))
913
955
  - D-19200: `List` Nested list drawer is not rendering correctly [\#869](https://github.com/digital-ai/dot-components/pull/869) ([dmiletic85](https://github.com/dmiletic85))
914
956
 
915
957
  ## [1.5.3](https://www.npmjs.com/package/@digital-ai/dot-components) (12/17/2021)
@@ -918,7 +960,6 @@
918
960
 
919
961
  **Fixed bugs:**
920
962
 
921
- - D-19330: `AppToolbar` shouldn't have grey dividers [\#891](https://github.com/digital-ai/dot-components/pull/891) ([dmiletic85](https://github.com/dmiletic85))
922
963
  - D-19321: `Breadcrumbs` - Circular dependency on `useBreadcrumbsObserver` [\#882](https://github.com/digital-ai/dot-components/pull/882) ([dmiletic85](https://github.com/dmiletic85))
923
964
  - S-79458: `Sidebar` & `List` updates [\#872](https://github.com/digital-ai/dot-components/pull/872) ([CWSites](https://github.com/CWSites))
924
965
 
@@ -1014,6 +1055,7 @@
1014
1055
  **Features:**
1015
1056
 
1016
1057
  - S-80473: Expose onFocus and onBlur callbacks for DotInputText and DotInputSelect components [\#832](https://github.com/digital-ai/dot-components/pull/832) ([selsemore](https://github.com/selsemore))
1058
+ - S-80268: `DotDynamicForm` improvements [\#821](https://github.com/digital-ai/dot-components/pull/821) ([dmiletic85](https://github.com/dmiletic85))
1017
1059
 
1018
1060
  **Fixed bugs:**
1019
1061
 
@@ -1027,7 +1069,6 @@
1027
1069
  **Features:**
1028
1070
 
1029
1071
  - S-80369: Create `ProgressButton` component [\#822](https://github.com/digital-ai/dot-components/pull/822) ([dmiletic85](https://github.com/dmiletic85))
1030
- - S-80268: `DotDynamicForm` improvements [\#821](https://github.com/digital-ai/dot-components/pull/821) ([dmiletic85](https://github.com/dmiletic85))
1031
1072
  - S-79696: change size of collapse icon button, add tooltip [\#819](https://github.com/digital-ai/dot-components/pull/819) ([CWSites](https://github.com/CWSites))
1032
1073
  - S-80264: Agility wrapper sandbox documentation [\#810](https://github.com/digital-ai/dot-components/pull/810) ([CWSites](https://github.com/CWSites))
1033
1074
  - S-79569: `DotTable` - ability to add classes to rows & cells [\#799](https://github.com/digital-ai/dot-components/pull/799) ([monapatel91](https://github.com/monapatel91))
@@ -1063,7 +1104,6 @@
1063
1104
  - S-80109: Expose built-in `leaveDelay`, `onClose`, `open` props on `DotTooltip` component [\#786](https://github.com/digital-ai/dot-components/pull/786) ([dmiletic85](https://github.com/dmiletic85))
1064
1105
  - S-76907: update ButtonToggle styles, update unit tests and add e2e tests [\#785](https://github.com/digital-ai/dot-components/pull/785) ([CWSites](https://github.com/CWSites))
1065
1106
  - S-80048: product wrapper demo [\#782](https://github.com/digital-ai/dot-components/pull/782) ([CWSites](https://github.com/CWSites))
1066
- - Patch release [\#780](https://github.com/digital-ai/dot-components/pull/780) ([TheKeithStewart](https://github.com/TheKeithStewart))
1067
1107
 
1068
1108
  ## [1.3.2](https://www.npmjs.com/package/@digital-ai/dot-components) (11/05/2021)
1069
1109
 
@@ -1076,6 +1116,7 @@
1076
1116
 
1077
1117
  **Misc:**
1078
1118
 
1119
+ - Patch release [\#780](https://github.com/digital-ai/dot-components/pull/780) ([TheKeithStewart](https://github.com/TheKeithStewart))
1079
1120
  - S-79985: temporarily remove react-jsonschema-form from library [\#776](https://github.com/digital-ai/dot-components/pull/776) ([TheKeithStewart](https://github.com/TheKeithStewart))
1080
1121
  - Add submitButtonProps prop to DotJsonSchemaForm component [\#775](https://github.com/digital-ai/dot-components/pull/775) ([selsemore](https://github.com/selsemore))
1081
1122
  - S-76893: Webpack 4 - update peer dependencies [\#768](https://github.com/digital-ai/dot-components/pull/768) ([CWSites](https://github.com/CWSites))
package/index.esm.js CHANGED
@@ -1634,11 +1634,22 @@ const AvatarContent = ({
1634
1634
  'data-testid': dataTestId,
1635
1635
  iconId,
1636
1636
  imageSrc,
1637
+ number,
1637
1638
  size,
1638
1639
  text,
1639
1640
  type
1640
1641
  }) => {
1642
+ const parsedNumber = () => {
1643
+ if (!isNumber(number)) return;
1644
+ const numberArray = number.toString().split('');
1645
+ if (numberArray.length > 1) {
1646
+ return `${numberArray[0]}${numberArray[1]}`;
1647
+ } else {
1648
+ return number;
1649
+ }
1650
+ };
1641
1651
  const parsedText = () => {
1652
+ if (!isString$1(text)) return;
1642
1653
  const textArray = text.split(' ');
1643
1654
  if (textArray.length > 1) {
1644
1655
  const firstInitial = textArray[0].slice(0, 1);
@@ -1661,7 +1672,7 @@ const AvatarContent = ({
1661
1672
  return jsx(DotTypography, Object.assign({
1662
1673
  variant: size === 'small' ? 'caption' : getHeadingFromAvatarSize()
1663
1674
  }, {
1664
- children: parsedText()
1675
+ children: parsedNumber() || parsedText()
1665
1676
  }), void 0);
1666
1677
  }
1667
1678
  return null;
@@ -1677,6 +1688,7 @@ const DotAvatar = ({
1677
1688
  iconId,
1678
1689
  imageSrc,
1679
1690
  onClick,
1691
+ number,
1680
1692
  size: _size = 'medium',
1681
1693
  tabIndex: _tabIndex = 0,
1682
1694
  text: _text = alt,
@@ -1716,6 +1728,7 @@ const DotAvatar = ({
1716
1728
  "data-testid": dataTestId,
1717
1729
  iconId: iconId,
1718
1730
  imageSrc: imageSrc,
1731
+ number: number,
1719
1732
  size: _size,
1720
1733
  text: _text,
1721
1734
  type: _type
@@ -2310,7 +2323,7 @@ const DotIconButton = ({
2310
2323
  title: tooltip
2311
2324
  }, {
2312
2325
  children: jsx(StyledIconButton, Object.assign({
2313
- "aria-label": ariaLabel,
2326
+ "aria-label": ariaLabel || tooltip || `${iconId} icon button`,
2314
2327
  classes: {
2315
2328
  root: rootClasses
2316
2329
  },
@@ -2348,6 +2361,7 @@ const DotDrawerHeader = ({
2348
2361
  role: "heading"
2349
2362
  }, {
2350
2363
  children: [children, variant !== 'permanent' && jsx(DotIconButton, {
2364
+ ariaLabel: "close drawer",
2351
2365
  className: "close-button",
2352
2366
  iconId: "close",
2353
2367
  onClick: onClose
@@ -2379,6 +2393,7 @@ const DotDrawerBody = ({
2379
2393
  role: _ariaRole
2380
2394
  }, {
2381
2395
  children: [children, !headerExists && variant !== 'permanent' && jsx(DotIconButton, {
2396
+ ariaLabel: "close drawer",
2382
2397
  className: "dot-drawer-close-button",
2383
2398
  iconId: "close",
2384
2399
  onClick: onClose
@@ -2415,7 +2430,7 @@ const DotDrawerFooter = ({
2415
2430
  const DotDrawer = ({
2416
2431
  anchor: _anchor = 'right',
2417
2432
  ariaLabel,
2418
- ariaRole: _ariaRole = 'presentation',
2433
+ ariaRole: _ariaRole = 'dialog',
2419
2434
  className,
2420
2435
  children,
2421
2436
  'data-testid': dataTestId,
@@ -2441,6 +2456,7 @@ const DotDrawer = ({
2441
2456
  }
2442
2457
  };
2443
2458
  const rootClasses = useStylesWithRootClass(rootClassName$U, className);
2459
+ const backdropEnabled = _variant === 'temporary' && !(ModalProps === null || ModalProps === void 0 ? void 0 : ModalProps.hideBackdrop);
2444
2460
  const headerExists = !!drawerHeaderProps;
2445
2461
  const bodyTestId = drawerBodyProps ? drawerBodyProps[`data-testid`] : 'drawer-body';
2446
2462
  return jsxs(StyledDrawer, Object.assign({
@@ -2450,6 +2466,7 @@ const DotDrawer = ({
2450
2466
  }),
2451
2467
  anchor: _anchor,
2452
2468
  "aria-label": ariaLabel,
2469
+ "aria-modal": backdropEnabled ? 'true' : 'false',
2453
2470
  classes: {
2454
2471
  root: rootClasses,
2455
2472
  paper: 'dot-drawer-paper'
@@ -3057,6 +3074,7 @@ function SearchInput({
3057
3074
  iconId: "search"
3058
3075
  }, void 0);
3059
3076
  const clearSearchIcon = jsx(DotIconButton, {
3077
+ ariaLabel: "clear search text",
3060
3078
  iconId: "close",
3061
3079
  onClick: handleClear,
3062
3080
  size: "small",
@@ -3126,7 +3144,7 @@ const DotCopyButton = ({
3126
3144
  "data-testid": dataTestId
3127
3145
  }, {
3128
3146
  children: [!showCopiedIcon && jsx(DotIconButton, {
3129
- ariaLabel: _ariaLabel,
3147
+ ariaLabel: _ariaLabel || 'copy to clipboard',
3130
3148
  "data-testid": `${dataTestId}-button`,
3131
3149
  iconId: "duplicate",
3132
3150
  onClick: copy,
@@ -3842,7 +3860,7 @@ const Brand = ({
3842
3860
  }), void 0), jsx(DotTooltip, Object.assign({
3843
3861
  title: "digital.ai"
3844
3862
  }, {
3845
- children: theme.palette.mode === "light" ? jsx(ForwardRef$1, {
3863
+ children: theme.palette.mode === 'light' ? jsx(ForwardRef$1, {
3846
3864
  className: "company-name"
3847
3865
  }, void 0) : jsx(ForwardRef, {
3848
3866
  className: "company-name"
@@ -3948,6 +3966,7 @@ const DotSidebar = ({
3948
3966
  className: "go-back"
3949
3967
  }, {
3950
3968
  children: [jsx(DotIconButton, {
3969
+ ariaLabel: "go back",
3951
3970
  className: "go-back-button",
3952
3971
  "data-testid": "back-button",
3953
3972
  iconId: backItem.iconId || 'back',
@@ -4323,7 +4342,9 @@ const getChipsFromAutocomplete = ({
4323
4342
  isReadOnly: _isReadOnly = false,
4324
4343
  values
4325
4344
  }) => {
4345
+ if (values === undefined) return;
4326
4346
  return values.map((option, index) => {
4347
+ if (!option) return null;
4327
4348
  const hasStringValue = isString$1(option);
4328
4349
  const optionAsString = option;
4329
4350
  const optionAsObject = option;
@@ -4378,7 +4399,7 @@ const DotAutoComplete = ({
4378
4399
  onInputChange,
4379
4400
  onOpen,
4380
4401
  open,
4381
- options,
4402
+ options: _options = [],
4382
4403
  persistentLabel,
4383
4404
  placeholder,
4384
4405
  readOnly: _readOnly = false,
@@ -4390,23 +4411,21 @@ const DotAutoComplete = ({
4390
4411
  warning: _warning = false
4391
4412
  }) => {
4392
4413
  const [showPlaceholder, setShowPlaceholder] = useState(!value && !defaultValue);
4393
- const {
4394
- iconId: actionIconId = 'add',
4395
- text: actionItemText,
4396
- onClick: onActionItemClick,
4397
- preventDuplicateInsertion
4398
- } = actionItem || {};
4399
- const isActionItemDefined = onActionItemClick !== undefined;
4400
- let highlightedOption = null;
4401
4414
  const [isOpened, setIsOpened] = useState(false);
4402
4415
  const [inputText, setInputText] = useState('');
4416
+ // Used for focus management while popper is opened
4417
+ const actionItemRef = useRef();
4418
+ const onActionItemClick = actionItem === null || actionItem === void 0 ? void 0 : actionItem.onClick;
4419
+ const allowActionButtonClick = !_freesolo && onActionItemClick;
4420
+ const isActionItemDefined = onActionItemClick !== undefined;
4421
+ const popperOpen = !_readOnly && (open || isOpened);
4422
+ const preventDuplicateInsertion = actionItem === null || actionItem === void 0 ? void 0 : actionItem.preventDuplicateInsertion;
4403
4423
  const textFieldWarningClassName = !_error && _warning && warningClassName;
4404
4424
  const rootClasses = useStylesWithRootClass(rootClassName$I, _size === 'medium' && inputMediumClassName, className);
4405
- const textFieldRootClasses = useStylesWithRootClass(rootClassName$13, className, _readOnly ? 'read-only' : '', textFieldWarningClassName);
4425
+ const textFieldRootClasses = useStylesWithRootClass(rootClassName$13, _readOnly && 'read-only', textFieldWarningClassName);
4406
4426
  const inputRootClasses = useStylesWithRootClass(inputRootClassName, !_dense && inputMediumClassName);
4427
+ let highlightedOption = null;
4407
4428
  let textFieldInput;
4408
- // Used for focus management while popper is opened
4409
- const actionItemRef = useRef();
4410
4429
  const textFieldRef = element => {
4411
4430
  // We want to use this element in callback function
4412
4431
  textFieldInput = element;
@@ -4430,11 +4449,11 @@ const DotAutoComplete = ({
4430
4449
  setShowPlaceholder(parseAutoCompleteValue(val) === '');
4431
4450
  };
4432
4451
  const sortOptions = () => {
4433
- return _group ? options.sort((a, b) => {
4452
+ return _group ? _options.sort((a, b) => {
4434
4453
  const aGroup = a.group ? a.group : '';
4435
4454
  const bGroup = b.group ? b.group : '';
4436
4455
  return -bGroup.localeCompare(aGroup);
4437
- }) : options;
4456
+ }) : _options;
4438
4457
  };
4439
4458
  const handleBlur = event => {
4440
4459
  event.relatedTarget !== actionItemRef.current && setIsOpened(false);
@@ -4454,16 +4473,15 @@ const DotAutoComplete = ({
4454
4473
  }), void 0);
4455
4474
  // Disable action if customer explicitly enabled duplicate
4456
4475
  // item insertion and input text is found inside the 'options'
4457
- const isActionDisabled = preventDuplicateInsertion && checkIfDuplicateItem(inputText, options);
4476
+ const isActionDisabled = preventDuplicateInsertion && checkIfDuplicateItem(inputText, _options);
4458
4477
  // Display warning icon if disabled
4459
- const actionStartIconId = isActionDisabled ? 'warning-solid' : actionIconId;
4478
+ const actionStartIconId = isActionDisabled ? 'warning-solid' : (actionItem === null || actionItem === void 0 ? void 0 : actionItem.iconId) || 'add';
4460
4479
  const defaultText = inputText ? `Add "${inputText}"` : DEFAULT_ACTION_ITEM_TEXT;
4461
- const nonDisabledText = actionItemText ? actionItemText : defaultText;
4480
+ const nonDisabledText = (actionItem === null || actionItem === void 0 ? void 0 : actionItem.text) || defaultText;
4462
4481
  const itemText = isActionDisabled ? 'Value already exists' : nonDisabledText;
4463
- // If simple text, we need to give it a class so that
4464
- // styling for displaying ellipsis on a long text
4465
- // can be applied. If it is custom node coming from the
4466
- // consumer, then leave it as it is.
4482
+ // If simple text, we need to give it a class so that styling for
4483
+ // displaying ellipsis on a long text can be applied. If it is
4484
+ // custom node coming from the consumer, then leave it as it is.
4467
4485
  const itemTextNode = isString$1(itemText) ? jsx("span", Object.assign({
4468
4486
  className: "dot-action-item-text"
4469
4487
  }, {
@@ -4529,10 +4547,11 @@ const DotAutoComplete = ({
4529
4547
  }) || undefined;
4530
4548
  // Create callback when action item click event handler is defined,
4531
4549
  // free-solo mode is NOT set and 'Enter' key has been pressed
4532
- const handleKeyDown = !_freesolo && onActionItemClick && (event => {
4550
+ const handleKeyDown = allowActionButtonClick && (event => {
4533
4551
  if (event.key === 'Enter') {
4552
+ const isDuplicate = checkIfDuplicateItem(inputText, _options);
4534
4553
  // Do NOT execute callback if duplicate item or have selected an option from the dropdown
4535
- if (preventDuplicateInsertion && checkIfDuplicateItem(inputText, options) || highlightedOption) return;
4554
+ if (preventDuplicateInsertion && isDuplicate || highlightedOption) return;
4536
4555
  onActionButtonClick();
4537
4556
  }
4538
4557
  }) || undefined;
@@ -4543,7 +4562,7 @@ const DotAutoComplete = ({
4543
4562
  values
4544
4563
  });
4545
4564
  const handleTagsRender = () => {
4546
- if (!_multiple) return;
4565
+ if (!_multiple || isString$1(defaultValue)) return;
4547
4566
  return renderTags || handleRenderChips;
4548
4567
  };
4549
4568
  const renderErrorOrWarningIcon = () => {
@@ -4580,7 +4599,7 @@ const DotAutoComplete = ({
4580
4599
  inputRoot: inputRootClasses
4581
4600
  },
4582
4601
  "data-testid": dataTestId,
4583
- defaultValue: defaultValue,
4602
+ defaultValue: _multiple && isString$1(defaultValue) ? [defaultValue] : defaultValue,
4584
4603
  disabled: _disabled,
4585
4604
  filterOptions: filterOptions,
4586
4605
  filterSelectedOptions: _filterSelectedOptions,
@@ -4608,7 +4627,7 @@ const DotAutoComplete = ({
4608
4627
  onKeyDown: handleKeyDown,
4609
4628
  // We want to close the popper each time focus is shifted from the autocomplete
4610
4629
  onOpen: handleOpen,
4611
- open: !_readOnly && (open || isOpened),
4630
+ open: popperOpen,
4612
4631
  options: sortOptions(),
4613
4632
  renderInput: params => {
4614
4633
  // InputBaseComponentProps is used here because that is the base
@@ -4668,7 +4687,7 @@ const DotAutoComplete = ({
4668
4687
  (_a = actionItemRef === null || actionItemRef === void 0 ? void 0 : actionItemRef.current) === null || _a === void 0 ? void 0 : _a.focus();
4669
4688
  }
4670
4689
  },
4671
- placeholder: showPlaceholder ? placeholder : undefined,
4690
+ placeholder: showPlaceholder && placeholder,
4672
4691
  required: _required,
4673
4692
  size: _size,
4674
4693
  variant: "outlined"
@@ -4726,7 +4745,7 @@ const StyledBreadcrumbs = styled(Breadcrumbs).withConfig({
4726
4745
  componentId: "sc-7cg374-1"
4727
4746
  })(["", ""], ({
4728
4747
  theme
4729
- }) => css(["&.", "{margin-bottom:0;.MuiBreadcrumbs-ol{flex-wrap:nowrap;}.MuiBreadcrumbs-li,.separator{color:", ";margin:0;white-space:nowrap;}.separator{font-size:12px;width:20px;height:20px;padding:0;}.MuiBreadcrumbs-separator{margin:0;}.MuiLink-underlineHover{cursor:pointer;}.MuiBreadcrumbs-li:last-child{overflow:hidden;text-overflow:ellipsis;}.breadcrumb{padding:", ";}.current-page{color:", ";cursor:default;}}"], rootClassName$F, theme.palette.grey[300], theme.spacing(0.5, 2), theme.palette.grey[700]));
4748
+ }) => css(["&.", "{margin-bottom:0;.MuiBreadcrumbs-ol{flex-wrap:nowrap;}.MuiBreadcrumbs-li,.separator{color:", ";margin:0;white-space:nowrap;}.separator{font-size:12px;width:20px;height:20px;padding:0;i{line-height:20px;}}.MuiBreadcrumbs-separator{margin:0;}.MuiLink-underlineHover{cursor:pointer;}.MuiBreadcrumbs-li:last-child{overflow:hidden;text-overflow:ellipsis;}.breadcrumb{padding:", ";}.current-page{color:", ";cursor:default;}}"], rootClassName$F, theme.palette.grey[300], theme.spacing(0.5, 2), theme.palette.grey[700]));
4730
4749
 
4731
4750
  const compareWidth = (parentEl, childEl) => {
4732
4751
  return parentEl.getBoundingClientRect().width < childEl.getBoundingClientRect().width;
@@ -5536,6 +5555,7 @@ const DotDialog = ({
5536
5555
  className: "dot-dialog-title"
5537
5556
  }, {
5538
5557
  children: [renderNodeOrTypography(title, 'h2'), closeIconVisible && jsx(DotIconButton, {
5558
+ ariaLabel: "close dialog",
5539
5559
  iconId: "close",
5540
5560
  onClick: handleCancel,
5541
5561
  size: "small"
@@ -6236,6 +6256,7 @@ const DotProgressButton = ({
6236
6256
  isSubmit: _isSubmit = false,
6237
6257
  onClick,
6238
6258
  size: _size = 'medium',
6259
+ startIcon,
6239
6260
  tooltip,
6240
6261
  type: _type = 'primary'
6241
6262
  }) => {
@@ -6253,6 +6274,7 @@ const DotProgressButton = ({
6253
6274
  isSubmit: _isSubmit,
6254
6275
  onClick: onClick,
6255
6276
  size: _size,
6277
+ startIcon: startIcon,
6256
6278
  tooltip: tooltip,
6257
6279
  type: _type
6258
6280
  }, {
@@ -6418,7 +6440,7 @@ const StyledSwitch = styled(Switch).withConfig({
6418
6440
  componentId: "eign2a-0"
6419
6441
  })(["", ""], ({
6420
6442
  theme
6421
- }) => css(["{&.dot-switch{span.Mui-disabled{color:", ";}.MuiSwitch-switchBase:not(.Mui-checked):not(.Mui-disabled){color:", ";}}"], theme.palette.grey[200], theme.palette.background.default));
6443
+ }) => css(["{&.dot-switch{span.Mui-disabled{color:", ";}.MuiSwitch-switchBase:not(.Mui-checked):not(.Mui-disabled){color:", ";&.Mui-focusVisible .MuiTouchRipple-root{color:", ";}}}"], theme.palette.grey[200], theme.palette.background.default, theme.palette.grey[200]));
6422
6444
 
6423
6445
  const DotSwitch = ({
6424
6446
  ariaLabel,
@@ -6578,14 +6600,29 @@ const buildAutocompleteControl = ({
6578
6600
  index
6579
6601
  }) => {
6580
6602
  const props = controlProps;
6603
+ const isFreeSolo = props.freesolo === undefined || props.freesolo;
6581
6604
  const value = getControlValue(controlName, formData) || [];
6582
6605
  const errorMessage = formData[controlName].errorMessage;
6583
6606
  const handleChangeFn = handleChange;
6607
+ const handleFreeSoloChange = event => {
6608
+ var _a;
6609
+ if (event.key !== 'Enter') return;
6610
+ const typedValue = (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.value;
6611
+ const currentValue = value;
6612
+ if (typedValue) {
6613
+ checkIfDuplicateItem(typedValue, currentValue);
6614
+ currentValue.push({
6615
+ title: typedValue
6616
+ });
6617
+ handleChangeFn(controlName);
6618
+ }
6619
+ };
6584
6620
  return jsx(DotAutoComplete, Object.assign({}, props, {
6585
6621
  disabled: disabled,
6586
6622
  error: !!errorMessage,
6587
6623
  helperText: errorMessage || props.helperText,
6588
6624
  onChange: handleChangeFn(controlName),
6625
+ onInputChange: isFreeSolo ? event => handleFreeSoloChange(event) : null,
6589
6626
  value: value
6590
6627
  }), index);
6591
6628
  };
@@ -6798,12 +6835,11 @@ const DotDynamicForm = ({
6798
6835
  const updateFormState = ({
6799
6836
  controlName,
6800
6837
  newValue,
6801
- formConfig,
6802
6838
  validate: _validate = true
6803
6839
  }) => {
6804
6840
  let fieldValidation = {};
6805
6841
  if (_validate && _liveValidation) {
6806
- fieldValidation = getControlValidation(controlName, newValue, formConfig);
6842
+ fieldValidation = getControlValidation(controlName, newValue, config);
6807
6843
  }
6808
6844
  setFormState(prevFormState => Object.assign(Object.assign({}, prevFormState), {
6809
6845
  data: Object.assign(Object.assign({}, prevFormState.data), {
@@ -6838,7 +6874,6 @@ const DotDynamicForm = ({
6838
6874
  const handleAutocompleteChange = controlName => (_event, value) => {
6839
6875
  updateFormState({
6840
6876
  controlName,
6841
- formConfig: config,
6842
6877
  newValue: value
6843
6878
  });
6844
6879
  };
@@ -6846,7 +6881,6 @@ const DotDynamicForm = ({
6846
6881
  const newValue = e.target.checked;
6847
6882
  updateFormState({
6848
6883
  controlName,
6849
- formConfig: config,
6850
6884
  newValue,
6851
6885
  validate: false
6852
6886
  });
@@ -6854,7 +6888,6 @@ const DotDynamicForm = ({
6854
6888
  const handleCheckboxGroupChange = controlName => (e, value) => {
6855
6889
  updateFormState({
6856
6890
  controlName,
6857
- formConfig: config,
6858
6891
  newValue: value
6859
6892
  });
6860
6893
  };
@@ -6873,7 +6906,6 @@ const DotDynamicForm = ({
6873
6906
  const newValue = e.target.value;
6874
6907
  updateFormState({
6875
6908
  controlName,
6876
- formConfig: config,
6877
6909
  newValue
6878
6910
  });
6879
6911
  };
@@ -7753,7 +7785,7 @@ const StyledStepper = styled.div.withConfig({
7753
7785
  componentId: "sc-1qka0yq-0"
7754
7786
  })(["", ""], ({
7755
7787
  theme
7756
- }) => css(["&.", "{display:flex;align-items:flex-start;padding:0;width:100%;&.left{flex-direction:row;.", "{border-left:1px solid ", ";}}&.right{flex-direction:row-reverse;.", "{border-right:1px solid ", ";}}.", "{padding:", ";&.MuiStepper-horizontal{padding:0;display:flex;flex-direction:column;}.MuiStep-root{width:315px;.dot-icon{display:flex;background:", ";border-radius:50%;color:", ";height:28px;width:28px;}.dot-typography{color:", ";}.MuiStepContent-root{border-left-color:", ";margin-bottom:", ";}&.MuiStep-horizontal{padding:", ";.dot-avatar i:before{color:", ";}.dot-avatar,.dot-icon{background:", ";}.dot-typography{color:", ";}.horizontal-step-description{color:", ";}&:hover{cursor:pointer;}&.completed{.dot-avatar i:before{color:", ";}.dot-avatar,.dot-icon{background:", ";}}&.active{background:", ";}&.error{.dot-avatar i:before{color:", ";}.dot-avatar,.dot-icon{background:", ";}}&.in-progress{.dot-avatar i:before{color:", ";}}}&.MuiStep-vertical{&.completed{.dot-typography,.dot-icon{color:", ";}}&.active{.dot-icon{background:", ";color:", ";}.step-label.dot-typography{color:", ";}.dot-typography{color:", ";}}&.error{.dot-typography{color:", ";}.dot-icon{background:", ";border:1px solid ", ";color:", ";}}}&.disabled{.dot-icon{color:", ";}.dot-typography{color:", ";}}&:last-of-type .MuiStepContent-root{border-left-color:transparent;}}}.", "{width:100%;height:calc(100vh - 78px);overflow-y:auto;&.center-content{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;}.step-content-container{padding:", ";}}}"], rootClassName$i, contentClassName, theme.palette.layer.n200, contentClassName, theme.palette.layer.n200, stepListClassName, theme.spacing(3), theme.palette.primary['50'], theme.palette.primary['50'], theme.palette.layer.n300, theme.palette.layer.n300, theme.spacing(1), theme.spacing(1), theme.palette.layer.n300, theme.palette.layer.n100, theme.palette.layer.n500, theme.palette.layer.n400, theme.palette.secondary['500'], theme.palette.secondary['50'], theme.palette.layer['n50'], theme.palette.error['500'], theme.palette.error['50'], theme.palette.primary['400'], theme.palette.layer.n700, theme.palette.primary['400'], theme.palette.layer.n0, theme.palette.primary['500'], theme.palette.layer.n700, theme.palette.error.main, theme.palette.layer.n0, theme.palette.error.main, theme.palette.error.main, theme.palette.primary['50'], theme.palette.layer.n300, contentClassName, theme.spacing(3, 3, 2, 3)));
7788
+ }) => css(["&.", "{display:flex;align-items:flex-start;padding:0;width:100%;&.left{flex-direction:row;.", "{border-left:1px solid ", ";}}&.right{flex-direction:row-reverse;.", "{border-right:1px solid ", ";}}.", "{padding:", ";&.MuiStepper-horizontal{padding:0;display:flex;flex-direction:column;}.MuiStep-root{width:315px;.dot-icon{display:flex;background:", ";border-radius:50%;color:", ";height:28px;width:28px;}.dot-typography{color:", ";}.MuiStepContent-root{border-left-color:", ";}&.MuiStep-horizontal{padding:", ";.dot-avatar i:before{color:", ";}.dot-avatar,.dot-icon{background:", ";}.dot-typography{color:", ";}.horizontal-step-description{color:", ";}&:hover{cursor:pointer;}&.completed{.dot-avatar i:before{color:", ";}.dot-avatar,.dot-icon{background:", ";}}&.active{background:", ";}&.error{.dot-avatar i:before{color:", ";}.dot-avatar,.dot-icon{background:", ";}}&.in-progress{.dot-avatar i:before{color:", ";}}}&.MuiStep-vertical{&.completed{.dot-typography,.dot-icon{color:", ";}}&.active{.dot-icon{background:", ";color:", ";}.step-label.dot-typography{color:", ";}.dot-typography{color:", ";}}&.error{.dot-typography{color:", ";}.dot-icon{background:", ";border:1px solid ", ";color:", ";}}}&.disabled{.dot-icon{color:", ";}.dot-typography{color:", ";}}&:last-of-type .MuiStepContent-root{border-left-color:transparent;}}}.", "{width:100%;height:calc(100vh - 78px);overflow-y:auto;&.center-content{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;}.step-content-container{padding:", ";}}}"], rootClassName$i, contentClassName, theme.palette.layer.n200, contentClassName, theme.palette.layer.n200, stepListClassName, theme.spacing(3), theme.palette.primary['50'], theme.palette.primary['50'], theme.palette.layer.n300, theme.palette.layer.n300, theme.spacing(1), theme.palette.layer.n300, theme.palette.layer.n100, theme.palette.layer.n500, theme.palette.layer.n400, theme.palette.secondary['500'], theme.palette.secondary['50'], theme.palette.layer['n50'], theme.palette.error['500'], theme.palette.error['50'], theme.palette.primary['400'], theme.palette.layer.n700, theme.palette.primary['400'], theme.palette.layer.n0, theme.palette.primary['500'], theme.palette.layer.n700, theme.palette.error.main, theme.palette.layer.n0, theme.palette.error.main, theme.palette.error.main, theme.palette.primary['50'], theme.palette.layer.n300, contentClassName, theme.spacing(3, 3, 2, 3)));
7757
7789
  const StepContentWrapper = styled.div.withConfig({
7758
7790
  displayName: "Stepperstyles__StepContentWrapper",
7759
7791
  componentId: "sc-1qka0yq-1"
@@ -7801,6 +7833,7 @@ const DotStepper = ({
7801
7833
  onCancel,
7802
7834
  onSubmit,
7803
7835
  orientation: _orientation = 'vertical',
7836
+ disableUncompletedStepNav: _disableUncompletedStepNav = false,
7804
7837
  steps,
7805
7838
  stepsPosition: _stepsPosition = 'left',
7806
7839
  submitButtonText: _submitButtonText = 'Complete'
@@ -7876,6 +7909,12 @@ const DotStepper = ({
7876
7909
  };
7877
7910
  const navigateToStep = id => {
7878
7911
  if (id !== currentStep) {
7912
+ if (_disableUncompletedStepNav) {
7913
+ const previousStep = steps.find(step => step.id === id - 1);
7914
+ if (previousStep && !previousStep.completed) {
7915
+ return;
7916
+ }
7917
+ }
7879
7918
  const stepSelected = steps.find(step => step.id === id);
7880
7919
  stepSelected.onClick && stepSelected.onClick();
7881
7920
  setActiveStep(id);
@@ -8430,7 +8469,7 @@ const StyledTableHeaderCell = styled(TableCell).withConfig({
8430
8469
  componentId: "nko9j-0"
8431
8470
  })(["", ""], ({
8432
8471
  theme
8433
- }) => css(["&.", "{&.MuiTableCell-alignCenter > span.MuiTableSortLabel-root{padding-left:26px;}.dot-cell-typography{font-family:", ";}}"], rootClassName$b, theme.typography.h4.fontFamily));
8472
+ }) => css(["&.", "{&.MuiTableCell-alignCenter > span.MuiTableSortLabel-root{padding-left:26px;}> span.MuiTableSortLabel-root.Mui-focusVisible{.dot-cell-typography{color:", ";text-decoration:underline;}}.dot-cell-typography{font-family:", ";}}"], rootClassName$b, theme.palette.primary.main, theme.typography.h4.fontFamily));
8434
8473
 
8435
8474
  /**
8436
8475
  * A wrapper component around the TableCell component from @material-ui. This component should only
@@ -8972,6 +9011,7 @@ const DotTableActions = ({
8972
9011
  ref: wrapperRef
8973
9012
  }, {
8974
9013
  children: [!showMenu && renderTableActions(), (showMenu || actions.length > 2) && jsx(DotIconButton, {
9014
+ ariaLabel: "more options",
8975
9015
  className: "dot-table-action-icon",
8976
9016
  iconId: "options",
8977
9017
  iconSize: "small",
@@ -9134,6 +9174,7 @@ const DotFileListItem = ({
9134
9174
  children: errorText
9135
9175
  }), void 0)]
9136
9176
  }), void 0), jsx(DotIconButton, {
9177
+ ariaLabel: "delete file",
9137
9178
  className: `${rootClassName$5}-end-icon`,
9138
9179
  "data-testid": dataTestId && `${dataTestId}-end-icon`,
9139
9180
  disabled: disableDelete,
@@ -9731,6 +9772,7 @@ const DotDatePicker = ({
9731
9772
  "data-testid": "dot-error-icon",
9732
9773
  iconId: "error-solid"
9733
9774
  }, void 0), jsx(DotIconButton, {
9775
+ ariaLabel: "Open date picker",
9734
9776
  "data-testid": "date-picker-open-btn",
9735
9777
  iconId: "calendar",
9736
9778
  onClick: pickerButtonProps.onClick,
@@ -10161,6 +10203,7 @@ const DotTimePicker = ({
10161
10203
  "data-testid": dataTestId && `${dataTestId}-input-error-icon`,
10162
10204
  iconId: "error-solid"
10163
10205
  }, void 0), !_disableOpenPicker && !isComponentReadOnly && !disabled && jsx(DotIconButton, {
10206
+ ariaLabel: "Open time picker",
10164
10207
  "data-testid": dataTestId && `${dataTestId}-open-btn`,
10165
10208
  iconId: "pending-clock",
10166
10209
  onClick: _event => handleTimePickerButtonClick(),