dimsum-e2e-tests 3.70.0-next.40 → 3.70.0-next.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,18 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 3.70.0-next.42 (2026-07-06)
7
+
8
+ ### Features
9
+
10
+ - ds-accordion-native:: harden toolbar dropdown E2E + document QA findings [PUI-18083](https://jira.elliemae.io/browse/PUI-18083) ([#8154](https://git.elliemae.io/platform-ui/dimsum/issues/8154)) ([b0c73e6](https://git.elliemae.io/platform-ui/dimsum/commit/b0c73e6f29d705b502560108e06d255a4277a444))
11
+
12
+ ## 3.70.0-next.41 (2026-07-02)
13
+
14
+ ### Features
15
+
16
+ - dimsum:: add component-vpat skill for WCAG 2.5 conformance reports [PUI-14236](https://jira.elliemae.io/browse/PUI-14236) ([#8146](https://git.elliemae.io/platform-ui/dimsum/issues/8146)) ([dfe5ca6](https://git.elliemae.io/platform-ui/dimsum/commit/dfe5ca657cd3895c8c98262286cd4cca2238d41e))
17
+
6
18
  ## 3.70.0-next.40 (2026-06-29)
7
19
 
8
20
  ### Features
@@ -1,8 +1,21 @@
1
1
  /* eslint-disable import/no-relative-packages */
2
- import { ACCORDION_NATIVE_DATA_TESTID } from '@elliemae/ds-accordion-native';
3
2
  import { PATH_E2E_ACCORDION_NATIVE } from '../paths';
4
3
  import { PageObject, Urlbuilder, getElementByIndex } from '../helpers';
5
4
 
5
+ const ACCORDION_NATIVE_DATA_TESTID = {
6
+ ITEM_CONTAINER: 'ds-accordionnative-item-container',
7
+ ITEM_DETAILS: 'ds-accordionnative-item-details',
8
+ ITEM_SUMMARY: 'ds-accordionnative-item-summary',
9
+ ITEM_HEADING: 'ds-accordionnative-item-heading',
10
+ ITEM_CHEVRON: 'ds-accordionnative-item-chevron',
11
+ ITEM_TITLES_CONTAINER: 'ds-accordionnative-item-titles-container',
12
+ ITEM_PRIMARY_TITLE: 'ds-accordionnative-item-primary-title',
13
+ ITEM_SECONDARY_TITLE: 'ds-accordionnative-item-secondary-title',
14
+ ITEM_TOOLTIP: 'ds-accordionnative-item-tooltip',
15
+ ITEM_CUSTOM_ACTIONS_CONTAINER: 'ds-accordionnative-item-custom-actions-container',
16
+ ITEM_CONTENT_CONTAINER: 'ds-accordionnative-item-content-container',
17
+ ROOT: 'ds-accordionnative-root',
18
+ };
6
19
  export default class DSAccordionNativeCO extends PageObject {
7
20
  // Desktop URLs
8
21
  static basicURL = new Urlbuilder(PATH_E2E_ACCORDION_NATIVE, 'basic-test');
@@ -158,4 +171,8 @@ export default class DSAccordionNativeCO extends PageObject {
158
171
  static async getAccordionItemContentContainerSlotByIndex(index = 0) {
159
172
  return $$('[data-dimsum-slot="dsAccordionnativeItemContentContainer"]')[index];
160
173
  }
174
+
175
+ static async getToolbarMenuByIndex(index = 0) {
176
+ return $$('[data-testid="ds-menuitem-menu-item-wrapper"]')[index];
177
+ }
161
178
  }
@@ -13,29 +13,63 @@ which were **modified** (present but NOT comparable), and which are **not covere
13
13
 
14
14
  ## Master table — VISUAL (what Percy compares)
15
15
 
16
- | Scenario (story) | PUI in the test | Percy compares vs accordion? | State | Why |
17
- | ------------------------------------------------------------- | --------------- | ---------------------------- | ----------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
18
- | **basic** | `PUI-6111` | ✅ Yes | Same | Equivalent story |
19
- | **custom actions** (RenderCustomActions) | `PUI-7772` | ✅ Yes | Same | Equivalent story |
20
- | **multiple** | `PUI-7982` | ✅ Yes | Same | Identical story |
21
- | **aria-disabled** (ApplyAriaDisabled) | `PUI-14324` | ✅ Yes | Same | Identical story |
22
- | **scrollable-content** | `PUI-17174` | ✅ Yes | Same | Equivalent story — but the expected diff is **NOT cosmetic**: the native slot does not apply style-props → no scroll. Defect **[PUI-18640](https://jira.elliemae.io/browse/PUI-18640)** |
23
- | **wrapLabel** | `PUI-17178` | ✅ Yes | Same | Equivalent story |
24
- | **actionable-within** (01 input focused + 02 open datepicker) | `PUI-9964` | ✅ Yes | Same\* | \*`Tab`×2 restored for 01; 02 opens the same `DSControlledDateTimePicker` calendar (`getDatepickerBtn` CO method added). Diff reveals whether focus reaches the input (custom actions are siblings of `<summary>`) |
25
- | **header props** (HeaderControlExamples) | `PUI-7979` | ✅ Yes | Same | The MiniToolbar (DDmenu) section was added to the native story so it matches accordion (3 sections); the diff now surfaces the real layout deltas |
26
- | **global height** | `PUI-8321` | ✅ Yes | Same | Both stories: item 0 opened via `activeValue={0}` + an "Add row" button (legacy `ds-legacy-datagrids` removed). The **visual test clicks "Add row" ×3 then snapshots** → verifies the panel grows to fit and looks right (not trimmed) after adding rows |
27
- | **slots** | `PUI-15348` | ✅ Yes | Same | Native consumes the same `styleOverrides` colors (verified in the DOM); the diff reflects the slot-tree mapping (native `summary/heading/chevron` vs accordion `header/header-container/addon`), not broken theming |
28
- | **header props 02** (open toolbar) | `PUI-7979` | ✅ Yes | Same | Implemented in native: MiniToolbar section added + `getToolbarByIndex` CO method; the open-dropdown state compares against accordion |
29
- | **actionable-within 02** (open datepicker) | `PUI-9964` | ✅ Yes | Same | Implemented: native renders the same `DSControlledDateTimePicker`; added `getDatepickerBtn` CO method + the 02 it |
30
- | **desktop-to-mobile** | `PUI-18083` | ❌ No | Modified | Accordion swaps to `DSMobileAccordion`; native renders itself (different component) |
31
- | **tooltip** | — | ⬜ Not present | Not covered | Native has no truncation tooltip; default is now wrap. Defect **[PUI-18641](https://jira.elliemae.io/browse/PUI-18641)** |
32
- | **long content** | — | ⬜ Not present | Not covered | Accordion's PUI-9965 reuses the **Tooltip** story (hover long titles → truncation tooltip). Native has no tooltip → gap. See **[PUI-18641](https://jira.elliemae.io/browse/PUI-18641)** |
16
+ | Scenario (story) | PUI in the test | Percy compares vs accordion? | State | Why |
17
+ | ------------------------------------------------------------- | --------------- | ---------------------------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
18
+ | **basic** | `PUI-6111` | ✅ Yes | Same | Equivalent story |
19
+ | **custom actions** (RenderCustomActions) | `PUI-7772` | ✅ Yes | Same | Equivalent story |
20
+ | **multiple** | `PUI-7982` | ✅ Yes | Same | Identical story |
21
+ | **aria-disabled** (ApplyAriaDisabled) | `PUI-14324` | ✅ Yes | Same | Identical story. **Safari-only:** test 02 (Tab+Enter) fails — Tab does not move focus between headers after a click; regression tracked in [PUI-18695](https://jira.elliemae.io/browse/PUI-18695) |
22
+ | **scrollable-content** | `PUI-17174` | ✅ Yes | Same | Equivalent story — but the expected diff is **NOT cosmetic**: the native slot does not apply style-props → no scroll. Defect **[PUI-18640](https://jira.elliemae.io/browse/PUI-18640)** |
23
+ | **wrapLabel** | `PUI-17178` | ✅ Yes | Same | Equivalent story |
24
+ | **actionable-within** (01 input focused + 02 open datepicker) | `PUI-9964` | ✅ Yes | Same\* | \*`Tab`×2 restored for 01; 02 opens the same `DSControlledDateTimePicker` calendar (`getDatepickerBtn` CO method added). Diff reveals whether focus reaches the input (custom actions are siblings of `<summary>`) |
25
+ | **header props** (HeaderControlExamples) | `PUI-7979` | ✅ Yes | Same | The MiniToolbar (DDmenu) section was added to the native story so it matches accordion (3 sections); the diff now surfaces the real layout deltas |
26
+ | **global height** | `PUI-8321` | ✅ Yes | Same | Both stories: item 0 opened via `activeValue={0}` + an "Add row" button (legacy `ds-legacy-datagrids` removed). The **visual test clicks "Add row" ×3 then snapshots** → verifies the panel grows to fit and looks right (not trimmed) after adding rows |
27
+ | **slots** | `PUI-15348` | ✅ Yes | Same | Native consumes the same `styleOverrides` colors (verified in the DOM); the diff reflects the slot-tree mapping (native `summary/heading/chevron` vs accordion `header/header-container/addon`), not broken theming. **Baseline re-approved after [PUI-18640](https://jira.elliemae.io/browse/PUI-18640)** — the `item-heading` slot became paintable (see "Slots visual baseline re-approval" below) |
28
+ | **header props 02** (open toolbar) | `PUI-7979` | ✅ Yes | Same | Implemented in native: MiniToolbar section added + `getToolbarByIndex` CO method; the open-dropdown state compares against accordion |
29
+ | **actionable-within 02** (open datepicker) | `PUI-9964` | ✅ Yes | Same | Implemented: native renders the same `DSControlledDateTimePicker`; added `getDatepickerBtn` CO method + the 02 it |
30
+ | **desktop-to-mobile** | `PUI-18083` | ❌ No | Modified | Accordion swaps to `DSMobileAccordion`; native renders itself (different component) |
31
+ | **tooltip** | — | ⬜ Not present | Not covered | Native has no truncation tooltip; default is now wrap. Defect **[PUI-18641](https://jira.elliemae.io/browse/PUI-18641)** |
32
+ | **long content** | — | ⬜ Not present | Not covered | Accordion's PUI-9965 reuses the **Tooltip** story (hover long titles → truncation tooltip). Native has no tooltip → gap. See **[PUI-18641](https://jira.elliemae.io/browse/PUI-18641)** |
33
33
 
34
34
  **How to read the Percy report:** every **✅ row** pairs against an accordion baseline (same snapshot
35
35
  name). The only **❌ row** left is **desktop-to-mobile** (`PUI-18083`) — it generates a separate
36
36
  native snapshot (different component), so if you see it "without baseline" or as new, that's expected;
37
37
  don't compare it. The **⬜** rows generate nothing.
38
38
 
39
+ ### Slots visual baseline re-approval — `PUI-15348 - 01` ([PUI-18640](https://jira.elliemae.io/browse/PUI-18640))
40
+
41
+ **Status:** expected diff → **re-approve the native baseline**. Not a regression, not a test/story/CO/package
42
+ defect. Investigated 2026-07-02.
43
+
44
+ **Symptom:** Percy flags `PUI-15348 - 01: should display visually customized-slots (colors)` (~0.05% diff).
45
+ A small **lavender box** appears at the left of each "… Secondary" row on the _changes_ side; the _baseline_
46
+ (≈16-jun) has none.
47
+
48
+ **Root cause:** commit `6ed238e4c4a` — `fix: ds-accordion-native:: wrap, xStyledProps, style fixes`
49
+ ([PUI-18640](https://jira.elliemae.io/browse/PUI-18640), 29-jun) changed `StyledHeading` from
50
+ `display: contents` → `display: flex; align-items: center; flex: 1` and the chevron gained
51
+ `align-self: flex-start` (and dropped `margin-right`). The Percy baseline predates this commit.
52
+
53
+ **Why the lavender only appears now:** an element with `display: contents` **generates no box**, so per CSS
54
+ it **never paints** its `background`/`border`/`padding`. The `SlotsTest` story assigns `item-heading` a
55
+ lavender background (`#d3d5ee`) purely to prove per-slot theming. With `display: contents` that background
56
+ was **silently dropped**; with `display: flex` the heading is a real box and now paints it. The chevron is
57
+ pinned to the top (`align-self: flex-start`), so the heading's lavender shows through in the strip **below**
58
+ the 20px chevron — the box you see.
59
+
60
+ **It was NOT covered by the chevron.** Live-DOM proof (localhost:3000):
61
+
62
+ - Current: heading `display: flex`, `background rgb(211,213,238)` = `#d3d5ee` (painting).
63
+ - Reproducing the old state (`display: contents`): heading box measures **0×0**; `elementFromPoint` in that
64
+ strip returns the **summary** slot with `background #fffff5` (cream) — i.e. the lavender was never drawn,
65
+ the summary background filled the gap. Restoring `display: contents` makes the lavender disappear entirely,
66
+ matching the baseline.
67
+
68
+ **Real-world impact:** none. This only surfaces in the synthetic `SlotsTest` (every slot painted a different
69
+ loud color). Consumers don't theme `item-heading` differently from `item-summary`, so making the heading
70
+ paintable is invisible in practice — it's actually a theming **fix** (the `item-heading` slot background now
71
+ works as documented). No change needed in spec / story / CO / package.
72
+
39
73
  ## Table — FUNCTIONAL / AXE (native regression, NOT Percy)
40
74
 
41
75
  All under `PUI-18083` by design: they produce no snapshots and are not compared visually. They are
@@ -49,6 +83,34 @@ native DOM (correct), not that it is broken.
49
83
  | **useRef focus** (func + axe) | ✅ Covered | **Verified working in the browser**: passing `dsAccordionnativeItemSummary={{ innerRef }}` forwards a usable ref to the `<summary>` (clicking the button focuses item 0). Native story + func/axe restored. NB: the _item-level_ `innerRef` prop is not exposed, but the **summary slot** path works (native slots use `ds-system styled()` — same machinery as accordion's `dsAccordionItemHeader` innerRef) |
50
84
  | **toolbar** (axe header-controls 02) | ✅ Covered | Added: MiniToolbar (DDmenu) in the story + `getToolbarByIndex` CO method; the axe 02 opens the dropdown and scans |
51
85
 
86
+ ### header-structure func — test 04 flaky "Login not displayed" (cloud, [PUI-18083](https://jira.elliemae.io/browse/PUI-18083))
87
+
88
+ **Status:** spec hardened (spec-only, no CO/story/package change). Investigated 2026-07-02.
89
+
90
+ **Symptom:** in the cloud run (`E2E_BACKEND=cloud`, BASE_URL=NEXT/d3, Chrome-only) test
91
+ `04: toolbar trigger in custom actions should open dropdown menu on click` broke with
92
+ `element ("*=Login") still not displayed after 10000ms`. Only this browser runs it (spec is
93
+ Chrome-guarded), so 1 broken.
94
+
95
+ **Not a defect.** Reproduced against the exact target (NEXT/d3) at the SDK viewport (1920×1080):
96
+ the direct DOM click opens the `DSDropdownMenuV2` (`dropdown-menu-listbox` + `ds-floating-wrapper-root`
97
+ present), the `*=Login` selector resolves to a single visible `<p>Login</p>`, not clipped by any
98
+ overflow ancestor, not occluded (`elementFromPoint` at its center returns the element), and it stays
99
+ open at 3s. Selectors, story and package are all correct. The run passes 100% locally yet broke 100%
100
+ in cloud → the delta is real-Chrome + BrowserStack + `browser.maximizeWindow()` (cloud-only) + the
101
+ click serialized through `browser.execute`.
102
+
103
+ **Root cause:** the pattern "single one-shot programmatic click on a toggle + `waitForDisplayed`" is
104
+ fragile. If that click doesn't leave the menu open in that driver, the wait sits 10s on a menu that
105
+ never opened. Newly added test (PUI-18083 parity) → flaky from its first cloud run.
106
+
107
+ **Fix:** wait for the trigger to be clickable, then use a real `.click()` (instead of the one-shot
108
+ `browser.execute` DOM click), and assert the `DSDropdownMenuV2` item wrapper
109
+ (`getToolbarMenuByIndex` → `ds-menuitem-menu-item-wrapper`) is displayed before checking the first
110
+ option (`p*=Login`). Spec-only plus one additive CO helper (`getToolbarMenuByIndex`); no CO-selector
111
+ or package change. The SDK's retries absorb residual flakiness (the test passes on retry in the cloud
112
+ run). Optional broader mitigation: enable `config.specFileRetries` in `wdio.config.mjs`.
113
+
52
114
  ## Story coverage parity (vs ds-accordion e2e)
53
115
 
54
116
  All **21** `stories/ds-accordion/e2e` stories have a native counterpart — **no presence gap**. Test
@@ -75,6 +137,7 @@ coverage now matches the accordion suite, with these notes:
75
137
  | [PUI-18640](https://jira.elliemae.io/browse/PUI-18640) | ds-accordion-native | The `dsAccordionnativeItemContentContainer` slot **does not apply style-props** — `maxHeight`/`overflow` (scrollable-content) **and** padding `p` (XstyledpropsInContent) — the way `ds-accordion` does. Same story → accordion clips/scrolls/pads, native does not. **Breaking change** for consumers that style the content via the slot. Relates to PUI-18083. | Open |
76
138
  | [PUI-18641](https://jira.elliemae.io/browse/PUI-18641) | ds-accordion-native | Default title behavior changed from **truncate-with-tooltip** (accordion) to **wrap** (native). With `wrapLabel={false}` the title truncates with an ellipsis but **still shows no tooltip on hover** → the full text cannot be read. No story demonstrates truncate+tooltip. **Backwards-incompatible** default + readability gap. Relates to PUI-18083. | Open |
77
139
  | [PUI-18642](https://jira.elliemae.io/browse/PUI-18642) | ds-accordion-native | Arrow Icon visual spec violations (Accordion Draft v1.5.0): **(1)** region width is not the spec'd **20px**; **(2)** when the title wraps the Arrow Icon is **center-aligned instead of top-aligned** (spec: "Fixed Top-aligned — Region A"). Relates to PUI-18083. | Open |
140
+ | [PUI-18695](https://jira.elliemae.io/browse/PUI-18695) | ds-accordion-native | _Safari-only:_ Tab does not move focus between accordion headers after a click (keyboard navigation). Click-focus, focus ring and Enter all work; only Tab traversal is broken. Regression introduced by the Jun 29 combined fix (PUI-18640/18641/18642); `ds-accordion` (original) unaffected. Found by E2E visual PUI-14324 - 02 (Safari). | Open |
78
141
 
79
142
  > Why PUI-18640 is not a story bug: the native E2E story is a **faithful copy** of the accordion one
80
143
  > (same `maxHeight: 100, overflow: 'auto'` passed as bare keys). In accordion it works because the
@@ -41,12 +41,11 @@ if (
41
41
 
42
42
  it('04: toolbar trigger in custom actions should open dropdown menu on click', async () => {
43
43
  const toolbar = await DSAccordionNativeCO.getToolbarByIndex(0);
44
- // The native ellipsis sits at the far-right edge of the header (custom actions are a sibling
45
- // of <details>); a WebDriver coordinate click is flaky there and the menu doesn't open. A
46
- // direct DOM click reliably toggles the DSDropdownMenuV2 (verified in the rendered DOM).
47
- await browser.execute((el) => el.click(), toolbar);
48
- const firstMenuOption = await $('*=Login');
49
- await firstMenuOption.waitForDisplayed();
44
+ await toolbar.waitForClickable({ timeout: 10000 });
45
+ await toolbar.click();
46
+ const menu = await DSAccordionNativeCO.getToolbarMenuByIndex(0);
47
+ await expect(menu).toBeDisplayed();
48
+ const firstMenuOption = await $('p*=Login');
50
49
  await expect(firstMenuOption).toBeDisplayed();
51
50
  });
52
51
  });
@@ -0,0 +1,47 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSComboboxCO from '../DSComboboxCO';
3
+ import { mouseOver } from '../../../helpers';
4
+
5
+ const longText =
6
+ 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore ' +
7
+ 'magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo.';
8
+
9
+ // Tests for the fix introduced in PUI-16693 (ComboboxMulti suppresses the inaccessible
10
+ // truncated-pill tooltip via the disableTruncationTooltip flag; the full value stays
11
+ // readable from the list box). Hovering a truncated selected pill must NOT open a tooltip.
12
+ // The open menu renders its own ds-floating-wrapper-root, so it is closed before asserting.
13
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
14
+ describe('PUI-18659 - ComboboxV3:: truncated selected pill tooltip suppression - func', () => {
15
+ before('loading page and creating a truncated pill', async () => {
16
+ const errorOnGo = await DSComboboxCO.multiSelectCreatable.go();
17
+ if (errorOnGo) throw errorOnGo;
18
+
19
+ const combobox = await DSComboboxCO.getComboboxInput();
20
+ await combobox.setValue(longText);
21
+
22
+ const optionCreated = await DSComboboxCO.getOptionByIndex(0);
23
+ await optionCreated.click();
24
+
25
+ // close the menu so its FloatingWrapper (shares ds-floating-wrapper-root) is gone
26
+ await browser.keys(Key.Escape);
27
+ const menuList = await DSComboboxCO.getMenuList();
28
+ await menuList.waitForDisplayed({ reverse: true });
29
+ });
30
+
31
+ it('01: should not render a tooltip wrapper for the truncated selected pill', async () => {
32
+ const pill = await DSComboboxCO.getSelectedValues();
33
+ await expect(pill).toBeDisplayed();
34
+
35
+ const tooltip = await DSComboboxCO.getTooltip();
36
+ await expect(tooltip).not.toBeExisting();
37
+ });
38
+
39
+ it('02: should not open a tooltip when hovering the truncated pill', async () => {
40
+ const pill = await DSComboboxCO.getSimpleTruncateText();
41
+ await mouseOver(pill);
42
+
43
+ const tooltip = await DSComboboxCO.getTooltip();
44
+ await expect(tooltip).not.toBeExisting();
45
+ });
46
+ });
47
+ }
@@ -2,7 +2,7 @@
2
2
  /* eslint-disable max-len */
3
3
  /* eslint-disable max-lines */
4
4
  import DSComboboxCO from '../DSComboboxCO';
5
- import { type, mouseOver } from '../../../helpers';
5
+ import { type } from '../../../helpers';
6
6
 
7
7
  if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
8
  describe('PUI-8449 - ComboboxV3:: Multi Select Creatable - basic - visual', () => {
@@ -28,30 +28,21 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
28
28
  );
29
29
  await expect(snapshot).toEqual(0);
30
30
  });
31
- // Defect PUI-16693 has been created to track this issue
32
- it.skip('03: display tooltip for new option created', async () => {
31
+ // PUI-16693 (tooltip suppression on truncated pills) is now fixed; these creatable
32
+ // snapshots are reactivated. The tooltip-absence behavior is covered separately in
33
+ // DSCombobox.creatable-tooltip.func.spec.js.
34
+ it('03: should create and display a second long option in the menu', async () => {
33
35
  await browser.eyesOpen();
34
- const pill = await DSComboboxCO.getSimpleTruncateText();
35
- await mouseOver(pill);
36
- const tooltip = await DSComboboxCO.getTooltip();
37
- await tooltip.waitForDisplayed();
38
- const snapshot = await browser.eyesCheckSnapshot(
39
- DSComboboxCO.snapshotPath('comboboxV3-createable-option-created-tooltip'),
40
- );
41
- await expect(snapshot).toEqual(0);
42
- });
43
- // Defect PUI-16693 has been created to track this issue
44
- it.skip('04: create a new long option', async () => {
45
- await browser.eyesOpen();
46
- const pill = await DSComboboxCO.getSelectedValues();
47
- await mouseOver(pill, 400, 0);
48
- const longText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit';
49
- await type(longText);
36
+ // the input keeps focus and the menu stays open after selecting in test 02, so type
37
+ // directly — clicking the input is intercepted by the overlapping aria-hidden input.
38
+ const secondLongText = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit';
39
+ await type(secondLongText);
40
+ const menuList = await DSComboboxCO.getMenuList();
41
+ await menuList.waitForDisplayed();
50
42
  const snapshot = await browser.eyesCheckSnapshot(DSComboboxCO.snapshotPath('comboboxV3-createable--new-option'));
51
43
  await expect(snapshot).toEqual(0);
52
44
  });
53
- // Defect PUI-16693 has been created to track this issue
54
- it.skip('05: should select new option', async () => {
45
+ it('04: should select the second created option', async () => {
55
46
  await browser.eyesOpen();
56
47
  const optionCreated = await DSComboboxCO.getOptionByIndex(0);
57
48
  await optionCreated.click();
@@ -14,7 +14,12 @@ if (!browser.capabilities['ice:options'].isPhone) {
14
14
  await expect(snapshot).toEqual(0);
15
15
  });
16
16
  if (!browser.capabilities['ice:options'].isTablet) {
17
- it('should display tooltip when hover truncated pill', async () => {
17
+ // SKIPPED pending PUI-18660 (defect): the PUI-16693 fix applies disableTruncationTooltip
18
+ // to every ComboboxMulti selected pill, including disabled/readOnly pills. In the disabled
19
+ // state the menu cannot be opened, so suppressing the tooltip leaves the truncated value
20
+ // inaccessible. Re-enable (asserting tooltip presence) once the flag is scoped to
21
+ // interactive pills only.
22
+ it.skip('should display tooltip when hover truncated pill', async () => {
18
23
  const truncatedPill = await DSComboboxCO.getPillByLabel('Luke Skywalker too long this text is super long');
19
24
  await mouseOver(truncatedPill, 20, 5);
20
25
  const tooltip = await DSComboboxCO.getTooltip();
@@ -199,6 +199,10 @@ export default class DataTableCO extends PageObject {
199
199
 
200
200
  static textWrapTruncColumn = new Urlbuilder(PATH_E2E_DATATABLE_TEXT_WRAPPING, 'text-wrap-truncate-column');
201
201
 
202
+ static headerWrapAlignment = new Urlbuilder(PATH_E2E_DATATABLE_TEXT_WRAPPING, 'header-wrap-alignment-test');
203
+
204
+ static textWrapGlobalWithToolbar = new Urlbuilder(PATH_E2E_DATATABLE_TEXT_WRAPPING, 'text-wrap-global');
205
+
202
206
  // Toolbar
203
207
 
204
208
  static toolbarIntegration = new Urlbuilder(PATH_E2E_DATATABLE_TOOLBAR, 'toolbar-integration');
@@ -0,0 +1,23 @@
1
+ import DSDataTableCO from '../DSDataTableCO';
2
+ import { axeCoreCheck } from '../../helpers';
3
+
4
+ // Accessibility coverage for the PUI-17819 header wrap/alignment showcase.
5
+ if (
6
+ (!browser.capabilities['ice:options'].isPhone &&
7
+ !browser.capabilities['ice:options'].isTablet &&
8
+ browser.capabilities.browserName === 'Chrome') ||
9
+ browser.capabilities.browserName === 'chrome'
10
+ ) {
11
+ describe('PUI-18681 - DSDataTable:: header text wrap rules and alignment - axe-core', () => {
12
+ before('loading page', async () => {
13
+ const errorOnGo = await DSDataTableCO.headerWrapAlignment.go();
14
+ if (errorOnGo) throw errorOnGo;
15
+ await DSDataTableCO.waitForDataTable();
16
+ });
17
+
18
+ it('01: should have no accessibility violations', async () => {
19
+ const result = await axeCoreCheck();
20
+ await expect(result.length).toBe(0);
21
+ });
22
+ });
23
+ }
@@ -0,0 +1,106 @@
1
+ import { Key } from 'webdriverio';
2
+ import DSDataTableCO from '../DSDataTableCO';
3
+ import { HeaderCO, RowCO } from '../components';
4
+
5
+ // Column indices in the HeaderWrapAlignment story:
6
+ // 0=id, 1=name, 2=wrap ('wrap'), 3=wrapAll ('wrap-all'), 4=truncate ('truncate')
7
+ const WRAP_ALL_COL = 3;
8
+ // Filter buttons render only on searchable columns (wrap, wrapAll, truncate) → wrapAll is index 1
9
+ const WRAP_ALL_FILTER = 1;
10
+
11
+ // Header control focus order (Enter on the focused header → then Tab):
12
+ // 1. DnD handle 2. search/filter button 3. sort caret 4. resize handle
13
+ // Tests for PUI-17819 (header wrap rules + alignment fix). Unblocks PUI-17814 (name/search-icon overlap).
14
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
15
+ describe('PUI-18680 - DSDataTable:: header text wrap rules and alignment - visual', () => {
16
+ before('loading page', async () => {
17
+ const errorOnGo = await DSDataTableCO.headerWrapAlignment.go();
18
+ if (errorOnGo) throw errorOnGo;
19
+ await DSDataTableCO.waitForDataTable();
20
+ });
21
+
22
+ it('01: should render wrap / wrap-all / truncate headers top-aligned', async () => {
23
+ const snapshot = await browser.percyCheckScreenshot();
24
+ await expect(snapshot).toEqual(0);
25
+ });
26
+
27
+ it('02: should keep header title top-aligned with revealed icons on hover', async () => {
28
+ const wrapAllHeader = await HeaderCO.getHeaderCellByIndex(WRAP_ALL_COL);
29
+ await wrapAllHeader.moveTo();
30
+ const snapshot = await browser.percyCheckScreenshot();
31
+ await expect(snapshot).toEqual(0);
32
+ });
33
+
34
+ it('03: should keep wrapped header aligned after clicking the column to sort it', async () => {
35
+ // sort by clicking the column header itself (not the sort caret) — the realistic interaction.
36
+ // The click also focuses the header, which sets up the focus walk in the next steps.
37
+ const wrapAllHeader = await HeaderCO.getHeaderCellByIndex(WRAP_ALL_COL);
38
+ await wrapAllHeader.click();
39
+ const snapshot = await browser.percyCheckScreenshot();
40
+ await expect(snapshot).toEqual(0);
41
+ });
42
+
43
+ it('04: should focus the drag-and-drop handle first when entering the header', async () => {
44
+ // Enter activates the header tab stops and focuses the first control (the DnD handle)
45
+ await browser.keys(Key.Return);
46
+ const snapshot = await browser.percyCheckScreenshot();
47
+ await expect(snapshot).toEqual(0);
48
+ });
49
+
50
+ it('05: should move focus to the search/filter button on Tab', async () => {
51
+ await browser.keys(Key.Tab);
52
+ const snapshot = await browser.percyCheckScreenshot();
53
+ await expect(snapshot).toEqual(0);
54
+ });
55
+
56
+ it('06: should move focus to the sort caret on Tab', async () => {
57
+ await browser.keys(Key.Tab);
58
+ const snapshot = await browser.percyCheckScreenshot();
59
+ await expect(snapshot).toEqual(0);
60
+ });
61
+
62
+ it('07: should move focus to the resize handle on Tab', async () => {
63
+ await browser.keys(Key.Tab);
64
+ const snapshot = await browser.percyCheckScreenshot();
65
+ await expect(snapshot).toEqual(0);
66
+ });
67
+
68
+ it('08: should keep wrapped header aligned while the filter/search is open', async () => {
69
+ const filterBtn = await HeaderCO.getFilterBtnByIndex(WRAP_ALL_FILTER);
70
+ await filterBtn.click();
71
+ const snapshot = await browser.percyCheckScreenshot();
72
+ await expect(snapshot).toEqual(0);
73
+ await browser.keys(Key.Escape);
74
+ });
75
+
76
+ it('09: should keep wrapped header aligned while the DnD handle is engaged', async () => {
77
+ const wrapAllHeader = await HeaderCO.getHeaderCellByIndex(WRAP_ALL_COL);
78
+ const dragHandle = await HeaderCO.getHeaderCellDragHandler(wrapAllHeader);
79
+ await dragHandle.click();
80
+ // keyboard pick-up renders a deterministic drag overlay (dnd-kit)
81
+ await browser.keys(Key.Space);
82
+ const snapshot = await browser.percyCheckScreenshot();
83
+ await expect(snapshot).toEqual(0);
84
+ await browser.keys(Key.Escape);
85
+ });
86
+
87
+ it('10: should keep wrapped headers intact with a row toolbar menu open', async () => {
88
+ const toolbarTrigger = await RowCO.getRowToolbarTriggerByIndex(0);
89
+ await toolbarTrigger.click();
90
+ const snapshot = await browser.percyCheckScreenshot();
91
+ await expect(snapshot).toEqual(0);
92
+ await browser.keys(Key.Escape);
93
+ });
94
+
95
+ it('11: should keep wrapped header aligned while a column is resized narrower', async () => {
96
+ // PUI-12696 (open): resizing a column below its min makes the resize handler overlap the
97
+ // header title. This captures current behavior; update the baseline when PUI-12696 lands.
98
+ // Kept last: the extra-tall header it produces would otherwise obscure the row toolbar
99
+ // trigger and break the coordinate-based click in the toolbar step.
100
+ const resizeHandler = await HeaderCO.getResizeHandler(WRAP_ALL_COL);
101
+ await resizeHandler.dragAndDrop({ x: -150, y: 0 });
102
+ const snapshot = await browser.percyCheckScreenshot();
103
+ await expect(snapshot).toEqual(0);
104
+ });
105
+ });
106
+ }
@@ -0,0 +1,27 @@
1
+ import DSDataTableCO from '../DSDataTableCO';
2
+ import { RowCO } from '../components';
3
+
4
+ // Global textWrap='wrap' together with a row-actions (toolbar) column — mirrors the
5
+ // Components/DataTable/Features/Text Wrapping > Text Wrap Global showcase.
6
+ // Tests for PUI-17819 (header wrap rules + alignment fix).
7
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
+ describe('PUI-18682 - DSDataTable:: text wrap with row toolbar column - visual', () => {
9
+ before('loading page', async () => {
10
+ const errorOnGo = await DSDataTableCO.textWrapGlobalWithToolbar.go();
11
+ if (errorOnGo) throw errorOnGo;
12
+ await DSDataTableCO.waitForDataTable();
13
+ });
14
+
15
+ it('01: should wrap all columns with the row toolbar column present', async () => {
16
+ const snapshot = await browser.percyCheckScreenshot();
17
+ await expect(snapshot).toEqual(0);
18
+ });
19
+
20
+ it('02: should keep cells wrapped while a row toolbar menu is open', async () => {
21
+ const toolbarTrigger = await RowCO.getRowToolbarTriggerByIndex(0);
22
+ await toolbarTrigger.click();
23
+ const snapshot = await browser.percyCheckScreenshot();
24
+ await expect(snapshot).toEqual(0);
25
+ });
26
+ });
27
+ }
@@ -41,6 +41,8 @@ export default class DSComboboxSingleCO extends PageObject {
41
41
 
42
42
  static inlineTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'inline-test');
43
43
 
44
+ static creatableTest = new Urlbuilder(PATH_E2E_COMBOBOX_SINGLE, 'creatable-test');
45
+
44
46
  // COMBOBOX - INPUT
45
47
  static async getCombobox() {
46
48
  return $('[data-testid="combobox-container"]');
@@ -0,0 +1,30 @@
1
+ import DSComboboxSingleCO from '../DSComboboxSingleCO';
2
+
3
+ // Tests for the fix introduced in PUI-15423 (creatable "ADD:" option restyled per spec:
4
+ // uppercased label, 16px horizontal padding from the menu item wrapper, and correct vertical
5
+ // spacing). Typing a value that matches no existing option surfaces the creatable add option
6
+ // as the first menu item. The multi-select equivalent is covered by MultipleCreatableTest.
7
+ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:options'].isTablet) {
8
+ describe('PUI-18658 - ComboboxSingle:: creatable add option styling -Visual', () => {
9
+ before('loading page', async () => {
10
+ const errorOnGo = await DSComboboxSingleCO.creatableTest.go();
11
+ if (errorOnGo) throw errorOnGo;
12
+ });
13
+
14
+ it('01: should display the creatable add option with uppercased label and spec spacing', async () => {
15
+ const input = await DSComboboxSingleCO.getComboboxInput();
16
+ await input.setValue('Grogu');
17
+
18
+ const menuList = await DSComboboxSingleCO.getMenuList();
19
+ await menuList.waitForDisplayed();
20
+
21
+ const addOption = await DSComboboxSingleCO.getOptionByIndex(0);
22
+ await addOption.waitForDisplayed();
23
+
24
+ const snapshot = await browser.percyCheckScreenshot(
25
+ DSComboboxSingleCO.snapshotPath('combobox-single-creatable-add-option'),
26
+ );
27
+ await expect(snapshot).toEqual(0);
28
+ });
29
+ });
30
+ }
@@ -51,19 +51,24 @@ if (!browser.capabilities['ice:options'].isPhone && !browser.capabilities['ice:o
51
51
  before(async () => {
52
52
  const errorOnGo = await DSShuttleV2CO.loadMoreURL.go();
53
53
  if (errorOnGo) throw errorOnGo;
54
- await browser.maximizeWindow();
55
54
  });
56
55
  it('01: should move all the items a, focus jump to body panel and load more items', async () => {
57
- await browser.eyesOpen();
58
56
  const selectAllCheckbox = await DSShuttleV2CO.getCheckboxByIndex(0);
59
57
  await selectAllCheckbox.click();
60
58
  const bab = await DSShuttleV2CO.getMoveMultipleButton();
61
59
  await bab.click();
60
+ // await browser.keys(Key.Tab);
61
+ // await browser.keys(Key.Return);
62
62
  const loadMoreBtn = await DSShuttleV2CO.getSourceLoadMore();
63
63
  await loadMoreBtn.click();
64
64
  const firstItem = await DSShuttleV2CO.getItemFromSourceByIndex(0);
65
65
  await firstItem.waitForDisplayed();
66
- const snapshot = await browser.eyesCheckSnapshot(DSShuttleV2CO.snapshotPath('shuttle-v2-after-loadmore'));
66
+ const sourcePanelBody = await DSShuttleV2CO.getListWrapperMid(0);
67
+ await browser.waitUntil(async () => sourcePanelBody.isFocused(), {
68
+ timeout: 5000,
69
+ timeoutMsg: 'Source panel body never received focus before snapshot',
70
+ });
71
+ const snapshot = await browser.percyCheckScreenshot();
67
72
  await expect(snapshot).toEqual(0);
68
73
  });
69
74
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "dimsum-e2e-tests",
4
- "version": "3.70.0-next.40",
4
+ "version": "3.70.0-next.42",
5
5
  "description": "End-to-end tests for dimsum library",
6
6
  "dependencies": {
7
7
  "@elliemae/ds-legacy-button": "1.0.16",
@@ -9,7 +9,6 @@
9
9
  "@elliemae/ds-legacy-button-v1": "1.0.16",
10
10
  "@elliemae/ds-legacy-card-array": "1.0.16",
11
11
  "@elliemae/ds-legacy-common": "1.0.16",
12
- "@elliemae/ds-legacy-datagrids": "1.0.16",
13
12
  "@elliemae/ds-legacy-date-picker": "1.0.16",
14
13
  "@elliemae/ds-legacy-date-range-picker": "1.0.16",
15
14
  "@elliemae/ds-legacy-date-range-selector": "1.0.16",
@@ -39,155 +38,155 @@
39
38
  "@elliemae/ds-legacy-wysiwygeditor": "1.0.16",
40
39
  "@elliemae/ds-legacy-zipcode-search": "1.0.16",
41
40
  "@elliemae/ds-legacy-zoom": "1.0.16",
42
- "@elliemae/ds-accessibility": "3.70.0-next.40",
43
- "@elliemae/ds-accordion": "3.70.0-next.40",
44
- "@elliemae/ds-backdrop": "3.70.0-next.40",
45
- "@elliemae/ds-banner": "3.70.0-next.40",
46
- "@elliemae/ds-accordion-native": "3.70.0-next.40",
47
- "@elliemae/ds-app-picker": "3.70.0-next.40",
48
- "@elliemae/ds-basic": "3.70.0-next.40",
49
- "@elliemae/ds-breadcrumb": "3.70.0-next.40",
50
- "@elliemae/ds-button-v2": "3.70.0-next.40",
51
- "@elliemae/ds-card-navigation": "3.70.0-next.40",
52
- "@elliemae/ds-card-v1-detail": "3.70.0-next.40",
53
- "@elliemae/ds-card-v1": "3.70.0-next.40",
54
- "@elliemae/ds-card": "3.70.0-next.40",
55
- "@elliemae/ds-card-v2": "3.70.0-next.40",
56
- "@elliemae/ds-card-v2-group": "3.70.0-next.40",
57
- "@elliemae/ds-card-v2-action-addon": "3.70.0-next.40",
58
- "@elliemae/ds-card-v3-poc": "3.70.0-next.40",
59
- "@elliemae/ds-card-v3": "3.70.0-next.40",
60
- "@elliemae/ds-chat-bubble": "3.70.0-next.40",
61
- "@elliemae/ds-chat-card": "3.70.0-next.40",
62
- "@elliemae/ds-chat": "3.70.0-next.40",
63
- "@elliemae/ds-chat-container": "3.70.0-next.40",
64
- "@elliemae/ds-chat-empty-state": "3.70.0-next.40",
65
- "@elliemae/ds-chat-container-header": "3.70.0-next.40",
66
- "@elliemae/ds-chat-floating-button": "3.70.0-next.40",
67
- "@elliemae/ds-chat-message-delimeter": "3.70.0-next.40",
68
- "@elliemae/ds-chat-sidebar": "3.70.0-next.40",
69
- "@elliemae/ds-chat-system-message": "3.70.0-next.40",
70
- "@elliemae/ds-chip": "3.70.0-next.40",
71
- "@elliemae/ds-circular-progress-indicator": "3.70.0-next.40",
72
- "@elliemae/ds-classnames": "3.70.0-next.40",
73
- "@elliemae/ds-chat-tile": "3.70.0-next.40",
74
- "@elliemae/ds-comments": "3.70.0-next.40",
75
- "@elliemae/ds-codeeditor": "3.70.0-next.40",
76
- "@elliemae/ds-csv-converter": "3.70.0-next.40",
77
- "@elliemae/ds-data-table": "3.70.0-next.40",
78
- "@elliemae/ds-controlled-form": "3.70.0-next.40",
79
- "@elliemae/ds-data-table-action-cell": "3.70.0-next.40",
80
- "@elliemae/ds-data-table-cell": "3.70.0-next.40",
81
- "@elliemae/ds-data-table-cell-header": "3.70.0-next.40",
82
- "@elliemae/ds-data-table-expand-cell": "3.70.0-next.40",
83
- "@elliemae/ds-data-table-filters": "3.70.0-next.40",
84
- "@elliemae/ds-data-table-drag-and-drop-cell": "3.70.0-next.40",
85
- "@elliemae/ds-data-table-multi-select-cell": "3.70.0-next.40",
86
- "@elliemae/ds-data-table-single-select-cell": "3.70.0-next.40",
87
- "@elliemae/ds-dataviz": "3.70.0-next.40",
88
- "@elliemae/ds-dataviz-pie": "3.70.0-next.40",
89
- "@elliemae/ds-date-time-picker": "3.70.0-next.40",
90
- "@elliemae/ds-dialog": "3.70.0-next.40",
91
- "@elliemae/ds-drag-and-drop": "3.70.0-next.40",
92
- "@elliemae/ds-decision-graph": "3.70.0-next.40",
93
- "@elliemae/ds-dropzone": "3.70.0-next.40",
94
- "@elliemae/ds-dropdownmenu-v2": "3.70.0-next.40",
95
- "@elliemae/ds-fast-list": "3.70.0-next.40",
96
- "@elliemae/ds-filter-bar": "3.70.0-next.40",
97
- "@elliemae/ds-floating-context": "3.70.0-next.40",
98
- "@elliemae/ds-form-checkbox": "3.70.0-next.40",
99
- "@elliemae/ds-form-combobox": "3.70.0-next.40",
100
- "@elliemae/ds-form-date-range-picker": "3.70.0-next.40",
101
- "@elliemae/ds-form-input-text": "3.70.0-next.40",
102
- "@elliemae/ds-form-helpers-mask-hooks": "3.70.0-next.40",
103
- "@elliemae/ds-form-date-time-picker": "3.70.0-next.40",
104
- "@elliemae/ds-form-input-textarea": "3.70.0-next.40",
105
- "@elliemae/ds-form-layout-blocks": "3.70.0-next.40",
106
- "@elliemae/ds-form-layout-autocomplete": "3.70.0-next.40",
107
- "@elliemae/ds-form-layout-input-group": "3.70.0-next.40",
108
- "@elliemae/ds-form-layout-label": "3.70.0-next.40",
109
- "@elliemae/ds-form-multi-combobox": "3.70.0-next.40",
110
- "@elliemae/ds-form-native-select": "3.70.0-next.40",
111
- "@elliemae/ds-form-radio": "3.70.0-next.40",
112
- "@elliemae/ds-form-select": "3.70.0-next.40",
113
- "@elliemae/ds-form-single-combobox": "3.70.0-next.40",
114
- "@elliemae/ds-form-toggle": "3.70.0-next.40",
115
- "@elliemae/ds-global-header": "3.70.0-next.40",
116
- "@elliemae/ds-grid": "3.70.0-next.40",
117
- "@elliemae/ds-hooks-focus-stack": "3.70.0-next.40",
118
- "@elliemae/ds-hooks-focus-trap": "3.70.0-next.40",
119
- "@elliemae/ds-hooks-fontsize-detector": "3.70.0-next.40",
120
- "@elliemae/ds-hooks-fontsize-media": "3.70.0-next.40",
121
- "@elliemae/ds-hooks-headless-tooltip": "3.70.0-next.40",
122
- "@elliemae/ds-hooks-is-mobile": "3.70.0-next.40",
123
- "@elliemae/ds-hooks-is-showing-ellipsis": "3.70.0-next.40",
124
- "@elliemae/ds-hooks-keyboard-navigation": "3.70.0-next.40",
125
- "@elliemae/ds-hooks-on-blur-out": "3.70.0-next.40",
126
- "@elliemae/ds-hooks-on-first-focus-in": "3.70.0-next.40",
127
- "@elliemae/ds-image": "3.70.0-next.40",
128
- "@elliemae/ds-icon": "3.70.0-next.40",
129
- "@elliemae/ds-icons": "3.70.0-next.40",
130
- "@elliemae/ds-imagelibrarymodal": "3.70.0-next.40",
131
- "@elliemae/ds-indeterminate-progress-indicator": "3.70.0-next.40",
132
- "@elliemae/ds-layout-provider": "3.70.0-next.40",
133
- "@elliemae/ds-left-navigation": "3.70.0-next.40",
134
- "@elliemae/ds-menu-button": "3.70.0-next.40",
135
- "@elliemae/ds-menu-items": "3.70.0-next.40",
136
- "@elliemae/ds-loading-indicator": "3.70.0-next.40",
137
- "@elliemae/ds-menu-items-action": "3.70.0-next.40",
138
- "@elliemae/ds-menu-items-commons": "3.70.0-next.40",
139
- "@elliemae/ds-menu-items-multi": "3.70.0-next.40",
140
- "@elliemae/ds-menu-items-section": "3.70.0-next.40",
141
- "@elliemae/ds-menu-items-single": "3.70.0-next.40",
142
- "@elliemae/ds-menu-items-single-with-submenu": "3.70.0-next.40",
143
- "@elliemae/ds-menu-items-separator": "3.70.0-next.40",
144
- "@elliemae/ds-menu-items-skeleton": "3.70.0-next.40",
145
- "@elliemae/ds-menu-items-submenu": "3.70.0-next.40",
146
- "@elliemae/ds-menu-tree-item": "3.70.0-next.40",
147
- "@elliemae/ds-mobile": "3.70.0-next.40",
148
- "@elliemae/ds-modal-slide": "3.70.0-next.40",
149
- "@elliemae/ds-notification-badge": "3.70.0-next.40",
150
- "@elliemae/ds-page-header": "3.70.0-next.40",
151
- "@elliemae/ds-page-header-v1": "3.70.0-next.40",
152
- "@elliemae/ds-overlay": "3.70.0-next.40",
153
- "@elliemae/ds-page-header-v2": "3.70.0-next.40",
154
- "@elliemae/ds-page-layout": "3.70.0-next.40",
155
- "@elliemae/ds-pagination": "3.70.0-next.40",
156
- "@elliemae/ds-pills-v2": "3.70.0-next.40",
157
- "@elliemae/ds-progress-indicator": "3.70.0-next.40",
158
- "@elliemae/ds-props-helpers": "3.70.0-next.40",
159
- "@elliemae/ds-portal": "3.70.0-next.40",
160
- "@elliemae/ds-read-more": "3.70.0-next.40",
161
- "@elliemae/ds-scrollable-container": "3.70.0-next.40",
162
- "@elliemae/ds-resizeable-container": "3.70.0-next.40",
163
- "@elliemae/ds-query-builder": "3.70.0-next.40",
164
- "@elliemae/ds-separator": "3.70.0-next.40",
165
- "@elliemae/ds-ribbon": "3.70.0-next.40",
166
- "@elliemae/ds-shuttle-v2": "3.70.0-next.40",
167
- "@elliemae/ds-side-panel": "3.70.0-next.40",
168
- "@elliemae/ds-shared": "3.70.0-next.40",
169
- "@elliemae/ds-skeleton": "3.70.0-next.40",
170
- "@elliemae/ds-stepper": "3.70.0-next.40",
171
- "@elliemae/ds-slider-v2": "3.70.0-next.40",
172
- "@elliemae/ds-side-panel-header": "3.70.0-next.40",
173
- "@elliemae/ds-svg": "3.70.0-next.40",
174
- "@elliemae/ds-square-indicator": "3.70.0-next.40",
175
- "@elliemae/ds-system": "3.70.0-next.40",
176
- "@elliemae/ds-tabs": "3.70.0-next.40",
177
- "@elliemae/ds-test-utils": "3.70.0-next.40",
178
- "@elliemae/ds-toast": "3.70.0-next.40",
179
- "@elliemae/ds-toolbar-v1": "3.70.0-next.40",
180
- "@elliemae/ds-tooltip-v3": "3.70.0-next.40",
181
- "@elliemae/ds-transition": "3.70.0-next.40",
182
- "@elliemae/ds-tree-model": "3.70.0-next.40",
183
- "@elliemae/ds-toolbar-v2": "3.70.0-next.40",
184
- "@elliemae/ds-treeview": "3.70.0-next.40",
185
- "@elliemae/ds-typescript-helpers": "3.70.0-next.40",
186
- "@elliemae/ds-truncated-expandable-text": "3.70.0-next.40",
187
- "@elliemae/ds-virtual-list": "3.70.0-next.40",
188
- "@elliemae/ds-typography": "3.70.0-next.40",
189
- "@elliemae/ds-zustand-helpers": "3.70.0-next.40",
190
- "@elliemae/ds-wizard": "3.70.0-next.40"
41
+ "@elliemae/ds-accessibility": "3.70.0-next.42",
42
+ "@elliemae/ds-accordion": "3.70.0-next.42",
43
+ "@elliemae/ds-accordion-native": "3.70.0-next.42",
44
+ "@elliemae/ds-backdrop": "3.70.0-next.42",
45
+ "@elliemae/ds-app-picker": "3.70.0-next.42",
46
+ "@elliemae/ds-banner": "3.70.0-next.42",
47
+ "@elliemae/ds-breadcrumb": "3.70.0-next.42",
48
+ "@elliemae/ds-basic": "3.70.0-next.42",
49
+ "@elliemae/ds-card": "3.70.0-next.42",
50
+ "@elliemae/ds-card-navigation": "3.70.0-next.42",
51
+ "@elliemae/ds-card-v2": "3.70.0-next.42",
52
+ "@elliemae/ds-card-v2-action-addon": "3.70.0-next.42",
53
+ "@elliemae/ds-button-v2": "3.70.0-next.42",
54
+ "@elliemae/ds-card-v2-group": "3.70.0-next.42",
55
+ "@elliemae/ds-card-v1-detail": "3.70.0-next.42",
56
+ "@elliemae/ds-card-v3": "3.70.0-next.42",
57
+ "@elliemae/ds-card-v1": "3.70.0-next.42",
58
+ "@elliemae/ds-card-v3-poc": "3.70.0-next.42",
59
+ "@elliemae/ds-chat": "3.70.0-next.42",
60
+ "@elliemae/ds-chat-card": "3.70.0-next.42",
61
+ "@elliemae/ds-chat-bubble": "3.70.0-next.42",
62
+ "@elliemae/ds-chat-container": "3.70.0-next.42",
63
+ "@elliemae/ds-chat-floating-button": "3.70.0-next.42",
64
+ "@elliemae/ds-chat-empty-state": "3.70.0-next.42",
65
+ "@elliemae/ds-chat-sidebar": "3.70.0-next.42",
66
+ "@elliemae/ds-chat-message-delimeter": "3.70.0-next.42",
67
+ "@elliemae/ds-chat-container-header": "3.70.0-next.42",
68
+ "@elliemae/ds-chat-tile": "3.70.0-next.42",
69
+ "@elliemae/ds-chat-system-message": "3.70.0-next.42",
70
+ "@elliemae/ds-chip": "3.70.0-next.42",
71
+ "@elliemae/ds-classnames": "3.70.0-next.42",
72
+ "@elliemae/ds-codeeditor": "3.70.0-next.42",
73
+ "@elliemae/ds-circular-progress-indicator": "3.70.0-next.42",
74
+ "@elliemae/ds-comments": "3.70.0-next.42",
75
+ "@elliemae/ds-controlled-form": "3.70.0-next.42",
76
+ "@elliemae/ds-data-table": "3.70.0-next.42",
77
+ "@elliemae/ds-csv-converter": "3.70.0-next.42",
78
+ "@elliemae/ds-data-table-action-cell": "3.70.0-next.42",
79
+ "@elliemae/ds-data-table-cell": "3.70.0-next.42",
80
+ "@elliemae/ds-data-table-cell-header": "3.70.0-next.42",
81
+ "@elliemae/ds-data-table-drag-and-drop-cell": "3.70.0-next.42",
82
+ "@elliemae/ds-data-table-expand-cell": "3.70.0-next.42",
83
+ "@elliemae/ds-data-table-multi-select-cell": "3.70.0-next.42",
84
+ "@elliemae/ds-dataviz": "3.70.0-next.42",
85
+ "@elliemae/ds-data-table-single-select-cell": "3.70.0-next.42",
86
+ "@elliemae/ds-data-table-filters": "3.70.0-next.42",
87
+ "@elliemae/ds-dataviz-pie": "3.70.0-next.42",
88
+ "@elliemae/ds-date-time-picker": "3.70.0-next.42",
89
+ "@elliemae/ds-decision-graph": "3.70.0-next.42",
90
+ "@elliemae/ds-dialog": "3.70.0-next.42",
91
+ "@elliemae/ds-drag-and-drop": "3.70.0-next.42",
92
+ "@elliemae/ds-dropdownmenu-v2": "3.70.0-next.42",
93
+ "@elliemae/ds-filter-bar": "3.70.0-next.42",
94
+ "@elliemae/ds-fast-list": "3.70.0-next.42",
95
+ "@elliemae/ds-dropzone": "3.70.0-next.42",
96
+ "@elliemae/ds-floating-context": "3.70.0-next.42",
97
+ "@elliemae/ds-form-checkbox": "3.70.0-next.42",
98
+ "@elliemae/ds-form-combobox": "3.70.0-next.42",
99
+ "@elliemae/ds-form-date-time-picker": "3.70.0-next.42",
100
+ "@elliemae/ds-form-date-range-picker": "3.70.0-next.42",
101
+ "@elliemae/ds-form-helpers-mask-hooks": "3.70.0-next.42",
102
+ "@elliemae/ds-form-input-text": "3.70.0-next.42",
103
+ "@elliemae/ds-form-input-textarea": "3.70.0-next.42",
104
+ "@elliemae/ds-form-layout-autocomplete": "3.70.0-next.42",
105
+ "@elliemae/ds-form-layout-input-group": "3.70.0-next.42",
106
+ "@elliemae/ds-form-layout-blocks": "3.70.0-next.42",
107
+ "@elliemae/ds-form-layout-label": "3.70.0-next.42",
108
+ "@elliemae/ds-form-multi-combobox": "3.70.0-next.42",
109
+ "@elliemae/ds-form-native-select": "3.70.0-next.42",
110
+ "@elliemae/ds-form-select": "3.70.0-next.42",
111
+ "@elliemae/ds-form-toggle": "3.70.0-next.42",
112
+ "@elliemae/ds-form-single-combobox": "3.70.0-next.42",
113
+ "@elliemae/ds-form-radio": "3.70.0-next.42",
114
+ "@elliemae/ds-hooks-focus-stack": "3.70.0-next.42",
115
+ "@elliemae/ds-global-header": "3.70.0-next.42",
116
+ "@elliemae/ds-hooks-focus-trap": "3.70.0-next.42",
117
+ "@elliemae/ds-hooks-fontsize-detector": "3.70.0-next.42",
118
+ "@elliemae/ds-hooks-fontsize-media": "3.70.0-next.42",
119
+ "@elliemae/ds-hooks-headless-tooltip": "3.70.0-next.42",
120
+ "@elliemae/ds-hooks-is-mobile": "3.70.0-next.42",
121
+ "@elliemae/ds-hooks-keyboard-navigation": "3.70.0-next.42",
122
+ "@elliemae/ds-hooks-is-showing-ellipsis": "3.70.0-next.42",
123
+ "@elliemae/ds-grid": "3.70.0-next.42",
124
+ "@elliemae/ds-hooks-on-first-focus-in": "3.70.0-next.42",
125
+ "@elliemae/ds-hooks-on-blur-out": "3.70.0-next.42",
126
+ "@elliemae/ds-icon": "3.70.0-next.42",
127
+ "@elliemae/ds-image": "3.70.0-next.42",
128
+ "@elliemae/ds-icons": "3.70.0-next.42",
129
+ "@elliemae/ds-imagelibrarymodal": "3.70.0-next.42",
130
+ "@elliemae/ds-indeterminate-progress-indicator": "3.70.0-next.42",
131
+ "@elliemae/ds-layout-provider": "3.70.0-next.42",
132
+ "@elliemae/ds-loading-indicator": "3.70.0-next.42",
133
+ "@elliemae/ds-left-navigation": "3.70.0-next.42",
134
+ "@elliemae/ds-menu-button": "3.70.0-next.42",
135
+ "@elliemae/ds-menu-items-action": "3.70.0-next.42",
136
+ "@elliemae/ds-menu-items": "3.70.0-next.42",
137
+ "@elliemae/ds-menu-items-commons": "3.70.0-next.42",
138
+ "@elliemae/ds-menu-items-multi": "3.70.0-next.42",
139
+ "@elliemae/ds-menu-items-section": "3.70.0-next.42",
140
+ "@elliemae/ds-menu-items-separator": "3.70.0-next.42",
141
+ "@elliemae/ds-menu-items-single": "3.70.0-next.42",
142
+ "@elliemae/ds-menu-items-single-with-submenu": "3.70.0-next.42",
143
+ "@elliemae/ds-menu-items-skeleton": "3.70.0-next.42",
144
+ "@elliemae/ds-menu-items-submenu": "3.70.0-next.42",
145
+ "@elliemae/ds-mobile": "3.70.0-next.42",
146
+ "@elliemae/ds-menu-tree-item": "3.70.0-next.42",
147
+ "@elliemae/ds-modal-slide": "3.70.0-next.42",
148
+ "@elliemae/ds-notification-badge": "3.70.0-next.42",
149
+ "@elliemae/ds-overlay": "3.70.0-next.42",
150
+ "@elliemae/ds-page-header": "3.70.0-next.42",
151
+ "@elliemae/ds-page-header-v1": "3.70.0-next.42",
152
+ "@elliemae/ds-page-header-v2": "3.70.0-next.42",
153
+ "@elliemae/ds-pagination": "3.70.0-next.42",
154
+ "@elliemae/ds-pills-v2": "3.70.0-next.42",
155
+ "@elliemae/ds-page-layout": "3.70.0-next.42",
156
+ "@elliemae/ds-portal": "3.70.0-next.42",
157
+ "@elliemae/ds-progress-indicator": "3.70.0-next.42",
158
+ "@elliemae/ds-props-helpers": "3.70.0-next.42",
159
+ "@elliemae/ds-query-builder": "3.70.0-next.42",
160
+ "@elliemae/ds-read-more": "3.70.0-next.42",
161
+ "@elliemae/ds-resizeable-container": "3.70.0-next.42",
162
+ "@elliemae/ds-ribbon": "3.70.0-next.42",
163
+ "@elliemae/ds-scrollable-container": "3.70.0-next.42",
164
+ "@elliemae/ds-separator": "3.70.0-next.42",
165
+ "@elliemae/ds-shared": "3.70.0-next.42",
166
+ "@elliemae/ds-shuttle-v2": "3.70.0-next.42",
167
+ "@elliemae/ds-side-panel": "3.70.0-next.42",
168
+ "@elliemae/ds-side-panel-header": "3.70.0-next.42",
169
+ "@elliemae/ds-slider-v2": "3.70.0-next.42",
170
+ "@elliemae/ds-stepper": "3.70.0-next.42",
171
+ "@elliemae/ds-square-indicator": "3.70.0-next.42",
172
+ "@elliemae/ds-system": "3.70.0-next.42",
173
+ "@elliemae/ds-skeleton": "3.70.0-next.42",
174
+ "@elliemae/ds-svg": "3.70.0-next.42",
175
+ "@elliemae/ds-test-utils": "3.70.0-next.42",
176
+ "@elliemae/ds-tabs": "3.70.0-next.42",
177
+ "@elliemae/ds-toast": "3.70.0-next.42",
178
+ "@elliemae/ds-toolbar-v1": "3.70.0-next.42",
179
+ "@elliemae/ds-transition": "3.70.0-next.42",
180
+ "@elliemae/ds-toolbar-v2": "3.70.0-next.42",
181
+ "@elliemae/ds-truncated-expandable-text": "3.70.0-next.42",
182
+ "@elliemae/ds-tooltip-v3": "3.70.0-next.42",
183
+ "@elliemae/ds-tree-model": "3.70.0-next.42",
184
+ "@elliemae/ds-typescript-helpers": "3.70.0-next.42",
185
+ "@elliemae/ds-treeview": "3.70.0-next.42",
186
+ "@elliemae/ds-typography": "3.70.0-next.42",
187
+ "@elliemae/ds-wizard": "3.70.0-next.42",
188
+ "@elliemae/ds-virtual-list": "3.70.0-next.42",
189
+ "@elliemae/ds-zustand-helpers": "3.70.0-next.42"
191
190
  },
192
191
  "publishConfig": {
193
192
  "access": "public"